intelica-library-components 1.1.147 → 1.1.149
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intelica-library-components.mjs","sources":["../../../projects/intelica-library-components/src/lib/functions/cookie.ts","../../../projects/intelica-library-components/src/lib/services/googleTaskManager.service.ts","../../../projects/intelica-library-components/src/lib/services/config.service.ts","../../../projects/intelica-library-components/src/lib/services/term.service.ts","../../../projects/intelica-library-components/src/lib/services/globalTerm.service.ts","../../../projects/intelica-library-components/src/lib/pipes/term.pipes.ts","../../../projects/intelica-library-components/src/lib/pipes/amount.pipe.ts","../../../projects/intelica-library-components/src/lib/pipes/truncate.pipe.ts","../../../projects/intelica-library-components/src/lib/constants/cookieConfiguration.constants.ts","../../../projects/intelica-library-components/src/lib/constants/color.constants.ts","../../../projects/intelica-library-components/src/lib/constants/date-mode-options.constants.ts","../../../projects/intelica-library-components/src/lib/services/featureFlag.service.ts","../../../projects/intelica-library-components/src/lib/services/globalFeatureFlag.service.ts","../../../projects/intelica-library-components/src/lib/services/sweet-alert.service.ts","../../../projects/intelica-library-components/src/lib/services/spinner.service.ts","../../../projects/intelica-library-components/src/lib/interceptor/error.interceptor.ts","../../../projects/intelica-library-components/src/lib/interceptor/responseHeaders.interceptor.ts","../../../projects/intelica-library-components/src/lib/enums/sort-order.enum.ts","../../../projects/intelica-library-components/src/lib/enums/alert-type.enum.ts","../../../projects/intelica-library-components/src/lib/guards/PageRootChildGuard.ts","../../../projects/intelica-library-components/src/lib/components/spinner/spinner.component.ts","../../../projects/intelica-library-components/src/lib/components/spinner/spinner.component.html","../../../projects/intelica-library-components/src/lib/pipes/formatCell.pipe.ts","../../../projects/intelica-library-components/src/lib/constants/format-date.constants.ts","../../../projects/intelica-library-components/src/lib/services/shared.service.ts","../../../projects/intelica-library-components/src/lib/components/table/column.component.ts","../../../projects/intelica-library-components/src/lib/components/table/table.component.ts","../../../projects/intelica-library-components/src/lib/components/table/table.component.html","../../../projects/intelica-library-components/src/lib/directives/positive-number.directive.ts","../../../projects/intelica-library-components/src/lib/components/paginator/paginator.component.ts","../../../projects/intelica-library-components/src/lib/components/paginator/paginator.component.html","../../../projects/intelica-library-components/src/lib/components/search/enums/search.enum.ts","../../../projects/intelica-library-components/src/lib/components/search/search.component.ts","../../../projects/intelica-library-components/src/lib/components/search/search.component.html","../../../projects/intelica-library-components/src/lib/components/tree-table/column.component.ts","../../../projects/intelica-library-components/src/lib/components/tree-table/tree-table.component.ts","../../../projects/intelica-library-components/src/lib/components/tree-table/tree-table.component.html","../../../projects/intelica-library-components/src/lib/components/matrix-table/column.component.ts","../../../projects/intelica-library-components/src/lib/components/matrix-table/matrix-table.component.ts","../../../projects/intelica-library-components/src/lib/components/matrix-table/matrix-table.component.html","../../../projects/intelica-library-components/src/lib/components/actions-menu/action.directive.ts","../../../projects/intelica-library-components/src/lib/components/actions-menu/actions-menu.component.ts","../../../projects/intelica-library-components/src/lib/components/actions-menu/actions-menu.component.html","../../../projects/intelica-library-components/src/lib/components/filter-chips/filter-chips.component.ts","../../../projects/intelica-library-components/src/lib/components/filter-chips/filter-chips.component.html","../../../projects/intelica-library-components/src/lib/enums/filter-type.enum.ts","../../../projects/intelica-library-components/src/lib/directives/filters/filter.directive.ts","../../../projects/intelica-library-components/src/lib/components/multi-select/multi-select.component.ts","../../../projects/intelica-library-components/src/lib/components/multi-select/multi-select.component.html","../../../projects/intelica-library-components/src/lib/components/filters/filters.component.ts","../../../projects/intelica-library-components/src/lib/components/filters/filters.component.html","../../../projects/intelica-library-components/src/lib/components/modal-dialog/modal-dialog.component.ts","../../../projects/intelica-library-components/src/lib/components/modal-dialog/modal-dialog.component.html","../../../projects/intelica-library-components/src/lib/components/button-split/itemsplit.directive.ts","../../../projects/intelica-library-components/src/lib/components/button-split/button-split.component.ts","../../../projects/intelica-library-components/src/lib/components/button-split/button-split.component.html","../../../projects/intelica-library-components/src/lib/components/record-per-page/record-per-page.component.ts","../../../projects/intelica-library-components/src/lib/components/record-per-page/record-per-page.component.html","../../../projects/intelica-library-components/src/lib/components/sorting/model/order.constants.ts","../../../projects/intelica-library-components/src/lib/components/sorting/sorting.component.ts","../../../projects/intelica-library-components/src/lib/components/sorting/sorting.component.html","../../../projects/intelica-library-components/src/lib/components/popover/popover.component.ts","../../../projects/intelica-library-components/src/lib/components/popover/popover.component.html","../../../projects/intelica-library-components/src/lib/components/echart/echart.component.ts","../../../projects/intelica-library-components/src/lib/components/echart/echart.component.html","../../../projects/intelica-library-components/src/lib/components/template-menu/template-menu.component.ts","../../../projects/intelica-library-components/src/lib/components/template-menu/template-menu.component.html","../../../projects/intelica-library-components/src/lib/components/datepicker/datepicker-button-types.constants.ts","../../../projects/intelica-library-components/src/lib/components/datepicker/datepicker.component.ts","../../../projects/intelica-library-components/src/lib/components/datepicker/datepicker.component.html","../../../projects/intelica-library-components/src/lib/services/skeleton.service.ts","../../../projects/intelica-library-components/src/lib/components/skeleton/skeleton.component.ts","../../../projects/intelica-library-components/src/lib/components/skeleton/skeleton.component.html","../../../projects/intelica-library-components/src/lib/components/skeleton-table/skeleton-table.component.ts","../../../projects/intelica-library-components/src/lib/components/skeleton-table/skeleton-table.component.html","../../../projects/intelica-library-components/src/lib/components/skeleton-chart/data.directive.ts","../../../projects/intelica-library-components/src/lib/components/skeleton-chart/skeleton-chart.component.ts","../../../projects/intelica-library-components/src/lib/components/skeleton-chart/skeleton-chart.component.html","../../../projects/intelica-library-components/src/lib/components/table-fetch/table-fetch.component.ts","../../../projects/intelica-library-components/src/lib/components/table-fetch/table-fetch.component.html","../../../projects/intelica-library-components/src/lib/components/intelica-alert/intelica-alert.component.ts","../../../projects/intelica-library-components/src/lib/components/intelica-alert/intelica-alert.component.html","../../../projects/intelica-library-components/src/lib/services/globalFavorite.service.ts","../../../projects/intelica-library-components/src/lib/components/add-favorites/add-favorites.service.ts","../../../projects/intelica-library-components/src/lib/components/add-favorites/add-favorites.component.ts","../../../projects/intelica-library-components/src/lib/components/add-favorites/add-favorites.component.html","../../../projects/intelica-library-components/src/lib/components/context-selector/context-selector.component.ts","../../../projects/intelica-library-components/src/lib/components/context-selector/context-selector.component.html","../../../projects/intelica-library-components/src/lib/components/setsesioninformation/setsesioninformation.component.ts","../../../projects/intelica-library-components/src/lib/components/bread-crumb/bread-crumb.component.ts","../../../projects/intelica-library-components/src/lib/components/bread-crumb/bread-crumb.component.html","../../../projects/intelica-library-components/src/lib/components/title/title.component.ts","../../../projects/intelica-library-components/src/lib/components/title/title.component.html","../../../projects/intelica-library-components/src/lib/directives/filters/checkbox-filter.directive.ts","../../../projects/intelica-library-components/src/lib/directives/filters/date-filter.directive.ts","../../../projects/intelica-library-components/src/lib/directives/filters/select-detail-filter.directive.ts","../../../projects/intelica-library-components/src/lib/directives/filters/select-filter.directive.ts","../../../projects/intelica-library-components/src/lib/directives/filters/template.directive.ts","../../../projects/intelica-library-components/src/lib/directives/filters/text-area-filter.directive.ts","../../../projects/intelica-library-components/src/lib/directives/filters/text-filter.directive.ts","../../../projects/intelica-library-components/src/lib/directives/filters/text-range-filter.directive.ts","../../../projects/intelica-library-components/src/lib/directives/table/cell-checkbox.directive.ts","../../../projects/intelica-library-components/src/lib/model/alert.model.ts","../../../projects/intelica-library-components/src/lib/model/pageInformation.model.ts","../../../projects/intelica-library-components/src/lib/services/htmlToExcel.service.ts","../../../projects/intelica-library-components/src/lib/services/alert.service.ts","../../../projects/intelica-library-components/src/lib/services/language.service.ts","../../../projects/intelica-library-components/src/lib/functions/echart.util.ts","../../../projects/intelica-library-components/src/lib/services/echart.service.ts","../../../projects/intelica-library-components/src/lib/services/authentication.service.ts","../../../projects/intelica-library-components/src/lib/functions/decryptRSA.ts","../../../projects/intelica-library-components/src/lib/services/profile.service.ts","../../../projects/intelica-library-components/src/lib/services/pageElement.service.ts","../../../projects/intelica-library-components/src/lib/services/element.service.ts","../../../projects/intelica-library-components/src/lib/services/intelicaSession.service.ts","../../../projects/intelica-library-components/src/lib/services/globalMenu.service.ts","../../../projects/intelica-library-components/src/lib/services/request-cache.service.ts","../../../projects/intelica-library-components/src/lib/services/shared.ts","../../../projects/intelica-library-components/src/lib/functions/compareByField.ts","../../../projects/intelica-library-components/src/lib/functions/encryptRSA.ts","../../../projects/intelica-library-components/src/lib/functions/inputValidation.ts","../../../projects/intelica-library-components/src/lib/notification/dto/recipient-dispatch-error.dto.ts","../../../projects/intelica-library-components/src/lib/notification/notification.service.ts","../../../projects/intelica-library-components/src/lib/notification/notification-job.service.ts","../../../projects/intelica-library-components/src/lib/notification/notification-signalr.service.ts","../../../projects/intelica-library-components/src/lib/notification/notificacion-orchestrator.service.ts","../../../projects/intelica-library-components/src/public-api.ts","../../../projects/intelica-library-components/src/intelica-library-components.ts"],"sourcesContent":["import { CookieAttributes } from \"../constants/cookieConfiguration.constants\";\nexport function GetCookieAttributes(environment: string): CookieAttributes {\n\tconst domain = window.location.hostname\n\t\t.split(\".\")\n\t\t.slice(environment == \"main\" ? -2 : -3)\n\t\t.join(\".\");\n\tconst secure = !domain.includes(\"localhost\");\n\treturn { domain: domain, path: \"/\", secure: secure };\n}\n","import { Injectable } from \"@angular/core\";\n@Injectable({ providedIn: \"root\" })\nexport class GoogleTaskManagerService {\n loadGTM(id: string): void {\n const w = window as any;\n w[\"dataLayer\"] = w[\"dataLayer\"] || [];\n w[\"dataLayer\"].push({ \"gtm.start\": new Date().getTime(), event: \"gtm.js\" });\n const script = document.createElement(\"script\");\n script.async = true;\n script.src = `https://www.googletagmanager.com/gtm.js?id=${id}`;\n document.head.insertBefore(script, document.head.firstChild);\n }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { inject, Injectable } from \"@angular/core\";\nimport { BehaviorSubject } from \"rxjs\";\nimport { Observable } from \"rxjs/internal/Observable\";\nimport { getCookie } from \"typescript-cookie\";\nimport { environment } from \"../dto/environment\";\nimport { SessionInformation } from \"../dto/sessionInformation\";\nimport { GoogleTaskManagerService } from \"./googleTaskManager.service\";\n@Injectable({ providedIn: \"root\" })\nexport class ConfigService {\n\tprivate readonly Http = inject(HttpClient);\n\tprivate readonly googleTaskManagerService = inject(GoogleTaskManagerService);\n\tenvironment?: environment;\n\tSessionInformation: SessionInformation | null = null;\n\tprivate readonly userDataSubject = new BehaviorSubject<string>(\"\");\n\tpublic userData$: Observable<string> = this.userDataSubject.asObservable();\n\tasync init() {\n\t\tconst environment = `${window.location.protocol}//${window.location.hostname}${window.location.hostname === \"localhost\" ? `:${window.location.port}` : \"\"}/environment/environment.json`;\n\t\tif (getCookie(\"data\") != undefined) this.SessionInformation = JSON.parse(getCookie(\"data\") ?? \"\");\n\t\tthis.environment = await this.Http.get<environment>(environment).toPromise();\n\t\tif (this.environment?.environment === \"development\" && this.environment?.gtmId) this.googleTaskManagerService.loadGTM(this.environment.gtmId);\n\t}\n\tSetSessionInformation() {\n\t\tthis.SessionInformation = JSON.parse(getCookie(\"data\") ?? \"\");\n\t}\n\tsetUserData(userData: string): void {\n\t\tthis.userDataSubject.next(userData);\n\t}\n\tgetUserData(): string {\n\t\treturn this.userDataSubject.value;\n\t}\n}\nexport function InitializeConfigService(confg: ConfigService) {\n\treturn () => confg.init();\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { inject, Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { TermPageResponse } from \"../dto/term\";\nimport { ConfigService } from \"./config.service\";\n@Injectable({ providedIn: \"root\" })\nexport class TermService {\n\tprivate readonly _http = inject(HttpClient);\n\tprivate readonly _config = inject(ConfigService);\n\tGetTerms(languageCode: string, pageRoot: string): Observable<TermPageResponse[]> {\n\t\treturn this._http.get<TermPageResponse[]>(`${this._config.environment?.securityPath}/Term/ignore/page/${pageRoot}/language/${languageCode}`);\n\t}\n}\n","import { inject, Injectable, signal } from \"@angular/core\";\nimport { setCookie } from \"typescript-cookie\";\nimport { TermPageResponse } from \"../dto/term\";\nimport { GetCookieAttributes } from \"../functions/cookie\";\nimport { ConfigService } from \"./config.service\";\nimport { TermService } from \"./term.service\";\n@Injectable({ providedIn: \"root\" })\nexport class GlobalTermService {\n\tterms: TermPageResponse[] = [];\n\tpublic languageCode: string = \"\";\n\tTermsReady = signal<boolean>(false);\n\tPageRoot: string = \"\";\n\tprivate readonly termService = inject(TermService);\n\tprivate readonly configService = inject(ConfigService);\n\tpublic readonly languageEvent = \"languagechange\";\n\tpublic readonly languageCookie = \"language\";\n\n\tprivate readonly onBrowserLanguageChange = (): void => {\n\t\tconst languageCode = this.getLanguageFromBrowser();\n\t\tsetCookie(this.languageCookie, languageCode, GetCookieAttributes(this.configService.environment?.environment ?? \"\"));\n\t\tthis.refreshTerms(languageCode);\n\t};\n\n\tconstructor() {\n\t\twindow.addEventListener(this.languageEvent, this.onBrowserLanguageChange);\n\t}\n\n\tInitialize(pageRoot: string): void {\n\t\tthis.PageRoot = pageRoot;\n\t\tconst languageCode = this.getLanguageFromBrowser();\n\t\tsetCookie(this.languageCookie, languageCode, GetCookieAttributes(this.configService.environment?.environment ?? \"\"));\n\t\tif (pageRoot == \"\") {\n\t\t\tthis.TermsReady.set(true);\n\t\t\treturn;\n\t\t}\n\t\tthis.refreshTerms(languageCode);\n\t}\n\n\tprivate refreshTerms(languageCode: string): void {\n\t\tif (this.PageRoot == \"\") {\n\t\t\tthis.TermsReady.set(true);\n\t\t\treturn;\n\t\t}\n\t\tthis.TermsReady.set(false);\n\t\tthis.termService.GetTerms(languageCode, this.PageRoot).subscribe(response => {\n\t\t\tthis.languageCode = languageCode;\n\t\t\tthis.terms = response;\n\t\t\tthis.TermsReady.set(true);\n\t\t});\n\t}\n\n\tprivate getLanguageFromBrowser(): string {\n\t\tconst browserLanguage = (navigator.language || \"en\").toLowerCase();\n\t\tif (browserLanguage.startsWith(\"es\")) return \"ES\";\n\t\tif (browserLanguage.startsWith(\"en\")) return \"EN\";\n\t\treturn \"EN\";\n\t}\n}\n","import { inject, Injectable, Pipe, PipeTransform } from \"@angular/core\";\nimport { GlobalTermService } from \"../services/globalTerm.service\";\n// import GlobalTermService from \"../services/globalTerm.service\";\n\n@Injectable({ providedIn: \"root\" })\n@Pipe({ name: \"term\" })\nexport class TermPipe implements PipeTransform {\n\tprivate readonly globalTermService = inject(GlobalTermService);\n\ttransform(termName: string, language: string = \"es\", mode: number = 1): string {\n\t\tconst terms = this.globalTermService?.terms ?? [];\n\t\tconst safeTermName = (termName ?? \"\").trim();\n\n\t\tif (!safeTermName) return \"-\";\n\n\t\tlet term = terms.find((x: any) => x?.termName === safeTermName)?.termValue ?? \"-\";\n\n\t\tif (typeof term !== \"string\") term = String(term ?? \"-\");\n\n\t\tif (mode === 2) return term.length ? term.substring(0, 1) : \"-\";\n\t\tif (mode === 3) return term.toUpperCase();\n\n\t\treturn term;\n\t}\n}\n","import { Injectable, Pipe, PipeTransform } from \"@angular/core\";\n@Injectable({\n\tprovidedIn: \"root\",\n})\n@Pipe({\n\tname: \"amount\",\n})\nexport class FormatAmountPipe implements PipeTransform {\n\ttransform(value: number | string | null | undefined, shortFormat: boolean = false, decimalPlaces: number = 2, validNegative: boolean = false): string {\n\t\tif (value === null || value === undefined || value == 0) {\n\t\t\treturn \"-\";\n\t\t}\n\n\t\tconst numericValue = typeof value === \"string\" ? Number.parseFloat(value) : value;\n\n\t\tif (Number.isNaN(numericValue)) {\n\t\t\treturn \"-\";\n\t\t}\n\n\t\tlet formattedValue: string;\n\n\t\tif (shortFormat) {\n\t\t\tformattedValue = this.getShortFormat(numericValue, decimalPlaces);\n\t\t} else {\n\t\t\tformattedValue = this.formatWithThousandSeparators(numericValue, decimalPlaces);\n\t\t}\n\n\t\tif (validNegative) {\n\t\t\tif (numericValue < 0) {\n\t\t\t\tformattedValue = `(${formattedValue})`;\n\t\t\t}\n\t\t}\n\n\t\treturn formattedValue;\n\t}\n\n\tprivate getShortFormat(value: number, decimalPlaces: number): string {\n\t\tconst absValue = Math.abs(value);\n\t\tconst suffixes = [\n\t\t\t{ limit: 1e12, suffix: \"T\" },\n\t\t\t{ limit: 1e9, suffix: \"B\" },\n\t\t\t{ limit: 1e6, suffix: \"M\" },\n\t\t\t{ limit: 1e3, suffix: \"K\" },\n\t\t];\n\n\t\tfor (const { limit, suffix } of suffixes) {\n\t\t\tif (absValue >= limit) {\n\t\t\t\treturn (absValue / limit).toFixed(decimalPlaces) + suffix;\n\t\t\t}\n\t\t}\n\n\t\treturn absValue.toFixed(decimalPlaces);\n\t}\n\n\tprivate formatWithThousandSeparators(value: number, decimalPlaces: number): string {\n\t\tconst absValue = Math.abs(value);\n\t\treturn new Intl.NumberFormat(\"en-US\", {\n\t\t\tminimumFractionDigits: decimalPlaces,\n\t\t\tmaximumFractionDigits: decimalPlaces,\n\t\t}).format(absValue);\n\t}\n}\n","import { Injectable, Pipe, PipeTransform } from \"@angular/core\";\n@Injectable({ providedIn: \"root\" })\n@Pipe({\n\tname: \"truncate\",\n})\nexport class TruncatePipe implements PipeTransform {\n\ttransform(value: any, size: number = 15, original = false): any {\n\t\tif (!value) return value;\n\t\tif (value.length <= size) return value;\n\t\tlet truncateString = value.substring(0, size);\n\t\treturn !original ? `${truncateString}...` : truncateString.toUpperCase();\n\t}\n}\n","const Domain = window.location.hostname.split(\".\").slice(-2).join(\".\");\nconst Secure = !Domain.includes(\"localhost\");\nexport const CookieAttributesGeneral: CookieAttributes = { domain: Domain, path: \"/\", secure: Secure };\nexport interface CookieAttributes {\n\tpath?: string;\n\tdomain?: string;\n\texpires?: number | Date;\n\tsameSite?: \"strict\" | \"Strict\" | \"lax\" | \"Lax\" | \"none\" | \"None\";\n\tsecure?: boolean;\n\t[property: string]: any;\n}\n","export const Color = {\n\tmastercard: \"#ff7f00\",\n\tvisa: \"#17375E\",\n\tamex: \"#348AD5\",\n\torange: \"#ff7f00\",\n\torangeDark: \"#CC4900\",\n\tskyBlue: \"#7490E2\",\n\tblue: \"#17375E\",\n\tgray: \"#BABECF\",\n\tgray3: \"#4E546F\",\n\tgray5: \"#e9e9e9\",\n};\n\nexport type ColorName = keyof typeof Color;\n\nexport const getColor = (name: ColorName): string => {\n\treturn Color[name];\n};\n","export const DateModeOptions = {\n Day: { value: \"day\", format: \"d/m/y\" },\n Month: { value: \"month\", format: \"m/y\" },\n Year: { value: \"year\", format: \"y\" },\n} as const;\n\nexport type DateMode =\n (typeof DateModeOptions)[keyof typeof DateModeOptions][\"value\"];\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable, inject } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { ConfigService } from \"./config.service\";\nimport { FeatureFlagPageRootResponse } from \"../dto/featureFlagResponses\";\n@Injectable({ providedIn: \"root\" })\nexport class FeatureFlagService {\n\tprivate readonly _http = inject(HttpClient);\n\tprivate readonly _configService = inject(ConfigService);\n\tGetByPageRoot(pageRoot: string): Observable<FeatureFlagPageRootResponse[]> {\n\t\treturn this._http.get<FeatureFlagPageRootResponse[]>(`${this._configService.environment?.configurationPath}/FeatureFlag/${pageRoot}`);\n\t}\n}\n","import { Injectable, signal } from \"@angular/core\";\nimport { FeatureFlagService } from \"./featureFlag.service\";\nimport { FeatureFlagPageRootResponse } from \"../dto/featureFlagResponses\";\n@Injectable({ providedIn: \"root\" })\nexport class GlobalFeatureFlagService {\n\tprivate pageRoot: string = \"\";\n\tIsReady = signal<boolean>(false);\n\tFeatureFlagsSignal = signal<FeatureFlagPageRootResponse[]>([]);\n\n\tconstructor(private featureFlagDataService: FeatureFlagService) {}\n\tInitialize(pageRoot: string): void {\n\t\tthis.pageRoot = pageRoot;\n\t\tthis.IsReady.set(true);\n\t\t// this.featureFlagDataService.GetByPageRoot(pageRoot).subscribe(response => {\n\t\t// \t//\t\tthis.FeatureFlags = response;\n\t\t// \tthis.FeatureFlagsSignal.set(response);\n\t\t// \tthis.IsReady.set(true);\n\t\t// });\n\t}\n\tExists(featureFlagName: string): boolean {\n\t\treturn !(this.FeatureFlagsSignal().find(x => x.name == featureFlagName) == null);\n\t}\n\tRefresh(): void {\n\t\tthis.Initialize(this.pageRoot);\n\t}\n\tGetPageRoot(): string {\n\t\treturn this.pageRoot;\n\t}\n}\n","import { Injectable } from \"@angular/core\";\nimport Swal, { SweetAlertOptions, SweetAlertResult } from \"sweetalert2\";\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class SweetAlertService {\n\toptions: SweetAlertOptions = {\n\t\ttext: \"\",\n\t\tcustomClass: {\n\t\t\timage: \"image-class-custom\",\n\t\t\tcontainer: \"container-class-custom\",\n\t\t\tconfirmButton: \"confirm-class-custom\",\n\t\t\tcancelButton: \"cancel-class-custom\",\n\t\t},\n\t\tshowCloseButton: true,\n\t\tcloseButtonHtml: '<i class=\"fa fa-times\"></i>',\n\t\timageUrl: `${window.location.origin}/assets/images/logo-incontrol.svg`,\n\t\tshowCancelButton: false,\n\t\tconfirmButtonText: \"Ok\",\n\t\tcancelButtonText: \"\",\n\t\thtml: \"\",\n\t};\n\n\tmessageBox(message: string): Promise<SweetAlertResult<any>> {\n\t\tlet options = structuredClone(this.options);\n\t\toptions.showCancelButton = false;\n\t\toptions.text = message;\n\t\treturn Swal.fire(options);\n\t}\n\n\tmessageTextBox(message: string = \"\", swHtml: boolean = false) {\n\t\tlet options = structuredClone(this.options);\n\t\toptions.showCancelButton = false;\n\t\tif (!swHtml) options.text = message.length === 0 ? \"Something went wrong!\" : message;\n\t\telse options.html = message;\n\t\tSwal.fire(options);\n\t}\n\n\tconfirmBox(message: string, confirmButtonText: string, cancelButtonText: string, title?: string, html?: string, popupClass?: string): Promise<SweetAlertResult<any>> {\n\t\tlet options = structuredClone(this.options);\n\t\toptions.title = title ?? \"\";\n\t\toptions.showCancelButton = cancelButtonText == \"\" ? false : true;\n\t\toptions.text = message;\n\t\toptions.confirmButtonText = confirmButtonText;\n\t\toptions.cancelButtonText = cancelButtonText;\n\t\toptions.html = html;\n\t\tif (popupClass) {\n\t\t\toptions.customClass = {\n\t\t\t\tpopup: popupClass,\n\t\t\t};\n\t\t}\n\t\treturn Swal.fire(options);\n\t}\n\n\tmessageHTMLBox(title: string, html: string, confirmButtonText: string): Promise<SweetAlertResult<any>> {\n\t\tlet options = structuredClone(this.options);\n\t\toptions.showCancelButton = false;\n\t\toptions.title = title;\n\t\toptions.html = html;\n\t\toptions.confirmButtonText = confirmButtonText;\n\t\treturn Swal.fire(options);\n\t}\n}\n","import { Injectable, signal } from \"@angular/core\";\n@Injectable({ providedIn: \"root\" })\nexport class SpinnerService {\n\tisLoading = signal<boolean>(false);\n\tpublic hide() {\n\t\tthis.isLoading.set(false);\n\t}\n\tpublic show() {\n\t\tthis.isLoading.set(true);\n\t}\n}","import { HttpErrorResponse, HttpHeaders, HttpInterceptorFn } from \"@angular/common/http\";\nimport { inject } from \"@angular/core\";\nimport { catchError, throwError } from \"rxjs\";\nimport { getCookie } from \"typescript-cookie\";\nimport { GlobalFeatureFlagService } from \"../services/globalFeatureFlag.service\";\nimport { ConfigService } from \"../services/config.service\";\nimport { SweetAlertService } from \"../services/sweet-alert.service\";\nimport { SpinnerService } from \"../services/spinner.service\";\nexport const ErrorInterceptor: HttpInterceptorFn = (req, next) => {\n\tconst skip = req.headers.has(\"Skip-Interceptor\");\n\tif (skip) {\n\t\tconst cleanReq = req.clone({\n\t\t\theaders: req.headers.delete(\"Skip-Interceptor\"),\n\t\t});\n\t\treturn next(cleanReq);\n\t}\n\tconst commonFeatureFlagService = inject(GlobalFeatureFlagService);\n\tconst spinnerService = inject(SpinnerService);\n\tconst sweetAlertService = inject(SweetAlertService);\n\tconst configService: ConfigService = inject(ConfigService);\n\tconst HeaderSettings: { [name: string]: string | string[] } = {};\n\tconst authenticationClientID = configService.environment?.clientID ?? \"\";\n\tif (!req.url.includes(\"environment.json\")) {\n\t\tHeaderSettings[\"Accept\"] = \"application/json\";\n\t\tHeaderSettings[\"Content-Type\"] = \"application/json\";\n\t\tHeaderSettings[\"Authorization\"] = getCookie(\"token\") ?? \"\";\n\t\tHeaderSettings[\"RefreshToken\"] = getCookie(\"refreshToken\") ?? \"\";\n\t\tHeaderSettings[\"ClientID\"] = configService.environment?.clientID ?? \"\";\n\t\tHeaderSettings[\"PageRoot\"] = commonFeatureFlagService.GetPageRoot();\n\t\tHeaderSettings[\"LanguageCode\"] = getCookie(\"language\") ?? \"\";\n\t\tHeaderSettings[\"Environment\"] = configService.environment?.environment ?? \"\";\n\t\tHeaderSettings[\"Access\"] = authenticationClientID == \"\" ? \"\" : (getCookie(authenticationClientID) ?? \"\");\n\t}\n\tlet _request = req.clone({ headers: new HttpHeaders(HeaderSettings) });\n\treturn next(_request).pipe(catchError(handleErrorResponse));\n\tfunction handleErrorResponse(error: HttpErrorResponse) {\n\t\tconsole.log(error, \"error\", error.status);\n\t\tspinnerService.hide();\n\t\tconst authenticationLocation = `${configService.environment?.authenticationWeb}?callback=${window.location.href}&clientID=${configService.environment?.clientID}`;\n\t\tif (error.status == 503 || error.status == 0) sweetAlertService.messageBox(\"El servicio que se necesita consumir no esta activo o no responde.\");\n\t\telse if (error.status == 405) sweetAlertService.messageBox(\"Los parametros enviados al servicio no coinciden.\");\n\t\telse if (error.status == 404) sweetAlertService.messageBox(\"Recurso no encontrado.\");\n\t\telse if (error.status == 401) {\n\t\t\tsweetAlertService.messageBox(error.error.Error);\n\t\t\twindow.location.href = authenticationLocation;\n\t\t} else if (error.status == 403) {\n\t\t\tsweetAlertService.messageBox(error.error.Error);\n\t\t\twindow.location.href = window.location.origin;\n\t\t} else sweetAlertService.messageBox(error.error.Message);\n\t\treturn throwError(() => {\n\t\t\t(error.error, error.message);\n\t\t});\n\t}\n};\n","import { HttpInterceptorFn, HttpResponse } from \"@angular/common/http\";\nimport { tap } from \"rxjs/operators\";\nimport { setCookie } from \"typescript-cookie\";\nimport { CookieAttributesGeneral } from \"../constants/cookieConfiguration.constants\";\n\nexport const ResponseHeadersInterceptor: HttpInterceptorFn = (req, next) => {\n\treturn next(req).pipe(\n\t\ttap(event => {\n\t\t\tif (event instanceof HttpResponse) {\n\t\t\t\tconst Domain = window.location.hostname.split(\".\").slice(-2).join(\".\");\n\t\t\t\tconst Secure = !Domain.includes(\"localhost\");\n\t\t\t\tif (!Secure) {\n\t\t\t\t\tconst headers = event.headers;\n\t\t\t\t\tconst newToken = headers.get(\"TokenNew\");\n\t\t\t\t\tif (newToken != null && newToken != \"\") setCookie(\"token\", newToken, CookieAttributesGeneral);\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t);\n};\n","export enum TableSortOrder {\n Asc = 1,\n Desc = -1,\n}\n","/**\n * Enum representing the different types of alerts available in the system.\n * Each type corresponds to a specific visual style and semantic meaning.\n */\nexport enum AlertType {\n\t/** Warning alert - Yellow icon and title, used for cautionary messages */\n\tWARNING = \"warning\",\n\t/** Success alert - Green icon and title, used for successful operations */\n\tSUCCESS = \"success\",\n\t/** Error alert - Red icon and title, used for error messages */\n\tERROR = \"error\",\n}\n\n/**\n * Enum representing the button configuration modes for alerts.\n * Determines which buttons are displayed in the alert dialog.\n */\nexport enum AlertButtonMode {\n\t/** Only shows a single OK/Confirm button */\n\tOK_ONLY = \"ok_only\",\n\t/** Shows both Confirm and Cancel buttons */\n\tCONFIRM_CANCEL = \"confirm_cancel\",\n\t/** Shows only a Confirm button (without cancel) */\n\tCONFIRM_ONLY = \"confirm_only\",\n}\n","import { Injectable } from \"@angular/core\";\nimport { ActivatedRouteSnapshot, CanActivateChild, RouterStateSnapshot } from \"@angular/router\";\n\n@Injectable({ providedIn: \"root\" })\nexport class PageRootChildGuard implements CanActivateChild {\n\tcanActivateChild(child: ActivatedRouteSnapshot, parent: RouterStateSnapshot): boolean {\n\t\tconst parentData = child.parent?.data;\n\t\tif (parentData?.[\"pageRoot\"]) {\n\t\t\tchild.data = {\n\t\t\t\t...child.data,\n\t\t\t\tpageRoot: parentData[\"pageRoot\"],\n\t\t\t};\n\t\t}\n\t\treturn true;\n\t}\n}\n","import { Component, inject } from \"@angular/core\";\nimport { SpinnerService } from \"../../services/spinner.service\";\n@Component({\n\tselector: \"app-spinner\",\n\timports: [],\n\ttemplateUrl: \"./spinner.component.html\",\n\tstyleUrl: \"./spinner.component.css\",\n})\nexport class SpinnerComponent {\n\tprivate readonly spinerService = inject(SpinnerService);\n\tisLoading = this.spinerService.isLoading;\n\tLoadingLogo: string = `${window.location.origin}/assets/images/loading_intelica.gif`;\n}\n","<div class=\"ptLoading\">\n\t<span class=\"ptLoading__svg\">\n\t\t@if (isLoading()) {\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\txmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\t\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\t\twidth=\"540\"\n\t\t\t\theight=\"300\"\n\t\t\t\tviewBox=\"0 0 540 300\"\n\t\t\t\tstyle=\"width: 100%; height: 100%\"\n\t\t\t>\n\t\t\t\t<defs>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_12_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"1\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.04;1\"\n\t\t\t\t\t\tvalues=\"1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0.167 0.167 0.667 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateMotion\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_12_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tkeyTimes=\"0;0.04;1\"\n\t\t\t\t\t\tpath=\"M173.5 300 C173.5,300 81.5,300 81.5,300 C81.5,300 81.5,300 81.5,300 \"\n\t\t\t\t\t\tkeyPoints=\"0;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.167 0.167 0 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_12_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"0.89062 0.89062\"\n\t\t\t\t\t\tto=\"0.89062 0.89062\"\n\t\t\t\t\t\ttype=\"scale\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"0.89062 0.89062;0.89062 0.89062\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_12_G_M\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"1\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.2333333;0.2333333;1\"\n\t\t\t\t\t\tvalues=\"1;1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0 0 0 0;0 0 0 0;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateMotion\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_11_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tkeyTimes=\"0;0.0733333;0.1066667;0.1333333;0.16;0.1866667;0.2;1\"\n\t\t\t\t\t\tpath=\"M300 300 C300,300 300,172 300,172 C300,172 300,347 300,347 C300,347 300,287 300,287 C300,287 300,306.5 300,306.5 C300,306.5 300,301.5 300,301.5 C300,301.5 300,300 300,300 C300,300 300,300 300,300 \"\n\t\t\t\t\t\tkeyPoints=\"0;0.33;0.78;0.93;0.98;1;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.333 0 0 1;0.167 0.167 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_11_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\tto=\"3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\ttype=\"scale\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"3.3000000000000003 3.3000000000000003;3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_11_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"-14.5 -14.5\"\n\t\t\t\t\t\tto=\"-14.5 -14.5\"\n\t\t\t\t\t\ttype=\"translate\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"-14.5 -14.5;-14.5 -14.5\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_11_G_M\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"1\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.2;0.2;1\"\n\t\t\t\t\t\tvalues=\"1;1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0 0 0 0;0 0 0 0;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateMotion\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_10_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tkeyTimes=\"0;0.2;0.2733333;0.3066667;0.3333333;0.36;0.3866667;0.4;1\"\n\t\t\t\t\t\tpath=\"M300 300 C300,300 300,300 300,300 C300,300 300,172 300,172 C300,172 300,347 300,347 C300,347 300,287 300,287 C300,287 300,306.5 300,306.5 C300,306.5 300,301.5 300,301.5 C300,301.5 300,300 300,300 C300,300 300,300 300,300 \"\n\t\t\t\t\t\tkeyPoints=\"0;0;0.33;0.78;0.93;0.98;1;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.333 0 0 1;0.333 0 0 1;0.167 0.167 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_10_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\tto=\"3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\ttype=\"scale\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"3.3000000000000003 3.3000000000000003;3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_10_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"-14.5 -14.5\"\n\t\t\t\t\t\tto=\"-14.5 -14.5\"\n\t\t\t\t\t\ttype=\"translate\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"-14.5 -14.5;-14.5 -14.5\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_10_G_M\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.2;0.2000007;0.4;0.4;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateMotion\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_9_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tkeyTimes=\"0;0.4;0.4733333;0.5066667;0.5333333;0.56;0.5866667;0.6;1\"\n\t\t\t\t\t\tpath=\"M300 300 C300,300 300,300 300,300 C300,300 300,172 300,172 C300,172 300,347 300,347 C300,347 300,287 300,287 C300,287 300,306.5 300,306.5 C300,306.5 300,301.5 300,301.5 C300,301.5 300,300 300,300 C300,300 300,300 300,300 \"\n\t\t\t\t\t\tkeyPoints=\"0;0;0.33;0.78;0.93;0.98;1;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.333 0 0 1;0.333 0 0 1;0.167 0.167 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_9_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\tto=\"3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\ttype=\"scale\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"3.3000000000000003 3.3000000000000003;3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_9_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"-14.5 -14.5\"\n\t\t\t\t\t\tto=\"-14.5 -14.5\"\n\t\t\t\t\t\ttype=\"translate\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"-14.5 -14.5;-14.5 -14.5\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_9_G_M\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.4;0.4000007;0.6;0.6;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateMotion\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_8_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tkeyTimes=\"0;0.6;0.6733333;0.7066667;0.7333333;0.76;0.7866667;0.8;1\"\n\t\t\t\t\t\tpath=\"M300 300 C300,300 300,300 300,300 C300,300 300,172 300,172 C300,172 300,347 300,347 C300,347 300,287 300,287 C300,287 300,306.5 300,306.5 C300,306.5 300,301.5 300,301.5 C300,301.5 300,300 300,300 C300,300 300,300 300,300 \"\n\t\t\t\t\t\tkeyPoints=\"0;0;0.33;0.78;0.93;0.98;1;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.333 0 0 1;0.333 0 0 1;0.167 0.167 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_8_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\tto=\"3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\ttype=\"scale\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"3.3000000000000003 3.3000000000000003;3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_8_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"-14.5 -14.5\"\n\t\t\t\t\t\tto=\"-14.5 -14.5\"\n\t\t\t\t\t\ttype=\"translate\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"-14.5 -14.5;-14.5 -14.5\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_8_G_M\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.6;0.6000007;0.8;0.8;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateMotion\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_7_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tkeyTimes=\"0;0.8;0.8733333;0.9066667;0.9333333;0.96;0.9866667;1\"\n\t\t\t\t\t\tpath=\"M300 300 C300,300 300,300 300,300 C300,300 300,172 300,172 C300,172 300,347 300,347 C300,347 300,287 300,287 C300,287 300,306.5 300,306.5 C300,306.5 300,301.5 300,301.5 C300,301.5 300,300 300,300 \"\n\t\t\t\t\t\tkeyPoints=\"0;0;0.33;0.78;0.93;0.98;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.333 0 0 1;0.333 0 0 1;0.167 0.167 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_7_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\tto=\"3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\ttype=\"scale\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"3.3000000000000003 3.3000000000000003;3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_7_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"-14.5 -14.5\"\n\t\t\t\t\t\tto=\"-14.5 -14.5\"\n\t\t\t\t\t\ttype=\"translate\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"-14.5 -14.5;-14.5 -14.5\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_7_G_M\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"1\"\n\t\t\t\t\t\tkeyTimes=\"0;0.8;0.8000007;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1\"\n\t\t\t\t\t\tkeySplines=\"0 0 0 0;0 0 0 0;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateMotion\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_6_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tpath=\"M300 300 C300,300 300,300 300,300 \"\n\t\t\t\t\t\tkeyPoints=\"0;1\"\n\t\t\t\t\t\tkeySplines=\"0.333 0 0 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_6_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\tto=\"3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\ttype=\"scale\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"3.3000000000000003 3.3000000000000003;3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_6_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"-14.5 -14.5\"\n\t\t\t\t\t\tto=\"-14.5 -14.5\"\n\t\t\t\t\t\ttype=\"translate\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"-14.5 -14.5;-14.5 -14.5\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_6_G_M\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"0;0\"\n\t\t\t\t\t\tkeySplines=\"0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_5_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"1\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.2333333;0.2733333;1\"\n\t\t\t\t\t\tvalues=\"1;1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0.167 0.167 0.667 1;0.167 0.167 0.667 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateMotion\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_5_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tkeyTimes=\"0;0.08;0.2333333;0.2733333;1\"\n\t\t\t\t\t\tpath=\"M427 300 C427,300 173.5,300 173.5,300 C173.5,300 173.5,300 173.5,300 C173.5,300 81.5,300 81.5,300 C81.5,300 81.5,300 81.5,300 \"\n\t\t\t\t\t\tkeyPoints=\"0;0.73;0.73;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.167 0.167 0.667 1;0.167 0.167 0.833 0.833;0.167 0.167 0 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_5_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"0.89062 0.89062\"\n\t\t\t\t\t\tto=\"0.89062 0.89062\"\n\t\t\t\t\t\ttype=\"scale\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"0.89062 0.89062;0.89062 0.89062\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_5_G_M\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"1\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.28;0.28;1\"\n\t\t\t\t\t\tvalues=\"1;1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0 0 0 0;0 0 0 0;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_4_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.04;0.08;0.4666667;0.5066667;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0.333 0 0.833 0.833;0.333 0 0.833 0.833;0.167 0.167 0.833 0.833;0.167 0.167 0.667 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateMotion\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_4_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tkeyTimes=\"0;0.04;0.08;0.2333333;0.3133333;0.4666667;0.5066667;1\"\n\t\t\t\t\t\tpath=\"M498 300 C498,300 498,300 498,300 C498,300 427,300 427,300 C427,300 427,300 427,300 C427,300 173.5,300 173.5,300 C173.5,300 173.5,300 173.5,300 C173.5,300 81.5,300 81.5,300 C81.5,300 81.5,300 81.5,300 \"\n\t\t\t\t\t\tkeyPoints=\"0;0;0.17;0.17;0.78;0.78;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.167 0.167 0.667 1;0.167 0.167 0.667 1;0.167 0.167 0.833 0.833;0.167 0.167 0.667 1;0.167 0.167 0.833 0.833;0.167 0.167 0 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_4_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"0.89062 0.89062\"\n\t\t\t\t\t\tto=\"0.89062 0.89062\"\n\t\t\t\t\t\ttype=\"scale\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"0.89062 0.89062;0.89062 0.89062\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_4_G_M\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.04;0.0400007;0.5133333;0.5133333;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_3_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.2333333;0.2733333;0.66;0.7;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0.333 0 0.833 0.833;0.333 0 0.833 0.833;0.167 0.167 0.833 0.833;0.167 0.167 0.667 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateMotion\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_3_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tkeyTimes=\"0;0.2333333;0.2733333;0.4266667;0.5066667;0.66;0.7;1\"\n\t\t\t\t\t\tpath=\"M498 300 C498,300 498,300 498,300 C498,300 427,300 427,300 C427,300 427,300 427,300 C427,300 173.5,300 173.5,300 C173.5,300 173.5,300 173.5,300 C173.5,300 81.5,300 81.5,300 C81.5,300 81.5,300 81.5,300 \"\n\t\t\t\t\t\tkeyPoints=\"0;0;0.17;0.17;0.78;0.78;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.167 0.167 0.667 1;0.167 0.167 0.667 1;0.167 0.167 0.833 0.833;0.167 0.167 0.667 1;0.167 0.167 0.833 0.833;0.167 0.167 0 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_3_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"0.89062 0.89062\"\n\t\t\t\t\t\tto=\"0.89062 0.89062\"\n\t\t\t\t\t\ttype=\"scale\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"0.89062 0.89062;0.89062 0.89062\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_3_G_M\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.2333333;0.233334;0.7066667;0.7066667;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_2_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.4266667;0.4666667;0.8533333;0.8933333;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0.333 0 0.833 0.833;0.333 0 0.833 0.833;0.167 0.167 0.833 0.833;0.167 0.167 0.667 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateMotion\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_2_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tkeyTimes=\"0;0.4266667;0.4666667;0.62;0.7;0.8533333;0.8933333;1\"\n\t\t\t\t\t\tpath=\"M498 300 C498,300 498,300 498,300 C498,300 427,300 427,300 C427,300 427,300 427,300 C427,300 173.5,300 173.5,300 C173.5,300 173.5,300 173.5,300 C173.5,300 81.5,300 81.5,300 C81.5,300 81.5,300 81.5,300 \"\n\t\t\t\t\t\tkeyPoints=\"0;0;0.17;0.17;0.78;0.78;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.167 0.167 0.667 1;0.167 0.167 0.667 1;0.167 0.167 0.833 0.833;0.167 0.167 0.667 1;0.167 0.167 0.833 0.833;0.167 0.167 0 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_2_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"0.89062 0.89062\"\n\t\t\t\t\t\tto=\"0.89062 0.89062\"\n\t\t\t\t\t\ttype=\"scale\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"0.89062 0.89062;0.89062 0.89062\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_2_G_M\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.4266667;0.4266673;0.9;0.9;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_1_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"1\"\n\t\t\t\t\t\tkeyTimes=\"0;0.62;0.66;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.333 0 0.833 0.833;0.333 0 0.833 0.833;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateMotion\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_1_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tkeyTimes=\"0;0.62;0.66;0.8133333;0.8933333;1\"\n\t\t\t\t\t\tpath=\"M498 300 C498,300 498,300 498,300 C498,300 427,300 427,300 C427,300 427,300 427,300 C427,300 173.5,300 173.5,300 C173.5,300 173.5,300 173.5,300 \"\n\t\t\t\t\t\tkeyPoints=\"0;0;0.22;0.22;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.167 0.167 0.667 1;0.167 0.167 0.667 1;0.167 0.167 0.833 0.833;0.167 0.167 0.667 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_1_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"0.89062 0.89062\"\n\t\t\t\t\t\tto=\"0.89062 0.89062\"\n\t\t\t\t\t\ttype=\"scale\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"0.89062 0.89062;0.89062 0.89062\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_1_G_M\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"1\"\n\t\t\t\t\t\tkeyTimes=\"0;0.62;0.6200007;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1\"\n\t\t\t\t\t\tkeySplines=\"0 0 0 0;0 0 0 0;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_0_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"1\"\n\t\t\t\t\t\tkeyTimes=\"0;0.8533333;0.8933333;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.333 0 0.833 0.833;0.333 0 0.833 0.833;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateMotion\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_0_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tkeyTimes=\"0;0.8533333;0.8933333;1\"\n\t\t\t\t\t\tpath=\"M498 300 C498,300 498,300 498,300 C498,300 427,300 427,300 C427,300 427,300 427,300 \"\n\t\t\t\t\t\tkeyPoints=\"0;0;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.167 0.167 0.667 1;0.167 0.167 0.667 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_0_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"0.89062 0.89062\"\n\t\t\t\t\t\tto=\"0.89062 0.89062\"\n\t\t\t\t\t\ttype=\"scale\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"0.89062 0.89062;0.89062 0.89062\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_0_G_M\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"1\"\n\t\t\t\t\t\tkeyTimes=\"0;0.8533333;0.853334;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1\"\n\t\t\t\t\t\tkeySplines=\"0 0 0 0;0 0 0 0;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate attributeType=\"XML\" attributeName=\"opacity\" dur=\"5s\" from=\"0\" to=\"1\" xlink:href=\"#time_group\" />\n\t\t\t\t</defs>\n\t\t\t\t<g id=\"_R_G\">\n\t\t\t\t\t<g id=\"_R_G_L_0_G\" transform=\" translate(270, 196) translate(-300, -300)\">\n\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_12_G_M\">\n\t\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_12_G\">\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_12_G_D_0_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M0 -30 C16.56,-30 30,-16.56 30,0 C30,16.56 16.56,30 0,30 C-16.56,30 -30,16.56 -30,0 C-30,-16.56 -16.56,-30 0,-30z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_11_G_M\">\n\t\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_11_G\">\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_11_G_D_0_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M3.63 23.8 C3.63,23.8 8.05,27.83 24.33,20.28 C24.33,20.28 26.42,16.28 26.42,16.28 C26.42,16.28 27,14.81 27,14.81 C27,14.81 16.7,22.26 5.84,19.04 C2.26,17.97 3.63,23.8 3.63,23.8z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_11_G_D_1_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M9.41 27.76 C9.41,27.76 14.46,29.73 21.79,25.65 C21.79,25.65 23.71,24.43 23.71,24.43 C23.71,24.43 24.71,23.23 24.71,23.23 C24.71,23.23 17.24,26.84 10.74,24.91 C8.59,24.28 9.41,27.76 9.41,27.76z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_11_G_D_2_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M0.09 15.87 C0.09,15.87 11.11,22.24 26.48,10.22 C26.48,10.22 24.78,5.86 24.78,5.86 C24.78,5.86 15.46,14.09 3.98,10.46 C0.1,9.23 0.09,15.87 0.09,15.87z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_11_G_D_3_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M2.09 6.86 C2.09,6.86 10.72,10.88 22.35,3.43 C22.35,3.43 18.54,1.51 18.54,1.51 C18.54,1.51 15.04,5.07 5.34,3.53 C5.34,3.53 2.09,6.86 2.09,6.86z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_11_G_D_4_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M23.39 3.26 C22.15,2.23 20.73,1.42 19.19,0.86 C16.82,2.31 13.88,3.87 10.5,5.21 C6.5,6.81 3.12,8.7 0.55,10.37 C0.19,11.62 0,12.94 0,14.31 C0,14.84 0.03,15.36 0.09,15.87 C2.76,13.92 7.09,11.14 12.63,8.94 C17.07,7.17 20.74,5.04 23.39,3.26 C23.39,3.26 23.39,3.26 23.39,3.26z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_11_G_D_5_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M16.12 0.11 C15.52,0.04 14.92,0 14.31,0 C9.14,0 4.61,2.74 2.09,6.85 C4.2,5.65 6.65,4.41 9.41,3.31 C11.9,2.32 14.15,1.21 16.12,0.11z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_11_G_D_6_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M28.01 18.42 C28.4,17.12 28.61,15.74 28.61,14.31 C28.61,13.97 28.6,13.63 28.58,13.3 C25.91,15.1 22.2,17.28 17.68,19.08 C12.45,21.16 8.31,23.74 5.61,25.67 C6.79,26.57 8.12,27.3 9.56,27.81 C11.97,26.32 14.96,24.71 18.43,23.33 C22.25,21.82 25.49,20.03 28.01,18.42z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_11_G_D_7_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M28.08 10.43 C27.52,8.42 26.53,6.6 25.22,5.06 C22.53,6.9 18.67,9.21 13.93,11.1 C7.84,13.52 3.22,16.63 0.65,18.58 C1.26,20.55 2.29,22.33 3.63,23.83 C6.31,21.88 10.6,19.16 16.06,16.98 C21.25,14.92 25.38,12.35 28.08,10.43 C28.08,10.43 28.08,10.43 28.08,10.43z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_11_G_D_8_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M19.61 25.03 C16.91,26.1 14.51,27.31 12.44,28.49 C13.05,28.57 13.67,28.61 14.31,28.61 C19.5,28.61 24.05,25.84 26.56,21.7 C24.54,22.84 22.21,24 19.61,25.03 C19.61,25.03 19.61,25.03 19.61,25.03z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_10_G_M\">\n\t\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_10_G\">\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_10_G_D_0_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M3.63 23.8 C3.63,23.8 8.05,27.83 24.33,20.28 C24.33,20.28 26.42,16.28 26.42,16.28 C26.42,16.28 27,14.81 27,14.81 C27,14.81 16.7,22.26 5.84,19.04 C2.26,17.97 3.63,23.8 3.63,23.8z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_10_G_D_1_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M9.41 27.76 C9.41,27.76 14.46,29.73 21.79,25.65 C21.79,25.65 23.71,24.43 23.71,24.43 C23.71,24.43 24.71,23.23 24.71,23.23 C24.71,23.23 17.24,26.84 10.74,24.91 C8.59,24.28 9.41,27.76 9.41,27.76z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_10_G_D_2_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M0.09 15.87 C0.09,15.87 11.11,22.24 26.48,10.22 C26.48,10.22 24.78,5.86 24.78,5.86 C24.78,5.86 15.46,14.09 3.98,10.46 C0.1,9.23 0.09,15.87 0.09,15.87z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_10_G_D_3_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M2.09 6.86 C2.09,6.86 10.72,10.88 22.35,3.43 C22.35,3.43 18.54,1.51 18.54,1.51 C18.54,1.51 15.04,5.07 5.34,3.53 C5.34,3.53 2.09,6.86 2.09,6.86z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_10_G_D_4_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M23.39 3.26 C22.15,2.23 20.73,1.42 19.19,0.86 C16.82,2.31 13.88,3.87 10.5,5.21 C6.5,6.81 3.12,8.7 0.55,10.37 C0.19,11.62 0,12.94 0,14.31 C0,14.84 0.03,15.36 0.09,15.87 C2.76,13.92 7.09,11.14 12.63,8.94 C17.07,7.17 20.74,5.04 23.39,3.26 C23.39,3.26 23.39,3.26 23.39,3.26z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_10_G_D_5_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M16.12 0.11 C15.52,0.04 14.92,0 14.31,0 C9.14,0 4.61,2.74 2.09,6.85 C4.2,5.65 6.65,4.41 9.41,3.31 C11.9,2.32 14.15,1.21 16.12,0.11z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_10_G_D_6_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M28.01 18.42 C28.4,17.12 28.61,15.74 28.61,14.31 C28.61,13.97 28.6,13.63 28.58,13.3 C25.91,15.1 22.2,17.28 17.68,19.08 C12.45,21.16 8.31,23.74 5.61,25.67 C6.79,26.57 8.12,27.3 9.56,27.81 C11.97,26.32 14.96,24.71 18.43,23.33 C22.25,21.82 25.49,20.03 28.01,18.42z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_10_G_D_7_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M28.08 10.43 C27.52,8.42 26.53,6.6 25.22,5.06 C22.53,6.9 18.67,9.21 13.93,11.1 C7.84,13.52 3.22,16.63 0.65,18.58 C1.26,20.55 2.29,22.33 3.63,23.83 C6.31,21.88 10.6,19.16 16.06,16.98 C21.25,14.92 25.38,12.35 28.08,10.43 C28.08,10.43 28.08,10.43 28.08,10.43z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_10_G_D_8_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M19.61 25.03 C16.91,26.1 14.51,27.31 12.44,28.49 C13.05,28.57 13.67,28.61 14.31,28.61 C19.5,28.61 24.05,25.84 26.56,21.7 C24.54,22.84 22.21,24 19.61,25.03 C19.61,25.03 19.61,25.03 19.61,25.03z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_9_G_M\">\n\t\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_9_G\">\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_9_G_D_0_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M3.63 23.8 C3.63,23.8 8.05,27.83 24.33,20.28 C24.33,20.28 26.42,16.28 26.42,16.28 C26.42,16.28 27,14.81 27,14.81 C27,14.81 16.7,22.26 5.84,19.04 C2.26,17.97 3.63,23.8 3.63,23.8z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_9_G_D_1_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M9.41 27.76 C9.41,27.76 14.46,29.73 21.79,25.65 C21.79,25.65 23.71,24.43 23.71,24.43 C23.71,24.43 24.71,23.23 24.71,23.23 C24.71,23.23 17.24,26.84 10.74,24.91 C8.59,24.28 9.41,27.76 9.41,27.76z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_9_G_D_2_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M0.09 15.87 C0.09,15.87 11.11,22.24 26.48,10.22 C26.48,10.22 24.78,5.86 24.78,5.86 C24.78,5.86 15.46,14.09 3.98,10.46 C0.1,9.23 0.09,15.87 0.09,15.87z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_9_G_D_3_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M2.09 6.86 C2.09,6.86 10.72,10.88 22.35,3.43 C22.35,3.43 18.54,1.51 18.54,1.51 C18.54,1.51 15.04,5.07 5.34,3.53 C5.34,3.53 2.09,6.86 2.09,6.86z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_9_G_D_4_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M23.39 3.26 C22.15,2.23 20.73,1.42 19.19,0.86 C16.82,2.31 13.88,3.87 10.5,5.21 C6.5,6.81 3.12,8.7 0.55,10.37 C0.19,11.62 0,12.94 0,14.31 C0,14.84 0.03,15.36 0.09,15.87 C2.76,13.92 7.09,11.14 12.63,8.94 C17.07,7.17 20.74,5.04 23.39,3.26 C23.39,3.26 23.39,3.26 23.39,3.26z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_9_G_D_5_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M16.12 0.11 C15.52,0.04 14.92,0 14.31,0 C9.14,0 4.61,2.74 2.09,6.85 C4.2,5.65 6.65,4.41 9.41,3.31 C11.9,2.32 14.15,1.21 16.12,0.11z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_9_G_D_6_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M28.01 18.42 C28.4,17.12 28.61,15.74 28.61,14.31 C28.61,13.97 28.6,13.63 28.58,13.3 C25.91,15.1 22.2,17.28 17.68,19.08 C12.45,21.16 8.31,23.74 5.61,25.67 C6.79,26.57 8.12,27.3 9.56,27.81 C11.97,26.32 14.96,24.71 18.43,23.33 C22.25,21.82 25.49,20.03 28.01,18.42z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_9_G_D_7_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M28.08 10.43 C27.52,8.42 26.53,6.6 25.22,5.06 C22.53,6.9 18.67,9.21 13.93,11.1 C7.84,13.52 3.22,16.63 0.65,18.58 C1.26,20.55 2.29,22.33 3.63,23.83 C6.31,21.88 10.6,19.16 16.06,16.98 C21.25,14.92 25.38,12.35 28.08,10.43 C28.08,10.43 28.08,10.43 28.08,10.43z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_9_G_D_8_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M19.61 25.03 C16.91,26.1 14.51,27.31 12.44,28.49 C13.05,28.57 13.67,28.61 14.31,28.61 C19.5,28.61 24.05,25.84 26.56,21.7 C24.54,22.84 22.21,24 19.61,25.03 C19.61,25.03 19.61,25.03 19.61,25.03z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_8_G_M\">\n\t\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_8_G\">\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_8_G_D_0_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M3.63 23.8 C3.63,23.8 8.05,27.83 24.33,20.28 C24.33,20.28 26.42,16.28 26.42,16.28 C26.42,16.28 27,14.81 27,14.81 C27,14.81 16.7,22.26 5.84,19.04 C2.26,17.97 3.63,23.8 3.63,23.8z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_8_G_D_1_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M9.41 27.76 C9.41,27.76 14.46,29.73 21.79,25.65 C21.79,25.65 23.71,24.43 23.71,24.43 C23.71,24.43 24.71,23.23 24.71,23.23 C24.71,23.23 17.24,26.84 10.74,24.91 C8.59,24.28 9.41,27.76 9.41,27.76z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_8_G_D_2_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M0.09 15.87 C0.09,15.87 11.11,22.24 26.48,10.22 C26.48,10.22 24.78,5.86 24.78,5.86 C24.78,5.86 15.46,14.09 3.98,10.46 C0.1,9.23 0.09,15.87 0.09,15.87z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_8_G_D_3_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M2.09 6.86 C2.09,6.86 10.72,10.88 22.35,3.43 C22.35,3.43 18.54,1.51 18.54,1.51 C18.54,1.51 15.04,5.07 5.34,3.53 C5.34,3.53 2.09,6.86 2.09,6.86z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_8_G_D_4_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M23.39 3.26 C22.15,2.23 20.73,1.42 19.19,0.86 C16.82,2.31 13.88,3.87 10.5,5.21 C6.5,6.81 3.12,8.7 0.55,10.37 C0.19,11.62 0,12.94 0,14.31 C0,14.84 0.03,15.36 0.09,15.87 C2.76,13.92 7.09,11.14 12.63,8.94 C17.07,7.17 20.74,5.04 23.39,3.26 C23.39,3.26 23.39,3.26 23.39,3.26z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_8_G_D_5_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M16.12 0.11 C15.52,0.04 14.92,0 14.31,0 C9.14,0 4.61,2.74 2.09,6.85 C4.2,5.65 6.65,4.41 9.41,3.31 C11.9,2.32 14.15,1.21 16.12,0.11z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_8_G_D_6_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M28.01 18.42 C28.4,17.12 28.61,15.74 28.61,14.31 C28.61,13.97 28.6,13.63 28.58,13.3 C25.91,15.1 22.2,17.28 17.68,19.08 C12.45,21.16 8.31,23.74 5.61,25.67 C6.79,26.57 8.12,27.3 9.56,27.81 C11.97,26.32 14.96,24.71 18.43,23.33 C22.25,21.82 25.49,20.03 28.01,18.42z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_8_G_D_7_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M28.08 10.43 C27.52,8.42 26.53,6.6 25.22,5.06 C22.53,6.9 18.67,9.21 13.93,11.1 C7.84,13.52 3.22,16.63 0.65,18.58 C1.26,20.55 2.29,22.33 3.63,23.83 C6.31,21.88 10.6,19.16 16.06,16.98 C21.25,14.92 25.38,12.35 28.08,10.43 C28.08,10.43 28.08,10.43 28.08,10.43z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_8_G_D_8_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M19.61 25.03 C16.91,26.1 14.51,27.31 12.44,28.49 C13.05,28.57 13.67,28.61 14.31,28.61 C19.5,28.61 24.05,25.84 26.56,21.7 C24.54,22.84 22.21,24 19.61,25.03 C19.61,25.03 19.61,25.03 19.61,25.03z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_7_G_M\">\n\t\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_7_G\">\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_7_G_D_0_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M3.63 23.8 C3.63,23.8 8.05,27.83 24.33,20.28 C24.33,20.28 26.42,16.28 26.42,16.28 C26.42,16.28 27,14.81 27,14.81 C27,14.81 16.7,22.26 5.84,19.04 C2.26,17.97 3.63,23.8 3.63,23.8z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_7_G_D_1_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M9.41 27.76 C9.41,27.76 14.46,29.73 21.79,25.65 C21.79,25.65 23.71,24.43 23.71,24.43 C23.71,24.43 24.71,23.23 24.71,23.23 C24.71,23.23 17.24,26.84 10.74,24.91 C8.59,24.28 9.41,27.76 9.41,27.76z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_7_G_D_2_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M0.09 15.87 C0.09,15.87 11.11,22.24 26.48,10.22 C26.48,10.22 24.78,5.86 24.78,5.86 C24.78,5.86 15.46,14.09 3.98,10.46 C0.1,9.23 0.09,15.87 0.09,15.87z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_7_G_D_3_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M2.09 6.86 C2.09,6.86 10.72,10.88 22.35,3.43 C22.35,3.43 18.54,1.51 18.54,1.51 C18.54,1.51 15.04,5.07 5.34,3.53 C5.34,3.53 2.09,6.86 2.09,6.86z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_7_G_D_4_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M23.39 3.26 C22.15,2.23 20.73,1.42 19.19,0.86 C16.82,2.31 13.88,3.87 10.5,5.21 C6.5,6.81 3.12,8.7 0.55,10.37 C0.19,11.62 0,12.94 0,14.31 C0,14.84 0.03,15.36 0.09,15.87 C2.76,13.92 7.09,11.14 12.63,8.94 C17.07,7.17 20.74,5.04 23.39,3.26 C23.39,3.26 23.39,3.26 23.39,3.26z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_7_G_D_5_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M16.12 0.11 C15.52,0.04 14.92,0 14.31,0 C9.14,0 4.61,2.74 2.09,6.85 C4.2,5.65 6.65,4.41 9.41,3.31 C11.9,2.32 14.15,1.21 16.12,0.11z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_7_G_D_6_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M28.01 18.42 C28.4,17.12 28.61,15.74 28.61,14.31 C28.61,13.97 28.6,13.63 28.58,13.3 C25.91,15.1 22.2,17.28 17.68,19.08 C12.45,21.16 8.31,23.74 5.61,25.67 C6.79,26.57 8.12,27.3 9.56,27.81 C11.97,26.32 14.96,24.71 18.43,23.33 C22.25,21.82 25.49,20.03 28.01,18.42z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_7_G_D_7_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M28.08 10.43 C27.52,8.42 26.53,6.6 25.22,5.06 C22.53,6.9 18.67,9.21 13.93,11.1 C7.84,13.52 3.22,16.63 0.65,18.58 C1.26,20.55 2.29,22.33 3.63,23.83 C6.31,21.88 10.6,19.16 16.06,16.98 C21.25,14.92 25.38,12.35 28.08,10.43 C28.08,10.43 28.08,10.43 28.08,10.43z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_7_G_D_8_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M19.61 25.03 C16.91,26.1 14.51,27.31 12.44,28.49 C13.05,28.57 13.67,28.61 14.31,28.61 C19.5,28.61 24.05,25.84 26.56,21.7 C24.54,22.84 22.21,24 19.61,25.03 C19.61,25.03 19.61,25.03 19.61,25.03z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_6_G_M\">\n\t\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_6_G\">\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_6_G_D_0_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M3.63 23.8 C3.63,23.8 8.05,27.83 24.33,20.28 C24.33,20.28 26.42,16.28 26.42,16.28 C26.42,16.28 27,14.81 27,14.81 C27,14.81 16.7,22.26 5.84,19.04 C2.26,17.97 3.63,23.8 3.63,23.8z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_6_G_D_1_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M9.41 27.76 C9.41,27.76 14.46,29.73 21.79,25.65 C21.79,25.65 23.71,24.43 23.71,24.43 C23.71,24.43 24.71,23.23 24.71,23.23 C24.71,23.23 17.24,26.84 10.74,24.91 C8.59,24.28 9.41,27.76 9.41,27.76z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_6_G_D_2_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M0.09 15.87 C0.09,15.87 11.11,22.24 26.48,10.22 C26.48,10.22 24.78,5.86 24.78,5.86 C24.78,5.86 15.46,14.09 3.98,10.46 C0.1,9.23 0.09,15.87 0.09,15.87z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_6_G_D_3_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M2.09 6.86 C2.09,6.86 10.72,10.88 22.35,3.43 C22.35,3.43 18.54,1.51 18.54,1.51 C18.54,1.51 15.04,5.07 5.34,3.53 C5.34,3.53 2.09,6.86 2.09,6.86z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_6_G_D_4_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M23.39 3.26 C22.15,2.23 20.73,1.42 19.19,0.86 C16.82,2.31 13.88,3.87 10.5,5.21 C6.5,6.81 3.12,8.7 0.55,10.37 C0.19,11.62 0,12.94 0,14.31 C0,14.84 0.03,15.36 0.09,15.87 C2.76,13.92 7.09,11.14 12.63,8.94 C17.07,7.17 20.74,5.04 23.39,3.26 C23.39,3.26 23.39,3.26 23.39,3.26z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_6_G_D_5_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M16.12 0.11 C15.52,0.04 14.92,0 14.31,0 C9.14,0 4.61,2.74 2.09,6.85 C4.2,5.65 6.65,4.41 9.41,3.31 C11.9,2.32 14.15,1.21 16.12,0.11z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_6_G_D_6_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M28.01 18.42 C28.4,17.12 28.61,15.74 28.61,14.31 C28.61,13.97 28.6,13.63 28.58,13.3 C25.91,15.1 22.2,17.28 17.68,19.08 C12.45,21.16 8.31,23.74 5.61,25.67 C6.79,26.57 8.12,27.3 9.56,27.81 C11.97,26.32 14.96,24.71 18.43,23.33 C22.25,21.82 25.49,20.03 28.01,18.42z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_6_G_D_7_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M28.08 10.43 C27.52,8.42 26.53,6.6 25.22,5.06 C22.53,6.9 18.67,9.21 13.93,11.1 C7.84,13.52 3.22,16.63 0.65,18.58 C1.26,20.55 2.29,22.33 3.63,23.83 C6.31,21.88 10.6,19.16 16.06,16.98 C21.25,14.92 25.38,12.35 28.08,10.43 C28.08,10.43 28.08,10.43 28.08,10.43z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_6_G_D_8_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M19.61 25.03 C16.91,26.1 14.51,27.31 12.44,28.49 C13.05,28.57 13.67,28.61 14.31,28.61 C19.5,28.61 24.05,25.84 26.56,21.7 C24.54,22.84 22.21,24 19.61,25.03 C19.61,25.03 19.61,25.03 19.61,25.03z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_5_G_M\">\n\t\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_5_G\">\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_5_G_D_0_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M0 -30 C16.56,-30 30,-16.56 30,0 C30,16.56 16.56,30 0,30 C-16.56,30 -30,16.56 -30,0 C-30,-16.56 -16.56,-30 0,-30z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_4_G_M\">\n\t\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_4_G\">\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_4_G_D_0_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M0 -30 C16.56,-30 30,-16.56 30,0 C30,16.56 16.56,30 0,30 C-16.56,30 -30,16.56 -30,0 C-30,-16.56 -16.56,-30 0,-30z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_3_G_M\">\n\t\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_3_G\">\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_3_G_D_0_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M0 -30 C16.56,-30 30,-16.56 30,0 C30,16.56 16.56,30 0,30 C-16.56,30 -30,16.56 -30,0 C-30,-16.56 -16.56,-30 0,-30z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_2_G_M\">\n\t\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_2_G\">\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_2_G_D_0_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M0 -30 C16.56,-30 30,-16.56 30,0 C30,16.56 16.56,30 0,30 C-16.56,30 -30,16.56 -30,0 C-30,-16.56 -16.56,-30 0,-30z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_1_G_M\">\n\t\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_1_G\">\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_1_G_D_0_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M0 -30 C16.56,-30 30,-16.56 30,0 C30,16.56 16.56,30 0,30 C-16.56,30 -30,16.56 -30,0 C-30,-16.56 -16.56,-30 0,-30z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_0_G_M\">\n\t\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_0_G\">\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_0_G_D_0_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M0 -30 C16.56,-30 30,-16.56 30,0 C30,16.56 16.56,30 0,30 C-16.56,30 -30,16.56 -30,0 C-30,-16.56 -16.56,-30 0,-30z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t</g>\n\t\t\t\t</g>\n\t\t\t\t<g id=\"time_group\" />\n\t\t\t</svg>\n\t\t}\n\t</span>\n</div>\n","import { inject, Pipe, PipeTransform } from \"@angular/core\";\nimport { DateMode } from \"../constants/date-mode-options.constants\";\nimport { DatePipe } from \"@angular/common\";\n\n@Pipe({\n name: \"formatCell\",\n standalone: true,\n})\nexport class FormatCellPipe implements PipeTransform {\n private readonly datePipe = inject(DatePipe);\n\n transform(\n value: any,\n type:\n | \"string\"\n | \"date\"\n | \"date2\"\n | \"date3\"\n | \"time\"\n | \"decimal2\"\n | \"decimal4\"\n | \"tarifa\"\n ): string {\n if (value == null) return \"\";\n\n switch (type) {\n case \"date\":\n return this.formatDateValue(value, \"day\");\n case \"date2\":\n return this.formatDateValue(value, \"month\");\n case \"date3\":\n return this.formatDateValue(value, \"year\");\n case \"time\":\n return this.formatTime(value);\n case \"decimal2\":\n return this.formatDecimal(value, 2);\n case \"decimal4\":\n return this.formatDecimal(value, 4);\n case \"tarifa\":\n return this.formatTarifa(value);\n default:\n return value;\n }\n }\n\n getDateFormat(mode: DateMode): string {\n switch (mode) {\n case \"month\":\n return \"M/yy\";\n case \"year\":\n return \"yy\";\n default:\n return \"d/M/yy\";\n }\n }\n\n formatDateValue(value: any, mode: string): string {\n const pattern = this.getDateFormat(mode as DateMode);\n\n if (Array.isArray(value) && value.length === 2) {\n return `${this.datePipe.transform(\n value[0],\n pattern\n )} - ${this.datePipe.transform(value[1], pattern)}`;\n }\n\n if (value) {\n return this.datePipe.transform(value, pattern) || \"\";\n }\n\n return \"\";\n }\n\n private formatTime(value: any): string {\n const date = new Date(value);\n if (isNaN(date.getTime())) return \"\";\n\n let hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n const ampm = hours >= 12 ? \"PM\" : \"AM\";\n\n hours = hours % 12;\n hours = hours ? hours : 12;\n const hh = hours.toString().padStart(2, \"0\");\n const mm = minutes.toString().padStart(2, \"0\");\n const ss = seconds.toString().padStart(2, \"0\");\n\n return `${hh}:${mm}:${ss} ${ampm}`;\n }\n\n private formatDecimal(value: any, digits: number): string {\n const num = parseFloat(value);\n if (isNaN(num)) return \"\";\n return num.toFixed(digits);\n }\n\n private formatTarifa(value: any): string {\n const num = parseFloat(value);\n if (isNaN(num)) return \"\";\n\n const absNum = Math.abs(num);\n if (absNum >= 0.000001 && absNum <= 0.1) {\n // Mostrar hasta 6 decimales\n return absNum.toFixed(6);\n } else if (absNum < 0.000001) {\n return num.toString();\n } else {\n return num.toString();\n }\n }\n}\n","export class FormatDateConstants {\n\tpublic static readonly DMYY: string = \"d/M/yy\";\n\tpublic static readonly MMYY: string = \"MMMM yyyy\";\n\tpublic static readonly YYMD: string = \"yyMd\";\n\tpublic static readonly DMYY_MOMENT: string = \"D/M/YY\";\n\tpublic static readonly YYMD_MOMENT: string = \"YYMD\";\n\tpublic static readonly DDMMYYYY: string = \"dd_MM_YYYY\";\n\tpublic static readonly DDMMYYYY_: string = \"DD/MM/YYYY\";\n\tpublic static readonly YYYYMMDD: string = \"YYYY-MM-DD\";\n\tpublic static readonly YYYYMMDD_: string = \"yyyyMMdd\";\n\tpublic static readonly YYYYMMDD_SLASH: string = \"YYYY/MM/DD\";\n}\n","import { Injectable } from \"@angular/core\";\nimport { BehaviorSubject, Observable, Subject } from \"rxjs\";\nimport { Location } from \"@angular/common\";\nimport { FormatDateConstants } from \"../constants/format-date.constants\";\nimport moment from \"moment\";\nimport * as _ from \"lodash\";\n@Injectable({\n providedIn: \"root\",\n})\nexport class SharedService {\n public configObservable = new Subject<boolean>();\n isLoading = new BehaviorSubject(false);\n isLoadingHeader = new BehaviorSubject(true);\n isExpandedContent = new BehaviorSubject(false);\n isLoadingPageInfo = new BehaviorSubject(true);\n notifyProfileType = new Subject<string>();\n charges = 0;\n showHelper = new BehaviorSubject(false);\n headerPathName = new BehaviorSubject<string[]>([]);\n pageId: number | undefined = 0;\n openActionMenu$: Subject<boolean> = new Subject<boolean>();\n months = {\n en: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n es: [\n \"Enero\",\n \"Febrero\",\n \"Marzo\",\n \"Abril\",\n \"Mayo\",\n \"Junio\",\n \"Julio\",\n \"Agosto\",\n \"Septiembre\",\n \"Octubre\",\n \"Noviembre\",\n \"Diciembre\",\n ],\n };\n subtitleDescriptionNotification$!: Observable<string>;\n constructor(private location: Location) {}\n ///METODOS GLOBALS.\n IsNumberRate(n: any) {\n return !isNaN(parseFloat(n)) && !isNaN(n - 0);\n }\n RemovePercentage(string: string) {\n if (string.length > 0) {\n if (string.startsWith(\"%\")) string = string.substring(1);\n let last = string.length - 1;\n if (string.endsWith(\"%\")) string = string.substring(0, last);\n }\n return string;\n }\n GetTotalAmountByCrncy(col: string, listGeneral: any): number {\n return listGeneral.reduce((a: any, b: any) => a + (b[col] || 0), 0);\n }\n GetTotalAverageByColumn(col: string, listGeneral: any): number {\n return (\n listGeneral.reduce((a: any, b: any) => a + (b[col] || 0), 0) /\n (listGeneral.length || 1)\n );\n }\n GetTotalByGroup(\n col: string,\n listGeneral: any[],\n groupBy: string[] | undefined\n ): any[] {\n if (!groupBy?.length)\n return [listGeneral.reduce((a: any, b: any) => a + (b[col] || 0), 0)];\n\n let result: { [key: string]: any } = listGeneral.reduce(\n (acc: { [key: string]: any }, item: any) => {\n const groupKey = groupBy.map((prop) => item[prop]).join(\"||\");\n acc[groupKey] = (acc[groupKey] || 0) + item[col];\n return acc;\n },\n {}\n );\n const propiedades = Object.keys(result).sort();\n const indexGroup = groupBy.indexOf(col);\n if (indexGroup != -1)\n return propiedades.map((propiedad) => propiedad.split(\"||\")[indexGroup]);\n return propiedades.map((propiedad) => result[propiedad]);\n }\n TransformNegative(value: string): string {\n value = value?.toString() ?? \"0.00\";\n if (value?.indexOf(\"-\") > -1) return \"(\" + value.replace(\"-\", \"\") + \")\";\n else return value.toString();\n }\n FormatNumber(value: number, decimalMax: number, decimalMin: number) {\n return value.toLocaleString(\"en-US\", {\n maximumFractionDigits: decimalMax,\n minimumFractionDigits: decimalMin,\n });\n }\n ClickOutSideValidator(event: any): boolean {\n let res = false;\n if (event !== undefined) {\n const src = (event as Event).srcElement as Element;\n res = src.id !== \"button-alignment\" && !this.CheckParents(src, 0);\n }\n return res;\n }\n CheckParents(src: Element, c: number): boolean {\n var ids = [];\n ids.push(\"HamburgerMenu\");\n var strings = [];\n strings.push(\"swal2-container\");\n if (src.className.includes(\"backdrop-visible\")) return false;\n var res = ids.some(function (v) {\n return src.id === v;\n });\n if (\n !res &&\n (src.tagName === \"BODY\" || src.parentElement === null) &&\n c === 0\n ) {\n res = true;\n }\n if (\n !res &&\n strings.some(function (v) {\n return src.classList.contains(v);\n })\n )\n res = true;\n if (src.parentElement && !res) {\n c++;\n res = this.CheckParents(src.parentElement, c);\n }\n return res;\n }\n GetTitleByRegionOrCountry(CurrentGroup: any, Current: any, field: string) {\n return CurrentGroup\n ? CurrentGroup.groupName + \" - \" + Current[field]\n : Current[field];\n }\n GetTitleByBank(ListGeneralCountryAll: any[], CurrentBank: any) {\n return ListGeneralCountryAll.length > 1\n ? CurrentBank.groupName +\n \" - \" +\n CurrentBank.countryName +\n \" - \" +\n CurrentBank.bankNameCommercial\n : CurrentBank.bankNameCommercial;\n }\n Roundgen(value: any, precision: any) {\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(value * multiplier) / multiplier;\n }\n ReturnAmountPercen(amount: any): string {\n if (isNaN(amount)) amount = 0;\n let resultado: string = \"\";\n let AmountStr =\n amount === 0\n ? \"0\"\n : amount.toLocaleString(\"en-US\", {\n maximumFractionDigits: 1,\n minimumFractionDigits: 1,\n });\n if (AmountStr.indexOf(\".0\") !== -1)\n AmountStr = amount.toLocaleString(\"en-US\", {\n maximumFractionDigits: 0,\n minimumFractionDigits: 0,\n });\n if (amount < 0 && parseInt(amount.toString()) * -1 === 0) {\n resultado =\n amount\n .toLocaleString(\"en-US\", {\n maximumFractionDigits: 1,\n minimumFractionDigits: 1,\n })\n .replace(\"-\", \"(\") + \"%)\";\n } else if (amount < 0) resultado = AmountStr.replace(\"-\", \"(\") + \"%)\";\n else resultado = AmountStr + \"%\";\n if (\n Number.NEGATIVE_INFINITY === amount ||\n Number.POSITIVE_INFINITY === amount\n )\n resultado = \"\";\n return resultado;\n }\n ReturAmountFormat(amount: any): string {\n if (isNaN(amount)) amount = 0;\n amount = this.Roundgen(amount, 2);\n let resultado: string = \"\";\n if (amount < 0 && parseInt(amount.toString()) * -1 === 0)\n resultado = amount.toString().replace(\"-\", \"(\") + \")\";\n else if (amount < 0 && amount > -1000) {\n resultado = this.Roundgen(amount, 0).toString().replace(\"-\", \"(\") + \")\";\n } else if (amount < 0 && -1000000000 >= amount) {\n resultado =\n this.Roundgen(amount / 1000000000, 1)\n .toString()\n .replace(\"-\", \"(\") + \" B)\";\n } else if (amount < 0 && -1000000 >= amount) {\n resultado =\n this.Roundgen(amount / 1000000, 1)\n .toString()\n .replace(\"-\", \"(\") + \" M)\";\n } else if (amount < 0) {\n resultado =\n this.Roundgen(amount / 1000, 1)\n .toString()\n .replace(\"-\", \"(\") + \" K)\";\n } else if (amount < 1000) resultado = this.Roundgen(amount, 0).toString();\n else if (1000000000 < amount)\n resultado = this.Roundgen(amount / 1000000000, 1).toString() + \" B\";\n else if (1000000 < amount)\n resultado = this.Roundgen(amount / 1000000, 1).toString() + \" M\";\n else resultado = this.Roundgen(amount / 1000, 1).toString() + \" K\";\n if (resultado.indexOf(\".\") === -1 && amount !== 0 && amount >= 1000) {\n let a = resultado;\n let b = \".0\";\n let output = a + b;\n\n if (resultado.indexOf(\" \") !== -1) {\n let position = resultado.indexOf(\" \");\n output = [a.slice(0, position), b, a.slice(position)].join(\"\");\n } else if (\n resultado.indexOf(\" \") === -1 &&\n resultado.indexOf(\")\") !== -1\n ) {\n let position = resultado.indexOf(\")\");\n output = [a.slice(0, position), b, a.slice(position)].join(\"\");\n }\n\n resultado = output;\n }\n return resultado;\n }\n DownloadFile(fileName: string, blob: any): void {\n const nav = window.navigator as any;\n if (nav.msSaveOrOpenBlob) {\n nav.msSaveOrOpenBlob(blob, fileName);\n } else {\n const link = document.createElement(\"a\");\n link.setAttribute(\"type\", \"hidden\");\n link.download = fileName;\n link.href = window.URL.createObjectURL(blob.body);\n document.body.appendChild(link);\n link.click();\n }\n }\n ViewFile(response: any) {\n const a = document.createElement(\"a\");\n a.setAttribute(\"style\", \"display:none;\");\n document.body.appendChild(a);\n a.href = URL.createObjectURL(response.body);\n a.target = \"_blank\";\n a.click();\n document.body.removeChild(a);\n }\n GetNumberCurrency(amount: number): string {\n return amount === 0\n ? \"0\"\n : amount.toLocaleString(\"en-US\", {\n maximumFractionDigits: 2,\n minimumFractionDigits: 2,\n });\n }\n CountDecimals(param: number) {\n if (Math.floor(param) === param) return 0;\n return param.toString().split(\".\")[1].length || 0;\n }\n IsEmpty(value: any) {\n return value === null || value === \"\" || value === undefined;\n }\n GroupByColumn(data: any[], columnGroup: string): any[] {\n let colUnique = [];\n if (columnGroup != \"\") {\n colUnique = [\n ...new Set(\n data.map((item) => {\n return item[columnGroup];\n })\n ),\n ].filter((unique) => !this.IsEmpty(unique));\n } else {\n colUnique = [\n ...new Set(\n data.map((item) => {\n return item;\n })\n ),\n ].filter((unique) => !this.IsEmpty(unique));\n }\n return colUnique;\n }\n GetRoswpanbyData(column: string, index: number, data: Array<any>): number {\n let ValOfAgruppated = null;\n let rowspanI = 1;\n for (let i: number = index - 1; i < data.length; i++) {\n let val = data[i][column];\n if (ValOfAgruppated == null) {\n ValOfAgruppated = val;\n } else if (val !== null && ValOfAgruppated == val) {\n rowspanI++;\n } else if (val !== null && ValOfAgruppated != val) {\n ValOfAgruppated = null;\n return rowspanI;\n }\n }\n return rowspanI;\n }\n FormatterStringJsonByKey(\n data: any[],\n key: string,\n separador: string\n ): string {\n let result = \"\";\n let colUnique: string[] = [];\n data.forEach((element) => {\n colUnique.push(element[key]);\n });\n result = colUnique.join(separador);\n return result;\n }\n GroupByKey(xs: any, key: any) {\n return xs.reduce(function (rv: any, x: any) {\n (rv[x[key]] = rv[x[key]] || []).push(x);\n return rv;\n }, {});\n }\n LoadProjectsCss(route: string) {\n const elements = this.CheckProjectsCss(route);\n if (elements.length === 0) {\n const node = document.createElement(\"link\");\n node.href = \"./assets/css/projects/\" + route + \".css\";\n node.rel = \"stylesheet\";\n document.getElementsByTagName(\"head\")[0].appendChild(node);\n }\n }\n RemoveProjectsCss(route: string) {\n const elements = this.CheckProjectsCss(route);\n elements.forEach((element) => {\n document.getElementsByTagName(\"head\")[0].removeChild(element);\n });\n }\n CheckProjectsCss(route: string): any[] {\n const parent = document.getElementsByTagName(\"head\")[0];\n const elements: any[] = [];\n parent.childNodes.forEach((element: any) => {\n var a = element as object;\n\n if (element.nodeName === \"LINK\") {\n var elemethref = element[\"href\"];\n if (elemethref && elemethref.indexOf(route) > 0) {\n elements.push(element);\n }\n }\n });\n return elements;\n }\n CountDecimalsDigits(numero: any) {\n if (this.IsEmpty(numero)) return 0;\n numero = parseFloat(numero);\n let arrayNumero = numero.toString().split(\".\");\n numero = arrayNumero.length > 1 ? arrayNumero[1] : \"\";\n return numero.length;\n }\n GetMaxNumberDecimals(data: any[], key: string): number {\n let arrCountDecimals: number[] = [];\n data.forEach((element) => {\n let decimals = this.CountDecimalsDigits(element[key]);\n arrCountDecimals.push(decimals);\n });\n var maxDecimal = Math.max(...arrCountDecimals);\n return maxDecimal;\n }\n SetHeaderPathName(name: string[]) {\n this.headerPathName.next(name);\n }\n FormatDate(date: string, format: string): string {\n return moment(date).format(format);\n }\n CopyTo(src: any, dest: any) {\n Object.keys(src).forEach((property) => {\n dest[property] = src[property];\n });\n }\n IsValidEmail(email: string): boolean {\n const emailPattern = /^\\w+([.-]?\\w+)*@\\w+([.-]?\\w+)*(\\.\\w{2,3})+$/;\n return emailPattern.test(email);\n }\n IsGuid(str: string): boolean {\n const guidRegex =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n return guidRegex.test(str);\n }\n ContainsSpecialCharacters(str: string): boolean {\n const specialCharacter = /^[^\\\\/?%*:|\"<>]+$/;\n return !specialCharacter.test(str);\n }\n IsNumber(value: any): boolean {\n return /^-?\\d+(\\.\\d+)?$/.test(value);\n }\n CalculatePreviousDate(date: Date, monthsAgo: number) {\n date.setMonth(date.getMonth() - monthsAgo);\n const newDate = moment(date).format(FormatDateConstants.DMYY_MOMENT);\n\n return newDate;\n }\n GetFilteredSearchKey(\n listTempAll: any[],\n key: string,\n value: any,\n operatorId: number\n ) {\n let listFilter = [];\n switch (operatorId) {\n case 0: //'Contains'\n let word = value.split(\"&\", 100);\n let count: number = 0;\n let listTemp: any;\n if (word.length > 1) {\n word.forEach((element: any) => {\n if (count === 0) {\n listTemp = listTempAll.filter((a) =>\n a[key]\n ?.toString()\n ?.toLowerCase()\n .includes(element.toLowerCase())\n );\n } else {\n listTemp = listTemp.filter((a: any) =>\n a[key]\n ?.toString()\n ?.toLowerCase()\n .includes(element.toLowerCase())\n );\n }\n count++;\n });\n listFilter = listTemp;\n } else {\n listFilter = listTempAll.filter((a) =>\n a[key]?.toString()?.toLowerCase().includes(value)\n );\n }\n break;\n case 1: //'Exact'\n listFilter = value\n ? listTempAll.filter(\n (a) => a[key]?.toString()?.toLowerCase() === value\n )\n : listTempAll;\n break;\n case 2: //'Begin'\n listFilter = listTempAll.filter((a) =>\n a[key]?.toString()?.toLowerCase().startsWith(value)\n );\n break;\n case 3: //'Ends'\n listFilter = listTempAll.filter((a) =>\n a[key]?.toString()?.toLowerCase().endsWith(value)\n );\n break;\n default:\n listFilter = listTempAll.filter((a) =>\n a[key]?.toString()?.toLowerCase().includes(value)\n );\n break;\n }\n return listFilter;\n }\n GetFilteredSearchKeyV2(\n listTempAll: any[],\n key: string,\n value: any,\n operatorId: number,\n subKey: any = null\n ) {\n if (value.length == 0) return listTempAll;\n if (!listTempAll || !key || value == null) return [];\n let listFilter = listTempAll;\n value = value.toString().toLowerCase();\n const words = value.includes(\"&\")\n ? value.split(\"&\").filter(Boolean)\n : [value];\n const filterFunction = (item: any) => {\n const itemValue = item[key]?.toString()?.toLowerCase();\n switch (operatorId) {\n case 0: // 'Contains'\n return words.every((word: any) => itemValue?.includes(word));\n case 1: // 'Exact'\n return itemValue === value;\n case 2: // 'Begin'\n return itemValue?.startsWith(value);\n case 3: // 'Ends'\n return itemValue?.endsWith(value);\n default:\n return itemValue?.includes(value);\n }\n };\n if (subKey) {\n // Filtrar primero a nivel de sublista\n listFilter = listFilter.map((filter) => {\n return {\n ...filter,\n [subKey]: filter[subKey]?.filter((item: any) => filterFunction(item)),\n };\n });\n // Filtrar luego la lista principal basado en si la sublista contiene elementos\n listFilter = listFilter.filter((filter) => filter[subKey].length > 0);\n } else {\n // Filtrar solo la lista principal\n listFilter = listFilter.filter(filterFunction);\n }\n return listFilter;\n }\n public TransformArrayToHashTable<T, TypeKey extends string | number>(\n arr: T[],\n getKey: (p: T) => TypeKey\n ): { [key in TypeKey]: T } {\n //example of Use:\n // this.transformArrayToHashTable<any,string>([{id:1,prop1:\"prop1Value\"}],(o)=>o.id.toString())\n const hashTable: { [key in TypeKey]: T } = {} as { [key in TypeKey]: T };\n arr.forEach((object: T) => (hashTable[getKey(object)] = object));\n return hashTable;\n }\n public TransformArrayToMap<TypeKey, T>(\n arr: T[],\n getKey: (p: T) => TypeKey\n ): Map<TypeKey, T> {\n //example of Use:\n // this.transformArrayToMap<string,any>([{id:1,prop1:\"prop1Value\"}],(o)=>o.id.toString())\n return new Map(arr.map((obj) => [getKey(obj), obj]));\n }\n UrlHasQaUatSubdomain() {\n const { hostname } = new URL(window.location.href);\n const [subdomain] = hostname.split(\".\");\n return [\"qa\", \"uat\"].includes(subdomain);\n }\n UrlHasQaSubdomain() {\n const { hostname } = new URL(window.location.href);\n const [subdomain] = hostname.split(\".\");\n return [\"qa\"].includes(subdomain);\n }\n GetLastSegmentUrl(): string {\n const segments = this.location.path().split(\"/\");\n const lastSegment = segments[segments.length - 1];\n const numberMappings: { [key: string]: string } = {\n \"0\": \"intelica-allocated\",\n \"1\": \"penalty-summary\",\n };\n // Verifica si lastSegment es un número y si tiene un mapeo correspondiente\n if (\n !isNaN(Number(lastSegment)) &&\n numberMappings.hasOwnProperty(lastSegment)\n )\n return numberMappings[lastSegment];\n else return lastSegment;\n }\n OnChangeMultiple($event: any, selectDescription: string): void {\n let select = $event != null ? $event.element.ej2_instances[0] : null;\n if (select?.value.length > 0) {\n select.viewWrapper.innerHTML = `${select.value.length} ${selectDescription}`;\n }\n }\n RemoveParamsAndSegments(url: string): string {\n // Remover parámetros de consultanom\n const urlWithoutParams = url.split(\"?\")[0];\n // Remover segmentos de ruta dinámicos\n const regex = /\\/\\d+(?=\\/|$)(?!$)/g; // Encuentra segmentos de ruta que consisten en números\n return urlWithoutParams.replace(regex, \"\");\n }\n OpenActionMenu() {\n this.openActionMenu$.next(true);\n }\n AbbreviateNumber(number: number, fixed: number = 2): string {\n if (number == 0.0 || number == 0 || number == 0.0) {\n return \"0\";\n }\n let formatCant = \"\";\n let numberOriginal = number;\n if (number < 0) {\n number = Math.abs(number);\n }\n if (number >= 1000 && number < 1000000) {\n number = parseFloat((number / 1000).toFixed(fixed));\n formatCant = \" K\";\n } else if (number >= 1000000 && number < 1000000000) {\n number = parseFloat((number / 1000000).toFixed(fixed));\n formatCant = \" M\";\n } else if (number >= 1000000000 && number <= 1000000000000) {\n number = parseFloat((number / 1000000000).toFixed(fixed));\n formatCant = \" B\";\n } else {\n number = this.NumberFormatByNumberCriteria(number, fixed);\n }\n return numberOriginal < 0\n ? `(${number}${formatCant})`\n : `${number}${formatCant}`;\n }\n NumberFormatByNumberCriteria(number: number, fixed: number = 4): any {\n const rounded = (\n Math.round(number * Math.pow(10, fixed)) / Math.pow(10, fixed)\n ).toFixed(fixed);\n return rounded;\n }\n FormatPercentage(number: number, decimal: number = 2) {\n let numberInit = number;\n if (number < 0) number = Math.abs(number);\n number = parseFloat(number.toFixed(decimal));\n let finalNumber = `${number.toLocaleString(\"en-US\")}%`;\n return numberInit < 0 ? `(${finalNumber})` : `${finalNumber}`;\n }\n GetMonthName(monthIndex: number, lang: \"en\" | \"es\" = \"en\"): string {\n return this.months[lang][monthIndex];\n }\n FormatNumberWithSuffix(number: number, decimalPlaces: number = 0): string {\n if (number === 0) {\n return \"0\";\n }\n const isNegative = number < 0;\n const absoluteValue = Math.abs(number);\n const scaledNumber = parseFloat(\n (absoluteValue / 1000).toFixed(decimalPlaces)\n ).toLocaleString(\"en-US\");\n const suffix = \" K\";\n\n return isNegative\n ? `(${scaledNumber}${suffix})`\n : `${scaledNumber}${suffix}`;\n }\n //SYNFCUNTION\n GenerateGUID(): string {\n let uuid = \"\",\n i,\n random;\n for (i = 0; i < 32; i++) {\n random = (Math.random() * 16) | 0;\n if (i === 8 || i === 12 || i === 16 || i === 20) {\n uuid += \"-\";\n }\n uuid += (i === 12 ? 4 : i === 16 ? (random & 3) | 8 : random).toString(\n 16\n );\n }\n return uuid;\n }\n AttachDataLabelClickEvent(\n chartElementId: string,\n dataArray: any[],\n onClickCallback: (clickedData: any) => void\n ): void {\n const chartElement = document.getElementById(chartElementId);\n if (!chartElement) {\n return;\n }\n const dataLabels = chartElement.querySelectorAll('[id*=\"_DataLabel_\"]');\n const dataLabelsArray = Array.prototype.slice.call(\n dataLabels\n ) as HTMLElement[];\n dataLabelsArray.forEach((label, index) => {\n // Calcula el índice ajustado para obtener el dato correcto\n const adjustedIndex = index % dataArray.length;\n\n label.addEventListener(\"click\", () => {\n const clickedData = dataArray[adjustedIndex];\n if (clickedData) {\n onClickCallback(clickedData);\n }\n });\n });\n }\n FormatNumberAbsolute(number: number) {\n const isNegative = number < 0;\n if (number < 0) {\n number = Math.abs(number);\n }\n\n let finalNumber = `${number.toLocaleString(\"en-US\")}`;\n return isNegative ? `(${finalNumber})` : `${finalNumber}`;\n }\n SortRecursive(data: any[], column: any, criteria: string) {\n return _.orderBy(\n data.map((item) => {\n Object.keys(item).forEach((key) => {\n if (Array.isArray(item[key])) {\n item[key] = this.SortRecursive(item[key], column, criteria);\n }\n });\n return item;\n }),\n [\n (elm: any) => {\n let value = elm[column];\n if (value == null) {\n value = \"\";\n }\n if (typeof value === \"string\") {\n const normalized = value.trim().toLowerCase();\n const startsWithSpecial = /^[^a-z0-9]/i.test(normalized);\n return startsWithSpecial ? `~${normalized}` : normalized;\n }\n return value;\n },\n ],\n [criteria as \"asc\" | \"desc\"]\n );\n }\n SortRecursivePrimeNg(data: any[], column: any, criteria: string) {\n return _.orderBy(\n data.map((item) => {\n Object.keys(item).forEach((key) => {\n if (Array.isArray(item[key])) {\n item[key] = this.SortRecursive(item[key], column, criteria);\n }\n });\n return item;\n }),\n [\n (elm: any) => {\n let value = elm[column];\n if (\n value == null ||\n (typeof value === \"string\" && value.trim() === \"\")\n ) {\n return \"___0\";\n }\n if (typeof value === \"string\") {\n const normalized = value.trim().toLowerCase();\n const startsWithSpecial = /^[^a-z0-9]/i.test(normalized);\n if (startsWithSpecial) {\n return `___1${normalized}`;\n }\n return `___2${normalized}`;\n }\n return `___2${value}`;\n },\n ],\n [criteria as \"asc\" | \"desc\"]\n );\n }\n SortRecursiveNumber(data: any[], column: any, criteria: string) {\n return _.orderBy(\n data.map((item) => {\n Object.keys(item).forEach((key) => {\n if (Array.isArray(item[key])) {\n item[key] = this.SortRecursiveNumber(item[key], column, criteria);\n }\n });\n return item;\n }),\n [\n (elm: any) => {\n let value = elm[column];\n if (value == null || value === \"\") {\n return Number.NEGATIVE_INFINITY;\n }\n if (typeof value === \"number\") {\n return value;\n }\n if (!isNaN(Number(value))) {\n return Number(value);\n }\n return Number.NEGATIVE_INFINITY;\n },\n ],\n [criteria as \"asc\" | \"desc\"]\n );\n }\n\n IsDateFormat(value: any): boolean {\n return (\n typeof value === \"string\" && /^\\d{1,2}\\/\\d{1,2}\\/\\d{2,4}$/.test(value)\n );\n }\n\n SortRecursiveDate(data: any[], column: any, criteria: string) {\n return _.orderBy(\n data.map((item) => {\n Object.keys(item).forEach((key) => {\n if (Array.isArray(item[key])) {\n item[key] = this.SortRecursiveDate(item[key], column, criteria);\n }\n });\n return item;\n }),\n [\n (elm: any) => {\n let value = elm[column];\n if (value == null || value === \"\") {\n return Number.NEGATIVE_INFINITY;\n }\n const dateValue = new Date(value);\n if (isNaN(dateValue.getTime())) {\n return Number.NEGATIVE_INFINITY;\n }\n return dateValue.getTime();\n },\n ],\n [criteria as \"asc\" | \"desc\"]\n );\n }\n}\n","import { ContentChild, Directive, Input, TemplateRef } from \"@angular/core\";\n@Directive({ selector: \"column\" })\nexport class ColumnComponent<T = any> {\n @Input() field!: string;\n @Input() header!: string;\n @Input() sortable: boolean = false;\n @Input() width?: string;\n @Input() className?: string;\n @Input() headerTooltip: string = \"\";\n @Input() headerTooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n @Input() tooltip: string = \"\";\n @Input() tooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n @Input() showIndex: boolean = false;\n @Input() showHeader: boolean = true;\n @Input() minWidth?: string;\n @Input() isChecboxColumn: boolean = false;\n //@Input() isGrouped: boolean = false;\n //@Input() isGroup: boolean = false;\n @Input() formatType:\n | \"string\"\n | \"date\"\n | \"date2\"\n | \"date3\"\n | \"time\"\n | \"decimal2\"\n | \"decimal4\"\n | \"tarifa\" = \"string\";\n @ContentChild(TemplateRef) templateRef?: TemplateRef<any>;\n}\n@Directive({ selector: \"columnGroup\" })\nexport class ColumnGroupComponent<T = any> {\n @Input() field!: string;\n @Input() header!: string;\n @Input() sortable: boolean = false;\n @Input() width?: string;\n @Input() minWidth?: string;\n @Input() className?: string;\n @Input() headerTooltip: string = \"\";\n @Input() headerTooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n // @Input() tooltip: string = \"\";\n // @Input() tooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n // @Input() showIndex: boolean = false;\n // @Input() isGrouped: boolean = false;\n // @Input() isGroup: boolean = false;\n @Input() colspan: number = 1;\n @Input() rowspan: number = 1;\n @Input() level: number = 0;\n @Input() formatType:\n | \"string\"\n | \"date\"\n | \"date2\"\n | \"date3\"\n | \"time\"\n | \"decimal2\"\n | \"decimal4\"\n | \"tarifa\" = \"string\";\n}\n@Directive({ selector: \"rowResumenComponent\" })\nexport class RowResumenComponent<T = any> {\n @Input() field!: string;\n @Input() className?: string;\n // @Input() width?: string;\n // @Input() className?: string;\n // @Input() headerTooltip: string = \"\";\n // @Input() headerTooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n // @Input() tooltip: string = \"\";\n // @Input() tooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n // @Input() showIndex: boolean = false;\n // @Input() isGrouped: boolean = false;\n // @Input() isGroup: boolean = false;\n @Input() colspan: number = 1;\n @Input() rowspan: number = 1;\n @ContentChild(TemplateRef) templateRef?: TemplateRef<any>;\n @Input() formatType:\n | \"string\"\n | \"date\"\n | \"date2\"\n | \"date3\"\n | \"time\"\n | \"decimal2\"\n | \"decimal4\"\n | \"tarifa\" = \"string\";\n}\n\n// @Input() headerText: string | undefined;\n// @Input() field: string;\n// @Input() fieldDetail: string;\n// @Input() className: string;\n// @Input() order: boolean = false;\n// @Input() width: string;\n// @Input() isNumber: boolean = false;\n// @Input() isRowNumber: boolean = false;\n// @Input() isPercent: boolean = false;\n// @Input() isInteger: boolean = false;\n// @Input() setContainer: boolean = true;\n// @Input() hideRowInDetail: boolean = false;\n// @Input() prefix: string;\n// @Input() headerWidth: number = 0;\n// @Input() headerLineBreak: boolean = false;\n// @Input() numberFormat: string = '1.2-2';\n// @Input() columnHasDateFormat: boolean = false;\n// @Input() dateFormat: string = '';\n// @Input() isSelectableColum: boolean = false;\n// @Input() isHeaderClickable: boolean = false;\n// @Input() classNameHeader: string = '';\n// @Input() isActiveHeader: boolean = false;\n// @Input() classNameActiveHeader: string = '';\n// @Input() isCellClickable: boolean = false;\n// @Input() isAveragePercent: boolean = false;\n// @Input() visible: boolean = true;\n// @Input() hasAmountNaming: boolean = false;\n// @Input() computedField: string;\n// @Input() isOrderedDesc: boolean = false;\n// @Input() isOrderedAsc: boolean = false;\n// @Input() containDetails: boolean = false;\n// @Input() isChecboxColumn: boolean = false;\n// columnsForCompare: string = '';\n// @ContentChild('detail') detail!: any;\n// @ContentChild('content') content!: any;\n","import { CommonModule, DatePipe } from \"@angular/common\";\nimport { AfterContentInit, Component, ContentChild, ContentChildren, EventEmitter, inject, Input, OnChanges, Output, QueryList, TemplateRef } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { BadgeModule } from \"primeng/badge\";\nimport { CheckboxModule } from \"primeng/checkbox\";\nimport { IconFieldModule } from \"primeng/iconfield\";\nimport { InputIcon } from \"primeng/inputicon\";\nimport { InputNumber } from \"primeng/inputnumber\";\nimport { InputText, InputTextModule } from \"primeng/inputtext\";\nimport { Paginator } from \"primeng/paginator\";\nimport { Select } from \"primeng/select\";\nimport { TableModule } from \"primeng/table\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { FormatCellPipe } from \"../../pipes/formatCell.pipe\";\nimport { TermPipe } from \"../../pipes/term.pipes\";\nimport { GlobalTermService } from \"../../services/globalTerm.service\";\nimport { SharedService } from \"../../services/shared.service\";\nimport { SearchInputModel } from \"../search/model/search.model\";\nimport { ColumnComponent, ColumnGroupComponent, RowResumenComponent } from \"./column.component\";\nimport { SortFieldModel } from \"./model/sort.model\";\n\n@Component({\n\tselector: \"intelica-table\",\n\tstandalone: true,\n\timports: [\n\t\tCommonModule,\n\t\tIconFieldModule,\n\t\tInputIcon,\n\t\tInputText,\n\t\tInputTextModule,\n\t\tInputNumber,\n\t\tPaginator,\n\t\tTableModule,\n\t\tSelect,\n\t\tBadgeModule,\n\t\tTooltipModule,\n\t\tTermPipe,\n\t\tCheckboxModule,\n\t\tFormsModule,\n\t\tFormatCellPipe,\n\t],\n\ttemplateUrl: \"./table.component.html\",\n\tproviders: [FormatCellPipe, DatePipe],\n})\nexport class TableComponent<T> implements OnChanges, AfterContentInit {\n\tprivate readonly SharedService = inject(SharedService);\n\treadonly GlobalTermService = inject(GlobalTermService);\n\t@Input() ComponentId: string = \"\";\n\t@Input() ListData: T[] = [];\n\t@Input() ShowRowPerPage: boolean = true;\n\t@Input() ShowSearch: boolean = false;\n\t@Input() ShowPagination: boolean = false;\n\t@Input() RowsPerPage: number = 10;\n\t@Input() ShowCheckbox: boolean = false;\n\t@Input() ShowIndex: boolean = false;\n\t@Input() ListDataSelected: T[] = [];\n\t@Input() SelectedIdentifier: keyof T | null = null;\n\t@Input() ClassName: string = \"\";\n\t@Input() DefaultSortField: string = \"\";\n\t@Input() DefaultSortOrder: number = 1;\n\t@Input() scrollHeight: string = \"400px\";\n\t@Input() scrollable: boolean = false;\n\t@Input() AllowedPageSizes: number[] = [10, 25, 50, 100];\n\t@Input() tableStyle: { [klass: string]: any } = {};\n\tprivate _isTableDisabled = false;\n\tprivate _pendingUncheck = false;\n\tHeaderState: Record<string, { checked: boolean; indeterminate: boolean }> = {};\n\n\t@Input()\n\tset IsTableDisabled(val: boolean) {\n\t\tthis._isTableDisabled = val;\n\n\t\tif (val) {\n\t\t\tif (!this.ColumnList || this.ColumnList.length === 0) {\n\t\t\t\tthis._pendingUncheck = true;\n\t\t\t} else {\n\t\t\t\tthis.ListDataSelectedTemp = [];\n\t\t\t\tthis.ListDataSelectedFilter = [];\n\t\t\t\tthis.ExecuteSearch();\n\t\t\t}\n\t\t}\n\t}\n\tget IsTableDisabled() {\n\t\treturn this._isTableDisabled;\n\t}\n\n\tpublic recomputeHeaderState(field: string) {\n\t\tconst total = this.ListDataFilter.length;\n\t\tif (total === 0) {\n\t\t\tthis.HeaderState[field] = { checked: false, indeterminate: false };\n\t\t\treturn;\n\t\t}\n\t\tconst checked = this.ListDataFilter.filter(r => (r as any)[field] === true).length;\n\t\tthis.HeaderState[field] = {\n\t\t\tchecked: checked === total,\n\t\t\tindeterminate: checked > 0 && checked < total,\n\t\t};\n\t}\n\n\tonBodyCheckboxChange(field: string) {\n\t\tthis.recomputeHeaderState(field);\n\t}\n\n\tprivate refreshAllHeaderStates() {\n\t\tthis.ColumnList.filter(c => c.isChecboxColumn).forEach(c => this.recomputeHeaderState(c.field));\n\t}\n\t@Output() EmitSelectedItem = new EventEmitter<T[]>();\n\t@Output() EmitListDataFilter = new EventEmitter<T[]>();\n\t@Output() EmitSearchEvent = new EventEmitter<SearchInputModel>();\n\t@Output() EmitSortEvent = new EventEmitter<SortFieldModel[]>();\n\t@ContentChildren(ColumnComponent) Columns!: QueryList<ColumnComponent>;\n\t@ContentChildren(ColumnGroupComponent)\n\tColumnGroups!: QueryList<ColumnGroupComponent>;\n\t@ContentChildren(RowResumenComponent)\n\tRowResumenGroups!: QueryList<RowResumenComponent>;\n\t@ContentChild(\"additionalTemplate\") AdditionalTemplate?: TemplateRef<any>;\n\t@ContentChild(\"additionalExtendedTemplate\")\n\tAdditionalExtendedTemplate?: TemplateRef<any>;\n\t@ContentChild(\"additionalCentralTemplate\")\n\tAdditionalCentralTemplate?: TemplateRef<any>;\n\tColumnList: ColumnComponent[] = [];\n\tColumnGroupList: ColumnGroupComponent[] = [];\n\tRowResumenList: RowResumenComponent[] = [];\n\tListDataFilter: T[] = [];\n\tListDataTable: T[] = [];\n\tListDataSelectedFilter: T[] = [];\n\tListDataSelectedTemp: T[] = [];\n\tSearchInput: SearchInputModel = { searchText: \"\" } as SearchInputModel;\n\tTotalRecords: number = 0;\n\tCurrentPage: number = 1;\n\tSortOrder: number = 1;\n\tSortField: keyof T | null = null;\n\tMaxLevel: number = 0;\n\tLevels: number[] = [];\n\tngOnChanges(): void {\n\t\tif (!this.SortField && this.DefaultSortField) {\n\t\t\tthis.SortField = this.DefaultSortField as keyof T;\n\t\t\tthis.SortOrder = this.DefaultSortOrder;\n\t\t}\n\t\tthis.ExecuteSearch();\n\t\tthis.ValidateSelect();\n\t}\n\tngAfterContentInit() {\n\t\tthis.ColumnList = this.Columns?.toArray() ?? [];\n\t\tthis.ColumnGroupList = this.ColumnGroups?.toArray() ?? [];\n\t\tthis.RowResumenList = this.RowResumenGroups?.toArray() ?? [];\n\n\t\tconst levels = this.ColumnGroupList.map(c => c.level);\n\t\tthis.MaxLevel = levels.length ? Math.max(...levels) + 1 : 1;\n\t\tthis.Levels = Array.from({ length: this.MaxLevel }, (_, i) => i);\n\n\t\tthis.ColumnList.filter(c => c.isChecboxColumn).forEach(c => {\n\t\t\tif (!this.HeaderState[c.field]) {\n\t\t\t\tthis.HeaderState[c.field] = { checked: false, indeterminate: false };\n\t\t\t}\n\t\t});\n\n\t\tif (this._isTableDisabled && this._pendingUncheck) {\n\t\t\tthis.ListDataSelectedTemp = [];\n\t\t\tthis.ListDataSelectedFilter = [];\n\t\t\tthis._pendingUncheck = false;\n\t\t\tthis.ExecuteSearch();\n\t\t} else {\n\t\t\tthis.refreshAllHeaderStates();\n\t\t}\n\t}\n\tOnSort(field: string) {\n\t\tif (this.SortField === field) {\n\t\t\tthis.SortOrder *= -1;\n\t\t} else {\n\t\t\tthis.SortField = field as keyof T;\n\t\t\tthis.SortOrder = 1;\n\t\t}\n\t\tthis.SortPages();\n\t}\n\tOnPageChange(event: { page?: number; rows?: number } | number) {\n\t\tif (typeof event === \"number\") {\n\t\t\tthis.CurrentPage = event;\n\t\t} else {\n\t\t\tif (typeof event?.rows === \"number\") {\n\t\t\t\tthis.RowsPerPage = event.rows;\n\t\t\t}\n\t\t\tif (typeof event?.page === \"number\") {\n\t\t\t\tthis.CurrentPage = event.page + 1;\n\t\t\t}\n\t\t}\n\t\tthis.UpdatePages();\n\t}\n\tExecuteSearch(searchText?: string): void {\n\t\tif (typeof searchText === \"string\") {\n\t\t\tthis.SearchInput = { ...(this.SearchInput ?? {}), searchText };\n\t\t}\n\t\tthis.ListDataFilter = [...this.ListData];\n\t\tconst search = this.SearchInput?.searchText?.trim()?.toLowerCase();\n\t\tif (search) {\n\t\t\tthis.ListDataFilter = this.ListData.filter(item => {\n\t\t\t\tconst searchableText = Object.values(item as any)\n\t\t\t\t\t.filter(v => v !== null && v !== undefined)\n\t\t\t\t\t.join(\" \")\n\t\t\t\t\t.toLowerCase();\n\t\t\t\treturn searchableText.includes(search);\n\t\t\t});\n\t\t\tthis.CurrentPage = 1;\n\t\t}\n\t\tthis.SortPages();\n\t}\n\tSortPages() {\n\t\tif (!this.SortField) {\n\t\t\tthis.UpdatePages();\n\t\t\treturn;\n\t\t}\n\n\t\tconst order = this.SortOrder === 1 ? \"asc\" : \"desc\";\n\t\tconst field = this.SortField as keyof T;\n\n\t\tconst colConfig = this.ColumnList.find(c => c.field === field);\n\t\tif (!colConfig) {\n\t\t\tconsole.warn(\"Columna no encontrada:\", field);\n\t\t\tthis.UpdatePages();\n\t\t\treturn;\n\t\t}\n\t\tconst formatType = colConfig.formatType;\n\t\tconst sampleValue = this.ListDataFilter.find(item => item[field] !== null && item[field] !== undefined)?.[field];\n\t\tif (typeof sampleValue === \"number\") {\n\t\t\tthis.ListDataFilter = this.SharedService.SortRecursiveNumber([...this.ListDataFilter], field, order);\n\t\t} else {\n\t\t\tif (formatType === \"date\") {\n\t\t\t\tthis.ListDataFilter = this.SharedService.SortRecursiveDate([...this.ListDataFilter], field, order);\n\t\t\t} else {\n\t\t\t\tthis.ListDataFilter = this.SharedService.SortRecursivePrimeNg([...this.ListDataFilter], field, order);\n\t\t\t}\n\t\t}\n\t\tthis.UpdatePages();\n\t}\n\tUpdatePages() {\n\t\tif (this.ShowPagination) {\n\t\t\tthis.TotalRecords = this.ListDataFilter.length;\n\t\t\tconst start = (this.CurrentPage - 1) * this.RowsPerPage;\n\t\t\tconst end = start + this.RowsPerPage;\n\t\t\tthis.ListDataTable = this.ListDataFilter.slice(start, end);\n\t\t} else {\n\t\t\tthis.ListDataTable = this.ListDataFilter;\n\t\t}\n\t\tif (this.ShowCheckbox) this.ListDataSelectedFilter = [...this.ListDataSelectedTemp];\n\t\tthis.refreshAllHeaderStates();\n\t\tthis.EmitSearchValues();\n\t}\n\tValidateSelect() {\n\t\tif (!this.SelectedIdentifier && this.ShowCheckbox) {\n\t\t\tthis.ShowCheckbox = false;\n\t\t\treturn;\n\t\t}\n\t\tconst selectedIds = new Set(this.ListDataSelected.map(item => item[this.SelectedIdentifier as keyof T]));\n\t\tthis.ListDataSelectedTemp = this.ListData.filter(item => selectedIds.has(item[this.SelectedIdentifier as keyof T]));\n\t\tthis.ListDataSelectedFilter = [...this.ListDataSelectedTemp];\n\t}\n\tSelectAll(event: any) {\n\t\tif (!this.SelectedIdentifier && this.ShowCheckbox) return;\n\t\tif (event.checked) {\n\t\t\tconst idsSelected = new Set(this.ListDataSelectedTemp.map(item => item[this.SelectedIdentifier as keyof T]));\n\t\t\tthis.ListDataFilter.forEach(item => {\n\t\t\t\tif (!idsSelected.has(item[this.SelectedIdentifier as keyof T])) {\n\t\t\t\t\tthis.ListDataSelectedTemp.push(item);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tconst idsSelected = new Set(this.ListDataFilter.map(item => item[this.SelectedIdentifier as keyof T]));\n\t\t\tthis.ListDataSelectedTemp = this.ListDataSelectedTemp.filter(item => !idsSelected.has(item[this.SelectedIdentifier as keyof T]));\n\t\t}\n\t\tthis.ListDataSelectedFilter = [...this.ListDataSelectedTemp];\n\t\tthis.EmitSelectedItem.emit(this.ListDataSelectedTemp);\n\t}\n\tOnHeaderSelectionToggle(checked: boolean) {\n\t\tthis.SelectAll({ checked });\n\t}\n\tOnRowSelect(event: any) {\n\t\tif (!this.SelectedIdentifier && this.ShowCheckbox) return;\n\t\tconst selectedItem = event.data;\n\t\tconst exists = this.ListDataSelectedTemp.some(item => item[this.SelectedIdentifier as keyof T] === selectedItem[this.SelectedIdentifier as keyof T]);\n\t\tif (!exists) {\n\t\t\tthis.ListDataSelectedTemp.push(selectedItem);\n\t\t}\n\t\tthis.EmitSelectedItem.emit(this.ListDataSelectedTemp);\n\t}\n\tOnRowUnselect(event: any) {\n\t\tif (!this.SelectedIdentifier && this.ShowCheckbox) return;\n\t\tconst unselectedItem = event.data;\n\t\tthis.ListDataSelectedTemp = this.ListDataSelectedTemp.filter(item => item[this.SelectedIdentifier as keyof T] !== unselectedItem[this.SelectedIdentifier as keyof T]);\n\t\tthis.EmitSelectedItem.emit(this.ListDataSelectedTemp);\n\t}\n\tResetTable() {\n\t\tthis.CurrentPage = 1;\n\t\tthis.SearchInput = { ...(this.SearchInput ?? {}), searchText: \"\" };\n\t\tthis.ExecuteSearch();\n\t}\n\tEmitSearchValues() {\n\t\tthis.EmitListDataFilter.emit(this.ListDataFilter);\n\t\tthis.EmitSearchEvent.emit(this.SearchInput);\n\t\tthis.EmitSortEvent.emit([\n\t\t\t{\n\t\t\t\tsortOrder: this.SortOrder,\n\t\t\t\tsortField: this.SortField?.toString() ?? \"\",\n\t\t\t},\n\t\t]);\n\t}\n\tOnHeaderCheckboxChange(checked: boolean, field: string) {\n\t\tthis.ListDataFilter.forEach(r => ((r as any)[field] = checked));\n\n\t\tthis.HeaderState[field] = { checked, indeterminate: false };\n\t\tthis.UpdatePages();\n\t}\n\n\tprivate getFilteredSelectedCount(): number {\n\t\tif (!this.SelectedIdentifier || this.ListDataFilter.length === 0 || this.ListDataSelectedTemp.length === 0) return 0;\n\t\tconst selectedIds = new Set(this.ListDataSelectedTemp.map(item => item[this.SelectedIdentifier as keyof T]));\n\t\treturn this.ListDataFilter.filter(item => selectedIds.has(item[this.SelectedIdentifier as keyof T])).length;\n\t}\n\tget IsHeaderSelectionChecked(): boolean {\n\t\treturn this.ListDataFilter.length > 0 && this.getFilteredSelectedCount() === this.ListDataFilter.length;\n\t}\n\tget IsHeaderSelectionIndeterminate(): boolean {\n\t\tconst selectedCount = this.getFilteredSelectedCount();\n\t\treturn selectedCount > 0 && selectedCount < this.ListDataFilter.length;\n\t}\n\n\tFilterData(field: string) {\n\t\tlet c = this.ListData.filter(item => (item as Record<string, boolean>)[field]);\n\t}\n\tIsInderteminate(column: string) {\n\t\tconst rowsChek = this.ListData.filter(item => (item as Record<string, boolean>)[column]).length;\n\t\tconst element = [...document.querySelectorAll(\"[data-check]\")].find(x => x.getAttribute(\"data-check\") == column);\n\t\tif (element == undefined) return;\n\t\tif (rowsChek > 0 && rowsChek < this.ListData.length) {\n\t\t\telement.setAttribute(\"class\", \"prCheckbox--indeterminate\");\n\t\t} else {\n\t\t\telement.removeAttribute(\"class\");\n\t\t}\n\t}\n\tOnRowsPerPageChange(value: number) {\n\t\tthis.RowsPerPage = value;\n\t\tthis.CurrentPage = 1;\n\t\tthis.UpdatePages();\n\t}\n\tResetTableSelected() {\n\t\tthis.ListDataSelectedTemp = [];\n\t\tthis.ListDataSelectedFilter = [...this.ListDataSelectedTemp];\n\t}\n\tClearSearch() {\n\t\tthis.SearchInput.searchText = \"\";\n\t}\n\n\tget TotalPages(): number {\n\t\treturn Math.ceil(this.TotalRecords / this.RowsPerPage);\n\t}\n\tonChangeSelectPage(event: any) {\n\t\tconst eventValue: string = event.target.value;\n\t\tif (eventValue === \"\" || isNaN(parseInt(eventValue)) || eventValue === \"0\" || eventValue.indexOf(\"-\") >= 0) {\n\t\t\tthis.CurrentPage = 1;\n\t\t\tthis.UpdatePages();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.CurrentPage = parseInt(eventValue);\n\n\t\tif (this.CurrentPage > this.TotalPages) {\n\t\t\tthis.CurrentPage = this.TotalPages;\n\t\t}\n\t\tthis.UpdatePages();\n\t}\n\tget RenderPanel(): boolean {\n\t\treturn Boolean(this.AdditionalTemplate) || this.ShowSearch || Boolean(this.AdditionalCentralTemplate) || Boolean(this.AdditionalExtendedTemplate);\n\t}\n}\n","<div class=\"prTable\">\n\t@if (RenderPanel) {\n\t\t<div class=\"\">\n\t\t\t<div class=\"prCard__row justify-content-end\">\n\t\t\t\t<div class=\"prCard__actionflex\">\n\t\t\t\t\t@if (AdditionalTemplate) {\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"AdditionalTemplate\"></ng-container>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t\t@if (ShowSearch) {\n\t\t\t\t\t<div class=\"ptSearch searchTableGA\">\n\t\t\t\t\t\t<p-iconfield>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\tclass=\"prInputText\"\n\t\t\t\t\t\t\t\tpInputText\n\t\t\t\t\t\t\t\tplaceholder=\"{{ 'LBL_SEARCH_SELECT' | term: GlobalTermService.languageCode }}\"\n\t\t\t\t\t\t\t\t[(ngModel)]=\"SearchInput.searchText\"\n\t\t\t\t\t\t\t\t(keydown.enter)=\"ExecuteSearch()\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<p-inputicon>\n\t\t\t\t\t\t\t\t<button class=\"ptSearch__icon ptSearch__icon--close\">\n\t\t\t\t\t\t\t\t\t<i class=\"icon icon-cancel\" *ngIf=\"SearchInput.searchText\" (click)=\"ClearSearch()\"></i>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<span class=\"ptSearch__icon ptSearch__icon--divider\" *ngIf=\"SearchInput.searchText\"></span>\n\t\t\t\t\t\t\t\t<button class=\"ptSearch__icon ptSearch__icon--search\">\n\t\t\t\t\t\t\t\t\t<i class=\"icon icon-search\"></i>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</p-inputicon>\n\t\t\t\t\t\t</p-iconfield>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t@if (AdditionalCentralTemplate) {\n\t\t\t\t\t<div class=\"prTableTools__new prTableTools__new--right\">\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"AdditionalCentralTemplate\"></ng-container>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</div>\n\n\t\t\t@if (AdditionalExtendedTemplate) {\n\t\t\t\t<div class=\"prTableTools justify-content-start\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"AdditionalExtendedTemplate\"></ng-container>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t}\n\t<p-table\n\t\tclass=\"prTable\"\n\t\t[ngClass]=\"ClassName\"\n\t\t[value]=\"ListDataTable\"\n\t\tresponsiveLayout=\"scroll\"\n\t\t[(selection)]=\"ListDataSelectedFilter\"\n\t\t(onRowSelect)=\"OnRowSelect($event)\"\n\t\t(onRowUnselect)=\"OnRowUnselect($event)\"\n\t\t[sortField]=\"DefaultSortField\"\n\t\t[scrollable]=\"scrollable\"\n\t\t[scrollHeight]=\"scrollable ? scrollHeight : 'auto'\"\n\t\t[tableStyle]=\"tableStyle\"\n\t\t[sortOrder]=\"DefaultSortOrder\"\n\t>\n\t\t<ng-template pTemplate=\"header\">\n\t\t\t@for (level of Levels; track $index) {\n\t\t\t\t<tr>\n\t\t\t\t\t@for (col of ColumnGroupList; track $index) {\n\t\t\t\t\t\t@if (col.level === level) {\n\t\t\t\t\t\t\t<th [attr.colspan]=\"col.colspan\" [attr.rowspan]=\"col.rowspan\" [pSortableColumn]=\"col.sortable ? col.field : ''\" [style.min-width]=\"col.minWidth\" (click)=\"col.sortable && OnSort(col.field)\">\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<span tooltipStyleClass=\"prTooltip\" [pTooltip]=\"col.headerTooltip\" [tooltipPosition]=\"col.headerTooltipPosition || 'top'\">\n\t\t\t\t\t\t\t\t\t\t{{ col.header }}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<p-sortIcon *ngIf=\"col.sortable\" [field]=\"col.field\"></p-sortIcon>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t@if (ShowCheckbox && level === 0 && ColumnGroupList.length != 0) {\n\t\t\t\t\t\t<th class=\"text-center\" style=\"width: 4%\" [attr.rowspan]=\"MaxLevel === 1 ? 2 : MaxLevel\">\n\t\t\t\t\t\t\t<p-checkbox\n\t\t\t\t\t\t\t\tclass=\"prCheckbox\"\n\t\t\t\t\t\t\t\t[binary]=\"true\"\n\t\t\t\t\t\t\t\t(click)=\"$event.stopPropagation()\"\n\t\t\t\t\t\t\t\t[ngModel]=\"IsHeaderSelectionChecked\"\n\t\t\t\t\t\t\t\t(ngModelChange)=\"OnHeaderSelectionToggle($event)\"\n\t\t\t\t\t\t\t\t[disabled]=\"IsTableDisabled || ListDataFilter.length === 0\"\n\t\t\t\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t\t\t\t'prCheckbox--indeterminate': IsHeaderSelectionIndeterminate,\n\t\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\t></p-checkbox>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t}\n\t\t\t\t</tr>\n\t\t\t}\n\t\t\t<tr>\n\t\t\t\t@for (col of ColumnList; track $index) {\n\t\t\t\t\t@if (col.showHeader) {\n\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t[class]=\"col.className\"\n\t\t\t\t\t\t\t[pSortableColumn]=\"!col.isChecboxColumn && col.sortable ? col.field : ''\"\n\t\t\t\t\t\t\t[style.width]=\"col.width\"\n\t\t\t\t\t\t\t[style.min-width]=\"col.minWidth\"\n\t\t\t\t\t\t\t(click)=\"!col.isChecboxColumn && col.sortable && OnSort(col.field)\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div class=\"prTable__header\">\n\t\t\t\t\t\t\t\t<span tooltipStyleClass=\"prTooltip\" [pTooltip]=\"col.headerTooltip\" [tooltipPosition]=\"col.headerTooltipPosition || 'top'\">\n\t\t\t\t\t\t\t\t\t{{ col.header }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t@if (!col.showIndex) {\n\t\t\t\t\t\t\t\t\t@if (col.isChecboxColumn) {\n\t\t\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\t\t\t<p-checkbox\n\t\t\t\t\t\t\t\t\t\t\tclass=\"prCheckbox\"\n\t\t\t\t\t\t\t\t\t\t\t[binary]=\"true\"\n\t\t\t\t\t\t\t\t\t\t\t(click)=\"$event.stopPropagation()\"\n\t\t\t\t\t\t\t\t\t\t\t[(ngModel)]=\"HeaderState[col.field].checked\"\n\t\t\t\t\t\t\t\t\t\t\t(ngModelChange)=\"OnHeaderCheckboxChange($event, col.field)\"\n\t\t\t\t\t\t\t\t\t\t\t[attr.data-check]=\"col.field\"\n\t\t\t\t\t\t\t\t\t\t\t[disabled]=\"IsTableDisabled\"\n\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t\t\t\t\t\t\t'prCheckbox--indeterminate': HeaderState[col.field].indeterminate,\n\t\t\t\t\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\t\t\t\t></p-checkbox>\n\t\t\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\t\t<p-sortIcon *ngIf=\"col.sortable\" [field]=\"col.field\"></p-sortIcon>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@if (ShowCheckbox && ColumnGroupList.length == 0) {\n\t\t\t\t\t<th class=\"text-center\" style=\"width: 4%\">\n\t\t\t\t\t\t<p-checkbox\n\t\t\t\t\t\t\tclass=\"prCheckbox\"\n\t\t\t\t\t\t\t[binary]=\"true\"\n\t\t\t\t\t\t\t(click)=\"$event.stopPropagation()\"\n\t\t\t\t\t\t\t[ngModel]=\"IsHeaderSelectionChecked\"\n\t\t\t\t\t\t\t(ngModelChange)=\"OnHeaderSelectionToggle($event)\"\n\t\t\t\t\t\t\t[disabled]=\"IsTableDisabled || ListDataFilter.length === 0\"\n\t\t\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t\t\t'prCheckbox--indeterminate': IsHeaderSelectionIndeterminate,\n\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t></p-checkbox>\n\t\t\t\t\t</th>\n\t\t\t\t}\n\t\t\t</tr>\n\t\t\t@if (RowResumenList.length && ListDataFilter.length) {\n\t\t\t\t<tr class=\"fixedRow\">\n\t\t\t\t\t@for (col of RowResumenList; track $index) {\n\t\t\t\t\t\t<td [ngClass]=\"col.className\" [attr.colspan]=\"col.colspan\" [attr.rowspan]=\"col.rowspan\">\n\t\t\t\t\t\t\t@if (col.templateRef) {\n\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"col.templateRef\"></ng-container>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t<ng-template #defaultContent></ng-template>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</td>\n\t\t\t\t\t}\n\t\t\t\t</tr>\n\t\t\t}\n\t\t</ng-template>\n\t\t<ng-template pTemplate=\"body\" let-rowData let-rowIndex=\"rowIndex\">\n\t\t\t<tr>\n\t\t\t\t@for (col of ColumnList; track $index) {\n\t\t\t\t\t<td [ngClass]=\"col.className\">\n\t\t\t\t\t\t@if (col.showIndex) {\n\t\t\t\t\t\t\t{{ rowIndex + 1 + (CurrentPage - 1) * RowsPerPage }}\n\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t@if (col.templateRef) {\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"col.templateRef; context: { $implicit: rowData }\"></ng-container>\n\t\t\t\t\t\t\t} @else if (col.isChecboxColumn) {\n\t\t\t\t\t\t\t\t<p-checkbox [binary]=\"true\" [(ngModel)]=\"rowData[col.field]\" (onChange)=\"onBodyCheckboxChange(col.field)\" [disabled]=\"IsTableDisabled\"></p-checkbox>\n\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t<span class=\"text-breakWord\" tooltipStyleClass=\"prTooltip\" [pTooltip]=\"col.tooltip\" [tooltipPosition]=\"col.tooltipPosition || 'top'\">\n\t\t\t\t\t\t\t\t\t{{ rowData[col.field] | formatCell: col.formatType }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t</td>\n\t\t\t\t}\n\t\t\t\t@if (ShowCheckbox) {\n\t\t\t\t\t<td class=\"text-center\">\n\t\t\t\t\t\t<p-tableCheckbox [value]=\"rowData\" class=\"prCheckbox\" />\n\t\t\t\t\t</td>\n\t\t\t\t}\n\t\t\t</tr>\n\t\t</ng-template>\n\t\t<ng-template #emptymessage>\n\t\t\t<tr>\n\t\t\t\t<td [attr.colspan]=\"ColumnList.length + (ShowCheckbox ? 1 : 0)\" class=\"text-center\">\n\t\t\t\t\t{{ \"Nodata\" | term: GlobalTermService.languageCode }}\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</ng-template>\n\t</p-table>\n\t<div class=\"d-flex justify-content-end\">\n\t\t@if (TotalRecords !== 0 && ShowPagination) {\n\t\t\t<div class=\"ptTablePaginator\">\n\t\t\t\t<p-paginator\n\t\t\t\t\tclass=\"prPaginator paginatorTableGA\"\n\t\t\t\t\t[first]=\"(CurrentPage - 1) * RowsPerPage\"\n\t\t\t\t\t[rows]=\"RowsPerPage\"\n\t\t\t\t\t[totalRecords]=\"TotalRecords\"\n\t\t\t\t\t(onPageChange)=\"OnPageChange($event)\"\n\t\t\t\t\t[showJumpToPageInput]=\"false\"\n\t\t\t\t\t[showCurrentPageReport]=\"false\"\n\t\t\t\t\t[showPageLinks]=\"false\"\n\t\t\t\t\t[showFirstLastIcon]=\"false\"\n\t\t\t\t\t[templateLeft]=\"templateLeft\"\n\t\t\t\t>\n\t\t\t\t\t<ng-template #previouspagelinkicon>\n\t\t\t\t\t\t<i class=\"icon icon-arrow-left paginatorArrowGA\"></i>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template #nextpagelinkicon>\n\t\t\t\t\t\t<i class=\"icon icon-arrow-right paginatorArrowGA\"></i>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template pTemplate=\"templateLeft\" let-state #templateLeft>\n\t\t\t\t\t\t@if (ShowRowPerPage) {\n\t\t\t\t\t\t\t<span>{{ \"ROWS_PER_PAGE\" | term: GlobalTermService.languageCode }}</span>\n\t\t\t\t\t\t\t<p-select\n\t\t\t\t\t\t\t\tpanelStyleClass=\"prSelect paginatorSelectTableGA\"\n\t\t\t\t\t\t\t\tclass=\"prSelect\"\n\t\t\t\t\t\t\t\t[options]=\"AllowedPageSizes\"\n\t\t\t\t\t\t\t\t[ngModel]=\"RowsPerPage\"\n\t\t\t\t\t\t\t\tappendTo=\"body\"\n\t\t\t\t\t\t\t\t(onChange)=\"OnRowsPerPageChange($event.value)\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t{{ \"Page\" | term: GlobalTermService.languageCode }}\n\t\t\t\t\t\t\t<p-inputnumber class=\"p-paginator-jtp-input\" inputId=\"integeronly\" [(ngModel)]=\"CurrentPage\" [allowEmpty]=\"false\" [min]=\"1\" (keyup.enter)=\"onChangeSelectPage($event)\" />\n\t\t\t\t\t\t\t{{ \"Of\" | term: GlobalTermService.languageCode }} {{ TotalPages }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</ng-template>\n\t\t\t\t</p-paginator>\n\t\t\t</div>\n\t\t}\n\t</div>\n</div>\n","import { Directive, ElementRef, HostListener } from \"@angular/core\";\n@Directive({\n\tselector: \"[positiveNumber]\",\n})\nexport class PositiveNumberDirective {\n\tconstructor(private el: ElementRef) {}\n\t@HostListener(\"input\", [\"$event\"]) onInputChange(event: Event) {\n\t\tconst initalValue = this.el.nativeElement.value;\n\t\tthis.el.nativeElement.value = initalValue.replace(/[^0-9]*/g, \"\");\n\t\tif (initalValue !== this.el.nativeElement.value) {\n\t\t\tevent.stopPropagation();\n\t\t}\n\t}\n}\n","import { Component, EventEmitter, inject, Input, OnChanges, Output, SimpleChanges } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { ButtonModule } from \"primeng/button\";\nimport { PositiveNumberDirective } from \"../../directives/positive-number.directive\";\nimport { GlobalTermService } from \"../../services/globalTerm.service\";\nimport { TermPipe } from \"../../pipes/term.pipes\";\nimport { CommonModule } from \"@angular/common\";\n\n@Component({\n\tselector: \"intelica-paginator\",\n\timports: [FormsModule, ButtonModule, PositiveNumberDirective, CommonModule, TermPipe],\n\ttemplateUrl: \"./paginator.component.html\",\n})\nexport class PaginatorComponent implements OnChanges {\n\treadonly GlobalTermService = inject(GlobalTermService);\n\t/**\n\t * Número total de elementos que se están paginando.\n\t * @type {number}\n\t */\n\t@Input() TotalItems: number = 0;\n\n\t/**\n\t * Página actual.\n\t * @type {number}\n\t */\n\t@Input() CurrentPage: number = 1;\n\n\t/**\n\t * Número de elementos por página.\n\t * @type {number}\n\t * @default 10\n\t */\n\t@Input() ItemsPerPage: number = 10;\n\n\t/**\n\t * Evento emitido cuando cambia la página.\n\t * @type {EventEmitter<any>}\n\t */\n\t@Output() PageChange: EventEmitter<any> = new EventEmitter();\n\n\t/**\n\t * Número total de páginas calculado internamente.\n\t * @type {number}\n\t */\n\tTotalPages: number = 1;\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tthis.TotalPageCalculator();\n\t}\n\n\tTotalPageCalculator() {\n\t\tthis.TotalPages = Math.ceil(this.TotalItems / this.ItemsPerPage);\n\t}\n\n\tGoToFirstPage() {\n\t\tthis.CurrentPage = 1;\n\t\tthis.EmitPageChange();\n\t}\n\n\tGoToPreviousPage() {\n\t\tconst pageNumber = Number(this.CurrentPage);\n\t\tthis.CurrentPage = isNaN(pageNumber) || pageNumber === 0 ? 1 : pageNumber;\n\t\tif (this.CurrentPage > 1) this.CurrentPage -= 1;\n\t\tthis.EmitPageChange();\n\t}\n\n\tGoToNextPage() {\n\t\tconst pageNumber = Number(this.CurrentPage);\n\t\tthis.CurrentPage = isNaN(pageNumber) ? 0 : pageNumber;\n\t\tif (this.CurrentPage < this.TotalPages) this.CurrentPage += 1;\n\t\tthis.EmitPageChange();\n\t}\n\n\tGoToLastPage() {\n\t\tthis.CurrentPage = this.TotalPages;\n\t\tthis.EmitPageChange();\n\t}\n\n\tEmitPageChange() {\n\t\tthis.PageChange.emit(this.CurrentPage);\n\t}\n\n\tonKeyUp(event: any) {\n\t\tconst eventValue: string = event.target.value;\n\t\tif (eventValue === \"\" || isNaN(parseInt(eventValue)) || eventValue === \"0\" || eventValue.indexOf(\"-\") >= 0) {\n\t\t\tthis.CurrentPage = 1;\n\t\t\tthis.EmitPageChange();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.CurrentPage = parseInt(eventValue);\n\n\t\tif (this.CurrentPage > this.TotalPages) {\n\t\t\tthis.CurrentPage = this.TotalPages;\n\t\t}\n\t\tthis.EmitPageChange();\n\t}\n}\n","<div \n\tclass=\"prPaginator\" \n\t[ngClass]=\"{\n\t\t'prPaginator--leftdis': CurrentPage === 1 || TotalItems === 0,\n\t\t'prPaginator--rightdis': CurrentPage === TotalPages || TotalItems === 0\n\t}\">\n\t<div class=\"prPaginator__controls\">\n\t\t<button pButton type=\"button\" class=\"prPaginator__btn prPaginator__btn--first\" [disabled]=\"CurrentPage === 1 || TotalItems === 0\" (click)=\"GoToFirstPage()\"></button>\n\t\t<button pButton type=\"button\" class=\"prPaginator__btn prPaginator__btn--previous\" [disabled]=\"CurrentPage === 1 || TotalItems === 0\" (click)=\"GoToPreviousPage()\"></button>\n\t\t<span class=\"prPaginator__label--left\">{{ \"Previous\" | term : GlobalTermService.languageCode }}</span>\n\t\t<input pInputText type=\"text\" [disabled]=\"TotalItems === 0\" (keydown.enter)=\"$event.preventDefault()\" [(ngModel)]=\"CurrentPage\" positiveNumber class=\"prPaginator__input\" (keyup.enter)=\"onKeyUp($event)\" />\n\t\t<span class=\"prPaginator__total\">{{ \"Of\" | term : GlobalTermService.languageCode }} {{ TotalPages }}</span>\n\t\t<span class=\"prPaginator__label--right\">{{ \"Next\" | term : GlobalTermService.languageCode }}</span>\n\t\t<button pButton type=\"button\" class=\"prPaginator__btn prPaginator__btn--next\" [disabled]=\"CurrentPage === TotalPages || TotalItems === 0\" (click)=\"GoToNextPage()\"></button>\n\t\t<button pButton type=\"button\" class=\"prPaginator__btn prPaginator__btn--last\" [disabled]=\"CurrentPage === TotalPages || TotalItems === 0\" (click)=\"GoToLastPage()\"></button>\n\t</div>\n</div>\n","export enum SearchInputEnum {\n\tOperatorId = \"operatorId\",\n\tFieldId = \"fieldId\",\n\tSearchText = \"searchText\",\n}\n","import { Component, EventEmitter, forwardRef, inject, Input, OnDestroy, OnInit, Output } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule, FormBuilder, FormGroup, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { RadioButtonModule } from \"primeng/radiobutton\";\nimport { Popover } from \"primeng/popover\";\nimport { InputText } from \"primeng/inputtext\";\nimport { CommonModule } from \"@angular/common\";\nimport { Subscription } from \"rxjs\";\nimport { SearchInputModel } from \"./model/search.model\";\nimport { SearchInputEnum } from \"./enums/search.enum\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { TermPipe } from \"../../pipes/term.pipes\";\nimport { GlobalTermService } from \"../../services/globalTerm.service\";\n\n@Component({\n\tselector: \"intelica-search\",\n\timports: [FormsModule, ReactiveFormsModule, RadioButtonModule, Popover, InputText, CommonModule, TooltipModule, TermPipe],\n\ttemplateUrl: \"./search.component.html\",\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => SearchComponent),\n\t\t},\n\t],\n\t// styleUrl: \"./search.component.css\",\n})\nexport class SearchComponent implements OnDestroy, OnInit {\n\treadonly GlobalTermService = inject(GlobalTermService);\n\t/**\n\t * Indica el componente del que proviene.\n\t * @type {string}\n\t */\n\t@Input() ComponentId: string = \"\";\n\t@Input() ShowTooltip: boolean = false;\n\n\t/**\n\t * Opciones para campos de búsqueda.\n\t * @type {{ id: number; value: string }[]}\n\t */\n\t@Input() SearchFieldOptions!: { id: number; value: string }[];\n\n\t/**\n\t * Indica si realizar la búsqueda al soltar una tecla.\n\t * @type {boolean}\n\t */\n\t@Input() SearchOnKeyup!: boolean;\n\n\t/**\n\t * @deprecated No debe ser utilizado. Es sólo para uso interno y no para módulos.\n\t * @type {boolean}\n\t * @default false\n\t */\n\t@Input() SimpleSearchInput: boolean = false;\n\n\t/**\n\t * Placeholder para el componente de búsqueda.\n\t * @type {string}\n\t */\n\t@Input() Placeholder: string = \"\";\n\n\t/**\n\t * Evento emitido al realizar una búsqueda.\n\t * @type {EventEmitter<{ operatorId: number; operatorText: string, fieldId: number, fieldText: string, searchText: string }>}\n\t */\n\t@Output(\"OnSearch\") OnSearchEvent = new EventEmitter<SearchInputModel>();\n\n\tprivate readonly FormBuilder = inject(FormBuilder);\n\n\t// Option!: string;\n\t// Placeholder!: string;\n\n\t/**\n\t * Indica si el dropdown está abierto\n\t * @type {boolean}\n\t * @default false\n\t */\n\tIsDropdownOpen: boolean = false;\n\n\t/**\n\t * Formulario para manejar los parámetros de búsqueda\n\t * @type {FormGroup}\n\t */\n\tSearchForm!: FormGroup;\n\n\t/**\n\t * Suscripción a los valores del formulario.\n\t * @type {Subscription}\n\t */\n\tFormValuesSubscription!: Subscription;\n\n\t/**\n\t * Opciones para operadores de búsqueda.\n\t * @type {{ id: number; value: string }[]}\n\t */\n\tSearchOperatorOptions!: { id: number; value: string }[];\n\n\t/**\n\t * Función llamada cuando cambia el valor del campo de búsqueda.\n\t * @type {() => void}\n\t */\n\tOnChange: (value: SearchInputModel) => void = () => {};\n\n\t/**\n\t * Función llamada cuando el componente de búsqueda es tocado.\n\t * @type {() => void}\n\t */\n\tOnTouched: () => void = () => {};\n\n\tconstructor() {}\n\n\tngOnInit(): void {\n\t\tthis.SearchForm = this.FormBuilder.group({\n\t\t\toperatorId: 0,\n\t\t\tfieldId: 0,\n\t\t\tsearchText: \"\",\n\t\t});\n\n\t\tthis.FormValuesSubscription = this.SearchForm.valueChanges.subscribe(value => {\n\t\t\tthis.OnChange(value);\n\t\t});\n\n\t\t//loadTerms\n\t\tif (this.Placeholder === \"\") this.Placeholder = \"SearchPlaceholder\";\n\t\tthis.SearchOperatorOptions ??= this.GetSearchOperatorOptions();\n\t\tthis.SearchFieldOptions ??= this.GetSearchFieldOptions();\n\n\t\tthis.InitializeForm();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.FormValuesSubscription.unsubscribe();\n\t}\n\n\tInitializeForm() {\n\t\tthis.SearchForm.setValue({\n\t\t\toperatorId: this.SearchOperatorOptions[0].id,\n\t\t\tfieldId: this.SearchFieldOptions.length > 0 ? this.SearchFieldOptions[0].id : 0,\n\t\t\tsearchText: \"\",\n\t\t});\n\t\tthis.OnSearch();\n\t}\n\n\tDropDownChange(isOpen: boolean) {\n\t\tthis.IsDropdownOpen = isOpen;\n\t}\n\n\tOnSearchEnter(): void {\n\t\tif (!this.SearchOnKeyup) this.OnSearch();\n\t}\n\n\tOnSearchKeyup() {\n\t\tif (this.SearchOnKeyup) this.OnSearch();\n\t}\n\n\tOnSearch(): void {\n\t\tconst value = this.SearchForm.value as SearchInputModel;\n\t\tvalue.operatorText = this.SearchOperatorOptions.find(o => o.id === value.operatorId)?.value || \"\";\n\t\tvalue.fieldText = this.SearchFieldOptions.find(f => f.id === value.fieldId)?.value || \"\";\n\t\tthis.OnChange(value);\n\t\tthis.OnTouched();\n\t\tthis.OnSearchEvent.emit(value);\n\t}\n\n\tClearSearchText(emitEvent: boolean = true) {\n\t\tthis.SearchForm.get(SearchInputEnum.SearchText)?.setValue(\"\");\n\t\tif (emitEvent) {\n\t\t\tthis.OnSearch();\n\t\t}\n\t}\n\n\tget HasSearchText(): boolean {\n\t\tconst searchText = this.SearchForm.get(SearchInputEnum.SearchText)?.value;\n\t\treturn searchText && searchText.length > 0;\n\t}\n\n\tGetSelectedOperatorValue(): string {\n\t\tconst selectedId = this.SearchForm.get(SearchInputEnum.OperatorId)?.value;\n\t\tconst selectedItem = this.SearchOperatorOptions?.find(item => item.id === selectedId);\n\t\treturn selectedItem ? selectedItem.value : \"\";\n\t}\n\n\tGetSelectedFieldValue(): string {\n\t\tconst selectedId = this.SearchForm.get(SearchInputEnum.FieldId)?.value;\n\t\tconst selectedItem = this.SearchFieldOptions?.find(item => item.id === selectedId);\n\t\treturn selectedItem ? selectedItem.value : \"\";\n\t}\n\n\tGetSelectedValues(): string {\n\t\treturn `${this.GetSelectedOperatorValue()}, ${this.GetSelectedFieldValue()}`;\n\t}\n\n\tSetSearchTextValue(text: string) {\n\t\tthis.SearchForm.get(SearchInputEnum.SearchText)?.setValue(text);\n\t}\n\n\tSetOperatorValue(value: number) {\n\t\tthis.SearchForm.get(SearchInputEnum.OperatorId)?.setValue(value ?? 0);\n\t}\n\n\tSetFieldValue(value: number) {\n\t\tthis.SearchForm.get(SearchInputEnum.FieldId)?.setValue(value ?? 0);\n\t}\n\n\tGetSearchOperatorOptions() {\n\t\treturn [\n\t\t\t{ id: 0, value: \"Contains\" },\n\t\t\t{ id: 1, value: \"Exact\" },\n\t\t\t{ id: 2, value: \"Begin\" },\n\t\t\t{ id: 3, value: \"Ends\" },\n\t\t];\n\t}\n\n\tGetSearchFieldOptions() {\n\t\treturn [\n\t\t\t{ id: 0, value: \"code\" },\n\t\t\t{ id: 1, value: \"name\" },\n\t\t];\n\t}\n}\n","<form [formGroup]=\"SearchForm\">\n\t<div class=\"prSearchBar\">\n\t\t<div class=\"prSearchBar__dropdown\" (click)=\"op.toggle($event)\" *ngIf=\"!SimpleSearchInput\">\n\t\t\t<div\n\t\t\t\tclass=\"prSearchBar__dropdown--label\"\n\t\t\t\t[pTooltip]=\"ShowTooltip ? (GetSelectedOperatorValue() | term : GlobalTermService.languageCode) + ', ' + (GetSelectedFieldValue() | term : GlobalTermService.languageCode) : ''\"\n\t\t\t\ttooltipPosition=\"top\"\n\t\t\t>\n\t\t\t\t{{ GetSelectedFieldValue() | term : GlobalTermService.languageCode }}\n\t\t\t</div>\n\t\t\t<div class=\"prSearchBar__dropdown--icon\">\n\t\t\t\t<i [ngClass]=\"IsDropdownOpen ? 'icon-arrow-up' : 'icon-arrow-down'\"></i>\n\t\t\t</div>\n\t\t</div>\n\t\t<p-popover #op (onShow)=\"DropDownChange(true)\" (onHide)=\"DropDownChange(false)\" class=\"prSearchBar__popover\">\n\t\t\t<div class=\"searchDropDown\">\n\t\t\t\t<div class=\"searchDropDown__group\">\n\t\t\t\t\t<div class=\"searchDropDown__title\">{{ \"Selectoperator\" | term : GlobalTermService.languageCode }}</div>\n\t\t\t\t\t<div class=\"searchDropDown__listOption\">\n\t\t\t\t\t\t@for ( option of SearchOperatorOptions ; track option.id; let index = $index){\n\t\t\t\t\t\t<div class=\"searchDropDown__option\">\n\t\t\t\t\t\t\t<p-radiobutton [inputId]=\"ComponentId + option.id\" class=\"prRadioButton\" [value]=\"option.id\" formControlName=\"operatorId\" (change)=\"OnSearchKeyup()\" />\n\t\t\t\t\t\t\t<label [for]=\"ComponentId + option.id\" class=\"prRadioButton--label\">{{ option.value | term : GlobalTermService.languageCode }}</label>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<hr />\n\t\t\t\t<div class=\"searchDropDown__group\">\n\t\t\t\t\t<div class=\"searchDropDown__title\">{{ \"Selectfield\" | term : GlobalTermService.languageCode }}</div>\n\t\t\t\t\t@for ( option of SearchFieldOptions ; track option.id; let index = $index){\n\t\t\t\t\t<div class=\"searchDropDown__option\">\n\t\t\t\t\t\t<p-radiobutton [inputId]=\"ComponentId + 'fieldId_' + option.id\" class=\"prRadioButton\" [value]=\"option.id\" formControlName=\"fieldId\" (change)=\"OnSearchKeyup()\" />\n\t\t\t\t\t\t<label [for]=\"ComponentId + 'fieldId_' + option.id\" class=\"prRadioButton--label\">{{ option.value | term : GlobalTermService.languageCode }}</label>\n\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</p-popover>\n\t\t<div class=\"prSearchBar__content\">\n\t\t\t<div class=\"prSearchBar__btn\">\n\t\t\t\t<button pButton type=\"button\" class=\"prSearchBar__btn-action\" (click)=\"ClearSearchText()\" *ngIf=\"HasSearchText\">\n\t\t\t\t\t<i class=\"icon-times\"></i>\n\t\t\t\t</button>\n\t\t\t\t<button pButton type=\"button\" class=\"prSearchBar__btn-action\" (click)=\"OnSearch()\">\n\t\t\t\t\t<i class=\"icon-search\"></i>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<input\n\t\t\t\tpInputText\n\t\t\t\ttype=\"text\"\n\t\t\t\tclass=\"prSearchBar__input\"\n\t\t\t\tformControlName=\"searchText\"\n\t\t\t\t[placeholder]=\"Placeholder | term : GlobalTermService.languageCode\"\n\t\t\t\t(keyup.enter)=\"OnSearchEnter()\"\n\t\t\t\t(keyup)=\"OnSearchKeyup()\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</form>\n","import { ContentChild, Directive, Input, TemplateRef } from \"@angular/core\";\n@Directive({ selector: \"column\" })\nexport class TreeColumnComponent<T = any> {\n @Input() field!: string;\n @Input() header!: string;\n @Input() sortable: boolean = false;\n @Input() width?: string;\n @Input() className?: string;\n @Input() headerTooltip: string = \"\";\n @Input() headerTooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n @Input() tooltip: string = \"\";\n @Input() tooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n @Input() showIndex: boolean = false;\n @Input() showHeader: boolean = true;\n @Input() minWidth?: string;\n @Input() isChecboxColumn: boolean = false;\n @Input() isExpansionColumn: boolean = false;\n @ContentChild(TemplateRef) templateRef?: TemplateRef<any>;\n @Input() formatType:\n | \"string\"\n | \"date\"\n | \"date2\"\n | \"date3\"\n | \"time\"\n | \"decimal2\"\n | \"decimal4\"\n | \"tarifa\" = \"string\";\n}\n@Directive({ selector: \"columnGroup\" })\nexport class TreeColumnGroupComponent<T = any> {\n @Input() field!: string;\n @Input() header!: string;\n @Input() sortable: boolean = false;\n @Input() width?: string;\n @Input() minWidth?: string;\n @Input() colspan: number = 1;\n @Input() rowspan: number = 1;\n @Input() level: number = 0;\n @Input() formatType:\n | \"string\"\n | \"date\"\n | \"date2\"\n | \"date3\"\n | \"time\"\n | \"decimal2\"\n | \"decimal4\"\n | \"tarifa\" = \"string\";\n}\n@Directive({ selector: \"rowResumenComponent\" })\nexport class RowResumenTreeComponent<T = any> {\n @Input() field!: string;\n @Input() className?: string;\n @Input() colspan: number = 1;\n @Input() rowspan: number = 1;\n @ContentChild(TemplateRef) templateRef?: TemplateRef<any>;\n\n @Input() formatType:\n | \"string\"\n | \"date\"\n | \"date2\"\n | \"date3\"\n | \"time\"\n | \"decimal2\"\n | \"decimal4\"\n | \"tarifa\" = \"string\";\n}\n","import { CommonModule, DatePipe } from \"@angular/common\";\nimport {\n AfterContentInit,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n} from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { BadgeModule } from \"primeng/badge\";\nimport { CheckboxModule } from \"primeng/checkbox\";\nimport { TableModule } from \"primeng/table\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { ButtonModule } from \"primeng/button\";\nimport { TermPipe } from \"../../pipes/term.pipes\";\nimport { GlobalTermService } from \"../../services/globalTerm.service\";\nimport { SharedService } from \"../../services/shared.service\";\nimport { PaginatorComponent } from \"../paginator/paginator.component\";\nimport { SearchComponent } from \"../search/search.component\";\nimport { SearchInputModel } from \"../search/model/search.model\";\nimport { SortFieldModel } from \"../table/model/sort.model\";\nimport {\n RowResumenTreeComponent,\n TreeColumnComponent,\n TreeColumnGroupComponent,\n} from \"./column.component\";\nimport { Select } from \"primeng/select\";\nimport { FormatCellPipe } from \"../../pipes/formatCell.pipe\";\n\n@Component({\n selector: \"intelica-tree-table\",\n standalone: true,\n imports: [\n CommonModule,\n SearchComponent,\n PaginatorComponent,\n Select,\n TableModule,\n BadgeModule,\n TooltipModule,\n TermPipe,\n CheckboxModule,\n FormsModule,\n ButtonModule,\n FormatCellPipe,\n ],\n templateUrl: \"./tree-table.component.html\",\n providers: [FormatCellPipe, DatePipe],\n})\nexport class TreeTableComponent<T> implements OnChanges, AfterContentInit {\n private readonly SharedService = inject(SharedService);\n readonly GlobalTermService = inject(GlobalTermService);\n\n @Input() ComponentId: string = \"\";\n @Input() ListData: T[] = [];\n @Input() ClassName: string = \"\";\n @Input() groupRowsBy: string = \"\";\n @Input() dataKey: string = \"\";\n @Input() DefaultSortField: string = \"\";\n @Input() DefaultSortOrder: number = 1;\n @Input() scrollHeight: string = \"400px\";\n @Input() scrollable: boolean = false;\n @Input() tableStyle: { [klass: string]: any } = {};\n @Input() ShowSearch: boolean = false;\n @Input() ShowPagination: boolean = false;\n @Input() RowsPerPage: number = 10;\n @Input() AllowedPageSizes: number[] = [10, 25, 50, 100];\n @Input() ShowCheckbox: boolean = false;\n @Input() ShowIndex: boolean = false;\n @Input() ShowSearchTooltip: boolean = false;\n @Input() ListDataSelected: T[] = [];\n @Input() SelectedIdentifier: keyof T | null = null;\n @Input() ListSearchOptions: any[] = [];\n @Input() ShowRowPerPage: boolean = true;\n\n @Output() EmitSelectedItem = new EventEmitter<T[]>();\n @Output() EmitListDataFilter = new EventEmitter<T[]>();\n @Output() EmitSearchEvent = new EventEmitter<SearchInputModel>();\n @Output() EmitSortEvent = new EventEmitter<SortFieldModel[]>();\n\n @ContentChildren(TreeColumnComponent)\n Columns!: QueryList<TreeColumnComponent>;\n @ContentChildren(TreeColumnGroupComponent)\n ColumnGroups!: QueryList<TreeColumnGroupComponent>;\n @ContentChildren(RowResumenTreeComponent)\n RowResumenGroups!: QueryList<RowResumenTreeComponent>;\n @ContentChild(\"additionalTemplate\") AdditionalTemplate?: TemplateRef<any>;\n @ContentChild(\"additionalCentralTemplate\")\n AdditionalCentralTemplate?: TemplateRef<any>;\n @ContentChild(\"additionalExtendedTemplate\")\n AdditionalExtendedTemplate?: TemplateRef<any>;\n\n @ViewChild(\"paginatorTable\") PaginatorTable?: PaginatorComponent;\n @ViewChild(\"searchTable\") SearchTable?: SearchComponent;\n\n ListDataFilter: T[] = [];\n ListDataTable: T[] = [];\n ListDataSelectedTemp: T[] = [];\n ColumnList: TreeColumnComponent[] = [];\n ColumnGroupList: TreeColumnGroupComponent[] = [];\n RowResumenList: RowResumenTreeComponent[] = [];\n MaxLevel: number = 0;\n Levels: number[] = [];\n SortOrder: number = 1;\n SortField: keyof T | null = null;\n TotalRecords: number = 0;\n CurrentPage: number = 1;\n SearchInput: SearchInputModel = {} as SearchInputModel;\n ListSearchOptionsSimple: { id: number; value: string }[] = [];\n\n ngOnChanges(): void {\n this.ListDataFilter = [...this.ListData];\n if (!this.SortField && this.DefaultSortField) {\n this.SortField = this.DefaultSortField as keyof T;\n this.SortOrder = this.DefaultSortOrder;\n }\n this.ExecuteSearch({});\n this.ValidateSelect();\n }\n \n\n ngAfterContentInit() {\n this.ColumnList = this.Columns.toArray();\n this.ColumnGroupList = this.ColumnGroups.toArray();\n this.RowResumenList = this.RowResumenGroups.toArray();\n this.MaxLevel = Math.max(...this.ColumnGroupList.map((c) => c.level)) + 1;\n this.Levels = Array.from({ length: this.MaxLevel }, (_, i) => i);\n }\n\n OnSort(field: string) {\n if (this.SortField === field) {\n this.SortOrder *= -1;\n } else {\n this.SortField = field as keyof T;\n this.SortOrder = 1;\n }\n this.SortPages();\n }\n\n OnPageChange(pageIndex: number) {\n this.CurrentPage = pageIndex;\n this.UpdatePages();\n }\n\n SortPages() {\n const order = this.SortOrder === 1 ? \"asc\" : \"desc\";\n const field = this.SortField as keyof T;\n const sampleValue = this.ListDataFilter.find(\n (item) => item[field] !== null && item[field] !== undefined\n )?.[field];\n if (typeof sampleValue === \"number\") {\n this.ListDataFilter = this.SharedService.SortRecursiveNumber(\n [...this.ListDataFilter],\n field,\n order\n );\n } else {\n this.ListDataFilter = this.SharedService.SortRecursivePrimeNg(\n [...this.ListDataFilter],\n field,\n order\n );\n }\n this.UpdatePages();\n }\n\n ExecuteSearch(event: any): void {\n this.ListDataFilter = [...this.ListData];\n this.SortPages();\n }\n\n OnHeaderCheckboxChange(event: any, field: string) {\n const checked: boolean = event.checked;\n if (!this.SelectedIdentifier) return;\n const idsSelected = new Set(\n this.ListDataFilter.map(\n (item) => item[this.SelectedIdentifier as keyof T]\n )\n );\n this.ListData.forEach((item) => {\n const id = item[this.SelectedIdentifier as keyof T];\n const exists = idsSelected.has(id);\n if (exists) {\n (item as Record<string, boolean>)[field] = checked;\n }\n });\n this.IsInderteminate(field);\n }\n\n IsInderteminate(column: string) {\n const rowsChek = this.ListData.filter(\n (item) => (item as Record<string, boolean>)[column]\n ).length;\n const element = [...document.querySelectorAll(\"[data-check]\")].find(\n (x) => x.getAttribute(\"data-check\") == column\n );\n if (element == undefined) return;\n if (rowsChek > 0 && rowsChek < this.ListData.length)\n element.setAttribute(\"class\", \"prCheckbox--indeterminate\");\n else element.removeAttribute(\"class\");\n }\n\n getLetter(index: number): string {\n if (index < 0 || index > 25) return \"\";\n return String.fromCharCode(97 + index);\n }\n\n UpdatePages() {\n if (this.ShowPagination) {\n this.TotalRecords = this.ListDataFilter.length;\n const start = (this.CurrentPage - 1) * this.RowsPerPage;\n const end = start + this.RowsPerPage;\n this.ListDataTable = this.ListDataFilter.slice(start, end);\n } else {\n this.ListDataTable = this.ListDataFilter;\n }\n this.EmitSearchValues();\n }\n\n ValidateSelect() {\n if (!this.SelectedIdentifier && this.ShowCheckbox) {\n this.ShowCheckbox = false;\n return;\n }\n const selectedIds = new Set(\n this.ListDataSelected.map(\n (item) => item[this.SelectedIdentifier as keyof T]\n )\n );\n this.ListDataSelectedTemp = this.ListData.filter((item) =>\n selectedIds.has(item[this.SelectedIdentifier as keyof T])\n );\n }\n\n SelectAll(event: any) {\n if (!this.SelectedIdentifier && this.ShowCheckbox) return;\n if (event.checked) {\n const idsSelected = new Set(\n this.ListDataSelectedTemp.map(\n (item) => item[this.SelectedIdentifier as keyof T]\n )\n );\n this.ListDataFilter.forEach((item) => {\n if (!idsSelected.has(item[this.SelectedIdentifier as keyof T])) {\n this.ListDataSelectedTemp.push(item);\n }\n });\n } else {\n const idsSelected = new Set(\n this.ListDataFilter.map(\n (item) => item[this.SelectedIdentifier as keyof T]\n )\n );\n this.ListDataSelectedTemp = this.ListDataSelectedTemp.filter(\n (item) => !idsSelected.has(item[this.SelectedIdentifier as keyof T])\n );\n }\n this.EmitSelectedItem.emit(this.ListDataSelectedTemp);\n }\n\n OnRowSelect(event: any) {\n if (!this.SelectedIdentifier && this.ShowCheckbox) return;\n const selectedItem = event.data;\n const exists = this.ListDataSelectedTemp.some(\n (item) =>\n item[this.SelectedIdentifier as keyof T] ===\n selectedItem[this.SelectedIdentifier as keyof T]\n );\n if (!exists) {\n this.ListDataSelectedTemp.push(selectedItem);\n }\n this.EmitSelectedItem.emit(this.ListDataSelectedTemp);\n }\n\n OnRowUnselect(event: any) {\n if (!this.SelectedIdentifier && this.ShowCheckbox) return;\n const unselectedItem = event.data;\n this.ListDataSelectedTemp = this.ListDataSelectedTemp.filter(\n (item) =>\n item[this.SelectedIdentifier as keyof T] !==\n unselectedItem[this.SelectedIdentifier as keyof T]\n );\n this.EmitSelectedItem.emit(this.ListDataSelectedTemp);\n }\n\n ResetTable() {\n if (this.PaginatorTable) {\n this.PaginatorTable.CurrentPage = 1;\n this.CurrentPage = 1;\n }\n if (this.SearchTable) {\n this.SearchTable.ClearSearchText();\n this.SearchInput.fieldText = \"\";\n }\n this.ExecuteSearch({});\n }\n\n EmitSearchValues() {\n this.EmitListDataFilter.emit(this.ListDataFilter);\n this.EmitSearchEvent.emit(this.SearchInput);\n this.EmitSortEvent.emit([\n {\n sortOrder: this.SortOrder,\n sortField: this.SortField?.toString() ?? \"\",\n },\n ]);\n }\n\n OnRowsPerPageChange(value: number) {\n this.RowsPerPage = value;\n this.ResetTable();\n }\n}\n","<div class=\"prTable\">\n <div class=\"prTableTools\">\n <div class=\"prTableTools__new prTableTools__new--left\">\n @if (AdditionalTemplate) {\n <ng-container *ngTemplateOutlet=\"AdditionalTemplate\"></ng-container>\n }\n </div>\n\n @if (ShowSearch) {\n <intelica-search\n #searchTable\n [ComponentId]=\"ComponentId + 'Search'\"\n (OnSearch)=\"ExecuteSearch($event)\"\n [SearchFieldOptions]=\"ListSearchOptionsSimple\"\n [SearchOnKeyup]=\"false\"\n [SimpleSearchInput]=\"false\"\n [ShowTooltip]=\"ShowSearchTooltip\"\n ></intelica-search>\n } @if (AdditionalCentralTemplate) {\n <div class=\"prTableTools__new prTableTools__new--right\">\n <ng-container\n *ngTemplateOutlet=\"AdditionalCentralTemplate\"\n ></ng-container>\n </div>\n }\n </div>\n @if (AdditionalExtendedTemplate) {\n <div class=\"prTableTools justify-content-start\">\n <ng-container *ngTemplateOutlet=\"AdditionalExtendedTemplate\"></ng-container>\n </div>\n\n }\n <p-table\n class=\"prTableBasic\"\n [value]=\"ListDataTable\"\n [ngClass]=\"ClassName\"\n responsiveLayout=\"scroll\"\n [(selection)]=\"ListDataSelected\"\n (onHeaderCheckboxToggle)=\"SelectAll($event)\"\n (onRowSelect)=\"OnRowSelect($event)\"\n (onRowUnselect)=\"OnRowUnselect($event)\"\n [groupRowsBy]=\"groupRowsBy\"\n [dataKey]=\"dataKey\"\n [sortField]=\"DefaultSortField\"\n [scrollable]=\"scrollable\"\n [scrollHeight]=\"scrollable ? scrollHeight : 'auto'\"\n [tableStyle]=\"tableStyle\"\n [sortOrder]=\"SortOrder\"\n >\n <ng-template pTemplate=\"header\">\n @for (level of Levels; track $index) {\n <tr>\n @for (col of ColumnGroupList; track $index) { @if (col.level === level)\n {\n <th\n [attr.colspan]=\"col.colspan\"\n [attr.rowspan]=\"col.rowspan\"\n [pSortableColumn]=\"col.sortable ? col.field : ''\"\n [style.min-width]=\"col.minWidth\"\n (click)=\"col.sortable && OnSort(col.field)\"\n >\n <div>\n <span pTooltip=\"{{ col.header }}\">{{ col.header }}</span>\n <p-sortIcon *ngIf=\"col.sortable\" [field]=\"col.field\"></p-sortIcon>\n </div>\n </th>\n } } @if (ShowCheckbox && level === 0 && ColumnGroupList.length != 0) {\n <th\n class=\"text-center\"\n style=\"width: 4%\"\n [attr.rowspan]=\"MaxLevel === 1 ? 2 : MaxLevel\"\n >\n <p-tableHeaderCheckbox\n class=\"prCheckbox\"\n [ngClass]=\"{\n 'prCheckbox--indeterminate':\n ListDataSelectedTemp.length > 0 &&\n ListDataSelectedTemp.length < ListDataFilter.length\n }\"\n />\n </th>\n }\n </tr>\n }\n\n <tr>\n @for (col of ColumnList; track $index) { @if(col.showHeader) {\n <th\n [class]=\"col.className\"\n [pSortableColumn]=\"\n !col.isChecboxColumn && col.sortable ? col.field : ''\n \"\n [style.width]=\"col.width\"\n [style.min-width]=\"col.minWidth\"\n (click)=\"!col.isChecboxColumn && col.sortable && OnSort(col.field)\"\n >\n <div>\n <span\n pTooltip=\"{{ col.headerTooltip }}\"\n tooltipPosition=\"{{ col.headerTooltipPosition }}\"\n >\n {{ col.header }}\n </span>\n @if (!col.showIndex) { @if (col.isChecboxColumn) {\n <br />\n <p-checkbox\n [binary]=\"true\"\n (click)=\"$event.stopPropagation()\"\n (onChange)=\"OnHeaderCheckboxChange($event, col.field)\"\n [attr.data-check]=\"col.field\"\n ></p-checkbox>\n } @else {\n <p-sortIcon *ngIf=\"col.sortable\" [field]=\"col.field\"></p-sortIcon>\n } }\n </div>\n </th>\n } } @if (ShowCheckbox && ColumnGroupList.length == 0) {\n <th class=\"text-center\" style=\"width: 4%\">\n <p-tableHeaderCheckbox\n class=\"prCheckbox\"\n [ngClass]=\"{\n 'prCheckbox--indeterminate':\n ListDataSelectedTemp.length > 0 &&\n ListDataSelectedTemp.length < ListDataFilter.length\n }\"\n />\n </th>\n }\n </tr>\n\n @if (ListDataFilter.length > 0) {\n <tr class=\"fixedRow\">\n @for (col of RowResumenList; track $index) {\n <td\n [ngClass]=\"col.className\"\n [attr.colspan]=\"col.colspan\"\n [attr.rowspan]=\"col.rowspan\"\n >\n @if (col.templateRef) {\n <span\n ><ng-container *ngTemplateOutlet=\"col.templateRef\"></ng-container\n ></span>\n } @else {\n <ng-template #defaultContent></ng-template>\n }\n </td>\n }\n </tr>\n }\n </ng-template>\n\n <ng-template\n pTemplate=\"body\"\n let-rowData\n let-rowIndex=\"rowIndex\"\n let-expanded=\"expanded\"\n >\n <tr>\n @for (col of ColumnList; track $index) {\n <td [ngClass]=\"col.className\">\n @if (col.showIndex) {\n {{ rowIndex + 1 + (CurrentPage - 1) * RowsPerPage }}\n } @else if (col.field === 'name' && rowData.children &&\n rowData.children.length > 0) {\n <div class=\"prTable__expandToggleRow\">\n <p-button\n [pRowToggler]=\"rowData\"\n class=\"prButton prButton--icon prButton--iconBlue\"\n >\n <i\n [class]=\"\n expanded ? 'icon icon-collapse-rows' : 'icon icon-expand-rows'\n \"\n ></i>\n </p-button>\n <span\n class=\"text-breakWord\"\n pTooltip=\"{{ col.tooltip }}\"\n tooltipPosition=\"{{ col.tooltipPosition }}\"\n >\n {{ rowData[col.field] | formatCell : col.formatType }}\n </span>\n </div>\n } @else { @if (col.templateRef) {\n <ng-container\n *ngTemplateOutlet=\"col.templateRef; context: { $implicit: rowData }\"\n ></ng-container>\n } @else if (col.isChecboxColumn) {\n <p-checkbox\n [binary]=\"true\"\n [(ngModel)]=\"rowData[col.field]\"\n (onChange)=\"IsInderteminate(col.field)\"\n ></p-checkbox>\n } @else {\n <span\n class=\"text-breakWord\"\n pTooltip=\"{{ col.tooltip }}\"\n tooltipPosition=\"{{ col.tooltipPosition }}\"\n >\n {{ rowData[col.field] | formatCell : col.formatType }}\n </span>\n } }\n </td>\n } @if (ShowCheckbox) {\n <td class=\"text-center\">\n <p-tableCheckbox [value]=\"rowData\" class=\"prCheckbox\" />\n </td>\n }\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"expandedrow\" let-rowData let-rowIndex=\"rowIndex\">\n <ng-container *ngIf=\"rowData.children?.length\">\n <tr\n *ngFor=\"let childRow of rowData.children; let i = index\"\n class=\"subRow\"\n >\n <td\n *ngFor=\"let col of ColumnList; let j = index\"\n [ngClass]=\"col.className\"\n >\n <span\n class=\"text-breakWord\"\n pTooltip=\"{{ col.tooltip }}\"\n tooltipPosition=\"{{ col.tooltipPosition }}\"\n >\n <ng-container *ngIf=\"col.showIndex && j === 0; else normalCell\">\n {{ rowIndex + 1 + \".\" + getLetter(i) }}\n </ng-container>\n <ng-template #normalCell>\n @if (col.field === \"id\" && i < 26) {\n <span>{{ childRow[col.field] + \".\" + getLetter(i) }}</span>\n } @else {\n <ng-container *ngIf=\"col.templateRef; else defaultExpandedContent\">\n <ng-container *ngTemplateOutlet=\"col.templateRef; context: { $implicit: childRow }\"></ng-container>\n </ng-container>\n <ng-template #defaultExpandedContent>\n <span [class]=\"col.field === 'name' ? 'prTable__expandIdentText' : ''\">\n {{ childRow[col.field] | formatCell : col.formatType }}\n </span>\n </ng-template> \n }\n </ng-template>\n </span>\n </td>\n </tr>\n </ng-container>\n </ng-template>\n\n <ng-template #emptymessage>\n <tr>\n <td\n [attr.colspan]=\"ColumnList.length + (ShowCheckbox ? 1 : 0)\"\n class=\"text-center\"\n >\n {{ \"Nodata\" | term : GlobalTermService.languageCode }}\n </td>\n </tr>\n </ng-template>\n </p-table>\n\n <div class=\"prTableToolsBottom\">\n @if(TotalRecords !== 0){\n @if (ShowRowPerPage) {\n <div class=\"prTableToolsBottom__itemPerPage\">\n {{ \"ItemPerPage\" | term : GlobalTermService.languageCode }}\n <p-select\n [options]=\"AllowedPageSizes\"\n [ngModel]=\"RowsPerPage\"\n appendTo=\"body\"\n (onChange)=\"OnRowsPerPageChange($event.value)\"\n />\n <label for=\"pageSize\" class=\"control-label\">\n {{ 1 + RowsPerPage * (CurrentPage - 1) }} -\n {{\n CurrentPage * RowsPerPage >= TotalRecords\n ? TotalRecords\n : CurrentPage * RowsPerPage\n }}\n {{ \"Of\" | term : GlobalTermService.languageCode }} {{ TotalRecords }}\n {{ \"Items\" | term : GlobalTermService.languageCode }}\n </label>\n </div>\n } @if (ShowPagination) {\n <intelica-paginator\n #paginatorTable\n [TotalItems]=\"ListDataFilter.length\"\n [ItemsPerPage]=\"RowsPerPage\"\n (PageChange)=\"OnPageChange($event)\"\n >\n </intelica-paginator>\n }\n }\n </div>\n</div>\n","import { ContentChild, Directive, Input, TemplateRef } from \"@angular/core\";\n@Directive({ selector: \"column\" })\nexport class MatrixColumnComponent<T = any> {\n\t@Input() field!: string;\n\t@Input() header!: string;\n\t@Input() width?: string;\n\t@Input() className?: string;\n\t@Input() headerTooltip: string = \"\";\n\t@Input() headerTooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n\t@Input() tooltip: string = \"\";\n\t@Input() tooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n\t@Input() showIndex: boolean = false;\n\t@Input() showHeader: boolean = true;\n\t@Input() minWidth?: string;\n\t@ContentChild(TemplateRef) templateRef?: TemplateRef<any>;\n}\n@Directive({ selector: \"columnGroup\" })\nexport class MatrixColumnGroupComponent<T = any> {\n\t@Input() field!: string;\n\t@Input() header!: string;\n\t@Input() sortable: boolean = false;\n\t@Input() width?: string;\n\t@Input() className?: string;\n\t@Input() headerTooltip: string = \"\";\n\t@Input() headerTooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n\t@Input() minWidth?: string;\n\t@Input() colspan: number = 1;\n\t@Input() rowspan: number = 1;\n\t@Input() level: number = 0;\n}\n","import { CommonModule } from \"@angular/common\";\nimport { AfterContentInit, Component, ContentChildren, inject, Input, OnChanges, QueryList } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { BadgeModule } from \"primeng/badge\";\nimport { CheckboxModule } from \"primeng/checkbox\";\nimport { TableModule } from \"primeng/table\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { TermPipe } from \"../../pipes/term.pipes\";\nimport { GlobalTermService } from \"../../services/globalTerm.service\";\nimport { SharedService } from \"../../services/shared.service\";\nimport { MatrixColumnComponent, MatrixColumnGroupComponent } from \"./column.component\";\nimport { ButtonModule } from \"primeng/button\";\n\n@Component({\n\tselector: \"intelica-matrix-table\",\n\tstandalone: true,\n\timports: [CommonModule, TableModule, BadgeModule, TooltipModule, TermPipe, CheckboxModule, FormsModule, ButtonModule],\n\ttemplateUrl: \"./matrix-table.component.html\",\n})\nexport class MatrixTableComponent<T> implements OnChanges, AfterContentInit {\n\tprivate readonly SharedService = inject(SharedService);\n\treadonly GlobalTermService = inject(GlobalTermService);\n\t@Input() ComponentId: string = \"\";\n\t@Input() ListData: T[] = [];\n\t@Input() ShowIndex: boolean = false;\n\t@Input() ClassName: string = \"\";\n\t@Input() dataKey: string = \"\";\n\t@Input() scrollHeight: string = \"400px\";\n\t@Input() scrollable: boolean = false;\n\t@Input() tableStyle: { [klass: string]: any } = {};\n\t@ContentChildren(MatrixColumnComponent) Columns!: QueryList<MatrixColumnComponent>;\n\t@ContentChildren(MatrixColumnGroupComponent) ColumnGroups!: QueryList<MatrixColumnGroupComponent>;\n\tColumnList: MatrixColumnComponent[] = [];\n\tColumnGroupList: MatrixColumnGroupComponent[] = [];\n\tMaxLevel: number = 0;\n\tLevels: number[] = [];\n\tngOnChanges(): void {}\n\tngAfterContentInit() {\n\t\tthis.ColumnList = this.Columns.toArray();\n\t\tthis.ColumnGroupList = this.ColumnGroups.toArray();\n\t\tthis.MaxLevel = Math.max(...this.ColumnGroupList.map(c => c.level)) + 1;\n\t\tthis.Levels = Array.from({ length: this.MaxLevel }, (_, i) => i);\n\t}\n}\n","<div class=\"prTable prTable--blueLeft\">\n\t<p-table\n\t\tclass=\"prTableBasic\"\n\t\t[ngClass]=\"ClassName\"\n\t\t[value]=\"ListData\"\n\t\tresponsiveLayout=\"scroll\"\n\t\t[sortOrder]=\"-1\"\n\t\tdataKey=\"dataKey\"\n\t\t[scrollable]=\"scrollable\"\n\t\t[scrollHeight]=\"scrollable ? scrollHeight : 'auto'\"\n\t\t[tableStyle]=\"tableStyle\"\n\t>\n\t\t<ng-template pTemplate=\"header\">\n\t\t\t@for (level of Levels; track $index) {\n\n\t\t\t<tr>\n\t\t\t\t@for (col of ColumnGroupList; track $index) { @if (col.level === level) {\n\t\t\t\n\t\t\t\t<th [ngClass]=\"col.className\" [attr.colspan]=\"col.colspan\" [attr.rowspan]=\"col.rowspan\"\n\t\t\t\t\t[style.min-width]=\"col.minWidth\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<span [pTooltip]=\"col.headerTooltip || col.header\" [tooltipPosition]=\"col.headerTooltipPosition || 'top'\">\n\t\t\t\t\t\t\t{{ col.header }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</th>\n\t\t\t\n\t\t\t\t} }\n\t\t\t</tr>\n\t\t\t}\n\t\t\t<tr>\n\t\t\t\t@for (col of ColumnList; track $index) { @if(col.showHeader ){\n\t\t\t\t<th [class]=\"col.className\" [style.width]=\"col.width\" [style.min-width]=\"col.minWidth\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<span [pTooltip]=\"col.headerTooltip || col.header\" [tooltipPosition]=\"col.headerTooltipPosition || 'top'\">\n\t\t\t\t\t\t\t{{ col.header }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</th>\n\t\t\t\t} }\n\t\t\t</tr>\n\t\t</ng-template>\n\t\t<ng-template pTemplate=\"body\" let-rowData let-rowIndex=\"rowIndex\">\n\t\t\t<tr>\n\t\t\t\t@for (col of ColumnList; track col; let i = $index) {\n\t\t\t\t<td [ngClass]=\"col.className\" [class.left-header]=\"i === 0\">\n\t\t\t\t\t@if (col.templateRef) {\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"col.templateRef; context: { $implicit: rowData }\"></ng-container>\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t<span class=\"text-breakWord\" [pTooltip]=\"col.tooltip\" [tooltipPosition]=\"col.tooltipPosition || 'top'\">\n\t\t\t\t\t\t\t{{ rowData[col.field] ?? \"-\" }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t}\n\t\t\t\t</td>\n\n\t\t\t\t}\n\t\t\t</tr>\n\t\t\t<ng-container *ngIf=\"rowData.children?.length > 0\">\n\t\t\t\t<tr *ngFor=\"let childRow of rowData.children\">\n\t\t\t\t\t<td *ngFor=\"let col of ColumnList; let i = index\" [ngClass]=\"col.className\" [class.child-cell-padding]=\"i === 0\" [class.left-header]=\"i === 0\">\n\t\t\t\t\t\t{{ childRow[col.field] }}\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</ng-container>\n\t\t</ng-template>\n\t\t<ng-template #emptymessage>\n\t\t\t<tr>\n\t\t\t\t<td [attr.colspan]=\"ColumnList.length\" class=\"text-center\">\n\t\t\t\t\t{{ \"Nodata\" | term : GlobalTermService.languageCode }}\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</ng-template>\n\t</p-table>\n</div>\n","import { ContentChild, Directive, EventEmitter, Input, Output } from \"@angular/core\";\n\n@Directive({\n\tselector: \"action\",\n})\nexport class ActionDirective {\n\t/**\n\t * Nombre de la acción.\n\t * @type {string}\n\t */\n\t@Input() name: string = \"\";\n\n\t/**\n\t * Indica si los botones asociados a la acción deben ocultarse.\n\t * @type {boolean}\n\t * @default false\n\t */\n\t@Input() hideButtons: boolean = false;\n\n\t/**\n\t * Texto que se mostrará en el botón de aplicar.\n\t * @type {string}\n\t * @default 'Apply'\n\t */\n\t@Input() textApply: string = \"Apply\";\n\n\t/**\n\t * Texto que se mostrará en el botón de cancelar.\n\t * @type {string}\n\t * @default 'Clear'\n\t */\n\t@Input() textCancel: string = \"Clear\";\n\n\t/**\n\t * Indica si detener la propagación de eventos al hacer clic en la acción.\n\t * @type {boolean}\n\t * @default false\n\t */\n\t@Input() stopPropagation: boolean = false;\n\n\t/**\n\t * Evento emitido cuando se aplica la acción.\n\t * @type {EventEmitter<any>}\n\t */\n\t@Output() onApply: EventEmitter<any> = new EventEmitter<any>();\n\n\t/**\n\t * Evento emitido cuando se cancela la acción.\n\t * @type {EventEmitter<any>}\n\t */\n\t@Output() onCancel: EventEmitter<any> = new EventEmitter<any>();\n\n\t/**\n\t * Evento emitido cuando se hace clic en la acción.\n\t * @type {EventEmitter<any>}\n\t */\n\t@Output() onClick: EventEmitter<any> = new EventEmitter<any>();\n\n\t/**\n\t * Referencia al contenido proporcionado por la plantilla.\n\t * @type {any}\n\t */\n\t@ContentChild(\"template\") template!: any;\n\n\t/**\n\t * Indica si la acción está activa o no.\n\t * @type {boolean}\n\t * @default false\n\t */\n\tactive: boolean = false;\n}\n","import { Component, ViewChild, ElementRef, HostListener, ContentChildren, QueryList, OnInit, inject, Input } from \"@angular/core\";\nimport { ButtonModule } from \"primeng/button\";\nimport { InputGroupAddonModule } from \"primeng/inputgroupaddon\";\nimport { CommonModule } from \"@angular/common\";\nimport { RippleModule } from \"primeng/ripple\";\nimport { ActionDirective } from \"./action.directive\";\nimport { TermPipe } from \"../../pipes/term.pipes\";\nimport { GlobalTermService } from \"../../services/globalTerm.service\";\n\n@Component({\n\tselector: \"intelica-actions-menu\",\n\timports: [ButtonModule, InputGroupAddonModule, CommonModule, RippleModule, TermPipe],\n\ttemplateUrl: \"./actions-menu.component.html\",\n})\nexport class ActionsMenuComponent implements OnInit {\n\treadonly GlobalTermService = inject(GlobalTermService);\n\t@ViewChild(\"popover\") Popover!: ElementRef;\n\t@ViewChild(\"menuButton\") MenuButton!: ElementRef;\n\t@ViewChild(\"popoverContainer\") PopoverContainer!: ElementRef;\n\n\tIsPopoverOpen: boolean = false;\n\tIsClickInsideDatepicker: boolean = false;\n\n\t/**\n\t * Indica si el menú de acciones está visible o no.\n\t * @type {boolean}\n\t * @default false\n\t */\n\tShowActionsMenu = false;\n\n\t/**\n\t * Indica si la sección de selección de acciones está visible o no.\n\t * @type {boolean}\n\t * @default false\n\t */\n\tShowSelectActions = false;\n\n\tconstructor(private readonly termPipe: TermPipe) {}\n\n\tngOnInit(): void {\n\t\t// const specificRegex = /local.*filt|filt.*local/i;\n\t\t// const generalRegex = /filt/i;\n\t\t// const specificResults = this.actions.filter(action => specificRegex.test(action.name));\n\t\t// if (specificResults.length === 0) {\n\t\t// \tconst generalResults = this.actions.filter(action => generalRegex.test(action.name));\n\t\t// \tgeneralResults.forEach(action => this.showTemplate(action));\n\t\t// } else {\n\t\t// \tspecificResults.forEach(action => this.showTemplate(action));\n\t\t// }\n\t}\n\n\topenPopover() {\n\t\tthis.IsPopoverOpen = true;\n\n\t\t// Cambia el estado de visibilidad del menú de acciones.\n\t\tthis.ShowActionsMenu = true;\n\n\t\t// Muestra u oculta el menú de selección de acciones.\n\t\tthis.ShowSelectActions = true;\n\n\n\t}\n\n\tclosePopover() {\n\t\tthis.IsPopoverOpen = false;\n\n\t\t// Cambia el estado de visibilidad del menú de acciones.\n\t\tthis.ShowActionsMenu = false;\n\n\t\t// Muestra u oculta el menú de selección de acciones.\n\t\tthis.ShowSelectActions = true;\n\n\t}\n\n\t/** Método para alternar el estado del popover */\n\ttogglePopover(event?: Event) {\n\t\tthis.IsPopoverOpen ? this.closePopover() : this.openPopover();\n\n\t\t// Desactiva todas las acciones dentro del menú.\n\t\tthis.actions.forEach(action => {\n\t\t\taction.active = false;\n\t\t});\n\t}\n\n\t@HostListener(\"mousedown\", [\"$event\"])\n\tonMouseDown(event: Event) {\n\t\tconst target = event.target as HTMLElement;\n\t\tif (target.closest(\".p-datepicker\") || target.closest(\".p-inputtext\") || target.closest(\".p-select-panel\") || target.closest(\".p-multiselect-panel\")) {\n\t\t\tthis.IsClickInsideDatepicker = true;\n\t\t}\n\t}\n\n\t@HostListener(\"window:mousedown\", [\"$event\"])\n\tonMouseDownOutsideBody(event: Event) {\n\t\tconst target = event.target as HTMLElement;\n\t\tif (target.closest(\".p-datepicker\") || target.closest(\".p-inputtext\") || target.closest(\".p-select-panel\") || target.closest(\".p-multiselect-panel\")) {\n\t\t\tthis.IsClickInsideDatepicker = true;\n\t\t}\n\t}\n\n\t@HostListener(\"mouseup\", [\"$event\"])\n\tonMouseUp(event: Event) {\n\t\tsetTimeout(() => {\n\t\t\tthis.IsClickInsideDatepicker = false;\n\t\t}, 100);\n\t}\n\n\t@HostListener(\"document:click\", [\"$event\"])\n\tcloseAll(event?: Event) {\n\t\tif (!event) return;\n\t\tconst target = event.target as HTMLElement;\n\n\t\tconst allowedClasses = [\n\t\t\t\"prSelect\",\n\t\t\t\"p-select-option-selected\",\n\t\t\t\"p-select-option\",\n\t\t\t\"p-datepicker-panel\",\n\t\t\t\"p-datepicker-select-month\",\n\t\t\t\"p-button-text\",\n\t\t\t\"p-datepicker-select-year\",\n\t\t\t\"p-datepicker-month\",\n\t\t\t\"p-datepicker-year\",\n\t\t\t\"p-checkbox-input\",\n\t\t\t\"p-multiselect-option\",\n\t\t\t\"p-multiselect-filter\",\n\t\t\t\"p-multiselect-empty-message\",\n\t\t\t\"p-inputicon\",\n\t\t\t\"p-tree-node-selected\",\n\t\t\t\"p-tree-node-content\",\n\t\t\t\"p-multiselect-header\",\n\t\t\t\"grButton--icon-close-modal\",\n\t\t\t\"p-overlay-mask\",\n\t\t\t\"p-select-clear-icon\",\n\t\t\t\"formRowInputClear\",\n\t\t\t\"icon-times\",\n\t\t\t\"p-select-empty-message\",\n\t\t\t\"p-select-list\",\n\t\t\t\"p-iconfield\",\n\t\t\t\"p-inputtext\",\n\t\t\t\"p-select-header\",\n\t\t\t\"p-overlay\",\n\t\t\t\"p-select-filter\",\n\t\t\t\"p-overlay-content\",\n\t\t\t\"p-select-overlay\",\n\t\t\t\"p-select-panel\",\n\t\t\t\"p-multiselect-panel\",\n\t\t];\n\t\tif (this.IsClickInsideDatepicker) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (allowedClasses.some(className => target.closest(`.${className}`))) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.Popover && !this.Popover.nativeElement.contains(target) && this.MenuButton && !this.MenuButton.nativeElement.contains(target)) {\n\t\t\tthis.closePopover();\n\t\t}\n\t}\n\n\t/**\n\t * Directiva que representa una colección de elementos hijos del tipo `ActionDirective`.\n\t * Se utiliza para acceder a las instancias de la directiva `ActionDirective` dentro de un componente.\n\t * @type {QueryList<ActionDirective>}\n\t */\n\t@ContentChildren(ActionDirective)\n\tactions!: QueryList<ActionDirective>;\n\n\t/**\n\t * Muestra la plantilla asociada a una acción si se proporciona un manejador de eventos `onClick`.\n\t * - Emite el evento `onClick` de la acción si está definido.\n\t * - Detiene la propagación del evento si la propiedad `stopPropagation` de la acción está establecida.\n\t * - Activa la acción.\n\t * - Oculta el menú de selección de acciones si se cumplen ciertas condiciones.\n\t *\n\t * @param {ActionDirective} action - La acción para la cual mostrar la plantilla.\n\t */\n\tshowTemplate(action: ActionDirective): void {\n\t\t// Emite el evento onClick de la acción si está definido.\n\t\tif (action.onClick) {\n\t\t\taction.onClick.emit();\n\t\t}\n\n\t\t// Detiene la propagación del evento si la propiedad stopPropagation de la acción está establecida.\n\t\tif (action.stopPropagation) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Activa la acción.\n\t\taction.active = true;\n\n\t\t// Oculta el menú de selección de acciones si se cumplen ciertas condiciones.\n\t\tif (action.active) {\n\t\t\t// || this.showRecordsPerPage || this.showSorting) {\n\t\t\tthis.ShowSelectActions = false;\n\t\t}\n\t}\n\n\t/**\n\t * Restablece el estado de una acción y muestra el menú de selección de acciones.\n\t * - Desactiva la acción proporcionada.\n\t * - Muestra el menú de acciones.\n\t * - Muestra el menú de selección de acciones.\n\t *\n\t * @param {ActionDirective} action - La acción que se va a restablecer.\n\t */\n\treturnSelectActions(action: ActionDirective) {\n\t\t// Desactiva la acción proporcionada.\n\t\taction.active = false;\n\n\t\t// Muestra el menú de acciones.\n\t\tthis.ShowActionsMenu = true;\n\n\t\t// Muestra el menú de selección de acciones.\n\t\tthis.ShowSelectActions = true;\n\t}\n}\n","<div class=\"grPopoverContainer\" #popoverContainer [ngClass]=\"{ 'backdrop-visible': IsPopoverOpen }\">\n\t<button #menuButton class=\"grMenuAction\" (click)=\"togglePopover($event)\" [ngClass]=\"{ 'active': IsPopoverOpen }\">\n\t\t<span class=\"grMenuAction__ico\"><i class=\"icon icon-filter-option\"></i></span>\n\t\t<span class=\"grMenuAction__txt\">{{ \"Actions\" | term : GlobalTermService.languageCode }}</span>\n\t</button>\n\t<div class=\"grPopover\" #popover [style.display]=\"IsPopoverOpen ? 'block' : 'none'\">\n\t\t<!-- Menú -->\n\t\t<div class=\"grPopoverMenu\" *ngIf=\"ShowActionsMenu\" [ngClass]=\"{ hidden: !ShowSelectActions }\">\n\t\t\t<div class=\"grPopoverHeader\">\n\t\t\t\t<h3>\n\t\t\t\t\t<span>{{ \"SelectAction\" | term : GlobalTermService.languageCode }}</span>\n\t\t\t\t</h3>\n\t\t\t</div>\n\t\t\t<div class=\"grPopoverBody\">\n\t\t\t\t<button pRipple class=\"grButtonActions\" *ngFor=\"let item of actions; let $index = index\" (click)=\"showTemplate(item)\">\n\t\t\t\t\t<span class=\"formRowInputNumber\">{{ $index + 1 }}</span>\n\t\t\t\t\t<span class=\"grButtonActionName\">{{ item.name | term : GlobalTermService.languageCode }}</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<!-- Sub Menú -->\n\t\t<div class=\"grPopoverSubMenu\" [ngClass]=\"{ hidden: !item.active }\" *ngFor=\"let item of actions\">\n\t\t\t<div class=\"grPopoverHeader\">\n\t\t\t\t<h3>\n\t\t\t\t\t<button class=\"backButton\" (click)=\"returnSelectActions(item)\">\n\t\t\t\t\t\t<i class=\"icon icon-arrow-left\"></i>\n\t\t\t\t\t</button>\n\t\t\t\t\t<span>{{ item.name | term : GlobalTermService.languageCode }}</span>\n\t\t\t\t</h3>\n\t\t\t</div>\n\t\t\t<div class=\"grPopoverBody\">\n\t\t\t\t<ng-container *ngTemplateOutlet=\"item.template\"></ng-container>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n","import { Component, Input, Output, EventEmitter, inject } from \"@angular/core\";\nimport { FilterModel } from \"./model/filter.model\"; // Ajusta la ruta según tu proyecto\nimport { CommonModule, DatePipe } from \"@angular/common\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { GlobalTermService } from \"../../services/globalTerm.service\";\nimport { DateMode } from \"../../constants/date-mode-options.constants\";\n\n@Component({\n selector: \"filter-chips\",\n templateUrl: \"./filter-chips.component.html\",\n imports: [CommonModule, TooltipModule],\n providers: [DatePipe],\n})\nexport class FilterChipsComponent {\n @Input() filters: FilterModel[] = [];\n @Output() remove = new EventEmitter<FilterModel>();\n @Output() openPopUp = new EventEmitter<FilterModel>();\n readonly GlobalTermService = inject(GlobalTermService);\n readonly datePipe = inject(DatePipe);\n\n onRemove(filter: FilterModel) {\n this.remove.emit(filter);\n }\n\n onTapChip(filter: FilterModel) {\n this.openPopUp.emit(filter);\n }\n\n isBooleanTrue(value: any): boolean {\n return typeof value === \"boolean\" && value === true;\n }\n\n getDateFormat(mode: DateMode): string {\n switch (mode) {\n case \"month\":\n return \"M/yy\";\n case \"year\":\n return \"yy\";\n default:\n return \"d/M/yy\";\n }\n }\n\n formatDateValue(value: any, mode: string): string {\n const pattern = this.getDateFormat(mode as DateMode);\n\n if (Array.isArray(value) && value.length === 2) {\n return `${this.datePipe.transform(\n value[0],\n pattern\n )} - ${this.datePipe.transform(value[1], pattern)}`;\n }\n\n if (value) {\n return this.datePipe.transform(value, pattern) || \"\";\n }\n\n return \"\";\n }\n\n isDateOrDateRange(value: any): boolean {\n const isValidDate = (v: any): boolean => {\n if (typeof v !== \"string\") return false;\n const date = new Date(v);\n return !isNaN(date.getTime());\n };\n\n // Caso 1: Fecha simple (string)\n if (isValidDate(value)) {\n return true;\n }\n\n // Caso 2: Rango de fechas (array de 2 strings válidas)\n if (Array.isArray(value) && value.length === 2) {\n return value.every(isValidDate);\n }\n\n return false;\n }\n\n sortList(list: any[] | string | null | undefined): string[] {\n if (!Array.isArray(list)) {\n return [];\n }\n const stringList = list.map((item) =>\n typeof item === \"string\"\n ? item\n : item?.name || item?.text || JSON.stringify(item)\n );\n const sorted = [...stringList].sort();\n if (sorted.length > 5) {\n return sorted\n .slice(0, 5)\n .map((item, index) => `${index + 1}. ${item}`)\n .concat(\"...\");\n } else {\n return sorted.map((item, index) => `${index + 1}. ${item}`);\n }\n }\n\n getSafeString(value: string | string[] | null | undefined): string | null {\n if (Array.isArray(value)) {\n return value.join(\", \");\n }\n return value ?? null;\n }\n}\n","<div class=\"d-flex gap-2 flex-wrap\">\n\t@for (item of filters; track $index) {\n\t<button\n\t\tclass=\"prPill\"\n\t\tpInputText\n\t\t(click)=\"onTapChip(item)\"\n\t\t[pTooltip]=\"item.isTooltipForm ? tooltipFormContent : item.valueName!.length > 1 ? tooltipContent : item.title ?? ''\"\n\t\ttooltipPosition=\"top\"\n\t>\n\t\t<!-- Templates de tooltip -->\n\t\t<ng-template #tooltipFormContent>\n\t\t\t<span>{{ item.text?.toString() }}</span>\n\t\t\t<br />\n\t\t\t<ul *ngIf=\"item.valueName!.length > 1\" class=\"tooltip-list list-unlisted text-start filterChipsList\">\n\t\t\t\t<li *ngFor=\"let value of item.valueName\">{{ value }}</li>\n\t\t\t</ul>\n\t\t</ng-template>\n\n\t\t<ng-template #tooltipContent>\n\t\t\t<ul *ngIf=\"item.valueName!.length > 1\" class=\"tooltip-list list-unlisted text-start filterChipsList\">\n\t\t\t\t<li *ngFor=\"let value of sortList(item.valueName)\">\n\t\t\t\t\t{{ value }}\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</ng-template>\n\n\t\t<!-- Texto del chip -->\n\t\t<span class=\"prPill__value\">\n\t\t\t<ng-container *ngIf=\"isBooleanTrue(item.value)\">{{ item.title | slice : 0 : 15 }}{{ item.title && item.title.length > 15 ? \"...\" : \"\" }}</ng-container>\n\n\t\t\t<ng-container *ngIf=\"(!item.valueName || item.valueName.length === 0) && item.value && item.value.length > 0 && !item.dateFormat\">\n\t\t\t\t{{ item.text | slice : 0 : 15 }}{{ item.text && item.text.length > 15 ? \"...\" : \"\" }}\n\t\t\t</ng-container>\n\n\t\t\t<ng-container *ngIf=\"item.dateFormat\">\n\t\t\t\t{{ formatDateValue(item.value, item.dateFormat) }}\n\t\t\t</ng-container>\n\n\t\t\t<ng-container *ngIf=\"item.valueName?.length === 1\">{{ item.text | slice : 0 : 15 }}{{ item.text!.length > 15 ? \"...\" : \"\" }}</ng-container>\n\n\t\t\t<ng-container *ngIf=\"item.valueName!.length > 1\">{{ item.title | slice : 0 : 15 }}{{ item.title!.length > 15 ? \"...\" : \"\" }}</ng-container>\n\n\t\t\t<ng-container *ngIf=\"item.valueName!.length > 1 && !item.isTooltipForm\">({{ item.valueName?.length }})</ng-container>\n\t\t</span>\n\n\t\t<!-- Botón de cierre -->\n\t\t<i class=\"icon-close1\" (click)=\"onRemove(item); $event.stopPropagation()\"></i>\n\t</button>\n\t}\n</div>\n","export enum FilterTypeEnum {\n\tSelect = 0,\n\tText = 1,\n\tCheckbox = 2,\n\tDate = 3,\n\tSelectDetail = 4,\n\tTemplate = 5,\n\tTextArea = 6,\n\tTextRange = 7,\n}","import {\n Directive,\n EventEmitter,\n forwardRef,\n Injectable,\n Input,\n Output,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { Subject } from \"rxjs\";\nimport { FilterTypeEnum } from \"../../enums/filter-type.enum\";\nimport { FilterChangedModel } from \"../../model/filterChanged.model\";\nconst noop = () => {};\n\nexport const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FilterDirective),\n multi: true,\n};\n@Injectable({\n providedIn: \"root\",\n})\n@Directive({\n selector: \"filter\",\n providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR],\n})\nexport class FilterDirective implements ControlValueAccessor {\n @Input() name: string = \"\";\n @Input() label: string = \"\";\n @Input() visible: boolean = true;\n @Input() enabled: boolean = true;\n @Input() parent: string = \"\";\n @Input() placeholder: string = \"\";\n @Input() title: string = \"\";\n @Input() filterClass: string = \"\";\n @Input() letterIndex: boolean = false;\n @Input() defaultValue: any;\n @Input() showClean: boolean = true;\n @Input() showInAppliedFilter: boolean = true;\n @Input() showClass: boolean = true;\n @Input() selectClass: any = null;\n @Input() confirmDateFormat: boolean = false;\n @Input() hasFilterActionsButton: boolean = false;\n @Input() visibilityRules: { child: string; allowedValues: any[] }[] = [];\n @Output() change: EventEmitter<FilterChangedModel> =\n new EventEmitter<FilterChangedModel>();\n\n private innerValue: any = \"\";\n\n children: FilterDirective[] = [];\n $changes: Subject<any> = new Subject<any>();\n type: FilterTypeEnum;\n index: number = -1;\n\n get value(): any {\n return this.innerValue;\n }\n\n // set accessor including call the onchange callback\n set value(v: any) {\n if (v !== this.innerValue) {\n this.innerValue = v;\n this.onChangeCallback(v);\n }\n }\n\n constructor(filterType: FilterTypeEnum) {\n this.type = filterType;\n }\n\n writeValue(value: any): void {\n if (value !== this.innerValue) {\n this.innerValue = value;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedCallback = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {}\n\n onBlur() {\n this.onTouchedCallback();\n }\n\n private onTouchedCallback: () => void = noop;\n private onChangeCallback: (_: any) => void = noop;\n}\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n OnDestroy,\n Output,\n} from \"@angular/core\";\nimport { MultiSelectModule } from \"primeng/multiselect\";\nimport { CheckboxModule } from \"primeng/checkbox\";\nimport { FormsModule } from \"@angular/forms\";\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from \"@angular/forms\";\nimport { TermPipe } from \"../../pipes/term.pipes\";\nimport { GlobalTermService } from \"../../services/globalTerm.service\";\nimport { CommonModule } from \"@angular/common\";\n\n@Component({\n selector: \"intelica-multi-select\",\n imports: [\n FormsModule,\n MultiSelectModule,\n CheckboxModule,\n TermPipe,\n CommonModule,\n ],\n templateUrl: \"./multi-select.component.html\",\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelectComponent),\n multi: true,\n },\n ],\n})\nexport class MultiSelectComponent\n implements ControlValueAccessor, AfterViewInit\n{\n readonly GlobalTermService = inject(GlobalTermService);\n /**\n * @description Id\n * @default\t\"\"\n * @type {string}\n */\n @Input() id: string = \"\";\n\n /**\n * @description Opciones.\n * @example\t[{value: string, text: string}]\n * @type {any[]}\n */\n @Input() options: any[] = [];\n\n /**\n * @description Label name.\n * @default\t\"text\"\n * @type {{value: string, label: string}[]}\n */\n @Input() optionLabel: string | undefined = \"text\";\n\n /**\n * @description Value name.\n * @default\t\"value\"\n * @type {{value: string, label: string}[]}\n */\n @Input() optionValue: string | undefined = \"value\";\n\n /**\n * @description Placeholder\n * @default\t\"Select an item\"\n * @type {string}\n */\n @Input() placeholder: string = \"Select an item\";\n\n /**\n * @description Show filter textbox\n * @default\tfalse\n * @type {boolean}\n */\n @Input() showFilter: boolean = false;\n\n /**\n * @description Show All Checkbox\n * @default\tfalse\n * @type {boolean}\n */\n @Input() showAll: boolean = false;\n\n /**\n * @description All | Todo\n * @default\t\"All\"\n * @type {string}\n */\n @Input() allText: string = \"All\";\n\n /**\n * @description Number\tof selected labels to show\n * @default\t3\n * @type {number}\n */\n @Input() maxSelectedLabels: number = 1;\n\n /**\n * @description Append To\n * @default\t\"\"\n * @type {string}\n */\n @Input() appendTo: string = \"\";\n\n /**\n * @description Panel Style Class\n * @default\t\"\"\n * @type {string}\n */\n @Input() panelStyleClass: string = \"prMultiselect\";\n\n /**\n * @description Enable virtual scroll\n * @default\t\"\"\n * @type {boolean}\n */\n @Input() virtualScroll: boolean = false;\n\n /**\n * @description Enable virtual scroll\n * @default\t\"\"\n * @type {boolean}\n */\n @Input() disabled: boolean = false;\n\n /**\n * @description Label for the selected items\n * @default\t\"\"\n * @type {string}\n */\n @Input() selectedItemsLabel: string = \"Selected\";\n\n /**\n * @description Style por color text\n * @default\t\"\"\n * @type {string}\n */\n @Input() textColorClass: string = \"\";\n\n /**\n * @description Enable group\n * @default\t\"\"\n * @type {boolean}\n */\n @Input() group: boolean = false;\n\n /**\n * @description Reset filter on hide\n * @default\t\"\"\n * @type {boolean}\n */\n @Input() resetFilterOnHide: boolean = true;\n\n /**\n * @description Change event\n * @emits {string[]}\n * @type {EventEmitter<string[]>}\n */\n @Output(\"onChange\") onChangeEvent: EventEmitter<string[]> =\n new EventEmitter();\n @Output(\"onPanelShow\") onPanelShowEvent: EventEmitter<any> =\n new EventEmitter();\n @Output(\"onPanelHide\") onPanelHideEvent: EventEmitter<any> =\n new EventEmitter();\n\n checked: boolean = false;\n selectedOptions: string[] = [];\n\n onChangeFn: any = () => {};\n onTouchedFn: any = () => {};\n\n /**\n * @description Define custom class\n * @default\t\"\"\n * @type {boolean}\n */\n @Input() customClass: string = \"\";\n\n ngAfterViewInit(): void {\n if (this.options.some((option) => typeof option !== \"object\")) {\n this.optionValue = undefined;\n this.optionLabel = undefined;\n }\n }\n\n writeValue(value: string[]): void {\n this.selectedOptions = value || [];\n const totalOptionsCount = this.group\n ? this.options.reduce((acc, group) => acc + group.items.length, 0)\n : this.options.length;\n\n this.checked = this.selectedOptions.length === totalOptionsCount;\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n /* opcional: implementar si necesitas deshabilitar el componente desde ngModel */\n }\n\n toggleAllSelection(event: any) {\n if (!event.checked) {\n this.selectedOptions = [];\n } else {\n if (this.group) {\n // Agrupadas: aplanar todos los items\n this.selectedOptions = this.options.flatMap((group) =>\n group.items.map((item: any) =>\n this.optionValue ? item[this.optionValue] : item\n )\n );\n } else {\n // Sin agrupar\n this.selectedOptions = this.options.map((option) =>\n this.optionValue ? option[this.optionValue] : option\n );\n }\n }\n this.checked = this.selectedOptions.length > 0;\n this.emitChangeEvent();\n }\n\n onChangeSelect(event: any) {\n this.checked = this.selectedOptions.length === this.options.length;\n this.emitChangeEvent();\n this.onChangeFn(this.selectedOptions);\n this.onTouchedFn();\n }\n\n emitChangeEvent() {\n this.onChangeEvent.emit(this.selectedOptions);\n this.onChangeFn(this.selectedOptions);\n this.onTouchedFn();\n }\n\n onPanelShow(event: any) {\n this.onPanelShowEvent.emit(event);\n }\n\n onPanelHide(event: any) {\n this.onPanelHideEvent.emit(event);\n }\n}\n","<p-multiSelect\n [class]=\"textColorClass + ' prMultiselect'\"\n [disabled]=\"disabled\"\n [options]=\"options\"\n [(ngModel)]=\"selectedOptions\"\n [optionLabel]=\"optionLabel\"\n [optionValue]=\"optionValue\"\n [placeholder]=\"placeholder\"\n [maxSelectedLabels]=\"maxSelectedLabels\"\n [filter]=\"showFilter\"\n [showToggleAll]=\"false\"\n (onChange)=\"onChangeSelect($event)\"\n (onPanelHide)=\"onPanelHide($event)\"\n (onPanelShow)=\"onPanelShow($event)\"\n [appendTo]=\"appendTo\"\n [panelStyleClass]=\"panelStyleClass\"\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollOptions]=\"{ itemSize: 25, scrollHeight: '200px' }\"\n selectedItemsLabel=\"{0} {{\n selectedItemsLabel | term : GlobalTermService.languageCode\n }}\"\n [group]=\"group\"\n [resetFilterOnHide]=\"resetFilterOnHide\"\n [ngClass]=\"customClass\"\n>\n @if(showAll){\n <ng-template #header>\n <div class=\"prMultiselect__all\">\n <label [for]=\"id + '-all'\">\n <p-checkbox\n [inputId]=\"id + '-all'\"\n [binary]=\"true\"\n [(ngModel)]=\"checked\"\n (onChange)=\"toggleAllSelection($event)\"\n ></p-checkbox>\n {{ allText | term : GlobalTermService.languageCode }}\n </label>\n </div>\n </ng-template>\n }\n <ng-template let-group #group *ngIf=\"group\">\n <div class=\"flex items-center\">\n <span>{{ group.label }}</span>\n </div>\n </ng-template>\n</p-multiSelect>\n","import { CommonModule } from \"@angular/common\";\nimport {\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n} from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { ButtonModule } from \"primeng/button\";\nimport { CheckboxModule } from \"primeng/checkbox\";\nimport { DatePickerModule } from \"primeng/datepicker\";\nimport { InputTextModule } from \"primeng/inputtext\";\nimport { MultiSelectModule } from \"primeng/multiselect\";\nimport { SelectModule } from \"primeng/select\";\nimport { TextareaModule } from \"primeng/textarea\";\nimport { Subscription } from \"rxjs\";\nimport { GlobalTermService } from \"../../services/globalTerm.service\";\nimport { FilterModel } from \"../../model/filter.model\";\nimport { FilterDirective } from \"../../directives/filters/filter.directive\";\nimport { FilterTypeEnum } from \"../../enums/filter-type.enum\";\nimport { SelectFilterDirective } from \"../../directives/filters/select-filter.directive\";\nimport { TermPipe } from \"../../pipes/term.pipes\";\nimport { RippleModule } from \"primeng/ripple\";\nimport { DateMode } from \"../../constants/date-mode-options.constants\";\nimport { MultiSelectComponent } from \"../multi-select/multi-select.component\";\nimport { DateFilterDirective } from \"../../../public-api\";\n\n@Component({\n selector: \"intelica-filters\",\n imports: [\n CommonModule,\n DatePickerModule,\n FormsModule,\n TermPipe,\n ButtonModule,\n InputTextModule,\n CheckboxModule,\n SelectModule,\n MultiSelectModule,\n TextareaModule,\n RippleModule,\n MultiSelectComponent,\n ],\n templateUrl: \"./filters.component.html\",\n})\nexport class FiltersComponent implements OnInit, OnChanges, OnDestroy {\n readonly GlobalTermService = inject(GlobalTermService);\n @Input() showButtons: boolean = true;\n @Input() customClass: string = \"\";\n @Input() columns: number = 1;\n @Output() EmitApply: EventEmitter<any> = new EventEmitter<any>();\n @Output() EmitCancel: EventEmitter<any> = new EventEmitter<any>();\n\n // Suscripciones a eventos\n subscriptions: Subscription[] = [];\n\n // Objeto para almacenar términos\n terms: any;\n\n // Variable para mostrar u ocultar opciones de menú\n showMenuOptions: boolean = false;\n\n // Variable para manejar el estilo de altura de pantalla\n styleHeighScreen: boolean = false;\n\n // Lista de filtros aplicados\n _filtersApplied: FilterModel[] = [];\n\n // Clases CSS asociadas a diferentes tipos de controles\n radioClass = \"radioStyle\";\n comboClass = \"comboStyle\";\n ddlClass = \"ddlStyle\";\n ddtClass = \"ddtStyle\";\n dPClass = \"dPStyle\";\n mSClass = \"mSStyle\";\n\n // Texto descriptivo para la opción seleccionada\n selectDescription = \"Selected\";\n\n /**\n * Colección de elementos filtrados mediante la directiva FilterDirective.\n * Utilice @ContentChildren para obtener referencias a elementos dentro del contenido proyectado.\n * @type {QueryList<FilterDirective>}\n */\n @ContentChildren(FilterDirective)\n filterDirectives!: QueryList<FilterDirective>;\n\n // Referencia al ng-template filterActionsButton\n @ContentChild(\"filterActionsButton\", { static: true })\n filterActionsButtonTemplate!: TemplateRef<any>;\n\n /**\n * Colección de instancias de DropDownListComponent.\n * Utilice @ViewChildren para obtener referencias a componentes hijos dentro de la vista actual.\n * @type {QueryList<DropDownListComponent>}\n */\n // @ViewChildren(DropDownListComponent) selects!: QueryList<DropDownListComponent>;\n\n // Cadena de letras\n letters: string = \"abcdefghijklmnopqrstuvwxyz\";\n\n // Arreglo de filtros\n filters: FilterDirective[] = [];\n\n // Enumeración de tipos de filtro\n filterTypeEnum = FilterTypeEnum;\n\n // Índices y longitud de columnas\n indexArray: number[] = [];\n columnsLengthArray: any = [];\n\n // Idioma default para datepicker\n language = \"en\";\n\n //Cantidad limite para mostrar buscador en select-filter\n filterThreshold: number = 10;\n\n hasNoActiveClass: boolean = false;\n\n constructor(private cd: ChangeDetectorRef) {}\n\n ngOnInit() {\n this.columnsLengthArray = Array.from({ length: this.columns }, (_, i) => i);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n for (const propertyName in changes) {\n if (propertyName === \"columns\") {\n const CHANGE = changes[propertyName];\n const CURRENT = CHANGE.currentValue;\n\n this.columnsLengthArray = Array.from({ length: CURRENT }, (v, i) => i);\n this.cd.detectChanges();\n }\n }\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((subscription) => {\n subscription.unsubscribe();\n });\n }\n\n ngAfterViewInit(): void {\n this.setColumnSize();\n this.filters = this.filterDirectives.toArray();\n\n this.filters.forEach((filter) => {\n if (filter.parent) {\n const parent = this.filters.find((f) => f.name === filter.parent);\n if (parent) {\n parent.children.push(filter);\n }\n }\n });\n\n this.subscriptions = [];\n this.filterDirectives.forEach((filter) => {\n if (\n (filter.value === undefined ||\n filter.value === null ||\n filter.value === \"\") &&\n filter.defaultValue != null\n ) {\n filter.value = filter.defaultValue;\n if (filter.type === FilterTypeEnum.Select) {\n filter.value = null;\n }\n this.toggleChildrenVisibility(filter);\n }\n });\n\n this.cd.detectChanges();\n }\n\n getOptionCount(item: any): number {\n if (!item.options || !Array.isArray(item.options)) return 0;\n\n if (item.group) {\n return item.options.reduce((total: number, group: any) => {\n return total + (Array.isArray(group.items) ? group.items.length : 0);\n }, 0);\n } else {\n return item.options.length;\n }\n }\n\n onChange($event: any, filter: FilterDirective): void {\n const value = $event?.value !== undefined ? $event.value : $event;\n filter.value = value;\n this.toggleChildrenVisibility(filter);\n if (filter.change) {\n filter.change.emit({ current: filter, all: this.filterDirectives });\n }\n }\n\n onChangeCheck($event: any, filter: FilterDirective): void {\n filter.value = $event.checked;\n if (filter.change) {\n filter.change.emit({ current: filter, all: this.filterDirectives });\n }\n }\n\n onChangeMultiple($event: any, filter: FilterDirective): void {\n const value = $event?.value !== undefined ? $event.value : $event;\n filter.value = value;\n this.toggleChildrenVisibility(filter);\n if (filter.change) {\n filter.change.emit({ current: filter, all: this.filterDirectives });\n }\n }\n\n isUnselected(item: FilterDirective): boolean {\n const v = item.value;\n const d = item.defaultValue;\n\n if (v === null || v === undefined) return true;\n\n if (item.type === this.filterTypeEnum.Select) {\n if (Array.isArray(v)) {\n const defArr = Array.isArray(d) ? d : [];\n return v.length === 0 || this.arraysAreEqual(v, defArr);\n }\n return v === d;\n }\n\n if (\n item.type === this.filterTypeEnum.Text ||\n item.type === this.filterTypeEnum.TextArea\n ) {\n return typeof v === \"string\" ? v.trim() === \"\" : v === d;\n }\n\n if (item.type === this.filterTypeEnum.Date) {\n if (Array.isArray(v)) {\n const defArr = Array.isArray(d) ? d : [];\n const sameLen = v.length === defArr.length;\n const sameDates =\n sameLen &&\n v.every(\n (vx, i) =>\n vx instanceof Date &&\n defArr[i] instanceof Date &&\n vx.getTime() === (defArr[i] as Date).getTime()\n );\n return v.every((x) => !x) || sameDates;\n }\n if (v instanceof Date && d instanceof Date)\n return v.getTime() === d.getTime();\n return !v;\n }\n return v === d || !v;\n }\n\n private toggleChildrenVisibility(filter: FilterDirective): void {\n if (!filter.visibilityRules?.length) return;\n\n const allFilters = this.filterDirectives.toArray();\n\n filter.visibilityRules.forEach((rule) => {\n const child = allFilters.find((f) => f.name === rule.child);\n if (child) {\n const value = filter.value;\n const shouldShow = Array.isArray(value)\n ? value.some((v) => rule.allowedValues.includes(v))\n : rule.allowedValues.includes(value);\n\n child.visible = shouldShow;\n child.$changes.next({ visible: { currentValue: shouldShow } });\n }\n });\n }\n\n onKeyUp($event: any, filter: FilterDirective) {\n if (filter.change)\n filter.change.emit({ current: filter, all: this.filterDirectives });\n }\n\n cleanValue(filter: FilterDirective) {\n // Limpiar valor del filtro actual\n if (filter.defaultValue !== undefined && filter.defaultValue !== null) {\n filter.value = filter.defaultValue;\n } else {\n switch (typeof filter.value) {\n case \"string\":\n if (filter.type === FilterTypeEnum.Select) {\n filter.value = null;\n } else {\n filter.value = \"\";\n }\n break;\n case \"boolean\":\n filter.value = false;\n break;\n default:\n if (Array.isArray(filter.value)) {\n filter.value = [];\n } else {\n filter.value = null;\n }\n break;\n }\n }\n\n // Si es padre, limpiar hijos\n if (!filter.parent) {\n const children = this.filterDirectives.filter(\n (f) => f.parent === filter.name\n );\n const shouldHideChildren = !(\n filter.defaultValue !== undefined && filter.defaultValue !== null\n ); // solo ocultar si el padre NO tiene defaultValue\n\n children.forEach((child) => {\n if (child.defaultValue !== undefined && child.defaultValue !== null) {\n child.value = child.defaultValue;\n } else {\n switch (typeof child.value) {\n case \"string\":\n child.value = \"\";\n break;\n case \"boolean\":\n child.value = false;\n break;\n default:\n if (Array.isArray(child.value)) {\n child.value = [];\n } else {\n child.value = null;\n }\n break;\n }\n }\n\n if (shouldHideChildren) {\n child.visible = false;\n }\n\n if (child.change) {\n child.change.emit({\n current: child,\n all: this.filterDirectives,\n });\n }\n });\n }\n\n const index = this._filtersApplied.findIndex((x) => x.name === filter.name);\n if (index !== -1) this._filtersApplied.splice(index, 1);\n\n if (filter.change) {\n filter.change.emit({ current: filter, all: this.filterDirectives });\n }\n\n this.cd.detectChanges();\n }\n\n /**\n * Construye y actualiza la lista de filtros aplicados con la información proporcionada por la directiva de filtro.\n * @param {FilterDirective} filter - La directiva de filtro que proporciona la información.\n * @returns {void}\n */\n builderFiltersApplied(filter: FilterDirective): void {\n if (!filter.showInAppliedFilter) return;\n\n let value = filter.value;\n let text = filter.value;\n let valueName: any = [];\n let dateFormat: any = \"\";\n\n if (filter.type === FilterTypeEnum.Select) {\n const selectFilter = filter as SelectFilterDirective;\n\n if (selectFilter.multiple) {\n text = \"\";\n filter.value.forEach((f: any) => {\n let filterSelect = selectFilter.options.filter(\n (x) => x[selectFilter.optionValue] === f\n );\n if (filterSelect.length)\n valueName = [\n ...valueName,\n filterSelect[0][selectFilter.optionLabel],\n ];\n if (filterSelect.length > 0)\n text = text + filterSelect[0][selectFilter.optionLabel] + \"-\";\n });\n text = text.slice(0, -1);\n } else {\n let filterSelect = selectFilter.options.filter(\n (x) => x[selectFilter.optionValue] === filter.value\n );\n if (filterSelect.length > 0)\n text = filterSelect[0][selectFilter.optionLabel];\n }\n }\n\n let filterApplied = this._filtersApplied.filter(\n (x) => x.name === filter.name\n )[0] as any;\n\n if (!filterApplied) {\n if (filter.type === FilterTypeEnum.Date) {\n const dateFilter = filter as DateFilterDirective;\n this._filtersApplied.push({\n name: filter.name,\n value: value,\n text: text,\n title: filter.title,\n valueName: valueName,\n dateFormat: dateFilter.dateMode,\n });\n } else {\n this._filtersApplied.push({\n name: filter.name,\n value: value,\n text: text,\n title: filter.title,\n valueName: valueName,\n });\n }\n } else {\n filterApplied.text = text;\n filterApplied.value = value;\n }\n }\n\n /**\n * Obtiene el índice de un filtro en el contexto de todos los filtros visibles, proporcionando una numeración o letras.\n * @param {FilterDirective} filter - La directiva de filtro para la cual se obtendrá el índice.\n * @param {FilterDirective} [parentFilter] - La directiva de filtro padre, si existe, en el caso de filtros anidados.\n * @returns {string} - El índice del filtro en formato de numeración o letras.\n */\n getIndex(filter: FilterDirective, parentFilter?: FilterDirective): string {\n const filters = [\n ...this.filterDirectives.filter((x) => !x.parent && x.visible),\n ];\n\n // Verifica si el filtro está en la lista principal de filtros visibles\n if (filters.indexOf(filter) > -1) {\n // Retorna el índice en formato de letras si está definido, de lo contrario, utiliza la numeración\n if (filter.letterIndex) return this.letters[filters.indexOf(filter)];\n return (filters.indexOf(filter) + 1).toString();\n }\n\n // Si hay un filtro padre proporcionado\n if (parentFilter) {\n const children = [\n ...this.filterDirectives.filter(\n (x) => x.parent === parentFilter?.name && x.visible\n ),\n ];\n let index: string = \"\";\n\n // Concatena el índice del filtro padre en formato de letras o numeración\n if (parentFilter.letterIndex)\n index += this.letters[filters.indexOf(parentFilter)];\n else index += (filters.indexOf(parentFilter) + 1).toString();\n\n // Concatena el índice del filtro actual en formato de letras o numeración\n if (filter.letterIndex)\n index += \".\" + this.letters[children.indexOf(filter)];\n else index += \".\" + (children.indexOf(filter) + 1).toString();\n\n return index;\n }\n\n // Retorna 'ERROR' si no se cumple ninguna de las condiciones anteriores\n return \"ERROR\";\n }\n\n /**\n * Maneja el evento de hacer clic en el botón \"Aplicar\" para aplicar los filtros seleccionados.\n * Limpia la lista de filtros aplicados y construye la lista nuevamente con los valores actuales de los filtros.\n * Luego, emite el evento `EmitApply` con la lista de filtros aplicados.\n * @returns {void}\n */\n clickApply(): void {\n // Limpia la lista de filtros aplicados\n this._filtersApplied = [];\n // Itera sobre todas las directivas de filtro\n this.filterDirectives.forEach((filterDirective) => {\n if (this.validateFilter(filterDirective)) {\n // Verifica si el tipo de filtro es de texto\n if (filterDirective.type === FilterTypeEnum.Text) {\n // Comprueba si el valor de texto no está vacío y agrega el filtro aplicado\n if (\n filterDirective.value !== undefined &&\n filterDirective.value !== null &&\n filterDirective.value.trim() !== \"\"\n ) {\n this.builderFiltersApplied(filterDirective);\n }\n } else {\n // Si el filtro requiere confirmación de formato de fecha, convierte el valor a un objeto de fecha\n if (filterDirective.confirmDateFormat) {\n const parsedDate = new Date(filterDirective.value);\n filterDirective.value = this.isValidDate(parsedDate)\n ? parsedDate\n : null;\n }\n\n // Comprueba si el valor del filtro es válido y no está vacío, luego agrega el filtro aplicado\n if (\n filterDirective.value !== undefined &&\n filterDirective.value !== null &&\n (this.validStringValue(\n filterDirective.value,\n filterDirective.defaultValue\n ) ||\n filterDirective.value > -1 ||\n Array.isArray(filterDirective.value) ||\n this.isValidDate(filterDirective.value)) &&\n filterDirective.value.toString().length > 0\n ) {\n this.builderFiltersApplied(filterDirective);\n }\n }\n }\n });\n\n this.EmitApply.emit(this._filtersApplied);\n }\n\n private isValidDate(value: any): boolean {\n return value instanceof Date && !isNaN(value.getTime());\n }\n\n validateFilter(filter: FilterDirective): boolean {\n return filter.value !== undefined && filter.value !== null;\n }\n\n validStringValue(value: any, defaultValue: any): boolean {\n return (\n typeof (value == \"string\" || value === \"Object\") && value != defaultValue\n );\n }\n\n clickCancel(): void {\n this.filterDirectives.forEach((filter) => {\n // Restaurar valor por default o limpiar\n if (filter.defaultValue !== undefined && filter.defaultValue !== null) {\n filter.value = filter.defaultValue;\n } else {\n switch (typeof filter.value) {\n case \"string\":\n filter.value = \"\";\n break;\n case \"boolean\":\n filter.value = false;\n break;\n case \"object\":\n if (Array.isArray(filter.value)) {\n filter.value = [];\n } else {\n filter.value = null;\n }\n break;\n default:\n filter.value = null;\n break;\n }\n }\n\n // Ocultar hijos si su padre no tiene defaultValue\n if (filter.parent) {\n const parent = this.filterDirectives.find(\n (f) => f.name === filter.parent\n );\n const parentHasDefault =\n parent?.defaultValue !== undefined && parent?.defaultValue !== null;\n\n if (!parentHasDefault) {\n filter.visible = false;\n }\n }\n\n if (filter.change) {\n filter.change.emit({ current: filter, all: this.filterDirectives });\n }\n });\n\n this._filtersApplied = [];\n\n this.EmitCancel.emit(this.filterDirectives);\n\n this.cd.detectChanges();\n }\n\n /**\n * Evalúa si el valor actual del filtro es diferente al valor predeterminado, considerando el tipo de filtro.\n * @param {FilterDirective} filter - La directiva de filtro a evaluar.\n * @returns {boolean} - `true` si el valor actual es diferente al valor predeterminado, `false` de lo contrario.\n */\n evaluatecleanvalue(filter: FilterDirective): boolean {\n let isContinue = filter.value != filter.defaultValue;\n\n // Si el tipo de filtro es de fecha y el valor predeterminado es un objeto de fecha, compara las fechas en milisegundos\n if (\n filter.type === FilterTypeEnum.Date &&\n typeof filter.defaultValue === \"object\" &&\n filter.defaultValue != null\n ) {\n isContinue =\n (filter.value as Date).getTime() !=\n (filter.defaultValue as Date).getTime();\n }\n\n // Si el tipo de filtro es SelectDetail, compara los primeros elementos de los arreglos\n if (filter.type === FilterTypeEnum.SelectDetail) {\n isContinue = filter.value[0] != filter.defaultValue[0];\n }\n\n return isContinue;\n }\n\n /**\n * Evalúa si el valor actual del filtro de texto es diferente al valor predeterminado y cumple con ciertas condiciones.\n * @param {FilterDirective} filter - La directiva de filtro de texto a evaluar.\n * @returns {boolean} - `true` si el valor actual cumple con las condiciones para ser diferente al valor predeterminado, `false` de lo contrario.\n */\n evaluatecleanvaluetext(filter: FilterDirective): boolean {\n let isContinue =\n filter.value != null &&\n filter.value != 0 &&\n filter.value != -1 &&\n filter.value != filter.defaultValue &&\n filter.showClass;\n\n if (filter.defaultValue) {\n isContinue = filter.value != null && filter.value != filter.defaultValue;\n }\n\n // Si el tipo de filtro es de fecha y el valor predeterminado es un objeto de fecha, compara las fechas en milisegundos\n if (\n filter.value != null &&\n filter.type === FilterTypeEnum.Date &&\n typeof filter.defaultValue === \"object\" &&\n filter.defaultValue != null\n ) {\n isContinue =\n (filter.value as Date).getTime() !=\n (filter.defaultValue as Date).getTime();\n }\n\n if (filter.type === FilterTypeEnum.Select) {\n if (Array.isArray(filter.value) && Array.isArray(filter.defaultValue)) {\n isContinue = !this.arraysAreEqual(filter.value, filter.defaultValue);\n } else {\n isContinue = filter.value != filter.defaultValue;\n }\n }\n return isContinue;\n }\n\n private arraysAreEqual(arr1: any[], arr2: any[]): boolean {\n if (arr1.length !== arr2.length) return false;\n return arr1.every((val, index) => val === arr2[index]);\n }\n\n hasValue(item: FilterDirective): boolean {\n const { value, type } = item;\n\n let has = false;\n\n if (type === this.filterTypeEnum.Select && Array.isArray(value)) {\n has = value.length > 0;\n } else if (\n type === this.filterTypeEnum.Text ||\n type === this.filterTypeEnum.TextArea\n ) {\n has = !!value && value.trim() !== \"\";\n } else if (type === this.filterTypeEnum.Date && Array.isArray(value)) {\n has = value.some((v) => !!v);\n } else {\n has = !!value;\n }\n\n if (has && this.equalsDefault(item)) {\n return false;\n }\n\n return has;\n }\n\n private equalsDefault(item: FilterDirective): boolean {\n const { value, defaultValue, type } = item;\n\n if (defaultValue === undefined || defaultValue === null) {\n return false;\n }\n\n if (\n type === this.filterTypeEnum.Select &&\n Array.isArray(value) &&\n Array.isArray(defaultValue)\n ) {\n return (\n value.length === defaultValue.length &&\n value.every((v, i) => v === defaultValue[i])\n );\n }\n\n if (\n type === this.filterTypeEnum.Date &&\n Array.isArray(value) &&\n Array.isArray(defaultValue)\n ) {\n return (\n value.length === defaultValue.length &&\n value.every(\n (v, i) =>\n v instanceof Date &&\n defaultValue[i] instanceof Date &&\n v.getTime() === (defaultValue[i] as Date).getTime()\n )\n );\n }\n\n if (\n type === this.filterTypeEnum.Date &&\n value instanceof Date &&\n defaultValue instanceof Date\n ) {\n return value.getTime() === defaultValue.getTime();\n }\n\n return value === defaultValue;\n }\n\n getDateView(mode: DateMode): \"date\" | \"month\" | \"year\" {\n switch (mode) {\n case \"month\":\n return \"month\";\n case \"year\":\n return \"year\";\n default:\n return \"date\";\n }\n }\n\n getDateFormat(mode: DateMode): string {\n switch (mode) {\n case \"month\":\n return \"m/y\";\n case \"year\":\n return \"y\";\n default:\n return \"d/m/y\";\n }\n }\n\n getDateFormatPlaceholder(mode: DateMode): string {\n switch (mode) {\n case \"month\":\n return \"m/yy\";\n case \"year\":\n return \"yy\";\n default:\n return \"d/m/yy\";\n }\n }\n\n setColumnSize(): string {\n let response = \"col-md-6\";\n\n if (this.filterDirectives) {\n const visibleParents = this.filterDirectives.filter(\n (x) => x.visible && !x.parent\n );\n const columnBreak = Math.ceil(visibleParents.length / this.columns);\n\n for (const ind of this.columnsLengthArray) {\n const pageNumber = ind + 1;\n const parentsInCol = visibleParents.slice(\n (pageNumber - 1) * columnBreak,\n pageNumber * columnBreak\n );\n\n for (const parent of parentsInCol) {\n parent.index = ind;\n\n const children = this.filterDirectives.filter(\n (x) => x.visible && x.parent === parent.name\n );\n for (const child of children) {\n child.index = ind;\n }\n }\n }\n }\n\n switch (this.columns) {\n case 1:\n response = \"col-md-12\";\n break;\n case 2:\n response = \"col-md-6\";\n break;\n case 3:\n response = \"col-md-4\";\n break;\n case 4:\n response = \"col-md-3\";\n break;\n case 6:\n response = \"col-md-2\";\n break;\n default:\n response = \"col-md-6\";\n break;\n }\n\n return response;\n }\n}\n","<div\n class=\"container overflow-hidden\"\n [ngStyle]=\"{ 'min-width': 313 * columns + 'px' }\"\n>\n <div class=\"row gy-3 filtersAnalytics\">\n @for (colIndex of columnsLengthArray; track colIndex) {\n <div class=\"inputRowGap\" [ngClass]=\"setColumnSize()\">\n @for (filter of filterDirectives; track filter) { @if (filter.visible &&\n !filter.parent && filter.index == colIndex) {\n <div class=\"mb-3\">\n <ng-container\n *ngTemplateOutlet=\"\n template;\n context: { item: filter, index: getIndex(filter) }\n \"\n ></ng-container>\n </div>\n\n @for (child of filterDirectives; track child) { @if (child.visible &&\n child.parent === filter.name && child.index == colIndex) {\n <div class=\"mb-3\">\n <ng-container\n *ngTemplateOutlet=\"\n template;\n context: { item: child, index: getIndex(child, filter) }\n \"\n ></ng-container>\n </div>\n } } } }\n </div>\n }\n </div>\n</div>\n\n@if (showButtons) {\n<div class=\"btnBox btnBox--center mt-4\">\n <button\n pRipple\n class=\"grButton grButton--primary applyAnalytics\"\n (click)=\"clickApply()\"\n >\n <span>{{ \"Apply\" | term : GlobalTermService.languageCode }}</span>\n </button>\n <button\n pRipple\n class=\"grButton grButton--secondary cleanAnalytics\"\n (click)=\"clickCancel()\"\n >\n <span>{{ \"Clear\" | term : GlobalTermService.languageCode }}</span>\n </button>\n</div>\n}\n\n<!-- Template general -->\n<ng-template #template let-item=\"item\" let-index=\"index\">\n @if (item.visible) {\n <div\n class=\"formRowInput {{ item.filterClass }}\"\n [ngClass]=\"{ required: item.required }\"\n >\n @if (item.label && item.label.length > 0) {\n <div class=\"formRowInputLeft\">\n <div class=\"formRowInputNumber\">\n <span>{{ index }}</span>\n </div>\n <label [for]=\"item.name\">\n <span>{{ item.label }}</span>\n </label>\n </div>\n }\n <div class=\"formRowInputWrap align-items-center\">\n @if (item.type === filterTypeEnum.Select) {\n <ng-container\n *ngTemplateOutlet=\"select; context: { item: item, index: index }\"\n ></ng-container>\n }\n <!---->\n @if (item.type === filterTypeEnum.Text) {\n <ng-container\n *ngTemplateOutlet=\"text; context: { item: item, index: index }\"\n ></ng-container>\n }\n <!---->\n @if (item.type === filterTypeEnum.Checkbox) {\n <ng-container\n *ngTemplateOutlet=\"checkbox; context: { item: item, index: index }\"\n ></ng-container>\n }\n <!---->\n @if (item.type === filterTypeEnum.Date) {\n <ng-container\n *ngTemplateOutlet=\"date; context: { item: item, index: index }\"\n ></ng-container>\n }\n <!---->\n @if (item.type === filterTypeEnum.Template) {\n <ng-container\n *ngTemplateOutlet=\"\n template_filter;\n context: { item: item, index: index }\n \"\n ></ng-container>\n }\n <!---->\n @if (item.type === filterTypeEnum.TextArea) {\n <ng-container\n *ngTemplateOutlet=\"text_area; context: { item: item, index: index }\"\n ></ng-container>\n } @if (filterActionsButtonTemplate && item.hasFilterActionsButton) {\n <ng-container\n *ngTemplateOutlet=\"filterActionsButtonTemplate\"\n ></ng-container>\n }\n </div>\n @if (item.showClean && hasValue(item)) {\n <button class=\"desactive formRowInputClear\" (click)=\"cleanValue(item)\">\n <i class=\"icon-times\"></i>\n </button>\n }\n </div>\n }\n</ng-template>\n\n<!-- Tipos de filtros -->\n<ng-template #select let-item=\"item\" let-index=\"index\">\n @if (item.multiple) {\n <intelica-multi-select\n [placeholder]=\"item.placeholder\"\n [options]=\"item.options\"\n [showFilter]=\"getOptionCount(item) > filterThreshold\"\n [resetFilterOnHide]=\"item.resetFilterOnHide\"\n [showAll]=\"item.showAll\"\n [optionLabel]=\"item.optionLabel\"\n [optionValue]=\"item.optionValue\"\n [disabled]=\"!item.enabled\"\n [(ngModel)]=\"item.value\"\n (onChange)=\"onChangeMultiple($event, item)\"\n [appendTo]=\"item.appendTo\"\n [panelStyleClass]=\"item.panelStyleClass\"\n [allText]=\"item.allText\"\n [maxSelectedLabels]=\"item.maxSelectedLabels\"\n [virtualScroll]=\"item.virtualScroll\"\n [selectedItemsLabel]=\"item.selectedItemsLabel\"\n [group]=\"item.group\"\n [customClass]=\"isUnselected(item) ? ' is-unselected' : ''\"\n [class]=\"'fullWidth'\"\n ></intelica-multi-select>\n } @else {\n <p-select\n [options]=\"item.options\"\n [(ngModel)]=\"item.value\"\n [optionLabel]=\"item.optionLabel\"\n [optionValue]=\"item.optionValue\"\n [placeholder]=\"item.placeholder\"\n [disabled]=\"!item.enabled\"\n (onChange)=\"onChange($event, item)\"\n [filter]=\"getOptionCount(item) > filterThreshold\"\n [resetFilterOnHide]=\"item.resetFilterOnHide\"\n [appendTo]=\"item.appendTo\"\n [panelStyleClass]=\"item.panelStyleClass\"\n [virtualScroll]=\"item.virtualScroll\"\n [virtualScrollItemSize]=\"25\"\n [group]=\"item.group\"\n [ngClass]=\"{ prSelect: true, 'is-unselected': isUnselected(item) }\"\n appendTo=\"body\"\n >\n <ng-template let-group #group *ngIf=\"item.group\">\n <div class=\"flex items-center\">\n <span>{{ group.label }}</span>\n </div>\n </ng-template>\n </p-select>\n }\n</ng-template>\n\n<ng-template #text let-item=\"item\" let-index=\"index\">\n <input\n pInputText\n class=\"prInputText\"\n type=\"text\"\n [disabled]=\"!item.enabled\"\n [(ngModel)]=\"item.value\"\n [placeholder]=\"item.placeholder\"\n (keyup)=\"onKeyUp($event, item)\"\n [maxlength]=\"item.maxlength\"\n />\n</ng-template>\n\n<ng-template #checkbox let-item=\"item\" let-index=\"index\">\n <p-checkbox\n class=\"prCheckbox\"\n [(ngModel)]=\"item.value\"\n [binary]=\"true\"\n [disabled]=\"!item.enabled\"\n (onChange)=\"onChangeCheck($event, item)\"\n ></p-checkbox>\n</ng-template>\n\n<ng-template #date let-item=\"item\" let-index=\"index\">\n <p-datepicker\n [(ngModel)]=\"item.value\"\n [selectionMode]=\"item.range ? 'range' : 'single'\"\n [disabled]=\"!item.enabled\"\n [iconDisplay]=\"'input'\"\n [showIcon]=\"true\"\n (ngModelChange)=\"onChange($event, item)\"\n [view]=\"getDateView(item.dateMode)\"\n [dateFormat]=\"getDateFormat(item.dateMode)\"\n class=\"prDatePicker\"\n appendTo=\"body\"\n panelStyleClass=\"prDatePicker\"\n [placeholder]=\"getDateFormatPlaceholder(item.dateMode)\"\n [readonlyInput]=\"item.isReadOnly\"\n [minDate]=\"item.min\"\n [maxDate]=\"item.max\"\n ></p-datepicker>\n</ng-template>\n\n<ng-template #template_filter let-item=\"item\" let-index=\"index\">\n <ng-container *ngTemplateOutlet=\"item.content\"></ng-container>\n</ng-template>\n\n<ng-template #text_area let-item=\"item\" let-index=\"index\">\n <textarea\n pTextarea\n class=\"prInputText\"\n [disabled]=\"!item.enabled\"\n [(ngModel)]=\"item.value\"\n [placeholder]=\"item.placeholder\"\n (keyup)=\"onKeyUp($event, item)\"\n ></textarea>\n</ng-template>\n","import {\n Component,\n ContentChild,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n} from \"@angular/core\";\nimport { Dialog } from \"primeng/dialog\";\nimport { ButtonModule } from \"primeng/button\";\nimport { CommonModule } from \"@angular/common\";\n\n@Component({\n selector: \"intelica-modal-dialog\",\n imports: [Dialog, ButtonModule, CommonModule],\n templateUrl: \"./modal-dialog.component.html\",\n})\nexport class ModalDialogComponent {\n /**\n * Título del cuadro de diálogo.\n * @type {string}\n */\n @Input() Title: string = \"\";\n\n /**\n * Tamaño del cuadro de diálogo.\n * @type {string}\n */\n @Input() Size: string = \"lg\";\n\n /**\n * Controlar el arrastre del cuadro de diálogo.\n * @type {boolean}\n */\n @Input() Draggable: boolean = false;\n\n /**\n * Controlar el cierre del cuadro de diálogo.\n * @type {boolean}\n */\n @Input() DisableMaskClose: boolean = false;\n\n /**\n * Evento emitido al cerrar el cuadro de diálogo.\n * @type {EventEmitter<boolean>}\n */\n @Output() EmmitCloseModal = new EventEmitter<boolean>();\n\n /**\n * Captura la plantilla del contenido.\n * @type {TemplateRef<any>}\n */\n @ContentChild(\"modalContent\") modalContentTemplate!: TemplateRef<any>;\n\n /**\n * Visibilidad del cuadro de diálogo.\n * @type {string}\n */\n Visible: boolean = false;\n\n public showDialog() {\n this.Visible = true;\n }\n\n public closeDialog() {\n this.Visible = false;\n this.EmmitCloseModal.emit(false);\n }\n}\n","<p-dialog\n class=\"prDialog prDialog--{{ Size }}\"\n [modal]=\"true\"\n [(visible)]=\"Visible\"\n [draggable]=\"Draggable\"\n [dismissableMask]=\"!DisableMaskClose\"\n (onHide)=\"closeDialog()\"\n>\n <ng-template pTemplate=\"header\">\n <div class=\"custom-header\">\n <h2>\n <ng-content select=\"[titleHeaderMenu]\"></ng-content>\n </h2>\n <button class=\"grButton--icon-close-modal\" (click)=\"closeDialog()\">\n <i class=\"icon-close1\"></i>\n </button>\n </div>\n </ng-template>\n <div class=\"prDialog__content\">\n <ng-container>\n <ng-container *ngTemplateOutlet=\"modalContentTemplate\"></ng-container>\n </ng-container>\n </div>\n</p-dialog>\n","import { ContentChild, Directive, EventEmitter, Input, Output } from \"@angular/core\";\n\n@Directive({\n\tselector: \"itemsplit\",\n})\nexport class ItemSplitDirective {\n\t/**\n\t * Nombre de la acción.\n\t * @type {string}\n\t */\n\t@Input() name: string = \"\";\n\n\t/**\n\t * Indica si los botones asociados a la acción deben ocultarse.\n\t * @type {boolean}\n\t * @default false\n\t */\n\t@Input() hideButtons: boolean = false;\n\n\t/**\n\t * Indica si detener la propagación de eventos al hacer clic en la acción.\n\t * @type {boolean}\n\t * @default false\n\t */\n\t@Input() stopPropagation: boolean = false;\n\n\t/**\n\t * Evento emitido cuando se hace clic en la acción.\n\t * @type {EventEmitter<any>}\n\t */\n\t@Output() onClick: EventEmitter<any> = new EventEmitter<any>();\n\n\t/**\n\t * Referencia al contenido proporcionado por la plantilla.\n\t * @type {any}\n\t */\n\t@ContentChild(\"template\") template!: any;\n\n\t/**\n\t * Indica si la acción está activa o no.\n\t * @type {boolean}\n\t * @default false\n\t */\n\tactive: boolean = false;\n}\n","import { Component, ContentChildren, QueryList } from \"@angular/core\";\nimport { PopoverModule } from \"primeng/popover\";\nimport { ItemSplitDirective } from \"./itemsplit.directive\";\nimport { CommonModule } from \"@angular/common\";\n\n@Component({\n\tselector: \"intelica-button-split\",\n\timports: [PopoverModule, CommonModule],\n\ttemplateUrl: \"./button-split.component.html\",\n})\nexport class ButtonSplitComponent {\n\t/**\n\t * Directiva que representa una colección de elementos hijos del tipo `ItemSplitDirective`.\n\t * Se utiliza para acceder a las instancias de la directiva `ItemSplitDirective` dentro de un componente.\n\t * @type {QueryList<ItemSplitDirective>}\n\t */\n\t@ContentChildren(ItemSplitDirective)\n\titemsSplit!: QueryList<ItemSplitDirective>;\n\n\t/**\n\t * Muestra la plantilla asociada a una acción si se proporciona un manejador de eventos `onClick`.\n\t * - Emite el evento `onClick` de la acción si está definido.\n\t * - Detiene la propagación del evento si la propiedad `stopPropagation` de la acción está establecida.\n\t * - Activa la acción.\n\t * - Oculta el menú de selección de acciones si se cumplen ciertas condiciones.\n\t *\n\t * @param {ItemSplitDirective} item - La acción para la cual mostrar la plantilla.\n\t */\n\tshowTemplate(item: ItemSplitDirective): void {\n\t\t// Emite el evento onClick de la acción si está definido.\n\t\tif (item.onClick) {\n\t\t\titem.onClick.emit();\n\t\t}\n\n\t\t// Detiene la propagación del evento si la propiedad stopPropagation del item está establecida.\n\t\tif (item.stopPropagation) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Activa el item.\n\t\titem.active = true;\n\t}\n}\n","<button class=\"grButton grButton--icon grButton--select-popover\" (click)=\"op.toggle($event)\"><i class=\"icon icon-list-options\"></i></button>\n<p-popover #op>\n\t<div class=\"prPopoverV3 prPopoverV3--contentLeft\">\n\t\t<ul>\n\t\t\t<li [ngClass]=\"{ hidden: !item.active }\" *ngFor=\"let item of itemsSplit\" (click)=\"showTemplate(item)\">{{ item.name }}</li>\n\t\t</ul>\n\t</div>\n</p-popover>\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from \"@angular/core\";\nimport { PropertiesModel } from \"./model/properties.model\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { RadioButtonModule } from \"primeng/radiobutton\";\n\n@Component({\n\tselector: \"intelica-record-per-page\",\n\timports: [CommonModule, FormsModule, RadioButtonModule],\n\ttemplateUrl: \"./record-per-page.component.html\",\n})\nexport class RecordPerPageComponent implements OnInit, OnChanges {\n\t/**\n\t * Lista de propiedades del modelo `PropertiesModel`.\n\t * @type {PropertiesModel[]}\n\t * @default []\n\t */\n\t@Input() Properties: PropertiesModel[] = [];\n\n\t/**\n\t * Evento emitido al realizar un cambio de pagina, envia el pageSize a los componentes.\n\t * @type {EventEmitter<any>}\n\t */\n\t@Output() ReturnPage: EventEmitter<any> = new EventEmitter();\n\n\t/**\n\t * Términos utilizados en el componente.\n\t * @type {any}\n\t */\n\tTerms: any;\n\n\t/**\n\t * Lista de registros.\n\t * @type {number[]}\n\t * @default []\n\t */\n\tRecords: number[] = [];\n\n\t/**\n\t * Tamaño de página predeterminado.\n\t * @type {number}\n\t * @default 20\n\t * @private\n\t */\n\tPageSize: number = 20;\n\n\tconstructor() {}\n\n\tngOnChanges(changes: any): void {\n\t\tif (changes.Properties && changes.Properties.currentValue.length > 0) this.FillRecordperPage();\n\t}\n\n\tngOnDestroy(): void {}\n\n\tngOnInit(): void {\n\t\tthis.FillRecordperPage();\n\t}\n\n\tChangePageSize() {\n\t\tthis.ReturnPage.emit(this.PageSize);\n\t}\n\n\t/**\n\t * Rellena la lista de registros por página basándose en las propiedades del modelo.\n\t * - Utiliza el término de idioma global para la configuración.\n\t * - Filtra las propiedades para obtener la propiedad 'RP' (Registros por Página).\n\t * - Si la propiedad no existe, la función sale.\n\t * - Divide el valor de la propiedad 'RP' en una lista de números.\n\t * - Establece el tamaño de página predeterminado como el primer elemento de la lista.\n\t */\n\tFillRecordperPage(): any {\n\t\t// Utiliza el término de idioma global para la configuración.\n\t\t// this.terms = this.globals.languageTerms;\n\n\t\t// Filtra las propiedades para obtener la propiedad 'RP' (Registros por Página).\n\t\tvar rpProperty = this.Properties.filter(x => x.code === \"RP\");\n\n\t\t// Si la propiedad no existe, la función sale temprano.\n\t\tif (rpProperty.length === 0) return;\n\n\t\t// Divide el valor de la propiedad 'RP' en una lista de números.\n\t\tthis.Records = rpProperty[0].value.split(\",\").map(x => parseInt(x));\n\n\t\t// Establece el tamaño de página predeterminado como el primer elemento de la lista.\n\t\tthis.PageSize = this.Records[0];\n\t}\n}\n","<div style=\"width: 400px\">\n\t<div class=\"recordsPerPageCtr\">\n\t\t<ng-container *ngFor=\"let record of Records; let i = index\">\n\t\t\t<div class=\"form-check form-check-inline\">\n\t\t\t\t<p-radiobutton class=\"prRadioButton\" [inputId]=\"'radio-' + i\" name=\"optSortRP1\" [(ngModel)]=\"PageSize\" [value]=\"record\" [tabindex]=\"i\" />\n\t\t\t\t<label [for]=\"'radio-' + i\">{{ record }}</label>\n\t\t\t</div>\n\t\t</ng-container>\n\t</div>\n\t<div class=\"recordsPerPageBtnCtr\">\n\t\t<button class=\"grButton grButton--primary applyAnalytics\" (click)=\"ChangePageSize()\">\n\t\t\t<span>Apply</span>\n\t\t</button>\n\t</div>\n</div>\n","export class OrderConstants {\n\t//DESCRIPTION\n\tpublic static ORDER_BY_DESC = \"desc\";\n\tpublic static ORDER_BY_ASC = \"asc\";\n\t//VALUES\n\tpublic static ORDER_BY_DESC_VALUE = \"1\";\n\tpublic static ORDER_BY_ASC_VALUE = \"0\";\n}\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { RadioButtonModule } from \"primeng/radiobutton\";\nimport { ButtonModule } from \"primeng/button\";\nimport { Subscription } from \"rxjs\";\nimport { CascadeFilterModel } from \"./model/cascade-filter\";\nimport { OrderConstants } from \"./model/order.constants\";\n\n@Component({\n\tselector: \"intelica-sorting\",\n\timports: [CommonModule, FormsModule, RadioButtonModule, ButtonModule],\n\ttemplateUrl: \"./sorting.component.html\",\n})\nexport class SortingComponent implements OnInit, OnChanges {\n\t/**\n\t * Suscripción a un observable.\n\t * @type {Subscription}\n\t */\n\tsubscription: Subscription = new Subscription();\n\n\t/**\n\t * Términos utilizados en el componente.\n\t * @type {any}\n\t */\n\tterms: any;\n\n\t/**\n\t * Lista de modelos de filtro en cascada.\n\t * @type {CascadeFilterModel[]}\n\t * @default []\n\t */\n\tLCascadefilter: CascadeFilterModel[] = [];\n\n\t/**\n\t * Número máximo de ordenamiento.\n\t * @type {number}\n\t * @default 4\n\t */\n\tNumMaxSorting = 4;\n\n\t/**\n\t * Lista de objetos de ordenamiento.\n\t * @type {any}\n\t * @default []\n\t */\n\t@Input() Sorters: any = [];\n\n\t/**\n\t * Objeto que indica el ordenamiento actual.\n\t * @type {any}\n\t */\n\t@Input() OrderBy: any;\n\n\t/**\n\t * Objeto que indica el ordenamiento predeterminado.\n\t * @type {any}\n\t * @default {}\n\t */\n\t@Input() OrderByDefault: any = {};\n\n\t/**\n\t * Indica si se debe realizar un solo renderizado.\n\t * @type {boolean}\n\t * @default false\n\t */\n\t@Input() OneRender: boolean = false;\n\n\t/**\n\t * Evento emitido al realizar un retorno de datos.\n\t * @type {EventEmitter<any>}\n\t */\n\t@Output() ReturnSorting: EventEmitter<any> = new EventEmitter();\n\n\t/**\n\t * Evento emitido al alertar sobre una ordenación.\n\t * @type {EventEmitter<any>}\n\t */\n\t@Output() AlertOrder: EventEmitter<any> = new EventEmitter();\n\n\t/**\n\t * Objeto que contiene constantes de ordenación.\n\t * @type {OrderConstants}\n\t */\n\tOrder = OrderConstants;\n\n\tconstructor() {}\n\n\tngOnDestroy(): void {\n\t\tthis.subscription.unsubscribe();\n\t}\n\n\tngOnInit(): void {\n\t\t// this.subscription = this.sharedService.isLoadingPageInfo.subscribe({\n\t\t// \tnext: isLoadingPageInfo => {\n\t\t// \t\tif (!isLoadingPageInfo) this.terms = this.globals.languageTerms;\n\t\t// \t},\n\t\t// });\n\t}\n\n\tngOnChanges(changes: any): void {\n\t\tif (changes.OrderBy && this.Sorters.length > 0) this.GetInfoSorting();\n\t\tif (changes.Sorters && this.Sorters.length > 0) this.GetInfoSorting();\n\t\t// this.terms = this.globals.languageTerms;\n\t}\n\n\t/**\n\t * Obtiene información sobre la ordenación y la asigna a la lista de modelos de filtro en cascada.\n\t * - Si no hay información de ordenación (`orderBy`), la función sale.\n\t * - Crea una lista de modelos de filtro en cascada con una longitud determinada.\n\t * - Filtra las propiedades de ordenación que coinciden con los campos existentes.\n\t * - Asigna las propiedades de ordenación a los modelos de filtro en cascada.\n\t */\n\tGetInfoSorting(): void {\n\t\t// Si no hay información de ordenación (orderBy), la función sale temprano.\n\t\tif (!this.OrderBy) return;\n\n\t\t// Crea una lista de modelos de filtro en cascada con una longitud determinada.\n\t\tthis.LCascadefilter = this.PushCascade(this.Sorters.length);\n\n\t\t// Filtra las propiedades de ordenación que coinciden con los campos existentes.\n\t\tthis.OrderBy = Object.fromEntries(Object.entries(this.OrderBy).filter(([key]) => this.Sorters.find((y: any) => y.field === key)));\n\n\t\t// Obtiene las columnas y el orden de la ordenación.\n\t\tconst columns = Object.keys(this.OrderBy).map(x => x);\n\t\tconst order = columns.map(x => this.OrderBy[x]);\n\n\t\t// Asigna las propiedades de ordenación a los modelos de filtro en cascada.\n\t\tcolumns.forEach((f: any, i) => {\n\t\t\tthis.LCascadefilter[i].id = f;\n\t\t\tthis.LCascadefilter[i].order = order[i];\n\t\t});\n\t}\n\n\t/**\n\t * Función que genera una lista de modelos de filtro en cascada con una cantidad determinada.\n\t *\n\t * @param {number} cant - Cantidad de modelos de filtro en cascada a generar.\n\t * @returns {Array} - Lista de modelos de filtro en cascada.\n\t */\n\tPushCascade(cant: number): Array<any> {\n\t\tlet Lcascadefilter = [];\n\t\tfor (let i = 0; i < cant; i++) {\n\t\t\tLcascadefilter.push({ id: \"0\", index: i, order: OrderConstants.ORDER_BY_ASC });\n\t\t}\n\t\treturn Lcascadefilter;\n\t}\n\n\t/**\n\t * Verifica y procesa la ordenación en cascada.\n\t * - Si algún modelo de filtro en cascada tiene un ID diferente de '0', se realiza la ordenación.\n\t * - De lo contrario, se emite una alerta indicando que no hay columna seleccionada para ordenar.\n\t */\n\tCheckCascadeOrder(): void {\n\t\tthis.OrderBy = {};\n\t\tif (this.LCascadefilter.some(s => s.id !== \"0\")) {\n\t\t\tthis.CascadeOrder();\n\t\t} else {\n\t\t\treturn this.AlertOrder.emit({ ValidMessage: \"Select at least one column to sort\" }); //this.sharedService.getTermTextByCode(\"MSG_NO_COLUMN_ORDER\") });\n\t\t}\n\t}\n\n\t/**\n\t * Procesa la ordenación en cascada y emite el resultado.\n\t */\n\tCascadeOrder(): void {\n\t\tthis.LCascadefilter.forEach(element => {\n\t\t\tif (element.id !== \"0\") {\n\t\t\t\tthis.OrderBy[element.id] = element.order;\n\t\t\t}\n\t\t});\n\t\tthis.ReturnSorting.emit(this.OrderBy);\n\t}\n\n\t/**\n\t * Restaura la ordenación en cascada a la configuración predeterminada y obtiene la información de ordenación.\n\t */\n\tClearCascadeOrder(): void {\n\t\tthis.OrderBy = { ...this.OrderByDefault };\n\t\tthis.GetInfoSorting();\n\t}\n\n\t/**\n\t * Verifica si un modelo de filtro en cascada está deshabilitado basándose en su ID.\n\t *\n\t * @param {string} id - ID del modelo de filtro en cascada.\n\t * @param {number} index - Índice del modelo de filtro en cascada.\n\t * @returns {boolean} - Indica si el modelo de filtro en cascada está deshabilitado.\n\t */\n\tCheckCascadeDisabled(id: string, index: number): boolean {\n\t\treturn this.LCascadefilter.some(e => e.id == id);\n\t}\n}\n","<ng-container>\n\t<div class=\"sortingAnalytics\">\n\t\t<div class=\"sortingCtr\">\n\t\t\t<div></div>\n\t\t\t<div class=\"triangle-top\"></div>\n\t\t\t<div class=\"triangle-down\"></div>\n\t\t\t<ng-container *ngIf=\"OneRender; else multiple_render\">\n\t\t\t\t<ng-container *ngTemplateOutlet=\"one_render; context: { Sorters: Sorters }\"></ng-container>\n\t\t\t</ng-container>\n\t\t</div>\n\n\t\t<div class=\"sortingBtnCtr\">\n\t\t\t<!-- <span>{{'BTN_APPLY_SORT' | term : terms}}</span> -->\n\t\t\t<p-button pRipple class=\"prButton applyAnalytics\" label=\"{{ 'Apply sort' }}\" (onClick)=\"CheckCascadeOrder()\" />\n\t\t\t<!-- <span>{{'BTN_CLEAR_SORT' | term : terms}}</span> -->\n\t\t\t<p-button pRipple class=\"prButton cleanAnalytics\" label=\"{{ 'Clear sort' }}\" severity=\"secondary\" (onClick)=\"ClearCascadeOrder()\" />\n\t\t</div>\n\t</div>\n</ng-container>\n\n<ng-template #one_render let-Sorters=\"Sorters\">\n\t<ng-container *ngFor=\"let row of Sorters; let i = index\">\n\t\t<ng-container *ngIf=\"LCascadefilter.length > 0 && i <= NumMaxSorting\">\n\t\t\t<ng-container *ngIf=\"OneRender && i == 0\">\n\t\t\t\t<div class=\"idx-select\" *ngIf=\"i < LCascadefilter.length\">\n\t\t\t\t\t<div class=\"formRowInputNumber\">\n\t\t\t\t\t\t<span>{{ i + 1 }}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<select class=\"grSelect\" [(ngModel)]=\"LCascadefilter[i].id\">\n\t\t\t\t\t\t<option *ngIf=\"i === 0\" [value]=\"0\">\n\t\t\t\t\t\t\t--\n\t\t\t\t\t\t\t<!-- <span>{{ \"LBL_SORT_BY\" | term : terms }}</span> -->\n\t\t\t\t\t\t\t<span>Sort By</span>\n\t\t\t\t\t\t\t--\n\t\t\t\t\t\t</option>\n\t\t\t\t\t\t<option *ngFor=\"let sort of Sorters\" [ngValue]=\"sort.field\" [disabled]=\"CheckCascadeDisabled(sort.field, i)\">\n\t\t\t\t\t\t\t{{ sort.headerText }}\n\t\t\t\t\t\t</option>\n\t\t\t\t\t</select>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"form-check\" *ngIf=\"i < LCascadefilter.length\">\n\t\t\t\t\t<p-radiobutton class=\"prRadioButton\" name=\"optSort{{ i }}\" [value]=\"Order.ORDER_BY_ASC\" [inputId]=\"'test{{ i + i + 1 }}'\" [(ngModel)]=\"LCascadefilter[i].order\" tabindex=\"0\" />\n\t\t\t\t\t<label for=\"test{{ i + i + 1 }}\"></label>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"form-check\" *ngIf=\"i < LCascadefilter.length\">\n\t\t\t\t\t<p-radiobutton class=\"prRadioButton\" name=\"optSort{{ i }}\" [value]=\"Order.ORDER_BY_DESC\" [inputId]=\"'test{{ i + i + 2 }}'\" [(ngModel)]=\"LCascadefilter[i].order\" tabindex=\"0\" />\n\t\t\t\t\t<label for=\"test{{ i + i + 2 }}\"></label>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t</ng-container>\n\t</ng-container>\n</ng-template>\n\n<ng-template #multiple_render>\n\t<ng-container *ngFor=\"let row of Sorters; let i = index\">\n\t\t<ng-container *ngIf=\"LCascadefilter.length > 0 && i <= NumMaxSorting\">\n\t\t\t<div class=\"idx-select\" *ngIf=\"i < LCascadefilter.length\">\n\t\t\t\t<div class=\"formRowInputNumber\">\n\t\t\t\t\t<span>{{ i + 1 }}</span>\n\t\t\t\t</div>\n\t\t\t\t<select class=\"grSelect\" [(ngModel)]=\"LCascadefilter[i].id\">\n\t\t\t\t\t<option *ngIf=\"i === 0\" [value]=\"0\">\n\t\t\t\t\t\t--\n\t\t\t\t\t\t<!-- <span>{{ \"LBL_SORT_BY\" | term : terms }}</span> -->\n\t\t\t\t\t\t<span>Sort By</span>\n\t\t\t\t\t\t--\n\t\t\t\t\t</option>\n\t\t\t\t\t<option *ngIf=\"i > 0\" [value]=\"0\">\n\t\t\t\t\t\t--\n\t\t\t\t\t\t<!-- <span>{{ \"LBL_SORT_THEN\" | term : terms }}</span> -->\n\t\t\t\t\t\t<span>Then by</span>\n\t\t\t\t\t\t--\n\t\t\t\t\t</option>\n\t\t\t\t\t<option *ngFor=\"let sort of Sorters\" [ngValue]=\"sort.field\" [disabled]=\"CheckCascadeDisabled(sort.field, i)\">\n\t\t\t\t\t\t{{ sort.headerText }}\n\t\t\t\t\t</option>\n\t\t\t\t</select>\n\t\t\t</div>\n\n\t\t\t<div class=\"form-check\" *ngIf=\"i < LCascadefilter.length\">\n\t\t\t\t<p-radiobutton class=\"prRadioButton\" name=\"optSort{{ i }}\" [value]=\"Order.ORDER_BY_ASC\" [inputId]=\"'test{{ i + i + 1 }}'\" [(ngModel)]=\"LCascadefilter[i].order\" tabindex=\"0\" />\n\t\t\t\t<label for=\"test{{ i + i + 1 }}\"></label>\n\t\t\t</div>\n\n\t\t\t<div class=\"form-check\" *ngIf=\"i < LCascadefilter.length\">\n\t\t\t\t<p-radiobutton class=\"prRadioButton\" name=\"optSort{{ i }}\" [value]=\"Order.ORDER_BY_DESC\" [inputId]=\"'test{{ i + i + 2 }}'\" [(ngModel)]=\"LCascadefilter[i].order\" tabindex=\"0\" />\n\t\t\t\t<label for=\"test{{ i + i + 2 }}\"></label>\n\t\t\t</div>\n\t\t</ng-container>\n\t</ng-container>\n</ng-template>\n","import { Component, Input } from \"@angular/core\";\nimport { PopoverInformationModel } from \"./model/popover-information.model\";\nimport { CommonModule } from \"@angular/common\";\n\n@Component({\n\tselector: \"intelica-popover\",\n\timports: [CommonModule],\n\ttemplateUrl: \"./popover.component.html\",\n})\nexport class PopoverComponent {\n\t/**\n\t * Información de asignación utilizada para la inicialización del popover.\n\t * @type {PopoverModel}\n\t * @default {}\n\t */\n\t@Input() information: PopoverInformationModel[] = [];\n}\n","<div class=\"tooltipTable tooltipTable--limitHeight\">\n\t<div class=\"tooltipTable__row\" *ngFor=\"let item of information\">\n\t\t<div class=\"tooltipTable__left\">\n\t\t\t<span>{{ item.title }}</span>\n\t\t</div>\n\t\t<div class=\"tooltipTable__right tooltipTable__right--gray\">{{ item.description }}</div>\n\t</div>\n</div>\n","import { CommonModule, isPlatformBrowser } from \"@angular/common\";\nimport { AfterViewInit, Component, ElementRef, EventEmitter, Inject, Input, Output, PLATFORM_ID } from \"@angular/core\";\nimport * as echarts from \"echarts\";\nimport { EChartsOption } from \"echarts\";\n\n@Component({\n\tselector: \"intelica-echart\",\n\timports: [CommonModule],\n\ttemplateUrl: \"./echart.component.html\",\n})\nexport class EchartComponent implements AfterViewInit {\n\t@Input() config!: EChartsOption | undefined;\n\t@Input() id!: string;\n\t@Input() renderer: \"canvas\" | \"svg\" = \"canvas\";\n\t@Input() containerStyle: { [klass: string]: any } = {\n\t\twidth: \"100%\",\n\t\theight: \"400px\",\n\t};\n\t@Output() event = new EventEmitter<any>();\n\n\tchart!: echarts.ECharts;\n\n\tconstructor(\n\t\tprivate el: ElementRef,\n\t\t@Inject(PLATFORM_ID) private platformId: Object\n\t) {}\n\n\tngAfterViewInit(): void {\n\t\tconst chartElement = this.el.nativeElement.querySelector(`#${this.id}_plot`);\n\t\tif (!this.config) {\n\t\t\tthrow new Error(\"Chart configuration is not set\");\n\t\t}\n\t\tif (!isPlatformBrowser(this.platformId)) {\n\t\t\tthrow new Error(\"Platform is not browser\");\n\t\t}\n\n\t\tif (!chartElement) {\n\t\t\tthrow new Error(\"Plot area not found\");\n\t\t}\n\n\t\tthis.initChart(chartElement);\n\t}\n\n\trefreshChart() {\n\t\tthis.chart.setOption(this.config!);\n\t}\n\n\tresize() {\n\t\tif (this.chart) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.chart.resize();\n\t\t\t}, 1);\n\t\t}\n\t}\n\n\tprivate initChart(chartElement: any) {\n\t\tconst observer = new ResizeObserver(() => this.resize());\n\t\tthis.chart = echarts.init(chartElement, null, { renderer: this.renderer });\n\t\tthis.chart.setOption(this.config!);\n\t\tthis.chart.on(\"click\", params => {\n\t\t\tthis.event.emit(params);\n\t\t});\n\t\tobserver.observe(chartElement);\n\t}\n}\n","<div [id]=\"id + '_plot'\" class=\"chart\" [ngStyle]=\"containerStyle\"></div>\n","import { Component, ViewChild, ElementRef, ContentChild, TemplateRef, HostListener, ContentChildren, QueryList, OnInit, inject, Input, Output, EventEmitter } from \"@angular/core\";\nimport { ButtonModule } from \"primeng/button\";\nimport { InputGroupAddonModule } from \"primeng/inputgroupaddon\";\nimport { CommonModule } from \"@angular/common\";\nimport { RippleModule } from \"primeng/ripple\";\nimport { TermPipe } from \"../../pipes/term.pipes\";\nimport { GlobalTermService } from \"../../services/globalTerm.service\";\n\n@Component({\n\tselector: \"intelica-template-menu\",\n\timports: [ButtonModule, InputGroupAddonModule, CommonModule, RippleModule, TermPipe],\n\ttemplateUrl: \"./template-menu.component.html\",\n})\nexport class TemplateMenuComponent {\n\treadonly GlobalTermService = inject(GlobalTermService);\n\t@ViewChild(\"popover\") Popover!: ElementRef;\n\t@ViewChild(\"menuButton\") MenuButton!: ElementRef;\n\t@ViewChild(\"popoverContainer\") PopoverContainer!: ElementRef;\n\n\t@Output(\"onOpen\") openPanelEvent: EventEmitter<any> = new EventEmitter<any>();\n\t@Output(\"onClose\") closePanelEvent: EventEmitter<any> = new EventEmitter<any>();\n\n\tIsPopoverOpen: boolean = false;\n\tIsClickInsideDatepicker: boolean = false;\n\n\tconstructor() {}\n\n\topenPanel() {\n\t\tthis.IsPopoverOpen = true;\n\t\tthis.Popover.nativeElement.style.display = \"block\";\n\t\tthis.MenuButton.nativeElement.classList.add(\"active\");\n\t\tthis.PopoverContainer.nativeElement.classList.add(\"backdrop-visible\");\n\t\tthis.openPanelEvent.emit({\n\t\t\topen: this.IsPopoverOpen,\n\t\t\telement: this.Popover.nativeElement,\n\t\t});\n\t}\n\n\tclosePanel() {\n\t\tthis.IsPopoverOpen = false;\n\t\tthis.Popover.nativeElement.style.display = \"none\";\n\t\tthis.MenuButton.nativeElement.classList.remove(\"active\");\n\t\tthis.PopoverContainer.nativeElement.classList.remove(\"backdrop-visible\");\n\t\tthis.closePanelEvent.emit({\n\t\t\topen: this.IsPopoverOpen,\n\t\t\telement: this.Popover.nativeElement,\n\t\t});\n\t}\n\n\ttogglePanel(event?: Event) {\n\t\tthis.IsPopoverOpen ? this.closePanel() : this.openPanel();\n\t}\n\n\t@HostListener(\"mousedown\", [\"$event\"])\n\tonMouseDown(event: Event) {\n\t\tconst target = event.target as HTMLElement;\n\t\tif (target.closest(\".p-datepicker\") || target.closest(\".p-inputtext\") || target.closest(\".p-select-panel\") || target.closest(\".p-multiselect-panel\")) {\n\t\t\tthis.IsClickInsideDatepicker = true;\n\t\t}\n\t}\n\n\t@HostListener(\"window:mousedown\", [\"$event\"])\n\tonMouseDownOutsideBody(event: Event) {\n\t\tconst target = event.target as HTMLElement;\n\t\tif (target.closest(\".p-datepicker\") || target.closest(\".p-inputtext\") || target.closest(\".p-select-panel\") || target.closest(\".p-multiselect-panel\") || target.closest(\".swal2-container\")) {\n\t\t\tthis.IsClickInsideDatepicker = true;\n\t\t}\n\t}\n\n\t@HostListener(\"mouseup\", [\"$event\"])\n\tonMouseUp(event: Event) {\n\t\tsetTimeout(() => {\n\t\t\tthis.IsClickInsideDatepicker = false;\n\t\t}, 100);\n\t}\n\n\t@HostListener(\"document:click\", [\"$event\"])\n\tcloseAll(event?: Event) {\n\t\tif (!event) return;\n\t\tconst target = event.target as HTMLElement;\n\t\t// const forceCloseClasses = [\"closePopoverNow\", \"closeTemplateMenu\"];\n\t\t// if (forceCloseClasses.some(className => target.closest(`.${className}`))) {\n\t\t// \tthis.closePanel();\n\t\t// \treturn;\n\t\t// }\n\t\tif (this.IsPopoverOpen && this.PopoverContainer && target === this.PopoverContainer.nativeElement) {\n\t\t\tthis.closePanel();\n\t\t\treturn;\n\t\t}\n\t\tconst allowedClasses = [\n\t\t\t\"prSelect\",\n\t\t\t\"p-select-option-selected\",\n\t\t\t\"p-select-option\",\n\t\t\t\"p-datepicker-panel\",\n\t\t\t\"p-datepicker-select-month\",\n\t\t\t\"p-button-text\",\n\t\t\t\"p-datepicker-select-year\",\n\t\t\t\"p-datepicker-month\",\n\t\t\t\"p-datepicker-year\",\n\t\t\t\"p-checkbox-input\",\n\t\t\t\"p-multiselect-option\",\n\t\t\t\"p-multiselect-filter\",\n\t\t\t\"p-multiselect-empty-message\",\n\t\t\t\"p-inputicon\",\n\t\t\t\"p-tree-node-selected\",\n\t\t\t\"p-tree-node-content\",\n\t\t\t\"p-multiselect-header\",\n\t\t\t\"grButton--icon-close-modal\",\n\t\t\t\"p-overlay-mask\",\n\t\t\t\"p-select-clear-icon\",\n\t\t\t\"formRowInputClear\",\n\t\t\t\"icon-times\",\n\t\t\t\"p-select-empty-message\",\n\t\t\t\"p-select-list\",\n\t\t\t\"p-iconfield\",\n\t\t\t\"p-inputtext\",\n\t\t\t\"p-select-header\",\n\t\t\t\"p-overlay\",\n\t\t\t\"p-select-filter\",\n\t\t\t\"p-overlay-content\",\n\t\t\t\"p-select-overlay\",\n\t\t\t\"p-select-panel\",\n\t\t\t\"p-multiselect-panel\",\n\t\t];\n\t\tif (this.IsClickInsideDatepicker) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (allowedClasses.some(className => target.closest(`.${className}`))) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.Popover && !this.Popover.nativeElement.contains(target) && this.MenuButton && !this.MenuButton.nativeElement.contains(target)) {\n\t\t\tthis.closePanel();\n\t\t}\n\t}\n}\n","<div #popoverContainer class=\"grPopoverContainer\">\n\t<button #menuButton class=\"grMenuTemplate\" (click)=\"togglePanel($event)\">\n\t\t<span class=\"grMenuTemplate__ico\"><i class=\"icon icon-filter-option\"></i></span>\n\t\t<span class=\"grMenuTemplate__txt\">{{ \"Filters\" | term : GlobalTermService.languageCode }}</span>\n\t</button>\n\t<div class=\"grPopover\" #popover>\n\t\t<div class=\"grPopoverMenu\" [ngClass]=\"{ hidden: !IsPopoverOpen }\">\n\t\t\t<div class=\"grPopoverHeader\">\n\t\t\t\t<h3>\n\t\t\t\t\t<span>{{ \"Filters\" | term : GlobalTermService.languageCode }}</span>\n\t\t\t\t</h3>\n\t\t\t</div>\n\t\t\t<div class=\"grPopoverBody grPopoverBody--template\">\n\t\t\t\t<ng-content></ng-content>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n","/**\n * Constants for DatePicker custom button types\n * Use these constants instead of string literals to maintain consistency\n * and facilitate future changes\n */\n\nexport const DATEPICKER_BUTTON_TYPES = {\n\tTODAY: 'TODAY',\n\tLAST_12_MONTHS: 'LAST_12_MONTHS',\n\tCURRENT_YEAR: 'CURRENT_YEAR',\n\tCURRENT_MONTH: 'CURRENT_MONTH',\n} as const;\n\n/**\n * Type derived from the constants object\n * This ensures type safety while using the constants\n */\nexport type CustomButtonType =\n\t(typeof DATEPICKER_BUTTON_TYPES)[keyof typeof DATEPICKER_BUTTON_TYPES];\n","import { AfterViewChecked, ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, Output, ViewChild } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { DatePicker } from \"primeng/datepicker\";\nimport { SelectModule } from \"primeng/select\";\nimport { ButtonModule } from \"primeng/button\";\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from \"@angular/forms\";\nimport { CustomButtonType, DATEPICKER_BUTTON_TYPES } from \"./datepicker-button-types.constants\";\n\n@Component({\n\tselector: \"intelica-datepicker\",\n\timports: [CommonModule, FormsModule, DatePicker, SelectModule, ButtonModule],\n\ttemplateUrl: \"./datepicker.component.html\",\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => DatepickerComponent),\n\t\t\tmulti: true,\n\t\t},\n\t],\n})\nexport class DatepickerComponent implements ControlValueAccessor, AfterViewChecked {\n\t// Expose constants to template\n\treadonly DATEPICKER_BUTTON_TYPES = DATEPICKER_BUTTON_TYPES;\n\n\t/**\n\t * @description Readonly input\n\t * @default\tfalse\n\t * @type {boolean}\n\t */\n\t@Input() readonlyInput: boolean = false;\n\n\t/**\n\t * @description Show icon\n\t * @default\tfalse\n\t * @type {boolean}\n\t */\n\t@Input() showIcon: boolean = false;\n\n\t/**\n\t * @description Number of months to display\n\t * @default\t2\n\t * @type {number}\n\t */\n\t@Input() numberOfMonths: number = 2;\n\n\t/**\n\t * @description Panel style class\n\t * @default\t\"prDatapicker prDatapicker--dropdown\"\n\t * @type {string}\n\t */\n\t@Input() panelStyleClass: string = \"prDatapicker prDatapicker--dropdown\";\n\n\t/**\n\t * @description Manual apply mode - requires Apply button click to confirm selection\n\t * @default\tfalse\n\t * @type {boolean}\n\t */\n\t@Input() manualApply: boolean = false;\n\n\t/**\n\t * @description Custom buttons to show in footer\n\t * @default\t[]\n\t * @type {CustomButtonType[]}\n\t */\n\t@Input() customButtons: CustomButtonType[] = [];\n\n\t/**\n\t * @description Date format for display in input\n\t * @default\t\"dd M, yy\" (e.g., \"08 Jan, 2026\")\n\t * @type {string}\n\t */\n\t@Input() dateFormat?: string;\n\n\t/**\n\t * @description View mode for the datepicker\n\t * @default\t\"date\"\n\t * @type {\"date\" | \"month\" | \"year\"}\n\t */\n\t@Input() view: \"date\" | \"month\" | \"year\" = \"date\";\n\n\t/**\n\t * @description Selection mode for the datepicker\n\t * @default\t\"range\"\n\t * @type {\"single\" | \"range\"}\n\t */\n\t@Input() selectionMode: \"single\" | \"range\" = \"range\";\n\n\t/**\n\t * @description Change event\n\t * @emits {(Date | null)[] | null}\n\t * @type {EventEmitter<(Date | null)[] | null>}\n\t */\n\t@Output(\"onChange\") onChangeEvent: EventEmitter<(Date | null)[] | null> =\n\t\tnew EventEmitter();\n\n\trangeDates: (Date | null)[] | null = null;\n\n\t// Temporary selection for manual apply mode\n\ttempSelection: (Date | null)[] | null = null;\n\n\tviewMonth!: number;\n\tviewYear!: number;\n\n\tcurrentYear = new Date().getFullYear();\n\tcurrentMonth = new Date().getMonth();\n\n\tdefaultDate!: Date;\n\n\tprivate navigatingWithArrows = false;\n\n\t// ViewChild to access datepicker instance\n\t@ViewChild('datepicker') datepickerRef: any;\n\n\t// Flag to control when closing is allowed\n\tprivate allowClose: boolean = true;\n\n\t// Flag to prevent auto-close immediately after date selection\n\tprivate preventAutoClose: boolean = false;\n\n\t// Track active button\n\tactiveButton: CustomButtonType | null = null;\n\n\tmonths = [\n\t\t{ label: \"Enero\", value: 0 },\n\t\t{ label: \"Febrero\", value: 1 },\n\t\t{ label: \"Marzo\", value: 2 },\n\t\t{ label: \"Abril\", value: 3 },\n\t\t{ label: \"Mayo\", value: 4 },\n\t\t{ label: \"Junio\", value: 5 },\n\t\t{ label: \"Julio\", value: 6 },\n\t\t{ label: \"Agosto\", value: 7 },\n\t\t{ label: \"Septiembre\", value: 8 },\n\t\t{ label: \"Octubre\", value: 9 },\n\t\t{ label: \"Noviembre\", value: 10 },\n\t\t{ label: \"Diciembre\", value: 11 },\n\t];\n\n\tyears: number[] = [];\n\n\tonChangeFn: any = () => {};\n\tonTouchedFn: any = () => {};\n\n\tconstructor(private cdr: ChangeDetectorRef) {\n\t\tconst today = new Date();\n\n\t\tthis.viewMonth = today.getMonth();\n\t\tthis.viewYear = today.getFullYear();\n\n\t\tthis.defaultDate = new Date(this.viewYear, this.viewMonth, 1);\n\n\t\tconst YEARS_BACK = 10;\n\n\t\tthis.years = [];\n\t\tfor (let y = this.viewYear - YEARS_BACK; y <= this.viewYear; y++) {\n\t\t\tthis.years.push(y);\n\t\t}\n\t}\n\n\tget filteredMonths() {\n\t\tif (this.navigatingWithArrows) {\n\t\t\treturn this.months;\n\t\t}\n\n\t\tif (this.viewYear === this.currentYear) {\n\t\t\treturn this.months.filter(m => m.value >= this.currentMonth);\n\t\t}\n\n\t\treturn this.months;\n\t}\n\n\tgetDateFormat(): string {\n\t\tif (this.dateFormat) {\n\t\t\treturn this.dateFormat;\n\t\t}\n\n\t\tswitch (this.view) {\n\t\t\tcase 'month':\n\t\t\t\treturn 'M, yy';\n\t\t\tcase 'year':\n\t\t\t\treturn 'yy';\n\t\t\tdefault:\n\t\t\t\treturn 'dd M, yy';\n\t\t}\n\t}\n\n\tprivate normalizeMonthYear(month: number, year: number) {\n\t\tif (month > 11) {\n\t\t\treturn { month: 0, year: year + 1 };\n\t\t}\n\n\t\tif (month < 0) {\n\t\t\treturn { month: 11, year: year - 1 };\n\t\t}\n\n\t\treturn { month, year };\n\t}\n\n\tonMonthChange(event: any) {\n\t\tthis.navigatingWithArrows = true;\n\t\tconst normalized = this.normalizeMonthYear(event.month, event.year);\n\t\tthis.viewMonth = normalized.month;\n\t\tthis.viewYear = normalized.year;\n\t}\n\n\tonYearChange(event: any) {\n\t\tthis.navigatingWithArrows = true;\n\t\tconst normalized = this.normalizeMonthYear(event.month, event.year);\n\t\tthis.viewMonth = normalized.month;\n\t\tthis.viewYear = normalized.year;\n\t}\n\n\tonViewChange() {\n\t\tthis.navigatingWithArrows = false;\n\t\tif (this.viewYear === this.currentYear && this.viewMonth < this.currentMonth) {\n\t\t\tthis.viewMonth = this.currentMonth;\n\t\t}\n\t\tthis.defaultDate = new Date(this.viewYear, this.viewMonth, 1);\n\t}\n\n\t// Internal model for the datepicker (handles manual apply mode)\n\tget internalModel(): (Date | null)[] | null {\n\t\t// In manual apply mode, show temp selection for the calendar\n\t\t// In normal mode, show the actual value\n\t\treturn this.manualApply ? this.tempSelection : this.rangeDates;\n\t}\n\n\t// Handle model changes from datepicker\n\tonModelChange(val: (Date | null)[] | null): void {\n\t\t// Reset active button when user manually selects dates\n\t\tthis.activeButton = null;\n\n\t\tif (this.manualApply) {\n\t\t\t// In manual apply mode, only store in temp selection\n\t\t\tthis.tempSelection = val;\n\n\t\t\t// Prevent auto-close immediately after date selection\n\t\t\tthis.preventAutoClose = true;\n\n\t\t\t// After a brief moment, allow closing by clicking outside\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.preventAutoClose = false;\n\t\t\t}, 200);\n\t\t} else {\n\t\t\t// In normal mode, update the actual value immediately\n\t\t\tthis.rangeDates = val;\n\t\t\tthis.onChangeEvent.emit(this.rangeDates);\n\t\t\tthis.onChangeFn(this.rangeDates);\n\t\t\tthis.onTouchedFn();\n\t\t}\n\t}\n\n\twriteValue(value: (Date | null)[] | null): void {\n\t\tthis.rangeDates = value;\n\t\tif (this.manualApply) {\n\t\t\tthis.tempSelection = value;\n\t\t}\n\t}\n\n\tregisterOnChange(fn: any): void {\n\t\tthis.onChangeFn = fn;\n\t}\n\n\tregisterOnTouched(fn: any): void {\n\t\tthis.onTouchedFn = fn;\n\t}\n\n\tsetDisabledState?(isDisabled: boolean): void {\n\t\t/* opcional: implementar si necesitas deshabilitar el componente desde ngModel */\n\t}\n\n\tonDateChange() {\n\t\tthis.onChangeEvent.emit(this.rangeDates);\n\t\tthis.onChangeFn(this.rangeDates);\n\t\tthis.onTouchedFn();\n\t}\n\n\t// Event handlers for open/close\n\thandleOpen(): void {\n\t\tif (this.manualApply) {\n\t\t\t// Initialize temp selection with current value\n\t\t\tthis.tempSelection = this.rangeDates;\n\t\t\t// Reset flags\n\t\t\tthis.allowClose = false;\n\t\t\tthis.preventAutoClose = false;\n\n\t\t\t// Ensure hideOverlay is overridden every time the overlay opens\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.setupHideOverlayOverride();\n\t\t\t}, 0);\n\t\t}\n\t}\n\n\thandleClose(): void {\n\t\tif (this.manualApply) {\n\t\t\t// Reset temp selection to current value (discards changes if not applied)\n\t\t\tthis.tempSelection = this.rangeDates;\n\t\t\t// Reset flags\n\t\t\tthis.allowClose = false;\n\t\t\tthis.preventAutoClose = false;\n\n\t\t\t// Force the datepicker to refresh its internal model to show the original value\n\t\t\t// Use setTimeout to ensure the change happens after the close animation\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (this.datepickerRef) {\n\t\t\t\t\t// Update the datepicker's internal value\n\t\t\t\t\tthis.datepickerRef.value = this.rangeDates;\n\t\t\t\t\t// Trigger change detection\n\t\t\t\t\tthis.cdr.detectChanges();\n\t\t\t\t}\n\t\t\t}, 0);\n\t\t}\n\t}\n\n\t// Apply button callback\n\tapplyCallback(event: any): void {\n\t\t// Apply the temporary selection to the actual value\n\t\tthis.rangeDates = this.tempSelection;\n\t\tthis.onChangeEvent.emit(this.rangeDates);\n\t\tthis.onChangeFn(this.rangeDates);\n\t\tthis.onTouchedFn();\n\n\t\t// Allow closing\n\t\tthis.allowClose = true;\n\t\tthis.preventAutoClose = false;\n\n\t\t// Close the datepicker overlay\n\t\tif (this.datepickerRef) {\n\t\t\tthis.datepickerRef.overlayVisible = false;\n\t\t}\n\t}\n\n\t// Clear button callback\n\tclearCallback(event: any): void {\n\t\t// Reset active button\n\t\tthis.activeButton = null;\n\n\t\tif (this.manualApply) {\n\t\t\t// In manual apply mode, clear both temp selection and actual value\n\t\t\tthis.tempSelection = null;\n\t\t\tthis.rangeDates = null;\n\t\t\tthis.onChangeEvent.emit(this.rangeDates);\n\t\t\tthis.onChangeFn(this.rangeDates);\n\t\t\tthis.onTouchedFn();\n\t\t\t// Allow closing\n\t\t\tthis.allowClose = true;\n\t\t\tthis.preventAutoClose = false;\n\t\t} else {\n\t\t\tthis.rangeDates = null;\n\t\t\tthis.onChangeEvent.emit(this.rangeDates);\n\t\t\tthis.onChangeFn(this.rangeDates);\n\t\t\tthis.onTouchedFn();\n\t\t}\n\n\t\t// Close the datepicker overlay\n\t\tif (this.datepickerRef) {\n\t\t\tthis.datepickerRef.overlayVisible = false;\n\t\t}\n\t}\n\n\t// Custom button callbacks\n\ttodayCallback(event: any): void {\n\t\tconst today = new Date();\n\t\tconst dateRange: (Date | null)[] = [today, today];\n\n\t\tthis.activeButton = DATEPICKER_BUTTON_TYPES.TODAY;\n\n\t\tif (this.manualApply) {\n\t\t\tthis.tempSelection = dateRange;\n\t\t} else {\n\t\t\tthis.rangeDates = dateRange;\n\t\t\tthis.onChangeEvent.emit(this.rangeDates);\n\t\t\tthis.onChangeFn(this.rangeDates);\n\t\t\tthis.onTouchedFn();\n\t\t}\n\t}\n\n\tlast12MonthsCallback(event: any): void {\n\t\tconst endDate = new Date();\n\t\tconst startDate = new Date();\n\t\tstartDate.setMonth(startDate.getMonth() - 12);\n\t\tconst dateRange: (Date | null)[] = [startDate, endDate];\n\n\t\tthis.activeButton = DATEPICKER_BUTTON_TYPES.LAST_12_MONTHS;\n\n\t\tif (this.manualApply) {\n\t\t\tthis.tempSelection = dateRange;\n\t\t} else {\n\t\t\tthis.rangeDates = dateRange;\n\t\t\tthis.onChangeEvent.emit(this.rangeDates);\n\t\t\tthis.onChangeFn(this.rangeDates);\n\t\t\tthis.onTouchedFn();\n\t\t}\n\t}\n\n\tcurrentYearCallback(event: any): void {\n\t\tconst today = new Date();\n\t\tconst startDate = new Date(today.getFullYear(), 0, 1); // January 1st\n\t\tconst endDate = new Date(today.getFullYear(), 11, 31); // December 31st\n\t\tconst dateRange: (Date | null)[] = [startDate, endDate];\n\n\t\tthis.activeButton = DATEPICKER_BUTTON_TYPES.CURRENT_YEAR;\n\n\t\tif (this.manualApply) {\n\t\t\tthis.tempSelection = dateRange;\n\t\t} else {\n\t\t\tthis.rangeDates = dateRange;\n\t\t\tthis.onChangeEvent.emit(this.rangeDates);\n\t\t\tthis.onChangeFn(this.rangeDates);\n\t\t\tthis.onTouchedFn();\n\t\t}\n\t}\n\n\tcurrentMonthCallback(event: any): void {\n\t\tconst today = new Date();\n\t\tconst startDate = new Date(today.getFullYear(), today.getMonth(), 1); // First day of month\n\t\tconst lastDay = new Date(today.getFullYear(), today.getMonth() + 1, 0).getDate();\n\t\tconst endDate = new Date(today.getFullYear(), today.getMonth(), lastDay); // Last day of month\n\t\tconst dateRange: (Date | null)[] = [startDate, endDate];\n\n\t\tthis.activeButton = DATEPICKER_BUTTON_TYPES.CURRENT_MONTH;\n\n\t\tif (this.manualApply) {\n\t\t\tthis.tempSelection = dateRange;\n\t\t} else {\n\t\t\tthis.rangeDates = dateRange;\n\t\t\tthis.onChangeEvent.emit(this.rangeDates);\n\t\t\tthis.onChangeFn(this.rangeDates);\n\t\t\tthis.onTouchedFn();\n\t\t}\n\t}\n\n\t// Helper method to check if a button should be shown\n\tshouldShowButton(buttonType: CustomButtonType): boolean {\n\t\treturn this.customButtons.includes(buttonType);\n\t}\n\n\t// Helper method to get button class\n\tgetButtonClass(buttonType: CustomButtonType): string {\n\t\treturn this.activeButton === buttonType ? 'btnActive' : 'btnSecond';\n\t}\n\n\tngAfterViewChecked(): void {\n\t\t// Sync viewYear with PrimeNG's internal year when in month view\n\t\tif (this.view === 'month' && this.datepickerRef && this.datepickerRef.currentYear !== undefined) {\n\t\t\tif (this.viewYear !== this.datepickerRef.currentYear) {\n\t\t\t\t// Use setTimeout to avoid ExpressionChangedAfterItHasBeenCheckedError\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.viewYear = this.datepickerRef.currentYear;\n\t\t\t\t}, 0);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate setupHideOverlayOverride(): void {\n\t\tif (!this.datepickerRef) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if hideOverlay method exists\n\t\tif (!this.datepickerRef.hideOverlay) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Save the original method only once\n\t\tif (!this.datepickerRef._hideOverlayOriginal) {\n\t\t\tthis.datepickerRef._hideOverlayOriginal = this.datepickerRef.hideOverlay.bind(this.datepickerRef);\n\t\t}\n\n\t\t// Override the hideOverlay method\n\t\tthis.datepickerRef.hideOverlay = () => {\n\t\t\t// In manual apply mode, prevent auto-close only immediately after date selection\n\t\t\tif (this.manualApply && this.preventAutoClose) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// In manual apply mode, if closing without Apply button (clicking outside)\n\t\t\t// Reset temp selection to original value BEFORE closing\n\t\t\tif (this.manualApply && !this.allowClose) {\n\t\t\t\t// Reset temp selection to discard changes\n\t\t\t\tthis.tempSelection = this.rangeDates;\n\t\t\t\t// Update datepicker's internal value\n\t\t\t\tthis.datepickerRef.value = this.rangeDates;\n\t\t\t}\n\n\t\t\t// Allow closing\n\t\t\tthis.datepickerRef._hideOverlayOriginal();\n\t\t};\n\t}\n}\n","<p-datepicker\n\t#datepicker\n\t[class]=\"panelStyleClass\"\n\t[ngModel]=\"internalModel\"\n\t(ngModelChange)=\"onModelChange($event)\"\n\t[selectionMode]=\"selectionMode\"\n\t[numberOfMonths]=\"numberOfMonths\"\n\t[readonlyInput]=\"readonlyInput\"\n\t[showIcon]=\"showIcon\"\n\t[view]=\"view\"\n\t[dateFormat]=\"getDateFormat()\"\n\t[defaultDate]=\"defaultDate\"\n\t(onMonthChange)=\"onMonthChange($event)\"\n\t(onYearChange)=\"onYearChange($event)\"\n\t(onShow)=\"handleOpen()\"\n\t(onHide)=\"handleClose()\"\n\t>\n\n\t<ng-template pTemplate=\"header\">\n\t\t<div class=\"prDatapicker__header\">\n\t\t\t<div class=\"prDatapicker__content\">\n\n\t\t\t\t<!-- MES -->\n\t\t\t\t<p-select\n\t\t\t\t\t*ngIf=\"view === 'date'\"\n\t\t\t\t\tclass=\"prSelect\"\n\t\t\t\t\t[options]=\"filteredMonths\"\n\t\t\t\t\toptionLabel=\"label\"\n\t\t\t\t\toptionValue=\"value\"\n\t\t\t\t\t[(ngModel)]=\"viewMonth\"\n\t\t\t\t\t(ngModelChange)=\"onViewChange()\"\n\t\t\t\t\tdropdownIcon=\"icon icon-arrow-down\">\n\t\t\t\t</p-select>\n\n\t\t\t\t<!-- AÑO -->\n\t\t\t\t<p-select\n\t\t\t\t\t*ngIf=\"view === 'date' || view === 'month'\"\n\t\t\t\t\tclass=\"prSelect\"\n\t\t\t\t\t[options]=\"years\"\n\t\t\t\t\t[(ngModel)]=\"viewYear\"\n\t\t\t\t\t(ngModelChange)=\"onViewChange()\"\n\t\t\t\t\tdropdownIcon=\"icon icon-arrow-down\"\n\t\t\t\t\t[virtualScroll]=\"true\"\n\t\t\t\t\t[virtualScrollItemSize]=\"38\">\n\t\t\t\t</p-select>\n\n\t\t\t</div>\n\t\t</div>\n\t</ng-template>\n\t<ng-template pTemplate=\"footer\" *ngIf=\"selectionMode === 'range'\">\n\t\t<div class=\"footerDatapicker footerDatapicker--range\">\n\t\t\t<div class=\"footerDatapicker__box\">\n\t\t\t\t<!-- TODAY button -->\n\t\t\t\t<p-button\n\t\t\t\t\t*ngIf=\"shouldShowButton(DATEPICKER_BUTTON_TYPES.TODAY)\"\n\t\t\t\t\t[class]=\"getButtonClass(DATEPICKER_BUTTON_TYPES.TODAY)\"\n\t\t\t\t\tlabel=\"Today\"\n\t\t\t\t\t(click)=\"todayCallback($event)\">\n\t\t\t\t</p-button>\n\t\t\t\t<!-- LAST 12 MONTHS button -->\n\t\t\t\t<p-button\n\t\t\t\t\t*ngIf=\"shouldShowButton(DATEPICKER_BUTTON_TYPES.LAST_12_MONTHS)\"\n\t\t\t\t\t[class]=\"getButtonClass(DATEPICKER_BUTTON_TYPES.LAST_12_MONTHS)\"\n\t\t\t\t\tlabel=\"Last 12 months\"\n\t\t\t\t\t(click)=\"last12MonthsCallback($event)\">\n\t\t\t\t</p-button>\n\t\t\t\t<!-- CURRENT YEAR button -->\n\t\t\t\t<p-button\n\t\t\t\t\t*ngIf=\"shouldShowButton(DATEPICKER_BUTTON_TYPES.CURRENT_YEAR)\"\n\t\t\t\t\t[class]=\"getButtonClass(DATEPICKER_BUTTON_TYPES.CURRENT_YEAR)\"\n\t\t\t\t\tlabel=\"Current year\"\n\t\t\t\t\t(click)=\"currentYearCallback($event)\">\n\t\t\t\t</p-button>\n\t\t\t\t<!-- CURRENT MONTH button -->\n\t\t\t\t<p-button\n\t\t\t\t\t*ngIf=\"shouldShowButton(DATEPICKER_BUTTON_TYPES.CURRENT_MONTH)\"\n\t\t\t\t\t[class]=\"getButtonClass(DATEPICKER_BUTTON_TYPES.CURRENT_MONTH)\"\n\t\t\t\t\tlabel=\"Current month\"\n\t\t\t\t\t(click)=\"currentMonthCallback($event)\">\n\t\t\t\t</p-button>\n\t\t\t</div>\n\t\t\t<div class=\"footerDatapicker__box\">\n\t\t\t\t<!-- Apply button - shown only in manual apply mode -->\n\t\t\t\t<p-button\n\t\t\t\t\t*ngIf=\"manualApply\"\n\t\t\t\t\tclass=\"btnPrimary\"\n\t\t\t\t\tlabel=\"Apply\"\n\t\t\t\t\t(click)=\"applyCallback($event)\">\n\t\t\t\t</p-button>\n\t\t\t\t<!-- Clear button - always shown -->\n\t\t\t\t<p-button\n\t\t\t\t\tclass=\"btnSecond\"\n\t\t\t\t\tlabel=\"Clear\"\n\t\t\t\t\t(click)=\"clearCallback($event)\">\n\t\t\t\t</p-button>\n\t\t\t</div>\n\t\t</div>\n\t</ng-template>\n\n</p-datepicker>\n","import { Injectable, signal } from \"@angular/core\";\n@Injectable({ providedIn: \"root\" })\nexport class SkeletonService {\n\tisLoading = signal<boolean>(false);\n\tpublic hide() {\n\t\tthis.isLoading.set(false);\n\t}\n\tpublic show() {\n\t\tthis.isLoading.set(true);\n\t}\n}\n","import { Component, inject, Input } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { SkeletonService } from \"../../services/skeleton.service\";\n\n@Component({\n\tselector: \"intelica-skeleton\",\n\timports: [CommonModule],\n\ttemplateUrl: \"./skeleton.component.html\",\n})\nexport class SkeletonComponent {\n\tprivate readonly skeletonService = inject(SkeletonService);\n\tisLoading = this.skeletonService.isLoading;\n\n\t@Input() localLoading: boolean = false;\n\t@Input() show: boolean = false;\n}\n","@if((isLoading() && !localLoading) || show){\n<ng-content></ng-content>\n}\n","import { Component, Input, OnInit } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { SkeletonModule } from \"primeng/skeleton\";\n\n@Component({\n\tselector: \"intelica-skeleton-table\",\n\timports: [CommonModule, SkeletonModule],\n\ttemplateUrl: \"./skeleton-table.component.html\",\n})\nexport class SkeletonTableComponent implements OnInit {\n\t/**\n\t * @description number of rows to display\n\t * @default 6\n\t * @type number\n\t * @example <intelica-skeleton-table [rows]=\"6\"></intelica-skeleton-table>\n\t */\n\t@Input() rows: 2 | 3 | 4 | 6 | 12 = 6;\n\t/**\n\t * @description number of columns to display\n\t * @default 6\n\t * @type number\n\t * @example <intelica-skeleton-table [columns]=\"6\"></intelica-skeleton-table>\n\t */\n\t@Input() columns: 2 | 3 | 4 | 6 | 12 = 6;\n\n\t@Input() showLeftSkeleton: boolean = true;\n\t@Input() showRightSkeleton: boolean = true;\n\n\tcolumnSizes: string[] = [];\n\n\tngOnInit(): void {\n\t\tconst baseSize = 12 / this.columns;\n\t\tthis.columnSizes = Array.from({ length: this.columns }, (_, i) => {\n\t\t\treturn `col-${baseSize}`;\n\t\t});\n\t}\n\n\tget justifyClass(): string | null {\n\t\tif (this.showLeftSkeleton && this.showRightSkeleton) return \"justify-content-between\";\n\t\tif (this.showLeftSkeleton) return \"justify-content-start\";\n\t\tif (this.showRightSkeleton) return \"justify-content-end\";\n\t\treturn null;\n\t}\n\n\tgetRows() {\n\t\treturn new Array(this.rows);\n\t}\n}\n","<div class=\"skeletonTable\">\n\t<div class=\"mb-2 row\" *ngIf=\"showLeftSkeleton || showRightSkeleton\" [ngClass]=\"justifyClass\">\n\t\t<div class=\"col-1 px-0\" *ngIf=\"showLeftSkeleton\">\n\t\t\t<p-skeleton class=\"prSkeleton\" [height]=\"'3rem'\"></p-skeleton>\n\t\t</div>\n\t\t<div class=\"col-3 px-0\" *ngIf=\"showRightSkeleton\">\n\t\t\t<p-skeleton class=\"prSkeleton\" [height]=\"'3rem'\"></p-skeleton>\n\t\t</div>\n\t</div>\n\n\t<div class=\"row\">\n\t\t<div class=\"col-12 px-0 mb-2\">\n\t\t\t<p-skeleton class=\"prSkeleton\" [height]=\"'4rem'\"></p-skeleton>\n\t\t</div>\n\t</div>\n\t@for (row of getRows(); track $index) {\n\t<div class=\"row borderBottomRow\">\n\t\t@for (column of columnSizes; track $index) {\n\t\t<div class=\"{{ column }} px-0\">\n\t\t\t<div class=\"bodyPaddingTable\">\n\t\t\t\t<p-skeleton class=\"prSkeleton\" [height]=\"'2rem'\"></p-skeleton>\n\t\t\t</div>\n\t\t</div>\n\t\t}\n\t</div>\n\t}\n</div>\n","import { Directive, Input } from \"@angular/core\";\n\n@Directive({\n\tselector: \"data\", // El selector es 'data', lo que permite usar <data> en la plantilla\n})\nexport class DataDirective {\n\t@Input() size: string = \"\"; // Esta es la propiedad que recibirás en la etiqueta <data>\n}\n","import { Component, Input, ContentChildren, QueryList, AfterContentInit } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { SkeletonModule } from \"primeng/skeleton\";\nimport { DataDirective } from \"./data.directive\";\n\n@Component({\n\tselector: \"intelica-skeleton-chart\",\n\timports: [CommonModule, SkeletonModule],\n\ttemplateUrl: \"./skeleton-chart.component.html\",\n})\nexport class SkeletonChartComponent implements AfterContentInit {\n\t/**\n\t * @description type of skeleton chart\n\t * @default 'bar'\n\t * @type string\n\t * @example <intelica-skeleton-chart [type]=\"'bar'\"></intelica-skeleton-chart>\n\t */\n\t@Input() type: \"horizontal-bar\" | \"bar\" | \"pie\" | \"line\" | \"donut\" = \"bar\";\n\n\t/**\n\t * @description number of series to display\n\t * @default 6\n\t * @type number\n\t * @example <intelica-skeleton-chart [series]=\"3\"></intelica-skeleton-chart>\n\t */\n\t@Input() series: number = 6;\n\n\t/**\n\t * @description number of data items to display in each bar\n\t * @default 1\n\t * @type number\n\t * @example <intelica-skeleton-chart [data]=\"3\"></intelica-skeleton-chart>\n\t */\n\t@Input() data: number = 1;\n\n\t/**\n\t * @description Flag to indicate whether the label should be displayed or hidden\n\t * @default false\n\t * @type boolean\n\t */\n\t@Input() label: boolean = true;\n\n\t// Propiedad para almacenar los valores aleatorios de porcentaje de altura\n\trandomPercent: string[][] = [];\n\n\t// Recibimos las etiquetas <data> como directivas\n\t@ContentChildren(DataDirective) dataElements!: QueryList<DataDirective>;\n\n\tngOnInit(): void {\n\t\tthis.updateRandomPercentages();\n\t}\n\n\tngAfterContentInit(): void {\n\t\t// Si hay elementos <data> proyectados, usamos sus valores de 'size'\n\t\tif (this.dataElements.length > 0) {\n\t\t\tthis.setFixedPercentages();\n\t\t\treturn;\n\t\t}\n\t\tthis.updateRandomPercentages();\n\t}\n\n\t// Método para asignar alturas aleatorias\n\tupdateRandomPercentages(): void {\n\t\t// Si no se encuentran las etiquetas <data>, usamos valores aleatorios\n\t\tthis.randomPercent = this.getArray(this.series).map(() => this.getArray(this.data).map(() => this.setRandomPercent(20, 100)));\n\t}\n\n\t// Método para asignar alturas fijas según las etiquetas <data>\n\tsetFixedPercentages(): void {\n\t\t// Usa las alturas fijas definidas por las etiquetas <data>\n\t\tthis.randomPercent = this.getArray(this.series).map(\n\t\t\t() => this.dataElements.toArray().map(data => data.size) // Aquí mapeamos todas las alturas de las etiquetas <data>\n\t\t);\n\t}\n\n\t// Función para generar un valor aleatorio en porcentaje\n\tsetRandomPercent(min: number, max: number): string {\n\t\tconst random = Math.floor(Math.random() * (max - min + 1));\n\t\treturn `${random + min}%`;\n\t}\n\n\t// Función auxiliar para crear un array de tamaño \"length\"\n\tgetArray(length: number): number[] {\n\t\treturn Array.from({ length }, (_, i) => i);\n\t}\n}\n","@switch (type) { @case('bar'){\n<div class=\"skeletonGraphic skeletonGraphic--verticalBars\">\n\t<div class=\"skeletonGraphic__serie\" *ngFor=\"let i of getArray(series)\">\n\t\t<div class=\"skeletonGraphic__data\">\n\t\t\t<!-- Si hay etiquetas <data> proyectadas, las usamos con las alturas fijas -->\n\t\t\t<ng-container *ngIf=\"dataElements.length > 0\">\n\t\t\t\t<ng-container *ngFor=\"let data of dataElements.toArray()\">\n\t\t\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"data.size\"></p-skeleton>\n\t\t\t\t</ng-container>\n\t\t\t</ng-container>\n\n\t\t\t<!-- Si no hay etiquetas <data>, usamos los valores aleatorios -->\n\t\t\t<ng-container *ngIf=\"dataElements.length === 0\">\n\t\t\t\t<ng-container *ngFor=\"let j of getArray(data)\">\n\t\t\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"randomPercent[i][j]\"></p-skeleton>\n\t\t\t\t</ng-container>\n\t\t\t</ng-container>\n\t\t</div>\n\t\t<div class=\"skeletonGraphic__label\" *ngIf=\"label\">\n\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'50%'\" [height]=\"'1rem'\"></p-skeleton>\n\t\t</div>\n\t</div>\n</div>\n} @case ('horizontal-bar'){\n<div class=\"skeletonGraphic skeletonGraphic--horizontalBars\">\n\t<div class=\"skeletonGraphic__serie\" *ngFor=\"let i of getArray(series)\">\n\t\t<div class=\"skeletonGraphic__data\">\n\t\t\t<!-- Si hay etiquetas <data> proyectadas, las usamos con las alturas fijas -->\n\t\t\t<ng-container *ngIf=\"dataElements.length > 0\">\n\t\t\t\t<ng-container *ngFor=\"let data of dataElements.toArray()\">\n\t\t\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"data.size\" [height]=\"'100%'\"></p-skeleton>\n\t\t\t\t</ng-container>\n\t\t\t</ng-container>\n\n\t\t\t<!-- Si no hay etiquetas <data>, usamos los valores aleatorios -->\n\t\t\t<ng-container *ngIf=\"dataElements.length === 0\">\n\t\t\t\t<ng-container *ngFor=\"let j of getArray(data)\">\n\t\t\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"randomPercent[i][j]\" [height]=\"'100%'\"></p-skeleton>\n\t\t\t\t</ng-container>\n\t\t\t</ng-container>\n\t\t</div>\n\t\t<div class=\"skeletonGraphic__label\" *ngIf=\"label\">\n\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'10rem'\" [height]=\"'1rem'\"></p-skeleton>\n\t\t</div>\n\t</div>\n</div>\n} @case ('pie'){\n<div class=\"skeletonGraphic skeletonGraphic--pie\">\n\t<ng-container *ngTemplateOutlet=\"pieDonutTemplate\"></ng-container>\n</div>\n} @case ('donut'){\n<div class=\"skeletonGraphic skeletonGraphic--pie skeletonGraphic--donut\">\n\t<ng-container *ngTemplateOutlet=\"pieDonutTemplate\"></ng-container>\n</div>\n} @case ('line'){\n<div class=\"col-6 mb-3\">\n\t<div class=\"row align-items-end\">\n\t\t<div class=\"col-1 d-flex justify-content-end\">\n\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'0.5rem'\" [height]=\"'25rem'\"></p-skeleton>\n\t\t</div>\n\t\t<div class=\"col d-flex justify-content-center px-0\">\n\t\t\t<div class=\"col-8 px-0\">\n\t\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'10rem'\"></p-skeleton>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col d-flex justify-content-center px-0\">\n\t\t\t<div class=\"col-8 px-0\">\n\t\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'20rem'\"></p-skeleton>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col d-flex justify-content-center px-0\">\n\t\t\t<div class=\"col-8 px-0\">\n\t\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'8rem'\"></p-skeleton>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col d-flex justify-content-center px-0\">\n\t\t\t<div class=\"col-8 px-0\">\n\t\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'15rem'\"></p-skeleton>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col d-flex justify-content-center px-0\">\n\t\t\t<div class=\"col-8 px-0\">\n\t\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'20rem'\"></p-skeleton>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col d-flex justify-content-center px-0\">\n\t\t\t<div class=\"col-8 px-0\">\n\t\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'8rem'\"></p-skeleton>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class=\"row mt-3\">\n\t\t<div class=\"col-1\"></div>\n\t\t<div class=\"col\">\n\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'0.5rem'\"></p-skeleton>\n\t\t</div>\n\t</div>\n</div>\n} }\n\n<ng-template #pieDonutTemplate>\n\t<div class=\"skeletonGraphic__serie\">\n\t\t<div class=\"skeletonGraphic__wrap\">\n\t\t\t<div class=\"skeletonGraphic__label left\" *ngIf=\"label\">\n\t\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'100%'\"></p-skeleton>\n\t\t\t</div>\n\t\t\t<div class=\"skeletonGraphic__data\">\n\t\t\t\t<p-skeleton class=\"prSkeleton\" shape=\"circle\" [size]=\"'100%'\"></p-skeleton>\n\t\t\t</div>\n\t\t\t<div class=\"skeletonGraphic__label right\" *ngIf=\"label\">\n\t\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'100%'\"></p-skeleton>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</ng-template>\n","import { CommonModule, DatePipe } from \"@angular/common\";\nimport { AfterContentInit, ChangeDetectorRef, Component, ContentChild, ContentChildren, EventEmitter, inject, Input, OnChanges, Output, QueryList, SimpleChanges, TemplateRef } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { BadgeModule } from \"primeng/badge\";\nimport { CheckboxModule } from \"primeng/checkbox\";\nimport { IconField } from \"primeng/iconfield\";\nimport { InputIcon } from \"primeng/inputicon\";\nimport { InputNumber } from \"primeng/inputnumber\";\nimport { InputText, InputTextModule } from \"primeng/inputtext\";\nimport { Paginator } from \"primeng/paginator\";\nimport { Select } from \"primeng/select\";\nimport { TableModule } from \"primeng/table\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { FormatCellPipe } from \"../../pipes/formatCell.pipe\";\nimport { TermPipe } from \"../../pipes/term.pipes\";\nimport { GlobalTermService } from \"../../services/globalTerm.service\";\nimport { ColumnComponent, ColumnGroupComponent, RowResumenComponent } from \"../table/column.component\";\nimport { SortFieldModel } from \"../table/model/sort.model\";\nimport { QueryParametersModel } from \"./model/query.model\";\n\n@Component({\n\tselector: \"intelica-table-fetch\",\n\tstandalone: true,\n\timports: [\n\t\tInputIcon,\n\t\tIconField,\n\t\tInputText,\n\t\tInputTextModule,\n\t\tInputNumber,\n\t\tPaginator,\n\t\tFormsModule,\n\t\tCommonModule,\n\t\tTableModule,\n\t\tSelect,\n\t\tBadgeModule,\n\t\tTooltipModule,\n\t\tTermPipe,\n\t\tCheckboxModule,\n\t\tFormsModule,\n\t\tFormatCellPipe,\n\t],\n\ttemplateUrl: \"./table-fetch.component.html\",\n\tproviders: [FormatCellPipe, DatePipe],\n})\nexport class TableFetchComponent<T> implements OnChanges, AfterContentInit {\n\treadonly GlobalTermService = inject(GlobalTermService);\n\n\t@Input() ComponentId: string = \"\";\n\t@Input() ShowRowPerPage: boolean = true;\n\t@Input() ShowSearch: boolean = false;\n\t@Input() ShowPagination: boolean = false;\n\t@Input() RowsPerPage: number = 10;\n\t@Input() ShowCheckbox: boolean = false;\n\t@Input() ShowIndex: boolean = false;\n\t@Input() ClassName: string = \"\";\n\t@Input() DefaultSortField: string = \"\";\n\t@Input() scrollHeight: string = \"400px\";\n\t@Input() scrollable: boolean = false;\n\t@Input() AllowedPageSizes: number[] = [10, 25, 50, 100];\n\t@Input() tableStyle: { [klass: string]: any } = {};\n\tLevels: number[] = [];\n\t@Input() FilteredList: T[] = [];\n\t@Input() TotalItems: number = 0;\n\tTotalRecords: number = 0;\n\tIsPaginatorInputSearch: boolean = false;\n\n\t@Output() EmitQueryParametersChange = new EventEmitter<QueryParametersModel>();\n\n\t@ContentChildren(ColumnComponent) Columns!: QueryList<ColumnComponent>;\n\t@ContentChildren(ColumnGroupComponent)\n\tColumnGroups!: QueryList<ColumnGroupComponent>;\n\t@ContentChildren(RowResumenComponent)\n\tRowResumenGroups!: QueryList<RowResumenComponent>;\n\n\t@ContentChild(\"additionalTemplate\") AdditionalTemplate?: TemplateRef<any>;\n\t@ContentChild(\"additionalCentralTemplate\")\n\tAdditionalCentralTemplate?: TemplateRef<any>;\n\t@ContentChild(\"additionalExtendedTemplate\")\n\tAdditionalExtendedTemplate?: TemplateRef<any>;\n\t@Output() EmitSortEvent = new EventEmitter<SortFieldModel[]>();\n\n\tColumnList: ColumnComponent[] = [];\n\tColumnGroupList: ColumnGroupComponent[] = [];\n\tRowResumenList: RowResumenComponent[] = [];\n\n\t@Input() CurrentPage: number = 1;\n\t@Input() SortOrder: number = 1;\n\t@Input() SortField: keyof T | null = null;\n\tMaxLevel: number = 0;\n\tListDataTable: T[] = [];\n\tSearchInput: string = \"\";\n\n\tconstructor(private cdr: ChangeDetectorRef) {}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (changes[\"FilteredList\"] || changes[\"RowsPerPage\"] || changes[\"CurrentPage\"]) {\n\t\t\tthis.UpdatePages();\n\t\t}\n\n\t\tif (changes[\"SortField\"] || changes[\"SortOrder\"]) {\n\t\t\tthis.EmitSortEvent.emit([\n\t\t\t\t{\n\t\t\t\t\tsortOrder: this.SortOrder,\n\t\t\t\t\tsortField: this.SortField?.toString() ?? \"\",\n\t\t\t\t},\n\t\t\t]);\n\t\t}\n\t}\n\n\tngAfterContentInit() {\n\t\tthis.captureColumns();\n\t\tthis.captureGroups();\n\t\tthis.captureResumen();\n\n\t\tthis.Columns.changes.subscribe(() => {\n\t\t\tthis.captureColumns();\n\t\t\tthis.cdr.markForCheck();\n\t\t});\n\n\t\tthis.ColumnGroups.changes.subscribe(() => {\n\t\t\tthis.captureGroups();\n\t\t\tthis.cdr.markForCheck();\n\t\t});\n\n\t\tthis.RowResumenGroups.changes.subscribe(() => {\n\t\t\tthis.captureResumen();\n\t\t\tthis.cdr.markForCheck();\n\t\t});\n\t}\n\n\tprivate captureColumns() {\n\t\tthis.ColumnList = this.Columns?.toArray() ?? [];\n\t}\n\n\tprivate captureGroups() {\n\t\tthis.ColumnGroupList = this.ColumnGroups?.toArray() ?? [];\n\n\t\tconst levels = this.ColumnGroupList.map(c => c.level);\n\t\tthis.MaxLevel = levels.length ? Math.max(...levels) + 1 : 1;\n\t\tthis.Levels = Array.from({ length: this.MaxLevel }, (_, i) => i);\n\t}\n\n\tprivate captureResumen() {\n\t\tthis.RowResumenList = this.RowResumenGroups?.toArray() ?? [];\n\t}\n\n\tOnSort(field: string) {\n\t\tif (this.SortField === field) {\n\t\t\tthis.SortOrder *= -1;\n\t\t} else {\n\t\t\tthis.SortField = field as keyof T;\n\t\t\tthis.SortOrder = 1;\n\t\t}\n\t\tthis.ExecuteSearch({});\n\t}\n\tUpdatePages() {\n\t\tif (this.ShowPagination) {\n\t\t\tthis.TotalRecords = this.TotalItems;\n\n\t\t\tconst start = (this.CurrentPage - 1) * this.RowsPerPage;\n\t\t\tconst end = start + this.RowsPerPage;\n\t\t\tthis.ListDataTable = this.FilteredList.slice(start, end);\n\t\t} else {\n\t\t\tthis.ListDataTable = this.FilteredList;\n\t\t}\n\t}\n\n\tOnPageChange(event: { page?: number; rows?: number } | number): void {\n\t\tif (typeof event === \"number\") {\n\t\t\tthis.CurrentPage = event;\n\t\t} else {\n\t\t\tif (typeof event?.rows === \"number\") {\n\t\t\t\tthis.RowsPerPage = event.rows;\n\t\t\t}\n\t\t\tif (typeof event?.page === \"number\") {\n\t\t\t\tthis.CurrentPage = event.page + 1;\n\t\t\t}\n\t\t}\n\t\tthis.IsPaginatorInputSearch = true;\n\t\tthis.ExecuteSearch({});\n\t}\n\n\tResetTable() {\n\t\tthis.CurrentPage = 1;\n\t\tthis.ExecuteSearch({});\n\t}\n\n\tExecuteSearch(event?: any): void {\n\t\tif (event?.fieldText !== undefined && event?.fieldText !== \"\") {\n\t\t\tthis.SearchInput = event;\n\t\t}\n\n\t\tif (this.SearchInput !== undefined && this.SearchInput !== \"\" && !this.IsPaginatorInputSearch) {\n\t\t\tthis.CurrentPage = 1;\n\t\t}\n\n\t\tconst newQueryParameters: QueryParametersModel = {\n\t\t\tFilterValue: this.SearchInput.trim(),\n\t\t\tOrderBy: this.SortField ? String(this.SortField) : undefined,\n\t\t\tSortDirection: this.SortOrder === 1 ? \"asc\" : \"desc\",\n\t\t\tPageNumber: this.CurrentPage,\n\t\t\tPageSize: this.RowsPerPage,\n\t\t};\n\n\t\tthis.EmitQueryParametersChange.emit(newQueryParameters);\n\t\tthis.UpdatePages();\n\t\tthis.IsPaginatorInputSearch = false;\n\t}\n\n\tOnRowsPerPageChange(value: number): void {\n\t\tthis.RowsPerPage = value;\n\t\tthis.CurrentPage = 1;\n\t\tthis.ExecuteSearch({});\n\t}\n\tClearSearch() {\n\t\tthis.SearchInput = \"\";\n\t}\n\tget TotalPages(): number {\n\t\treturn Math.ceil(this.TotalRecords / this.RowsPerPage);\n\t}\n\n\tget RenderPanel(): boolean {\n\t\treturn Boolean(this.AdditionalTemplate) || this.ShowSearch || Boolean(this.AdditionalCentralTemplate) || Boolean(this.AdditionalExtendedTemplate);\n\t}\n\n\tonChangeSelectPage(event: any) {\n\t\tthis.IsPaginatorInputSearch = true;\n\t\tconst eventValue: string = event.target.value;\n\t\tif (eventValue === \"\" || isNaN(parseInt(eventValue)) || eventValue === \"0\" || eventValue.indexOf(\"-\") >= 0) {\n\t\t\tthis.CurrentPage = 1;\n\t\t\tthis.ExecuteSearch({});\n\t\t\treturn;\n\t\t}\n\n\t\tthis.CurrentPage = parseInt(eventValue);\n\n\t\tif (this.CurrentPage > this.TotalPages) {\n\t\t\tthis.CurrentPage = this.TotalPages;\n\t\t}\n\t\tthis.ExecuteSearch({});\n\t}\n}\n","<div class=\"prTable\">\n\t@if (RenderPanel) {\n\t<div class=\" \">\n\t\t<div class=\"prCard__row justify-content-end\">\n\t\t\t<div class=\"prCard__actionflex\">\n\t\t\t\t@if (AdditionalTemplate) {\n\t\t\t\t<ng-container *ngTemplateOutlet=\"AdditionalTemplate\"></ng-container>\n\t\t\t\t}\n\t\t\t</div>\n\n\t\t\t@if (ShowSearch) {\n\t\t\t<div class=\"ptSearch searchTableGA\">\n\t\t\t\t<p-iconfield>\n\t\t\t\t\t<input type=\"text\" class=\"prInputText\" pInputText placeholder=\"{{ 'LBL_SEARCH_SELECT' | term : GlobalTermService.languageCode }}\" [(ngModel)]=\"SearchInput\" (keydown.enter)=\"ExecuteSearch()\" />\n\t\t\t\t\t<p-inputicon>\n\t\t\t\t\t\t<button class=\"ptSearch__icon ptSearch__icon--close\">\n\t\t\t\t\t\t\t<i class=\"icon icon-cancel\" *ngIf=\"SearchInput\" (click)=\"ClearSearch()\"></i>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<span class=\"ptSearch__icon ptSearch__icon--divider\" *ngIf=\"SearchInput\"></span>\n\t\t\t\t\t\t<button class=\"ptSearch__icon ptSearch__icon--search\">\n\t\t\t\t\t\t\t<i class=\"icon icon-search\"></i>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</p-inputicon>\n\t\t\t\t</p-iconfield>\n\t\t\t</div>\n\t\t\t}\n\t\t\t<!-- -->\n\t\t\t@if (AdditionalCentralTemplate) {\n\t\t\t<div class=\"prTableTools__new prTableTools__new--right\">\n\t\t\t\t<ng-container *ngTemplateOutlet=\"AdditionalCentralTemplate\"></ng-container>\n\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t</div>\n\t@if (AdditionalExtendedTemplate) {\n\t<div class=\"prTableTools justify-content-start\">\n\t\t<ng-container *ngTemplateOutlet=\"AdditionalExtendedTemplate\"></ng-container>\n\t</div>\n\t} }\n\t<p-table\n\t\tclass=\"prTable\"\n\t\t[ngClass]=\"ClassName\"\n\t\t[value]=\"FilteredList\"\n\t\tresponsiveLayout=\"scroll\"\n\t\t[sortField]=\"DefaultSortField\"\n\t\t[sortOrder]=\"SortOrder\"\n\t\t[scrollable]=\"scrollable\"\n\t\t[scrollHeight]=\"scrollable ? scrollHeight : 'auto'\"\n\t\t[tableStyle]=\"tableStyle\"\n\t>\n\t\t<!-- Cabecera con columnas agrupadas -->\n\t\t<ng-template pTemplate=\"header\">\n\t\t\t@for (level of Levels; track $index) {\n\t\t\t<tr>\n\t\t\t\t@for (col of ColumnGroupList; track $index) { @if (col.level === level) {\n\t\t\t\t<th [attr.colspan]=\"col.colspan\" [attr.rowspan]=\"col.rowspan\" [pSortableColumn]=\"col.sortable ? col.field : ''\" [style.min-width]=\"col.minWidth\" (click)=\"col.sortable && OnSort(col.field)\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<span tooltipStyleClass=\"prTooltip\" F [pTooltip]=\"col.headerTooltip || col.header\" [tooltipPosition]=\"col.headerTooltipPosition || 'top'\">\n\t\t\t\t\t\t\t{{ col.header }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<p-sortIcon *ngIf=\"col.sortable\" [field]=\"col.field\"></p-sortIcon>\n\t\t\t\t\t</div>\n\t\t\t\t</th>\n\t\t\t\t} } @if (ShowCheckbox && level === 0 && ColumnGroupList.length != 0) {\n\t\t\t\t<th class=\"text-center\" style=\"width: 4%\" [attr.rowspan]=\"MaxLevel === 1 ? 2 : MaxLevel\">\n\t\t\t\t\t<p-tableHeaderCheckbox class=\"prCheckbox\" />\n\t\t\t\t</th>\n\t\t\t\t}\n\t\t\t</tr>\n\t\t\t}\n\n\t\t\t<tr>\n\t\t\t\t@for (col of ColumnList; track $index) { @if (col.showHeader) {\n\t\t\t\t<th\n\t\t\t\t\t[class]=\"col.className\"\n\t\t\t\t\t[pSortableColumn]=\"!col.isChecboxColumn && col.sortable ? col.field : ''\"\n\t\t\t\t\t[style.width]=\"col.width\"\n\t\t\t\t\t[style.min-width]=\"col.minWidth\"\n\t\t\t\t\t(click)=\"!col.isChecboxColumn && col.sortable && OnSort(col.field)\"\n\t\t\t\t>\n\t\t\t\t\t<div class=\"prTable__header\">\n\t\t\t\t\t\t<span tooltipStyleClass=\"prTooltip\" [pTooltip]=\"col.headerTooltip || col.header\" [tooltipPosition]=\"col.headerTooltipPosition || 'top'\">\n\t\t\t\t\t\t\t{{ col.header }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t@if (!col.showIndex) {\n\t\t\t\t\t\t<p-sortIcon *ngIf=\"col.sortable\" [field]=\"col.field\"></p-sortIcon>\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</th>\n\t\t\t\t} } @if (ShowCheckbox && ColumnGroupList.length == 0) {\n\t\t\t\t<th class=\"text-center\" style=\"width: 4%\">\n\t\t\t\t\t<p-tableHeaderCheckbox class=\"prCheckbox\" />\n\t\t\t\t</th>\n\t\t\t\t}\n\t\t\t</tr>\n\n\t\t\t@if (FilteredList.length > 0 && RowResumenList.length > 0) {\n\t\t\t<tr class=\"fixedRow\">\n\t\t\t\t@for (col of RowResumenList; track $index) {\n\t\t\t\t<td [ngClass]=\"col.className\" [attr.colspan]=\"col.colspan\" [attr.rowspan]=\"col.rowspan\">\n\t\t\t\t\t@if (col.templateRef) {\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"col.templateRef\"></ng-container>\n\t\t\t\t\t</span>\n\t\t\t\t\t}\n\t\t\t\t</td>\n\t\t\t\t}\n\t\t\t</tr>\n\t\t\t}\n\t\t</ng-template>\n\n\t\t<!-- Cuerpo de la tabla -->\n\t\t<ng-template pTemplate=\"body\" let-rowData let-rowIndex=\"rowIndex\">\n\t\t\t<tr>\n\t\t\t\t@for (col of ColumnList; track $index) {\n\t\t\t\t<td [ngClass]=\"col.className\">\n\t\t\t\t\t@if (col.showIndex) {\n\t\t\t\t\t{{ rowIndex + 1 + (CurrentPage - 1) * RowsPerPage }}\n\t\t\t\t\t} @else { @if (col.templateRef) {\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"col.templateRef; context: { $implicit: rowData }\"></ng-container>\n\t\t\t\t\t} @else {\n\t\t\t\t\t<span class=\"text-breakWord\" tooltipStyleClass=\"prTooltip\" pTooltip=\"{{ col.tooltip }}\" tooltipPosition=\"{{ col.tooltipPosition }}\">\n\t\t\t\t\t\t{{ rowData[col.field] | formatCell : col.formatType }}\n\t\t\t\t\t</span>\n\t\t\t\t\t} }\n\t\t\t\t</td>\n\t\t\t\t} @if (ShowCheckbox) {\n\t\t\t\t<td class=\"text-center\">\n\t\t\t\t\t<p-tableCheckbox [value]=\"rowData\" class=\"prCheckbox\" />\n\t\t\t\t</td>\n\t\t\t\t}\n\t\t\t</tr>\n\t\t</ng-template>\n\n\t\t<!-- Mensaje cuando no hay datos -->\n\t\t<ng-template pTemplate=\"emptymessage\">\n\t\t\t<tr>\n\t\t\t\t<td [attr.colspan]=\"ColumnList.length + (ShowCheckbox ? 1 : 0)\" class=\"text-center\">\n\t\t\t\t\t{{ \"Nodata\" | term : GlobalTermService.languageCode }}\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</ng-template>\n\t</p-table>\n\n\t<!-- <div class=\"prTableToolsBottom\"> -->\n\t<div class=\"d-flex justify-content-end\">\n\t\t@if (TotalRecords !== 0 && ShowPagination) {\n\t\t<div class=\"ptTablePaginator\">\n\t\t\t<p-paginator\n\t\t\t\tclass=\"prPaginator paginatorTableGA\"\n\t\t\t\t[first]=\"(CurrentPage - 1) * RowsPerPage\"\n\t\t\t\t[rows]=\"RowsPerPage\"\n\t\t\t\t[totalRecords]=\"TotalRecords\"\n\t\t\t\t(onPageChange)=\"OnPageChange($event)\"\n\t\t\t\t[showJumpToPageInput]=\"false\"\n\t\t\t\t[showCurrentPageReport]=\"false\"\n\t\t\t\t[showPageLinks]=\"false\"\n\t\t\t\t[showFirstLastIcon]=\"false\"\n\t\t\t\t[templateLeft]=\"templateLeft\"\n\t\t\t>\n\t\t\t\t<ng-template #previouspagelinkicon>\n\t\t\t\t\t<i class=\"icon icon-arrow-left paginatorArrowGA\"></i>\n\t\t\t\t</ng-template>\n\t\t\t\t<ng-template #nextpagelinkicon>\n\t\t\t\t\t<i class=\"icon icon-arrow-right paginatorArrowGA\"></i>\n\t\t\t\t</ng-template>\n\t\t\t\t<ng-template pTemplate=\"templateLeft\" let-state #templateLeft>\n\t\t\t\t\t<span>{{ \"ROWS_PER_PAGE\" | term : GlobalTermService.languageCode }}</span>\n\t\t\t\t\t<p-select panelStyleClass=\"prSelect paginatorSelectTableGA\" class=\"prSelect\" [options]=\"AllowedPageSizes\" [ngModel]=\"RowsPerPage\" appendTo=\"body\" (onChange)=\"OnRowsPerPageChange($event.value)\" />\n\t\t\t\t\t<span>\n\t\t\t\t\t\t{{ \"Page\" | term : GlobalTermService.languageCode }}\n\t\t\t\t\t\t<p-inputnumber class=\"p-paginator-jtp-input\" inputId=\"integeronly\" [(ngModel)]=\"CurrentPage\" [allowEmpty]=\"false\" [min]=\"1\" (keyup.enter)=\"onChangeSelectPage($event)\" />\n\t\t\t\t\t\t{{ \"Of\" | term : GlobalTermService.languageCode }} {{ TotalPages }}\n\t\t\t\t\t</span>\n\t\t\t\t</ng-template>\n\t\t\t</p-paginator>\n\t\t</div>\n\t\t}\n\t</div>\n</div>\n","import { Component } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { ConfirmDialogModule } from \"primeng/confirmdialog\";\nimport { ButtonModule } from \"primeng/button\";\nimport { ConfirmationService } from \"primeng/api\";\n\n@Component({\n\tselector: \"intelica-alert\",\n\tstandalone: true,\n\timports: [CommonModule, ConfirmDialogModule, ButtonModule],\n\ttemplateUrl: './intelica-alert.component.html',\n})\nexport class IntelicaAlertComponent {\n\t// This component is now just a wrapper for the ConfirmDialog.\n\t// All logic is handled via the headless template and the data passed from AlertService.\n}\n","<!-- \n Clases Modificadoras para estados:\n prConfirmDialog--warning\n prConfirmDialog--danger\n prConfirmDialog--error\n prConfirmDialog--success\n prConfirmDialog--default\n-->\n<p-confirmDialog\n\t#cd\n\t[styleClass]=\"\n\t\t'prConfirmDialog' +\n\t\t($any(cd.confirmation)?.data?.config?.type ? ' prConfirmDialog--' + $any(cd.confirmation).data.config.type : ' prConfirmDialog--default') +\n\t\t($any(cd.confirmation)?.data?.config?.size ? ' prConfirmDialog--' + $any(cd.confirmation).data.config.size : '')\n\t\"\n\tkey=\"intelica-alert-dialog\"\n\t[closable]=\"false\"\n\t[visible]=\"undefined\"\n>\n\t<!-- \n We use the headless template. \n 'message' contains the confirmation object.\n 'message.data' contains our custom 'presentationData' object from AlertService.\n -->\n\t<ng-template pTemplate=\"headless\" let-message let-onAccept=\"onAccept\" let-onReject=\"onReject\">\n\t\t<div class=\"prConfirmDialog__content\">\n\t\t\t<!-- Close Button -->\n\t\t\t@if (message.data.config.showCloseButton) {\n\t\t\t<div class=\"prConfirmDialog__close\">\n\t\t\t\t<p-button severity=\"secondary\" [rounded]=\"false\" [text]=\"true\" (onClick)=\"onReject()\" ariaLabel=\"Cerrar\">\n\t\t\t\t\t<i class=\"icon icon-cancel\"></i>\n\t\t\t\t</p-button>\n\t\t\t</div>\n\t\t\t}\n\n\t\t\t<!-- Icon -->\n\t\t\t<div class=\"prConfirmDialog__icon\">\n\t\t\t\t@if (message.data.config.customImageUrl) {\n\t\t\t\t<img [src]=\"message.data.config.customImageUrl\" alt=\"Alert icon\" />\n\t\t\t\t} @else {\n\t\t\t\t<i [class]=\"$any(message).data.iconClass\"></i>\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<div class=\"prConfirmDialog__details\">\n\t\t\t\t<!-- Title -->\n\t\t\t\t<h2 class=\"prConfirmDialog__title\">{{ message.header }}</h2>\n\n\t\t\t\t<!-- Subtitle / Message -->\n\t\t\t\t@if (message.message) {\n\t\t\t\t<p class=\"prConfirmDialog__subtitle\" [style.color]=\"$any(message).data.config.styles?.subtitleColor ?? '#555'\">{{ message.message }}</p>\n\t\t\t\t}\n\t\t\t</div>\n\n\t\t\t<!-- HTML Content -->\n\t\t\t@if (message.data.config.htmlContent) {\n\t\t\t<div class=\"prConfirmDialog__text\" [innerHTML]=\"$any(message).data.config.htmlContent\" [style.color]=\"$any(message).data.config.styles?.subtitleColor ?? '#555'\"></div>\n\t\t\t}\n\n\t\t\t<!-- Buttons -->\n\t\t\t<div class=\"prConfirmDialog__footer\">\n\t\t\t\t<!-- Confirm Button -->\n\t\t\t\t<p-button class=\"prButton\" [label]=\"message.data.confirmText\" (onClick)=\"onAccept()\" />\n\t\t\t\t<!-- Cancel Button -->\n\t\t\t\t@if (message.data.showCancelButton) {\n\t\t\t\t<p-button class=\"prButton\" [label]=\"message.data.cancelText\" severity=\"secondary\" [outlined]=\"true\" (onClick)=\"onReject()\" />\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t</ng-template>\n</p-confirmDialog>\n","import { HttpClient } from \"@angular/common/http\";\nimport { inject, Injectable, signal } from \"@angular/core\";\nimport { Guid } from \"guid-typescript\";\nimport { fromEvent, map, Observable, of, startWith, tap } from \"rxjs\";\nimport { FavoritePageMaintenanceResponse, FavoritePageSimpleResponse } from \"../dto/favoriteResponses\";\nimport { ConfigService } from \"./config.service\";\n\ninterface FavoritesUpdatedEventDetail {\n\tfavorites: FavoritePageSimpleResponse[];\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class GlobalFavoriteService {\n\tprivate configService = inject(ConfigService);\n\tprivate http = inject(HttpClient);\n\tprivate path = `${this.configService.environment?.securityPath}/favorite-page`;\n\tprivate readonly eventFavorites = \"FavoritesUpdatedEvent\";\n\tprivate _favorites = signal<FavoritePageSimpleResponse[]>([]);\n\n\tpublic favorites = this._favorites.asReadonly();\n\n\tconstructor() {\n\t\tthis.loadAllAndStore();\n\t\twindow.addEventListener(this.eventFavorites, this.onFavoritesUpdated);\n\t}\n\n\tpublic delete(guid: Guid): Observable<Guid> {\n\t\treturn this.http.delete<Guid>(`${this.path}/${guid}`).pipe(tap(() => this.loadAllAndStore()));\n\t}\n\n\tpublic getAll(): Observable<FavoritePageSimpleResponse[]> {\n\t\treturn this.http.get<FavoritePageSimpleResponse[]>(`${this.path}`);\n\t}\n\n\tpublic create(): Observable<FavoritePageMaintenanceResponse> {\n\t\treturn this.http.post<FavoritePageMaintenanceResponse>(`${this.path}`, {}).pipe(tap(() => this.loadAllAndStore()));\n\t}\n\n\tpublic loadAllAndStore() {\n\t\tthis.getAll()\n\t\t\t.pipe(tap(favorites => this.setFavorites(favorites)))\n\t\t\t.subscribe();\n\t}\n\n\tpublic setFavorites(favorites: FavoritePageSimpleResponse[]): void {\n\t\tthis._favorites.set([...favorites]);\n\t\tthis.emitFavoritesUpdatedEvent();\n\t}\n\n\tpublic removeFavoriteByPageUrl(pageUrl: string): void {\n\t\tconst normalizedPageUrl = pageUrl;\n\t\tconst filtered = this._favorites().filter(item => !this.matchesPage(item, normalizedPageUrl));\n\t\tthis._favorites.set(filtered);\n\t\tthis.emitFavoritesUpdatedEvent();\n\t}\n\n\tpublic isFavoriteByPageUrl(pageUrl: string): boolean {\n\t\tconst normalizedPageUrl = pageUrl;\n\t\treturn this._favorites().some(item => this.matchesPage(item, normalizedPageUrl));\n\t}\n\n\tpublic isFavoriteByPageRoot(pageRoot: string): boolean {\n\t\treturn this._favorites().some(item => item.pageRoot === pageRoot);\n\t}\n\n\tpublic removeFavoriteByPageRoot(pageRoot: string): Observable<void> {\n\t\tconst favorite = this._favorites().find(item => item.pageRoot === pageRoot);\n\t\tif (!favorite) return of(void 0);\n\t\treturn this.delete(Guid.parse(favorite.favoritePageID)).pipe(map(() => void 0));\n\t}\n\n\tpublic favoritesChanges(): Observable<FavoritePageSimpleResponse[]> {\n\t\treturn fromEvent<CustomEvent<FavoritesUpdatedEventDetail>>(window, this.eventFavorites).pipe(\n\t\t\tmap(event => event.detail.favorites),\n\t\t\tstartWith(this._favorites())\n\t\t);\n\t}\n\n\tprivate onFavoritesUpdated = (event: Event): void => {\n\t\tconst detail = (event as CustomEvent<FavoritesUpdatedEventDetail>).detail;\n\t\tif (!detail?.favorites) return;\n\t\tthis._favorites.set([...detail.favorites]);\n\t};\n\n\tprivate emitFavoritesUpdatedEvent(): void {\n\t\tconst event = new CustomEvent(this.eventFavorites, {\n\t\t\tdetail: { favorites: this._favorites() } satisfies FavoritesUpdatedEventDetail,\n\t\t});\n\t\twindow.dispatchEvent(event);\n\t}\n\n\tprivate matchesPage(item: FavoritePageSimpleResponse, value: string): boolean {\n\t\treturn item.pageUrl === value || item.pageRoot === value;\n\t}\n}\n","import { inject, Injectable } from \"@angular/core\";\nimport { distinctUntilChanged, map, Observable } from \"rxjs\";\nimport { GlobalFavoriteService } from \"../../services/globalFavorite.service\";\nimport { GlobalFeatureFlagService } from \"../../services/globalFeatureFlag.service\";\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class AddFavoritesService {\n\tprivate readonly favoritesService = inject(GlobalFavoriteService);\n\tprivate readonly featureFlagService = inject(GlobalFeatureFlagService);\n\n\tpublic addPageToFavorites(): Observable<void> {\n\t\treturn this.favoritesService.create().pipe(map(() => void 0));\n\t}\n\n\tpublic isPageFavorite(pageRoot?: string): Observable<boolean> {\n\t\tconst resolvedPageRoot = this.resolvePageRoot(pageRoot);\n\t\treturn this.favoritesService.favoritesChanges().pipe(\n\t\t\tmap(() => this.favoritesService.isFavoriteByPageRoot(resolvedPageRoot)),\n\t\t\tdistinctUntilChanged()\n\t\t);\n\t}\n\n\tpublic watchPageFavorite(pageRoot?: string): Observable<boolean> {\n\t\tconst resolvedPageRoot = this.resolvePageRoot(pageRoot);\n\t\treturn this.favoritesService.favoritesChanges().pipe(\n\t\t\tmap(() => this.favoritesService.isFavoriteByPageRoot(resolvedPageRoot)),\n\t\t\tdistinctUntilChanged()\n\t\t);\n\t}\n\n\tpublic removeFromFavorites(pageRoot?: string): Observable<void> {\n\t\tconst resolvedPageRoot = this.resolvePageRoot(pageRoot);\n\t\treturn this.favoritesService.removeFavoriteByPageRoot(resolvedPageRoot);\n\t}\n\n\tprivate resolvePageRoot(pageRoot?: string): string {\n\t\treturn pageRoot?.trim() || this.featureFlagService.GetPageRoot();\n\t}\n}\n","import { NgClass } from \"@angular/common\";\nimport { Component, DestroyRef, inject, OnInit, output } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { Button } from \"primeng/button\";\nimport { TermPipe } from \"../../pipes/term.pipes\";\nimport { GlobalTermService } from \"../../services/globalTerm.service\";\nimport { AddFavoritesService } from \"./add-favorites.service\";\n\nconst ICON_ON = \"icon-favorites-on\";\nconst ICON_OFF = \"icon-favorites-off\";\n\n@Component({\n\tselector: \"intelica-add-favorites\",\n\timports: [Button, TermPipe, NgClass],\n\ttemplateUrl: \"./add-favorites.component.html\",\n})\nexport class AddFavoritesComponent implements OnInit {\n\treadonly termService = inject(GlobalTermService);\n\tprivate readonly addFavoriteService = inject(AddFavoritesService);\n\tprivate readonly destroyRef = inject(DestroyRef);\n\n\treadonly favoriteChanged = output<boolean>();\n\n\tprivate isFavorite = false;\n\tpublic isToggling = false;\n\tpublic iconClass = ICON_OFF;\n\n\tngOnInit(): void {\n\t\tthis.loadInitialState();\n\t}\n\n\ttoggleFavorite(): void {\n\t\tif (this.isToggling) return;\n\t\tthis.isToggling = true;\n\t\tconst nextFavorite = !this.isFavorite;\n\t\tconst action$ = this.isFavorite ? this.addFavoriteService.removeFromFavorites() : this.addFavoriteService.addPageToFavorites();\n\n\t\taction$.subscribe({\n\t\t\tnext: () => {\n\t\t\t\tthis.favoriteChanged.emit(nextFavorite);\n\t\t\t},\n\t\t\tcomplete: () => (this.isToggling = false),\n\t\t\terror: () => (this.isToggling = false),\n\t\t});\n\t}\n\n\tprivate loadInitialState(): void {\n\t\tthis.addFavoriteService\n\t\t\t.watchPageFavorite()\n\t\t\t.pipe(takeUntilDestroyed(this.destroyRef))\n\t\t\t.subscribe({\n\t\t\t\tnext: isFavorite => {\n\t\t\t\t\tthis.isFavorite = isFavorite;\n\t\t\t\t\tthis.updateIcon();\n\t\t\t\t},\n\t\t\t});\n\t}\n\n\tprivate updateIcon(): void {\n\t\tthis.iconClass = this.isFavorite ? ICON_ON : ICON_OFF;\n\t}\n}\n","<p-button class=\"prButton\" severity=\"secondary\" [disabled]=\"isToggling\" (onClick)=\"toggleFavorite()\">\n\t<i class=\"icon p-button-icon-left\" [ngClass]=\"iconClass\" pButtonIcon></i>\n\t<span pButtonLabel>{{ \"ADD_TO_FAVORITES\" | term : termService.languageCode }}</span>\n</p-button>\n","import { CommonModule } from \"@angular/common\";\nimport { Component, effect, inject, input, output } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { Button } from \"primeng/button\";\nimport { MultiSelect } from \"primeng/multiselect\";\nimport { Popover } from \"primeng/popover\";\nimport { Select } from \"primeng/select\";\nimport { TermPipe } from \"../../pipes/term.pipes\";\nimport { GlobalTermService } from \"../../services/globalTerm.service\";\nimport { ContextSelectorClientDto, ContextSelectorCountryDto, ContextSelectorRegionDto, ContextSelectorSelectionDto } from \"./context-selector.dto\";\n\n@Component({\n\tselector: \"itl-context-selector\",\n\timports: [CommonModule, FormsModule, Button, Popover, MultiSelect, Select, TermPipe],\n\ttemplateUrl: \"./context-selector.component.html\",\n})\nexport class ClientContextSelector {\n\treadonly regions = input<ContextSelectorRegionDto[]>([]);\n\treadonly countries = input<ContextSelectorCountryDto[]>([]);\n\treadonly clients = input<ContextSelectorClientDto[]>([]);\n\treadonly selection = input<Partial<ContextSelectorSelectionDto> | null>(null);\n\n\treadonly showRegion = input<boolean>(true);\n\treadonly showCountry = input<boolean>(true);\n\treadonly showClient = input<boolean>(true);\n\n\treadonly buttonTerm = input<string>(\"Select Context\");\n\treadonly popoverTerm = input<string>(\"Select Region, Country and Client\");\n\treadonly regionTerm = input<string>(\"Region\");\n\treadonly countryTerm = input<string>(\"Country\");\n\treadonly clientTerm = input<string>(\"Client / Bank\");\n\treadonly regionPlaceholderTerm = input<string>(\"Select Region\");\n\treadonly countryPlaceholderTerm = input<string>(\"Select Country\");\n\treadonly clientPlaceholderTerm = input<string>(\"Select Client / Bank\");\n\n\treadonly selectionChange = output<ContextSelectorSelectionDto>();\n\treadonly regionChange = output<number | null>();\n\treadonly countriesChange = output<number[]>();\n\treadonly clientChange = output<number | null>();\n\n\treadonly globalTermService = inject(GlobalTermService);\n\n\tselectedRegionId: number | null = null;\n\tselectedCountryIds: number[] = [];\n\tselectedClientId: number | null = null;\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst incomingSelection = this.selection();\n\t\t\tif (!incomingSelection) return;\n\t\t\tthis.selectedRegionId = incomingSelection.regionId ?? null;\n\t\t\tthis.selectedCountryIds = [...(incomingSelection.countryIds ?? [])];\n\t\t\tthis.selectedClientId = incomingSelection.clientId ?? null;\n\t\t\tthis.ensureValidSelection();\n\t\t});\n\t}\n\n\tget filteredCountries(): ContextSelectorCountryDto[] {\n\t\tif (!this.showRegion() || !this.selectedRegionId) {\n\t\t\treturn this.countries();\n\t\t}\n\n\t\treturn this.countries().filter(country => !country.regionId || country.regionId === this.selectedRegionId);\n\t}\n\n\tget filteredClients(): ContextSelectorClientDto[] {\n\t\tlet items = this.clients();\n\n\t\tif (this.showRegion() && this.selectedRegionId) {\n\t\t\titems = items.filter(client => !client.regionId || client.regionId === this.selectedRegionId);\n\t\t}\n\n\t\tif (this.showCountry() && this.selectedCountryIds.length > 0) {\n\t\t\titems = items.filter(client => {\n\t\t\t\tif (!client.countryIds || client.countryIds.length === 0) return true;\n\t\t\t\treturn client.countryIds.some(countryId => this.selectedCountryIds.includes(countryId));\n\t\t\t});\n\t\t}\n\n\t\treturn items;\n\t}\n\n\tonRegionChange(value: number | null): void {\n\t\tthis.selectedRegionId = value ?? null;\n\t\tthis.ensureValidSelection();\n\t\tthis.emitSelection(true, true, true);\n\t}\n\n\tonCountriesChange(value: number[] | null): void {\n\t\tthis.selectedCountryIds = value ?? [];\n\t\tthis.ensureValidSelection();\n\t\tthis.emitSelection(false, true, true);\n\t}\n\n\tonClientChange(value: number | null): void {\n\t\tthis.selectedClientId = value ?? null;\n\t\tthis.emitSelection(false, false, true);\n\t}\n\n\tprivate ensureValidSelection(): void {\n\t\tconst validCountryIds = new Set(this.filteredCountries.map(country => country.id));\n\t\tthis.selectedCountryIds = this.selectedCountryIds.filter(countryId => validCountryIds.has(countryId));\n\n\t\tconst selectedClientStillValid = this.filteredClients.some(client => client.id === this.selectedClientId);\n\t\tif (!selectedClientStillValid) {\n\t\t\tthis.selectedClientId = null;\n\t\t}\n\t}\n\n\tprivate emitSelection(emitRegion: boolean, emitCountries: boolean, emitClient: boolean): void {\n\t\tif (emitRegion) this.regionChange.emit(this.selectedRegionId);\n\t\tif (emitCountries) this.countriesChange.emit(this.selectedCountryIds);\n\t\tif (emitClient) this.clientChange.emit(this.selectedClientId);\n\n\t\tthis.selectionChange.emit({\n\t\t\tregionId: this.selectedRegionId,\n\t\t\tcountryIds: [...this.selectedCountryIds],\n\t\t\tclientId: this.selectedClientId,\n\t\t});\n\t}\n}\n","<div class=\"lyFilterbar__wrap\">\n\t<p-button class=\"prButton u-hide-adjacent\" (click)=\"popoverFilterLayout.toggle($event)\" severity=\"secondary\" label=\"{{ buttonTerm() | term: globalTermService.languageCode }}\" />\n\t<p-popover styleClass=\"prPopover prPopover--compact\" [style]=\"{ '--custom-width': '20.5rem' }\" [focusOnShow]=\"false\" #popoverFilterLayout>\n\t\t<div class=\"prPopover__header\">{{ popoverTerm() | term: globalTermService.languageCode }}</div>\n\t\t<div class=\"prPopover__body\">\n\t\t\t<div class=\"u-display-flex u-flex-column u-gap-sm\">\n\t\t\t\t@if (showRegion()) {\n\t\t\t\t\t<p-select\n\t\t\t\t\t\tclass=\"prSelect\"\n\t\t\t\t\t\t[options]=\"regions()\"\n\t\t\t\t\t\t[ngModel]=\"selectedRegionId\"\n\t\t\t\t\t\t(ngModelChange)=\"onRegionChange($event)\"\n\t\t\t\t\t\toptionValue=\"id\"\n\t\t\t\t\t\toptionLabel=\"label\"\n\t\t\t\t\t\tplaceholder=\"{{ regionPlaceholderTerm() | term: globalTermService.languageCode }}\"\n\t\t\t\t\t\tshowClear=\"true\"\n\t\t\t\t\t\tdropdownIcon=\"icon icon-arrow-down\"\n\t\t\t\t\t\tfilter=\"false\"\n\t\t\t\t\t\tfiltericon=\"icon icon-cancel\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\n\t\t\t\t@if (showCountry()) {\n\t\t\t\t\t<p-multiselect\n\t\t\t\t\t\tclass=\"prMultiselect\"\n\t\t\t\t\t\t[options]=\"filteredCountries\"\n\t\t\t\t\t\t[ngModel]=\"selectedCountryIds\"\n\t\t\t\t\t\t(ngModelChange)=\"onCountriesChange($event)\"\n\t\t\t\t\t\t[maxSelectedLabels]=\"3\"\n\t\t\t\t\t\toptionLabel=\"label\"\n\t\t\t\t\t\toptionValue=\"id\"\n\t\t\t\t\t\tplaceholder=\"{{ countryPlaceholderTerm() | term: globalTermService.languageCode }}\"\n\t\t\t\t\t\tshowClear=\"true\"\n\t\t\t\t\t\tdropdownIcon=\"icon icon-arrow-down\"\n\t\t\t\t\t\tshowToggleAll=\"false\"\n\t\t\t\t\t\tfilter=\"false\"\n\t\t\t\t\t\tfiltericon=\"icon icon-cancel\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\n\t\t\t\t@if (showClient()) {\n\t\t\t\t\t<p-select\n\t\t\t\t\t\tclass=\"prSelect\"\n\t\t\t\t\t\t[options]=\"filteredClients\"\n\t\t\t\t\t\t[ngModel]=\"selectedClientId\"\n\t\t\t\t\t\t(ngModelChange)=\"onClientChange($event)\"\n\t\t\t\t\t\toptionValue=\"id\"\n\t\t\t\t\t\toptionLabel=\"label\"\n\t\t\t\t\t\t[placeholder]=\"clientPlaceholderTerm()\"\n\t\t\t\t\t\tshowClear=\"true\"\n\t\t\t\t\t\tdropdownIcon=\"icon icon-arrow-down\"\n\t\t\t\t\t\tfilter=\"false\"\n\t\t\t\t\t\tfiltericon=\"icon icon-cancel\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t</p-popover>\n</div>\n","import { Component, inject } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\nimport { setCookie } from \"typescript-cookie\";\nimport { ConfigService } from \"../../services/config.service\";\nimport { CookieAttributesGeneral } from \"../../constants/cookieConfiguration.constants\";\n@Component({\n selector: \"security-setsesioninformation\",\n imports: [],\n template: \"\",\n})\nexport class SetsesioninformationComponent {\n private readonly ActivatedRoute = inject(ActivatedRoute);\n private readonly Http = inject(HttpClient);\n private readonly ConfigService = inject(ConfigService);\n constructor() {\n let businessUserID = this.ActivatedRoute.snapshot.params[\"id\"];\n const headers = new HttpHeaders({ \"Skip-Interceptor\": \"true\" });\n let url = `${this.ConfigService.environment?.authenticationPath}/Authenticate/ignore/auth/cache/${businessUserID}`;\n this.Http.get<AuthenticationResponse>(url, { headers }).subscribe(response => {\n let data = JSON.stringify(response.authenticationData);\n setCookie(\"token\", response.jwtToken, CookieAttributesGeneral);\n setCookie(\"refreshToken\", response.refreshToken, CookieAttributesGeneral);\n setCookie(\"data\", data, CookieAttributesGeneral);\n setCookie(\"businessUserClientGroupID\", response.businessUserClientGroupID, CookieAttributesGeneral);\n setCookie(\"language\", response.languageCode, CookieAttributesGeneral);\n if (response.clientID != null) setCookie(\"defaultClientID\", response.clientID, CookieAttributesGeneral);\n setCookie(\"defaultClientGroupID\", response.clientGroupID, CookieAttributesGeneral);\n response.businessUserAuthClient.forEach(element => {\n setCookie(element.authClientID, element.compressedPages, CookieAttributesGeneral);\n });\n setCookie(\"profile\", response.profile, CookieAttributesGeneral);\n setCookie(\"itl\", response.refreshToken, CookieAttributesGeneral);\n this.ConfigService.SetSessionInformation();\n window.location.href = window.location.origin;\n });\n }\n}\nexport interface AuthenticationResponse {\n jwtToken: string;\n refreshToken: string;\n valid: boolean;\n message: string;\n businessUserClientGroupID: string;\n callBack: string;\n clientID: string;\n clientGroupID: string;\n languageCode: string;\n authenticationData: AuthenticationData;\n businessUserAuthClient: BusinessUserPagesAuthFormated[];\n profile: string;\n}\nexport interface AuthenticationData {\n mame: string;\n email: string;\n businessUserID: string;\n businessUserProfile: string;\n}\nexport interface BusinessUserPagesAuthFormated {\n authClientID: string;\n compressedPages: string;\n}\n","import { Component, input, output, signal } from '@angular/core';\nimport { Breadcrumb } from \"primeng/breadcrumb\";\nimport { RouterLink } from \"@angular/router\";\nimport { Tooltip } from 'primeng/tooltip';\nimport { MenuItem } from 'primeng/api';\n\n@Component({\n selector: 'intelica-bread-crumb',\n imports: [Breadcrumb, RouterLink, Tooltip,],\n templateUrl: './bread-crumb.component.html'\n})\nexport class BreadCrumbComponent {\n fullItems = input<MenuItem[]>([]);\n itemClick = output<MenuItem>();\n}\n","<p-breadcrumb class=\"prBreadcrumb\" [model]=\"fullItems()\">\n <ng-template pTemplate=\"item\" let-item>\n <a [routerLink]=\"item.routerLink\" [pTooltip]=\"item.tooltip\" tooltipStyleClass=\"prTooltip\"\n [tooltipPosition]=\"item.tooltipPosition\" [tooltipStyleClass]=\"item.tooltipStyleClass\">\n <span>{{ item.label }}</span>\n </a>\n </ng-template>\n <ng-template pTemplate=\"separator\">\n <span class=\"breadcrumb-separator\">\n <i class=\"icon icon-arrow-right icon--xs\"></i>\n </span>\n </ng-template>\n</p-breadcrumb>","import { Component, input, output } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'intelica-title',\n imports: [Button],\n templateUrl: './title.component.html'\n})\nexport class TitleComponent {\n title = input<string>('');\n back = output<void>();\n}\n","<div class=\"ptSectionTitle\">\n <div class=\"ptSectionTitle__icon\">\n <p-button class=\"prButton\" icon=\"icon icon-nav-left\" (onClick)=\"back.emit()\" />\n </div>\n <div class=\"ptSectionTitle__content\">\n <div class=\"ptSectionTitle__title\">\n {{ title() }}\n </div>\n </div>\n</div>","import { Directive, forwardRef, Input, OnChanges, SimpleChanges } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterDirective } from \"./filter.directive\";\nimport { FilterTypeEnum } from \"../../enums/filter-type.enum\";\n\n@Directive({\n\tselector: \"checkbox-filter\",\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => CheckboxFilterDirective),\n\t\t\tmulti: true\n\t\t},\n\t\t{\n\t\t\tprovide: FilterDirective,\n\t\t\tuseExisting: forwardRef(() => CheckboxFilterDirective)\n\t\t}\n\t],\n})\nexport class CheckboxFilterDirective extends FilterDirective implements OnChanges, ControlValueAccessor {\n\tconstructor() {\n\t\tsuper(FilterTypeEnum.Checkbox);\n\t}\n\t@Input() modeCheckBox: string = \"\";\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tthis.$changes.next(changes);\n\t}\n}\n","import {\n Directive,\n EventEmitter,\n forwardRef,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterDirective } from \"./filter.directive\";\nimport { FilterTypeEnum } from \"../../enums/filter-type.enum\";\nimport { DateMode } from \"../../constants/date-mode-options.constants\";\n\n@Directive({\n selector: \"date-filter\",\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateFilterDirective),\n multi: true,\n },\n {\n provide: FilterDirective,\n useExisting: forwardRef(() => DateFilterDirective),\n },\n ],\n})\nexport class DateFilterDirective\n extends FilterDirective\n implements OnChanges, ControlValueAccessor\n{\n constructor() {\n super(FilterTypeEnum.Date);\n }\n @Input() format: string = \"MM-yyyy\";\n @Input() start: string = \"year\";\n @Input() depth: string = \"Year\";\n @Input() strictMode: boolean = false;\n @Input() min: Date = new Date(1970, 0, 1);\n @Input() max: Date = new Date();\n @Input() showTodayButton: boolean = false;\n @Input() allowEdit: boolean = true;\n @Input() range: boolean = false;\n @Input() isReadOnly: boolean = false;\n @Input() dateMode: DateMode = \"day\";\n @Output() open: EventEmitter<any> = new EventEmitter<any>();\n @Output() navigated: EventEmitter<any> = new EventEmitter<any>();\n ngOnChanges(changes: SimpleChanges): void {\n this.$changes.next(changes);\n }\n}\n","import { Directive, forwardRef, Input, OnChanges, SimpleChanges } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterDirective } from \"./filter.directive\";\nimport { FilterTypeEnum } from \"../../enums/filter-type.enum\";\n\n@Directive({\n\tselector: \"select-detail-filter\",\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => SelectDetailFilterDirective),\n\t\t\tmulti: true\n\t\t},\n\t\t{\n\t\t\tprovide: FilterDirective,\n\t\t\tuseExisting: forwardRef(() => SelectDetailFilterDirective)\n\t\t}\n\t],\n})\nexport class SelectDetailFilterDirective extends FilterDirective implements OnChanges, ControlValueAccessor {\n\tconstructor() {\n\t\tsuper(FilterTypeEnum.SelectDetail);\n\t}\n\n\t@Input() id: string = \"\";\n\t@Input() fieldText: string = \"\";\n\t@Input() fieldValue: string = \"\";\n\t@Input() fieldDetail: string = \"\";\n\t@Input() data: any[] = [];\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tthis.$changes.next(changes);\n\t}\n}\n","import { Directive, forwardRef, Input, OnChanges } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterDirective } from \"./filter.directive\";\nimport { FilterTypeEnum } from \"../../enums/filter-type.enum\";\n\n@Directive({\n\tselector: \"select-filter\",\n\tproviders: [\n\t {\n\t\tprovide: NG_VALUE_ACCESSOR,\n\t\tuseExisting: forwardRef(() => SelectFilterDirective),\n\t\tmulti: true\n\t },\n\t {\n\t\tprovide: FilterDirective,\n\t\tuseExisting: forwardRef(() => SelectFilterDirective)\n\t }\n\t]\n })\nexport class SelectFilterDirective extends FilterDirective implements OnChanges, ControlValueAccessor {\n\tconstructor() {\n\t\tsuper(FilterTypeEnum.Select);\n\t}\n\n\t@Input() options: any[] = [];\n\t@Input() optionLabel: string = \"text\";\n\t@Input() optionValue: string = \"value\";\n\t@Input() showFilter: boolean = false;\n\t@Input() showAll: boolean = false;\n\t@Input() multiple: boolean = false;\n\t@Input() popupWidth: string = \"auto\";\n\t@Input() appendTo: string = \"\";\n\t@Input() panelStyleClass: string = \"prSelect\";\n\t@Input() allText: string = \"All\";\n\t@Input() maxSelectedLabels: number = 3;\n\t@Input() virtualScroll: boolean = false;\n\t@Input() selectedItemsLabel: string = \"Selected\";\n\t@Input() group: boolean = false;\n\t@Input() resetFilterOnHide: boolean = true;\n\n\tngOnChanges(changes: any): void {\n\t\tthis.$changes.next(changes);\n\t}\n}\n","import { ContentChild, Directive, forwardRef } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterDirective } from \"./filter.directive\";\nimport { FilterTypeEnum } from \"../../enums/filter-type.enum\";\n\n@Directive({\n\tselector: \"template-filter\",\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => TemplateDirective),\n\t\t\tmulti: true\n\t\t},\n\t\t{\n\t\t\tprovide: FilterDirective,\n\t\t\tuseExisting: forwardRef(() => TemplateDirective)\n\t\t}\n\t],\n})\nexport class TemplateDirective extends FilterDirective implements ControlValueAccessor {\n\tconstructor() {\n\t\tsuper(FilterTypeEnum.Template);\n\t}\n\t@ContentChild(\"content\") content!: any;\n}\n","import { Directive, forwardRef, OnChanges, SimpleChanges } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterDirective } from \"./filter.directive\";\nimport { FilterTypeEnum } from \"../../enums/filter-type.enum\";\n\n@Directive({\n\tselector: \"view-text-area-filter\",\n\tproviders: [\n\t\t {\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => TextAreaFilterDirective),\n\t\t\tmulti: true\n\t\t },\n\t\t {\n\t\t\tprovide: FilterDirective,\n\t\t\tuseExisting: forwardRef(() => TextAreaFilterDirective)\n\t\t }\n\t\t],\n})\nexport class TextAreaFilterDirective extends FilterDirective implements OnChanges, ControlValueAccessor {\n\tconstructor() {\n\t\tsuper(FilterTypeEnum.TextArea);\n\t}\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tthis.$changes.next(changes);\n\t}\n}\n","import { Directive, forwardRef, OnChanges, SimpleChanges } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterDirective } from \"./filter.directive\";\nimport { FilterTypeEnum } from \"../../enums/filter-type.enum\";\n\n@Directive({\n\tselector: \"text-filter\",\n\tproviders: [\n\t\t{\n\t\t provide: NG_VALUE_ACCESSOR,\n\t\t useExisting: forwardRef(() => TextFilterDirective),\n\t\t multi: true\n\t\t},\n\t\t{\n\t\t provide: FilterDirective,\n\t\t useExisting: forwardRef(() => TextFilterDirective)\n\t\t}\n\t ],\n\tstandalone: true,\n})\nexport class TextFilterDirective extends FilterDirective implements OnChanges, ControlValueAccessor {\n\tconstructor() {\n\t\tsuper(FilterTypeEnum.Text);\n\t}\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tthis.$changes.next(changes);\n\t}\n}\n","import { Directive, forwardRef, Input, OnChanges, SimpleChanges } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterDirective } from \"./filter.directive\";\nimport { FilterTypeEnum } from \"../../enums/filter-type.enum\";\n\n@Directive({\n\tselector: \"text-range-filter\",\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => TextRangeFilterDirective),\n\t\t\tmulti: true\n\t\t},\n\t\t{\n\t\t\tprovide: FilterDirective,\n\t\t\tuseExisting: forwardRef(() => TextRangeFilterDirective)\n\t\t}\n\t],\n})\nexport class TextRangeFilterDirective extends FilterDirective implements OnChanges, ControlValueAccessor {\n\tconstructor() {\n\t\tsuper(FilterTypeEnum.TextRange);\n\t}\n\n\t@Input() minRange?: string = \"\";\n\t@Input() maxRange?: string = \"\";\n\t@Input() minLabel: string = \"\";\n\t@Input() maxLabel: string = \"\";\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tthis.$changes.next(changes);\n\t}\n}\n","import { Directive, HostListener, Input, Optional, Host } from \"@angular/core\";\nimport { TableComponent } from \"../../components/table/table.component\";\n\n@Directive({\n selector: \"[intelicaCellCheckbox]\",\n standalone: true,\n})\nexport class IntelicaCellCheckboxDirective {\n @Input(\"intelicaCellCheckbox\") field!: string;\n @Input(\"intelicaCellCheckboxRow\") row!: any;\n\n constructor(@Optional() @Host() private table: TableComponent<any>) {}\n\n // ngModel (Angular forms)\n @HostListener(\"ngModelChange\", [\"$event\"])\n onNgModelChange(val: boolean) {\n if (!this.table || !this.field || !this.row) return;\n this.row[this.field] = val;\n this.table.recomputeHeaderState(this.field);\n }\n\n // onChange (PrimeNG p-checkbox)\n @HostListener(\"onChange\", [\"$event\"])\n onPrimeChange(evt: any) {\n const val = !!evt?.checked;\n this.onNgModelChange(val);\n }\n}\n","import { InjectionToken } from \"@angular/core\";\nimport { AlertButtonMode, AlertType } from \"../enums/alert-type.enum\";\n\n/**\n * Configuration options for alert buttons.\n */\nexport interface AlertButtonConfig {\n\t/** Text to display on the confirm/OK button */\n\tconfirmText?: string;\n\t/** Text to display on the cancel button */\n\tcancelText?: string;\n}\n\n/**\n * Style configuration for customizing alert appearance.\n */\nexport interface AlertStyleConfig {\n\t/** Background color of the icon container */\n\ticonBackgroundColor?: string;\n\t/** Color of the icon */\n\ticonColor?: string;\n\t/** Color of the title text */\n\ttitleColor?: string;\n\t/** Color of the subtitle/message text */\n\tsubtitleColor?: string;\n\t/** Background color of the confirm button */\n\tconfirmButtonColor?: string;\n\t/** Text color of the confirm button */\n\tconfirmButtonTextColor?: string;\n\t/** Background color of the cancel button */\n\tcancelButtonColor?: string;\n\t/** Text color of the cancel button */\n\tcancelButtonTextColor?: string;\n\t/** Width of the dialog (e.g., '400px', '30rem') */\n\twidth?: string;\n}\n\n/**\n * Complete configuration options for displaying an alert.\n */\nexport interface AlertConfig {\n\t/** The type of alert (warning, success, error) */\n\ttype: AlertType;\n\t/** Main title text displayed in the alert */\n\ttitle: string;\n\t/** Optional subtitle/message displayed below the title */\n\tsubtitle?: string;\n\t/** Button configuration mode */\n\tbuttonMode?: AlertButtonMode;\n\t/** Custom button text configuration */\n\tbuttons?: AlertButtonConfig;\n\t/** Whether to show the close (X) button */\n\tshowCloseButton?: boolean;\n\t/** Optional HTML content to display instead of subtitle */\n\thtmlContent?: string;\n\t/** Optional custom CSS class for the popup */\n\tcustomClass?: string;\n\t/** Custom style configuration */\n\tstyles?: AlertStyleConfig;\n\t/** PrimeIcon class for custom icon (e.g., 'pi pi-check') */\n\tcustomIcon?: string;\n\t/** Custom image URL for the icon */\n\tcustomImageUrl?: string;\n\tsize?: \"sm\" | \"md\" | \"lg\";\n}\n\n/**\n * Result returned after an alert is closed.\n */\nexport interface AlertResult {\n\t/** Whether the user confirmed the alert */\n\tisConfirmed: boolean;\n\t/** Whether the user clicked cancel */\n\tisCancelled: boolean;\n\t/** Whether the alert was dismissed (closed via X button or clicking outside) */\n\tisDismissed: boolean;\n}\n\n/**\n * Default configuration values for alerts.\n */\nexport const ALERT_DEFAULTS: Partial<AlertConfig> = {\n\tbuttonMode: AlertButtonMode.OK_ONLY,\n\tshowCloseButton: true,\n\tbuttons: {\n\t\tconfirmText: \"Ok\",\n\t\tcancelText: \"Cancelar\",\n\t},\n};\n\n/**\n * Configuration for each alert type.\n * - `titleColor`: Color for the alert title\n * - `icon`: PrimeIcon class (e.g., 'pi pi-exclamation-triangle')\n * - `iconBackgroundColor`: Background color for the icon container\n * - `iconColor`: Color of the icon itself\n * - `imageUrl`: Custom image/SVG path (takes precedence over `icon` if defined)\n */\nexport interface AlertTypeConfig {\n\ttitleColor: string;\n\ticon?: string;\n\ticonBackgroundColor?: string;\n\ticonColor?: string;\n\timageUrl?: string;\n}\n\n/**\n * Paths to custom SVG icons for alerts.\n * Icons should be placed in: public/assets/icons/alerts/\n */\nexport const ALERT_ICON_PATHS = {\n\terror: \"/assets/icons/alerts/alert-error.svg\",\n\t// warning: \"/assets/icons/alerts/alert-warning.svg\",\n\t// success: \"/assets/icons/alerts/alert-success.svg\",\n};\n\n/**\n * InjectionToken to override the default icon CSS class per alert type.\n * Provide a Partial<Record<AlertType, string>> to customize icons project-wide.\n *\n * Example (app.config.ts):\n * { provide: ALERT_ICON_OVERRIDES, useValue: {\n * [AlertType.SUCCESS]: 'icon icon-success',\n * [AlertType.WARNING]: 'icon icon-warning',\n * [AlertType.ERROR]: 'icon icon-alert',\n * }}\n */\nexport const ALERT_ICON_OVERRIDES = new InjectionToken<Partial<Record<AlertType, string>>>(\"ALERT_ICON_OVERRIDES\");\n\n/**\n * Centralized configuration for each alert type using PrimeNG icons.\n */\nexport const ALERT_TYPE_CONFIG: Record<AlertType, AlertTypeConfig> = {\n\t[AlertType.WARNING]: {\n\t\ttitleColor: \"#c27d00\",\n\t\ticon: \"icon icon-warning\",\n\t\ticonBackgroundColor: \"#fff3cd\",\n\t\ticonColor: \"#c27d00\",\n\t},\n\t[AlertType.SUCCESS]: {\n\t\ttitleColor: \"#126629\",\n\t\ticon: \"icon icon-success\",\n\t\ticonBackgroundColor: \"#d4edda\",\n\t\ticonColor: \"#126629\",\n\t},\n\t[AlertType.ERROR]: {\n\t\ttitleColor: \"#960d0d\",\n\t\ticon: \"icon icon-alert\",\n\t\ticonBackgroundColor: \"#f8d7da\",\n\t\ticonColor: \"#960d0d\",\n\t},\n};\n","export class PageInformation {\n\tpageTitle: string;\n\tpageRoot: string | undefined;\n\tconstructor(pageTitle: string, pageRoot: string | undefined) {\n\t\tthis.pageTitle = pageTitle;\n\t\tthis.pageRoot = pageRoot;\n\t}\n}\n","import * as XLSX from \"xlsx\";\nimport { Alignment, Workbook, Worksheet } from \"exceljs\";\nimport { saveAs } from \"file-saver\";\nimport { Injectable } from \"@angular/core\";\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class HtmlToExcelService {\n\tExportTOExcel(idTabla: string, html: string, filename: string, tabname: string, extension: string) {\n\t\tlet Table = document.getElementById(idTabla);\n\t\tif (Table == null) return;\n\t\tTable.innerHTML = \"\";\n\t\tTable.innerHTML += html;\n\t\tconst ws: XLSX.WorkSheet = XLSX.utils.table_to_sheet(Table, { raw: false });\n\t\tconst wb: XLSX.WorkBook = XLSX.utils.book_new();\n\t\tXLSX.utils.book_append_sheet(wb, ws, tabname);\n\t\tXLSX.writeFile(wb, filename + \".\" + extension);\n\t}\n\tprivate readonly Logo: string =\n\t\t\"iVBORw0KGgoAAAANSUhEUgAAAPAAAAA+CAYAAAAVt5ZWAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAACYVSURBVHgB7X0LdBzVmeZ/b1W3ZNmGNsHGIbPjlh8EHIxbwa/dc8ZqZZnZbDKzljcw4WFbLbLJSU6SdStLzgHColYOBLJhkJwhGzKbM2rbARISsNjMZJjAidvkJLEtg2QgOGActRnAlg2hsbH16rp3/v/equrq7upWC8u2sPuDdqnrcau6qr77//d/XQanGX2xSKjGgCi3ICyzcCEICENWSpEFJi0BzGJpMQYZJrI7rnzqpX6ooooqKoYJk4y+eCQ03eLNhuCrLUs0gWBhKSQAw41Mgv6P4X8SFwZDKuN36Fry1EubnDbu+8xfNX+67kgIxiB1xY/701BFFVX4gsEkYf8ty6KmZBuEJddKC0KKtAJpauEfFv5pSYZLiVIYlxK/40EWZCwL2q76eX/Sbae1oRGP6MHtIeQ7yKxModROXvFo/2aooooq8nDKBCbiGoy1I9eiUpGSiCs1aVFDRvIhiSWtl7id0T5ISvqeqpU8Nv/xvoNOWy9/7uoWpHiSRLJqC5nsLEVWpmkbg7Hk4sf3HYQqqqji/RP4ldsjEVMEOpFsjURSRTrSjXF8S0siqaT19kd9p49FRIRWVI1T3vZe/sLH25lgCTpYE161p5aKwKpjUG2lUTXvuOrnLyShiirOc7wvAg98Y2WnFGIjkdYlrkNUlLS4ZIq8RELhEFK+IwT77vAx0dXQ059x2qIx84wh3i4li2u1GzTxLacDcKSwbksTmyQyElmMNjU8+Yc0VFHFeYoJEXjgnmiYjY5tE2PZCDhkI/YKJSwZaBVaKtXZISCNdwVsGrJEoiGZIy5h3xcjYYMZ27CdiOoMhIfwDpFFTpIr1VtqldzpICArEkuefrEDqqjiPETFBB74zjVRnh3bBmPZC63RLBJUKO4qw7JNZBrj5ogHapxrGCI2/3t9RWPW/V9d3igtK8kkV1ZqR/oqguZJYMgR2iW2V1ID7BgNxb6SeqZq5KrivENFbqTXH/hkixwVSZFlelyq5C1TX/RfTBHP/ocWO5DKiUUPPpvya+/AV67eiPTvAuVMco5h6kBpN+AsIe875C81jzuq5K3ifMW4BH7jB/+tHcasBIlERp5c9NwqqpH0tTVol4QAKdzYseiBPSm/tvbFI2HTMruRdFHFfCKwQ0nNX1slsMlsj7H1GpZHa/t7Yukvnz9j6nMo2hwKnpyxkTEew2vIoArQc2T3j6rq+xTB3FXXh4UMtOO7EaXng5rapqO9W5NwDqOsCn3oh2tbcECblKNjIEbwg0s5Mgo4BrZVXVuVRS0W/04sus+fuNcntoX/cvjXLY3Dz8SRlCFHVc6Nb6WSwG57yvosc2Ndj/rsqM6WJTuW/uL5hPc8fddHwjUj0D2CVm40lKVhkjFn5YY+vGER7zq8wuSRXVtboYpJQzgaC504YTUXrsfxWgY7zB6/Y4i8Uga30+H5W2Tb4K6tXXCOoqQEPtJ9XcSSSN6spb4rUYv/Ckfy0v0EtsPiIrHo3mLiNn/9oUhNINB4ARtdEx15umnlyC7Ik6PSbQS5y3K6MXUpwpayLCd1nSPtb21Lf7G36KEExwD90TIakLC9rznS4LV2nyrmrFjXXEhe+7pic1fFOg7vTKahiknB8DCEOGfdxVtYGv/xJbCUASJ8uHg9a8fF+UXgQ92oihgCDVbSIRHKR8YUeVFh3j808909783e9PjxxdtNYLP+InZDLMB5KBAMLuVmIBwwzQj6kUJhKw3XiV/CLPGuTVJpm6ttvjItTb2qsgNbTc/bl0sYyDJ285Kf5/uQCb+/NtKOB8Tsg8NBS9ILsBYmCXgHQqyUvpJVL04aphjmrloXtSwWLlw/Nt3oyaSSk9a5TQXg84n4PR9cF4JzGL4E5gFIoFo7T9urFH2ViBwcCcL3X53P9hy/JGSa5p1mQLaDEdCs5ERwqRzANWIYPgW/lavFXpLSSvPVRGRK4uYG0PZa5tiwmMvm3LAa1yppLXcMA1vrJ1Vf+mwkjockVOimOotqofnFT18Vv/Kfn5+U3tcwZFpfbzGGZ8CUTMIQgsc4h5bC9bXDkAIaw59DQMGCz4C1+GxKwzkMXrjiyE9uamEG2+B8p1f2+CiD7/5+Ntzwm4/K3/1plk1q5BWNYaXF6GOhW0mgw7cp8CLcWfsIrOZ71dvuMXC5A26nY2B5YlfmDcg1p1XXkcG92hY/trfJj7z7boi0oFrQ6V3nOeWdfZ+8PAyTgMM7f5TCaykyWGHn0nGuSbMPIuxxblFHigbHc9o+kSeBDz1yfRgXCW1ZZnB8BOCh52vhx3+YLodEAEyTgjIUUZkmsVBhz0TcxbWDbO3Ml+CjwUFteJIes7KEnHvI625y4LVIs9xKbGIHiu/WxT/1N0i9dFMkjufqzGuPOe2r9maZrIbIPSmq9OGdWxJzV61PS8FiQFZOQyQHf+dvVKnizGNw15aGS1auR22M0Xg4Y0qeeKM3eU6nqOYR2DQDG5FhYXr997zB4H//ajq8eZwB55IRecmEpdL/iLjCIhUN5vD34CtzXpBX1L7FpMiXuA6c8Wz+GmdfbclS1jFwlpCxJO9Y/NBzJdXfl9dF2oVkCadxKe32PJ0B06J+zfN/uaTxqqde2AGTgMM7lVsiCVVMSdiS+Jw1WhXCJfChR2Jhxq2Nr/8J4I4nTeh93SUZgSnJq5dK4n7IHJLr/2w/+0ToTZBZLZGZO5j1hF44flzmGqW0eHQprYI5mHMMtpHCrqF18UN96VIX/Uos0iksFlfcFcWdg1QqgGv8wh4Ix8cATVBFFecYXAIbaLjasoex7/+WwbFhvU4xF0Hk5Vwwkrp1XMq/nfcW+8xHjrA6GEHy6n2ZxxUkIW/cSzKb5bmcPTtI6cZupDnw1kXd/r5kwr5YJIy2sm0opCNaagvnHJ4zOr4p0HGeyscM0b5rrow2PP1iybanCihYBIZrQ2hpymRSPdWx9RSB+1wQmZ0/TsMUgUvgLz5m9f/mj3ye+oJqtDIfM06GJLUkqXvDgmPhz13+LpvBxlQwhyKvLU9dyxQow45LI6n0WfxHSK+GCw6n0Ub9DtLwuyenX9DV0JUq+cLu/3xDI/YfSWwwrMfSwt2WcyF7rNAyZ8mmzgWJT+OiFJwC5qzYkPBbf2T3Ft/1H1l+Y2SMmUUBCTgkSduquMLFy9ZFucFaGI3dhmy3x1AQLlmxIYOmwh5hyc1v7flRCsaBikQSwZjzHX/2Ur/90L8fx9+SKXdNlSCE56vJBpolh0a8x5SQEgLttknjE0hjx70X1bXk0d6HT/s4tNS9Rlt8f6ngj3Igwta8NzMGBqzBdzXiPhfEJSs30DuHv0n2V/psSp3DfG9GhBnQjM9+Xt49lGhjQaGGLzF6P+CJsenHe/w6dFbJiQ79w980opqclJY1T4yhupwl8lr6Q0QWwo3MYk58s7Qr6JAcVJYuFVXFpJ11ZGcfpUxpttY/uDNd7vz7vxC5X0qjDaSdWkhBWVmhz2XZUVoS8pMchDcBgsEz8qKGLz+VOqUXCR+c9FuPxhPf+zh7+fqYb0CChB2Du7dEdfRQALezKIwDivjibKzjcJne/2L0+xqSb4f3A/uaKtmVOhzDoACJ8a/bbhwt+GOthyuUXHNXxfC+iAGfTWm81/V+x5S61/hGJo/s2lyxJdoNlwUeh8p9yGnkR9uRZyvrKPI67ImcQ4pkYehu2VhoCugAa6QbCRq1qedSXpPUjo2ybVFc76QzlMCWtjmh7B5OoZcq2eH7pdVlgko3BAPPD1F9TnDPx9DBqcjpabTAK+VKYOxf2r78dOq0S4GJgCRGVpjbK32AFPElZZBI33T4LKpwc1ata2do3YUJgUXx2gfmrFiXmMqx46pjOsm3wcSDP8LM5NsuWb6+a7B3a1upnVQ0H+PkFQmrFRWJT885GE/MWbmheXQab3Jcl7zU3oObr21nkO0DKpVjM0F5ZfWgVf3l3V9qt49Wjyley+fycMU7qG61LXpgT7RUwoOD/V/6eNxkBsUeR3X7dgvuCaVzVvurx2hmq/U6KpN1LH16coI5Jg0M5mVZ5eT1QMX7hqKxsxJdNGfl+u6JkzcH9QKuWNcOUxDUMRkGfz/PJAfO4hQvX+r5oMwh0oXhFEDhvDVD1ja3zcId0BccHXzohgGJNxt5EHKGuNq7k0smlM53zzhTQebIZNuk6Qvp8x2czZi/qGtPWTJRxtL+L1+9HX9tJ54i5LFVgx3LZfcSHsjc+Z0xMK1DAb1p6ZP5CQ9TBOGiF0Wqh3vQXpY9NnhSxOEMA/2rnaQFwCnCJnEzTCFUpFVU+Hzw3dtRKrCHgoFoOFG2ff0ZByzq2GPyVOijP13fifrmRgrUULvpREHbDEVqsC13NUOZ1/Zsr3Isymr8ax/9xDQZjF96/2/HvbADX10WR6NAO7Ya0jYqR7oCuIEhAPk2btf07XQazNl189J/ef6Mv+gTBY3R0MC2+fCuZMpZ95HlMTTIiDjezZYSh23ET6JwpQnZtJBBV0XF49eATwIGnrWNCSPvJcMnXvLFpPEltlbyXpKRhUvegwaflGFByDIghO9QDM/fCL4Sh3ejlEpNhQg2bYcoQ160DeBwLeF9PjRGR/EQtRMlws56iso7XMKg6e7DZAceF3XaxoN6GDN6sP10/nXFovY9LPkO4D3sUgQmH7BhZLfhk4g4tmIntiIXuqz9wa531b4CmR8h6blS2MFNs6P+3p0pGAckdQNgqrGuE8yhBbzzo50zONlJBeqyfUJX0ZYy8bF/PnN5wu8X+DBbB3duSRaut6OHYnNXbSALZHvxcRCai+O1wwXWT3tsnHC+Yy9N3oTiDCp6YXory57SLzgrpfamKVRx0PNye5BSxihhdYL2AORdv61FJOAsw05B9NkAGXS+tB3eVWyZtzPPaH0Sn1GCnhE9S799i4/9UQq1mTYhjNTRMlFieI4UqHtY+h1AVTrGj/50XdQMij7G2VJb0jE73MKb5CelLCCqx0jkNqnFcBp51jr/271NlZD3wNeWxQM41gUaa4NtSWY5JZk5IR6OAQscd5He5nw819Hxsf9fmrx90fBZGT8WA1+Ocdw2FLpZSuUSnEfhDMCyAlHwH7cReZvsF80X9KIP7t66tsRv2AhnGVqz8B+TSkO0VuJWo2eE96F+Ii44ihY7WmGIJ7WP7/5mv20kyTmONZNICPVS58axUvtRnfgp6Y1QduzRrrRz/sjgbt9kw3UNC+/tTUIZNMe7Q+23fTv+6i3L0WjAOvEG2OeHXMiWe5Fqiz6fqy3nfL25fdTato/19CdKnXfvX32shQcvmApqdXoCSeZP+K5lbB6cAaBrpt3/9LLiHGiU+K3F67QWAWcRJX8bqsJHJhDjfrpzwTkXSb/15Oc3UfL+uV3pgkmvZddOBLRduwr2wFcHGTuSkSmTc7KGmYlL7y09ziXS8kCweSYfaYnCc5HV2Z2uJHT8xq6JDDyldpyLVWNbWTjktS8BDhqMrb3s8f6SvdqLn1ocEVneVao3O5MQpUjpA1J30f/XCWcBs//TjRGw/KXvRCQOveCoNqYK/caWwU85uOb9otxvI6EGZxDeKC9CYaSXVrs3+B0aNt1yGCw3itT16kRO+uUUaXAylWjdqydnZp49dlHXz96+/AnDALbq+r8J100PoE0gGDYNqOc8eKHBjaVonm+SnIXny9fgs/JpuEgeAzdZ37WH2ZZmWxN3s5PyxrmQ61zsy8J9Kel47WU/LV1Ch8grgdw2MoQXfyGcZbDxLc1TAizLw/6+SpkuFZVWGrJoDXryl8LZwpgR8XOi4puXGjwD1VW0JZ61UP0ub5QXwRvphS/4EzqSTKJwLNa6TCV3hQ54JCls/wp3nOkEa3irY5zIcnjoYBj+6eh/CBmmmTAMlgBugmEYFJzFDJoECf+lBonrNXIE1hu/hiv5gNsGdyK2wKu2O5fleWtcjVqr9UzmKlnit02Lf9JXViV+sTkSkVmxHWiuJR/JXkU58Ij/ehbFTjMKE0JxT0BVNOAsAdVn33Oj1rkXTiN0FBvvhnH8wUx5DxjF/MeQ0Glc5TtkMsFRkUUuWorgWnuZ3Zz94j9+8CLYOjAXhmSNVCmGlBuMHmohUPCyLP4dUH8zYhoq4P952j72qWAfTGejro/YDbcsvmgPvaQTieHZbnup0OUhsqxt8cPPJaEMXlwbacFL6MIfFvI7XxXlcbrL0VD7FPRwNtxJVFzRtwSPZZy2iL33F8WmEC61ASUwy6gXvDAO0VnY0u/wCRPu6p0tX8jMZNiDUIkZlVpII2D8AxcWs5DLzLKUMnx5zVFonvEiXBYYLBq3us4ndyHzwiGl59zMk9qr6M/YM7gidsXDpdMNCS9dG4lLS3a6vLX9YtjCQaiiIpR6yScTtcOqk5gyQwrBs6el06o4WITBu7i8sNKIMBMlFFqPZciHs5pU+HlkXy388IWZMGShw8cgqxEatxilGFKoB2eUzCAYV0avWvTkXzvr9+yTM17Reb621JV2KEjxmBbAGWfnIrike3pXByBNn/HvXv6Pz45rRd53LSX7y4S7wjO+5wzegSoqRRrOUbASgSsoicIwySgbLKL8zbBpuJZ3FWoiOqCHpK+giqhr/EhtqppTLltkHoPfPM7hzu218OzhAKWbkcqspC75EBjH8a1A1ZlZyuiFEhg+Ped1uG72AZjm5Am7UtQeWntdQjbcbwzcSvH6q5Ru5BeTaQtdEVf8sHz8dF9zJFRTCzTXUhSs3B3yas8owasSuELgE0gzHxFsR491wCTgbJXjxWFePwogv00UvVapi6/Cc5mJEppMmnHlS0/7bbQDeujTg1b87eCT/WXiy03WrqVg15hzCPWrARPJG5DHR9QaFfssdAK95Aan5H5p6ZgPuWDmCfaF+a/BldPfYdKy9CRkNjyS1LOmEDIXeunal520Ydl1YproaOh6rqya9cqNkYigZH9LhvP9w54W8Y+syKahioqARsmUN+/ahZTNhyeQojcVMX260TM0JLqLtzCV5jmZGV+McV9ruxB87dHeU+vAOONoqhbAvMGR399tQtuTQacyh/b46jpYuryORdJXsjojC1/86CH2wPJ9sOTC404DoNOSIHcwONq4X29uk1dtzgV/YQ+fxlVNl/3gubaGrvIF2v8Qi8SFAdvxyLCWGAUpD45/Gf9veOql02akONegJUNxFBUZn1TxuA8w0kpd9Y9y0znak4pI8Tkgc3QSCu5xaYmDju/1OBqKN/6TAQ/uNtQ5POqTko52PSzkrgVLLx6C/xd9Df57+E/uFbnwqMJ+8tZbfoflBL/X3bzpWHDGxxc9OI7KHIuEXr450s2AcixZyO5p7PPmn1nqdTugionCN+iE4qNJUkGFuGTlTfGJ7H8mQNFkJbZEK017pCAM8omfzhRPfd/8iydwwzBT9MebxwBaH+Ww/QB37baQL0CV9K0zLfj26gz8/SeOwoenWzk3kxuzLPPJnEclVWMrz4XkDotB+Yb7ldT9v8/Gy5XXIez7H5FoncH78KhYXluFcNVoVWW6Kn2BVDcRq3TfadOMJPgYs0gKUyLAeKQkv6cevxmdlex/JlEuvY/SHi9Zvr6zHDHptwSHLtiO96K9Zkj0lfxtPoE7lYaSUgdRTiMwZ61NZnY+uD71pcdY9M1jeU7ffPGL+MR8C74ZHWEz0NKsZ0HIXaGz8I436TCnSkcuT1e6A1yaGBy00TmDOnNiQWfvJhgHffFIaPoQb8dj4spy7RqrCuYv9LqP7O/C4BXHt54LKDNbwcY5V6/rpxIwqvbT0PQYegH7D/vUdiJVc+6qda3Sv1RPWFXaWLk+SRFDOMxKjxkiY2bNsEFBCFRPKl9yhG0Sn9WqIl5QnDZ6Ufp83TacxZGYzZcsW78JLTv9WVPbTwJWIIr2rzUoEJo9g8KSvw1fvSdwv6LnIA3eXe5eqNI7Q6qCR8mAF5VO+GTaaD10HM3VQixlBsxCF8w8rmZBUsW1QhfVgfz8Mit605IxXcY1C14p6kl2cDVhN7xKG7QdN5FnEGyXvMR1OwwwY/Wd5etiEfZ/aXmjHLGSQKZ+xz1lk1OCJ2g75112x7+4Ld3wZPGcSucyiMB+08GoAA0qAUPxtUN6nTSUJEr5tUOSau6qDR1+aW2qPUr0ZyyGUgtq6H4bUA5TisQ0zkd1uRWHYdtK7BIGg3VihwSGDOo1JevYABUVREkca/BalikZATtAv45U3QvsAFNUHI8xkcF7GGaChX06P18oAifuVSejT6pwh3ceX7d0dNjqUeFV2Vy4sl02R2X522JUSpupqpqr4xjKi4rMqc94oQepVtXC+3ePKxVJ6s6wzHa8hjiI/BcyV4lSl9/K197zRgMpOM9g556moKLicyxaLipKz0qxAUqReEJQlRfNMEwRPzPFGiOJ1yKJu+EUo8+Q25sK3UL0HLB9JKg/iakDNAyqdmL3DP4dYJr29TlfaRx5dN3GsVHZjycIF5LREamOXNUToBFso1Qu7Eqr1t5a0Pgj2Vhdw8K/K0/eaLw71B2/OT5TqnzhuGPHdlzWhSj0tTlGOFxmsAftgPMQprDaoMLkifFK9aj8ZC4rbs8XusJFgx5/Th0Qiem64P12KhSQQUn9JSpy1NWZ8VLj7fHb5U34R9pvc0kCv/2YqoHUxZgb4ZFzruarzDaHc5XvnAFoTs2Wuj40/gA0kTUs/E5vvL6MkYrmFr75lu+1/0/+y4HV7AWyMIcVcVnOI8S8SjpzpK/MJ7G2kKUhwJqueHLyJ/z+IOCN3of7TZnFF2DcFzMdkOPbCAZ/t7WLXvQJp2UScakCye4t0ak6l7IqQLBrSz1dJ1RKZEUw6BipK5/UT7aEwV1bm/wmyCvTtt3ZlS6aUFRWdqA7Fpox0+rGB7RG2lJWCVCXOTkS0V/CDgCxt0jXakQGLKeIJYN3cdm24NulE/3Xfn1LI5Msig1EV8Nz0Wtgl47o8gZlFCb621FeTu0fYa9zwaBnzGCtkzXRNxMTm+mOAiHAgqJjTKh8OtLaWsgMnyg+L9oq0lAhiMQ4LmuSkma9V4XpdGCBlqR7GZfJieb3gir5E0uo2lA02ZsK+cvLmDkIFCTEZMoURmoik4yV+s3l6naVutcTuU8OnPmvqC6VJUUzVzOBKNVaq9cS0ngt/Uzy1GgdTKi2lx6KxJLufaNnwdx2KRb6IA4/UwbjPd46XGhs68DfV9RpFlk43nq85VfYUlRaevpQlRmcxcvFAauKslJBHEIVdQd7KejvbFYvcTvN2gB2sXdGdY9O1m0iiRuNdYagFkIBKxgyAjzCOIsYzJzHA2Yj7jdrIXsT/gvvhQXwujZ86WLwWrIKFf6GS+ZMl6LqQuti7rgvFXhX1wiUwZTBT2LxY/3jWrWrqOKDjCICv/1YLI606JRCV03XRBaKmERgIiYRVRHZovVEYJqpQf+tZ2zIwgvHLoAHDi2Rf5IXYO9ogokfwzQY9pTkfAaD45IbknPO6vgYfCr4HDQaL2iJb8/cwPT5c7MtEGntGRcccufNxJDFzsaCZ9goxK7oOT9V5irOLzC/lW89tuFXSJQmLemkJioSWlgo6hwJ7JCXpK2lpTBNs0Jph/cfWAAvDX2I1BoirzRMk6mloQnsfMjtcE3dy/Dpmj5Ul0ddgjrOKOklKnUnlj3mLSSwnlolg5eYWPxwVepWcf7Ad2oVg/Obs9Iiy69dbE6FtGtzFq3QRisQzhgUV703xuFnA3Pg8TfmwDDqyYYhAFVkVHktRmovU3CNT/Ky4BGm84UPKxXYMZXlTuLAXuF4l4W9I+R2lDRViyFji7dWpW4V5xdYqQ2HHl0fM6TsVmQhH7CSsnosrNRoUqezWq3ufZPDXc9dLI+O1pKqzFDiKpWZawlsf7TqPDMgoWXuPviLuoNK1XYlqm0dY7Y12Y2y8qrNEvImMuOCZSwpOy7/x+cmNf2riio+KGDlNg7+ZF2CCdGuCYRUoYm8hTMWlvDuySz8oL8OHnm5DsezXDpENc0AQ7JKU6nO7phX3vjnb8Bfz36dTZPDIEa16u34iaUrWcGJArFVZYfAUtqTeTOd68u6TtRlOwozlZ7/r0saraGxgw2pP6ShiirOcbDxdjj6yI3tyJx2Iq+wtPQlAu95g8Odv66Th04YOoCa5uDlHEj6eqUufRpmj8Ati/8NLjZPghwd05J3zNIdAXHWTjl1picFPZew1s01cVnOeKUiqjoKM5UomT+AnY3I8r1X/aI/CVVUcR5gXAITBrden0Dm3Cmp6BWS+P/8JgAP/76GNklvG0RgtCyjBNbkvXQmwG3L34bIRSc0YRVxs8rwJYjIlshZm221mUjqJvcL7BUcMlPpH8k6Fn0vf3I0SimsHYWNcgziYgzaruypkreKcw8UThyqrQ1lhoczXq2zIgITBjf/bfu7QyLR9q81sOfNktHqkizLoTqD3bRkFD770RNAmUvKfzymJwUn4qLPWCKJmfYp69hpV5UmYS7skBFbhUbtvcs0ZnQURm+9/IVIC6Ni7WMSRkZk61WP9p9X2UZnEvtupfmrAnHsn1so95qCNPAxbVr4reLgnP23LsufALzMvgPfWLkde+gwqlmbFtyjO+eBW1dFJRfdqNWl6u/elRecQS/yzNpAAr2Pa3TT0I8vzxOFbTvtMsFpip+03W4Y26X64On5d/c2ufuWOZ+DV+9Y0cwF+BbYLzzuwO3Lu1CTXCOk1bbwnmfdd/LAN5bFmeQb6ZoXfGv3Wmf9H29fMaDa8VyrA7rvNUbhJPAyNWKNtV5xb3+6bCy0F5e0PNqxOjmjdc+bZkqX4QE3zdD7W66+1GIPf+Y9+HzDMMyssU+n5DTzRlU5CcRgm6apCK2a74Hp+neOJ2nHNCMQXvT3e9q85B346vLG/V9etp0xI4n7ZJghm6rkPX1QLxEPbucG22jH2x3EZYQz1v3qbVc3e/d99bYVzWqeXXrhmMzoj973wO3L2gvbRgWrnqK4GOedr9y+PJc2h+vQcVlfuP+FdcE+dR1chmwnSLO6jtuXx/zaLfoxtE4y3/V+5/M0GFLH+nwKj6PZNfU2np8YIblaT9d84LZl8bxr8rlW576791IXV0jTd9RyY7RPxQQmHN6ZTA7u2tx0ZPeWhsFdW9iR3Vs5Tew0Mo3P2vnFY7Ne/Fq2p/s6Cy69QF2tc3E6X0iIPHEvneBl9zfktiKbqcduWnh/b/TSv8tN1zLw9eWNr/6vZdstTkHhMoq99uaTF4iGy5L91UT904hao4aydMJIik3MnF6P0iNMAfaCy1avhKEXDj2HSkpZTHTMv6t3Fn2kHf9LSfK0T6nzmMC2kYQttZ0kqPOiM9NoUNcR4PXUvp90n0xQ+/Pv3s3ow+zMNrwfrfQdt0VhgijqsHwQYIGE/Xv76b7juZpZYLQBqbR20V17ErSPCacIFQD+k3XNnM/sltRL2dM7OP5isGtL6lhlnQFsJxAzchRLIZxsBAqefBcXHQvu680b56qeCALdgqpNaqKncdH60X/oS0EVpxUDiUgIhyhRfJAZfFFdqVF/V/HMkwEzGMFHG8Y/084LRlhw1+4EqrSN+NyjQWaSxC52+0n1TMMXTDOpWIP/3FG1wxnIBjL4NoXkqNh+4PYVm7PD2dSie3Pn+kCApCn+BrvDaii1Gw4TWmiJnWHbokQq88rXl0eyw4pjGRqm4O9OTUgC++Htn23YyE2VDB1izJt/ZF+rHcoMbkEOOyNQSjtNQuUYZZDa32Sj2LvflzNS3XLrPdGDd69urzFqBnC/KO6I+8kOg01vWPRA+XpZVUwSnEm3JBs3YB9747D+SxbtK0EX1Jd+6isoidRKLzYu48Kw1vjtU5/ozzAwaOy411ZF20ldpzHkeNJsKgG9KpuBElqcDmscmFkzTUsjwHro96oPV9OzwCkT+EPXbtkEOPimyhoqJ1hKt6KzneXHAAqLYNnFsYi46BJiEtWhe3cnbnrtmgv/47pvNX/ic51d37nz1oHPX/yb7aAKtJMFGvdDgi+6b0+ifpx6WVVMIkjq6XFseDyScGY6Q5mwV1VWarGERr1TiUysLKSl5FrVBlYyL5kkP6qSEVKdSYUFrY2FTeZvYMqa2bDnq/6bybP8/rAMXv9ap8MquZejqrOsmkuZB3lU5wbncMoqNGH2dSrtKXrokVgYTctxZGYUb+5SNyRSJ/uTbYrZWYjs0ddmwQ//+KHQCJu2MVhT23LlX68OD7ER+WdBxuJLDsAV09/KZN8bS1rS2IwPLAVVnBWQ1ENVdRNJO1L50FjUge66fiOoajyFjp0Yc8v+ErlQVU5RSigZX1DNU5ZZlBad9lgubQSNVKlzLbh7VxceT2msUb/tjkUWB12bh4eHU8PD0DNzWiCKqmZYyCKPShI/7Ybg3Wj9VfHxaDNRRLCY9FXR0aAz79VbPcYwxjIL7xm/Ysz7QX1iZ/rAN1Z2oIwrPXUsFc+XMkokR8t2yBq2duCvjHoL0k8KgR18+AaVJ6p6lEPd14dBDEdRXYii2otuArkUP6Fn36qBb/Z9BA6dNNXUwhzdTBb6h8fMbM/y2WPsayvf6b8Y8OEA669v+9eqpJ0CQGNR4sAdy2l2x40cWDcP5rbNrAvsAE0WjQBrhTG5nQirrdEu0iwg19KLW/ZkgZG1MBakOPxw4Sa0vCoLMr6/3TXYg9RMz9uc9H7hwVF0LwZblKqtyg6DEz6/Y9HdJcfMYbRwd7vfpMolPm3eDdVh3bGiEbXLZr/t1CEeuGMFaqjQzqjmmAExZ5vFBanhk0tgLz7cqgqWJaHgxpbDy/jpfhCqmIJYcFdvHF+2lBA0tSi6cHBMzIMiuTDRm6cS2wStJ7cOSrQorZMg+nlgRrI+4TP0YaILVefQu8PDWoqjxB9ILF8rRhm91GnvrmgYSw0kog3W6IlmJGWErkM1wXhy4d35RjVqx7kOXRJKBRqhv7bY+DYMw+mgDHYUXZsUvgIE3Uabsc0dokRhBsGghwlIF24XXKQ4TUeES3elOdoqR4NqSlPnHnihDICJVUlr1Iqq38FEhu7lIvte/jsfmAD77UjohwAAAABJRU5ErkJggg==\";\n\tprivate readonly ColumnAligment: Partial<Alignment> = {\n\t\tvertical: \"middle\",\n\t\thorizontal: \"center\",\n\t\twrapText: true,\n\t};\n\tasync ExportToExcel(\n\t\texcelName: string,\n\t\treportTitle: string,\n\t\tfilterTitle: string,\n\t\trowsSerializate: string,\n\t\tcolumns: IExcelColumnName[],\n\t\tfilters: IFilter[],\n\t\tsubtitles: string[] = [],\n\t\tshowTotalRow: boolean = false,\n\t\theaderGroups: IExcelHeaderGroup[] = []\n\t) {\n\t\tconst workbook = new Workbook();\n\t\tconst worksheet = workbook.addWorksheet(reportTitle);\n\t\tworksheet.views = [{ showGridLines: false }];\n\t\tconst imageId = workbook.addImage({\n\t\t\tbase64: this.Logo,\n\t\t\textension: \"png\",\n\t\t});\n\t\tthis.SetReportPage(rowsSerializate, worksheet, columns, imageId, subtitles, showTotalRow, headerGroups);\n\t\tthis.SetTitle(worksheet, reportTitle);\n\t\tif (filters.length > 0) {\n\t\t\tconst worksheetFilter = workbook.addWorksheet(filterTitle);\n\t\t\tworksheetFilter.views = [{ showGridLines: false }];\n\t\t\tthis.SetFilterPage(filterTitle, worksheetFilter, filters);\n\t\t}\n\t\tconst buffer = await workbook.xlsx.writeBuffer();\n\t\tsaveAs(new Blob([buffer]), excelName);\n\t}\n\tprivate SetTitle(worksheet: Worksheet, reportTitle: string) {\n\t\tworksheet.mergeCells(\"D1:I5\");\n\t\tconst titleCell = worksheet.getCell(\"D1\");\n\t\ttitleCell.value = reportTitle;\n\t\ttitleCell.font = {\n\t\t\tname: \"Arial\",\n\t\t\tbold: true,\n\t\t\tsize: 20,\n\t\t\tcolor: { argb: \"203764\" },\n\t\t};\n\t\ttitleCell.alignment = this.ColumnAligment;\n\t}\n\tprivate SetReportPage(\n\t\trowsSerializate: string,\n\t\tworksheet: Worksheet,\n\t\tcolumns: IExcelColumnName[],\n\t\timageId: number,\n\t\tsubtitles: string[] = [],\n\t\tshowTotalRow: boolean = false,\n\t\theaderGroups: IExcelHeaderGroup[] = []\n\t) {\n\t\tlet columnsCell: string[] = [];\n\t\tlet rows = JSON.parse(rowsSerializate);\n\t\tlet isHeaderGood = headerGroups.length > 0;\n\t\tconst imageRows = 5;\n\t\tconst numberRows = rows.length;\n\t\tfor (let i = 0; i < subtitles.length + imageRows; i++) {\n\t\t\tworksheet.addRow([\"\"]);\n\t\t}\n\t\tlet startRow = imageRows + 1 + subtitles.length;\n\t\tconst groupedIndices = new Set<number>();\n\t\tif (isHeaderGood) {\n\t\t\tfor (const group of headerGroups) {\n\t\t\t\tconst startChar = this.GetExcelColumnLetter(group.startColumn);\n\t\t\t\tconst endChar = this.GetExcelColumnLetter(group.endColumn);\n\t\t\t\tconst range = `${startChar}${startRow}:${endChar}${startRow}`;\n\t\t\t\tworksheet.mergeCells(range);\n\t\t\t\tconst cellGroup: string = `${startChar}${startRow}`;\n\t\t\t\tconst cell = worksheet.getCell(cellGroup);\n\t\t\t\tcell.value = group.name;\n\t\t\t\tcell.font = {\n\t\t\t\t\tname: \"Arial\",\n\t\t\t\t\tbold: true,\n\t\t\t\t\tsize: 10,\n\t\t\t\t\tcolor: { argb: \"FFFFFF\" },\n\t\t\t\t};\n\t\t\t\tcell.fill = {\n\t\t\t\t\ttype: \"pattern\",\n\t\t\t\t\tpattern: \"solid\",\n\t\t\t\t\tfgColor: { argb: \"17375e\" },\n\t\t\t\t};\n\t\t\t\tcell.alignment = {\n\t\t\t\t\tvertical: \"middle\",\n\t\t\t\t\thorizontal: \"center\",\n\t\t\t\t\twrapText: true,\n\t\t\t\t};\n\t\t\t\tfor (let i = group.startColumn; i <= group.endColumn; i++) {\n\t\t\t\t\tgroupedIndices.add(i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (let i = 0; i < columns.length; i++) {\n\t\t\tconst colLetter = this.GetExcelColumnLetter(i);\n\t\t\tconst topCell = `${colLetter}${startRow}`;\n\t\t\tconst bottomCell = `${colLetter}${isHeaderGood ? startRow + 1 : startRow}`;\n\t\t\tif (groupedIndices.has(i)) {\n\t\t\t\tcolumnsCell.push(bottomCell);\n\t\t\t\tworksheet.getCell(bottomCell).value = columns[i].displayColumnName;\n\t\t\t\tworksheet.getCell(bottomCell).alignment = {\n\t\t\t\t\tvertical: \"middle\",\n\t\t\t\t\thorizontal: \"center\",\n\t\t\t\t\twrapText: true,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tworksheet.mergeCells(`${topCell}:${bottomCell}`);\n\t\t\t\tconst cell = worksheet.getCell(topCell);\n\t\t\t\tcell.value = columns[i].displayColumnName;\n\t\t\t\tcell.font = {\n\t\t\t\t\tname: \"Arial\",\n\t\t\t\t\tbold: true,\n\t\t\t\t\tsize: 10,\n\t\t\t\t\tcolor: { argb: \"FFFFFF\" },\n\t\t\t\t};\n\t\t\t\tcell.alignment = this.ColumnAligment;\n\t\t\t\tcell.fill = {\n\t\t\t\t\ttype: \"pattern\",\n\t\t\t\t\tpattern: \"solid\",\n\t\t\t\t\tfgColor: { argb: \"17375e\" },\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\tif (isHeaderGood) startRow += 2;\n\t\telse startRow += 1;\n\t\tif (showTotalRow) {\n\t\t\tconst sums = columns.map(col => {\n\t\t\t\tif (col.columnName === \"\") return \"Total\";\n\t\t\t\tif (!col.totalRowValue) return null;\n\t\t\t\treturn col.totalRowValue ? { formula: `\"${col.totalRowValue}\"`, result: col.totalRowValue } : null;\n\t\t\t});\n\t\t\tconst insertedRow = worksheet.insertRow(startRow, sums);\n\t\t\tinsertedRow.eachCell((cell, colNumber) => {\n\t\t\t\tconst column = columns[colNumber - 1];\n\t\t\t\tcell.font = {\n\t\t\t\t\tname: \"Arial\",\n\t\t\t\t\tbold: true,\n\t\t\t\t\tsize: 10,\n\t\t\t\t\tcolor: { argb: \"FF7F00\" },\n\t\t\t\t};\n\t\t\t\tcell.alignment = {\n\t\t\t\t\tvertical: \"middle\",\n\t\t\t\t\thorizontal: (column?.alignHorizontal as \"distributed\" | \"justify\" | \"center\" | \"left\" | \"right\" | \"fill\" | \"centerContinuous\") ?? \"left\",\n\t\t\t\t};\n\t\t\t\tcell.border = { bottom: { style: \"thin\", color: { argb: \"FF7F00\" } } };\n\t\t\t\tif (typeof cell.value === \"number\") {\n\t\t\t\t\tcell.numFmt = \"0.00\";\n\t\t\t\t}\n\t\t\t});\n\t\t\tcolumns.forEach((col, index) => {\n\t\t\t\tconst cellAddress = `${this.GetExcelColumnLetter(index)}${startRow}`;\n\t\t\t\tconst cell = worksheet.getCell(cellAddress);\n\t\t\t\tcell.font = {\n\t\t\t\t\tname: \"Arial\",\n\t\t\t\t\tbold: true,\n\t\t\t\t\tsize: 10,\n\t\t\t\t\tcolor: { argb: \"FF7F00\" },\n\t\t\t\t};\n\t\t\t\tcell.alignment = {\n\t\t\t\t\tvertical: \"middle\",\n\t\t\t\t\thorizontal: (col.alignHorizontal as \"distributed\" | \"justify\" | \"center\" | \"left\" | \"right\" | \"fill\" | \"centerContinuous\") ?? \"left\",\n\t\t\t\t};\n\t\t\t\tcell.border = { bottom: { style: \"thin\", color: { argb: \"FF7F00\" } } };\n\t\t\t});\n\t\t\tstartRow++;\n\t\t}\n\t\t//Inserción de filas\n\t\tfor (let rowIndex = 0; rowIndex < numberRows; rowIndex++) {\n\t\t\tconst rowValues: string[] = [];\n\t\t\tfor (let colIndex = 0; colIndex < columns.length; colIndex++) {\n\t\t\t\trowValues.push(colIndex === 0 ? `${rowIndex + 1}` : rows[rowIndex][columns[colIndex].columnName] ?? \"\");\n\t\t\t}\n\t\t\tconst insertedRow = worksheet.addRow(rowValues);\n\t\t\tinsertedRow.eachCell((cell, colNumber) => {\n\t\t\t\tconst col = columns[colNumber - 1];\n\t\t\t\tif (col.formatNumber) {\n\t\t\t\t\tcell.numFmt = this.GetNumberFormat(col.formatNumber);\n\t\t\t\t\tcell.value = Number(cell.value);\n\t\t\t\t}\n\n\t\t\t\tcell.alignment = {\n\t\t\t\t\tvertical: \"middle\",\n\t\t\t\t\thorizontal: (col.alignHorizontal as Alignment[\"horizontal\"]) ?? \"left\",\n\t\t\t\t\twrapText: true,\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t\t//Formato nombre de columnas\n\t\tcolumnsCell.forEach(cellRef => {\n\t\t\tconst cell = worksheet.getCell(cellRef);\n\t\t\tcell.fill = {\n\t\t\t\ttype: \"pattern\",\n\t\t\t\tpattern: \"solid\",\n\t\t\t\tfgColor: { argb: \"17375e\" },\n\t\t\t};\n\t\t\tcell.font = {\n\t\t\t\tname: \"Arial\",\n\t\t\t\tbold: true,\n\t\t\t\tsize: 10,\n\t\t\t\tcolor: { argb: \"FFFFFF\" },\n\t\t\t};\n\t\t\tcell.alignment = this.ColumnAligment;\n\t\t});\n\t\t//Formato de filas\n\t\tconst firstDataRow = startRow;\n\t\tworksheet.eachRow((row, rowIndex) => {\n\t\t\tif (rowIndex < firstDataRow) return;\n\t\t\tconst isEven = (rowIndex - firstDataRow) % 2 === 0;\n\t\t\trow.eachCell(cell => {\n\t\t\t\tif (!isEven) {\n\t\t\t\t\tcell.fill = {\n\t\t\t\t\t\ttype: \"pattern\",\n\t\t\t\t\t\tpattern: \"solid\",\n\t\t\t\t\t\tfgColor: { argb: \"D9D9D9\" },\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcell.font = {\n\t\t\t\t\tname: \"Arial\",\n\t\t\t\t\tsize: 10,\n\t\t\t\t\tcolor: { argb: \"203764\" },\n\t\t\t\t};\n\t\t\t});\n\t\t});\n\t\t//Logo intelica\n\t\tworksheet.addImage(imageId, {\n\t\t\ttl: { col: 0.5, row: 1.5 },\n\t\t\text: { width: 218, height: 58 },\n\t\t\teditAs: \"absolute\",\n\t\t});\n\t\t//Subtitulos: Se inserta al final para evitar altere el autoajuste de las columnas\n\t\tfor (let i = 0; i < subtitles.length; i++) {\n\t\t\tconst range = `A${6 + i}:${this.GetExcelColumnLetter(columns.length - 1)}${6 + i}`;\n\t\t\tworksheet.mergeCells(range);\n\t\t\tconst cell = worksheet.getCell(`A${6 + i}`);\n\t\t\tcell.value = subtitles[i];\n\t\t\tcell.font = {\n\t\t\t\tname: \"Arial\",\n\t\t\t\tbold: true,\n\t\t\t\titalic: true,\n\t\t\t\tsize: 10,\n\t\t\t\tcolor: { argb: \"203764\" },\n\t\t\t};\n\t\t\tcell.alignment = {\n\t\t\t\tvertical: \"middle\",\n\t\t\t\thorizontal: \"left\",\n\t\t\t\twrapText: true,\n\t\t\t};\n\t\t}\n\t\tthis.AdjustColumnWidth(worksheet, columns);\n\t}\n\tprivate SetFilterPage(filterTitle: string, worksheetFilter: Worksheet, filters: IFilter[]) {\n\t\tlet widtFilter: number = 30;\n\t\tworksheetFilter.addRow([filterTitle]);\n\t\tworksheetFilter.mergeCells([\"A1\", \"B2\"]);\n\t\tworksheetFilter.columns.forEach(column => {\n\t\t\tcolumn.width = widtFilter;\n\t\t\tcolumn.alignment = this.ColumnAligment;\n\t\t\twidtFilter *= 3;\n\t\t});\n\t\t[\"A1\", \"B1\"].map(key => {\n\t\t\tworksheetFilter.getCell(key).fill = {\n\t\t\t\ttype: \"pattern\",\n\t\t\t\tpattern: \"solid\",\n\t\t\t\tfgColor: { argb: \"FF7F00\" },\n\t\t\t\tbgColor: { argb: \"FF7F00\" },\n\t\t\t};\n\t\t\tworksheetFilter.getCell(key).font = {\n\t\t\t\tname: \"Arial\",\n\t\t\t\tbold: true,\n\t\t\t\tsize: 12,\n\t\t\t\tcolor: { argb: \"FFFFFF\" },\n\t\t\t};\n\t\t});\n\t\tfilters.forEach((element, index) => {\n\t\t\tlet row = worksheetFilter.addRow([element.key, element.value]);\n\t\t\tlet color = index % 2 === 1 ? \"D9D9D9\" : \"FFFFFF\";\n\n\t\t\trow.eachCell(cell => {\n\t\t\t\tcell.fill = {\n\t\t\t\t\ttype: \"pattern\",\n\t\t\t\t\tpattern: \"solid\",\n\t\t\t\t\tfgColor: { argb: color },\n\t\t\t\t\tbgColor: { argb: color },\n\t\t\t\t};\n\t\t\t\tcell.font = {\n\t\t\t\t\tname: \"Arial\",\n\t\t\t\t\tbold: false,\n\t\t\t\t\tsize: 10,\n\t\t\t\t\tcolor: { argb: \"203764\" },\n\t\t\t\t};\n\t\t\t});\n\t\t});\n\t}\n\tprivate AdjustColumnWidth(worksheet: Worksheet, columns: IExcelColumnName[]) {\n\t\tworksheet.columns.forEach((column, index) => {\n\t\t\tif (!column.values) return;\n\t\t\tif (columns[index] == undefined) return;\n\t\t\tlet columnWidth = columns[index].width ?? Math.max(...column.values.map(v => (v ? v.toString().length : 0)).filter(v => typeof v === \"number\"), columns[index].displayColumnName.length) * 1.4;\n\t\t\tcolumn.width = Math.min(Math.max(columnWidth, 5), 100);\n\t\t});\n\t\tworksheet.eachRow((row, rowIndex) => {\n\t\t\tif (rowIndex === 1) return;\n\t\t\tlet maxLines = 1;\n\t\t\trow.eachCell((cell, colNumber) => {\n\t\t\t\tif (cell.value) {\n\t\t\t\t\tlet text = typeof cell.value === \"object\" ? cell.text : cell.value.toString();\n\t\t\t\t\tlet columnWidth = worksheet.getColumn(colNumber).width ?? 10;\n\t\t\t\t\tlet charsPerLine = columnWidth * 1.2;\n\t\t\t\t\tlet estimatedLines = Math.ceil(text.length / charsPerLine);\n\t\t\t\t\tmaxLines = Math.max(maxLines, estimatedLines);\n\t\t\t\t}\n\t\t\t});\n\t\t\trow.height = Math.min(Math.max(15 * maxLines, 15), 30);\n\t\t});\n\t}\n\tasync ExportToExcelRawData({ excelName, reportTitle, filterTitle, rowsSerializate, columns, filters, orderColumn = false }: ExportExcelCommand): Promise<void> {\n\t\tconst workbook = new Workbook();\n\t\tconst worksheet = workbook.addWorksheet(reportTitle);\n\t\tconst rows = JSON.parse(rowsSerializate);\n\t\tworksheet.views = [{ showGridLines: false }];\n\t\tconst allColumns = orderColumn ? [{ displayColumnName: \"N°\" }, ...columns] : columns;\n\t\tallColumns.forEach((col, index) => {\n\t\t\tconst columnLetter = this.GetExcelColumnLetter(index);\n\t\t\tconst headerCell = worksheet.getCell(`${columnLetter}1`);\n\t\t\theaderCell.value = col.displayColumnName;\n\t\t\theaderCell.alignment = { horizontal: \"center\", vertical: \"middle\" };\n\t\t\theaderCell.font = { name: \"Arial\", bold: true, size: 10 };\n\t\t});\n\t\tconst maxLengths = allColumns.map(col => col.displayColumnName.length);\n\t\trows.forEach((rowData: any, rowIndex: number) => {\n\t\t\tconst rowValues = allColumns.map((col, colIndex) => {\n\t\t\t\tif (orderColumn && colIndex === 0) {\n\t\t\t\t\treturn (rowIndex + 1).toString();\n\t\t\t\t}\n\t\t\t\tconst originalColIndex = orderColumn ? colIndex - 1 : colIndex;\n\t\t\t\treturn rowData[columns[originalColIndex].columnName]?.toString() || \"\";\n\t\t\t});\n\t\t\trowValues.forEach((value, i) => {\n\t\t\t\tconst length = value.length;\n\t\t\t\tif (length > maxLengths[i]) {\n\t\t\t\t\tmaxLengths[i] = length;\n\t\t\t\t}\n\t\t\t});\n\t\t\tworksheet.addRow(rowValues);\n\t\t});\n\t\tallColumns.forEach((_, index) => {\n\t\t\tworksheet.getColumn(index + 1).width = maxLengths[index] + 2;\n\t\t});\n\t\tif (filters?.length) {\n\t\t\tconst worksheetFilter = workbook.addWorksheet(filterTitle);\n\t\t\tworksheetFilter.views = [{ showGridLines: false }];\n\t\t\tthis.SetFilterPage(filterTitle, worksheetFilter, filters);\n\t\t}\n\t\tconst buffer = await workbook.xlsx.writeBuffer();\n\t\tsaveAs(new Blob([buffer]), excelName);\n\t}\n\tasync ExportToCSVRaw(excelName: string, rowsSerializate: string): Promise<void> {\n\t\tconst rows: { linea: string }[] = JSON.parse(rowsSerializate);\n\t\tconst csvLines: string[] = rows.map(r => r.linea);\n\t\tconst csvContent = csvLines.join(\"\\n\");\n\t\tconst blob = new Blob([\"\\uFEFF\" + csvContent], { type: \"text/csv;charset=utf-8;\" });\n\t\tsaveAs(blob, excelName.endsWith(\".csv\") ? excelName : `${excelName}.csv`);\n\t}\n\tprivate GetExcelColumnLetter(columnNumber: number): string {\n\t\tlet letter = \"\";\n\t\twhile (columnNumber >= 0) {\n\t\t\tletter = String.fromCharCode(65 + (columnNumber % 26)) + letter;\n\t\t\tcolumnNumber = Math.floor(columnNumber / 26) - 1;\n\t\t}\n\t\treturn letter;\n\t}\n\n\tprivate GetNumberFormat(formatNumber: string): string {\n\t\tconst formats: Record<string, string> = {\n\t\t\tinteger: '#,##0;(#,##0);\"-\"',\n\t\t\tdecimal: '#,##0.00;(#,##0.00);\"-\"',\n\t\t\tpercent_2: '#0.00\"%\";(#0.00\"%\");\"-\"',\n\t\t\tpercent_4: '#0.0000\"%\";(#0.0000\"%\");\"-\"',\n\t\t};\n\t\treturn formats[formatNumber] || \"\";\n\t}\n}\nexport interface ExportExcelCommand {\n\texcelName: string;\n\treportTitle: string;\n\tfilterTitle: string;\n\trowsSerializate: string;\n\tcolumns: IExcelColumnName[];\n\tfilters: IFilter[];\n\torderColumn?: boolean;\n}\nexport interface ICell {\n\tindex: number;\n\tcells: string[];\n}\nexport interface IExcelColumnName {\n\tcolumnName: string;\n\tdisplayColumnName: string;\n\talignHorizontal?: string; // 'distributed' | 'justify' | 'center' | 'left' | 'right' | 'fill' | 'centerContinuous' type alignment and left for default\n\twidth?: number;\n\ttotalRowValue?: string;\n\tformatNumber?: \"integer\" | \"decimal\" | \"percent_2\" | \"percent_4\";\n}\nexport interface IFilter {\n\tkey: string;\n\tvalue: string;\n}\nexport interface IExcelHeaderGroup {\n\tstartColumn: number;\n\tendColumn: number;\n\tname: string;\n}\n","import { Injectable, inject } from \"@angular/core\";\nimport { ConfirmationService, Confirmation } from \"primeng/api\";\nimport { AlertButtonMode, AlertType } from \"../enums/alert-type.enum\";\nimport { ALERT_DEFAULTS, ALERT_ICON_OVERRIDES, ALERT_TYPE_CONFIG, AlertConfig, AlertResult, AlertStyleConfig, AlertTypeConfig } from \"../model/alert.model\";\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class AlertService {\n\tprivate readonly confirmationService = inject(ConfirmationService);\n\tprivate readonly iconOverrides = inject(ALERT_ICON_OVERRIDES, { optional: true });\n\tprivate readonly DIALOG_KEY = \"intelica-alert-dialog\";\n\n\t/**\n\t * Displays a warning alert with yellow styling.\n\t * Can be called with (title, subtitle, buttonMode, buttons) OR (title, subtitle, buttons).\n\t */\n\twarning(\n\t\ttitle: string,\n\t\tsubtitle?: string,\n\t\tmodeOrButtons?: AlertButtonMode | { confirmText?: string; cancelText?: string },\n\t\tbuttons?: { confirmText?: string; cancelText?: string },\n\t\tsize?: \"sm\" | \"md\" | \"lg\"\n\t): Promise<AlertResult> {\n\t\tconst { buttonMode, buttonConfig } = this.resolveArgs(modeOrButtons, buttons);\n\t\treturn this.show({\n\t\t\ttype: AlertType.WARNING,\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t\tbuttonMode,\n\t\t\tbuttons: buttonConfig,\n\t\t\tsize,\n\t\t});\n\t}\n\n\t/**\n\t * Displays a success alert with green styling.\n\t * Can be called with (title, subtitle, buttonMode, buttons) OR (title, subtitle, buttons).\n\t */\n\tsuccess(\n\t\ttitle: string,\n\t\tsubtitle?: string,\n\t\tmodeOrButtons?: AlertButtonMode | { confirmText?: string; cancelText?: string },\n\t\tbuttons?: { confirmText?: string; cancelText?: string },\n\t\tsize?: \"sm\" | \"md\" | \"lg\"\n\t): Promise<AlertResult> {\n\t\tconst { buttonMode, buttonConfig } = this.resolveArgs(modeOrButtons, buttons);\n\t\treturn this.show({\n\t\t\ttype: AlertType.SUCCESS,\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t\tbuttonMode,\n\t\t\tbuttons: buttonConfig,\n\t\t\tsize,\n\t\t});\n\t}\n\n\t/**\n\t * Displays an error alert with red styling.\n\t * Can be called with (title, subtitle, buttonMode, buttons) OR (title, subtitle, buttons).\n\t */\n\terror(\n\t\ttitle: string,\n\t\tsubtitle?: string,\n\t\tmodeOrButtons?: AlertButtonMode | { confirmText?: string; cancelText?: string },\n\t\tbuttons?: { confirmText?: string; cancelText?: string },\n\t\tsize?: \"sm\" | \"md\" | \"lg\"\n\t): Promise<AlertResult> {\n\t\tconst { buttonMode, buttonConfig } = this.resolveArgs(modeOrButtons, buttons);\n\t\treturn this.show({\n\t\t\ttype: AlertType.ERROR,\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t\tbuttonMode,\n\t\t\tbuttons: buttonConfig,\n\t\t\tsize,\n\t\t});\n\t}\n\n\t/**\n\t * Helper to resolve flexible arguments.\n\t * If 3rd arg is object (not string enum), treat it as buttons config and default mode to OK_ONLY.\n\t * If 3rd arg is string (enum), treat it as mode and 4th as buttons config.\n\t */\n\tprivate resolveArgs(\n\t\tmodeOrButtons?: AlertButtonMode | { confirmText?: string; cancelText?: string },\n\t\tbuttons?: { confirmText?: string; cancelText?: string }\n\t): { buttonMode: AlertButtonMode; buttonConfig?: { confirmText?: string; cancelText?: string } } {\n\t\tif (modeOrButtons && typeof modeOrButtons === \"object\") {\n\t\t\t// USAGE: success(title, subtitle, { confirmText: 'Ok', cancelText: 'Cancel' })\n\t\t\t// Auto-detect mode based on presence of cancelText\n\t\t\tconst hasCancel = !!(modeOrButtons as any).cancelText;\n\t\t\treturn {\n\t\t\t\tbuttonMode: hasCancel ? AlertButtonMode.CONFIRM_CANCEL : AlertButtonMode.OK_ONLY,\n\t\t\t\tbuttonConfig: modeOrButtons,\n\t\t\t};\n\t\t}\n\n\t\t// USAGE: success(title, subtitle, AlertButtonMode.CONFIRM_CANCEL, { ... })\n\t\t// OR default\n\t\treturn {\n\t\t\tbuttonMode: (modeOrButtons as AlertButtonMode) ?? AlertButtonMode.OK_ONLY,\n\t\t\tbuttonConfig: buttons,\n\t\t};\n\t}\n\n\tmessage(message: string, type: AlertType = AlertType.WARNING): Promise<AlertResult> {\n\t\treturn this.show({\n\t\t\ttype,\n\t\t\ttitle: message,\n\t\t\tbuttonMode: AlertButtonMode.OK_ONLY,\n\t\t});\n\t}\n\n\tconfirm(\n\t\ttitle: string,\n\t\tsubtitle?: string,\n\t\tconfirmText: string = \"Confirmar\",\n\t\tcancelText: string = \"Cancelar\",\n\t\ttype: AlertType = AlertType.WARNING,\n\t\tsize?: \"sm\" | \"md\" | \"lg\"\n\t): Promise<AlertResult> {\n\t\treturn this.show({\n\t\t\ttype,\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t\tbuttonMode: AlertButtonMode.CONFIRM_CANCEL,\n\t\t\tbuttons: { confirmText, cancelText },\n\t\t\tsize,\n\t\t});\n\t}\n\n\tshowHtml(title: string, htmlContent: string, type: AlertType = AlertType.WARNING, buttonMode: AlertButtonMode = AlertButtonMode.OK_ONLY): Promise<AlertResult> {\n\t\treturn this.show({\n\t\t\ttype,\n\t\t\ttitle,\n\t\t\thtmlContent,\n\t\t\tbuttonMode,\n\t\t});\n\t}\n\n\tshowWithStyles(config: AlertConfig, styles: AlertStyleConfig): Promise<AlertResult> {\n\t\treturn this.show({\n\t\t\t...config,\n\t\t\tstyles,\n\t\t});\n\t}\n\n\tshow(config: AlertConfig): Promise<AlertResult> {\n\t\treturn new Promise<AlertResult>(resolve => {\n\t\t\tconst mergedConfig = this.mergeWithDefaults(config);\n\t\t\tconst typeConfig = ALERT_TYPE_CONFIG[mergedConfig.type];\n\n\t\t\t// Prepare data object for the view\n\t\t\tconst data = {\n\t\t\t\tconfig: mergedConfig,\n\t\t\t\ttypeConfig: typeConfig,\n\t\t\t\ticonClass: this.getIconClass(mergedConfig, typeConfig),\n\t\t\t\ticonBackgroundColor: this.getIconBackgroundColor(mergedConfig, typeConfig),\n\t\t\t\ticonColor: this.getIconColor(mergedConfig, typeConfig),\n\t\t\t\ttitleColor: this.getTitleColor(mergedConfig, typeConfig),\n\t\t\t\tshowCancelButton: this.showCancelButton(mergedConfig),\n\t\t\t\tconfirmText: this.getConfirmText(mergedConfig),\n\t\t\t\tcancelText: this.getCancelText(mergedConfig),\n\t\t\t\tconfirmButtonStyle: this.getConfirmButtonStyle(mergedConfig),\n\t\t\t\tcancelButtonStyle: this.getCancelButtonStyle(mergedConfig),\n\t\t\t\t// Add manual dismiss handler to data so template can call it if needed,\n\t\t\t\t// though explicit close button in template can just use reject or logic.\n\t\t\t\t// For custom headers/X buttons usually we initiate close.\n\t\t\t};\n\n\t\t\tconst confirmation: Confirmation = {\n\t\t\t\tkey: this.DIALOG_KEY,\n\t\t\t\tmessage: mergedConfig.subtitle,\n\t\t\t\theader: mergedConfig.title,\n\t\t\t\ticon: data.iconClass,\n\t\t\t\tdismissableMask: true,\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\taccept: () => {\n\t\t\t\t\tresolve({\n\t\t\t\t\t\tisConfirmed: true,\n\t\t\t\t\t\tisCancelled: false,\n\t\t\t\t\t\tisDismissed: false,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\treject: (type?: number) => {\n\t\t\t\t\tresolve({\n\t\t\t\t\t\tisConfirmed: false,\n\t\t\t\t\t\tisCancelled: true,\n\t\t\t\t\t\tisDismissed: false,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t};\n\n\t\t\t// Cast to any to allow 'data' property if it doesn't exist on type\n\t\t\t(confirmation as any).data = data;\n\n\t\t\tthis.confirmationService.confirm(confirmation);\n\t\t});\n\t}\n\n\t// Private Helper Methods (Presentation Logic)\n\n\tprivate mergeWithDefaults(config: AlertConfig): AlertConfig {\n\t\treturn {\n\t\t\t...ALERT_DEFAULTS,\n\t\t\t...config,\n\t\t\tbuttons: {\n\t\t\t\t...ALERT_DEFAULTS.buttons,\n\t\t\t\t...config.buttons,\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate getIconClass(config: AlertConfig | null, typeConfig: AlertTypeConfig | null): string {\n\t\tif (config?.customIcon) {\n\t\t\treturn config.customIcon;\n\t\t}\n\t\tif (config?.type && this.iconOverrides?.[config.type]) {\n\t\t\treturn this.iconOverrides[config.type]!;\n\t\t}\n\t\treturn typeConfig?.icon ?? \"pi pi-info-circle\";\n\t}\n\n\tprivate getIconBackgroundColor(config: AlertConfig | null, typeConfig: AlertTypeConfig | null): string {\n\t\tif (config?.styles?.iconBackgroundColor) {\n\t\t\treturn config.styles.iconBackgroundColor;\n\t\t}\n\t\treturn typeConfig?.iconBackgroundColor ?? \"#e3f2fd\";\n\t}\n\n\tprivate getIconColor(config: AlertConfig | null, typeConfig: AlertTypeConfig | null): string {\n\t\tif (config?.styles?.iconColor) {\n\t\t\treturn config.styles.iconColor;\n\t\t}\n\t\treturn typeConfig?.iconColor ?? \"#1976d2\";\n\t}\n\n\tprivate getTitleColor(config: AlertConfig | null, typeConfig: AlertTypeConfig | null): string {\n\t\tif (config?.styles?.titleColor) {\n\t\t\treturn config.styles.titleColor;\n\t\t}\n\t\treturn typeConfig?.titleColor ?? \"#333\";\n\t}\n\n\tprivate showCancelButton(config: AlertConfig | null): boolean {\n\t\treturn config?.buttonMode === AlertButtonMode.CONFIRM_CANCEL;\n\t}\n\n\tprivate getConfirmText(config: AlertConfig | null): string {\n\t\treturn config?.buttons?.confirmText ?? \"Ok\";\n\t}\n\n\tprivate getCancelText(config: AlertConfig | null): string {\n\t\treturn config?.buttons?.cancelText ?? \"Cancelar\";\n\t}\n\n\tprivate getConfirmButtonStyle(config: AlertConfig | null): Record<string, string> {\n\t\tconst styles = config?.styles;\n\t\tconst baseStyle: Record<string, string> = {\n\t\t\tminWidth: \"120px\",\n\t\t};\n\t\tif (styles?.confirmButtonColor) {\n\t\t\tbaseStyle[\"backgroundColor\"] = styles.confirmButtonColor;\n\t\t\tbaseStyle[\"borderColor\"] = styles.confirmButtonColor;\n\t\t}\n\t\tif (styles?.confirmButtonTextColor) {\n\t\t\tbaseStyle[\"color\"] = styles.confirmButtonTextColor;\n\t\t}\n\t\treturn baseStyle;\n\t}\n\n\tprivate getCancelButtonStyle(config: AlertConfig | null): Record<string, string> {\n\t\tconst styles = config?.styles;\n\t\tconst baseStyle: Record<string, string> = {\n\t\t\tminWidth: \"120px\",\n\t\t};\n\t\tif (styles?.cancelButtonColor) {\n\t\t\tbaseStyle[\"backgroundColor\"] = styles.cancelButtonColor;\n\t\t\tbaseStyle[\"borderColor\"] = styles.cancelButtonColor;\n\t\t}\n\t\tif (styles?.cancelButtonTextColor) {\n\t\t\tbaseStyle[\"color\"] = styles.cancelButtonTextColor;\n\t\t}\n\t\treturn baseStyle;\n\t}\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { inject, Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { LanguageSimpleResponse } from \"../dto/languageResponses\";\nimport { ConfigService } from \"./config.service\";\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class LanguageService {\n\tprivate readonly _http = inject(HttpClient);\n\tprivate readonly _configService = inject(ConfigService);\n\tGetAllLanguage(): Observable<LanguageSimpleResponse[]> {\n\t\treturn this._http.get<LanguageSimpleResponse[]>(`${this._configService.environment?.configurationPath}/Language`);\n\t}\n}\n","export function darkenColor(input: string, amount = 0.2): string {\n const clamp = (v: number) => Math.max(0, Math.min(255, v));\n const toHex = (v: number) => v.toString(16).padStart(2, '0');\n\n if (input.startsWith('#')) {\n const r = parseInt(input.slice(1, 3), 16);\n const g = parseInt(input.slice(3, 5), 16);\n const b = parseInt(input.slice(5, 7), 16);\n return `#${toHex(clamp(Math.round(r * (1 - amount))))}${toHex(clamp(Math.round(g * (1 - amount))))}${toHex(clamp(Math.round(b * (1 - amount))))}`;\n }\n const m = input.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*([\\d.]+))?\\)/i);\n if (m) {\n const r = clamp(Math.round(+m[1] * (1 - amount)));\n const g = clamp(Math.round(+m[2] * (1 - amount)));\n const b = clamp(Math.round(+m[3] * (1 - amount)));\n const a = m[4] !== undefined ? `, ${m[4]}` : '';\n return `rgba(${r}, ${g}, ${b}${a})`;\n }\n return input;\n}","import { inject, Injectable } from \"@angular/core\";\nimport {\n\tBarSeriesOption,\n\tDefaultLabelFormatterCallbackParams,\n\tEChartsOption,\n\tGridComponentOption,\n\tLabelFormatterCallback,\n\tLegendComponentOption,\n\tLineSeriesOption,\n\tPieSeriesOption,\n\tTooltipComponentFormatterCallback,\n\tTooltipComponentFormatterCallbackParams,\n\tYAXisComponentOption,\n} from \"echarts\";\nimport { Color, getColor } from \"../constants/color.constants\";\nimport { darkenColor } from \"../functions/echart.util\";\nimport { FormatAmountPipe } from \"../pipes/amount.pipe\";\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class EchartService {\n\tprivate readonly _formatAmountPipe = inject(FormatAmountPipe);\n\n\t/// Chart Generals\n\n\tprivate getDefultAxisConfiguration(type: string, data?: any[], showAxis: boolean = true, showSplitLine: boolean = false): any {\n\t\treturn {\n\t\t\tshow: showAxis,\n\t\t\ttype: type,\n\t\t\tdata: data,\n\t\t\taxisTick: {\n\t\t\t\tshow: false,\n\t\t\t},\n\t\t\taxisLine: {\n\t\t\t\tshow: false,\n\t\t\t\tlineStyle: { color: getColor(\"gray\"), type: \"dashed\" },\n\t\t\t},\n\t\t\tsplitLine: {\n\t\t\t\tshow: showSplitLine,\n\t\t\t\t// lineStyle: {\n\t\t\t\t// \tcolor: Color.gray,\n\t\t\t\t// \ttype: \"dashed\",\n\t\t\t\t// \twidth: 1,\n\t\t\t\t// },\n\t\t\t\tlineStyle: { width: 1, color: Color.gray, type: [5, 5], cap: \"round\" },\n\t\t\t},\n\t\t\taxisLabel: {\n\t\t\t\tfontFamily: \"Lato, sans-serif\",\n\t\t\t\tshow: true,\n\t\t\t\t// show: showAxis,\n\t\t\t\tcolor: Color.gray3,\n\t\t\t\tfontSize: 14,\n\t\t\t\tpadding: 10,\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate getCategoryAxisConfiguration(data: any[]) {\n\t\treturn this.getDefultAxisConfiguration(\"category\", data, true);\n\t}\n\n\tprivate getValueAxisConfiguration(showAxis: boolean = true, format: boolean = true, showAxisLines: boolean = true) {\n\t\tlet axisConfiguration = this.getDefultAxisConfiguration(\"value\", undefined, showAxis, showAxisLines);\n\t\tif (format) {\n\t\t\taxisConfiguration.axisLabel.formatter = (value: number) => {\n\t\t\t\tconst formatted = this._formatAmountPipe.transform(value, true, 0, true);\n\t\t\t\treturn formatted === \"-\" ? 0 : formatted;\n\t\t\t};\n\t\t}\n\t\treturn axisConfiguration;\n\t}\n\n\tprivate getGridConfiguration(): GridComponentOption {\n\t\treturn {\n\t\t\t// left: \"0%\",\n\t\t\t// right: \"0%\",\n\t\t\t// //bottom: '0%',\n\t\t\t// containLabel: true,\n\t\t\tleft: 0,\n\t\t\tright: 0,\n\t\t\ttop: 20,\n\t\t\tbottom: 40,\n\t\t\tcontainLabel: true,\n\t\t};\n\t}\n\n\tprivate getLegendConfiguration(): LegendComponentOption {\n\t\treturn {\n\t\t\t// orient: \"horizontal\", // 'horizontal | vertical'\n\t\t\t// icon: \"circle\",\n\t\t\t// bottom: 5,\n\t\t\t// align: \"auto\",\n\t\t\t// itemGap: 20,\n\t\t\t// textStyle: { color: Color.blue, fontSize: 14 },\n\t\t\tdata: [{ name: \"Expenses\", icon: \"circle\" }],\n\t\t\tbottom: 0,\n\t\t\ttextStyle: {\n\t\t\t\tcolor: \"#4E546F\",\n\t\t\t\tfontFamily: \"Lato, sans-serif\",\n\t\t\t\tfontSize: 12,\n\t\t\t\tlineHeight: 12,\n\t\t\t},\n\t\t\titemWidth: 10,\n\t\t\titemHeight: 10,\n\t\t\titemGap: 25,\n\t\t\talign: \"left\",\n\t\t};\n\t}\n\n\t/**\n\t *\n\t * @param color - Color of the tooltip\n\t * @param title - Title of the tooltip\n\t * @param body - Body of the tooltip\n\t * @returns - Tooltip HTML string\n\t */\n\tgetTooltipFormatter(color: string, title: string, body: string): string {\n\t\tconst titleHtml =\n\t\t\ttitle.length > 0\n\t\t\t\t? `\n\t\t\t<b style=\" font-size: 13px;\">${title} </b><br>\n\t\t\t<hr style=\"border: 1px solid ${color}; margin: 4px 0;\">`\n\t\t\t\t: \"\";\n\t\treturn `\n\t \t<div style=\"font-size: 12px; boder-color: ${color}; color: ${color}; border-radius: 6px; min-width: 120px; text-align: center;\">\n\t\t\t${titleHtml}\n\t\t\t${body}\n\t\t</div>\n\t `;\n\t}\n\n\t/// Charts Configuration\n\n\t/// BAR CHARTS\n\n\t/**\n\t *\n\t * @param categories - Array of categories for the x-axis\n\t * @param series - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration for the bars\n\t * @param tooltipConfig - Optional tooltip configuration for the bars\n\t * @param showLegend - Optional flag to show the legend\n\t * @returns - EChartsOption - Configuration object for the bar chart\n\t */\n\tgetBarChartOptions(\n\t\tcategories: string[],\n\t\tseries: { name: string; value: any; color: string }[],\n\t\tlabelConfig?: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>,\n\t\tshowLegend: boolean = false\n\t): EChartsOption {\n\t\treturn {\n\t\t\ttextStyle: { fontFamily: \"Lato, sans-serif\" },\n\t\t\txAxis: this.getCategoryAxisConfiguration(categories),\n\t\t\tyAxis: this.getValueAxisConfiguration(),\n\t\t\tseries: [\n\t\t\t\t...series.map(\n\t\t\t\t\t(item): BarSeriesOption => ({\n\t\t\t\t\t\ttype: \"bar\",\n\t\t\t\t\t\tname: item.name,\n\t\t\t\t\t\titemStyle: { color: item.color, borderRadius: 8 },\n\t\t\t\t\t\tdata: item.value,\n\t\t\t\t\t\tbarWidth: \"33%\",\n\t\t\t\t\t\tbarGap: \"0%\",\n\t\t\t\t\t\tlabel: {\n\t\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\t\tposition: \"top\",\n\t\t\t\t\t\t\tcolor: Color.blue,\n\t\t\t\t\t\t\tfontSize: 12,\n\t\t\t\t\t\t\tformatter: labelConfig,\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t),\n\t\t\t],\n\t\t\ttooltip: {\n\t\t\t\ttrigger: \"item\",\n\t\t\t\tbackgroundColor: \"#FFFFFF\",\n\t\t\t\tborderWidth: 2,\n\t\t\t\ttextStyle: { fontSize: 12 },\n\t\t\t\tformatter: tooltipConfig,\n\t\t\t\tappendTo: \"body\",\n\t\t\t},\n\t\t\tgrid: this.getGridConfiguration(),\n\t\t\tlegend: showLegend ? this.getLegendConfiguration() : undefined,\n\t\t};\n\t}\n\n\t/**\n\t *\n\t * @param categories - Array of categories for the x-axis\n\t * @param series - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration for the bars\n\t * @param tooltipConfig - Optional tooltip configuration for the bars\n\t * @param showLegend - Optional flag to show the legend\n\t * @returns - EChartsOption - Configuration object for the bar chart\n\t */\n\tgetBarChartStackOptions(\n\t\tcategories: string[],\n\t\tseries: { name: string; value: any; color: string }[],\n\t\tlabelConfig?: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>,\n\t\tshowLegend: boolean = false\n\t): EChartsOption {\n\t\tlet barBase = this.getBarChartOptions(categories, series, labelConfig, tooltipConfig, showLegend);\n\t\t(barBase.series as BarSeriesOption[]).forEach((serie, index) => {\n\t\t\t// serie.barWidth = \"50%\";\n\t\t\t// serie.barGap = \"0%\";\n\t\t\tserie.barCategoryGap = \"10%\";\n\t\t\tserie.stack = \"total\";\n\t\t\tif (index < series.length - 1) {\n\t\t\t\tserie.label = undefined;\n\t\t\t}\n\t\t});\n\t\treturn barBase;\n\t}\n\n\t/**\n\t *\n\t * @param categories - Array of categories for the y-axis\n\t * @param series - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration for the bars\n\t * @param tooltipConfig - Optional tooltip configuration for the bars\n\t * @param showLegend - Optional flag to show the legend\n\t * @returns - EChartsOption - Configuration object for the bar chart\n\t */\n\tgetBarChartHorizontalOptions(\n\t\tcategories: string[],\n\t\tseries: { name: string; value: any; color: string }[],\n\t\tlabelConfig?: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>,\n\t\tshowLegend: boolean = false,\n\t\tenableSelectStyle: boolean = false // 👈 nuevo\n\t): EChartsOption {\n\t\tlet barBase = this.getBarChartOptions(categories, series, labelConfig, tooltipConfig, showLegend);\n\t\tbarBase.xAxis = this.getValueAxisConfiguration(false, true, false);\n\t\tbarBase.yAxis = this.getCategoryAxisConfiguration(categories);\n\n\t\t(barBase.series as BarSeriesOption[]).forEach((serie, idx) => {\n\t\t\tif (serie.label) {\n\t\t\t\tserie.label.position = \"right\";\n\t\t\t}\n\n\t\t\tconst baseColor = (serie.itemStyle as any)?.color ?? (series[idx] && series[idx].color) ?? \"#FF8A00\";\n\n\t\t\tserie.itemStyle = {\n\t\t\t\t...(serie.itemStyle || {}),\n\t\t\t\tcolor: baseColor,\n\t\t\t\tborderWidth: 0,\n\t\t\t};\n\n\t\t\tif (enableSelectStyle) {\n\t\t\t\t(serie as any).selectedMode = \"single\";\n\n\t\t\t\tconst selectedColor = darkenColor(String(baseColor), 0.38);\n\n\t\t\t\tserie.select = {\n\t\t\t\t\titemStyle: {\n\t\t\t\t\t\tcolor: selectedColor,\n\t\t\t\t\t\tborderWidth: 0,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\n\t\tif (barBase.grid) {\n\t\t\t(barBase.grid as GridComponentOption).left = \"10%\";\n\t\t\t(barBase.grid as GridComponentOption).right = \"10%\";\n\t\t\t(barBase.grid as GridComponentOption).bottom = \"10%\";\n\t\t\t(barBase.grid as GridComponentOption).containLabel = true;\n\t\t}\n\t\treturn barBase;\n\t}\n\n\t/**\n\t *\n\t * @param categories - Array of categories for the y-axis\n\t * @param series - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration for the bars\n\t * @param tooltipConfig - Optional tooltip configuration for the bars\n\t * @param showLegend - Optional flag to show the legend\n\t * @returns - EChartsOption - Configuration object for the bar chart\n\t */\n\tgetBarChartHorizontalStackOptions(\n\t\tcategories: string[],\n\t\tseries: { name: string; value: any; color: string }[],\n\t\tlabelConfig?: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>,\n\t\tshowLegend: boolean = false\n\t): EChartsOption {\n\t\tlet barBase = this.getBarChartHorizontalOptions(categories, series, labelConfig, tooltipConfig, showLegend);\n\t\t(barBase.series as BarSeriesOption[]).forEach((serie, index) => {\n\t\t\t// serie.barWidth = \"50%\";\n\t\t\t// serie.barGap = \"0%\";\n\t\t\tserie.barCategoryGap = \"10%\";\n\t\t\tserie.stack = \"total\";\n\t\t\tif (serie.label) {\n\t\t\t\tserie.label.position = \"right\";\n\t\t\t}\n\t\t\tif (index < series.length - 1) {\n\t\t\t\tserie.label = undefined;\n\t\t\t}\n\t\t});\n\t\tif (barBase.grid) {\n\t\t\t(barBase.grid as GridComponentOption).left = \"10%\";\n\t\t\t(barBase.grid as GridComponentOption).right = \"10%\";\n\t\t\t(barBase.grid as GridComponentOption).bottom = \"10%\";\n\t\t\t(barBase.grid as GridComponentOption).containLabel = true;\n\t\t}\n\t\treturn barBase;\n\t}\n\n\t/**\n\t *\n\t * @param categories - Array of categories for the y-axis\n\t * @param series - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration for the bars\n\t * @param tooltipConfig - Optional tooltip configuration for the bars\n\t * @param showLegend - Optional flag to show the legend\n\t * @returns - EChartsOption - Configuration object for the bar chart\n\t */\n\tgetBarChartTopOptions(\n\t\tcategories: string[],\n\t\tseries: { name: string; value: any; color: string }[],\n\t\tcategoryWidth: number = 240,\n\t\tlabelConfig?: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>,\n\t\tshowLegend: boolean = false,\n\t\tcategoryFormatter?: (value: string, index: number) => string\n\t): EChartsOption {\n\t\tconst barBase = this.getBarChartHorizontalOptions(categories, series, labelConfig, tooltipConfig, showLegend, true);\n\n\t\tif (barBase.yAxis) {\n\t\t\tconst y = barBase.yAxis as YAXisComponentOption;\n\t\t\tconst gr = barBase.grid as GridComponentOption;\n\n\t\t\tconst defaultCategoryFormatter = (value: string | number, index: number) => {\n\t\t\t\tconst sangriaBase = \"\\u2008\\u2008\\u2008\\u2008\\u2008\\u2008\\u2009\";\n\t\t\t\tconst lineLength = 35;\n\n\t\t\t\tconst text = String(value ?? \"\");\n\t\t\t\tconst prefix = `${index + 1} - `;\n\n\t\t\t\tconst digitCount = String(index + 1).length;\n\n\t\t\t\tlet extraRepeat = 0;\n\t\t\t\tif (digitCount === 2) extraRepeat = 2;\n\t\t\t\telse if (digitCount === 3) extraRepeat = 5;\n\n\t\t\t\tconst sangria = sangriaBase + \"\\u2008\".repeat(extraRepeat);\n\n\t\t\t\tconst words = text.split(\" \");\n\t\t\t\tconst lines: string[] = [];\n\t\t\t\tlet current = \"\";\n\n\t\t\t\tfor (const w of words) {\n\t\t\t\t\tconst test = current ? `${current} ${w}` : w;\n\t\t\t\t\tif (test.length <= lineLength) current = test;\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (current) lines.push(current);\n\t\t\t\t\t\tcurrent = w;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (current) lines.push(current);\n\n\t\t\t\treturn prefix + lines.map((ln, i) => (i === 0 ? ln : `${sangria}${ln}`)).join(\"\\n\");\n\t\t\t};\n\n\t\t\t// y.inverse = true;\n\t\t\t// y.axisLabel = {\n\t\t\t// \t...y.axisLabel,\n\t\t\t// \tcolor: Color.blue,\n\t\t\t// \tfontSize: 12,\n\t\t\t// \twidth: categoryWidth,\n\t\t\t// \toverflow: \"break\",\n\t\t\t// \talign: \"left\",\n\t\t\t// \tverticalAlign: \"middle\",\n\t\t\t// \tmargin: categoryWidth + 30,\n\t\t\t// \tlineHeight: 16,\n\t\t\t// \tformatter: categoryFormatter || defaultCategoryFormatter,\n\t\t\t// };\n\n\t\t\tgr.top = \"0%\";\n\t\t\tgr.left = -1 * categoryWidth + 60;\n\t\t\tgr.right = 20;\n\t\t\tgr.bottom = \"0%\";\n\t\t\tgr.containLabel = true;\n\t\t}\n\n\t\t(barBase.series as BarSeriesOption[]).forEach(serie => {\n\t\t\tserie.label = {\n\t\t\t\t...(serie.label || {}),\n\t\t\t\tformatter: labelConfig,\n\t\t\t};\n\t\t});\n\n\t\treturn barBase;\n\t}\n\n\t/// LINE CHARTS\n\n\t/**\n\t *\n\t * @param categories - Array of categories for the x-axis\n\t * @param series - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration for the lines\n\t * @param tooltipConfig - Optional tooltip configuration for the lines\n\t * @param showLegend - Optional flag to show the legend\n\t * @returns - EChartsOption - Configuration object for the line chart\n\t */\n\tgetLineChartOptions(\n\t\tcategories: string[],\n\t\tseries: { name: string; value: any; color: string }[],\n\t\tlabelConfig: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>,\n\t\tshowLegend: boolean = false\n\t): EChartsOption {\n\t\treturn {\n\t\t\txAxis: this.getCategoryAxisConfiguration(categories),\n\t\t\tyAxis: this.getValueAxisConfiguration(true, true, true),\n\t\t\tseries: [\n\t\t\t\t...series.map(\n\t\t\t\t\t(item, seriesIndex): LineSeriesOption => ({\n\t\t\t\t\t\ttype: \"line\",\n\t\t\t\t\t\tname: item.name,\n\t\t\t\t\t\tdata: item.value,\n\t\t\t\t\t\titemStyle: { color: item.color },\n\t\t\t\t\t\tsymbol: \"circle\",\n\t\t\t\t\t\tsymbolSize: 14,\n\t\t\t\t\t\temphasis: {\n\t\t\t\t\t\t\titemStyle: {\n\t\t\t\t\t\t\t\tcolor: item.color,\n\t\t\t\t\t\t\t\tborderColor: item.color + \"40\", // 40 ( hexadecimal ) = .25 ( decimal )\n\t\t\t\t\t\t\t\tborderWidth: 16,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t),\n\t\t\t],\n\t\t\ttooltip: {\n\t\t\t\ttrigger: \"item\",\n\t\t\t\tbackgroundColor: \"#FFFFFF\",\n\t\t\t\tborderWidth: 2,\n\t\t\t\ttextStyle: { fontSize: 12 },\n\t\t\t\tformatter: tooltipConfig,\n\t\t\t\tappendTo: \"body\t\",\n\t\t\t},\n\t\t\tdataZoom: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"inside\", // inside | slider\n\t\t\t\t\tshow: true,\n\t\t\t\t\theight: 12,\n\t\t\t\t\tbottom: 10,\n\t\t\t\t\tbackgroundColor: \"#ddd\",\n\t\t\t\t\tborderColor: \"transparent\",\n\t\t\t\t\tfillerColor: \"rgba(150, 150, 150, 0.5)\",\n\t\t\t\t\thandleSize: \"80%\",\n\t\t\t\t\thandleStyle: {\n\t\t\t\t\t\tcolor: \"#A0A0A0\",\n\t\t\t\t\t\tborderColor: \"transparent\",\n\t\t\t\t\t\tshadowBlur: 2,\n\t\t\t\t\t\tshadowColor: \"rgba(0, 0, 0, 0.2)\",\n\t\t\t\t\t},\n\t\t\t\t\tshowDataShadow: false,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"inside\",\n\t\t\t\t\tshowDataShadow: false,\n\t\t\t\t},\n\t\t\t],\n\t\t\tlegend: showLegend ? this.getLegendConfiguration() : undefined,\n\t\t};\n\t}\n\n\t/// PIE CHARTS\n\n\t/**\n\t *\n\t * @param data - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration\n\t * @param tooltipConfig - Optional tooltip configuration\n\t * @returns - EChartsOption - Configuration object for the pie\n\t */\n\tgetDoughnutPieOptions(\n\t\tdata: { name: string; value: any; color: string }[],\n\t\tlabelConfig: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>\n\t): EChartsOption {\n\t\treturn {\n\t\t\tseries: <PieSeriesOption[]>[\n\t\t\t\t{\n\t\t\t\t\tdata: data.map(item => ({\n\t\t\t\t\t\t...item,\n\t\t\t\t\t\titemStyle: { color: item.color },\n\t\t\t\t\t})),\n\t\t\t\t\tname: \"Pie Chart\",\n\t\t\t\t\ttype: \"pie\",\n\t\t\t\t\tradius: [\"40%\", \"70%\"],\n\t\t\t\t\tavoidLabelOverlap: false,\n\t\t\t\t\temphasis: {\n\t\t\t\t\t\tscale: true,\n\t\t\t\t\t},\n\t\t\t\t\tlabelLine: {\n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\tlength: 15,\n\t\t\t\t\t\tlength2: 20,\n\t\t\t\t\t},\n\t\t\t\t\tlabel: {\n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\tposition: \"outside\",\n\t\t\t\t\t\tcolor: Color.blue,\n\t\t\t\t\t\tfontSize: 14,\n\t\t\t\t\t\tformatter: labelConfig,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t\ttooltip: {\n\t\t\t\ttrigger: \"item\",\n\t\t\t\tformatter: tooltipConfig,\n\t\t\t\tappendTo: \"body\",\n\t\t\t\t// extraCssText: this.chartService.getTooltipCssText(),\n\t\t\t},\n\t\t\tlegend: <LegendComponentOption>{\n\t\t\t\torient: \"horizontal\", // 'horizontal | vertical'\n\t\t\t\ticon: \"circle\",\n\t\t\t\tbottom: 5,\n\t\t\t\talign: \"auto\",\n\t\t\t\titemGap: 20,\n\t\t\t\ttextStyle: { color: Color.blue, fontSize: 14 },\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t *\n\t * @param letter - text to show in the center of the pie\n\t * @param value - rate\tvalue\n\t * @param textSize - size of the letter\n\t * @param color - color of the letter and pie\n\t * @param\ttotal - total value for the pie (default is 100)\n\t * @returns\n\t */\n\tgetRateDoughnutPieOptions(letter: string, value: number, textSize: number, color: string, total: number = 100): EChartsOption {\n\t\tconst data = [\n\t\t\t{ name: letter, value: value, itemStyle: { color: color } },\n\t\t\t{\n\t\t\t\tname: \"placeholder\",\n\t\t\t\tvalue: total - value,\n\t\t\t\titemStyle: { color: Color.gray5 },\n\t\t\t},\n\t\t];\n\t\treturn {\n\t\t\ttooltip: {\n\t\t\t\ttrigger: \"none\",\n\t\t\t\tappendTo: \"body\",\n\t\t\t},\n\t\t\tseries: <PieSeriesOption[]>[\n\t\t\t\t{\n\t\t\t\t\tname: \"RateDoughnutPie\",\n\t\t\t\t\ttype: \"pie\",\n\t\t\t\t\ttooltip: {\n\t\t\t\t\t\ttrigger: \"none\",\n\t\t\t\t\t},\n\t\t\t\t\tradius: [\"80%\", \"60%\"],\n\t\t\t\t\tdata: data,\n\t\t\t\t\tstartAngle: 0,\n\t\t\t\t\tselectedMode: false,\n\t\t\t\t\tsilent: true,\n\t\t\t\t\tlabel: {\n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\tformatter: letter,\n\t\t\t\t\t\tcolor: color,\n\t\t\t\t\t\tposition: \"center\",\n\t\t\t\t\t\tfontWeight: \"bold\",\n\t\t\t\t\t\tfontSize: textSize,\n\t\t\t\t\t\tfontFamily: \"Arial\",\n\t\t\t\t\t\tlineHeight: textSize * -0.22,\n\t\t\t\t\t\talign: \"center\",\n\t\t\t\t\t\tverticalAlign: \"middle\",\n\t\t\t\t\t\tbackgroundColor: \"transparent\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t}\n\n\t/**\n\t * Semi doughnut gauge (half circle) with:\n\t * - Progress arc\n\t * - End dot\n\t * - Center letter\n\t *\n\t * @param letter - Text to show in the center\n\t * @param value - Current value\n\t * @param textSize - Center letter font size\n\t * @param color - Progress and end dot color\n\t * @param total - Max value (default 100)\n\t */\n\tgetRateSemiDoughnutOptions(letter: string, value: number, textSize: number, color: string, total: number = 100, bottomText?: string): EChartsOption {\n\t\tconst safeTotal = total > 0 ? total : 100;\n\t\tconst safeValue = Math.max(0, Math.min(value, safeTotal));\n\n\t\tconst START_ANGLE = 210;\n\t\tconst END_ANGLE = -30;\n\n\t\tconst THICKNESS = 11;\n\t\tconst BACKGROUND_COLOR = \"#D9D9E3\";\n\t\tconst TEXT_COLOR = \"#4F5470\";\n\n\t\tconst MIN_LABEL = \"0\";\n\t\tconst MAX_LABEL = String(safeTotal);\n\t\tconst MIN_MAX_FONT_SIZE = 15;\n\n\t\tconst RADIUS = \"96%\";\n\t\tconst CENTER: [string, string] = [\"50%\", \"50%\"];\n\n\t\tconst dotSizePx = THICKNESS + 5;\n\t\tconst POINTER_LENGTH = \"98%\";\n\n\t\tconst option: EChartsOption = {\n\t\t\ttooltip: { trigger: \"none\", appendTo: \"body\" },\n\t\t\tseries: [\n\t\t\t\t/* ================= GAUGE 1: PROGRESS ================= */\n\t\t\t\t{\n\t\t\t\t\ttype: \"gauge\",\n\t\t\t\t\tradius: RADIUS,\n\t\t\t\t\tcenter: CENTER,\n\t\t\t\t\tstartAngle: START_ANGLE,\n\t\t\t\t\tendAngle: END_ANGLE,\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: safeTotal,\n\n\t\t\t\t\tpointer: { show: false },\n\n\t\t\t\t\tprogress: {\n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\troundCap: true,\n\t\t\t\t\t\twidth: THICKNESS,\n\t\t\t\t\t\titemStyle: { color },\n\t\t\t\t\t},\n\n\t\t\t\t\taxisLine: {\n\t\t\t\t\t\troundCap: true,\n\t\t\t\t\t\tlineStyle: {\n\t\t\t\t\t\t\twidth: THICKNESS,\n\t\t\t\t\t\t\tcolor: [[1, BACKGROUND_COLOR]],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\n\t\t\t\t\taxisTick: { show: false },\n\t\t\t\t\tsplitLine: { show: false },\n\t\t\t\t\taxisLabel: { show: false },\n\n\t\t\t\t\tdetail: {\n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\toffsetCenter: [0, \"8%\"],\n\t\t\t\t\t\tformatter: () => (bottomText ? `{letter|${letter}}\\n{bottom|${bottomText}}` : `{letter|${letter}}`),\n\t\t\t\t\t\trich: {\n\t\t\t\t\t\t\tletter: {\n\t\t\t\t\t\t\t\tfontSize: textSize,\n\t\t\t\t\t\t\t\tfontWeight: 700,\n\t\t\t\t\t\t\t\tcolor: TEXT_COLOR,\n\t\t\t\t\t\t\t\tfontFamily: \"Lato, sans-serif\",\n\t\t\t\t\t\t\t\tlineHeight: textSize + 2,\n\t\t\t\t\t\t\t\talign: \"center\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbottom: {\n\t\t\t\t\t\t\t\tfontSize: 16,\n\t\t\t\t\t\t\t\tfontWeight: 500,\n\t\t\t\t\t\t\t\tcolor: TEXT_COLOR,\n\t\t\t\t\t\t\t\tfontFamily: \"Lato, sans-serif\",\n\t\t\t\t\t\t\t\tlineHeight: 22,\n\t\t\t\t\t\t\t\talign: \"center\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\n\t\t\t\t\tdata: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: safeValue,\n\t\t\t\t\t\t\tname: \"0\",\n\t\t\t\t\t\t\ttitle: {\n\t\t\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\t\t\tformatter: () => MIN_LABEL,\n\t\t\t\t\t\t\t\toffsetCenter: [\"-80%\", \"66%\"],\n\t\t\t\t\t\t\t\tfontSize: MIN_MAX_FONT_SIZE,\n\t\t\t\t\t\t\t\tcolor: TEXT_COLOR,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: safeValue,\n\t\t\t\t\t\t\tname: \"100\",\n\t\t\t\t\t\t\ttitle: {\n\t\t\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\t\t\tformatter: () => MAX_LABEL,\n\t\t\t\t\t\t\t\toffsetCenter: [\"80%\", \"66%\"],\n\t\t\t\t\t\t\t\tfontSize: MIN_MAX_FONT_SIZE,\n\t\t\t\t\t\t\t\tcolor: TEXT_COLOR,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t} as any,\n\n\t\t\t\t/* ================= GAUGE 2: END DOT ================= */\n\t\t\t\t{\n\t\t\t\t\ttype: \"gauge\",\n\t\t\t\t\tradius: RADIUS,\n\t\t\t\t\tcenter: CENTER,\n\t\t\t\t\tstartAngle: START_ANGLE,\n\t\t\t\t\tendAngle: END_ANGLE,\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: safeTotal,\n\n\t\t\t\t\taxisLine: { show: false },\n\t\t\t\t\tprogress: { show: false },\n\t\t\t\t\tsplitLine: { show: false },\n\t\t\t\t\taxisTick: { show: false },\n\t\t\t\t\taxisLabel: { show: false },\n\t\t\t\t\tdetail: { show: false },\n\n\t\t\t\t\tpointer: {\n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\ticon: \"circle\",\n\t\t\t\t\t\tlength: POINTER_LENGTH,\n\t\t\t\t\t\twidth: dotSizePx,\n\t\t\t\t\t\titemStyle: {\n\t\t\t\t\t\t\tcolor,\n\t\t\t\t\t\t\tborderWidth: 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\n\t\t\t\t\tdata: [{ value: safeValue }],\n\t\t\t\t} as any,\n\t\t\t],\n\t\t};\n\n\t\treturn option;\n\t}\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { inject, Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { ConfigService } from \"./config.service\";\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class AuthenticationService {\n\tprivate readonly _http = inject(HttpClient);\n\tprivate readonly _configService = inject(ConfigService);\n\tGetPrivateValue(): Observable<string> {\n\t\treturn this._http.get<string>(`${this._configService.environment?.authenticationPath}/Authenticate/GetPrivateValue`);\n\t}\n}\n","import JSEncrypt from \"jsencrypt\";\nexport function decryptData(encryptedData: string, privateKey: string): string | null {\n\tconst decryptor = new JSEncrypt();\n\tdecryptor.setPrivateKey(privateKey);\n\tconst decryptedText = decryptor.decrypt(encryptedData);\n\n\tif (!decryptedText) {\n\t\tconsole.error(\"Error al descifrar los datos con RSA\");\n\t\treturn null;\n\t}\n\n\treturn decryptedText;\n}\n","import { inject, Injectable, signal } from \"@angular/core\";\nimport { getCookie } from \"typescript-cookie\";\nimport { AuthenticationService } from \"./authentication.service\";\nimport { decryptData } from \"../functions/decryptRSA\";\n@Injectable({ providedIn: \"root\" })\nexport class ProfileService {\n\tprivate readonly AuthenticationService = inject(AuthenticationService);\n\tProfile?: any = null;\n\tPrivateKey: string = \"\";\n\tProfileReady = signal<boolean>(false);\n\tInitialize(): void {\n\t\tthis.AuthenticationService.GetPrivateValue().subscribe(response => {\n\t\t\tthis.PrivateKey = response;\n\t\t\tthis.SetProfile();\n\t\t});\n\t}\n\tSetProfile() {\n\t\tconst profileCookie = getCookie(\"profile\");\n\t\tif (profileCookie) {\n\t\t\tconst decrypted = decryptData(profileCookie, this.PrivateKey);\n\t\t\tthis.Profile = decrypted ? JSON.parse(decrypted) : null;\n\t\t} else this.Profile = null;\n\t\tthis.ProfileReady.set(true);\n\t}\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { inject, Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { ElementResponse } from \"../dto/elementResponse\";\nimport { ConfigService } from \"./config.service\";\n\n@Injectable({ providedIn: \"root\" })\nexport class PageElementService {\n\tprivate readonly _http = inject(HttpClient);\n\tprivate readonly _configService = inject(ConfigService);\n\tGetElements(pageRoot: string): Observable<ElementResponse[]> {\n\t\treturn this._http.get<ElementResponse[]>(`${this._configService.environment?.securityPath}/Page/GetAvailableElementsByPageRoot/${pageRoot}`);\n\t}\n}\n","import { inject, Injectable } from \"@angular/core\";\nimport { map, Observable, of, tap } from \"rxjs\";\nimport { ElementResponse } from \"../dto/elementResponse\";\nimport { PageElementService } from \"./pageElement.service\";\n@Injectable({ providedIn: \"root\" })\nexport class ElementService {\n\tElements: ElementResponse[] = [];\n\tPageRoot: string = \"\";\n\tprivate readonly pageElementService = inject(PageElementService);\n\tInitialize$(pageRootValue: string): Observable<void> {\n\t\tif (!pageRootValue) return of();\n\n\t\tthis.PageRoot = pageRootValue;\n\n\t\treturn this.pageElementService.GetElements(this.PageRoot).pipe(\n\t\t\ttap(elements => (this.Elements = elements)),\n\t\t\tmap(() => void 0)\n\t\t);\n\t}\n\n\t/**\n\t * Verify if page has available element by description\n\t */\n\tHasElement(description: string): boolean {\n\t\treturn this.Elements.some(x => x.elementDescription === description);\n\t}\n}\n","import { inject, Injectable } from \"@angular/core\";\nimport { Guid } from \"guid-typescript\";\nimport { ConfigService } from \"./config.service\";\n\nexport interface ItlSessionEnvelope<T> {\n\tsessionId: string;\n\tupdatedAt: number;\n\tvalue: T;\n}\n\nexport type ItlSessionScope = \"global\" | \"user\" | \"profile\" | \"user-profile\";\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class IntelicaSessionService {\n\tprivate readonly configService = inject(ConfigService);\n\tprivate readonly prefix = \"itl.session.\";\n\tprivate readonly sessionIdKey = \"itl.session.__sessionId\";\n\tprivate pageRoot: string = \"\";\n\tprivate sessionId: string | null = null;\n\n\tconstructor() {\n\t\tthis.ensureSessionId();\n\t\tthis.cleanupForeignSessions();\n\t}\n\n\t/**\n\t * Actualiza el pageRoot actual, es necesario matricularlo en el app.component\n\t */\n\tsetPageRoot(pageRoot: string) {\n\t\tthis.pageRoot = pageRoot;\n\t}\n\n\t/**\n\t * Retorna la key de usuario con scope si necesitas reutilizarla manualmente.\n\t */\n\tgetUserKey(key: string): string {\n\t\treturn this.buildScopedKey(key, \"user\");\n\t}\n\n\tprivate ensureSessionId(): string {\n\t\tif (this.sessionId) return this.sessionId;\n\n\t\tconst stored = localStorage.getItem(this.sessionIdKey);\n\t\tif (stored) {\n\t\t\tthis.sessionId = stored;\n\t\t\treturn stored;\n\t\t}\n\n\t\tconst id = this.createGuid();\n\t\tthis.sessionId = id;\n\t\tlocalStorage.setItem(this.sessionIdKey, id);\n\t\treturn id;\n\t}\n\n\tprivate createGuid(): string {\n\t\treturn Guid.create().toString();\n\t}\n\n\tprivate buildScopedKey(key: string, scope: ItlSessionScope = \"user-profile\"): string {\n\t\tconst parts: string[] = [];\n\t\tif (this.pageRoot) parts.push(this.pageRoot);\n\t\tparts.push(key);\n\n\t\tconst userId = this.configService.SessionInformation?.businessUserID;\n\t\tconst profileId = this.configService.SessionInformation?.businessUserProfile;\n\n\t\tif (scope === \"user\" || scope === \"user-profile\") {\n\t\t\tif (userId) parts.push(`user:${userId}`);\n\t\t}\n\t\tif (scope === \"profile\" || scope === \"user-profile\") {\n\t\t\tif (profileId) parts.push(`profile:${profileId}`);\n\t\t}\n\n\t\treturn parts.join(\"|\");\n\t}\n\n\t/**\n\t * Guarda un valor serializable en localStorage con scope por pageRoot\n\t */\n\tset<T>(key: string, value: T): void;\n\t/**\n\t * Guarda un valor serializable en localStorage usando el scope indicado.\n\t */\n\tset<T>(key: string, value: T, scope: ItlSessionScope): void;\n\tset<T>(key: string, value: T, scope: ItlSessionScope = \"user-profile\"): void {\n\t\tthis.ensureSessionId();\n\t\tconst storageKey = this.buildScopedKey(key, scope);\n\t\tconst envelope: ItlSessionEnvelope<T> = {\n\t\t\tsessionId: this.sessionId as string,\n\t\t\tupdatedAt: Date.now(),\n\t\t\tvalue,\n\t\t};\n\t\tlocalStorage.setItem(this.prefix + storageKey, JSON.stringify(envelope));\n\t}\n\n\t/**\n\t * Obtiene un valor desde localStorage usando la misma composición de key\n\t * (pageRoot + usuario + perfil). Retorna null si no existe o la sesión no coincide.\n\t */\n\tget<T>(key: string): T | null;\n\t/**\n\t * Obtiene un valor desde localStorage usando el scope indicado.\n\t */\n\tget<T>(key: string, scope: ItlSessionScope): T | null;\n\tget<T>(key: string, scope: ItlSessionScope = \"user-profile\"): T | null {\n\t\tconst storageKey = this.buildScopedKey(key, scope);\n\t\tconst raw = localStorage.getItem(this.prefix + storageKey);\n\t\tif (!raw) return null;\n\n\t\ttry {\n\t\t\tconst env = JSON.parse(raw) as ItlSessionEnvelope<T>;\n\t\t\tif (!this.sessionId || env.sessionId !== this.sessionId) return null;\n\t\t\treturn env.value;\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * Limpia todo lo que haya en localStorage para este servicio (todas las sesiones).\n\t * Úsalo al iniciar sesión/cerrar sesión para evitar acumulación.\n\t */\n\tclearAll(): void {\n\t\tObject.keys(localStorage)\n\t\t\t.filter(k => k.startsWith(this.prefix))\n\t\t\t.forEach(k => localStorage.removeItem(k));\n\t\tlocalStorage.removeItem(this.sessionIdKey);\n\t\tthis.sessionId = null;\n\t}\n\n\t/**\n\t * Limpia los valores de la sesión actual para el pageRoot vigente.\n\t */\n\tclearCurrentPageRoot(): void {\n\t\tif (!this.pageRoot) return;\n\t\tthis.clearPageRoot(this.pageRoot);\n\t}\n\n\tprivate clearPageRoot(pageRoot: string): void {\n\t\tconst prefix = `${this.prefix}${pageRoot}|`;\n\t\tObject.keys(localStorage)\n\t\t\t.filter(k => k.startsWith(prefix))\n\t\t\t.forEach(k => {\n\t\t\t\tconst raw = localStorage.getItem(k);\n\t\t\t\tif (!raw) return;\n\t\t\t\tconst env = this.tryParseEnvelope(raw);\n\t\t\t\tif (!env || env.sessionId !== this.sessionId) return;\n\t\t\t\tlocalStorage.removeItem(k);\n\t\t\t});\n\t}\n\n\tprivate cleanupForeignSessions(): void {\n\t\tif (!this.sessionId) return;\n\t\tObject.keys(localStorage)\n\t\t\t.filter(k => k.startsWith(this.prefix))\n\t\t\t.forEach(k => {\n\t\t\t\tconst raw = localStorage.getItem(k);\n\t\t\t\tif (!raw) return;\n\t\t\t\tconst env = this.tryParseEnvelope(raw);\n\t\t\t\tif (!env) return;\n\t\t\t\tif (env.sessionId !== this.sessionId) {\n\t\t\t\t\tlocalStorage.removeItem(k);\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tprivate tryParseEnvelope(raw: string): ItlSessionEnvelope<unknown> | null {\n\t\ttry {\n\t\t\treturn JSON.parse(raw) as ItlSessionEnvelope<unknown>;\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n}\n","import { inject, Injectable, signal } from \"@angular/core\";\nimport { getCookie, setCookie } from \"typescript-cookie\";\nimport { GetCookieAttributes } from \"../functions/cookie\";\nimport { ConfigService } from \"../services/config.service\";\n\ninterface MenuVisibilityEventDetail {\n\tmenuIsVisible: boolean;\n}\n\nexport interface ProductEventDetail {\n\tproductId: string;\n\tproduct: string;\n\ticon: string;\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class GlobalMenuService {\n\tprivate readonly ConfigService = inject(ConfigService);\n\tprivate _isMenuVisible = signal<boolean>(true);\n\tprivate _selectedProduct = signal<ProductEventDetail>({ product: \"\", icon: \"\", productId: \"\" });\n\n\tpublic isMenuVisible = this._isMenuVisible.asReadonly();\n\tpublic selectedProduct = this._selectedProduct.asReadonly();\n\n\tprivate readonly eventMenu = \"MenuBarEvent\";\n\tprivate readonly eventProducts = \"SelectedProductMenuEvent\";\n\n\tprivate readonly COOKIE_PRODUCT = \"intelica:selected-product\";\n\tprivate readonly COOKIE_MENU = \"intelica:menu-visible\";\n\n\tprivate initialized = false;\n\n\tinitialize() {\n\t\tif (this.initialized) return;\n\n\t\tthis.listenMenuEvents();\n\t\tthis.hydrateFromCookies();\n\n\t\tthis.initialized = true;\n\t}\n\n\tprivate hydrateFromCookies(): void {\n\t\tconst productCookie = getCookie(this.COOKIE_PRODUCT);\n\t\tif (productCookie) {\n\t\t\ttry {\n\t\t\t\tconst parsed = JSON.parse(productCookie) as ProductEventDetail;\n\t\t\t\tthis._selectedProduct.set({\n\t\t\t\t\tproduct: parsed.product ?? \"\",\n\t\t\t\t\ticon: parsed.icon ?? \"\",\n\t\t\t\t\tproductId: parsed.productId ?? \"\",\n\t\t\t\t});\n\t\t\t} catch {}\n\t\t}\n\n\t\tconst menuCookie = getCookie(this.COOKIE_MENU);\n\t\tif (menuCookie !== undefined) {\n\t\t\tthis._isMenuVisible.set(menuCookie === \"true\");\n\t\t}\n\t}\n\n\tpublic setMenuVisibility(isVisible: boolean): void {\n\t\tconst cookieAttributesGeneral = GetCookieAttributes(this.ConfigService.environment?.environment ?? \"\");\n\t\tsetCookie(this.COOKIE_MENU, String(isVisible), cookieAttributesGeneral); // 👈 NUEVO\n\t\tthis.emitMenuEvent(isVisible);\n\t}\n\n\tpublic setSelectedProduct(product: ProductEventDetail): void {\n\t\tconst cookieAttributesGeneral = GetCookieAttributes(this.ConfigService.environment?.environment ?? \"\");\n\t\tsetCookie(this.COOKIE_PRODUCT, JSON.stringify(product), cookieAttributesGeneral); // 👈 NUEVO\n\t\tthis.emitSelectedProductEvent(product);\n\t}\n\n\tprivate listenMenuEvents(): void {\n\t\twindow.addEventListener(this.eventMenu, this.onMenuEvent);\n\t\twindow.addEventListener(this.eventProducts, this.onSelectedProductEvent);\n\t}\n\n\tprivate onMenuEvent = (event: Event): void => {\n\t\tconst { menuIsVisible } = (event as CustomEvent<MenuVisibilityEventDetail>).detail ?? {};\n\n\t\tif (typeof menuIsVisible === \"boolean\") {\n\t\t\tthis._isMenuVisible.set(menuIsVisible);\n\t\t\tconst cookieAttributesGeneral = GetCookieAttributes(this.ConfigService.environment?.environment ?? \"\");\n\t\t\tsetCookie(this.COOKIE_MENU, String(menuIsVisible), cookieAttributesGeneral); // 👈 NUEVO\n\t\t}\n\t};\n\n\tprivate onSelectedProductEvent = (event: Event): void => {\n\t\tconst detail = (event as CustomEvent<ProductEventDetail>).detail;\n\t\tif (!detail) return;\n\n\t\tconst { product, icon, productId: authClient } = detail;\n\n\t\tif (typeof product === \"string\" && typeof icon === \"string\" && typeof authClient === \"string\") {\n\t\t\tconst normalized = { product, icon, productId: authClient };\n\n\t\t\tthis._selectedProduct.set(normalized);\n\t\t\tconst cookieAttributesGeneral = GetCookieAttributes(this.ConfigService.environment?.environment ?? \"\");\n\t\t\tsetCookie(this.COOKIE_PRODUCT, JSON.stringify(normalized), cookieAttributesGeneral); // 👈 NUEVO\n\t\t}\n\t};\n\n\tprivate emitMenuEvent(isVisible: boolean): void {\n\t\tconst event = new CustomEvent(this.eventMenu, {\n\t\t\tdetail: { menuIsVisible: isVisible } satisfies MenuVisibilityEventDetail,\n\t\t});\n\t\twindow.dispatchEvent(event);\n\t}\n\n\tprivate emitSelectedProductEvent(selectedProduct: ProductEventDetail): void {\n\t\tconst event = new CustomEvent(this.eventProducts, {\n\t\t\tdetail: { product: selectedProduct.product, icon: selectedProduct.icon, productId: selectedProduct.productId } satisfies ProductEventDetail,\n\t\t});\n\t\twindow.dispatchEvent(event);\n\t}\n}\n","import { Injectable } from \"@angular/core\";\nimport { Observable, shareReplay, throwError } from \"rxjs\";\nimport { catchError } from \"rxjs/operators\";\n\ninterface CacheEntry<T> {\n\texpiresAt: number;\n\tvalue$: Observable<T>;\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class RequestCacheService {\n\tprivate readonly cache = new Map<string, CacheEntry<unknown>>();\n\tprivate readonly maxEntries = 300;\n\tprivate readonly defaultTtlMs = 5 * 60 * 1000;\n\n\tpublic getOrSet<T>(key: string, factory: () => Observable<T>, ttlMs: number = this.defaultTtlMs): Observable<T> {\n\t\tthis.removeExpiredEntries();\n\t\tconst now = Date.now();\n\t\tconst cached = this.cache.get(key) as CacheEntry<T> | undefined;\n\n\t\tif (cached && cached.expiresAt > now) {\n\t\t\treturn cached.value$;\n\t\t}\n\n\t\tconst value$ = factory().pipe(\n\t\t\tshareReplay(1),\n\t\t\tcatchError(error => {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t\treturn throwError(() => error);\n\t\t\t})\n\t\t);\n\n\t\tthis.cache.set(key, { value$, expiresAt: now + Math.max(ttlMs, 0) });\n\t\tthis.enforceCapacityLimit();\n\t\treturn value$;\n\t}\n\n\tpublic invalidate(prefix?: string): void {\n\t\tif (!prefix) {\n\t\t\tthis.cache.clear();\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const key of this.cache.keys()) {\n\t\t\tif (key.startsWith(prefix)) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate removeExpiredEntries(): void {\n\t\tconst now = Date.now();\n\t\tfor (const [key, entry] of this.cache.entries()) {\n\t\t\tif (entry.expiresAt <= now) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate enforceCapacityLimit(): void {\n\t\twhile (this.cache.size > this.maxEntries) {\n\t\t\tconst oldestKey = this.cache.keys().next().value as string | undefined;\n\t\t\tif (!oldestKey) break;\n\t\t\tthis.cache.delete(oldestKey);\n\t\t}\n\t}\n}\n","import { HttpClient, HttpParams } from \"@angular/common/http\";\nimport { ElementRef, Injectable, WritableSignal, inject } from \"@angular/core\";\nimport { ConfigService } from \"./config.service\";\nimport { EmbedVisualCommand } from \"../dto/embed-visual-command\";\nimport { EmbedVisualUrlResponse } from \"../dto/embed-visual-url-response\";\nimport { createEmbeddingContext } from \"amazon-quicksight-embedding-sdk\";\nimport { firstValueFrom } from \"rxjs\";\n\nexport interface QuicksightVisualConfig {\n visualId: string;\n container: ElementRef;\n}\ntype FilterParamMap = {\n key: string;\n values: { [k: string]: any }[] | undefined;\n accessor: (item: any) => string;\n};\n@Injectable({\n providedIn: 'root',\n})\nexport class Shared {\n private readonly http = inject(HttpClient);\n private readonly configService = inject(ConfigService);\n private readonly path = `${this.configService.environment?.sharedPath}/Quicksight`;\n getEmbedUrl(dashboardId: string) {\n return this.http.get<{ embedUrl: string }>(`${this.path}/embed-url/${dashboardId}`);\n }\n getEmbedVisualUrl(request: EmbedVisualCommand) {\n let params = new HttpParams()\n .set('dashboardId', request.dashboardId)\n .set('sheetId', request.sheetId)\n .set('visualId', request.visualId);\n Object.entries(request.parameters).forEach(([key, values]) => {\n values.forEach(value => {\n params = params.append(`parameters[${key}]`, value);\n });\n });\n return this.http.get<EmbedVisualUrlResponse>(\n `${this.path}/embed-visual-url`,\n { params }\n );\n }\n getEmbedVisualUrlsAnonymous(request: EmbedVisualCommand) {\n let params = new HttpParams()\n .set('dashboardId', request.dashboardId)\n .set('sheetId', request.sheetId)\n .set('visualId', request.visualId);\n Object.entries(request.parameters).forEach(([key, values]) => {\n values.forEach(value => {\n params = params.append(`parameters[${key}]`, value);\n });\n });\n return this.http.get<EmbedVisualUrlResponse>(\n `${this.path}/embed-visual-anonymous`,\n { params }\n );\n }\n async createEmbedContext(embedUrl: string, container: HTMLElement, options?: { height?: string; width?: string }): Promise<void> {\n const embeddingContext = await createEmbeddingContext();\n await embeddingContext.embedDashboard({\n url: embedUrl,\n container,\n ...(options?.height && { height: options.height }),\n ...(options?.width && { width: options.width }),\n });\n }\n async embedDashboard(dashboardId: string, container: HTMLElement, options?: { height?: string; width?: string }): Promise<void> {\n const { embedUrl } = await firstValueFrom(this.getEmbedUrl(dashboardId));\n await this.createEmbedContext(embedUrl, container, options);\n }\n async createEmbedVisualContext(embedUrl: string, container: HTMLElement, options?: { height?: string; width?: string }): Promise<void> {\n const embeddingContext = await createEmbeddingContext();\n await embeddingContext.embedVisual({\n url: embedUrl,\n container,\n ...(options?.height && { height: options.height }),\n ...(options?.width && { width: options.width }),\n }, { scaleToContainer: true, fitToIframeWidth: false } as any);\n }\n async embedSequentialVisuals(dashboardId: string, sheetId: string, parameters: Record<string, string[]>, configs: QuicksightVisualConfig[], onVisualLoaded?: (visualId: string) => void\n ): Promise<void> {\n for (const config of configs) {\n config.container?.nativeElement?.replaceChildren();\n const { visual } = await firstValueFrom(\n this.getEmbedVisualUrl({ dashboardId, sheetId, visualId: config.visualId, parameters })\n );\n if (!visual) continue;\n await this.createEmbedVisualContext(visual.embedUrl, config.container.nativeElement);\n onVisualLoaded?.(config.visualId);\n }\n }\n}","/**\n * Función de comparación genérica para ordenar objetos por un campo específico.\n *\n * @template T - Tipo genérico que representa la estructura de los objetos a comparar.\n * @param {keyof T} field - El nombre del campo por el cual se realizará la comparación.\n * @param {number} [sortOrder=1] - Orden de la clasificación: 1 para ascendente y -1 para descendente.\n * @returns {(a: T, b: T) => number} - Función de comparación que puede ser utilizada en métodos de ordenación como `Array.prototype.sort`.\n */\nexport function CompareByField<T>(field: keyof T, sortOrder: number = 1) {\n\treturn (a: T, b: T): number => {\n\t\tconst valueA = a[field];\n\t\tconst valueB = b[field];\n\n\t\t// Manejo de valores nulos\n\t\tif (valueA === null && valueB === null) return 0;\n\t\tif (valueA === null) return -sortOrder;\n\t\tif (valueB === null) return sortOrder;\n\n\t\t// Comparación de fechas\n\t\tif (valueA instanceof Date && valueB instanceof Date) {\n\t\t\treturn sortOrder * (valueA.getTime() - valueB.getTime());\n\t\t}\n\n\t\t// Comparación de números\n\t\tif (typeof valueA === \"number\" && typeof valueB === \"number\") {\n\t\t\treturn sortOrder * (valueA - valueB);\n\t\t}\n\n\t\t// Comparación de booleanos\n\t\tif (typeof valueA === \"boolean\" && typeof valueB === \"boolean\") {\n\t\t\treturn sortOrder * (Number(valueA) - Number(valueB));\n\t\t}\n\n\t\t// Comparación de cadenas de texto\n\t\tconst strA = valueA?.toString().toLowerCase() || \"\";\n\t\tconst strB = valueB?.toString().toLowerCase() || \"\";\n\t\treturn sortOrder * strA.localeCompare(strB);\n\t};\n}\n","import JSEncrypt from \"jsencrypt\";\nexport function encryptData(data: any, keyEncrypt: string): string | null {\n\tconst encryptor = new JSEncrypt();\n\tencryptor.setPublicKey(keyEncrypt);\n\tconst encryptedText = encryptor.encrypt(data);\n\tif (!encryptedText) {\n\t\tconsole.error(\"Error al cifrar los datos con RSA\");\n\t\treturn null;\n\t}\n\treturn encryptedText;\n}\n","export class Patterns {\n\tPatternText: string = \"^(?!\\\\s*$)[a-zA-Z0-9-\\\\s]*$\";\n\tPatternEmail: string = \"^[a-zA-Z0-9._+~\\\\-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,}$\";\n\tPatternOnlyLetters: string = \"^[a-zA-Z\\\\s]+$\";\n\tPatternOnlyLettersWithAccents: string = \"^[A-Za-záéíóúÁÉÍÓÚžščřćďňťľźěǎǧȟǐǩǫřšťžŽŠČŘĆĎŇŤĽŹĚǍǦȞǏǨǪŘŠŤŽ\\\\s]+$\";\n\tPatternLettersEmail: string = \"^[A-Za-z0-9@._-]+$\";\n}\nexport function InputValidation(event: KeyboardEvent) {\n\tconst allowedCharacters = /^[a-zA-Z0-9-\\s]$/;\n\tconst inputChar = event.key;\n\tif (!allowedCharacters.test(inputChar)) event.preventDefault();\n}\nexport function DynamicInputValidation(event: KeyboardEvent, pattern: string) {\n\tconst inputChar = event.key;\n\tconst regex = new RegExp(pattern);\n\tif (!regex.test(inputChar)) {\n\t\tevent.preventDefault();\n\t}\n}\nexport function EmailInputValidation(event: KeyboardEvent) {\n\tconst inputChar = event.key;\n\tif (event.ctrlKey || event.altKey || inputChar.length > 1) return;\n\tconst allowedCharacters = /^[a-zA-Z0-9._+@-]$/;\n\tif (!allowedCharacters.test(inputChar)) {\n\t\tevent.preventDefault();\n\t}\n}\n","// notification/dto/recipient-dispatch-error.dto.ts\n\n/**\n * Error mínimo de dispatch para campanas / UI.\n * - Fuente: progress (SignalR) + persistencia (rehidratación recipients)\n * - Key natural: recipientId\n * - Escalable: agrega campos opcionales sin romper consumers.\n */\nexport interface RecipientDispatchError {\n\trecipientId: string;\n\n\t/** Texto del último error (si el backend lo provee) */\n\tlastErrorMessage: string | null;\n\n\t/** Campos opcionales útiles (ya existen en progress) */\n\tnotificationId?: string;\n\tjobId?: string | null;\n\n\tchannelCode?: string;\n\tstatusCode?: string;\n\n\tattempts?: number;\n\tlastAttemptAt?: string | null;\n\n\t/** Identificadores de negocio si los quieres luego */\n\tuserId?: string | null;\n\tclientId?: string | null;\n\tgroupId?: string | null;\n}\n","import { inject, Injectable } from \"@angular/core\";\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\nimport { Observable } from \"rxjs\";\nimport { NotificationRecipientSummaryResponse } from \"./dto/notification-response.dto\";\nimport { UserNotificationInboxItem } from \"./dto/notification-inbox-response.dto\";\nimport { ConfigService } from \"../services/config.service\";\nimport { HtmlPreviewBucket } from \"./dto/notification-request.dto\";\n\n@Injectable({ providedIn: \"root\" })\nexport class NotificationService {\n\tprivate readonly configService = inject(ConfigService);\n\tprivate readonly path = `${this.configService.environment?.notificationsPath}/Notifications`;\n\t/*\n\tprivate readonly defaultHeaders = new HttpHeaders({\n\t\trefreshtoken: \"f06c110a-ea4e-44a9-896f-210f3b387e57\",\n\t\tlanguagecode: \"EN\",\n\t\tpageRoot: \"\",\n\t\tauthorization:\n\t\t\t\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwcmVmZXJyZWRfdXNlcm5hbWUiOiJBbGV4YW5kZXIiLCJmdWxsTmFtZSI6IkFsZXhhbmRlciBUb3JyZSIsInN1YiI6Ijg3ZTQxYzZlLWNmN2EtNDk4MC05YTQ1LThjZjllNWMwOGMzZCIsImVtYWlsIjoiam9oYW4uY2FyYm9uZWxAaW50ZWxpY2EuY29tIiwiYnVzaW5lc3NVc2VyQ2xpZW50R3JvdXBJRCI6ImNlMjE5NDAyLWQyMDAtNGU1Yy1iNzE0LWJkNDJiMjZhNzNkNSIsImJhbmtzSUQiOiJnUlZPUEt6V3BNbHQ2NFE3OWdDcUxlQ1pFeWp2RjVFQVo0TmNMVTQvZlhJMVlvbERPeEFOV0NWTUpFYkJYRDJQUHkvUi8xdDVQVHBFZ08vcFFPcnMwVnNNeWRONkVocEY5MzRCRDJFRXhlelVyakZWWVduWitrcCtObGRLOU56VWg4VjZaRjBVTzEyN0JIaG12aGhUNzZMRm51Zm9nSndUTHVuOW5qMFpEaSsxV3MxTHkzZytzWkNYSVdTelR3QjBEc1g5Y2tXSTJrWmFHeWhHVlFhTlliT3hGYzU5UU9xV0pxQUJqdmVBdFNEaGNQdFZta3RIOXFaaEJ5Tkphdkh5R1pkWWJScXovcUZPOW1HUC92NjVScFZ5djNwejhCZUtvMVlJVW5vSUFqSU9udzRTMEkzcmxaSTNrTExBRFFOdnhBSk81NjgvZTVvdWlVZFd3SDlJd2c9PSIsImlzSW50ZWxpY2EiOiIxIiwiY2xpZW50R3JvdXBJRCI6ImU5ZDc1ODY3LTZkMDQtNGNiMC1iZjMxLTE5MmI5Y2VjMzVkYSIsImNsaWVudElEIjoiMDYzMGU0MDEtMzk1Ny00OTU5LTljYTUtYjM1MGVkNmU5Yjk2IiwiYm5rR3JvdXBJRCI6IjAiLCJpbXJwUHJvamVjdElEIjoiMTAwNjMyIiwiZXhwIjoxNzY4ODU3MTUwLCJpc3MiOiJpbnRlbGljYS5jb20iLCJhdWQiOiJpbnRlbGljYS5jb20ifQ.n0BGAUHrp6BiA_XpgTw6WdresOk_C3aaON7V7AcF5uo\",\n\t});\n*/\n\tconstructor(private http: HttpClient) {}\n\n\tgetUserNotificacions(): Observable<UserNotificationInboxItem[]> {\n\t\treturn this.http.get<UserNotificationInboxItem[]>(`${this.path}/users/notifications`);\n\t}\n\n\tmarkAsRead(recipientId: string): Observable<NotificationRecipientSummaryResponse> {\n\t\treturn this.http.put<NotificationRecipientSummaryResponse>(`${this.path}/users/recipients/${recipientId}/read`, {});\n\t}\n\n\tmarkAllAsRead(): Observable<NotificationRecipientSummaryResponse[]> {\n\t\treturn this.http.put<NotificationRecipientSummaryResponse[]>(`${this.path}/users/recipients/read/all`, {});\n\t}\n\n\tmarkAsHidden(recipientId: string): Observable<NotificationRecipientSummaryResponse> {\n\t\treturn this.http.put<NotificationRecipientSummaryResponse>(`${this.path}/users/recipients/${recipientId}/hidden`, {});\n\t}\n\n\thtmlPreview(request: HtmlPreviewBucket): Observable<string> {\n\t\treturn this.http.post(`${this.path}/html/preview`, request, { responseType: \"text\" });\n\t}\n}\n","import { inject, Injectable } from \"@angular/core\";\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\nimport { ConfigService } from \"../services/config.service\";\nimport { catchError, map, Observable, of } from \"rxjs\";\nimport { NotificationJobResponse, NotificationRecipientSummaryResponse, NotificationResponse } from \"./dto/notification-response.dto\";\nimport { CreateNotificationJobRequest, CreateNotificationsForJobRequest } from \"./dto/notification-request.dto\";\n\n@Injectable({ providedIn: \"root\" })\nexport class NotificationJobService {\n\tprivate readonly configService = inject(ConfigService);\n\tprivate readonly path = `${this.configService.environment?.notificationsPath}/NotificationJobs`;\n\t/*\n\tprivate readonly defaultHeaders = new HttpHeaders({\n\t\trefreshtoken: \"f06c110a-ea4e-44a9-896f-210f3b387e57\",\n\t\tlanguagecode: \"EN\",\n\t\tpageRoot: \"\",\n\t\tauthorization:\n\t\t\t\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwcmVmZXJyZWRfdXNlcm5hbWUiOiJBbGV4YW5kZXIiLCJmdWxsTmFtZSI6IkFsZXhhbmRlciBUb3JyZSIsInN1YiI6Ijg3ZTQxYzZlLWNmN2EtNDk4MC05YTQ1LThjZjllNWMwOGMzZCIsImVtYWlsIjoiam9oYW4uY2FyYm9uZWxAaW50ZWxpY2EuY29tIiwiYnVzaW5lc3NVc2VyQ2xpZW50R3JvdXBJRCI6ImNlMjE5NDAyLWQyMDAtNGU1Yy1iNzE0LWJkNDJiMjZhNzNkNSIsImJhbmtzSUQiOiJnUlZPUEt6V3BNbHQ2NFE3OWdDcUxlQ1pFeWp2RjVFQVo0TmNMVTQvZlhJMVlvbERPeEFOV0NWTUpFYkJYRDJQUHkvUi8xdDVQVHBFZ08vcFFPcnMwVnNNeWRONkVocEY5MzRCRDJFRXhlelVyakZWWVduWitrcCtObGRLOU56VWg4VjZaRjBVTzEyN0JIaG12aGhUNzZMRm51Zm9nSndUTHVuOW5qMFpEaSsxV3MxTHkzZytzWkNYSVdTelR3QjBEc1g5Y2tXSTJrWmFHeWhHVlFhTlliT3hGYzU5UU9xV0pxQUJqdmVBdFNEaGNQdFZta3RIOXFaaEJ5Tkphdkh5R1pkWWJScXovcUZPOW1HUC92NjVScFZ5djNwejhCZUtvMVlJVW5vSUFqSU9udzRTMEkzcmxaSTNrTExBRFFOdnhBSk81NjgvZTVvdWlVZFd3SDlJd2c9PSIsImlzSW50ZWxpY2EiOiIxIiwiY2xpZW50R3JvdXBJRCI6ImU5ZDc1ODY3LTZkMDQtNGNiMC1iZjMxLTE5MmI5Y2VjMzVkYSIsImNsaWVudElEIjoiMDYzMGU0MDEtMzk1Ny00OTU5LTljYTUtYjM1MGVkNmU5Yjk2IiwiYm5rR3JvdXBJRCI6IjAiLCJpbXJwUHJvamVjdElEIjoiMTAwNjMyIiwiZXhwIjoxNzY4ODU3MTUwLCJpc3MiOiJpbnRlbGljYS5jb20iLCJhdWQiOiJpbnRlbGljYS5jb20ifQ.n0BGAUHrp6BiA_XpgTw6WdresOk_C3aaON7V7AcF5uo\",\n\t});\n*/\n\tconstructor(private http: HttpClient) {}\n\n\tcreateJobNotifications(payload: CreateNotificationJobRequest): Observable<NotificationJobResponse> {\n\t\treturn this.http.post<NotificationJobResponse>(`${this.path}/notifications`, payload, {});\n\t}\n\n\tcreateJob(payload: CreateNotificationJobRequest): Observable<NotificationJobResponse> {\n\t\treturn this.http.post<NotificationJobResponse>(`${this.path}`, payload, {});\n\t}\n\n\tgetJob(jobId: string): Observable<NotificationJobResponse> {\n\t\treturn this.http.get<NotificationJobResponse>(`${this.path}/${jobId}`);\n\t}\n\n\tcreateNotifications(jobId: string, payload: CreateNotificationsForJobRequest[]): Observable<NotificationResponse> {\n\t\treturn this.http.post<NotificationResponse>(`${this.path}/${jobId}/notifications`, payload, {});\n\t}\n\n\tgetActiveJob(featureCode: string, origin?: string): Observable<NotificationJobResponse | null> {\n\t\tlet url = `${this.path}/active?featureCode=${encodeURIComponent(featureCode)}`;\n\t\tif (origin) {\n\t\t\turl += `&origin=${encodeURIComponent(origin)}`;\n\t\t}\n\n\t\treturn this.http.get<NotificationJobResponse[]>(url, {}).pipe(\n\t\t\tmap(list => (Array.isArray(list) && list.length > 0 ? list[0] : null)),\n\t\t\tcatchError(err => {\n\t\t\t\tconsole.error(\"Error obteniendo active jobs\", err);\n\t\t\t\treturn of(null);\n\t\t\t})\n\t\t);\n\t}\n\n\tgetRecipients(jobId: string): Observable<NotificationRecipientSummaryResponse[]> {\n\t\treturn this.http.get<NotificationRecipientSummaryResponse[]>(`${this.path}/${jobId}/recipients`, {});\n\t}\n}\n","import { inject, Injectable, NgZone } from \"@angular/core\";\nimport * as signalR from \"@microsoft/signalr\";\nimport { Subject } from \"rxjs\";\nimport { ConfigService } from \"../services/config.service\";\nimport { RecipientNotification } from \"./dto/notification-message-response.dto\";\nimport { RecipientProgressNotification } from \"./dto/notification-progress-message-response.dto\";\nimport { CallbackExecutionResult } from \"./dto/notification-callback-message-response.dto\";\n\n@Injectable({ providedIn: \"root\" })\nexport class NotificationSignalRService {\n\tprivate readonly configService = inject(ConfigService);\n\tprivate readonly path = `${this.configService.environment?.signalPath}/websocket`;\n\n\tprivate hubConnection?: signalR.HubConnection;\n\tprivate startPromise?: Promise<void>;\n\n\t// Mantiene los grupos a los que ya nos unimos (idempotencia + rejoin tras reconexión)\n\tprivate joinedGroups = new Set<string>();\n\n\tprivate notificationSendSubject = new Subject<RecipientNotification>();\n\tnotificationSend$ = this.notificationSendSubject.asObservable();\n\n\tprivate jobProgressSubject = new Subject<RecipientProgressNotification>();\n\tjobProgress$ = this.jobProgressSubject.asObservable();\n\n\tprivate callbackResultSubject = new Subject<CallbackExecutionResult>();\n\tcallbackResult$ = this.callbackResultSubject.asObservable();\n\n\tconstructor(private zone: NgZone) {}\n\n\t/**\n\t * Inicia la conexión una sola vez. Reutiliza la promesa para evitar carreras.\n\t */\n\tstartConnection(): Promise<void> {\n\t\tif (this.startPromise) return this.startPromise;\n\n\t\tthis.hubConnection = new signalR.HubConnectionBuilder().withUrl(this.path).withAutomaticReconnect().build();\n\t\tthis.hubConnection.keepAliveIntervalInMilliseconds = 15_000;\n\t\tthis.hubConnection.serverTimeoutInMilliseconds = 120_000;\n\n\t\tthis.registerListeners();\n\t\tthis.registerReconnectHandlers();\n\n\t\tthis.startPromise = this.hubConnection.start().catch(err => {\n\t\t\tconsole.error(\"Error starting SignalR connection\", err);\n\t\t\tthis.startPromise = undefined; // permitir reintentar\n\t\t\tthrow err;\n\t\t});\n\n\t\treturn this.startPromise;\n\t}\n\n\t/**\n\t * Se une a un grupo de forma idempotente.\n\t * Importante: esta función garantiza que la conexión esté iniciada.\n\t */\n\tasync joinScope(scopeType: string, scopeId: string): Promise<void> {\n\t\tawait this.startConnection();\n\t\tif (!this.hubConnection) return;\n\n\t\tconst groupName = `${scopeType}-${scopeId}`;\n\n\t\tif (this.joinedGroups.has(groupName)) return;\n\n\t\tawait this.hubConnection.invoke(\"Connect\", groupName);\n\t\tthis.joinedGroups.add(groupName);\n\t}\n\n\t/**\n\t * Sale de un grupo y actualiza el estado local.\n\t * Requiere que el Hub implemente el método Disconnect(groupName).\n\t */\n\tasync leaveScope(scopeType: string, scopeId: string): Promise<void> {\n\t\tif (!this.hubConnection) return;\n\n\t\tconst groupName = `${scopeType}-${scopeId}`;\n\n\t\tif (!this.joinedGroups.has(groupName)) return;\n\n\t\tawait this.hubConnection.invoke(\"Disconnect\", groupName);\n\t\tthis.joinedGroups.delete(groupName);\n\t}\n\n\t/**\n\t * Detiene la conexión y limpia estado local.\n\t * Útil si quieres liberar recursos al cerrar sesión.\n\t */\n\tasync stopConnection(): Promise<void> {\n\t\tif (!this.hubConnection) return;\n\n\t\ttry {\n\t\t\tawait this.hubConnection.stop();\n\t\t} finally {\n\t\t\tthis.joinedGroups.clear();\n\t\t\tthis.hubConnection = undefined;\n\t\t\tthis.startPromise = undefined;\n\t\t}\n\t}\n\n\tprivate registerListeners(): void {\n\t\tif (!this.hubConnection) return;\n\n\t\tthis.hubConnection.on(\"NotificationSend\", (raw: string) => {\n\t\t\tthis.zone.run(() => {\n\t\t\t\tconst data = JSON.parse(raw) as RecipientNotification;\n\t\t\t\tthis.notificationSendSubject.next(data);\n\t\t\t});\n\t\t});\n\n\t\tthis.hubConnection.on(\"JobProgress\", (raw: string) => {\n\t\t\tthis.zone.run(() => {\n\t\t\t\tconst data = JSON.parse(raw) as RecipientProgressNotification;\n\t\t\t\tthis.jobProgressSubject.next(data);\n\t\t\t});\n\t\t});\n\n\t\tthis.hubConnection.on(\"CallbackResult\", (raw: string) => {\n\t\t\tthis.zone.run(() => {\n\t\t\t\tconst data = JSON.parse(raw) as CallbackExecutionResult;\n\t\t\t\tthis.callbackResultSubject.next(data);\n\t\t\t});\n\t\t});\n\n\t\t// Opcional (tu hub lo emite): útil para debugging\n\t\tthis.hubConnection.on(\"Connect\", (_msg: string) => {});\n\t}\n\n\t/**\n\t * SignalR pierde pertenencia a grupos tras reconexión: re-join automático.\n\t */\n\tprivate registerReconnectHandlers(): void {\n\t\tif (!this.hubConnection) return;\n\n\t\tthis.hubConnection.onreconnected(async () => {\n\t\t\ttry {\n\t\t\t\tfor (const groupName of this.joinedGroups) {\n\t\t\t\t\tawait this.hubConnection!.invoke(\"Connect\", groupName);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(\"Error rejoining groups after reconnection\", e);\n\t\t\t}\n\t\t});\n\n\t\tthis.hubConnection.onclose(() => {\n\t\t\t// Mantén joinedGroups para poder rejoin si el usuario vuelve a startConnection()\n\t\t\tthis.startPromise = undefined;\n\t\t});\n\t}\n}\n","import { Injectable } from \"@angular/core\";\nimport { BehaviorSubject, Subject, firstValueFrom, Observable } from \"rxjs\";\nimport { NotificationJobService } from \"./notification-job.service\";\nimport { NotificationSignalRService } from \"./notification-signalr.service\";\nimport { JobState } from \"./dto/job-state.dto\";\nimport { NotificationDraft } from \"./dto/notification-draft.dto\";\nimport { RecipientNotification } from \"./dto/notification-message-response.dto\";\nimport { NotificationRecipientSummaryResponse } from \"./dto/notification-response.dto\";\nimport { CreateNotificationJobRequest, CreateNotificationsForJobRequest, HtmlPreviewBucket } from \"./dto/notification-request.dto\";\nimport { RecipientDispatchError } from \"./dto/recipient-dispatch-error.dto\";\nimport { NotificationService } from \"./notification.service\";\nimport { UserNotificationInboxItem } from \"./dto/notification-inbox-response.dto\";\nimport { RecipientProgressNotification } from \"./dto/notification-progress-message-response.dto\";\nimport { CallbackExecutionResult } from \"./dto/notification-callback-message-response.dto\";\nimport { JobStatusCatalog, OriginCatalog } from \"./dto/notification-catalog.dto\";\n\n@Injectable({ providedIn: \"root\" })\nexport class NotificationOrchestratorService {\n\t// Config actual (feature/origin) del “scope”\n\tprivate origin?: OriginCatalog;\n\tprivate featureCode?: string;\n\n\tprivate currentJobId?: string;\n\tprivate subscribedJobId?: string;\n\n\t// --- streams públicos (feature/origin job state)\n\tprivate readonly jobStateSubject = new BehaviorSubject<JobState>({\n\t\tstatus: \"pending\",\n\t\tprocessedCount: 0,\n\t\ttotalCount: 0,\n\t\tprocessedNotificationsCount: 0,\n\t\ttotalNotificationsCount: 0,\n\t});\n\treadonly jobState$ = this.jobStateSubject.asObservable();\n\n\tprivate readonly dispatchErrorsMapSubject = new BehaviorSubject<Map<string, RecipientDispatchError>>(new Map());\n\treadonly dispatchErrors$ = this.dispatchErrorsMapSubject.asObservable();\n\n\tprivate readonly callbackRawSubject = new Subject<CallbackExecutionResult>();\n\treadonly callbackRaw$ = this.callbackRawSubject.asObservable();\n\n\t/**\n\t * Router de progreso por jobId (para UIs multi-job).\n\t */\n\tprivate readonly jobProgressSubjects = new Map<string, Subject<RecipientProgressNotification>>();\n\tprivate readonly jobWatchRefCount = new Map<string, number>();\n\n\t/**\n\t * Router de NotificationSend por userId (campana/inbox).\n\t */\n\tprivate readonly userInboxSubjects = new Map<string, Subject<RecipientNotification>>();\n\tprivate readonly userWatchRefCount = new Map<string, number>();\n\n\t// Guard anti-carreras para rehidratación\n\tprivate initInFlight?: Promise<void>;\n\n\tconstructor(\n\t\tprivate jobService: NotificationJobService,\n\t\tprivate notificationService: NotificationService,\n\t\tprivate signalR: NotificationSignalRService\n\t) {\n\t\t// stream global SignalR => orquestador enruta\n\t\tthis.signalR.jobProgress$.subscribe(update => this.onJobProgress(update));\n\t\tthis.signalR.callbackResult$.subscribe(update => this.onCallbackResult(update));\n\t\tthis.signalR.notificationSend$.subscribe(update => this.onNotificationSend(update));\n\t}\n\n\t// ---------------------------------------------------------------------\n\t// API pública para UI: Inbox user-scoped (NotificationSend)\n\t// ---------------------------------------------------------------------\n\n\tasync watchUserInbox(userId: string): Promise<Observable<RecipientNotification>> {\n\t\tif (!userId) throw new Error(\"userId is required\");\n\n\t\tconst current = this.userWatchRefCount.get(userId) ?? 0;\n\t\tthis.userWatchRefCount.set(userId, current + 1);\n\n\t\tawait this.signalR.joinScope(\"user\", userId);\n\n\t\treturn this.userInbox$(userId);\n\t}\n\n\tasync unwatchUserInbox(userId: string): Promise<void> {\n\t\tif (!userId) return;\n\n\t\tconst current = this.userWatchRefCount.get(userId) ?? 0;\n\n\t\tif (current <= 1) {\n\t\t\tthis.userWatchRefCount.delete(userId);\n\n\t\t\tawait this.signalR.leaveScope(\"user\", userId);\n\n\t\t\tconst subj = this.userInboxSubjects.get(userId);\n\t\t\tif (subj) {\n\t\t\t\tsubj.complete();\n\t\t\t\tthis.userInboxSubjects.delete(userId);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tthis.userWatchRefCount.set(userId, current - 1);\n\t}\n\n\tuserInbox$(userId: string): Observable<RecipientNotification> {\n\t\tlet subj = this.userInboxSubjects.get(userId);\n\t\tif (!subj) {\n\t\t\tsubj = new Subject<RecipientNotification>();\n\t\t\tthis.userInboxSubjects.set(userId, subj);\n\t\t}\n\t\treturn subj.asObservable();\n\t}\n\n\t// ---------------------------------------------------------------------\n\t// API pública para UI: Job progress por jobId (PRG)\n\t// ---------------------------------------------------------------------\n\n\tasync watchJobProgress(jobId: string): Promise<Observable<RecipientProgressNotification>> {\n\t\tif (!jobId) throw new Error(\"jobId is required\");\n\n\t\tconst current = this.jobWatchRefCount.get(jobId) ?? 0;\n\t\tthis.jobWatchRefCount.set(jobId, current + 1);\n\n\t\tawait this.signalR.joinScope(\"job\", jobId);\n\n\t\treturn this.jobProgress$(jobId);\n\t}\n\n\tasync unwatchJobProgress(jobId: string): Promise<void> {\n\t\tif (!jobId) return;\n\n\t\tconst current = this.jobWatchRefCount.get(jobId) ?? 0;\n\n\t\tif (current <= 1) {\n\t\t\tthis.jobWatchRefCount.delete(jobId);\n\n\t\t\tawait this.signalR.leaveScope(\"job\", jobId);\n\n\t\t\tconst subj = this.jobProgressSubjects.get(jobId);\n\t\t\tif (subj) {\n\t\t\t\tsubj.complete();\n\t\t\t\tthis.jobProgressSubjects.delete(jobId);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tthis.jobWatchRefCount.set(jobId, current - 1);\n\t}\n\n\tjobProgress$(jobId: string): Observable<RecipientProgressNotification> {\n\t\tlet subj = this.jobProgressSubjects.get(jobId);\n\t\tif (!subj) {\n\t\t\tsubj = new Subject<RecipientProgressNotification>();\n\t\t\tthis.jobProgressSubjects.set(jobId, subj);\n\t\t}\n\t\treturn subj.asObservable();\n\t}\n\n\t// ---------------------------------------------------------------------\n\t// Scope feature/origin (tu lógica existente)\n\t// ---------------------------------------------------------------------\n\n\trehydrateScope(origin: OriginCatalog, featureCode: string): Promise<void> {\n\t\tthis.origin = origin;\n\t\tthis.featureCode = featureCode;\n\n\t\tif (this.initInFlight) return this.initInFlight;\n\n\t\tthis.initInFlight = (async () => {\n\t\t\ttry {\n\t\t\t\tawait this.rehydrateActiveJobInternal();\n\t\t\t} finally {\n\t\t\t\tthis.initInFlight = undefined;\n\t\t\t}\n\t\t})();\n\n\t\treturn this.initInFlight;\n\t}\n\n\tgetCurrentJobId(): string | undefined {\n\t\treturn this.currentJobId;\n\t}\n\n\tgetJobStateSnapshot(): JobState {\n\t\treturn this.jobStateSubject.value;\n\t}\n\n\tasync ensureActiveOrCreateJobNotifications(notificationDraft: NotificationDraft[]): Promise<{ jobId: string; mode: \"active\" | \"created\" }> {\n\t\tif (!this.origin || !this.featureCode) throw new Error(\"Scope not initialized. Call rehydrateScope(featureCode, origin) first.\");\n\n\t\tif (this.currentJobId) {\n\t\t\treturn { jobId: this.currentJobId, mode: \"active\" };\n\t\t}\n\n\t\tconst jobPayload: CreateNotificationJobRequest = {\n\t\t\tfeatureCode: this.featureCode,\n\t\t\torigin: this.origin,\n\t\t\ttotalCount: notificationDraft?.length ?? 0,\n\t\t\ttotalNotificationsCount: notificationDraft?.filter(n => n.recipients?.some(r => r.isRequiredForProcessed)).length ?? 0,\n\t\t};\n\n\t\tconst job = await firstValueFrom(this.jobService.createJob(jobPayload));\n\t\tthis.currentJobId = job.jobId;\n\n\t\tthis.setJobState({\n\t\t\tjobId: this.currentJobId,\n\t\t\tstatus: \"pending\",\n\t\t\tprocessedCount: 0,\n\t\t\ttotalCount: jobPayload.totalCount,\n\t\t\tprocessedNotificationsCount: 0,\n\t\t\ttotalNotificationsCount: jobPayload.totalNotificationsCount,\n\t\t});\n\n\t\tawait this.subscribeToJob(this.currentJobId);\n\n\t\tconst notifications: CreateNotificationsForJobRequest[] = notificationDraft.map(draft => ({\n\t\t\toriginReference: `${draft.originReference}-${job.jobId}`,\n\t\t\tnotificationTypeCode: draft.notificationTypeCode,\n\t\t\tdestination: draft.destination,\n\t\t\tdestinationLabel: draft.destinationLabel,\n\t\t\tbucketName: draft.bucketName,\n\t\t\ttemplateName: draft.templateName,\n\t\t\ttemplateData: draft.templateData,\n\t\t\tpriorityCode: draft.priorityCode,\n\t\t\ttitle: draft.title,\n\t\t\tbody: draft.body,\n\t\t\tmetaData: draft.metaData,\n\t\t\trecipients: draft.recipients,\n\t\t\tactions: draft.actions,\n\t\t\tattachments: draft.attachments,\n\t\t\tcallbacks: draft.callbacks,\n\t\t}));\n\n\t\tawait firstValueFrom(this.jobService.createNotifications(job.jobId, notifications));\n\n\t\treturn { jobId: this.currentJobId, mode: \"created\" };\n\t}\n\n\tasync ensureCreateJobNotifications(origin: OriginCatalog, featureCode: string, notificationDraft: NotificationDraft[]): Promise<void> {\n\t\tif (!origin || !featureCode) throw new Error(\"Scope not initialized.\");\n\n\t\tconst jobPayload: CreateNotificationJobRequest = {\n\t\t\tfeatureCode: featureCode,\n\t\t\torigin: origin,\n\t\t\ttotalCount: 1,\n\t\t\ttotalNotificationsCount: 1,\n\t\t\tnotifications: notificationDraft.map(draft => ({\n\t\t\t\toriginReference: draft.originReference,\n\t\t\t\tnotificationTypeCode: draft.notificationTypeCode,\n\t\t\t\tdestination: draft.destination,\n\t\t\t\tdestinationLabel: draft.destinationLabel,\n\t\t\t\tbucketName: draft.bucketName,\n\t\t\t\ttemplateName: draft.templateName,\n\t\t\t\ttemplateData: draft.templateData,\n\t\t\t\tpriorityCode: draft.priorityCode,\n\t\t\t\ttitle: draft.title,\n\t\t\t\tbody: draft.body,\n\t\t\t\tmetaData: draft.metaData,\n\t\t\t\trecipients: draft.recipients,\n\t\t\t\tactions: draft.actions,\n\t\t\t\tattachments: draft.attachments,\n\t\t\t\tcallbacks: draft.callbacks,\n\t\t\t})),\n\t\t};\n\n\t\tawait firstValueFrom(this.jobService.createJobNotifications(jobPayload));\n\t}\n\n\tasync markAsRead(recipientId: string): Promise<NotificationRecipientSummaryResponse> {\n\t\tconst result = await firstValueFrom(this.notificationService.markAsRead(recipientId));\n\t\treturn result;\n\t}\n\n\tasync markAllAsRead(): Promise<NotificationRecipientSummaryResponse[]> {\n\t\tconst result = await firstValueFrom(this.notificationService.markAllAsRead());\n\t\treturn result;\n\t}\n\n\tasync markAsHidden(recipientId: string): Promise<NotificationRecipientSummaryResponse> {\n\t\tconst result = await firstValueFrom(this.notificationService.markAsHidden(recipientId));\n\t\treturn result;\n\t}\n\n\tasync htmlPreview(request: HtmlPreviewBucket): Promise<string> {\n\t\tconst result = await firstValueFrom(this.notificationService.htmlPreview(request));\n\t\treturn result;\n\t}\n\n\tasync getUserNotificacions(): Promise<UserNotificationInboxItem[]> {\n\t\tconst items = await firstValueFrom(this.notificationService.getUserNotificacions());\n\t\treturn items;\n\t}\n\n\tresetLocal(): void {\n\t\tthis.currentJobId = undefined;\n\t\tthis.setJobState({ status: \"pending\", processedCount: 0, totalCount: 0, processedNotificationsCount: 0, totalNotificationsCount: 0 });\n\t\tthis.dispatchErrorsMapSubject.next(new Map());\n\t}\n\n\tprivate async rehydrateActiveJobInternal(): Promise<void> {\n\t\tif (!this.featureCode || !this.origin) return;\n\n\t\tconst active = await firstValueFrom(this.jobService.getActiveJob(this.featureCode, this.origin));\n\n\t\tif (!active) {\n\t\t\tthis.currentJobId = undefined;\n\t\t\tthis.setJobState({ status: \"idle\", processedCount: 0, totalCount: 0, processedNotificationsCount: 0, totalNotificationsCount: 0 });\n\t\t\tthis.dispatchErrorsMapSubject.next(new Map());\n\t\t\treturn;\n\t\t}\n\n\t\tthis.currentJobId = active.jobId;\n\n\t\tthis.setJobState({\n\t\t\tjobId: active.jobId,\n\t\t\tstatus: (active.statusCode?.toLowerCase() as JobStatusCatalog) || \"running\",\n\t\t\tprocessedCount: active.processedCount ?? 0,\n\t\t\ttotalCount: active.totalCount ?? 0,\n\t\t\tprocessedNotificationsCount: active.processedNotificationsCount ?? 0,\n\t\t\ttotalNotificationsCount: active.totalNotificationsCount ?? 0,\n\t\t});\n\n\t\tconst recipients: NotificationRecipientSummaryResponse[] = await firstValueFrom(this.jobService.getRecipients(active.jobId));\n\t\tconst map = new Map<string, RecipientDispatchError>();\n\n\t\tfor (const r of recipients) {\n\t\t\tif (r.recipientId && r.statusCode === \"failed\") {\n\t\t\t\tmap.set(r.recipientId, {\n\t\t\t\t\trecipientId: r.recipientId,\n\t\t\t\t\tlastErrorMessage: r.lastErrorMessage ?? null,\n\t\t\t\t\tchannelCode: r.channelCode || undefined,\n\t\t\t\t\tstatusCode: r.statusCode,\n\t\t\t\t\tattempts: r.attempts,\n\t\t\t\t\tlastAttemptAt: r.lastAttemptAt ?? null,\n\t\t\t\t\tuserId: r.userId ?? null,\n\t\t\t\t\tclientId: r.clientId ?? null,\n\t\t\t\t\tgroupId: r.groupId ?? null,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tthis.dispatchErrorsMapSubject.next(map);\n\n\t\tawait this.subscribeToJob(active.jobId);\n\t}\n\n\tprivate async subscribeToJob(jobId: string): Promise<void> {\n\t\tif (this.subscribedJobId && this.subscribedJobId !== jobId) {\n\t\t\tawait this.signalR.leaveScope(\"job\", this.subscribedJobId);\n\t\t\tawait this.signalR.leaveScope(\"callBack\", this.subscribedJobId);\n\t\t}\n\n\t\tthis.subscribedJobId = jobId;\n\n\t\tawait this.signalR.joinScope(\"job\", jobId);\n\t\tawait this.signalR.joinScope(\"callBack\", jobId);\n\t}\n\n\tprivate onNotificationSend(update: RecipientNotification): void {\n\t\t// Enrutado por userId para campana/inbox\n\t\tif (update.userId) {\n\t\t\tthis.userInboxSubjects.get(update.userId)?.next(update);\n\t\t}\n\t}\n\n\tprivate onJobProgress(update: RecipientProgressNotification): void {\n\t\t// Enrutado por jobId para UIs multi-job\n\t\tif (update.jobId) {\n\t\t\tthis.jobProgressSubjects.get(update.jobId)?.next(update);\n\t\t}\n\n\t\t// Lógica existente: solo aplica al job \"actual\" (feature/origin)\n\t\tif (!this.currentJobId || update.jobId !== this.currentJobId) return;\n\n\t\tif (update.recipientId) {\n\t\t\tconst current = this.dispatchErrorsMapSubject.value;\n\t\t\tconst next = new Map(current);\n\n\t\t\tif ((update.jobStatusCode ?? \"\").toLowerCase() === \"failed\") {\n\t\t\t\tnext.set(update.recipientId, {\n\t\t\t\t\trecipientId: update.recipientId,\n\t\t\t\t\tlastErrorMessage: update.lastErrorMessage ?? null,\n\n\t\t\t\t\tnotificationId: update.notificationId,\n\t\t\t\t\tjobId: update.jobId ?? null,\n\n\t\t\t\t\tchannelCode: update.channelCode,\n\t\t\t\t\tstatusCode: update.jobStatusCode,\n\n\t\t\t\t\tattempts: update.attempts,\n\t\t\t\t\tlastAttemptAt: update.lastAttemptAt ?? null,\n\n\t\t\t\t\tuserId: update.userId ?? null,\n\t\t\t\t\tclientId: update.clientId ?? null,\n\t\t\t\t\tgroupId: update.groupId ?? null,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tnext.delete(update.recipientId);\n\t\t\t}\n\n\t\t\tthis.dispatchErrorsMapSubject.next(next);\n\t\t}\n\n\t\tif (typeof update.jobProcessedCount === \"number\" && typeof update.jobTotalCount === \"number\") {\n\t\t\tthis.setJobState({\n\t\t\t\tjobId: update.jobId,\n\t\t\t\tstatus: update.jobStatusCode?.toLowerCase() as JobStatusCatalog,\n\t\t\t\tprocessedCount: update.jobProcessedCount,\n\t\t\t\ttotalCount: update.jobTotalCount,\n\t\t\t\tprocessedNotificationsCount: update.jobProcessedNotificationsCount,\n\t\t\t\ttotalNotificationsCount: update.jobTotalNotificationsCount,\n\t\t\t});\n\t\t}\n\n\t\tif (update.jobStatusCode?.toLowerCase() === \"completed\") {\n\t\t\tthis.setJobState({\n\t\t\t\tjobId: this.jobStateSubject.value.jobId,\n\t\t\t\tstatus: this.jobStateSubject.value.status,\n\t\t\t\tprocessedCount: this.jobStateSubject.value.processedCount,\n\t\t\t\ttotalCount: this.jobStateSubject.value.totalCount,\n\t\t\t\tprocessedNotificationsCount: this.jobStateSubject.value.processedNotificationsCount,\n\t\t\t\ttotalNotificationsCount: this.jobStateSubject.value.totalNotificationsCount,\n\t\t\t});\n\t\t} else if (this.jobStateSubject.value.status === \"pending\") {\n\t\t\tthis.setJobState({ ...this.jobStateSubject.value, status: \"pending\" });\n\t\t} else if (this.jobStateSubject.value.status === \"running\") {\n\t\t\tthis.setJobState({ ...this.jobStateSubject.value, status: \"running\" });\n\t\t}\n\t}\n\n\tprivate onCallbackResult(update: CallbackExecutionResult): void {\n\t\tthis.callbackRawSubject.next(update);\n\t}\n\n\tprivate setJobState(state: JobState): void {\n\t\tthis.jobStateSubject.next({\n\t\t\tjobId: state.jobId,\n\t\t\tstatus: state.status,\n\t\t\tprocessedCount: state.processedCount,\n\t\t\ttotalCount: state.totalCount,\n\t\t\tprocessedNotificationsCount: state.processedNotificationsCount,\n\t\t\ttotalNotificationsCount: state.totalNotificationsCount,\n\t\t});\n\t}\n}\n","//Pipes\nexport * from \"./lib/pipes/term.pipes\";\nexport * from \"./lib/pipes/amount.pipe\";\nexport * from \"./lib/pipes/truncate.pipe\";\n//Constants\nexport * from \"./lib/constants/cookieConfiguration.constants\";\nexport * from \"./lib/constants/color.constants\";\nexport * from \"./lib/constants/date-mode-options.constants\";\n//Interceptors\nexport * from \"./lib/interceptor/error.interceptor\";\nexport * from \"./lib/interceptor/responseHeaders.interceptor\";\n//Enums\nexport * from \"./lib/enums/sort-order.enum\";\nexport * from \"./lib/enums/alert-type.enum\";\n//Guards\nexport * from \"./lib/guards/PageRootChildGuard\";\n//Components\nexport * from \"./lib/components/spinner/spinner.component\";\nexport * from \"./lib/components/table/table.component\";\nexport * from \"./lib/components/table/column.component\";\nexport * from \"./lib/components/table/model/search.model\";\nexport * from \"./lib/components/table/model/sort.model\";\nexport * from \"./lib/components/tree-table/tree-table.component\";\nexport * from \"./lib/components/tree-table/column.component\";\nexport * from \"./lib/components/matrix-table/matrix-table.component\";\nexport * from \"./lib/components/matrix-table/column.component\";\nexport * from \"./lib/components/actions-menu/actions-menu.component\";\nexport * from \"./lib/components/actions-menu/action.directive\";\nexport * from \"./lib/components/filter-chips/filter-chips.component\";\nexport * from \"./lib/components/filters/filters.component\";\nexport * from \"./lib/components/search/search.component\";\nexport * from \"./lib/components/search/model/search.model\";\nexport * from \"./lib/components/paginator/paginator.component\";\nexport * from \"./lib/components/modal-dialog/modal-dialog.component\";\nexport * from \"./lib/components/button-split/button-split.component\";\nexport * from \"./lib/components/button-split/itemsplit.directive\";\nexport * from \"./lib/components/record-per-page/record-per-page.component\";\nexport * from \"./lib/components/record-per-page/model/properties.model\";\nexport * from \"./lib/components/sorting/sorting.component\";\nexport * from \"./lib/components/sorting/model/cascade-filter\";\nexport * from \"./lib/components/sorting/model/order.constants\";\nexport * from \"./lib/components/popover/popover.component\";\nexport * from \"./lib/components/popover/model/popover-information.model\";\nexport * from \"./lib/components/echart/echart.component\";\nexport * from \"./lib/components/template-menu/template-menu.component\";\nexport * from \"./lib/components/multi-select/multi-select.component\";\nexport * from \"./lib/components/datepicker/datepicker.component\";\nexport * from \"./lib/components/datepicker/datepicker-button-types.constants\";\nexport * from \"./lib/components/skeleton/skeleton.component\";\nexport * from \"./lib/components/skeleton-table/skeleton-table.component\";\nexport * from \"./lib/components/skeleton-chart/skeleton-chart.component\";\nexport * from \"./lib/components/skeleton-chart/data.directive\";\nexport * from \"./lib/components/table-fetch/table-fetch.component\";\nexport * from \"./lib/components/table-fetch/model/query.model\";\nexport * from \"./lib/components/intelica-alert/intelica-alert.component\";\nexport * from \"./lib/components/add-favorites/add-favorites.component\";\nexport * from \"./lib/components/context-selector/context-selector.component\";\nexport * from \"./lib/components/context-selector/context-selector.dto\";\nexport * from \"./lib/components/setsesioninformation/setsesioninformation.component\";\nexport * from \"./lib/components/bread-crumb/bread-crumb.component\";\nexport * from \"./lib/components/title/title.component\";\n//Directives\nexport * from \"./lib/directives/filters/checkbox-filter.directive\";\nexport * from \"./lib/directives/filters/date-filter.directive\";\nexport * from \"./lib/directives/filters/select-detail-filter.directive\";\nexport * from \"./lib/directives/filters/select-filter.directive\";\nexport * from \"./lib/directives/filters/template.directive\";\nexport * from \"./lib/directives/filters/text-area-filter.directive\";\nexport * from \"./lib/directives/filters/text-filter.directive\";\nexport * from \"./lib/directives/filters/text-range-filter.directive\";\nexport * from \"./lib/directives/table/cell-checkbox.directive\";\n\n//Models\nexport * from \"./lib/model/filter.model\";\nexport * from \"./lib/model/alert.model\"; // includes ALERT_ICON_OVERRIDES token\nexport * from \"./lib/model/pageInformation.model\";\n\n//Services\nexport * from \"./lib/services/htmlToExcel.service\";\nexport * from \"./lib/services/shared.service\";\nexport * from \"./lib/services/config.service\";\nexport * from \"./lib/services/spinner.service\";\nexport * from \"./lib/services/sweet-alert.service\";\nexport * from \"./lib/services/alert.service\";\nexport * from \"./lib/services/globalTerm.service\";\nexport * from \"./lib/services/term.service\";\nexport * from \"./lib/services/globalFeatureFlag.service\";\nexport * from \"./lib/services/featureFlag.service\";\nexport * from \"./lib/services/language.service\";\nexport * from \"./lib/services/echart.service\";\nexport * from \"./lib/services/profile.service\";\nexport * from \"./lib/services/skeleton.service\";\nexport * from \"./lib/services/element.service\";\nexport * from \"./lib/services/intelicaSession.service\";\nexport * from \"./lib/services/globalMenu.service\";\nexport * from \"./lib/services/globalFavorite.service\";\nexport * from \"./lib/services/request-cache.service\";\nexport * from \"./lib/services/googleTaskManager.service\";\nexport * from \"./lib/services/shared\";\n//Funcions\nexport * from \"./lib/functions/compareByField\";\nexport * from \"./lib/functions/encryptRSA\";\nexport * from \"./lib/functions/inputValidation\";\nexport * from \"./lib/functions/decryptRSA\";\nexport * from \"./lib/functions/cookie\";\n\n//Notification\nexport * from \"./lib/notification/dto/job-state.dto\";\nexport * from \"./lib/notification/dto/notification-catalog.dto\";\nexport * from \"./lib/notification/dto/notification-draft.dto\";\nexport * from \"./lib/notification/dto/notification-inbox-response.dto\";\nexport * from \"./lib/notification/dto/notification-message-response.dto\";\nexport * from \"./lib/notification/dto/notification-progress-message-response.dto\";\nexport * from \"./lib/notification/dto/notification-callback-message-response.dto\";\nexport * from \"./lib/notification/dto/notification-request.dto\";\nexport * from \"./lib/notification/dto/notification-response.dto\";\nexport * from \"./lib/notification/dto/recipient-dispatch-error.dto\";\nexport * from \"./lib/notification/notification.service\";\nexport * from \"./lib/notification/notification-job.service\";\nexport * from \"./lib/notification/notification-signalr.service\";\nexport * from \"./lib/notification/notificacion-orchestrator.service\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FeatureFlagService","i6","i7","i1","i2","i3","i4","i1.TermPipe","i1.FilterTypeEnum","i8","i5","tap","i1.TableComponent","catchError","i1.NotificationJobService","i2.NotificationService","i3.NotificationSignalRService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"intelica-library-components.mjs","sources":["../../../projects/intelica-library-components/src/lib/functions/cookie.ts","../../../projects/intelica-library-components/src/lib/services/googleTaskManager.service.ts","../../../projects/intelica-library-components/src/lib/services/config.service.ts","../../../projects/intelica-library-components/src/lib/services/term.service.ts","../../../projects/intelica-library-components/src/lib/services/globalTerm.service.ts","../../../projects/intelica-library-components/src/lib/pipes/term.pipes.ts","../../../projects/intelica-library-components/src/lib/pipes/amount.pipe.ts","../../../projects/intelica-library-components/src/lib/pipes/truncate.pipe.ts","../../../projects/intelica-library-components/src/lib/constants/cookieConfiguration.constants.ts","../../../projects/intelica-library-components/src/lib/constants/color.constants.ts","../../../projects/intelica-library-components/src/lib/constants/date-mode-options.constants.ts","../../../projects/intelica-library-components/src/lib/services/featureFlag.service.ts","../../../projects/intelica-library-components/src/lib/services/globalFeatureFlag.service.ts","../../../projects/intelica-library-components/src/lib/services/sweet-alert.service.ts","../../../projects/intelica-library-components/src/lib/services/spinner.service.ts","../../../projects/intelica-library-components/src/lib/interceptor/error.interceptor.ts","../../../projects/intelica-library-components/src/lib/interceptor/responseHeaders.interceptor.ts","../../../projects/intelica-library-components/src/lib/enums/sort-order.enum.ts","../../../projects/intelica-library-components/src/lib/enums/alert-type.enum.ts","../../../projects/intelica-library-components/src/lib/guards/PageRootChildGuard.ts","../../../projects/intelica-library-components/src/lib/components/spinner/spinner.component.ts","../../../projects/intelica-library-components/src/lib/components/spinner/spinner.component.html","../../../projects/intelica-library-components/src/lib/pipes/formatCell.pipe.ts","../../../projects/intelica-library-components/src/lib/constants/format-date.constants.ts","../../../projects/intelica-library-components/src/lib/services/shared.service.ts","../../../projects/intelica-library-components/src/lib/components/table/column.component.ts","../../../projects/intelica-library-components/src/lib/components/table/table.component.ts","../../../projects/intelica-library-components/src/lib/components/table/table.component.html","../../../projects/intelica-library-components/src/lib/directives/positive-number.directive.ts","../../../projects/intelica-library-components/src/lib/components/paginator/paginator.component.ts","../../../projects/intelica-library-components/src/lib/components/paginator/paginator.component.html","../../../projects/intelica-library-components/src/lib/components/search/enums/search.enum.ts","../../../projects/intelica-library-components/src/lib/components/search/search.component.ts","../../../projects/intelica-library-components/src/lib/components/search/search.component.html","../../../projects/intelica-library-components/src/lib/components/tree-table/column.component.ts","../../../projects/intelica-library-components/src/lib/components/tree-table/tree-table.component.ts","../../../projects/intelica-library-components/src/lib/components/tree-table/tree-table.component.html","../../../projects/intelica-library-components/src/lib/components/matrix-table/column.component.ts","../../../projects/intelica-library-components/src/lib/components/matrix-table/matrix-table.component.ts","../../../projects/intelica-library-components/src/lib/components/matrix-table/matrix-table.component.html","../../../projects/intelica-library-components/src/lib/components/actions-menu/action.directive.ts","../../../projects/intelica-library-components/src/lib/components/actions-menu/actions-menu.component.ts","../../../projects/intelica-library-components/src/lib/components/actions-menu/actions-menu.component.html","../../../projects/intelica-library-components/src/lib/components/filter-chips/filter-chips.component.ts","../../../projects/intelica-library-components/src/lib/components/filter-chips/filter-chips.component.html","../../../projects/intelica-library-components/src/lib/enums/filter-type.enum.ts","../../../projects/intelica-library-components/src/lib/directives/filters/filter.directive.ts","../../../projects/intelica-library-components/src/lib/components/multi-select/multi-select.component.ts","../../../projects/intelica-library-components/src/lib/components/multi-select/multi-select.component.html","../../../projects/intelica-library-components/src/lib/components/filters/filters.component.ts","../../../projects/intelica-library-components/src/lib/components/filters/filters.component.html","../../../projects/intelica-library-components/src/lib/components/modal-dialog/modal-dialog.component.ts","../../../projects/intelica-library-components/src/lib/components/modal-dialog/modal-dialog.component.html","../../../projects/intelica-library-components/src/lib/components/button-split/itemsplit.directive.ts","../../../projects/intelica-library-components/src/lib/components/button-split/button-split.component.ts","../../../projects/intelica-library-components/src/lib/components/button-split/button-split.component.html","../../../projects/intelica-library-components/src/lib/components/record-per-page/record-per-page.component.ts","../../../projects/intelica-library-components/src/lib/components/record-per-page/record-per-page.component.html","../../../projects/intelica-library-components/src/lib/components/sorting/model/order.constants.ts","../../../projects/intelica-library-components/src/lib/components/sorting/sorting.component.ts","../../../projects/intelica-library-components/src/lib/components/sorting/sorting.component.html","../../../projects/intelica-library-components/src/lib/components/popover/popover.component.ts","../../../projects/intelica-library-components/src/lib/components/popover/popover.component.html","../../../projects/intelica-library-components/src/lib/components/echart/echart.component.ts","../../../projects/intelica-library-components/src/lib/components/echart/echart.component.html","../../../projects/intelica-library-components/src/lib/components/template-menu/template-menu.component.ts","../../../projects/intelica-library-components/src/lib/components/template-menu/template-menu.component.html","../../../projects/intelica-library-components/src/lib/components/datepicker/datepicker-button-types.constants.ts","../../../projects/intelica-library-components/src/lib/components/datepicker/datepicker.component.ts","../../../projects/intelica-library-components/src/lib/components/datepicker/datepicker.component.html","../../../projects/intelica-library-components/src/lib/services/skeleton.service.ts","../../../projects/intelica-library-components/src/lib/components/skeleton/skeleton.component.ts","../../../projects/intelica-library-components/src/lib/components/skeleton/skeleton.component.html","../../../projects/intelica-library-components/src/lib/components/skeleton-table/skeleton-table.component.ts","../../../projects/intelica-library-components/src/lib/components/skeleton-table/skeleton-table.component.html","../../../projects/intelica-library-components/src/lib/components/skeleton-chart/data.directive.ts","../../../projects/intelica-library-components/src/lib/components/skeleton-chart/skeleton-chart.component.ts","../../../projects/intelica-library-components/src/lib/components/skeleton-chart/skeleton-chart.component.html","../../../projects/intelica-library-components/src/lib/components/table-fetch/table-fetch.component.ts","../../../projects/intelica-library-components/src/lib/components/table-fetch/table-fetch.component.html","../../../projects/intelica-library-components/src/lib/components/intelica-alert/intelica-alert.component.ts","../../../projects/intelica-library-components/src/lib/components/intelica-alert/intelica-alert.component.html","../../../projects/intelica-library-components/src/lib/services/globalFavorite.service.ts","../../../projects/intelica-library-components/src/lib/components/add-favorites/add-favorites.service.ts","../../../projects/intelica-library-components/src/lib/components/add-favorites/add-favorites.component.ts","../../../projects/intelica-library-components/src/lib/components/add-favorites/add-favorites.component.html","../../../projects/intelica-library-components/src/lib/components/context-selector/context-selector.component.ts","../../../projects/intelica-library-components/src/lib/components/context-selector/context-selector.component.html","../../../projects/intelica-library-components/src/lib/components/setsesioninformation/setsesioninformation.component.ts","../../../projects/intelica-library-components/src/lib/components/bread-crumb/bread-crumb.component.ts","../../../projects/intelica-library-components/src/lib/components/bread-crumb/bread-crumb.component.html","../../../projects/intelica-library-components/src/lib/components/title/title.component.ts","../../../projects/intelica-library-components/src/lib/components/title/title.component.html","../../../projects/intelica-library-components/src/lib/services/shared.ts","../../../projects/intelica-library-components/src/lib/components/dashboard-qs/dashboard-qs.component.ts","../../../projects/intelica-library-components/src/lib/components/dashboard-qs/dashboard-qs.component.html","../../../projects/intelica-library-components/src/lib/directives/filters/checkbox-filter.directive.ts","../../../projects/intelica-library-components/src/lib/directives/filters/date-filter.directive.ts","../../../projects/intelica-library-components/src/lib/directives/filters/select-detail-filter.directive.ts","../../../projects/intelica-library-components/src/lib/directives/filters/select-filter.directive.ts","../../../projects/intelica-library-components/src/lib/directives/filters/template.directive.ts","../../../projects/intelica-library-components/src/lib/directives/filters/text-area-filter.directive.ts","../../../projects/intelica-library-components/src/lib/directives/filters/text-filter.directive.ts","../../../projects/intelica-library-components/src/lib/directives/filters/text-range-filter.directive.ts","../../../projects/intelica-library-components/src/lib/directives/table/cell-checkbox.directive.ts","../../../projects/intelica-library-components/src/lib/model/alert.model.ts","../../../projects/intelica-library-components/src/lib/model/pageInformation.model.ts","../../../projects/intelica-library-components/src/lib/services/htmlToExcel.service.ts","../../../projects/intelica-library-components/src/lib/services/alert.service.ts","../../../projects/intelica-library-components/src/lib/services/language.service.ts","../../../projects/intelica-library-components/src/lib/functions/echart.util.ts","../../../projects/intelica-library-components/src/lib/services/echart.service.ts","../../../projects/intelica-library-components/src/lib/services/authentication.service.ts","../../../projects/intelica-library-components/src/lib/functions/decryptRSA.ts","../../../projects/intelica-library-components/src/lib/services/profile.service.ts","../../../projects/intelica-library-components/src/lib/services/pageElement.service.ts","../../../projects/intelica-library-components/src/lib/services/element.service.ts","../../../projects/intelica-library-components/src/lib/services/intelicaSession.service.ts","../../../projects/intelica-library-components/src/lib/services/globalMenu.service.ts","../../../projects/intelica-library-components/src/lib/services/request-cache.service.ts","../../../projects/intelica-library-components/src/lib/functions/compareByField.ts","../../../projects/intelica-library-components/src/lib/functions/encryptRSA.ts","../../../projects/intelica-library-components/src/lib/functions/inputValidation.ts","../../../projects/intelica-library-components/src/lib/notification/dto/recipient-dispatch-error.dto.ts","../../../projects/intelica-library-components/src/lib/notification/notification.service.ts","../../../projects/intelica-library-components/src/lib/notification/notification-job.service.ts","../../../projects/intelica-library-components/src/lib/notification/notification-signalr.service.ts","../../../projects/intelica-library-components/src/lib/notification/notificacion-orchestrator.service.ts","../../../projects/intelica-library-components/src/public-api.ts","../../../projects/intelica-library-components/src/intelica-library-components.ts"],"sourcesContent":["import { CookieAttributes } from \"../constants/cookieConfiguration.constants\";\nexport function GetCookieAttributes(environment: string): CookieAttributes {\n\tconst domain = window.location.hostname\n\t\t.split(\".\")\n\t\t.slice(environment == \"main\" ? -2 : -3)\n\t\t.join(\".\");\n\tconst secure = !domain.includes(\"localhost\");\n\treturn { domain: domain, path: \"/\", secure: secure };\n}\n","import { Injectable } from \"@angular/core\";\n@Injectable({ providedIn: \"root\" })\nexport class GoogleTaskManagerService {\n loadGTM(id: string): void {\n const w = window as any;\n w[\"dataLayer\"] = w[\"dataLayer\"] || [];\n w[\"dataLayer\"].push({ \"gtm.start\": new Date().getTime(), event: \"gtm.js\" });\n const script = document.createElement(\"script\");\n script.async = true;\n script.src = `https://www.googletagmanager.com/gtm.js?id=${id}`;\n document.head.insertBefore(script, document.head.firstChild);\n }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { inject, Injectable } from \"@angular/core\";\nimport { BehaviorSubject } from \"rxjs\";\nimport { Observable } from \"rxjs/internal/Observable\";\nimport { getCookie } from \"typescript-cookie\";\nimport { environment } from \"../dto/environment\";\nimport { SessionInformation } from \"../dto/sessionInformation\";\nimport { GoogleTaskManagerService } from \"./googleTaskManager.service\";\n@Injectable({ providedIn: \"root\" })\nexport class ConfigService {\n\tprivate readonly Http = inject(HttpClient);\n\tprivate readonly googleTaskManagerService = inject(GoogleTaskManagerService);\n\tenvironment?: environment;\n\tSessionInformation: SessionInformation | null = null;\n\tprivate readonly userDataSubject = new BehaviorSubject<string>(\"\");\n\tpublic userData$: Observable<string> = this.userDataSubject.asObservable();\n\tasync init() {\n\t\tconst environment = `${window.location.protocol}//${window.location.hostname}${window.location.hostname === \"localhost\" ? `:${window.location.port}` : \"\"}/environment/environment.json`;\n\t\tif (getCookie(\"data\") != undefined) this.SessionInformation = JSON.parse(getCookie(\"data\") ?? \"\");\n\t\tthis.environment = await this.Http.get<environment>(environment).toPromise();\n\t\tif (this.environment?.environment === \"development\" && this.environment?.gtmId) this.googleTaskManagerService.loadGTM(this.environment.gtmId);\n\t}\n\tSetSessionInformation() {\n\t\tthis.SessionInformation = JSON.parse(getCookie(\"data\") ?? \"\");\n\t}\n\tsetUserData(userData: string): void {\n\t\tthis.userDataSubject.next(userData);\n\t}\n\tgetUserData(): string {\n\t\treturn this.userDataSubject.value;\n\t}\n}\nexport function InitializeConfigService(confg: ConfigService) {\n\treturn () => confg.init();\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { inject, Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { TermPageResponse } from \"../dto/term\";\nimport { ConfigService } from \"./config.service\";\n@Injectable({ providedIn: \"root\" })\nexport class TermService {\n\tprivate readonly _http = inject(HttpClient);\n\tprivate readonly _config = inject(ConfigService);\n\tGetTerms(languageCode: string, pageRoot: string): Observable<TermPageResponse[]> {\n\t\treturn this._http.get<TermPageResponse[]>(`${this._config.environment?.securityPath}/Term/ignore/page/${pageRoot}/language/${languageCode}`);\n\t}\n}\n","import { inject, Injectable, signal } from \"@angular/core\";\nimport { setCookie } from \"typescript-cookie\";\nimport { TermPageResponse } from \"../dto/term\";\nimport { GetCookieAttributes } from \"../functions/cookie\";\nimport { ConfigService } from \"./config.service\";\nimport { TermService } from \"./term.service\";\n@Injectable({ providedIn: \"root\" })\nexport class GlobalTermService {\n\tterms: TermPageResponse[] = [];\n\tpublic languageCode: string = \"\";\n\tTermsReady = signal<boolean>(false);\n\tPageRoot: string = \"\";\n\tprivate readonly termService = inject(TermService);\n\tprivate readonly configService = inject(ConfigService);\n\tpublic readonly languageEvent = \"languagechange\";\n\tpublic readonly languageCookie = \"language\";\n\n\tprivate readonly onBrowserLanguageChange = (): void => {\n\t\tconst languageCode = this.getLanguageFromBrowser();\n\t\tsetCookie(this.languageCookie, languageCode, GetCookieAttributes(this.configService.environment?.environment ?? \"\"));\n\t\tthis.refreshTerms(languageCode);\n\t};\n\n\tconstructor() {\n\t\twindow.addEventListener(this.languageEvent, this.onBrowserLanguageChange);\n\t}\n\n\tInitialize(pageRoot: string): void {\n\t\tthis.PageRoot = pageRoot;\n\t\tconst languageCode = this.getLanguageFromBrowser();\n\t\tsetCookie(this.languageCookie, languageCode, GetCookieAttributes(this.configService.environment?.environment ?? \"\"));\n\t\tif (pageRoot == \"\") {\n\t\t\tthis.TermsReady.set(true);\n\t\t\treturn;\n\t\t}\n\t\tthis.refreshTerms(languageCode);\n\t}\n\n\tprivate refreshTerms(languageCode: string): void {\n\t\tif (this.PageRoot == \"\") {\n\t\t\tthis.TermsReady.set(true);\n\t\t\treturn;\n\t\t}\n\t\tthis.TermsReady.set(false);\n\t\tthis.termService.GetTerms(languageCode, this.PageRoot).subscribe(response => {\n\t\t\tthis.languageCode = languageCode;\n\t\t\tthis.terms = response;\n\t\t\tthis.TermsReady.set(true);\n\t\t});\n\t}\n\n\tprivate getLanguageFromBrowser(): string {\n\t\tconst browserLanguage = (navigator.language || \"en\").toLowerCase();\n\t\tif (browserLanguage.startsWith(\"es\")) return \"ES\";\n\t\tif (browserLanguage.startsWith(\"en\")) return \"EN\";\n\t\treturn \"EN\";\n\t}\n}\n","import { inject, Injectable, Pipe, PipeTransform } from \"@angular/core\";\nimport { GlobalTermService } from \"../services/globalTerm.service\";\n// import GlobalTermService from \"../services/globalTerm.service\";\n\n@Injectable({ providedIn: \"root\" })\n@Pipe({ name: \"term\" })\nexport class TermPipe implements PipeTransform {\n\tprivate readonly globalTermService = inject(GlobalTermService);\n\ttransform(termName: string, language: string = \"es\", mode: number = 1): string {\n\t\tconst terms = this.globalTermService?.terms ?? [];\n\t\tconst safeTermName = (termName ?? \"\").trim();\n\n\t\tif (!safeTermName) return \"-\";\n\n\t\tlet term = terms.find((x: any) => x?.termName === safeTermName)?.termValue ?? \"-\";\n\n\t\tif (typeof term !== \"string\") term = String(term ?? \"-\");\n\n\t\tif (mode === 2) return term.length ? term.substring(0, 1) : \"-\";\n\t\tif (mode === 3) return term.toUpperCase();\n\n\t\treturn term;\n\t}\n}\n","import { Injectable, Pipe, PipeTransform } from \"@angular/core\";\n@Injectable({\n\tprovidedIn: \"root\",\n})\n@Pipe({\n\tname: \"amount\",\n})\nexport class FormatAmountPipe implements PipeTransform {\n\ttransform(value: number | string | null | undefined, shortFormat: boolean = false, decimalPlaces: number = 2, validNegative: boolean = false): string {\n\t\tif (value === null || value === undefined || value == 0) {\n\t\t\treturn \"-\";\n\t\t}\n\n\t\tconst numericValue = typeof value === \"string\" ? Number.parseFloat(value) : value;\n\n\t\tif (Number.isNaN(numericValue)) {\n\t\t\treturn \"-\";\n\t\t}\n\n\t\tlet formattedValue: string;\n\n\t\tif (shortFormat) {\n\t\t\tformattedValue = this.getShortFormat(numericValue, decimalPlaces);\n\t\t} else {\n\t\t\tformattedValue = this.formatWithThousandSeparators(numericValue, decimalPlaces);\n\t\t}\n\n\t\tif (validNegative) {\n\t\t\tif (numericValue < 0) {\n\t\t\t\tformattedValue = `(${formattedValue})`;\n\t\t\t}\n\t\t}\n\n\t\treturn formattedValue;\n\t}\n\n\tprivate getShortFormat(value: number, decimalPlaces: number): string {\n\t\tconst absValue = Math.abs(value);\n\t\tconst suffixes = [\n\t\t\t{ limit: 1e12, suffix: \"T\" },\n\t\t\t{ limit: 1e9, suffix: \"B\" },\n\t\t\t{ limit: 1e6, suffix: \"M\" },\n\t\t\t{ limit: 1e3, suffix: \"K\" },\n\t\t];\n\n\t\tfor (const { limit, suffix } of suffixes) {\n\t\t\tif (absValue >= limit) {\n\t\t\t\treturn (absValue / limit).toFixed(decimalPlaces) + suffix;\n\t\t\t}\n\t\t}\n\n\t\treturn absValue.toFixed(decimalPlaces);\n\t}\n\n\tprivate formatWithThousandSeparators(value: number, decimalPlaces: number): string {\n\t\tconst absValue = Math.abs(value);\n\t\treturn new Intl.NumberFormat(\"en-US\", {\n\t\t\tminimumFractionDigits: decimalPlaces,\n\t\t\tmaximumFractionDigits: decimalPlaces,\n\t\t}).format(absValue);\n\t}\n}\n","import { Injectable, Pipe, PipeTransform } from \"@angular/core\";\n@Injectable({ providedIn: \"root\" })\n@Pipe({\n\tname: \"truncate\",\n})\nexport class TruncatePipe implements PipeTransform {\n\ttransform(value: any, size: number = 15, original = false): any {\n\t\tif (!value) return value;\n\t\tif (value.length <= size) return value;\n\t\tlet truncateString = value.substring(0, size);\n\t\treturn !original ? `${truncateString}...` : truncateString.toUpperCase();\n\t}\n}\n","const Domain = window.location.hostname.split(\".\").slice(-2).join(\".\");\nconst Secure = !Domain.includes(\"localhost\");\nexport const CookieAttributesGeneral: CookieAttributes = { domain: Domain, path: \"/\", secure: Secure };\nexport interface CookieAttributes {\n\tpath?: string;\n\tdomain?: string;\n\texpires?: number | Date;\n\tsameSite?: \"strict\" | \"Strict\" | \"lax\" | \"Lax\" | \"none\" | \"None\";\n\tsecure?: boolean;\n\t[property: string]: any;\n}\n","export const Color = {\n\tmastercard: \"#ff7f00\",\n\tvisa: \"#17375E\",\n\tamex: \"#348AD5\",\n\torange: \"#ff7f00\",\n\torangeDark: \"#CC4900\",\n\tskyBlue: \"#7490E2\",\n\tblue: \"#17375E\",\n\tgray: \"#BABECF\",\n\tgray3: \"#4E546F\",\n\tgray5: \"#e9e9e9\",\n};\n\nexport type ColorName = keyof typeof Color;\n\nexport const getColor = (name: ColorName): string => {\n\treturn Color[name];\n};\n","export const DateModeOptions = {\n Day: { value: \"day\", format: \"d/m/y\" },\n Month: { value: \"month\", format: \"m/y\" },\n Year: { value: \"year\", format: \"y\" },\n} as const;\n\nexport type DateMode =\n (typeof DateModeOptions)[keyof typeof DateModeOptions][\"value\"];\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable, inject } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { ConfigService } from \"./config.service\";\nimport { FeatureFlagPageRootResponse } from \"../dto/featureFlagResponses\";\n@Injectable({ providedIn: \"root\" })\nexport class FeatureFlagService {\n\tprivate readonly _http = inject(HttpClient);\n\tprivate readonly _configService = inject(ConfigService);\n\tGetByPageRoot(pageRoot: string): Observable<FeatureFlagPageRootResponse[]> {\n\t\treturn this._http.get<FeatureFlagPageRootResponse[]>(`${this._configService.environment?.configurationPath}/FeatureFlag/${pageRoot}`);\n\t}\n}\n","import { Injectable, signal } from \"@angular/core\";\nimport { FeatureFlagService } from \"./featureFlag.service\";\nimport { FeatureFlagPageRootResponse } from \"../dto/featureFlagResponses\";\n@Injectable({ providedIn: \"root\" })\nexport class GlobalFeatureFlagService {\n\tprivate pageRoot: string = \"\";\n\tIsReady = signal<boolean>(false);\n\tFeatureFlagsSignal = signal<FeatureFlagPageRootResponse[]>([]);\n\n\tconstructor(private featureFlagDataService: FeatureFlagService) {}\n\tInitialize(pageRoot: string): void {\n\t\tthis.pageRoot = pageRoot;\n\t\tthis.IsReady.set(true);\n\t\t// this.featureFlagDataService.GetByPageRoot(pageRoot).subscribe(response => {\n\t\t// \t//\t\tthis.FeatureFlags = response;\n\t\t// \tthis.FeatureFlagsSignal.set(response);\n\t\t// \tthis.IsReady.set(true);\n\t\t// });\n\t}\n\tExists(featureFlagName: string): boolean {\n\t\treturn !(this.FeatureFlagsSignal().find(x => x.name == featureFlagName) == null);\n\t}\n\tRefresh(): void {\n\t\tthis.Initialize(this.pageRoot);\n\t}\n\tGetPageRoot(): string {\n\t\treturn this.pageRoot;\n\t}\n}\n","import { Injectable } from \"@angular/core\";\nimport Swal, { SweetAlertOptions, SweetAlertResult } from \"sweetalert2\";\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class SweetAlertService {\n\toptions: SweetAlertOptions = {\n\t\ttext: \"\",\n\t\tcustomClass: {\n\t\t\timage: \"image-class-custom\",\n\t\t\tcontainer: \"container-class-custom\",\n\t\t\tconfirmButton: \"confirm-class-custom\",\n\t\t\tcancelButton: \"cancel-class-custom\",\n\t\t},\n\t\tshowCloseButton: true,\n\t\tcloseButtonHtml: '<i class=\"fa fa-times\"></i>',\n\t\timageUrl: `${window.location.origin}/assets/images/logo-incontrol.svg`,\n\t\tshowCancelButton: false,\n\t\tconfirmButtonText: \"Ok\",\n\t\tcancelButtonText: \"\",\n\t\thtml: \"\",\n\t};\n\n\tmessageBox(message: string): Promise<SweetAlertResult<any>> {\n\t\tlet options = structuredClone(this.options);\n\t\toptions.showCancelButton = false;\n\t\toptions.text = message;\n\t\treturn Swal.fire(options);\n\t}\n\n\tmessageTextBox(message: string = \"\", swHtml: boolean = false) {\n\t\tlet options = structuredClone(this.options);\n\t\toptions.showCancelButton = false;\n\t\tif (!swHtml) options.text = message.length === 0 ? \"Something went wrong!\" : message;\n\t\telse options.html = message;\n\t\tSwal.fire(options);\n\t}\n\n\tconfirmBox(message: string, confirmButtonText: string, cancelButtonText: string, title?: string, html?: string, popupClass?: string): Promise<SweetAlertResult<any>> {\n\t\tlet options = structuredClone(this.options);\n\t\toptions.title = title ?? \"\";\n\t\toptions.showCancelButton = cancelButtonText == \"\" ? false : true;\n\t\toptions.text = message;\n\t\toptions.confirmButtonText = confirmButtonText;\n\t\toptions.cancelButtonText = cancelButtonText;\n\t\toptions.html = html;\n\t\tif (popupClass) {\n\t\t\toptions.customClass = {\n\t\t\t\tpopup: popupClass,\n\t\t\t};\n\t\t}\n\t\treturn Swal.fire(options);\n\t}\n\n\tmessageHTMLBox(title: string, html: string, confirmButtonText: string): Promise<SweetAlertResult<any>> {\n\t\tlet options = structuredClone(this.options);\n\t\toptions.showCancelButton = false;\n\t\toptions.title = title;\n\t\toptions.html = html;\n\t\toptions.confirmButtonText = confirmButtonText;\n\t\treturn Swal.fire(options);\n\t}\n}\n","import { Injectable, signal } from \"@angular/core\";\n@Injectable({ providedIn: \"root\" })\nexport class SpinnerService {\n\tisLoading = signal<boolean>(false);\n\tpublic hide() {\n\t\tthis.isLoading.set(false);\n\t}\n\tpublic show() {\n\t\tthis.isLoading.set(true);\n\t}\n}","import { HttpErrorResponse, HttpHeaders, HttpInterceptorFn } from \"@angular/common/http\";\nimport { inject } from \"@angular/core\";\nimport { catchError, throwError } from \"rxjs\";\nimport { getCookie } from \"typescript-cookie\";\nimport { GlobalFeatureFlagService } from \"../services/globalFeatureFlag.service\";\nimport { ConfigService } from \"../services/config.service\";\nimport { SweetAlertService } from \"../services/sweet-alert.service\";\nimport { SpinnerService } from \"../services/spinner.service\";\nexport const ErrorInterceptor: HttpInterceptorFn = (req, next) => {\n\tconst skip = req.headers.has(\"Skip-Interceptor\");\n\tif (skip) {\n\t\tconst cleanReq = req.clone({\n\t\t\theaders: req.headers.delete(\"Skip-Interceptor\"),\n\t\t});\n\t\treturn next(cleanReq);\n\t}\n\tconst commonFeatureFlagService = inject(GlobalFeatureFlagService);\n\tconst spinnerService = inject(SpinnerService);\n\tconst sweetAlertService = inject(SweetAlertService);\n\tconst configService: ConfigService = inject(ConfigService);\n\tconst HeaderSettings: { [name: string]: string | string[] } = {};\n\tconst authenticationClientID = configService.environment?.clientID ?? \"\";\n\tif (!req.url.includes(\"environment.json\")) {\n\t\tHeaderSettings[\"Accept\"] = \"application/json\";\n\t\tHeaderSettings[\"Content-Type\"] = \"application/json\";\n\t\tHeaderSettings[\"Authorization\"] = getCookie(\"token\") ?? \"\";\n\t\tHeaderSettings[\"RefreshToken\"] = getCookie(\"refreshToken\") ?? \"\";\n\t\tHeaderSettings[\"ClientID\"] = configService.environment?.clientID ?? \"\";\n\t\tHeaderSettings[\"PageRoot\"] = commonFeatureFlagService.GetPageRoot();\n\t\tHeaderSettings[\"LanguageCode\"] = getCookie(\"language\") ?? \"\";\n\t\tHeaderSettings[\"Environment\"] = configService.environment?.environment ?? \"\";\n\t\tHeaderSettings[\"Access\"] = authenticationClientID == \"\" ? \"\" : (getCookie(authenticationClientID) ?? \"\");\n\t}\n\tlet _request = req.clone({ headers: new HttpHeaders(HeaderSettings) });\n\treturn next(_request).pipe(catchError(handleErrorResponse));\n\tfunction handleErrorResponse(error: HttpErrorResponse) {\n\t\tconsole.log(error, \"error\", error.status);\n\t\tspinnerService.hide();\n\t\tconst authenticationLocation = `${configService.environment?.authenticationWeb}?callback=${window.location.href}&clientID=${configService.environment?.clientID}`;\n\t\tif (error.status == 503 || error.status == 0) sweetAlertService.messageBox(\"El servicio que se necesita consumir no esta activo o no responde.\");\n\t\telse if (error.status == 405) sweetAlertService.messageBox(\"Los parametros enviados al servicio no coinciden.\");\n\t\telse if (error.status == 404) sweetAlertService.messageBox(\"Recurso no encontrado.\");\n\t\telse if (error.status == 401) {\n\t\t\tsweetAlertService.messageBox(error.error.Error);\n\t\t\twindow.location.href = authenticationLocation;\n\t\t} else if (error.status == 403) {\n\t\t\tsweetAlertService.messageBox(error.error.Error);\n\t\t\twindow.location.href = window.location.origin;\n\t\t} else sweetAlertService.messageBox(error.error.Message);\n\t\treturn throwError(() => {\n\t\t\t(error.error, error.message);\n\t\t});\n\t}\n};\n","import { HttpInterceptorFn, HttpResponse } from \"@angular/common/http\";\nimport { tap } from \"rxjs/operators\";\nimport { setCookie } from \"typescript-cookie\";\nimport { CookieAttributesGeneral } from \"../constants/cookieConfiguration.constants\";\n\nexport const ResponseHeadersInterceptor: HttpInterceptorFn = (req, next) => {\n\treturn next(req).pipe(\n\t\ttap(event => {\n\t\t\tif (event instanceof HttpResponse) {\n\t\t\t\tconst Domain = window.location.hostname.split(\".\").slice(-2).join(\".\");\n\t\t\t\tconst Secure = !Domain.includes(\"localhost\");\n\t\t\t\tif (!Secure) {\n\t\t\t\t\tconst headers = event.headers;\n\t\t\t\t\tconst newToken = headers.get(\"TokenNew\");\n\t\t\t\t\tif (newToken != null && newToken != \"\") setCookie(\"token\", newToken, CookieAttributesGeneral);\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t);\n};\n","export enum TableSortOrder {\n Asc = 1,\n Desc = -1,\n}\n","/**\n * Enum representing the different types of alerts available in the system.\n * Each type corresponds to a specific visual style and semantic meaning.\n */\nexport enum AlertType {\n\t/** Warning alert - Yellow icon and title, used for cautionary messages */\n\tWARNING = \"warning\",\n\t/** Success alert - Green icon and title, used for successful operations */\n\tSUCCESS = \"success\",\n\t/** Error alert - Red icon and title, used for error messages */\n\tERROR = \"error\",\n}\n\n/**\n * Enum representing the button configuration modes for alerts.\n * Determines which buttons are displayed in the alert dialog.\n */\nexport enum AlertButtonMode {\n\t/** Only shows a single OK/Confirm button */\n\tOK_ONLY = \"ok_only\",\n\t/** Shows both Confirm and Cancel buttons */\n\tCONFIRM_CANCEL = \"confirm_cancel\",\n\t/** Shows only a Confirm button (without cancel) */\n\tCONFIRM_ONLY = \"confirm_only\",\n}\n","import { Injectable } from \"@angular/core\";\nimport { ActivatedRouteSnapshot, CanActivateChild, RouterStateSnapshot } from \"@angular/router\";\n\n@Injectable({ providedIn: \"root\" })\nexport class PageRootChildGuard implements CanActivateChild {\n\tcanActivateChild(child: ActivatedRouteSnapshot, parent: RouterStateSnapshot): boolean {\n\t\tconst parentData = child.parent?.data;\n\t\tif (parentData?.[\"pageRoot\"]) {\n\t\t\tchild.data = {\n\t\t\t\t...child.data,\n\t\t\t\tpageRoot: parentData[\"pageRoot\"],\n\t\t\t};\n\t\t}\n\t\treturn true;\n\t}\n}\n","import { Component, inject } from \"@angular/core\";\nimport { SpinnerService } from \"../../services/spinner.service\";\n@Component({\n\tselector: \"app-spinner\",\n\timports: [],\n\ttemplateUrl: \"./spinner.component.html\",\n\tstyleUrl: \"./spinner.component.css\",\n})\nexport class SpinnerComponent {\n\tprivate readonly spinerService = inject(SpinnerService);\n\tisLoading = this.spinerService.isLoading;\n\tLoadingLogo: string = `${window.location.origin}/assets/images/loading_intelica.gif`;\n}\n","<div class=\"ptLoading\">\n\t<span class=\"ptLoading__svg\">\n\t\t@if (isLoading()) {\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\txmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\t\t\t\tpreserveAspectRatio=\"xMidYMid meet\"\n\t\t\t\twidth=\"540\"\n\t\t\t\theight=\"300\"\n\t\t\t\tviewBox=\"0 0 540 300\"\n\t\t\t\tstyle=\"width: 100%; height: 100%\"\n\t\t\t>\n\t\t\t\t<defs>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_12_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"1\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.04;1\"\n\t\t\t\t\t\tvalues=\"1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0.167 0.167 0.667 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateMotion\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_12_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tkeyTimes=\"0;0.04;1\"\n\t\t\t\t\t\tpath=\"M173.5 300 C173.5,300 81.5,300 81.5,300 C81.5,300 81.5,300 81.5,300 \"\n\t\t\t\t\t\tkeyPoints=\"0;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.167 0.167 0 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_12_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"0.89062 0.89062\"\n\t\t\t\t\t\tto=\"0.89062 0.89062\"\n\t\t\t\t\t\ttype=\"scale\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"0.89062 0.89062;0.89062 0.89062\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_12_G_M\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"1\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.2333333;0.2333333;1\"\n\t\t\t\t\t\tvalues=\"1;1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0 0 0 0;0 0 0 0;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateMotion\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_11_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tkeyTimes=\"0;0.0733333;0.1066667;0.1333333;0.16;0.1866667;0.2;1\"\n\t\t\t\t\t\tpath=\"M300 300 C300,300 300,172 300,172 C300,172 300,347 300,347 C300,347 300,287 300,287 C300,287 300,306.5 300,306.5 C300,306.5 300,301.5 300,301.5 C300,301.5 300,300 300,300 C300,300 300,300 300,300 \"\n\t\t\t\t\t\tkeyPoints=\"0;0.33;0.78;0.93;0.98;1;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.333 0 0 1;0.167 0.167 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_11_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\tto=\"3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\ttype=\"scale\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"3.3000000000000003 3.3000000000000003;3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_11_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"-14.5 -14.5\"\n\t\t\t\t\t\tto=\"-14.5 -14.5\"\n\t\t\t\t\t\ttype=\"translate\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"-14.5 -14.5;-14.5 -14.5\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_11_G_M\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"1\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.2;0.2;1\"\n\t\t\t\t\t\tvalues=\"1;1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0 0 0 0;0 0 0 0;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateMotion\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_10_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tkeyTimes=\"0;0.2;0.2733333;0.3066667;0.3333333;0.36;0.3866667;0.4;1\"\n\t\t\t\t\t\tpath=\"M300 300 C300,300 300,300 300,300 C300,300 300,172 300,172 C300,172 300,347 300,347 C300,347 300,287 300,287 C300,287 300,306.5 300,306.5 C300,306.5 300,301.5 300,301.5 C300,301.5 300,300 300,300 C300,300 300,300 300,300 \"\n\t\t\t\t\t\tkeyPoints=\"0;0;0.33;0.78;0.93;0.98;1;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.333 0 0 1;0.333 0 0 1;0.167 0.167 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_10_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\tto=\"3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\ttype=\"scale\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"3.3000000000000003 3.3000000000000003;3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_10_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"-14.5 -14.5\"\n\t\t\t\t\t\tto=\"-14.5 -14.5\"\n\t\t\t\t\t\ttype=\"translate\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"-14.5 -14.5;-14.5 -14.5\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_10_G_M\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.2;0.2000007;0.4;0.4;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateMotion\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_9_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tkeyTimes=\"0;0.4;0.4733333;0.5066667;0.5333333;0.56;0.5866667;0.6;1\"\n\t\t\t\t\t\tpath=\"M300 300 C300,300 300,300 300,300 C300,300 300,172 300,172 C300,172 300,347 300,347 C300,347 300,287 300,287 C300,287 300,306.5 300,306.5 C300,306.5 300,301.5 300,301.5 C300,301.5 300,300 300,300 C300,300 300,300 300,300 \"\n\t\t\t\t\t\tkeyPoints=\"0;0;0.33;0.78;0.93;0.98;1;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.333 0 0 1;0.333 0 0 1;0.167 0.167 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_9_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\tto=\"3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\ttype=\"scale\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"3.3000000000000003 3.3000000000000003;3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_9_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"-14.5 -14.5\"\n\t\t\t\t\t\tto=\"-14.5 -14.5\"\n\t\t\t\t\t\ttype=\"translate\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"-14.5 -14.5;-14.5 -14.5\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_9_G_M\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.4;0.4000007;0.6;0.6;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateMotion\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_8_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tkeyTimes=\"0;0.6;0.6733333;0.7066667;0.7333333;0.76;0.7866667;0.8;1\"\n\t\t\t\t\t\tpath=\"M300 300 C300,300 300,300 300,300 C300,300 300,172 300,172 C300,172 300,347 300,347 C300,347 300,287 300,287 C300,287 300,306.5 300,306.5 C300,306.5 300,301.5 300,301.5 C300,301.5 300,300 300,300 C300,300 300,300 300,300 \"\n\t\t\t\t\t\tkeyPoints=\"0;0;0.33;0.78;0.93;0.98;1;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.333 0 0 1;0.333 0 0 1;0.167 0.167 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_8_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\tto=\"3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\ttype=\"scale\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"3.3000000000000003 3.3000000000000003;3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_8_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"-14.5 -14.5\"\n\t\t\t\t\t\tto=\"-14.5 -14.5\"\n\t\t\t\t\t\ttype=\"translate\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"-14.5 -14.5;-14.5 -14.5\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_8_G_M\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.6;0.6000007;0.8;0.8;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateMotion\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_7_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tkeyTimes=\"0;0.8;0.8733333;0.9066667;0.9333333;0.96;0.9866667;1\"\n\t\t\t\t\t\tpath=\"M300 300 C300,300 300,300 300,300 C300,300 300,172 300,172 C300,172 300,347 300,347 C300,347 300,287 300,287 C300,287 300,306.5 300,306.5 C300,306.5 300,301.5 300,301.5 C300,301.5 300,300 300,300 \"\n\t\t\t\t\t\tkeyPoints=\"0;0;0.33;0.78;0.93;0.98;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.333 0 0 1;0.333 0 0 1;0.167 0.167 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1;0.333 0 0.667 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_7_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\tto=\"3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\ttype=\"scale\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"3.3000000000000003 3.3000000000000003;3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_7_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"-14.5 -14.5\"\n\t\t\t\t\t\tto=\"-14.5 -14.5\"\n\t\t\t\t\t\ttype=\"translate\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"-14.5 -14.5;-14.5 -14.5\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_7_G_M\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"1\"\n\t\t\t\t\t\tkeyTimes=\"0;0.8;0.8000007;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1\"\n\t\t\t\t\t\tkeySplines=\"0 0 0 0;0 0 0 0;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateMotion\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_6_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tpath=\"M300 300 C300,300 300,300 300,300 \"\n\t\t\t\t\t\tkeyPoints=\"0;1\"\n\t\t\t\t\t\tkeySplines=\"0.333 0 0 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_6_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\tto=\"3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\ttype=\"scale\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"3.3000000000000003 3.3000000000000003;3.3000000000000003 3.3000000000000003\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_6_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"-14.5 -14.5\"\n\t\t\t\t\t\tto=\"-14.5 -14.5\"\n\t\t\t\t\t\ttype=\"translate\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"-14.5 -14.5;-14.5 -14.5\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_6_G_M\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"0;0\"\n\t\t\t\t\t\tkeySplines=\"0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_5_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"1\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.2333333;0.2733333;1\"\n\t\t\t\t\t\tvalues=\"1;1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0.167 0.167 0.667 1;0.167 0.167 0.667 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateMotion\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_5_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tkeyTimes=\"0;0.08;0.2333333;0.2733333;1\"\n\t\t\t\t\t\tpath=\"M427 300 C427,300 173.5,300 173.5,300 C173.5,300 173.5,300 173.5,300 C173.5,300 81.5,300 81.5,300 C81.5,300 81.5,300 81.5,300 \"\n\t\t\t\t\t\tkeyPoints=\"0;0.73;0.73;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.167 0.167 0.667 1;0.167 0.167 0.833 0.833;0.167 0.167 0 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_5_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"0.89062 0.89062\"\n\t\t\t\t\t\tto=\"0.89062 0.89062\"\n\t\t\t\t\t\ttype=\"scale\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"0.89062 0.89062;0.89062 0.89062\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_5_G_M\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"1\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.28;0.28;1\"\n\t\t\t\t\t\tvalues=\"1;1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0 0 0 0;0 0 0 0;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_4_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.04;0.08;0.4666667;0.5066667;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0.333 0 0.833 0.833;0.333 0 0.833 0.833;0.167 0.167 0.833 0.833;0.167 0.167 0.667 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateMotion\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_4_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tkeyTimes=\"0;0.04;0.08;0.2333333;0.3133333;0.4666667;0.5066667;1\"\n\t\t\t\t\t\tpath=\"M498 300 C498,300 498,300 498,300 C498,300 427,300 427,300 C427,300 427,300 427,300 C427,300 173.5,300 173.5,300 C173.5,300 173.5,300 173.5,300 C173.5,300 81.5,300 81.5,300 C81.5,300 81.5,300 81.5,300 \"\n\t\t\t\t\t\tkeyPoints=\"0;0;0.17;0.17;0.78;0.78;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.167 0.167 0.667 1;0.167 0.167 0.667 1;0.167 0.167 0.833 0.833;0.167 0.167 0.667 1;0.167 0.167 0.833 0.833;0.167 0.167 0 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_4_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"0.89062 0.89062\"\n\t\t\t\t\t\tto=\"0.89062 0.89062\"\n\t\t\t\t\t\ttype=\"scale\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"0.89062 0.89062;0.89062 0.89062\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_4_G_M\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.04;0.0400007;0.5133333;0.5133333;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_3_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.2333333;0.2733333;0.66;0.7;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0.333 0 0.833 0.833;0.333 0 0.833 0.833;0.167 0.167 0.833 0.833;0.167 0.167 0.667 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateMotion\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_3_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tkeyTimes=\"0;0.2333333;0.2733333;0.4266667;0.5066667;0.66;0.7;1\"\n\t\t\t\t\t\tpath=\"M498 300 C498,300 498,300 498,300 C498,300 427,300 427,300 C427,300 427,300 427,300 C427,300 173.5,300 173.5,300 C173.5,300 173.5,300 173.5,300 C173.5,300 81.5,300 81.5,300 C81.5,300 81.5,300 81.5,300 \"\n\t\t\t\t\t\tkeyPoints=\"0;0;0.17;0.17;0.78;0.78;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.167 0.167 0.667 1;0.167 0.167 0.667 1;0.167 0.167 0.833 0.833;0.167 0.167 0.667 1;0.167 0.167 0.833 0.833;0.167 0.167 0 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_3_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"0.89062 0.89062\"\n\t\t\t\t\t\tto=\"0.89062 0.89062\"\n\t\t\t\t\t\ttype=\"scale\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"0.89062 0.89062;0.89062 0.89062\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_3_G_M\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.2333333;0.233334;0.7066667;0.7066667;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_2_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.4266667;0.4666667;0.8533333;0.8933333;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0.333 0 0.833 0.833;0.333 0 0.833 0.833;0.167 0.167 0.833 0.833;0.167 0.167 0.667 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateMotion\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_2_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tkeyTimes=\"0;0.4266667;0.4666667;0.62;0.7;0.8533333;0.8933333;1\"\n\t\t\t\t\t\tpath=\"M498 300 C498,300 498,300 498,300 C498,300 427,300 427,300 C427,300 427,300 427,300 C427,300 173.5,300 173.5,300 C173.5,300 173.5,300 173.5,300 C173.5,300 81.5,300 81.5,300 C81.5,300 81.5,300 81.5,300 \"\n\t\t\t\t\t\tkeyPoints=\"0;0;0.17;0.17;0.78;0.78;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.167 0.167 0.667 1;0.167 0.167 0.667 1;0.167 0.167 0.833 0.833;0.167 0.167 0.667 1;0.167 0.167 0.833 0.833;0.167 0.167 0 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_2_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"0.89062 0.89062\"\n\t\t\t\t\t\tto=\"0.89062 0.89062\"\n\t\t\t\t\t\ttype=\"scale\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"0.89062 0.89062;0.89062 0.89062\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_2_G_M\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"0\"\n\t\t\t\t\t\tkeyTimes=\"0;0.4266667;0.4266673;0.9;0.9;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1;0;0\"\n\t\t\t\t\t\tkeySplines=\"0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 0;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_1_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"1\"\n\t\t\t\t\t\tkeyTimes=\"0;0.62;0.66;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.333 0 0.833 0.833;0.333 0 0.833 0.833;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateMotion\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_1_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tkeyTimes=\"0;0.62;0.66;0.8133333;0.8933333;1\"\n\t\t\t\t\t\tpath=\"M498 300 C498,300 498,300 498,300 C498,300 427,300 427,300 C427,300 427,300 427,300 C427,300 173.5,300 173.5,300 C173.5,300 173.5,300 173.5,300 \"\n\t\t\t\t\t\tkeyPoints=\"0;0;0.22;0.22;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.167 0.167 0.667 1;0.167 0.167 0.667 1;0.167 0.167 0.833 0.833;0.167 0.167 0.667 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_1_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"0.89062 0.89062\"\n\t\t\t\t\t\tto=\"0.89062 0.89062\"\n\t\t\t\t\t\ttype=\"scale\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"0.89062 0.89062;0.89062 0.89062\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_1_G_M\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"1\"\n\t\t\t\t\t\tkeyTimes=\"0;0.62;0.6200007;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1\"\n\t\t\t\t\t\tkeySplines=\"0 0 0 0;0 0 0 0;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_0_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"1\"\n\t\t\t\t\t\tkeyTimes=\"0;0.8533333;0.8933333;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.333 0 0.833 0.833;0.333 0 0.833 0.833;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateMotion\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_0_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tkeyTimes=\"0;0.8533333;0.8933333;1\"\n\t\t\t\t\t\tpath=\"M498 300 C498,300 498,300 498,300 C498,300 427,300 427,300 C427,300 427,300 427,300 \"\n\t\t\t\t\t\tkeyPoints=\"0;0;1;1\"\n\t\t\t\t\t\tkeySplines=\"0.167 0.167 0.667 1;0.167 0.167 0.667 1;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animateTransform\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_0_G\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\t\tfrom=\"0.89062 0.89062\"\n\t\t\t\t\t\tto=\"0.89062 0.89062\"\n\t\t\t\t\t\ttype=\"scale\"\n\t\t\t\t\t\tadditive=\"sum\"\n\t\t\t\t\t\tkeyTimes=\"0;1\"\n\t\t\t\t\t\tvalues=\"0.89062 0.89062;0.89062 0.89062\"\n\t\t\t\t\t\tkeySplines=\"0 0 1 1\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate\n\t\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t\t\tdur=\"5s\"\n\t\t\t\t\t\tbegin=\"0s\"\n\t\t\t\t\t\txlink:href=\"#_R_G_L_0_G_L_0_G_M\"\n\t\t\t\t\t\tfill=\"freeze\"\n\t\t\t\t\t\tattributeName=\"opacity\"\n\t\t\t\t\t\tfrom=\"0\"\n\t\t\t\t\t\tto=\"1\"\n\t\t\t\t\t\tkeyTimes=\"0;0.8533333;0.853334;1\"\n\t\t\t\t\t\tvalues=\"0;0;1;1\"\n\t\t\t\t\t\tkeySplines=\"0 0 0 0;0 0 0 0;0 0 0 0\"\n\t\t\t\t\t\tcalcMode=\"spline\"\n\t\t\t\t\t/>\n\t\t\t\t\t<animate attributeType=\"XML\" attributeName=\"opacity\" dur=\"5s\" from=\"0\" to=\"1\" xlink:href=\"#time_group\" />\n\t\t\t\t</defs>\n\t\t\t\t<g id=\"_R_G\">\n\t\t\t\t\t<g id=\"_R_G_L_0_G\" transform=\" translate(270, 196) translate(-300, -300)\">\n\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_12_G_M\">\n\t\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_12_G\">\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_12_G_D_0_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M0 -30 C16.56,-30 30,-16.56 30,0 C30,16.56 16.56,30 0,30 C-16.56,30 -30,16.56 -30,0 C-30,-16.56 -16.56,-30 0,-30z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_11_G_M\">\n\t\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_11_G\">\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_11_G_D_0_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M3.63 23.8 C3.63,23.8 8.05,27.83 24.33,20.28 C24.33,20.28 26.42,16.28 26.42,16.28 C26.42,16.28 27,14.81 27,14.81 C27,14.81 16.7,22.26 5.84,19.04 C2.26,17.97 3.63,23.8 3.63,23.8z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_11_G_D_1_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M9.41 27.76 C9.41,27.76 14.46,29.73 21.79,25.65 C21.79,25.65 23.71,24.43 23.71,24.43 C23.71,24.43 24.71,23.23 24.71,23.23 C24.71,23.23 17.24,26.84 10.74,24.91 C8.59,24.28 9.41,27.76 9.41,27.76z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_11_G_D_2_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M0.09 15.87 C0.09,15.87 11.11,22.24 26.48,10.22 C26.48,10.22 24.78,5.86 24.78,5.86 C24.78,5.86 15.46,14.09 3.98,10.46 C0.1,9.23 0.09,15.87 0.09,15.87z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_11_G_D_3_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M2.09 6.86 C2.09,6.86 10.72,10.88 22.35,3.43 C22.35,3.43 18.54,1.51 18.54,1.51 C18.54,1.51 15.04,5.07 5.34,3.53 C5.34,3.53 2.09,6.86 2.09,6.86z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_11_G_D_4_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M23.39 3.26 C22.15,2.23 20.73,1.42 19.19,0.86 C16.82,2.31 13.88,3.87 10.5,5.21 C6.5,6.81 3.12,8.7 0.55,10.37 C0.19,11.62 0,12.94 0,14.31 C0,14.84 0.03,15.36 0.09,15.87 C2.76,13.92 7.09,11.14 12.63,8.94 C17.07,7.17 20.74,5.04 23.39,3.26 C23.39,3.26 23.39,3.26 23.39,3.26z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_11_G_D_5_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M16.12 0.11 C15.52,0.04 14.92,0 14.31,0 C9.14,0 4.61,2.74 2.09,6.85 C4.2,5.65 6.65,4.41 9.41,3.31 C11.9,2.32 14.15,1.21 16.12,0.11z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_11_G_D_6_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M28.01 18.42 C28.4,17.12 28.61,15.74 28.61,14.31 C28.61,13.97 28.6,13.63 28.58,13.3 C25.91,15.1 22.2,17.28 17.68,19.08 C12.45,21.16 8.31,23.74 5.61,25.67 C6.79,26.57 8.12,27.3 9.56,27.81 C11.97,26.32 14.96,24.71 18.43,23.33 C22.25,21.82 25.49,20.03 28.01,18.42z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_11_G_D_7_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M28.08 10.43 C27.52,8.42 26.53,6.6 25.22,5.06 C22.53,6.9 18.67,9.21 13.93,11.1 C7.84,13.52 3.22,16.63 0.65,18.58 C1.26,20.55 2.29,22.33 3.63,23.83 C6.31,21.88 10.6,19.16 16.06,16.98 C21.25,14.92 25.38,12.35 28.08,10.43 C28.08,10.43 28.08,10.43 28.08,10.43z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_11_G_D_8_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M19.61 25.03 C16.91,26.1 14.51,27.31 12.44,28.49 C13.05,28.57 13.67,28.61 14.31,28.61 C19.5,28.61 24.05,25.84 26.56,21.7 C24.54,22.84 22.21,24 19.61,25.03 C19.61,25.03 19.61,25.03 19.61,25.03z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_10_G_M\">\n\t\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_10_G\">\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_10_G_D_0_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M3.63 23.8 C3.63,23.8 8.05,27.83 24.33,20.28 C24.33,20.28 26.42,16.28 26.42,16.28 C26.42,16.28 27,14.81 27,14.81 C27,14.81 16.7,22.26 5.84,19.04 C2.26,17.97 3.63,23.8 3.63,23.8z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_10_G_D_1_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M9.41 27.76 C9.41,27.76 14.46,29.73 21.79,25.65 C21.79,25.65 23.71,24.43 23.71,24.43 C23.71,24.43 24.71,23.23 24.71,23.23 C24.71,23.23 17.24,26.84 10.74,24.91 C8.59,24.28 9.41,27.76 9.41,27.76z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_10_G_D_2_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M0.09 15.87 C0.09,15.87 11.11,22.24 26.48,10.22 C26.48,10.22 24.78,5.86 24.78,5.86 C24.78,5.86 15.46,14.09 3.98,10.46 C0.1,9.23 0.09,15.87 0.09,15.87z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_10_G_D_3_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M2.09 6.86 C2.09,6.86 10.72,10.88 22.35,3.43 C22.35,3.43 18.54,1.51 18.54,1.51 C18.54,1.51 15.04,5.07 5.34,3.53 C5.34,3.53 2.09,6.86 2.09,6.86z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_10_G_D_4_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M23.39 3.26 C22.15,2.23 20.73,1.42 19.19,0.86 C16.82,2.31 13.88,3.87 10.5,5.21 C6.5,6.81 3.12,8.7 0.55,10.37 C0.19,11.62 0,12.94 0,14.31 C0,14.84 0.03,15.36 0.09,15.87 C2.76,13.92 7.09,11.14 12.63,8.94 C17.07,7.17 20.74,5.04 23.39,3.26 C23.39,3.26 23.39,3.26 23.39,3.26z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_10_G_D_5_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M16.12 0.11 C15.52,0.04 14.92,0 14.31,0 C9.14,0 4.61,2.74 2.09,6.85 C4.2,5.65 6.65,4.41 9.41,3.31 C11.9,2.32 14.15,1.21 16.12,0.11z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_10_G_D_6_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M28.01 18.42 C28.4,17.12 28.61,15.74 28.61,14.31 C28.61,13.97 28.6,13.63 28.58,13.3 C25.91,15.1 22.2,17.28 17.68,19.08 C12.45,21.16 8.31,23.74 5.61,25.67 C6.79,26.57 8.12,27.3 9.56,27.81 C11.97,26.32 14.96,24.71 18.43,23.33 C22.25,21.82 25.49,20.03 28.01,18.42z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_10_G_D_7_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M28.08 10.43 C27.52,8.42 26.53,6.6 25.22,5.06 C22.53,6.9 18.67,9.21 13.93,11.1 C7.84,13.52 3.22,16.63 0.65,18.58 C1.26,20.55 2.29,22.33 3.63,23.83 C6.31,21.88 10.6,19.16 16.06,16.98 C21.25,14.92 25.38,12.35 28.08,10.43 C28.08,10.43 28.08,10.43 28.08,10.43z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_10_G_D_8_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M19.61 25.03 C16.91,26.1 14.51,27.31 12.44,28.49 C13.05,28.57 13.67,28.61 14.31,28.61 C19.5,28.61 24.05,25.84 26.56,21.7 C24.54,22.84 22.21,24 19.61,25.03 C19.61,25.03 19.61,25.03 19.61,25.03z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_9_G_M\">\n\t\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_9_G\">\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_9_G_D_0_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M3.63 23.8 C3.63,23.8 8.05,27.83 24.33,20.28 C24.33,20.28 26.42,16.28 26.42,16.28 C26.42,16.28 27,14.81 27,14.81 C27,14.81 16.7,22.26 5.84,19.04 C2.26,17.97 3.63,23.8 3.63,23.8z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_9_G_D_1_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M9.41 27.76 C9.41,27.76 14.46,29.73 21.79,25.65 C21.79,25.65 23.71,24.43 23.71,24.43 C23.71,24.43 24.71,23.23 24.71,23.23 C24.71,23.23 17.24,26.84 10.74,24.91 C8.59,24.28 9.41,27.76 9.41,27.76z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_9_G_D_2_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M0.09 15.87 C0.09,15.87 11.11,22.24 26.48,10.22 C26.48,10.22 24.78,5.86 24.78,5.86 C24.78,5.86 15.46,14.09 3.98,10.46 C0.1,9.23 0.09,15.87 0.09,15.87z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_9_G_D_3_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M2.09 6.86 C2.09,6.86 10.72,10.88 22.35,3.43 C22.35,3.43 18.54,1.51 18.54,1.51 C18.54,1.51 15.04,5.07 5.34,3.53 C5.34,3.53 2.09,6.86 2.09,6.86z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_9_G_D_4_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M23.39 3.26 C22.15,2.23 20.73,1.42 19.19,0.86 C16.82,2.31 13.88,3.87 10.5,5.21 C6.5,6.81 3.12,8.7 0.55,10.37 C0.19,11.62 0,12.94 0,14.31 C0,14.84 0.03,15.36 0.09,15.87 C2.76,13.92 7.09,11.14 12.63,8.94 C17.07,7.17 20.74,5.04 23.39,3.26 C23.39,3.26 23.39,3.26 23.39,3.26z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_9_G_D_5_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M16.12 0.11 C15.52,0.04 14.92,0 14.31,0 C9.14,0 4.61,2.74 2.09,6.85 C4.2,5.65 6.65,4.41 9.41,3.31 C11.9,2.32 14.15,1.21 16.12,0.11z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_9_G_D_6_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M28.01 18.42 C28.4,17.12 28.61,15.74 28.61,14.31 C28.61,13.97 28.6,13.63 28.58,13.3 C25.91,15.1 22.2,17.28 17.68,19.08 C12.45,21.16 8.31,23.74 5.61,25.67 C6.79,26.57 8.12,27.3 9.56,27.81 C11.97,26.32 14.96,24.71 18.43,23.33 C22.25,21.82 25.49,20.03 28.01,18.42z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_9_G_D_7_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M28.08 10.43 C27.52,8.42 26.53,6.6 25.22,5.06 C22.53,6.9 18.67,9.21 13.93,11.1 C7.84,13.52 3.22,16.63 0.65,18.58 C1.26,20.55 2.29,22.33 3.63,23.83 C6.31,21.88 10.6,19.16 16.06,16.98 C21.25,14.92 25.38,12.35 28.08,10.43 C28.08,10.43 28.08,10.43 28.08,10.43z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_9_G_D_8_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M19.61 25.03 C16.91,26.1 14.51,27.31 12.44,28.49 C13.05,28.57 13.67,28.61 14.31,28.61 C19.5,28.61 24.05,25.84 26.56,21.7 C24.54,22.84 22.21,24 19.61,25.03 C19.61,25.03 19.61,25.03 19.61,25.03z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_8_G_M\">\n\t\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_8_G\">\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_8_G_D_0_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M3.63 23.8 C3.63,23.8 8.05,27.83 24.33,20.28 C24.33,20.28 26.42,16.28 26.42,16.28 C26.42,16.28 27,14.81 27,14.81 C27,14.81 16.7,22.26 5.84,19.04 C2.26,17.97 3.63,23.8 3.63,23.8z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_8_G_D_1_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M9.41 27.76 C9.41,27.76 14.46,29.73 21.79,25.65 C21.79,25.65 23.71,24.43 23.71,24.43 C23.71,24.43 24.71,23.23 24.71,23.23 C24.71,23.23 17.24,26.84 10.74,24.91 C8.59,24.28 9.41,27.76 9.41,27.76z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_8_G_D_2_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M0.09 15.87 C0.09,15.87 11.11,22.24 26.48,10.22 C26.48,10.22 24.78,5.86 24.78,5.86 C24.78,5.86 15.46,14.09 3.98,10.46 C0.1,9.23 0.09,15.87 0.09,15.87z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_8_G_D_3_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M2.09 6.86 C2.09,6.86 10.72,10.88 22.35,3.43 C22.35,3.43 18.54,1.51 18.54,1.51 C18.54,1.51 15.04,5.07 5.34,3.53 C5.34,3.53 2.09,6.86 2.09,6.86z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_8_G_D_4_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M23.39 3.26 C22.15,2.23 20.73,1.42 19.19,0.86 C16.82,2.31 13.88,3.87 10.5,5.21 C6.5,6.81 3.12,8.7 0.55,10.37 C0.19,11.62 0,12.94 0,14.31 C0,14.84 0.03,15.36 0.09,15.87 C2.76,13.92 7.09,11.14 12.63,8.94 C17.07,7.17 20.74,5.04 23.39,3.26 C23.39,3.26 23.39,3.26 23.39,3.26z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_8_G_D_5_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M16.12 0.11 C15.52,0.04 14.92,0 14.31,0 C9.14,0 4.61,2.74 2.09,6.85 C4.2,5.65 6.65,4.41 9.41,3.31 C11.9,2.32 14.15,1.21 16.12,0.11z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_8_G_D_6_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M28.01 18.42 C28.4,17.12 28.61,15.74 28.61,14.31 C28.61,13.97 28.6,13.63 28.58,13.3 C25.91,15.1 22.2,17.28 17.68,19.08 C12.45,21.16 8.31,23.74 5.61,25.67 C6.79,26.57 8.12,27.3 9.56,27.81 C11.97,26.32 14.96,24.71 18.43,23.33 C22.25,21.82 25.49,20.03 28.01,18.42z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_8_G_D_7_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M28.08 10.43 C27.52,8.42 26.53,6.6 25.22,5.06 C22.53,6.9 18.67,9.21 13.93,11.1 C7.84,13.52 3.22,16.63 0.65,18.58 C1.26,20.55 2.29,22.33 3.63,23.83 C6.31,21.88 10.6,19.16 16.06,16.98 C21.25,14.92 25.38,12.35 28.08,10.43 C28.08,10.43 28.08,10.43 28.08,10.43z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_8_G_D_8_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M19.61 25.03 C16.91,26.1 14.51,27.31 12.44,28.49 C13.05,28.57 13.67,28.61 14.31,28.61 C19.5,28.61 24.05,25.84 26.56,21.7 C24.54,22.84 22.21,24 19.61,25.03 C19.61,25.03 19.61,25.03 19.61,25.03z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_7_G_M\">\n\t\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_7_G\">\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_7_G_D_0_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M3.63 23.8 C3.63,23.8 8.05,27.83 24.33,20.28 C24.33,20.28 26.42,16.28 26.42,16.28 C26.42,16.28 27,14.81 27,14.81 C27,14.81 16.7,22.26 5.84,19.04 C2.26,17.97 3.63,23.8 3.63,23.8z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_7_G_D_1_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M9.41 27.76 C9.41,27.76 14.46,29.73 21.79,25.65 C21.79,25.65 23.71,24.43 23.71,24.43 C23.71,24.43 24.71,23.23 24.71,23.23 C24.71,23.23 17.24,26.84 10.74,24.91 C8.59,24.28 9.41,27.76 9.41,27.76z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_7_G_D_2_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M0.09 15.87 C0.09,15.87 11.11,22.24 26.48,10.22 C26.48,10.22 24.78,5.86 24.78,5.86 C24.78,5.86 15.46,14.09 3.98,10.46 C0.1,9.23 0.09,15.87 0.09,15.87z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_7_G_D_3_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M2.09 6.86 C2.09,6.86 10.72,10.88 22.35,3.43 C22.35,3.43 18.54,1.51 18.54,1.51 C18.54,1.51 15.04,5.07 5.34,3.53 C5.34,3.53 2.09,6.86 2.09,6.86z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_7_G_D_4_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M23.39 3.26 C22.15,2.23 20.73,1.42 19.19,0.86 C16.82,2.31 13.88,3.87 10.5,5.21 C6.5,6.81 3.12,8.7 0.55,10.37 C0.19,11.62 0,12.94 0,14.31 C0,14.84 0.03,15.36 0.09,15.87 C2.76,13.92 7.09,11.14 12.63,8.94 C17.07,7.17 20.74,5.04 23.39,3.26 C23.39,3.26 23.39,3.26 23.39,3.26z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_7_G_D_5_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M16.12 0.11 C15.52,0.04 14.92,0 14.31,0 C9.14,0 4.61,2.74 2.09,6.85 C4.2,5.65 6.65,4.41 9.41,3.31 C11.9,2.32 14.15,1.21 16.12,0.11z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_7_G_D_6_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M28.01 18.42 C28.4,17.12 28.61,15.74 28.61,14.31 C28.61,13.97 28.6,13.63 28.58,13.3 C25.91,15.1 22.2,17.28 17.68,19.08 C12.45,21.16 8.31,23.74 5.61,25.67 C6.79,26.57 8.12,27.3 9.56,27.81 C11.97,26.32 14.96,24.71 18.43,23.33 C22.25,21.82 25.49,20.03 28.01,18.42z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_7_G_D_7_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M28.08 10.43 C27.52,8.42 26.53,6.6 25.22,5.06 C22.53,6.9 18.67,9.21 13.93,11.1 C7.84,13.52 3.22,16.63 0.65,18.58 C1.26,20.55 2.29,22.33 3.63,23.83 C6.31,21.88 10.6,19.16 16.06,16.98 C21.25,14.92 25.38,12.35 28.08,10.43 C28.08,10.43 28.08,10.43 28.08,10.43z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_7_G_D_8_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M19.61 25.03 C16.91,26.1 14.51,27.31 12.44,28.49 C13.05,28.57 13.67,28.61 14.31,28.61 C19.5,28.61 24.05,25.84 26.56,21.7 C24.54,22.84 22.21,24 19.61,25.03 C19.61,25.03 19.61,25.03 19.61,25.03z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_6_G_M\">\n\t\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_6_G\">\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_6_G_D_0_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M3.63 23.8 C3.63,23.8 8.05,27.83 24.33,20.28 C24.33,20.28 26.42,16.28 26.42,16.28 C26.42,16.28 27,14.81 27,14.81 C27,14.81 16.7,22.26 5.84,19.04 C2.26,17.97 3.63,23.8 3.63,23.8z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_6_G_D_1_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M9.41 27.76 C9.41,27.76 14.46,29.73 21.79,25.65 C21.79,25.65 23.71,24.43 23.71,24.43 C23.71,24.43 24.71,23.23 24.71,23.23 C24.71,23.23 17.24,26.84 10.74,24.91 C8.59,24.28 9.41,27.76 9.41,27.76z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_6_G_D_2_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M0.09 15.87 C0.09,15.87 11.11,22.24 26.48,10.22 C26.48,10.22 24.78,5.86 24.78,5.86 C24.78,5.86 15.46,14.09 3.98,10.46 C0.1,9.23 0.09,15.87 0.09,15.87z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_6_G_D_3_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M2.09 6.86 C2.09,6.86 10.72,10.88 22.35,3.43 C22.35,3.43 18.54,1.51 18.54,1.51 C18.54,1.51 15.04,5.07 5.34,3.53 C5.34,3.53 2.09,6.86 2.09,6.86z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_6_G_D_4_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M23.39 3.26 C22.15,2.23 20.73,1.42 19.19,0.86 C16.82,2.31 13.88,3.87 10.5,5.21 C6.5,6.81 3.12,8.7 0.55,10.37 C0.19,11.62 0,12.94 0,14.31 C0,14.84 0.03,15.36 0.09,15.87 C2.76,13.92 7.09,11.14 12.63,8.94 C17.07,7.17 20.74,5.04 23.39,3.26 C23.39,3.26 23.39,3.26 23.39,3.26z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_6_G_D_5_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M16.12 0.11 C15.52,0.04 14.92,0 14.31,0 C9.14,0 4.61,2.74 2.09,6.85 C4.2,5.65 6.65,4.41 9.41,3.31 C11.9,2.32 14.15,1.21 16.12,0.11z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_6_G_D_6_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M28.01 18.42 C28.4,17.12 28.61,15.74 28.61,14.31 C28.61,13.97 28.6,13.63 28.58,13.3 C25.91,15.1 22.2,17.28 17.68,19.08 C12.45,21.16 8.31,23.74 5.61,25.67 C6.79,26.57 8.12,27.3 9.56,27.81 C11.97,26.32 14.96,24.71 18.43,23.33 C22.25,21.82 25.49,20.03 28.01,18.42z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_6_G_D_7_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M28.08 10.43 C27.52,8.42 26.53,6.6 25.22,5.06 C22.53,6.9 18.67,9.21 13.93,11.1 C7.84,13.52 3.22,16.63 0.65,18.58 C1.26,20.55 2.29,22.33 3.63,23.83 C6.31,21.88 10.6,19.16 16.06,16.98 C21.25,14.92 25.38,12.35 28.08,10.43 C28.08,10.43 28.08,10.43 28.08,10.43z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_6_G_D_8_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M19.61 25.03 C16.91,26.1 14.51,27.31 12.44,28.49 C13.05,28.57 13.67,28.61 14.31,28.61 C19.5,28.61 24.05,25.84 26.56,21.7 C24.54,22.84 22.21,24 19.61,25.03 C19.61,25.03 19.61,25.03 19.61,25.03z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_5_G_M\">\n\t\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_5_G\">\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_5_G_D_0_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M0 -30 C16.56,-30 30,-16.56 30,0 C30,16.56 16.56,30 0,30 C-16.56,30 -30,16.56 -30,0 C-30,-16.56 -16.56,-30 0,-30z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_4_G_M\">\n\t\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_4_G\">\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_4_G_D_0_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M0 -30 C16.56,-30 30,-16.56 30,0 C30,16.56 16.56,30 0,30 C-16.56,30 -30,16.56 -30,0 C-30,-16.56 -16.56,-30 0,-30z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_3_G_M\">\n\t\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_3_G\">\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_3_G_D_0_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M0 -30 C16.56,-30 30,-16.56 30,0 C30,16.56 16.56,30 0,30 C-16.56,30 -30,16.56 -30,0 C-30,-16.56 -16.56,-30 0,-30z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_2_G_M\">\n\t\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_2_G\">\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_2_G_D_0_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M0 -30 C16.56,-30 30,-16.56 30,0 C30,16.56 16.56,30 0,30 C-16.56,30 -30,16.56 -30,0 C-30,-16.56 -16.56,-30 0,-30z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_1_G_M\">\n\t\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_1_G\">\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_1_G_D_0_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#ff860d\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M0 -30 C16.56,-30 30,-16.56 30,0 C30,16.56 16.56,30 0,30 C-16.56,30 -30,16.56 -30,0 C-30,-16.56 -16.56,-30 0,-30z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_0_G_M\">\n\t\t\t\t\t\t\t<g id=\"_R_G_L_0_G_L_0_G\">\n\t\t\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t\t\tid=\"_R_G_L_0_G_L_0_G_D_0_P_0\"\n\t\t\t\t\t\t\t\t\tfill=\"#21409a\"\n\t\t\t\t\t\t\t\t\tfill-opacity=\"1\"\n\t\t\t\t\t\t\t\t\tfill-rule=\"nonzero\"\n\t\t\t\t\t\t\t\t\td=\" M0 -30 C16.56,-30 30,-16.56 30,0 C30,16.56 16.56,30 0,30 C-16.56,30 -30,16.56 -30,0 C-30,-16.56 -16.56,-30 0,-30z \"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</g>\n\t\t\t\t\t\t</g>\n\t\t\t\t\t</g>\n\t\t\t\t</g>\n\t\t\t\t<g id=\"time_group\" />\n\t\t\t</svg>\n\t\t}\n\t</span>\n</div>\n","import { inject, Pipe, PipeTransform } from \"@angular/core\";\nimport { DateMode } from \"../constants/date-mode-options.constants\";\nimport { DatePipe } from \"@angular/common\";\n\n@Pipe({\n name: \"formatCell\",\n standalone: true,\n})\nexport class FormatCellPipe implements PipeTransform {\n private readonly datePipe = inject(DatePipe);\n\n transform(\n value: any,\n type:\n | \"string\"\n | \"date\"\n | \"date2\"\n | \"date3\"\n | \"time\"\n | \"decimal2\"\n | \"decimal4\"\n | \"tarifa\"\n ): string {\n if (value == null) return \"\";\n\n switch (type) {\n case \"date\":\n return this.formatDateValue(value, \"day\");\n case \"date2\":\n return this.formatDateValue(value, \"month\");\n case \"date3\":\n return this.formatDateValue(value, \"year\");\n case \"time\":\n return this.formatTime(value);\n case \"decimal2\":\n return this.formatDecimal(value, 2);\n case \"decimal4\":\n return this.formatDecimal(value, 4);\n case \"tarifa\":\n return this.formatTarifa(value);\n default:\n return value;\n }\n }\n\n getDateFormat(mode: DateMode): string {\n switch (mode) {\n case \"month\":\n return \"M/yy\";\n case \"year\":\n return \"yy\";\n default:\n return \"d/M/yy\";\n }\n }\n\n formatDateValue(value: any, mode: string): string {\n const pattern = this.getDateFormat(mode as DateMode);\n\n if (Array.isArray(value) && value.length === 2) {\n return `${this.datePipe.transform(\n value[0],\n pattern\n )} - ${this.datePipe.transform(value[1], pattern)}`;\n }\n\n if (value) {\n return this.datePipe.transform(value, pattern) || \"\";\n }\n\n return \"\";\n }\n\n private formatTime(value: any): string {\n const date = new Date(value);\n if (isNaN(date.getTime())) return \"\";\n\n let hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n const ampm = hours >= 12 ? \"PM\" : \"AM\";\n\n hours = hours % 12;\n hours = hours ? hours : 12;\n const hh = hours.toString().padStart(2, \"0\");\n const mm = minutes.toString().padStart(2, \"0\");\n const ss = seconds.toString().padStart(2, \"0\");\n\n return `${hh}:${mm}:${ss} ${ampm}`;\n }\n\n private formatDecimal(value: any, digits: number): string {\n const num = parseFloat(value);\n if (isNaN(num)) return \"\";\n return num.toFixed(digits);\n }\n\n private formatTarifa(value: any): string {\n const num = parseFloat(value);\n if (isNaN(num)) return \"\";\n\n const absNum = Math.abs(num);\n if (absNum >= 0.000001 && absNum <= 0.1) {\n // Mostrar hasta 6 decimales\n return absNum.toFixed(6);\n } else if (absNum < 0.000001) {\n return num.toString();\n } else {\n return num.toString();\n }\n }\n}\n","export class FormatDateConstants {\n\tpublic static readonly DMYY: string = \"d/M/yy\";\n\tpublic static readonly MMYY: string = \"MMMM yyyy\";\n\tpublic static readonly YYMD: string = \"yyMd\";\n\tpublic static readonly DMYY_MOMENT: string = \"D/M/YY\";\n\tpublic static readonly YYMD_MOMENT: string = \"YYMD\";\n\tpublic static readonly DDMMYYYY: string = \"dd_MM_YYYY\";\n\tpublic static readonly DDMMYYYY_: string = \"DD/MM/YYYY\";\n\tpublic static readonly YYYYMMDD: string = \"YYYY-MM-DD\";\n\tpublic static readonly YYYYMMDD_: string = \"yyyyMMdd\";\n\tpublic static readonly YYYYMMDD_SLASH: string = \"YYYY/MM/DD\";\n}\n","import { Injectable } from \"@angular/core\";\nimport { BehaviorSubject, Observable, Subject } from \"rxjs\";\nimport { Location } from \"@angular/common\";\nimport { FormatDateConstants } from \"../constants/format-date.constants\";\nimport moment from \"moment\";\nimport * as _ from \"lodash\";\n@Injectable({\n providedIn: \"root\",\n})\nexport class SharedService {\n public configObservable = new Subject<boolean>();\n isLoading = new BehaviorSubject(false);\n isLoadingHeader = new BehaviorSubject(true);\n isExpandedContent = new BehaviorSubject(false);\n isLoadingPageInfo = new BehaviorSubject(true);\n notifyProfileType = new Subject<string>();\n charges = 0;\n showHelper = new BehaviorSubject(false);\n headerPathName = new BehaviorSubject<string[]>([]);\n pageId: number | undefined = 0;\n openActionMenu$: Subject<boolean> = new Subject<boolean>();\n months = {\n en: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n es: [\n \"Enero\",\n \"Febrero\",\n \"Marzo\",\n \"Abril\",\n \"Mayo\",\n \"Junio\",\n \"Julio\",\n \"Agosto\",\n \"Septiembre\",\n \"Octubre\",\n \"Noviembre\",\n \"Diciembre\",\n ],\n };\n subtitleDescriptionNotification$!: Observable<string>;\n constructor(private location: Location) {}\n ///METODOS GLOBALS.\n IsNumberRate(n: any) {\n return !isNaN(parseFloat(n)) && !isNaN(n - 0);\n }\n RemovePercentage(string: string) {\n if (string.length > 0) {\n if (string.startsWith(\"%\")) string = string.substring(1);\n let last = string.length - 1;\n if (string.endsWith(\"%\")) string = string.substring(0, last);\n }\n return string;\n }\n GetTotalAmountByCrncy(col: string, listGeneral: any): number {\n return listGeneral.reduce((a: any, b: any) => a + (b[col] || 0), 0);\n }\n GetTotalAverageByColumn(col: string, listGeneral: any): number {\n return (\n listGeneral.reduce((a: any, b: any) => a + (b[col] || 0), 0) /\n (listGeneral.length || 1)\n );\n }\n GetTotalByGroup(\n col: string,\n listGeneral: any[],\n groupBy: string[] | undefined\n ): any[] {\n if (!groupBy?.length)\n return [listGeneral.reduce((a: any, b: any) => a + (b[col] || 0), 0)];\n\n let result: { [key: string]: any } = listGeneral.reduce(\n (acc: { [key: string]: any }, item: any) => {\n const groupKey = groupBy.map((prop) => item[prop]).join(\"||\");\n acc[groupKey] = (acc[groupKey] || 0) + item[col];\n return acc;\n },\n {}\n );\n const propiedades = Object.keys(result).sort();\n const indexGroup = groupBy.indexOf(col);\n if (indexGroup != -1)\n return propiedades.map((propiedad) => propiedad.split(\"||\")[indexGroup]);\n return propiedades.map((propiedad) => result[propiedad]);\n }\n TransformNegative(value: string): string {\n value = value?.toString() ?? \"0.00\";\n if (value?.indexOf(\"-\") > -1) return \"(\" + value.replace(\"-\", \"\") + \")\";\n else return value.toString();\n }\n FormatNumber(value: number, decimalMax: number, decimalMin: number) {\n return value.toLocaleString(\"en-US\", {\n maximumFractionDigits: decimalMax,\n minimumFractionDigits: decimalMin,\n });\n }\n ClickOutSideValidator(event: any): boolean {\n let res = false;\n if (event !== undefined) {\n const src = (event as Event).srcElement as Element;\n res = src.id !== \"button-alignment\" && !this.CheckParents(src, 0);\n }\n return res;\n }\n CheckParents(src: Element, c: number): boolean {\n var ids = [];\n ids.push(\"HamburgerMenu\");\n var strings = [];\n strings.push(\"swal2-container\");\n if (src.className.includes(\"backdrop-visible\")) return false;\n var res = ids.some(function (v) {\n return src.id === v;\n });\n if (\n !res &&\n (src.tagName === \"BODY\" || src.parentElement === null) &&\n c === 0\n ) {\n res = true;\n }\n if (\n !res &&\n strings.some(function (v) {\n return src.classList.contains(v);\n })\n )\n res = true;\n if (src.parentElement && !res) {\n c++;\n res = this.CheckParents(src.parentElement, c);\n }\n return res;\n }\n GetTitleByRegionOrCountry(CurrentGroup: any, Current: any, field: string) {\n return CurrentGroup\n ? CurrentGroup.groupName + \" - \" + Current[field]\n : Current[field];\n }\n GetTitleByBank(ListGeneralCountryAll: any[], CurrentBank: any) {\n return ListGeneralCountryAll.length > 1\n ? CurrentBank.groupName +\n \" - \" +\n CurrentBank.countryName +\n \" - \" +\n CurrentBank.bankNameCommercial\n : CurrentBank.bankNameCommercial;\n }\n Roundgen(value: any, precision: any) {\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(value * multiplier) / multiplier;\n }\n ReturnAmountPercen(amount: any): string {\n if (isNaN(amount)) amount = 0;\n let resultado: string = \"\";\n let AmountStr =\n amount === 0\n ? \"0\"\n : amount.toLocaleString(\"en-US\", {\n maximumFractionDigits: 1,\n minimumFractionDigits: 1,\n });\n if (AmountStr.indexOf(\".0\") !== -1)\n AmountStr = amount.toLocaleString(\"en-US\", {\n maximumFractionDigits: 0,\n minimumFractionDigits: 0,\n });\n if (amount < 0 && parseInt(amount.toString()) * -1 === 0) {\n resultado =\n amount\n .toLocaleString(\"en-US\", {\n maximumFractionDigits: 1,\n minimumFractionDigits: 1,\n })\n .replace(\"-\", \"(\") + \"%)\";\n } else if (amount < 0) resultado = AmountStr.replace(\"-\", \"(\") + \"%)\";\n else resultado = AmountStr + \"%\";\n if (\n Number.NEGATIVE_INFINITY === amount ||\n Number.POSITIVE_INFINITY === amount\n )\n resultado = \"\";\n return resultado;\n }\n ReturAmountFormat(amount: any): string {\n if (isNaN(amount)) amount = 0;\n amount = this.Roundgen(amount, 2);\n let resultado: string = \"\";\n if (amount < 0 && parseInt(amount.toString()) * -1 === 0)\n resultado = amount.toString().replace(\"-\", \"(\") + \")\";\n else if (amount < 0 && amount > -1000) {\n resultado = this.Roundgen(amount, 0).toString().replace(\"-\", \"(\") + \")\";\n } else if (amount < 0 && -1000000000 >= amount) {\n resultado =\n this.Roundgen(amount / 1000000000, 1)\n .toString()\n .replace(\"-\", \"(\") + \" B)\";\n } else if (amount < 0 && -1000000 >= amount) {\n resultado =\n this.Roundgen(amount / 1000000, 1)\n .toString()\n .replace(\"-\", \"(\") + \" M)\";\n } else if (amount < 0) {\n resultado =\n this.Roundgen(amount / 1000, 1)\n .toString()\n .replace(\"-\", \"(\") + \" K)\";\n } else if (amount < 1000) resultado = this.Roundgen(amount, 0).toString();\n else if (1000000000 < amount)\n resultado = this.Roundgen(amount / 1000000000, 1).toString() + \" B\";\n else if (1000000 < amount)\n resultado = this.Roundgen(amount / 1000000, 1).toString() + \" M\";\n else resultado = this.Roundgen(amount / 1000, 1).toString() + \" K\";\n if (resultado.indexOf(\".\") === -1 && amount !== 0 && amount >= 1000) {\n let a = resultado;\n let b = \".0\";\n let output = a + b;\n\n if (resultado.indexOf(\" \") !== -1) {\n let position = resultado.indexOf(\" \");\n output = [a.slice(0, position), b, a.slice(position)].join(\"\");\n } else if (\n resultado.indexOf(\" \") === -1 &&\n resultado.indexOf(\")\") !== -1\n ) {\n let position = resultado.indexOf(\")\");\n output = [a.slice(0, position), b, a.slice(position)].join(\"\");\n }\n\n resultado = output;\n }\n return resultado;\n }\n DownloadFile(fileName: string, blob: any): void {\n const nav = window.navigator as any;\n if (nav.msSaveOrOpenBlob) {\n nav.msSaveOrOpenBlob(blob, fileName);\n } else {\n const link = document.createElement(\"a\");\n link.setAttribute(\"type\", \"hidden\");\n link.download = fileName;\n link.href = window.URL.createObjectURL(blob.body);\n document.body.appendChild(link);\n link.click();\n }\n }\n ViewFile(response: any) {\n const a = document.createElement(\"a\");\n a.setAttribute(\"style\", \"display:none;\");\n document.body.appendChild(a);\n a.href = URL.createObjectURL(response.body);\n a.target = \"_blank\";\n a.click();\n document.body.removeChild(a);\n }\n GetNumberCurrency(amount: number): string {\n return amount === 0\n ? \"0\"\n : amount.toLocaleString(\"en-US\", {\n maximumFractionDigits: 2,\n minimumFractionDigits: 2,\n });\n }\n CountDecimals(param: number) {\n if (Math.floor(param) === param) return 0;\n return param.toString().split(\".\")[1].length || 0;\n }\n IsEmpty(value: any) {\n return value === null || value === \"\" || value === undefined;\n }\n GroupByColumn(data: any[], columnGroup: string): any[] {\n let colUnique = [];\n if (columnGroup != \"\") {\n colUnique = [\n ...new Set(\n data.map((item) => {\n return item[columnGroup];\n })\n ),\n ].filter((unique) => !this.IsEmpty(unique));\n } else {\n colUnique = [\n ...new Set(\n data.map((item) => {\n return item;\n })\n ),\n ].filter((unique) => !this.IsEmpty(unique));\n }\n return colUnique;\n }\n GetRoswpanbyData(column: string, index: number, data: Array<any>): number {\n let ValOfAgruppated = null;\n let rowspanI = 1;\n for (let i: number = index - 1; i < data.length; i++) {\n let val = data[i][column];\n if (ValOfAgruppated == null) {\n ValOfAgruppated = val;\n } else if (val !== null && ValOfAgruppated == val) {\n rowspanI++;\n } else if (val !== null && ValOfAgruppated != val) {\n ValOfAgruppated = null;\n return rowspanI;\n }\n }\n return rowspanI;\n }\n FormatterStringJsonByKey(\n data: any[],\n key: string,\n separador: string\n ): string {\n let result = \"\";\n let colUnique: string[] = [];\n data.forEach((element) => {\n colUnique.push(element[key]);\n });\n result = colUnique.join(separador);\n return result;\n }\n GroupByKey(xs: any, key: any) {\n return xs.reduce(function (rv: any, x: any) {\n (rv[x[key]] = rv[x[key]] || []).push(x);\n return rv;\n }, {});\n }\n LoadProjectsCss(route: string) {\n const elements = this.CheckProjectsCss(route);\n if (elements.length === 0) {\n const node = document.createElement(\"link\");\n node.href = \"./assets/css/projects/\" + route + \".css\";\n node.rel = \"stylesheet\";\n document.getElementsByTagName(\"head\")[0].appendChild(node);\n }\n }\n RemoveProjectsCss(route: string) {\n const elements = this.CheckProjectsCss(route);\n elements.forEach((element) => {\n document.getElementsByTagName(\"head\")[0].removeChild(element);\n });\n }\n CheckProjectsCss(route: string): any[] {\n const parent = document.getElementsByTagName(\"head\")[0];\n const elements: any[] = [];\n parent.childNodes.forEach((element: any) => {\n var a = element as object;\n\n if (element.nodeName === \"LINK\") {\n var elemethref = element[\"href\"];\n if (elemethref && elemethref.indexOf(route) > 0) {\n elements.push(element);\n }\n }\n });\n return elements;\n }\n CountDecimalsDigits(numero: any) {\n if (this.IsEmpty(numero)) return 0;\n numero = parseFloat(numero);\n let arrayNumero = numero.toString().split(\".\");\n numero = arrayNumero.length > 1 ? arrayNumero[1] : \"\";\n return numero.length;\n }\n GetMaxNumberDecimals(data: any[], key: string): number {\n let arrCountDecimals: number[] = [];\n data.forEach((element) => {\n let decimals = this.CountDecimalsDigits(element[key]);\n arrCountDecimals.push(decimals);\n });\n var maxDecimal = Math.max(...arrCountDecimals);\n return maxDecimal;\n }\n SetHeaderPathName(name: string[]) {\n this.headerPathName.next(name);\n }\n FormatDate(date: string, format: string): string {\n return moment(date).format(format);\n }\n CopyTo(src: any, dest: any) {\n Object.keys(src).forEach((property) => {\n dest[property] = src[property];\n });\n }\n IsValidEmail(email: string): boolean {\n const emailPattern = /^\\w+([.-]?\\w+)*@\\w+([.-]?\\w+)*(\\.\\w{2,3})+$/;\n return emailPattern.test(email);\n }\n IsGuid(str: string): boolean {\n const guidRegex =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n return guidRegex.test(str);\n }\n ContainsSpecialCharacters(str: string): boolean {\n const specialCharacter = /^[^\\\\/?%*:|\"<>]+$/;\n return !specialCharacter.test(str);\n }\n IsNumber(value: any): boolean {\n return /^-?\\d+(\\.\\d+)?$/.test(value);\n }\n CalculatePreviousDate(date: Date, monthsAgo: number) {\n date.setMonth(date.getMonth() - monthsAgo);\n const newDate = moment(date).format(FormatDateConstants.DMYY_MOMENT);\n\n return newDate;\n }\n GetFilteredSearchKey(\n listTempAll: any[],\n key: string,\n value: any,\n operatorId: number\n ) {\n let listFilter = [];\n switch (operatorId) {\n case 0: //'Contains'\n let word = value.split(\"&\", 100);\n let count: number = 0;\n let listTemp: any;\n if (word.length > 1) {\n word.forEach((element: any) => {\n if (count === 0) {\n listTemp = listTempAll.filter((a) =>\n a[key]\n ?.toString()\n ?.toLowerCase()\n .includes(element.toLowerCase())\n );\n } else {\n listTemp = listTemp.filter((a: any) =>\n a[key]\n ?.toString()\n ?.toLowerCase()\n .includes(element.toLowerCase())\n );\n }\n count++;\n });\n listFilter = listTemp;\n } else {\n listFilter = listTempAll.filter((a) =>\n a[key]?.toString()?.toLowerCase().includes(value)\n );\n }\n break;\n case 1: //'Exact'\n listFilter = value\n ? listTempAll.filter(\n (a) => a[key]?.toString()?.toLowerCase() === value\n )\n : listTempAll;\n break;\n case 2: //'Begin'\n listFilter = listTempAll.filter((a) =>\n a[key]?.toString()?.toLowerCase().startsWith(value)\n );\n break;\n case 3: //'Ends'\n listFilter = listTempAll.filter((a) =>\n a[key]?.toString()?.toLowerCase().endsWith(value)\n );\n break;\n default:\n listFilter = listTempAll.filter((a) =>\n a[key]?.toString()?.toLowerCase().includes(value)\n );\n break;\n }\n return listFilter;\n }\n GetFilteredSearchKeyV2(\n listTempAll: any[],\n key: string,\n value: any,\n operatorId: number,\n subKey: any = null\n ) {\n if (value.length == 0) return listTempAll;\n if (!listTempAll || !key || value == null) return [];\n let listFilter = listTempAll;\n value = value.toString().toLowerCase();\n const words = value.includes(\"&\")\n ? value.split(\"&\").filter(Boolean)\n : [value];\n const filterFunction = (item: any) => {\n const itemValue = item[key]?.toString()?.toLowerCase();\n switch (operatorId) {\n case 0: // 'Contains'\n return words.every((word: any) => itemValue?.includes(word));\n case 1: // 'Exact'\n return itemValue === value;\n case 2: // 'Begin'\n return itemValue?.startsWith(value);\n case 3: // 'Ends'\n return itemValue?.endsWith(value);\n default:\n return itemValue?.includes(value);\n }\n };\n if (subKey) {\n // Filtrar primero a nivel de sublista\n listFilter = listFilter.map((filter) => {\n return {\n ...filter,\n [subKey]: filter[subKey]?.filter((item: any) => filterFunction(item)),\n };\n });\n // Filtrar luego la lista principal basado en si la sublista contiene elementos\n listFilter = listFilter.filter((filter) => filter[subKey].length > 0);\n } else {\n // Filtrar solo la lista principal\n listFilter = listFilter.filter(filterFunction);\n }\n return listFilter;\n }\n public TransformArrayToHashTable<T, TypeKey extends string | number>(\n arr: T[],\n getKey: (p: T) => TypeKey\n ): { [key in TypeKey]: T } {\n //example of Use:\n // this.transformArrayToHashTable<any,string>([{id:1,prop1:\"prop1Value\"}],(o)=>o.id.toString())\n const hashTable: { [key in TypeKey]: T } = {} as { [key in TypeKey]: T };\n arr.forEach((object: T) => (hashTable[getKey(object)] = object));\n return hashTable;\n }\n public TransformArrayToMap<TypeKey, T>(\n arr: T[],\n getKey: (p: T) => TypeKey\n ): Map<TypeKey, T> {\n //example of Use:\n // this.transformArrayToMap<string,any>([{id:1,prop1:\"prop1Value\"}],(o)=>o.id.toString())\n return new Map(arr.map((obj) => [getKey(obj), obj]));\n }\n UrlHasQaUatSubdomain() {\n const { hostname } = new URL(window.location.href);\n const [subdomain] = hostname.split(\".\");\n return [\"qa\", \"uat\"].includes(subdomain);\n }\n UrlHasQaSubdomain() {\n const { hostname } = new URL(window.location.href);\n const [subdomain] = hostname.split(\".\");\n return [\"qa\"].includes(subdomain);\n }\n GetLastSegmentUrl(): string {\n const segments = this.location.path().split(\"/\");\n const lastSegment = segments[segments.length - 1];\n const numberMappings: { [key: string]: string } = {\n \"0\": \"intelica-allocated\",\n \"1\": \"penalty-summary\",\n };\n // Verifica si lastSegment es un número y si tiene un mapeo correspondiente\n if (\n !isNaN(Number(lastSegment)) &&\n numberMappings.hasOwnProperty(lastSegment)\n )\n return numberMappings[lastSegment];\n else return lastSegment;\n }\n OnChangeMultiple($event: any, selectDescription: string): void {\n let select = $event != null ? $event.element.ej2_instances[0] : null;\n if (select?.value.length > 0) {\n select.viewWrapper.innerHTML = `${select.value.length} ${selectDescription}`;\n }\n }\n RemoveParamsAndSegments(url: string): string {\n // Remover parámetros de consultanom\n const urlWithoutParams = url.split(\"?\")[0];\n // Remover segmentos de ruta dinámicos\n const regex = /\\/\\d+(?=\\/|$)(?!$)/g; // Encuentra segmentos de ruta que consisten en números\n return urlWithoutParams.replace(regex, \"\");\n }\n OpenActionMenu() {\n this.openActionMenu$.next(true);\n }\n AbbreviateNumber(number: number, fixed: number = 2): string {\n if (number == 0.0 || number == 0 || number == 0.0) {\n return \"0\";\n }\n let formatCant = \"\";\n let numberOriginal = number;\n if (number < 0) {\n number = Math.abs(number);\n }\n if (number >= 1000 && number < 1000000) {\n number = parseFloat((number / 1000).toFixed(fixed));\n formatCant = \" K\";\n } else if (number >= 1000000 && number < 1000000000) {\n number = parseFloat((number / 1000000).toFixed(fixed));\n formatCant = \" M\";\n } else if (number >= 1000000000 && number <= 1000000000000) {\n number = parseFloat((number / 1000000000).toFixed(fixed));\n formatCant = \" B\";\n } else {\n number = this.NumberFormatByNumberCriteria(number, fixed);\n }\n return numberOriginal < 0\n ? `(${number}${formatCant})`\n : `${number}${formatCant}`;\n }\n NumberFormatByNumberCriteria(number: number, fixed: number = 4): any {\n const rounded = (\n Math.round(number * Math.pow(10, fixed)) / Math.pow(10, fixed)\n ).toFixed(fixed);\n return rounded;\n }\n FormatPercentage(number: number, decimal: number = 2) {\n let numberInit = number;\n if (number < 0) number = Math.abs(number);\n number = parseFloat(number.toFixed(decimal));\n let finalNumber = `${number.toLocaleString(\"en-US\")}%`;\n return numberInit < 0 ? `(${finalNumber})` : `${finalNumber}`;\n }\n GetMonthName(monthIndex: number, lang: \"en\" | \"es\" = \"en\"): string {\n return this.months[lang][monthIndex];\n }\n FormatNumberWithSuffix(number: number, decimalPlaces: number = 0): string {\n if (number === 0) {\n return \"0\";\n }\n const isNegative = number < 0;\n const absoluteValue = Math.abs(number);\n const scaledNumber = parseFloat(\n (absoluteValue / 1000).toFixed(decimalPlaces)\n ).toLocaleString(\"en-US\");\n const suffix = \" K\";\n\n return isNegative\n ? `(${scaledNumber}${suffix})`\n : `${scaledNumber}${suffix}`;\n }\n //SYNFCUNTION\n GenerateGUID(): string {\n let uuid = \"\",\n i,\n random;\n for (i = 0; i < 32; i++) {\n random = (Math.random() * 16) | 0;\n if (i === 8 || i === 12 || i === 16 || i === 20) {\n uuid += \"-\";\n }\n uuid += (i === 12 ? 4 : i === 16 ? (random & 3) | 8 : random).toString(\n 16\n );\n }\n return uuid;\n }\n AttachDataLabelClickEvent(\n chartElementId: string,\n dataArray: any[],\n onClickCallback: (clickedData: any) => void\n ): void {\n const chartElement = document.getElementById(chartElementId);\n if (!chartElement) {\n return;\n }\n const dataLabels = chartElement.querySelectorAll('[id*=\"_DataLabel_\"]');\n const dataLabelsArray = Array.prototype.slice.call(\n dataLabels\n ) as HTMLElement[];\n dataLabelsArray.forEach((label, index) => {\n // Calcula el índice ajustado para obtener el dato correcto\n const adjustedIndex = index % dataArray.length;\n\n label.addEventListener(\"click\", () => {\n const clickedData = dataArray[adjustedIndex];\n if (clickedData) {\n onClickCallback(clickedData);\n }\n });\n });\n }\n FormatNumberAbsolute(number: number) {\n const isNegative = number < 0;\n if (number < 0) {\n number = Math.abs(number);\n }\n\n let finalNumber = `${number.toLocaleString(\"en-US\")}`;\n return isNegative ? `(${finalNumber})` : `${finalNumber}`;\n }\n SortRecursive(data: any[], column: any, criteria: string) {\n return _.orderBy(\n data.map((item) => {\n Object.keys(item).forEach((key) => {\n if (Array.isArray(item[key])) {\n item[key] = this.SortRecursive(item[key], column, criteria);\n }\n });\n return item;\n }),\n [\n (elm: any) => {\n let value = elm[column];\n if (value == null) {\n value = \"\";\n }\n if (typeof value === \"string\") {\n const normalized = value.trim().toLowerCase();\n const startsWithSpecial = /^[^a-z0-9]/i.test(normalized);\n return startsWithSpecial ? `~${normalized}` : normalized;\n }\n return value;\n },\n ],\n [criteria as \"asc\" | \"desc\"]\n );\n }\n SortRecursivePrimeNg(data: any[], column: any, criteria: string) {\n return _.orderBy(\n data.map((item) => {\n Object.keys(item).forEach((key) => {\n if (Array.isArray(item[key])) {\n item[key] = this.SortRecursive(item[key], column, criteria);\n }\n });\n return item;\n }),\n [\n (elm: any) => {\n let value = elm[column];\n if (\n value == null ||\n (typeof value === \"string\" && value.trim() === \"\")\n ) {\n return \"___0\";\n }\n if (typeof value === \"string\") {\n const normalized = value.trim().toLowerCase();\n const startsWithSpecial = /^[^a-z0-9]/i.test(normalized);\n if (startsWithSpecial) {\n return `___1${normalized}`;\n }\n return `___2${normalized}`;\n }\n return `___2${value}`;\n },\n ],\n [criteria as \"asc\" | \"desc\"]\n );\n }\n SortRecursiveNumber(data: any[], column: any, criteria: string) {\n return _.orderBy(\n data.map((item) => {\n Object.keys(item).forEach((key) => {\n if (Array.isArray(item[key])) {\n item[key] = this.SortRecursiveNumber(item[key], column, criteria);\n }\n });\n return item;\n }),\n [\n (elm: any) => {\n let value = elm[column];\n if (value == null || value === \"\") {\n return Number.NEGATIVE_INFINITY;\n }\n if (typeof value === \"number\") {\n return value;\n }\n if (!isNaN(Number(value))) {\n return Number(value);\n }\n return Number.NEGATIVE_INFINITY;\n },\n ],\n [criteria as \"asc\" | \"desc\"]\n );\n }\n\n IsDateFormat(value: any): boolean {\n return (\n typeof value === \"string\" && /^\\d{1,2}\\/\\d{1,2}\\/\\d{2,4}$/.test(value)\n );\n }\n\n SortRecursiveDate(data: any[], column: any, criteria: string) {\n return _.orderBy(\n data.map((item) => {\n Object.keys(item).forEach((key) => {\n if (Array.isArray(item[key])) {\n item[key] = this.SortRecursiveDate(item[key], column, criteria);\n }\n });\n return item;\n }),\n [\n (elm: any) => {\n let value = elm[column];\n if (value == null || value === \"\") {\n return Number.NEGATIVE_INFINITY;\n }\n const dateValue = new Date(value);\n if (isNaN(dateValue.getTime())) {\n return Number.NEGATIVE_INFINITY;\n }\n return dateValue.getTime();\n },\n ],\n [criteria as \"asc\" | \"desc\"]\n );\n }\n}\n","import { ContentChild, Directive, Input, TemplateRef } from \"@angular/core\";\n@Directive({ selector: \"column\" })\nexport class ColumnComponent<T = any> {\n @Input() field!: string;\n @Input() header!: string;\n @Input() sortable: boolean = false;\n @Input() width?: string;\n @Input() className?: string;\n @Input() headerTooltip: string = \"\";\n @Input() headerTooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n @Input() tooltip: string = \"\";\n @Input() tooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n @Input() showIndex: boolean = false;\n @Input() showHeader: boolean = true;\n @Input() minWidth?: string;\n @Input() isChecboxColumn: boolean = false;\n //@Input() isGrouped: boolean = false;\n //@Input() isGroup: boolean = false;\n @Input() formatType:\n | \"string\"\n | \"date\"\n | \"date2\"\n | \"date3\"\n | \"time\"\n | \"decimal2\"\n | \"decimal4\"\n | \"tarifa\" = \"string\";\n @ContentChild(TemplateRef) templateRef?: TemplateRef<any>;\n}\n@Directive({ selector: \"columnGroup\" })\nexport class ColumnGroupComponent<T = any> {\n @Input() field!: string;\n @Input() header!: string;\n @Input() sortable: boolean = false;\n @Input() width?: string;\n @Input() minWidth?: string;\n @Input() className?: string;\n @Input() headerTooltip: string = \"\";\n @Input() headerTooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n // @Input() tooltip: string = \"\";\n // @Input() tooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n // @Input() showIndex: boolean = false;\n // @Input() isGrouped: boolean = false;\n // @Input() isGroup: boolean = false;\n @Input() colspan: number = 1;\n @Input() rowspan: number = 1;\n @Input() level: number = 0;\n @Input() formatType:\n | \"string\"\n | \"date\"\n | \"date2\"\n | \"date3\"\n | \"time\"\n | \"decimal2\"\n | \"decimal4\"\n | \"tarifa\" = \"string\";\n}\n@Directive({ selector: \"rowResumenComponent\" })\nexport class RowResumenComponent<T = any> {\n @Input() field!: string;\n @Input() className?: string;\n // @Input() width?: string;\n // @Input() className?: string;\n // @Input() headerTooltip: string = \"\";\n // @Input() headerTooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n // @Input() tooltip: string = \"\";\n // @Input() tooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n // @Input() showIndex: boolean = false;\n // @Input() isGrouped: boolean = false;\n // @Input() isGroup: boolean = false;\n @Input() colspan: number = 1;\n @Input() rowspan: number = 1;\n @ContentChild(TemplateRef) templateRef?: TemplateRef<any>;\n @Input() formatType:\n | \"string\"\n | \"date\"\n | \"date2\"\n | \"date3\"\n | \"time\"\n | \"decimal2\"\n | \"decimal4\"\n | \"tarifa\" = \"string\";\n}\n\n// @Input() headerText: string | undefined;\n// @Input() field: string;\n// @Input() fieldDetail: string;\n// @Input() className: string;\n// @Input() order: boolean = false;\n// @Input() width: string;\n// @Input() isNumber: boolean = false;\n// @Input() isRowNumber: boolean = false;\n// @Input() isPercent: boolean = false;\n// @Input() isInteger: boolean = false;\n// @Input() setContainer: boolean = true;\n// @Input() hideRowInDetail: boolean = false;\n// @Input() prefix: string;\n// @Input() headerWidth: number = 0;\n// @Input() headerLineBreak: boolean = false;\n// @Input() numberFormat: string = '1.2-2';\n// @Input() columnHasDateFormat: boolean = false;\n// @Input() dateFormat: string = '';\n// @Input() isSelectableColum: boolean = false;\n// @Input() isHeaderClickable: boolean = false;\n// @Input() classNameHeader: string = '';\n// @Input() isActiveHeader: boolean = false;\n// @Input() classNameActiveHeader: string = '';\n// @Input() isCellClickable: boolean = false;\n// @Input() isAveragePercent: boolean = false;\n// @Input() visible: boolean = true;\n// @Input() hasAmountNaming: boolean = false;\n// @Input() computedField: string;\n// @Input() isOrderedDesc: boolean = false;\n// @Input() isOrderedAsc: boolean = false;\n// @Input() containDetails: boolean = false;\n// @Input() isChecboxColumn: boolean = false;\n// columnsForCompare: string = '';\n// @ContentChild('detail') detail!: any;\n// @ContentChild('content') content!: any;\n","import { CommonModule, DatePipe } from \"@angular/common\";\nimport { AfterContentInit, Component, ContentChild, ContentChildren, EventEmitter, inject, Input, OnChanges, Output, QueryList, TemplateRef } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { BadgeModule } from \"primeng/badge\";\nimport { CheckboxModule } from \"primeng/checkbox\";\nimport { IconFieldModule } from \"primeng/iconfield\";\nimport { InputIcon } from \"primeng/inputicon\";\nimport { InputNumber } from \"primeng/inputnumber\";\nimport { InputText, InputTextModule } from \"primeng/inputtext\";\nimport { Paginator } from \"primeng/paginator\";\nimport { Select } from \"primeng/select\";\nimport { TableModule } from \"primeng/table\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { FormatCellPipe } from \"../../pipes/formatCell.pipe\";\nimport { TermPipe } from \"../../pipes/term.pipes\";\nimport { GlobalTermService } from \"../../services/globalTerm.service\";\nimport { SharedService } from \"../../services/shared.service\";\nimport { SearchInputModel } from \"../search/model/search.model\";\nimport { ColumnComponent, ColumnGroupComponent, RowResumenComponent } from \"./column.component\";\nimport { SortFieldModel } from \"./model/sort.model\";\n\n@Component({\n\tselector: \"intelica-table\",\n\tstandalone: true,\n\timports: [\n\t\tCommonModule,\n\t\tIconFieldModule,\n\t\tInputIcon,\n\t\tInputText,\n\t\tInputTextModule,\n\t\tInputNumber,\n\t\tPaginator,\n\t\tTableModule,\n\t\tSelect,\n\t\tBadgeModule,\n\t\tTooltipModule,\n\t\tTermPipe,\n\t\tCheckboxModule,\n\t\tFormsModule,\n\t\tFormatCellPipe,\n\t],\n\ttemplateUrl: \"./table.component.html\",\n\tproviders: [FormatCellPipe, DatePipe],\n})\nexport class TableComponent<T> implements OnChanges, AfterContentInit {\n\tprivate readonly SharedService = inject(SharedService);\n\treadonly GlobalTermService = inject(GlobalTermService);\n\t@Input() ComponentId: string = \"\";\n\t@Input() ListData: T[] = [];\n\t@Input() ShowRowPerPage: boolean = true;\n\t@Input() ShowSearch: boolean = false;\n\t@Input() ShowPagination: boolean = false;\n\t@Input() RowsPerPage: number = 10;\n\t@Input() ShowCheckbox: boolean = false;\n\t@Input() ShowIndex: boolean = false;\n\t@Input() ListDataSelected: T[] = [];\n\t@Input() SelectedIdentifier: keyof T | null = null;\n\t@Input() ClassName: string = \"\";\n\t@Input() DefaultSortField: string = \"\";\n\t@Input() DefaultSortOrder: number = 1;\n\t@Input() scrollHeight: string = \"400px\";\n\t@Input() scrollable: boolean = false;\n\t@Input() AllowedPageSizes: number[] = [10, 25, 50, 100];\n\t@Input() tableStyle: { [klass: string]: any } = {};\n\tprivate _isTableDisabled = false;\n\tprivate _pendingUncheck = false;\n\tHeaderState: Record<string, { checked: boolean; indeterminate: boolean }> = {};\n\n\t@Input()\n\tset IsTableDisabled(val: boolean) {\n\t\tthis._isTableDisabled = val;\n\n\t\tif (val) {\n\t\t\tif (!this.ColumnList || this.ColumnList.length === 0) {\n\t\t\t\tthis._pendingUncheck = true;\n\t\t\t} else {\n\t\t\t\tthis.ListDataSelectedTemp = [];\n\t\t\t\tthis.ListDataSelectedFilter = [];\n\t\t\t\tthis.ExecuteSearch();\n\t\t\t}\n\t\t}\n\t}\n\tget IsTableDisabled() {\n\t\treturn this._isTableDisabled;\n\t}\n\n\tpublic recomputeHeaderState(field: string) {\n\t\tconst total = this.ListDataFilter.length;\n\t\tif (total === 0) {\n\t\t\tthis.HeaderState[field] = { checked: false, indeterminate: false };\n\t\t\treturn;\n\t\t}\n\t\tconst checked = this.ListDataFilter.filter(r => (r as any)[field] === true).length;\n\t\tthis.HeaderState[field] = {\n\t\t\tchecked: checked === total,\n\t\t\tindeterminate: checked > 0 && checked < total,\n\t\t};\n\t}\n\n\tonBodyCheckboxChange(field: string) {\n\t\tthis.recomputeHeaderState(field);\n\t}\n\n\tprivate refreshAllHeaderStates() {\n\t\tthis.ColumnList.filter(c => c.isChecboxColumn).forEach(c => this.recomputeHeaderState(c.field));\n\t}\n\t@Output() EmitSelectedItem = new EventEmitter<T[]>();\n\t@Output() EmitListDataFilter = new EventEmitter<T[]>();\n\t@Output() EmitSearchEvent = new EventEmitter<SearchInputModel>();\n\t@Output() EmitSortEvent = new EventEmitter<SortFieldModel[]>();\n\t@ContentChildren(ColumnComponent) Columns!: QueryList<ColumnComponent>;\n\t@ContentChildren(ColumnGroupComponent)\n\tColumnGroups!: QueryList<ColumnGroupComponent>;\n\t@ContentChildren(RowResumenComponent)\n\tRowResumenGroups!: QueryList<RowResumenComponent>;\n\t@ContentChild(\"additionalTemplate\") AdditionalTemplate?: TemplateRef<any>;\n\t@ContentChild(\"additionalExtendedTemplate\")\n\tAdditionalExtendedTemplate?: TemplateRef<any>;\n\t@ContentChild(\"additionalCentralTemplate\")\n\tAdditionalCentralTemplate?: TemplateRef<any>;\n\tColumnList: ColumnComponent[] = [];\n\tColumnGroupList: ColumnGroupComponent[] = [];\n\tRowResumenList: RowResumenComponent[] = [];\n\tListDataFilter: T[] = [];\n\tListDataTable: T[] = [];\n\tListDataSelectedFilter: T[] = [];\n\tListDataSelectedTemp: T[] = [];\n\tSearchInput: SearchInputModel = { searchText: \"\" } as SearchInputModel;\n\tTotalRecords: number = 0;\n\tCurrentPage: number = 1;\n\tSortOrder: number = 1;\n\tSortField: keyof T | null = null;\n\tMaxLevel: number = 0;\n\tLevels: number[] = [];\n\tngOnChanges(): void {\n\t\tif (!this.SortField && this.DefaultSortField) {\n\t\t\tthis.SortField = this.DefaultSortField as keyof T;\n\t\t\tthis.SortOrder = this.DefaultSortOrder;\n\t\t}\n\t\tthis.ExecuteSearch();\n\t\tthis.ValidateSelect();\n\t}\n\tngAfterContentInit() {\n\t\tthis.ColumnList = this.Columns?.toArray() ?? [];\n\t\tthis.ColumnGroupList = this.ColumnGroups?.toArray() ?? [];\n\t\tthis.RowResumenList = this.RowResumenGroups?.toArray() ?? [];\n\n\t\tconst levels = this.ColumnGroupList.map(c => c.level);\n\t\tthis.MaxLevel = levels.length ? Math.max(...levels) + 1 : 1;\n\t\tthis.Levels = Array.from({ length: this.MaxLevel }, (_, i) => i);\n\n\t\tthis.ColumnList.filter(c => c.isChecboxColumn).forEach(c => {\n\t\t\tif (!this.HeaderState[c.field]) {\n\t\t\t\tthis.HeaderState[c.field] = { checked: false, indeterminate: false };\n\t\t\t}\n\t\t});\n\n\t\tif (this._isTableDisabled && this._pendingUncheck) {\n\t\t\tthis.ListDataSelectedTemp = [];\n\t\t\tthis.ListDataSelectedFilter = [];\n\t\t\tthis._pendingUncheck = false;\n\t\t\tthis.ExecuteSearch();\n\t\t} else {\n\t\t\tthis.refreshAllHeaderStates();\n\t\t}\n\t}\n\tOnSort(field: string) {\n\t\tif (this.SortField === field) {\n\t\t\tthis.SortOrder *= -1;\n\t\t} else {\n\t\t\tthis.SortField = field as keyof T;\n\t\t\tthis.SortOrder = 1;\n\t\t}\n\t\tthis.SortPages();\n\t}\n\tOnPageChange(event: { page?: number; rows?: number } | number) {\n\t\tif (typeof event === \"number\") {\n\t\t\tthis.CurrentPage = event;\n\t\t} else {\n\t\t\tif (typeof event?.rows === \"number\") {\n\t\t\t\tthis.RowsPerPage = event.rows;\n\t\t\t}\n\t\t\tif (typeof event?.page === \"number\") {\n\t\t\t\tthis.CurrentPage = event.page + 1;\n\t\t\t}\n\t\t}\n\t\tthis.UpdatePages();\n\t}\n\tExecuteSearch(searchText?: string): void {\n\t\tif (typeof searchText === \"string\") {\n\t\t\tthis.SearchInput = { ...(this.SearchInput ?? {}), searchText };\n\t\t}\n\t\tthis.ListDataFilter = [...this.ListData];\n\t\tconst search = this.SearchInput?.searchText?.trim()?.toLowerCase();\n\t\tif (search) {\n\t\t\tthis.ListDataFilter = this.ListData.filter(item => {\n\t\t\t\tconst searchableText = Object.values(item as any)\n\t\t\t\t\t.filter(v => v !== null && v !== undefined)\n\t\t\t\t\t.join(\" \")\n\t\t\t\t\t.toLowerCase();\n\t\t\t\treturn searchableText.includes(search);\n\t\t\t});\n\t\t\tthis.CurrentPage = 1;\n\t\t}\n\t\tthis.SortPages();\n\t}\n\tSortPages() {\n\t\tif (!this.SortField) {\n\t\t\tthis.UpdatePages();\n\t\t\treturn;\n\t\t}\n\n\t\tconst order = this.SortOrder === 1 ? \"asc\" : \"desc\";\n\t\tconst field = this.SortField as keyof T;\n\n\t\tconst colConfig = this.ColumnList.find(c => c.field === field);\n\t\tif (!colConfig) {\n\t\t\tconsole.warn(\"Columna no encontrada:\", field);\n\t\t\tthis.UpdatePages();\n\t\t\treturn;\n\t\t}\n\t\tconst formatType = colConfig.formatType;\n\t\tconst sampleValue = this.ListDataFilter.find(item => item[field] !== null && item[field] !== undefined)?.[field];\n\t\tif (typeof sampleValue === \"number\") {\n\t\t\tthis.ListDataFilter = this.SharedService.SortRecursiveNumber([...this.ListDataFilter], field, order);\n\t\t} else {\n\t\t\tif (formatType === \"date\") {\n\t\t\t\tthis.ListDataFilter = this.SharedService.SortRecursiveDate([...this.ListDataFilter], field, order);\n\t\t\t} else {\n\t\t\t\tthis.ListDataFilter = this.SharedService.SortRecursivePrimeNg([...this.ListDataFilter], field, order);\n\t\t\t}\n\t\t}\n\t\tthis.UpdatePages();\n\t}\n\tUpdatePages() {\n\t\tif (this.ShowPagination) {\n\t\t\tthis.TotalRecords = this.ListDataFilter.length;\n\t\t\tconst start = (this.CurrentPage - 1) * this.RowsPerPage;\n\t\t\tconst end = start + this.RowsPerPage;\n\t\t\tthis.ListDataTable = this.ListDataFilter.slice(start, end);\n\t\t} else {\n\t\t\tthis.ListDataTable = this.ListDataFilter;\n\t\t}\n\t\tif (this.ShowCheckbox) this.ListDataSelectedFilter = [...this.ListDataSelectedTemp];\n\t\tthis.refreshAllHeaderStates();\n\t\tthis.EmitSearchValues();\n\t}\n\tValidateSelect() {\n\t\tif (!this.SelectedIdentifier && this.ShowCheckbox) {\n\t\t\tthis.ShowCheckbox = false;\n\t\t\treturn;\n\t\t}\n\t\tconst selectedIds = new Set(this.ListDataSelected.map(item => item[this.SelectedIdentifier as keyof T]));\n\t\tthis.ListDataSelectedTemp = this.ListData.filter(item => selectedIds.has(item[this.SelectedIdentifier as keyof T]));\n\t\tthis.ListDataSelectedFilter = [...this.ListDataSelectedTemp];\n\t}\n\tSelectAll(event: any) {\n\t\tif (!this.SelectedIdentifier && this.ShowCheckbox) return;\n\t\tif (event.checked) {\n\t\t\tconst idsSelected = new Set(this.ListDataSelectedTemp.map(item => item[this.SelectedIdentifier as keyof T]));\n\t\t\tthis.ListDataFilter.forEach(item => {\n\t\t\t\tif (!idsSelected.has(item[this.SelectedIdentifier as keyof T])) {\n\t\t\t\t\tthis.ListDataSelectedTemp.push(item);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tconst idsSelected = new Set(this.ListDataFilter.map(item => item[this.SelectedIdentifier as keyof T]));\n\t\t\tthis.ListDataSelectedTemp = this.ListDataSelectedTemp.filter(item => !idsSelected.has(item[this.SelectedIdentifier as keyof T]));\n\t\t}\n\t\tthis.ListDataSelectedFilter = [...this.ListDataSelectedTemp];\n\t\tthis.EmitSelectedItem.emit(this.ListDataSelectedTemp);\n\t}\n\tOnHeaderSelectionToggle(checked: boolean) {\n\t\tthis.SelectAll({ checked });\n\t}\n\tOnRowSelect(event: any) {\n\t\tif (!this.SelectedIdentifier && this.ShowCheckbox) return;\n\t\tconst selectedItem = event.data;\n\t\tconst exists = this.ListDataSelectedTemp.some(item => item[this.SelectedIdentifier as keyof T] === selectedItem[this.SelectedIdentifier as keyof T]);\n\t\tif (!exists) {\n\t\t\tthis.ListDataSelectedTemp.push(selectedItem);\n\t\t}\n\t\tthis.EmitSelectedItem.emit(this.ListDataSelectedTemp);\n\t}\n\tOnRowUnselect(event: any) {\n\t\tif (!this.SelectedIdentifier && this.ShowCheckbox) return;\n\t\tconst unselectedItem = event.data;\n\t\tthis.ListDataSelectedTemp = this.ListDataSelectedTemp.filter(item => item[this.SelectedIdentifier as keyof T] !== unselectedItem[this.SelectedIdentifier as keyof T]);\n\t\tthis.EmitSelectedItem.emit(this.ListDataSelectedTemp);\n\t}\n\tResetTable() {\n\t\tthis.CurrentPage = 1;\n\t\tthis.SearchInput = { ...(this.SearchInput ?? {}), searchText: \"\" };\n\t\tthis.ExecuteSearch();\n\t}\n\tEmitSearchValues() {\n\t\tthis.EmitListDataFilter.emit(this.ListDataFilter);\n\t\tthis.EmitSearchEvent.emit(this.SearchInput);\n\t\tthis.EmitSortEvent.emit([\n\t\t\t{\n\t\t\t\tsortOrder: this.SortOrder,\n\t\t\t\tsortField: this.SortField?.toString() ?? \"\",\n\t\t\t},\n\t\t]);\n\t}\n\tOnHeaderCheckboxChange(checked: boolean, field: string) {\n\t\tthis.ListDataFilter.forEach(r => ((r as any)[field] = checked));\n\n\t\tthis.HeaderState[field] = { checked, indeterminate: false };\n\t\tthis.UpdatePages();\n\t}\n\n\tprivate getFilteredSelectedCount(): number {\n\t\tif (!this.SelectedIdentifier || this.ListDataFilter.length === 0 || this.ListDataSelectedTemp.length === 0) return 0;\n\t\tconst selectedIds = new Set(this.ListDataSelectedTemp.map(item => item[this.SelectedIdentifier as keyof T]));\n\t\treturn this.ListDataFilter.filter(item => selectedIds.has(item[this.SelectedIdentifier as keyof T])).length;\n\t}\n\tget IsHeaderSelectionChecked(): boolean {\n\t\treturn this.ListDataFilter.length > 0 && this.getFilteredSelectedCount() === this.ListDataFilter.length;\n\t}\n\tget IsHeaderSelectionIndeterminate(): boolean {\n\t\tconst selectedCount = this.getFilteredSelectedCount();\n\t\treturn selectedCount > 0 && selectedCount < this.ListDataFilter.length;\n\t}\n\n\tFilterData(field: string) {\n\t\tlet c = this.ListData.filter(item => (item as Record<string, boolean>)[field]);\n\t}\n\tIsInderteminate(column: string) {\n\t\tconst rowsChek = this.ListData.filter(item => (item as Record<string, boolean>)[column]).length;\n\t\tconst element = [...document.querySelectorAll(\"[data-check]\")].find(x => x.getAttribute(\"data-check\") == column);\n\t\tif (element == undefined) return;\n\t\tif (rowsChek > 0 && rowsChek < this.ListData.length) {\n\t\t\telement.setAttribute(\"class\", \"prCheckbox--indeterminate\");\n\t\t} else {\n\t\t\telement.removeAttribute(\"class\");\n\t\t}\n\t}\n\tOnRowsPerPageChange(value: number) {\n\t\tthis.RowsPerPage = value;\n\t\tthis.CurrentPage = 1;\n\t\tthis.UpdatePages();\n\t}\n\tResetTableSelected() {\n\t\tthis.ListDataSelectedTemp = [];\n\t\tthis.ListDataSelectedFilter = [...this.ListDataSelectedTemp];\n\t}\n\tClearSearch() {\n\t\tthis.SearchInput.searchText = \"\";\n\t}\n\n\tget TotalPages(): number {\n\t\treturn Math.ceil(this.TotalRecords / this.RowsPerPage);\n\t}\n\tonChangeSelectPage(event: any) {\n\t\tconst eventValue: string = event.target.value;\n\t\tif (eventValue === \"\" || isNaN(parseInt(eventValue)) || eventValue === \"0\" || eventValue.indexOf(\"-\") >= 0) {\n\t\t\tthis.CurrentPage = 1;\n\t\t\tthis.UpdatePages();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.CurrentPage = parseInt(eventValue);\n\n\t\tif (this.CurrentPage > this.TotalPages) {\n\t\t\tthis.CurrentPage = this.TotalPages;\n\t\t}\n\t\tthis.UpdatePages();\n\t}\n\tget RenderPanel(): boolean {\n\t\treturn Boolean(this.AdditionalTemplate) || this.ShowSearch || Boolean(this.AdditionalCentralTemplate) || Boolean(this.AdditionalExtendedTemplate);\n\t}\n}\n","<div class=\"prTable\">\n\t@if (RenderPanel) {\n\t\t<div class=\"\">\n\t\t\t<div class=\"prCard__row justify-content-end\">\n\t\t\t\t<div class=\"prCard__actionflex\">\n\t\t\t\t\t@if (AdditionalTemplate) {\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"AdditionalTemplate\"></ng-container>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t\t@if (ShowSearch) {\n\t\t\t\t\t<div class=\"ptSearch searchTableGA\">\n\t\t\t\t\t\t<p-iconfield>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\tclass=\"prInputText\"\n\t\t\t\t\t\t\t\tpInputText\n\t\t\t\t\t\t\t\tplaceholder=\"{{ 'LBL_SEARCH_SELECT' | term: GlobalTermService.languageCode }}\"\n\t\t\t\t\t\t\t\t[(ngModel)]=\"SearchInput.searchText\"\n\t\t\t\t\t\t\t\t(keydown.enter)=\"ExecuteSearch()\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<p-inputicon>\n\t\t\t\t\t\t\t\t<button class=\"ptSearch__icon ptSearch__icon--close\">\n\t\t\t\t\t\t\t\t\t<i class=\"icon icon-cancel\" *ngIf=\"SearchInput.searchText\" (click)=\"ClearSearch()\"></i>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<span class=\"ptSearch__icon ptSearch__icon--divider\" *ngIf=\"SearchInput.searchText\"></span>\n\t\t\t\t\t\t\t\t<button class=\"ptSearch__icon ptSearch__icon--search\">\n\t\t\t\t\t\t\t\t\t<i class=\"icon icon-search\"></i>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</p-inputicon>\n\t\t\t\t\t\t</p-iconfield>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t@if (AdditionalCentralTemplate) {\n\t\t\t\t\t<div class=\"prTableTools__new prTableTools__new--right\">\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"AdditionalCentralTemplate\"></ng-container>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</div>\n\n\t\t\t@if (AdditionalExtendedTemplate) {\n\t\t\t\t<div class=\"prTableTools justify-content-start\">\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"AdditionalExtendedTemplate\"></ng-container>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t}\n\t<p-table\n\t\tclass=\"prTable\"\n\t\t[ngClass]=\"ClassName\"\n\t\t[value]=\"ListDataTable\"\n\t\tresponsiveLayout=\"scroll\"\n\t\t[(selection)]=\"ListDataSelectedFilter\"\n\t\t(onRowSelect)=\"OnRowSelect($event)\"\n\t\t(onRowUnselect)=\"OnRowUnselect($event)\"\n\t\t[sortField]=\"DefaultSortField\"\n\t\t[scrollable]=\"scrollable\"\n\t\t[scrollHeight]=\"scrollable ? scrollHeight : 'auto'\"\n\t\t[tableStyle]=\"tableStyle\"\n\t\t[sortOrder]=\"DefaultSortOrder\"\n\t>\n\t\t<ng-template pTemplate=\"header\">\n\t\t\t@for (level of Levels; track $index) {\n\t\t\t\t<tr>\n\t\t\t\t\t@for (col of ColumnGroupList; track $index) {\n\t\t\t\t\t\t@if (col.level === level) {\n\t\t\t\t\t\t\t<th [attr.colspan]=\"col.colspan\" [attr.rowspan]=\"col.rowspan\" [pSortableColumn]=\"col.sortable ? col.field : ''\" [style.min-width]=\"col.minWidth\" (click)=\"col.sortable && OnSort(col.field)\">\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<span tooltipStyleClass=\"prTooltip\" [pTooltip]=\"col.headerTooltip\" [tooltipPosition]=\"col.headerTooltipPosition || 'top'\">\n\t\t\t\t\t\t\t\t\t\t{{ col.header }}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t<p-sortIcon *ngIf=\"col.sortable\" [field]=\"col.field\"></p-sortIcon>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t@if (ShowCheckbox && level === 0 && ColumnGroupList.length != 0) {\n\t\t\t\t\t\t<th class=\"text-center\" style=\"width: 4%\" [attr.rowspan]=\"MaxLevel === 1 ? 2 : MaxLevel\">\n\t\t\t\t\t\t\t<p-checkbox\n\t\t\t\t\t\t\t\tclass=\"prCheckbox\"\n\t\t\t\t\t\t\t\t[binary]=\"true\"\n\t\t\t\t\t\t\t\t(click)=\"$event.stopPropagation()\"\n\t\t\t\t\t\t\t\t[ngModel]=\"IsHeaderSelectionChecked\"\n\t\t\t\t\t\t\t\t(ngModelChange)=\"OnHeaderSelectionToggle($event)\"\n\t\t\t\t\t\t\t\t[disabled]=\"IsTableDisabled || ListDataFilter.length === 0\"\n\t\t\t\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t\t\t\t'prCheckbox--indeterminate': IsHeaderSelectionIndeterminate,\n\t\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\t></p-checkbox>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t}\n\t\t\t\t</tr>\n\t\t\t}\n\t\t\t<tr>\n\t\t\t\t@for (col of ColumnList; track $index) {\n\t\t\t\t\t@if (col.showHeader) {\n\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t[class]=\"col.className\"\n\t\t\t\t\t\t\t[pSortableColumn]=\"!col.isChecboxColumn && col.sortable ? col.field : ''\"\n\t\t\t\t\t\t\t[style.width]=\"col.width\"\n\t\t\t\t\t\t\t[style.min-width]=\"col.minWidth\"\n\t\t\t\t\t\t\t(click)=\"!col.isChecboxColumn && col.sortable && OnSort(col.field)\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div class=\"prTable__header\">\n\t\t\t\t\t\t\t\t<span tooltipStyleClass=\"prTooltip\" [pTooltip]=\"col.headerTooltip\" [tooltipPosition]=\"col.headerTooltipPosition || 'top'\">\n\t\t\t\t\t\t\t\t\t{{ col.header }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t@if (!col.showIndex) {\n\t\t\t\t\t\t\t\t\t@if (col.isChecboxColumn) {\n\t\t\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\t\t\t<p-checkbox\n\t\t\t\t\t\t\t\t\t\t\tclass=\"prCheckbox\"\n\t\t\t\t\t\t\t\t\t\t\t[binary]=\"true\"\n\t\t\t\t\t\t\t\t\t\t\t(click)=\"$event.stopPropagation()\"\n\t\t\t\t\t\t\t\t\t\t\t[(ngModel)]=\"HeaderState[col.field].checked\"\n\t\t\t\t\t\t\t\t\t\t\t(ngModelChange)=\"OnHeaderCheckboxChange($event, col.field)\"\n\t\t\t\t\t\t\t\t\t\t\t[attr.data-check]=\"col.field\"\n\t\t\t\t\t\t\t\t\t\t\t[disabled]=\"IsTableDisabled\"\n\t\t\t\t\t\t\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t\t\t\t\t\t\t'prCheckbox--indeterminate': HeaderState[col.field].indeterminate,\n\t\t\t\t\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\t\t\t\t></p-checkbox>\n\t\t\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t\t\t<p-sortIcon *ngIf=\"col.sortable\" [field]=\"col.field\"></p-sortIcon>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</th>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@if (ShowCheckbox && ColumnGroupList.length == 0) {\n\t\t\t\t\t<th class=\"text-center\" style=\"width: 4%\">\n\t\t\t\t\t\t<p-checkbox\n\t\t\t\t\t\t\tclass=\"prCheckbox\"\n\t\t\t\t\t\t\t[binary]=\"true\"\n\t\t\t\t\t\t\t(click)=\"$event.stopPropagation()\"\n\t\t\t\t\t\t\t[ngModel]=\"IsHeaderSelectionChecked\"\n\t\t\t\t\t\t\t(ngModelChange)=\"OnHeaderSelectionToggle($event)\"\n\t\t\t\t\t\t\t[disabled]=\"IsTableDisabled || ListDataFilter.length === 0\"\n\t\t\t\t\t\t\t[ngClass]=\"{\n\t\t\t\t\t\t\t\t'prCheckbox--indeterminate': IsHeaderSelectionIndeterminate,\n\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t></p-checkbox>\n\t\t\t\t\t</th>\n\t\t\t\t}\n\t\t\t</tr>\n\t\t\t@if (RowResumenList.length && ListDataFilter.length) {\n\t\t\t\t<tr class=\"fixedRow\">\n\t\t\t\t\t@for (col of RowResumenList; track $index) {\n\t\t\t\t\t\t<td [ngClass]=\"col.className\" [attr.colspan]=\"col.colspan\" [attr.rowspan]=\"col.rowspan\">\n\t\t\t\t\t\t\t@if (col.templateRef) {\n\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"col.templateRef\"></ng-container>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t<ng-template #defaultContent></ng-template>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</td>\n\t\t\t\t\t}\n\t\t\t\t</tr>\n\t\t\t}\n\t\t</ng-template>\n\t\t<ng-template pTemplate=\"body\" let-rowData let-rowIndex=\"rowIndex\">\n\t\t\t<tr>\n\t\t\t\t@for (col of ColumnList; track $index) {\n\t\t\t\t\t<td [ngClass]=\"col.className\">\n\t\t\t\t\t\t@if (col.showIndex) {\n\t\t\t\t\t\t\t{{ rowIndex + 1 + (CurrentPage - 1) * RowsPerPage }}\n\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t@if (col.templateRef) {\n\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"col.templateRef; context: { $implicit: rowData }\"></ng-container>\n\t\t\t\t\t\t\t} @else if (col.isChecboxColumn) {\n\t\t\t\t\t\t\t\t<p-checkbox [binary]=\"true\" [(ngModel)]=\"rowData[col.field]\" (onChange)=\"onBodyCheckboxChange(col.field)\" [disabled]=\"IsTableDisabled\"></p-checkbox>\n\t\t\t\t\t\t\t} @else {\n\t\t\t\t\t\t\t\t<span class=\"text-breakWord\" tooltipStyleClass=\"prTooltip\" [pTooltip]=\"col.tooltip\" [tooltipPosition]=\"col.tooltipPosition || 'top'\">\n\t\t\t\t\t\t\t\t\t{{ rowData[col.field] | formatCell: col.formatType }}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t</td>\n\t\t\t\t}\n\t\t\t\t@if (ShowCheckbox) {\n\t\t\t\t\t<td class=\"text-center\">\n\t\t\t\t\t\t<p-tableCheckbox [value]=\"rowData\" class=\"prCheckbox\" />\n\t\t\t\t\t</td>\n\t\t\t\t}\n\t\t\t</tr>\n\t\t</ng-template>\n\t\t<ng-template #emptymessage>\n\t\t\t<tr>\n\t\t\t\t<td [attr.colspan]=\"ColumnList.length + (ShowCheckbox ? 1 : 0)\" class=\"text-center\">\n\t\t\t\t\t{{ \"Nodata\" | term: GlobalTermService.languageCode }}\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</ng-template>\n\t</p-table>\n\t<div class=\"d-flex justify-content-end\">\n\t\t@if (TotalRecords !== 0 && ShowPagination) {\n\t\t\t<div class=\"ptTablePaginator\">\n\t\t\t\t<p-paginator\n\t\t\t\t\tclass=\"prPaginator paginatorTableGA\"\n\t\t\t\t\t[first]=\"(CurrentPage - 1) * RowsPerPage\"\n\t\t\t\t\t[rows]=\"RowsPerPage\"\n\t\t\t\t\t[totalRecords]=\"TotalRecords\"\n\t\t\t\t\t(onPageChange)=\"OnPageChange($event)\"\n\t\t\t\t\t[showJumpToPageInput]=\"false\"\n\t\t\t\t\t[showCurrentPageReport]=\"false\"\n\t\t\t\t\t[showPageLinks]=\"false\"\n\t\t\t\t\t[showFirstLastIcon]=\"false\"\n\t\t\t\t\t[templateLeft]=\"templateLeft\"\n\t\t\t\t>\n\t\t\t\t\t<ng-template #previouspagelinkicon>\n\t\t\t\t\t\t<i class=\"icon icon-arrow-left paginatorArrowGA\"></i>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template #nextpagelinkicon>\n\t\t\t\t\t\t<i class=\"icon icon-arrow-right paginatorArrowGA\"></i>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template pTemplate=\"templateLeft\" let-state #templateLeft>\n\t\t\t\t\t\t@if (ShowRowPerPage) {\n\t\t\t\t\t\t\t<span>{{ \"ROWS_PER_PAGE\" | term: GlobalTermService.languageCode }}</span>\n\t\t\t\t\t\t\t<p-select\n\t\t\t\t\t\t\t\tpanelStyleClass=\"prSelect paginatorSelectTableGA\"\n\t\t\t\t\t\t\t\tclass=\"prSelect\"\n\t\t\t\t\t\t\t\t[options]=\"AllowedPageSizes\"\n\t\t\t\t\t\t\t\t[ngModel]=\"RowsPerPage\"\n\t\t\t\t\t\t\t\tappendTo=\"body\"\n\t\t\t\t\t\t\t\t(onChange)=\"OnRowsPerPageChange($event.value)\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t{{ \"Page\" | term: GlobalTermService.languageCode }}\n\t\t\t\t\t\t\t<p-inputnumber class=\"p-paginator-jtp-input\" inputId=\"integeronly\" [(ngModel)]=\"CurrentPage\" [allowEmpty]=\"false\" [min]=\"1\" (keyup.enter)=\"onChangeSelectPage($event)\" />\n\t\t\t\t\t\t\t{{ \"Of\" | term: GlobalTermService.languageCode }} {{ TotalPages }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</ng-template>\n\t\t\t\t</p-paginator>\n\t\t\t</div>\n\t\t}\n\t</div>\n</div>\n","import { Directive, ElementRef, HostListener } from \"@angular/core\";\n@Directive({\n\tselector: \"[positiveNumber]\",\n})\nexport class PositiveNumberDirective {\n\tconstructor(private el: ElementRef) {}\n\t@HostListener(\"input\", [\"$event\"]) onInputChange(event: Event) {\n\t\tconst initalValue = this.el.nativeElement.value;\n\t\tthis.el.nativeElement.value = initalValue.replace(/[^0-9]*/g, \"\");\n\t\tif (initalValue !== this.el.nativeElement.value) {\n\t\t\tevent.stopPropagation();\n\t\t}\n\t}\n}\n","import { Component, EventEmitter, inject, Input, OnChanges, Output, SimpleChanges } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { ButtonModule } from \"primeng/button\";\nimport { PositiveNumberDirective } from \"../../directives/positive-number.directive\";\nimport { GlobalTermService } from \"../../services/globalTerm.service\";\nimport { TermPipe } from \"../../pipes/term.pipes\";\nimport { CommonModule } from \"@angular/common\";\n\n@Component({\n\tselector: \"intelica-paginator\",\n\timports: [FormsModule, ButtonModule, PositiveNumberDirective, CommonModule, TermPipe],\n\ttemplateUrl: \"./paginator.component.html\",\n})\nexport class PaginatorComponent implements OnChanges {\n\treadonly GlobalTermService = inject(GlobalTermService);\n\t/**\n\t * Número total de elementos que se están paginando.\n\t * @type {number}\n\t */\n\t@Input() TotalItems: number = 0;\n\n\t/**\n\t * Página actual.\n\t * @type {number}\n\t */\n\t@Input() CurrentPage: number = 1;\n\n\t/**\n\t * Número de elementos por página.\n\t * @type {number}\n\t * @default 10\n\t */\n\t@Input() ItemsPerPage: number = 10;\n\n\t/**\n\t * Evento emitido cuando cambia la página.\n\t * @type {EventEmitter<any>}\n\t */\n\t@Output() PageChange: EventEmitter<any> = new EventEmitter();\n\n\t/**\n\t * Número total de páginas calculado internamente.\n\t * @type {number}\n\t */\n\tTotalPages: number = 1;\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tthis.TotalPageCalculator();\n\t}\n\n\tTotalPageCalculator() {\n\t\tthis.TotalPages = Math.ceil(this.TotalItems / this.ItemsPerPage);\n\t}\n\n\tGoToFirstPage() {\n\t\tthis.CurrentPage = 1;\n\t\tthis.EmitPageChange();\n\t}\n\n\tGoToPreviousPage() {\n\t\tconst pageNumber = Number(this.CurrentPage);\n\t\tthis.CurrentPage = isNaN(pageNumber) || pageNumber === 0 ? 1 : pageNumber;\n\t\tif (this.CurrentPage > 1) this.CurrentPage -= 1;\n\t\tthis.EmitPageChange();\n\t}\n\n\tGoToNextPage() {\n\t\tconst pageNumber = Number(this.CurrentPage);\n\t\tthis.CurrentPage = isNaN(pageNumber) ? 0 : pageNumber;\n\t\tif (this.CurrentPage < this.TotalPages) this.CurrentPage += 1;\n\t\tthis.EmitPageChange();\n\t}\n\n\tGoToLastPage() {\n\t\tthis.CurrentPage = this.TotalPages;\n\t\tthis.EmitPageChange();\n\t}\n\n\tEmitPageChange() {\n\t\tthis.PageChange.emit(this.CurrentPage);\n\t}\n\n\tonKeyUp(event: any) {\n\t\tconst eventValue: string = event.target.value;\n\t\tif (eventValue === \"\" || isNaN(parseInt(eventValue)) || eventValue === \"0\" || eventValue.indexOf(\"-\") >= 0) {\n\t\t\tthis.CurrentPage = 1;\n\t\t\tthis.EmitPageChange();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.CurrentPage = parseInt(eventValue);\n\n\t\tif (this.CurrentPage > this.TotalPages) {\n\t\t\tthis.CurrentPage = this.TotalPages;\n\t\t}\n\t\tthis.EmitPageChange();\n\t}\n}\n","<div \n\tclass=\"prPaginator\" \n\t[ngClass]=\"{\n\t\t'prPaginator--leftdis': CurrentPage === 1 || TotalItems === 0,\n\t\t'prPaginator--rightdis': CurrentPage === TotalPages || TotalItems === 0\n\t}\">\n\t<div class=\"prPaginator__controls\">\n\t\t<button pButton type=\"button\" class=\"prPaginator__btn prPaginator__btn--first\" [disabled]=\"CurrentPage === 1 || TotalItems === 0\" (click)=\"GoToFirstPage()\"></button>\n\t\t<button pButton type=\"button\" class=\"prPaginator__btn prPaginator__btn--previous\" [disabled]=\"CurrentPage === 1 || TotalItems === 0\" (click)=\"GoToPreviousPage()\"></button>\n\t\t<span class=\"prPaginator__label--left\">{{ \"Previous\" | term : GlobalTermService.languageCode }}</span>\n\t\t<input pInputText type=\"text\" [disabled]=\"TotalItems === 0\" (keydown.enter)=\"$event.preventDefault()\" [(ngModel)]=\"CurrentPage\" positiveNumber class=\"prPaginator__input\" (keyup.enter)=\"onKeyUp($event)\" />\n\t\t<span class=\"prPaginator__total\">{{ \"Of\" | term : GlobalTermService.languageCode }} {{ TotalPages }}</span>\n\t\t<span class=\"prPaginator__label--right\">{{ \"Next\" | term : GlobalTermService.languageCode }}</span>\n\t\t<button pButton type=\"button\" class=\"prPaginator__btn prPaginator__btn--next\" [disabled]=\"CurrentPage === TotalPages || TotalItems === 0\" (click)=\"GoToNextPage()\"></button>\n\t\t<button pButton type=\"button\" class=\"prPaginator__btn prPaginator__btn--last\" [disabled]=\"CurrentPage === TotalPages || TotalItems === 0\" (click)=\"GoToLastPage()\"></button>\n\t</div>\n</div>\n","export enum SearchInputEnum {\n\tOperatorId = \"operatorId\",\n\tFieldId = \"fieldId\",\n\tSearchText = \"searchText\",\n}\n","import { Component, EventEmitter, forwardRef, inject, Input, OnDestroy, OnInit, Output } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule, FormBuilder, FormGroup, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { RadioButtonModule } from \"primeng/radiobutton\";\nimport { Popover } from \"primeng/popover\";\nimport { InputText } from \"primeng/inputtext\";\nimport { CommonModule } from \"@angular/common\";\nimport { Subscription } from \"rxjs\";\nimport { SearchInputModel } from \"./model/search.model\";\nimport { SearchInputEnum } from \"./enums/search.enum\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { TermPipe } from \"../../pipes/term.pipes\";\nimport { GlobalTermService } from \"../../services/globalTerm.service\";\n\n@Component({\n\tselector: \"intelica-search\",\n\timports: [FormsModule, ReactiveFormsModule, RadioButtonModule, Popover, InputText, CommonModule, TooltipModule, TermPipe],\n\ttemplateUrl: \"./search.component.html\",\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => SearchComponent),\n\t\t},\n\t],\n\t// styleUrl: \"./search.component.css\",\n})\nexport class SearchComponent implements OnDestroy, OnInit {\n\treadonly GlobalTermService = inject(GlobalTermService);\n\t/**\n\t * Indica el componente del que proviene.\n\t * @type {string}\n\t */\n\t@Input() ComponentId: string = \"\";\n\t@Input() ShowTooltip: boolean = false;\n\n\t/**\n\t * Opciones para campos de búsqueda.\n\t * @type {{ id: number; value: string }[]}\n\t */\n\t@Input() SearchFieldOptions!: { id: number; value: string }[];\n\n\t/**\n\t * Indica si realizar la búsqueda al soltar una tecla.\n\t * @type {boolean}\n\t */\n\t@Input() SearchOnKeyup!: boolean;\n\n\t/**\n\t * @deprecated No debe ser utilizado. Es sólo para uso interno y no para módulos.\n\t * @type {boolean}\n\t * @default false\n\t */\n\t@Input() SimpleSearchInput: boolean = false;\n\n\t/**\n\t * Placeholder para el componente de búsqueda.\n\t * @type {string}\n\t */\n\t@Input() Placeholder: string = \"\";\n\n\t/**\n\t * Evento emitido al realizar una búsqueda.\n\t * @type {EventEmitter<{ operatorId: number; operatorText: string, fieldId: number, fieldText: string, searchText: string }>}\n\t */\n\t@Output(\"OnSearch\") OnSearchEvent = new EventEmitter<SearchInputModel>();\n\n\tprivate readonly FormBuilder = inject(FormBuilder);\n\n\t// Option!: string;\n\t// Placeholder!: string;\n\n\t/**\n\t * Indica si el dropdown está abierto\n\t * @type {boolean}\n\t * @default false\n\t */\n\tIsDropdownOpen: boolean = false;\n\n\t/**\n\t * Formulario para manejar los parámetros de búsqueda\n\t * @type {FormGroup}\n\t */\n\tSearchForm!: FormGroup;\n\n\t/**\n\t * Suscripción a los valores del formulario.\n\t * @type {Subscription}\n\t */\n\tFormValuesSubscription!: Subscription;\n\n\t/**\n\t * Opciones para operadores de búsqueda.\n\t * @type {{ id: number; value: string }[]}\n\t */\n\tSearchOperatorOptions!: { id: number; value: string }[];\n\n\t/**\n\t * Función llamada cuando cambia el valor del campo de búsqueda.\n\t * @type {() => void}\n\t */\n\tOnChange: (value: SearchInputModel) => void = () => {};\n\n\t/**\n\t * Función llamada cuando el componente de búsqueda es tocado.\n\t * @type {() => void}\n\t */\n\tOnTouched: () => void = () => {};\n\n\tconstructor() {}\n\n\tngOnInit(): void {\n\t\tthis.SearchForm = this.FormBuilder.group({\n\t\t\toperatorId: 0,\n\t\t\tfieldId: 0,\n\t\t\tsearchText: \"\",\n\t\t});\n\n\t\tthis.FormValuesSubscription = this.SearchForm.valueChanges.subscribe(value => {\n\t\t\tthis.OnChange(value);\n\t\t});\n\n\t\t//loadTerms\n\t\tif (this.Placeholder === \"\") this.Placeholder = \"SearchPlaceholder\";\n\t\tthis.SearchOperatorOptions ??= this.GetSearchOperatorOptions();\n\t\tthis.SearchFieldOptions ??= this.GetSearchFieldOptions();\n\n\t\tthis.InitializeForm();\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.FormValuesSubscription.unsubscribe();\n\t}\n\n\tInitializeForm() {\n\t\tthis.SearchForm.setValue({\n\t\t\toperatorId: this.SearchOperatorOptions[0].id,\n\t\t\tfieldId: this.SearchFieldOptions.length > 0 ? this.SearchFieldOptions[0].id : 0,\n\t\t\tsearchText: \"\",\n\t\t});\n\t\tthis.OnSearch();\n\t}\n\n\tDropDownChange(isOpen: boolean) {\n\t\tthis.IsDropdownOpen = isOpen;\n\t}\n\n\tOnSearchEnter(): void {\n\t\tif (!this.SearchOnKeyup) this.OnSearch();\n\t}\n\n\tOnSearchKeyup() {\n\t\tif (this.SearchOnKeyup) this.OnSearch();\n\t}\n\n\tOnSearch(): void {\n\t\tconst value = this.SearchForm.value as SearchInputModel;\n\t\tvalue.operatorText = this.SearchOperatorOptions.find(o => o.id === value.operatorId)?.value || \"\";\n\t\tvalue.fieldText = this.SearchFieldOptions.find(f => f.id === value.fieldId)?.value || \"\";\n\t\tthis.OnChange(value);\n\t\tthis.OnTouched();\n\t\tthis.OnSearchEvent.emit(value);\n\t}\n\n\tClearSearchText(emitEvent: boolean = true) {\n\t\tthis.SearchForm.get(SearchInputEnum.SearchText)?.setValue(\"\");\n\t\tif (emitEvent) {\n\t\t\tthis.OnSearch();\n\t\t}\n\t}\n\n\tget HasSearchText(): boolean {\n\t\tconst searchText = this.SearchForm.get(SearchInputEnum.SearchText)?.value;\n\t\treturn searchText && searchText.length > 0;\n\t}\n\n\tGetSelectedOperatorValue(): string {\n\t\tconst selectedId = this.SearchForm.get(SearchInputEnum.OperatorId)?.value;\n\t\tconst selectedItem = this.SearchOperatorOptions?.find(item => item.id === selectedId);\n\t\treturn selectedItem ? selectedItem.value : \"\";\n\t}\n\n\tGetSelectedFieldValue(): string {\n\t\tconst selectedId = this.SearchForm.get(SearchInputEnum.FieldId)?.value;\n\t\tconst selectedItem = this.SearchFieldOptions?.find(item => item.id === selectedId);\n\t\treturn selectedItem ? selectedItem.value : \"\";\n\t}\n\n\tGetSelectedValues(): string {\n\t\treturn `${this.GetSelectedOperatorValue()}, ${this.GetSelectedFieldValue()}`;\n\t}\n\n\tSetSearchTextValue(text: string) {\n\t\tthis.SearchForm.get(SearchInputEnum.SearchText)?.setValue(text);\n\t}\n\n\tSetOperatorValue(value: number) {\n\t\tthis.SearchForm.get(SearchInputEnum.OperatorId)?.setValue(value ?? 0);\n\t}\n\n\tSetFieldValue(value: number) {\n\t\tthis.SearchForm.get(SearchInputEnum.FieldId)?.setValue(value ?? 0);\n\t}\n\n\tGetSearchOperatorOptions() {\n\t\treturn [\n\t\t\t{ id: 0, value: \"Contains\" },\n\t\t\t{ id: 1, value: \"Exact\" },\n\t\t\t{ id: 2, value: \"Begin\" },\n\t\t\t{ id: 3, value: \"Ends\" },\n\t\t];\n\t}\n\n\tGetSearchFieldOptions() {\n\t\treturn [\n\t\t\t{ id: 0, value: \"code\" },\n\t\t\t{ id: 1, value: \"name\" },\n\t\t];\n\t}\n}\n","<form [formGroup]=\"SearchForm\">\n\t<div class=\"prSearchBar\">\n\t\t<div class=\"prSearchBar__dropdown\" (click)=\"op.toggle($event)\" *ngIf=\"!SimpleSearchInput\">\n\t\t\t<div\n\t\t\t\tclass=\"prSearchBar__dropdown--label\"\n\t\t\t\t[pTooltip]=\"ShowTooltip ? (GetSelectedOperatorValue() | term : GlobalTermService.languageCode) + ', ' + (GetSelectedFieldValue() | term : GlobalTermService.languageCode) : ''\"\n\t\t\t\ttooltipPosition=\"top\"\n\t\t\t>\n\t\t\t\t{{ GetSelectedFieldValue() | term : GlobalTermService.languageCode }}\n\t\t\t</div>\n\t\t\t<div class=\"prSearchBar__dropdown--icon\">\n\t\t\t\t<i [ngClass]=\"IsDropdownOpen ? 'icon-arrow-up' : 'icon-arrow-down'\"></i>\n\t\t\t</div>\n\t\t</div>\n\t\t<p-popover #op (onShow)=\"DropDownChange(true)\" (onHide)=\"DropDownChange(false)\" class=\"prSearchBar__popover\">\n\t\t\t<div class=\"searchDropDown\">\n\t\t\t\t<div class=\"searchDropDown__group\">\n\t\t\t\t\t<div class=\"searchDropDown__title\">{{ \"Selectoperator\" | term : GlobalTermService.languageCode }}</div>\n\t\t\t\t\t<div class=\"searchDropDown__listOption\">\n\t\t\t\t\t\t@for ( option of SearchOperatorOptions ; track option.id; let index = $index){\n\t\t\t\t\t\t<div class=\"searchDropDown__option\">\n\t\t\t\t\t\t\t<p-radiobutton [inputId]=\"ComponentId + option.id\" class=\"prRadioButton\" [value]=\"option.id\" formControlName=\"operatorId\" (change)=\"OnSearchKeyup()\" />\n\t\t\t\t\t\t\t<label [for]=\"ComponentId + option.id\" class=\"prRadioButton--label\">{{ option.value | term : GlobalTermService.languageCode }}</label>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<hr />\n\t\t\t\t<div class=\"searchDropDown__group\">\n\t\t\t\t\t<div class=\"searchDropDown__title\">{{ \"Selectfield\" | term : GlobalTermService.languageCode }}</div>\n\t\t\t\t\t@for ( option of SearchFieldOptions ; track option.id; let index = $index){\n\t\t\t\t\t<div class=\"searchDropDown__option\">\n\t\t\t\t\t\t<p-radiobutton [inputId]=\"ComponentId + 'fieldId_' + option.id\" class=\"prRadioButton\" [value]=\"option.id\" formControlName=\"fieldId\" (change)=\"OnSearchKeyup()\" />\n\t\t\t\t\t\t<label [for]=\"ComponentId + 'fieldId_' + option.id\" class=\"prRadioButton--label\">{{ option.value | term : GlobalTermService.languageCode }}</label>\n\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</p-popover>\n\t\t<div class=\"prSearchBar__content\">\n\t\t\t<div class=\"prSearchBar__btn\">\n\t\t\t\t<button pButton type=\"button\" class=\"prSearchBar__btn-action\" (click)=\"ClearSearchText()\" *ngIf=\"HasSearchText\">\n\t\t\t\t\t<i class=\"icon-times\"></i>\n\t\t\t\t</button>\n\t\t\t\t<button pButton type=\"button\" class=\"prSearchBar__btn-action\" (click)=\"OnSearch()\">\n\t\t\t\t\t<i class=\"icon-search\"></i>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<input\n\t\t\t\tpInputText\n\t\t\t\ttype=\"text\"\n\t\t\t\tclass=\"prSearchBar__input\"\n\t\t\t\tformControlName=\"searchText\"\n\t\t\t\t[placeholder]=\"Placeholder | term : GlobalTermService.languageCode\"\n\t\t\t\t(keyup.enter)=\"OnSearchEnter()\"\n\t\t\t\t(keyup)=\"OnSearchKeyup()\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</form>\n","import { ContentChild, Directive, Input, TemplateRef } from \"@angular/core\";\n@Directive({ selector: \"column\" })\nexport class TreeColumnComponent<T = any> {\n @Input() field!: string;\n @Input() header!: string;\n @Input() sortable: boolean = false;\n @Input() width?: string;\n @Input() className?: string;\n @Input() headerTooltip: string = \"\";\n @Input() headerTooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n @Input() tooltip: string = \"\";\n @Input() tooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n @Input() showIndex: boolean = false;\n @Input() showHeader: boolean = true;\n @Input() minWidth?: string;\n @Input() isChecboxColumn: boolean = false;\n @Input() isExpansionColumn: boolean = false;\n @ContentChild(TemplateRef) templateRef?: TemplateRef<any>;\n @Input() formatType:\n | \"string\"\n | \"date\"\n | \"date2\"\n | \"date3\"\n | \"time\"\n | \"decimal2\"\n | \"decimal4\"\n | \"tarifa\" = \"string\";\n}\n@Directive({ selector: \"columnGroup\" })\nexport class TreeColumnGroupComponent<T = any> {\n @Input() field!: string;\n @Input() header!: string;\n @Input() sortable: boolean = false;\n @Input() width?: string;\n @Input() minWidth?: string;\n @Input() colspan: number = 1;\n @Input() rowspan: number = 1;\n @Input() level: number = 0;\n @Input() formatType:\n | \"string\"\n | \"date\"\n | \"date2\"\n | \"date3\"\n | \"time\"\n | \"decimal2\"\n | \"decimal4\"\n | \"tarifa\" = \"string\";\n}\n@Directive({ selector: \"rowResumenComponent\" })\nexport class RowResumenTreeComponent<T = any> {\n @Input() field!: string;\n @Input() className?: string;\n @Input() colspan: number = 1;\n @Input() rowspan: number = 1;\n @ContentChild(TemplateRef) templateRef?: TemplateRef<any>;\n\n @Input() formatType:\n | \"string\"\n | \"date\"\n | \"date2\"\n | \"date3\"\n | \"time\"\n | \"decimal2\"\n | \"decimal4\"\n | \"tarifa\" = \"string\";\n}\n","import { CommonModule, DatePipe } from \"@angular/common\";\nimport {\n AfterContentInit,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n} from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { BadgeModule } from \"primeng/badge\";\nimport { CheckboxModule } from \"primeng/checkbox\";\nimport { TableModule } from \"primeng/table\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { ButtonModule } from \"primeng/button\";\nimport { TermPipe } from \"../../pipes/term.pipes\";\nimport { GlobalTermService } from \"../../services/globalTerm.service\";\nimport { SharedService } from \"../../services/shared.service\";\nimport { PaginatorComponent } from \"../paginator/paginator.component\";\nimport { SearchComponent } from \"../search/search.component\";\nimport { SearchInputModel } from \"../search/model/search.model\";\nimport { SortFieldModel } from \"../table/model/sort.model\";\nimport {\n RowResumenTreeComponent,\n TreeColumnComponent,\n TreeColumnGroupComponent,\n} from \"./column.component\";\nimport { Select } from \"primeng/select\";\nimport { FormatCellPipe } from \"../../pipes/formatCell.pipe\";\n\n@Component({\n selector: \"intelica-tree-table\",\n standalone: true,\n imports: [\n CommonModule,\n SearchComponent,\n PaginatorComponent,\n Select,\n TableModule,\n BadgeModule,\n TooltipModule,\n TermPipe,\n CheckboxModule,\n FormsModule,\n ButtonModule,\n FormatCellPipe,\n ],\n templateUrl: \"./tree-table.component.html\",\n providers: [FormatCellPipe, DatePipe],\n})\nexport class TreeTableComponent<T> implements OnChanges, AfterContentInit {\n private readonly SharedService = inject(SharedService);\n readonly GlobalTermService = inject(GlobalTermService);\n\n @Input() ComponentId: string = \"\";\n @Input() ListData: T[] = [];\n @Input() ClassName: string = \"\";\n @Input() groupRowsBy: string = \"\";\n @Input() dataKey: string = \"\";\n @Input() DefaultSortField: string = \"\";\n @Input() DefaultSortOrder: number = 1;\n @Input() scrollHeight: string = \"400px\";\n @Input() scrollable: boolean = false;\n @Input() tableStyle: { [klass: string]: any } = {};\n @Input() ShowSearch: boolean = false;\n @Input() ShowPagination: boolean = false;\n @Input() RowsPerPage: number = 10;\n @Input() AllowedPageSizes: number[] = [10, 25, 50, 100];\n @Input() ShowCheckbox: boolean = false;\n @Input() ShowIndex: boolean = false;\n @Input() ShowSearchTooltip: boolean = false;\n @Input() ListDataSelected: T[] = [];\n @Input() SelectedIdentifier: keyof T | null = null;\n @Input() ListSearchOptions: any[] = [];\n @Input() ShowRowPerPage: boolean = true;\n\n @Output() EmitSelectedItem = new EventEmitter<T[]>();\n @Output() EmitListDataFilter = new EventEmitter<T[]>();\n @Output() EmitSearchEvent = new EventEmitter<SearchInputModel>();\n @Output() EmitSortEvent = new EventEmitter<SortFieldModel[]>();\n\n @ContentChildren(TreeColumnComponent)\n Columns!: QueryList<TreeColumnComponent>;\n @ContentChildren(TreeColumnGroupComponent)\n ColumnGroups!: QueryList<TreeColumnGroupComponent>;\n @ContentChildren(RowResumenTreeComponent)\n RowResumenGroups!: QueryList<RowResumenTreeComponent>;\n @ContentChild(\"additionalTemplate\") AdditionalTemplate?: TemplateRef<any>;\n @ContentChild(\"additionalCentralTemplate\")\n AdditionalCentralTemplate?: TemplateRef<any>;\n @ContentChild(\"additionalExtendedTemplate\")\n AdditionalExtendedTemplate?: TemplateRef<any>;\n\n @ViewChild(\"paginatorTable\") PaginatorTable?: PaginatorComponent;\n @ViewChild(\"searchTable\") SearchTable?: SearchComponent;\n\n ListDataFilter: T[] = [];\n ListDataTable: T[] = [];\n ListDataSelectedTemp: T[] = [];\n ColumnList: TreeColumnComponent[] = [];\n ColumnGroupList: TreeColumnGroupComponent[] = [];\n RowResumenList: RowResumenTreeComponent[] = [];\n MaxLevel: number = 0;\n Levels: number[] = [];\n SortOrder: number = 1;\n SortField: keyof T | null = null;\n TotalRecords: number = 0;\n CurrentPage: number = 1;\n SearchInput: SearchInputModel = {} as SearchInputModel;\n ListSearchOptionsSimple: { id: number; value: string }[] = [];\n\n ngOnChanges(): void {\n this.ListDataFilter = [...this.ListData];\n if (!this.SortField && this.DefaultSortField) {\n this.SortField = this.DefaultSortField as keyof T;\n this.SortOrder = this.DefaultSortOrder;\n }\n this.ExecuteSearch({});\n this.ValidateSelect();\n }\n \n\n ngAfterContentInit() {\n this.ColumnList = this.Columns.toArray();\n this.ColumnGroupList = this.ColumnGroups.toArray();\n this.RowResumenList = this.RowResumenGroups.toArray();\n this.MaxLevel = Math.max(...this.ColumnGroupList.map((c) => c.level)) + 1;\n this.Levels = Array.from({ length: this.MaxLevel }, (_, i) => i);\n }\n\n OnSort(field: string) {\n if (this.SortField === field) {\n this.SortOrder *= -1;\n } else {\n this.SortField = field as keyof T;\n this.SortOrder = 1;\n }\n this.SortPages();\n }\n\n OnPageChange(pageIndex: number) {\n this.CurrentPage = pageIndex;\n this.UpdatePages();\n }\n\n SortPages() {\n const order = this.SortOrder === 1 ? \"asc\" : \"desc\";\n const field = this.SortField as keyof T;\n const sampleValue = this.ListDataFilter.find(\n (item) => item[field] !== null && item[field] !== undefined\n )?.[field];\n if (typeof sampleValue === \"number\") {\n this.ListDataFilter = this.SharedService.SortRecursiveNumber(\n [...this.ListDataFilter],\n field,\n order\n );\n } else {\n this.ListDataFilter = this.SharedService.SortRecursivePrimeNg(\n [...this.ListDataFilter],\n field,\n order\n );\n }\n this.UpdatePages();\n }\n\n ExecuteSearch(event: any): void {\n this.ListDataFilter = [...this.ListData];\n this.SortPages();\n }\n\n OnHeaderCheckboxChange(event: any, field: string) {\n const checked: boolean = event.checked;\n if (!this.SelectedIdentifier) return;\n const idsSelected = new Set(\n this.ListDataFilter.map(\n (item) => item[this.SelectedIdentifier as keyof T]\n )\n );\n this.ListData.forEach((item) => {\n const id = item[this.SelectedIdentifier as keyof T];\n const exists = idsSelected.has(id);\n if (exists) {\n (item as Record<string, boolean>)[field] = checked;\n }\n });\n this.IsInderteminate(field);\n }\n\n IsInderteminate(column: string) {\n const rowsChek = this.ListData.filter(\n (item) => (item as Record<string, boolean>)[column]\n ).length;\n const element = [...document.querySelectorAll(\"[data-check]\")].find(\n (x) => x.getAttribute(\"data-check\") == column\n );\n if (element == undefined) return;\n if (rowsChek > 0 && rowsChek < this.ListData.length)\n element.setAttribute(\"class\", \"prCheckbox--indeterminate\");\n else element.removeAttribute(\"class\");\n }\n\n getLetter(index: number): string {\n if (index < 0 || index > 25) return \"\";\n return String.fromCharCode(97 + index);\n }\n\n UpdatePages() {\n if (this.ShowPagination) {\n this.TotalRecords = this.ListDataFilter.length;\n const start = (this.CurrentPage - 1) * this.RowsPerPage;\n const end = start + this.RowsPerPage;\n this.ListDataTable = this.ListDataFilter.slice(start, end);\n } else {\n this.ListDataTable = this.ListDataFilter;\n }\n this.EmitSearchValues();\n }\n\n ValidateSelect() {\n if (!this.SelectedIdentifier && this.ShowCheckbox) {\n this.ShowCheckbox = false;\n return;\n }\n const selectedIds = new Set(\n this.ListDataSelected.map(\n (item) => item[this.SelectedIdentifier as keyof T]\n )\n );\n this.ListDataSelectedTemp = this.ListData.filter((item) =>\n selectedIds.has(item[this.SelectedIdentifier as keyof T])\n );\n }\n\n SelectAll(event: any) {\n if (!this.SelectedIdentifier && this.ShowCheckbox) return;\n if (event.checked) {\n const idsSelected = new Set(\n this.ListDataSelectedTemp.map(\n (item) => item[this.SelectedIdentifier as keyof T]\n )\n );\n this.ListDataFilter.forEach((item) => {\n if (!idsSelected.has(item[this.SelectedIdentifier as keyof T])) {\n this.ListDataSelectedTemp.push(item);\n }\n });\n } else {\n const idsSelected = new Set(\n this.ListDataFilter.map(\n (item) => item[this.SelectedIdentifier as keyof T]\n )\n );\n this.ListDataSelectedTemp = this.ListDataSelectedTemp.filter(\n (item) => !idsSelected.has(item[this.SelectedIdentifier as keyof T])\n );\n }\n this.EmitSelectedItem.emit(this.ListDataSelectedTemp);\n }\n\n OnRowSelect(event: any) {\n if (!this.SelectedIdentifier && this.ShowCheckbox) return;\n const selectedItem = event.data;\n const exists = this.ListDataSelectedTemp.some(\n (item) =>\n item[this.SelectedIdentifier as keyof T] ===\n selectedItem[this.SelectedIdentifier as keyof T]\n );\n if (!exists) {\n this.ListDataSelectedTemp.push(selectedItem);\n }\n this.EmitSelectedItem.emit(this.ListDataSelectedTemp);\n }\n\n OnRowUnselect(event: any) {\n if (!this.SelectedIdentifier && this.ShowCheckbox) return;\n const unselectedItem = event.data;\n this.ListDataSelectedTemp = this.ListDataSelectedTemp.filter(\n (item) =>\n item[this.SelectedIdentifier as keyof T] !==\n unselectedItem[this.SelectedIdentifier as keyof T]\n );\n this.EmitSelectedItem.emit(this.ListDataSelectedTemp);\n }\n\n ResetTable() {\n if (this.PaginatorTable) {\n this.PaginatorTable.CurrentPage = 1;\n this.CurrentPage = 1;\n }\n if (this.SearchTable) {\n this.SearchTable.ClearSearchText();\n this.SearchInput.fieldText = \"\";\n }\n this.ExecuteSearch({});\n }\n\n EmitSearchValues() {\n this.EmitListDataFilter.emit(this.ListDataFilter);\n this.EmitSearchEvent.emit(this.SearchInput);\n this.EmitSortEvent.emit([\n {\n sortOrder: this.SortOrder,\n sortField: this.SortField?.toString() ?? \"\",\n },\n ]);\n }\n\n OnRowsPerPageChange(value: number) {\n this.RowsPerPage = value;\n this.ResetTable();\n }\n}\n","<div class=\"prTable\">\n <div class=\"prTableTools\">\n <div class=\"prTableTools__new prTableTools__new--left\">\n @if (AdditionalTemplate) {\n <ng-container *ngTemplateOutlet=\"AdditionalTemplate\"></ng-container>\n }\n </div>\n\n @if (ShowSearch) {\n <intelica-search\n #searchTable\n [ComponentId]=\"ComponentId + 'Search'\"\n (OnSearch)=\"ExecuteSearch($event)\"\n [SearchFieldOptions]=\"ListSearchOptionsSimple\"\n [SearchOnKeyup]=\"false\"\n [SimpleSearchInput]=\"false\"\n [ShowTooltip]=\"ShowSearchTooltip\"\n ></intelica-search>\n } @if (AdditionalCentralTemplate) {\n <div class=\"prTableTools__new prTableTools__new--right\">\n <ng-container\n *ngTemplateOutlet=\"AdditionalCentralTemplate\"\n ></ng-container>\n </div>\n }\n </div>\n @if (AdditionalExtendedTemplate) {\n <div class=\"prTableTools justify-content-start\">\n <ng-container *ngTemplateOutlet=\"AdditionalExtendedTemplate\"></ng-container>\n </div>\n\n }\n <p-table\n class=\"prTableBasic\"\n [value]=\"ListDataTable\"\n [ngClass]=\"ClassName\"\n responsiveLayout=\"scroll\"\n [(selection)]=\"ListDataSelected\"\n (onHeaderCheckboxToggle)=\"SelectAll($event)\"\n (onRowSelect)=\"OnRowSelect($event)\"\n (onRowUnselect)=\"OnRowUnselect($event)\"\n [groupRowsBy]=\"groupRowsBy\"\n [dataKey]=\"dataKey\"\n [sortField]=\"DefaultSortField\"\n [scrollable]=\"scrollable\"\n [scrollHeight]=\"scrollable ? scrollHeight : 'auto'\"\n [tableStyle]=\"tableStyle\"\n [sortOrder]=\"SortOrder\"\n >\n <ng-template pTemplate=\"header\">\n @for (level of Levels; track $index) {\n <tr>\n @for (col of ColumnGroupList; track $index) { @if (col.level === level)\n {\n <th\n [attr.colspan]=\"col.colspan\"\n [attr.rowspan]=\"col.rowspan\"\n [pSortableColumn]=\"col.sortable ? col.field : ''\"\n [style.min-width]=\"col.minWidth\"\n (click)=\"col.sortable && OnSort(col.field)\"\n >\n <div>\n <span pTooltip=\"{{ col.header }}\">{{ col.header }}</span>\n <p-sortIcon *ngIf=\"col.sortable\" [field]=\"col.field\"></p-sortIcon>\n </div>\n </th>\n } } @if (ShowCheckbox && level === 0 && ColumnGroupList.length != 0) {\n <th\n class=\"text-center\"\n style=\"width: 4%\"\n [attr.rowspan]=\"MaxLevel === 1 ? 2 : MaxLevel\"\n >\n <p-tableHeaderCheckbox\n class=\"prCheckbox\"\n [ngClass]=\"{\n 'prCheckbox--indeterminate':\n ListDataSelectedTemp.length > 0 &&\n ListDataSelectedTemp.length < ListDataFilter.length\n }\"\n />\n </th>\n }\n </tr>\n }\n\n <tr>\n @for (col of ColumnList; track $index) { @if(col.showHeader) {\n <th\n [class]=\"col.className\"\n [pSortableColumn]=\"\n !col.isChecboxColumn && col.sortable ? col.field : ''\n \"\n [style.width]=\"col.width\"\n [style.min-width]=\"col.minWidth\"\n (click)=\"!col.isChecboxColumn && col.sortable && OnSort(col.field)\"\n >\n <div>\n <span\n pTooltip=\"{{ col.headerTooltip }}\"\n tooltipPosition=\"{{ col.headerTooltipPosition }}\"\n >\n {{ col.header }}\n </span>\n @if (!col.showIndex) { @if (col.isChecboxColumn) {\n <br />\n <p-checkbox\n [binary]=\"true\"\n (click)=\"$event.stopPropagation()\"\n (onChange)=\"OnHeaderCheckboxChange($event, col.field)\"\n [attr.data-check]=\"col.field\"\n ></p-checkbox>\n } @else {\n <p-sortIcon *ngIf=\"col.sortable\" [field]=\"col.field\"></p-sortIcon>\n } }\n </div>\n </th>\n } } @if (ShowCheckbox && ColumnGroupList.length == 0) {\n <th class=\"text-center\" style=\"width: 4%\">\n <p-tableHeaderCheckbox\n class=\"prCheckbox\"\n [ngClass]=\"{\n 'prCheckbox--indeterminate':\n ListDataSelectedTemp.length > 0 &&\n ListDataSelectedTemp.length < ListDataFilter.length\n }\"\n />\n </th>\n }\n </tr>\n\n @if (ListDataFilter.length > 0) {\n <tr class=\"fixedRow\">\n @for (col of RowResumenList; track $index) {\n <td\n [ngClass]=\"col.className\"\n [attr.colspan]=\"col.colspan\"\n [attr.rowspan]=\"col.rowspan\"\n >\n @if (col.templateRef) {\n <span\n ><ng-container *ngTemplateOutlet=\"col.templateRef\"></ng-container\n ></span>\n } @else {\n <ng-template #defaultContent></ng-template>\n }\n </td>\n }\n </tr>\n }\n </ng-template>\n\n <ng-template\n pTemplate=\"body\"\n let-rowData\n let-rowIndex=\"rowIndex\"\n let-expanded=\"expanded\"\n >\n <tr>\n @for (col of ColumnList; track $index) {\n <td [ngClass]=\"col.className\">\n @if (col.showIndex) {\n {{ rowIndex + 1 + (CurrentPage - 1) * RowsPerPage }}\n } @else if (col.field === 'name' && rowData.children &&\n rowData.children.length > 0) {\n <div class=\"prTable__expandToggleRow\">\n <p-button\n [pRowToggler]=\"rowData\"\n class=\"prButton prButton--icon prButton--iconBlue\"\n >\n <i\n [class]=\"\n expanded ? 'icon icon-collapse-rows' : 'icon icon-expand-rows'\n \"\n ></i>\n </p-button>\n <span\n class=\"text-breakWord\"\n pTooltip=\"{{ col.tooltip }}\"\n tooltipPosition=\"{{ col.tooltipPosition }}\"\n >\n {{ rowData[col.field] | formatCell : col.formatType }}\n </span>\n </div>\n } @else { @if (col.templateRef) {\n <ng-container\n *ngTemplateOutlet=\"col.templateRef; context: { $implicit: rowData }\"\n ></ng-container>\n } @else if (col.isChecboxColumn) {\n <p-checkbox\n [binary]=\"true\"\n [(ngModel)]=\"rowData[col.field]\"\n (onChange)=\"IsInderteminate(col.field)\"\n ></p-checkbox>\n } @else {\n <span\n class=\"text-breakWord\"\n pTooltip=\"{{ col.tooltip }}\"\n tooltipPosition=\"{{ col.tooltipPosition }}\"\n >\n {{ rowData[col.field] | formatCell : col.formatType }}\n </span>\n } }\n </td>\n } @if (ShowCheckbox) {\n <td class=\"text-center\">\n <p-tableCheckbox [value]=\"rowData\" class=\"prCheckbox\" />\n </td>\n }\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"expandedrow\" let-rowData let-rowIndex=\"rowIndex\">\n <ng-container *ngIf=\"rowData.children?.length\">\n <tr\n *ngFor=\"let childRow of rowData.children; let i = index\"\n class=\"subRow\"\n >\n <td\n *ngFor=\"let col of ColumnList; let j = index\"\n [ngClass]=\"col.className\"\n >\n <span\n class=\"text-breakWord\"\n pTooltip=\"{{ col.tooltip }}\"\n tooltipPosition=\"{{ col.tooltipPosition }}\"\n >\n <ng-container *ngIf=\"col.showIndex && j === 0; else normalCell\">\n {{ rowIndex + 1 + \".\" + getLetter(i) }}\n </ng-container>\n <ng-template #normalCell>\n @if (col.field === \"id\" && i < 26) {\n <span>{{ childRow[col.field] + \".\" + getLetter(i) }}</span>\n } @else {\n <ng-container *ngIf=\"col.templateRef; else defaultExpandedContent\">\n <ng-container *ngTemplateOutlet=\"col.templateRef; context: { $implicit: childRow }\"></ng-container>\n </ng-container>\n <ng-template #defaultExpandedContent>\n <span [class]=\"col.field === 'name' ? 'prTable__expandIdentText' : ''\">\n {{ childRow[col.field] | formatCell : col.formatType }}\n </span>\n </ng-template> \n }\n </ng-template>\n </span>\n </td>\n </tr>\n </ng-container>\n </ng-template>\n\n <ng-template #emptymessage>\n <tr>\n <td\n [attr.colspan]=\"ColumnList.length + (ShowCheckbox ? 1 : 0)\"\n class=\"text-center\"\n >\n {{ \"Nodata\" | term : GlobalTermService.languageCode }}\n </td>\n </tr>\n </ng-template>\n </p-table>\n\n <div class=\"prTableToolsBottom\">\n @if(TotalRecords !== 0){\n @if (ShowRowPerPage) {\n <div class=\"prTableToolsBottom__itemPerPage\">\n {{ \"ItemPerPage\" | term : GlobalTermService.languageCode }}\n <p-select\n [options]=\"AllowedPageSizes\"\n [ngModel]=\"RowsPerPage\"\n appendTo=\"body\"\n (onChange)=\"OnRowsPerPageChange($event.value)\"\n />\n <label for=\"pageSize\" class=\"control-label\">\n {{ 1 + RowsPerPage * (CurrentPage - 1) }} -\n {{\n CurrentPage * RowsPerPage >= TotalRecords\n ? TotalRecords\n : CurrentPage * RowsPerPage\n }}\n {{ \"Of\" | term : GlobalTermService.languageCode }} {{ TotalRecords }}\n {{ \"Items\" | term : GlobalTermService.languageCode }}\n </label>\n </div>\n } @if (ShowPagination) {\n <intelica-paginator\n #paginatorTable\n [TotalItems]=\"ListDataFilter.length\"\n [ItemsPerPage]=\"RowsPerPage\"\n (PageChange)=\"OnPageChange($event)\"\n >\n </intelica-paginator>\n }\n }\n </div>\n</div>\n","import { ContentChild, Directive, Input, TemplateRef } from \"@angular/core\";\n@Directive({ selector: \"column\" })\nexport class MatrixColumnComponent<T = any> {\n\t@Input() field!: string;\n\t@Input() header!: string;\n\t@Input() width?: string;\n\t@Input() className?: string;\n\t@Input() headerTooltip: string = \"\";\n\t@Input() headerTooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n\t@Input() tooltip: string = \"\";\n\t@Input() tooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n\t@Input() showIndex: boolean = false;\n\t@Input() showHeader: boolean = true;\n\t@Input() minWidth?: string;\n\t@ContentChild(TemplateRef) templateRef?: TemplateRef<any>;\n}\n@Directive({ selector: \"columnGroup\" })\nexport class MatrixColumnGroupComponent<T = any> {\n\t@Input() field!: string;\n\t@Input() header!: string;\n\t@Input() sortable: boolean = false;\n\t@Input() width?: string;\n\t@Input() className?: string;\n\t@Input() headerTooltip: string = \"\";\n\t@Input() headerTooltipPosition: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\n\t@Input() minWidth?: string;\n\t@Input() colspan: number = 1;\n\t@Input() rowspan: number = 1;\n\t@Input() level: number = 0;\n}\n","import { CommonModule } from \"@angular/common\";\nimport { AfterContentInit, Component, ContentChildren, inject, Input, OnChanges, QueryList } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { BadgeModule } from \"primeng/badge\";\nimport { CheckboxModule } from \"primeng/checkbox\";\nimport { TableModule } from \"primeng/table\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { TermPipe } from \"../../pipes/term.pipes\";\nimport { GlobalTermService } from \"../../services/globalTerm.service\";\nimport { SharedService } from \"../../services/shared.service\";\nimport { MatrixColumnComponent, MatrixColumnGroupComponent } from \"./column.component\";\nimport { ButtonModule } from \"primeng/button\";\n\n@Component({\n\tselector: \"intelica-matrix-table\",\n\tstandalone: true,\n\timports: [CommonModule, TableModule, BadgeModule, TooltipModule, TermPipe, CheckboxModule, FormsModule, ButtonModule],\n\ttemplateUrl: \"./matrix-table.component.html\",\n})\nexport class MatrixTableComponent<T> implements OnChanges, AfterContentInit {\n\tprivate readonly SharedService = inject(SharedService);\n\treadonly GlobalTermService = inject(GlobalTermService);\n\t@Input() ComponentId: string = \"\";\n\t@Input() ListData: T[] = [];\n\t@Input() ShowIndex: boolean = false;\n\t@Input() ClassName: string = \"\";\n\t@Input() dataKey: string = \"\";\n\t@Input() scrollHeight: string = \"400px\";\n\t@Input() scrollable: boolean = false;\n\t@Input() tableStyle: { [klass: string]: any } = {};\n\t@ContentChildren(MatrixColumnComponent) Columns!: QueryList<MatrixColumnComponent>;\n\t@ContentChildren(MatrixColumnGroupComponent) ColumnGroups!: QueryList<MatrixColumnGroupComponent>;\n\tColumnList: MatrixColumnComponent[] = [];\n\tColumnGroupList: MatrixColumnGroupComponent[] = [];\n\tMaxLevel: number = 0;\n\tLevels: number[] = [];\n\tngOnChanges(): void {}\n\tngAfterContentInit() {\n\t\tthis.ColumnList = this.Columns.toArray();\n\t\tthis.ColumnGroupList = this.ColumnGroups.toArray();\n\t\tthis.MaxLevel = Math.max(...this.ColumnGroupList.map(c => c.level)) + 1;\n\t\tthis.Levels = Array.from({ length: this.MaxLevel }, (_, i) => i);\n\t}\n}\n","<div class=\"prTable prTable--blueLeft\">\n\t<p-table\n\t\tclass=\"prTableBasic\"\n\t\t[ngClass]=\"ClassName\"\n\t\t[value]=\"ListData\"\n\t\tresponsiveLayout=\"scroll\"\n\t\t[sortOrder]=\"-1\"\n\t\tdataKey=\"dataKey\"\n\t\t[scrollable]=\"scrollable\"\n\t\t[scrollHeight]=\"scrollable ? scrollHeight : 'auto'\"\n\t\t[tableStyle]=\"tableStyle\"\n\t>\n\t\t<ng-template pTemplate=\"header\">\n\t\t\t@for (level of Levels; track $index) {\n\n\t\t\t<tr>\n\t\t\t\t@for (col of ColumnGroupList; track $index) { @if (col.level === level) {\n\t\t\t\n\t\t\t\t<th [ngClass]=\"col.className\" [attr.colspan]=\"col.colspan\" [attr.rowspan]=\"col.rowspan\"\n\t\t\t\t\t[style.min-width]=\"col.minWidth\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<span [pTooltip]=\"col.headerTooltip || col.header\" [tooltipPosition]=\"col.headerTooltipPosition || 'top'\">\n\t\t\t\t\t\t\t{{ col.header }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</th>\n\t\t\t\n\t\t\t\t} }\n\t\t\t</tr>\n\t\t\t}\n\t\t\t<tr>\n\t\t\t\t@for (col of ColumnList; track $index) { @if(col.showHeader ){\n\t\t\t\t<th [class]=\"col.className\" [style.width]=\"col.width\" [style.min-width]=\"col.minWidth\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<span [pTooltip]=\"col.headerTooltip || col.header\" [tooltipPosition]=\"col.headerTooltipPosition || 'top'\">\n\t\t\t\t\t\t\t{{ col.header }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</th>\n\t\t\t\t} }\n\t\t\t</tr>\n\t\t</ng-template>\n\t\t<ng-template pTemplate=\"body\" let-rowData let-rowIndex=\"rowIndex\">\n\t\t\t<tr>\n\t\t\t\t@for (col of ColumnList; track col; let i = $index) {\n\t\t\t\t<td [ngClass]=\"col.className\" [class.left-header]=\"i === 0\">\n\t\t\t\t\t@if (col.templateRef) {\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"col.templateRef; context: { $implicit: rowData }\"></ng-container>\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t<span class=\"text-breakWord\" [pTooltip]=\"col.tooltip\" [tooltipPosition]=\"col.tooltipPosition || 'top'\">\n\t\t\t\t\t\t\t{{ rowData[col.field] ?? \"-\" }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t}\n\t\t\t\t</td>\n\n\t\t\t\t}\n\t\t\t</tr>\n\t\t\t<ng-container *ngIf=\"rowData.children?.length > 0\">\n\t\t\t\t<tr *ngFor=\"let childRow of rowData.children\">\n\t\t\t\t\t<td *ngFor=\"let col of ColumnList; let i = index\" [ngClass]=\"col.className\" [class.child-cell-padding]=\"i === 0\" [class.left-header]=\"i === 0\">\n\t\t\t\t\t\t{{ childRow[col.field] }}\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</ng-container>\n\t\t</ng-template>\n\t\t<ng-template #emptymessage>\n\t\t\t<tr>\n\t\t\t\t<td [attr.colspan]=\"ColumnList.length\" class=\"text-center\">\n\t\t\t\t\t{{ \"Nodata\" | term : GlobalTermService.languageCode }}\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</ng-template>\n\t</p-table>\n</div>\n","import { ContentChild, Directive, EventEmitter, Input, Output } from \"@angular/core\";\n\n@Directive({\n\tselector: \"action\",\n})\nexport class ActionDirective {\n\t/**\n\t * Nombre de la acción.\n\t * @type {string}\n\t */\n\t@Input() name: string = \"\";\n\n\t/**\n\t * Indica si los botones asociados a la acción deben ocultarse.\n\t * @type {boolean}\n\t * @default false\n\t */\n\t@Input() hideButtons: boolean = false;\n\n\t/**\n\t * Texto que se mostrará en el botón de aplicar.\n\t * @type {string}\n\t * @default 'Apply'\n\t */\n\t@Input() textApply: string = \"Apply\";\n\n\t/**\n\t * Texto que se mostrará en el botón de cancelar.\n\t * @type {string}\n\t * @default 'Clear'\n\t */\n\t@Input() textCancel: string = \"Clear\";\n\n\t/**\n\t * Indica si detener la propagación de eventos al hacer clic en la acción.\n\t * @type {boolean}\n\t * @default false\n\t */\n\t@Input() stopPropagation: boolean = false;\n\n\t/**\n\t * Evento emitido cuando se aplica la acción.\n\t * @type {EventEmitter<any>}\n\t */\n\t@Output() onApply: EventEmitter<any> = new EventEmitter<any>();\n\n\t/**\n\t * Evento emitido cuando se cancela la acción.\n\t * @type {EventEmitter<any>}\n\t */\n\t@Output() onCancel: EventEmitter<any> = new EventEmitter<any>();\n\n\t/**\n\t * Evento emitido cuando se hace clic en la acción.\n\t * @type {EventEmitter<any>}\n\t */\n\t@Output() onClick: EventEmitter<any> = new EventEmitter<any>();\n\n\t/**\n\t * Referencia al contenido proporcionado por la plantilla.\n\t * @type {any}\n\t */\n\t@ContentChild(\"template\") template!: any;\n\n\t/**\n\t * Indica si la acción está activa o no.\n\t * @type {boolean}\n\t * @default false\n\t */\n\tactive: boolean = false;\n}\n","import { Component, ViewChild, ElementRef, HostListener, ContentChildren, QueryList, OnInit, inject, Input } from \"@angular/core\";\nimport { ButtonModule } from \"primeng/button\";\nimport { InputGroupAddonModule } from \"primeng/inputgroupaddon\";\nimport { CommonModule } from \"@angular/common\";\nimport { RippleModule } from \"primeng/ripple\";\nimport { ActionDirective } from \"./action.directive\";\nimport { TermPipe } from \"../../pipes/term.pipes\";\nimport { GlobalTermService } from \"../../services/globalTerm.service\";\n\n@Component({\n\tselector: \"intelica-actions-menu\",\n\timports: [ButtonModule, InputGroupAddonModule, CommonModule, RippleModule, TermPipe],\n\ttemplateUrl: \"./actions-menu.component.html\",\n})\nexport class ActionsMenuComponent implements OnInit {\n\treadonly GlobalTermService = inject(GlobalTermService);\n\t@ViewChild(\"popover\") Popover!: ElementRef;\n\t@ViewChild(\"menuButton\") MenuButton!: ElementRef;\n\t@ViewChild(\"popoverContainer\") PopoverContainer!: ElementRef;\n\n\tIsPopoverOpen: boolean = false;\n\tIsClickInsideDatepicker: boolean = false;\n\n\t/**\n\t * Indica si el menú de acciones está visible o no.\n\t * @type {boolean}\n\t * @default false\n\t */\n\tShowActionsMenu = false;\n\n\t/**\n\t * Indica si la sección de selección de acciones está visible o no.\n\t * @type {boolean}\n\t * @default false\n\t */\n\tShowSelectActions = false;\n\n\tconstructor(private readonly termPipe: TermPipe) {}\n\n\tngOnInit(): void {\n\t\t// const specificRegex = /local.*filt|filt.*local/i;\n\t\t// const generalRegex = /filt/i;\n\t\t// const specificResults = this.actions.filter(action => specificRegex.test(action.name));\n\t\t// if (specificResults.length === 0) {\n\t\t// \tconst generalResults = this.actions.filter(action => generalRegex.test(action.name));\n\t\t// \tgeneralResults.forEach(action => this.showTemplate(action));\n\t\t// } else {\n\t\t// \tspecificResults.forEach(action => this.showTemplate(action));\n\t\t// }\n\t}\n\n\topenPopover() {\n\t\tthis.IsPopoverOpen = true;\n\n\t\t// Cambia el estado de visibilidad del menú de acciones.\n\t\tthis.ShowActionsMenu = true;\n\n\t\t// Muestra u oculta el menú de selección de acciones.\n\t\tthis.ShowSelectActions = true;\n\n\n\t}\n\n\tclosePopover() {\n\t\tthis.IsPopoverOpen = false;\n\n\t\t// Cambia el estado de visibilidad del menú de acciones.\n\t\tthis.ShowActionsMenu = false;\n\n\t\t// Muestra u oculta el menú de selección de acciones.\n\t\tthis.ShowSelectActions = true;\n\n\t}\n\n\t/** Método para alternar el estado del popover */\n\ttogglePopover(event?: Event) {\n\t\tthis.IsPopoverOpen ? this.closePopover() : this.openPopover();\n\n\t\t// Desactiva todas las acciones dentro del menú.\n\t\tthis.actions.forEach(action => {\n\t\t\taction.active = false;\n\t\t});\n\t}\n\n\t@HostListener(\"mousedown\", [\"$event\"])\n\tonMouseDown(event: Event) {\n\t\tconst target = event.target as HTMLElement;\n\t\tif (target.closest(\".p-datepicker\") || target.closest(\".p-inputtext\") || target.closest(\".p-select-panel\") || target.closest(\".p-multiselect-panel\")) {\n\t\t\tthis.IsClickInsideDatepicker = true;\n\t\t}\n\t}\n\n\t@HostListener(\"window:mousedown\", [\"$event\"])\n\tonMouseDownOutsideBody(event: Event) {\n\t\tconst target = event.target as HTMLElement;\n\t\tif (target.closest(\".p-datepicker\") || target.closest(\".p-inputtext\") || target.closest(\".p-select-panel\") || target.closest(\".p-multiselect-panel\")) {\n\t\t\tthis.IsClickInsideDatepicker = true;\n\t\t}\n\t}\n\n\t@HostListener(\"mouseup\", [\"$event\"])\n\tonMouseUp(event: Event) {\n\t\tsetTimeout(() => {\n\t\t\tthis.IsClickInsideDatepicker = false;\n\t\t}, 100);\n\t}\n\n\t@HostListener(\"document:click\", [\"$event\"])\n\tcloseAll(event?: Event) {\n\t\tif (!event) return;\n\t\tconst target = event.target as HTMLElement;\n\n\t\tconst allowedClasses = [\n\t\t\t\"prSelect\",\n\t\t\t\"p-select-option-selected\",\n\t\t\t\"p-select-option\",\n\t\t\t\"p-datepicker-panel\",\n\t\t\t\"p-datepicker-select-month\",\n\t\t\t\"p-button-text\",\n\t\t\t\"p-datepicker-select-year\",\n\t\t\t\"p-datepicker-month\",\n\t\t\t\"p-datepicker-year\",\n\t\t\t\"p-checkbox-input\",\n\t\t\t\"p-multiselect-option\",\n\t\t\t\"p-multiselect-filter\",\n\t\t\t\"p-multiselect-empty-message\",\n\t\t\t\"p-inputicon\",\n\t\t\t\"p-tree-node-selected\",\n\t\t\t\"p-tree-node-content\",\n\t\t\t\"p-multiselect-header\",\n\t\t\t\"grButton--icon-close-modal\",\n\t\t\t\"p-overlay-mask\",\n\t\t\t\"p-select-clear-icon\",\n\t\t\t\"formRowInputClear\",\n\t\t\t\"icon-times\",\n\t\t\t\"p-select-empty-message\",\n\t\t\t\"p-select-list\",\n\t\t\t\"p-iconfield\",\n\t\t\t\"p-inputtext\",\n\t\t\t\"p-select-header\",\n\t\t\t\"p-overlay\",\n\t\t\t\"p-select-filter\",\n\t\t\t\"p-overlay-content\",\n\t\t\t\"p-select-overlay\",\n\t\t\t\"p-select-panel\",\n\t\t\t\"p-multiselect-panel\",\n\t\t];\n\t\tif (this.IsClickInsideDatepicker) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (allowedClasses.some(className => target.closest(`.${className}`))) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.Popover && !this.Popover.nativeElement.contains(target) && this.MenuButton && !this.MenuButton.nativeElement.contains(target)) {\n\t\t\tthis.closePopover();\n\t\t}\n\t}\n\n\t/**\n\t * Directiva que representa una colección de elementos hijos del tipo `ActionDirective`.\n\t * Se utiliza para acceder a las instancias de la directiva `ActionDirective` dentro de un componente.\n\t * @type {QueryList<ActionDirective>}\n\t */\n\t@ContentChildren(ActionDirective)\n\tactions!: QueryList<ActionDirective>;\n\n\t/**\n\t * Muestra la plantilla asociada a una acción si se proporciona un manejador de eventos `onClick`.\n\t * - Emite el evento `onClick` de la acción si está definido.\n\t * - Detiene la propagación del evento si la propiedad `stopPropagation` de la acción está establecida.\n\t * - Activa la acción.\n\t * - Oculta el menú de selección de acciones si se cumplen ciertas condiciones.\n\t *\n\t * @param {ActionDirective} action - La acción para la cual mostrar la plantilla.\n\t */\n\tshowTemplate(action: ActionDirective): void {\n\t\t// Emite el evento onClick de la acción si está definido.\n\t\tif (action.onClick) {\n\t\t\taction.onClick.emit();\n\t\t}\n\n\t\t// Detiene la propagación del evento si la propiedad stopPropagation de la acción está establecida.\n\t\tif (action.stopPropagation) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Activa la acción.\n\t\taction.active = true;\n\n\t\t// Oculta el menú de selección de acciones si se cumplen ciertas condiciones.\n\t\tif (action.active) {\n\t\t\t// || this.showRecordsPerPage || this.showSorting) {\n\t\t\tthis.ShowSelectActions = false;\n\t\t}\n\t}\n\n\t/**\n\t * Restablece el estado de una acción y muestra el menú de selección de acciones.\n\t * - Desactiva la acción proporcionada.\n\t * - Muestra el menú de acciones.\n\t * - Muestra el menú de selección de acciones.\n\t *\n\t * @param {ActionDirective} action - La acción que se va a restablecer.\n\t */\n\treturnSelectActions(action: ActionDirective) {\n\t\t// Desactiva la acción proporcionada.\n\t\taction.active = false;\n\n\t\t// Muestra el menú de acciones.\n\t\tthis.ShowActionsMenu = true;\n\n\t\t// Muestra el menú de selección de acciones.\n\t\tthis.ShowSelectActions = true;\n\t}\n}\n","<div class=\"grPopoverContainer\" #popoverContainer [ngClass]=\"{ 'backdrop-visible': IsPopoverOpen }\">\n\t<button #menuButton class=\"grMenuAction\" (click)=\"togglePopover($event)\" [ngClass]=\"{ 'active': IsPopoverOpen }\">\n\t\t<span class=\"grMenuAction__ico\"><i class=\"icon icon-filter-option\"></i></span>\n\t\t<span class=\"grMenuAction__txt\">{{ \"Actions\" | term : GlobalTermService.languageCode }}</span>\n\t</button>\n\t<div class=\"grPopover\" #popover [style.display]=\"IsPopoverOpen ? 'block' : 'none'\">\n\t\t<!-- Menú -->\n\t\t<div class=\"grPopoverMenu\" *ngIf=\"ShowActionsMenu\" [ngClass]=\"{ hidden: !ShowSelectActions }\">\n\t\t\t<div class=\"grPopoverHeader\">\n\t\t\t\t<h3>\n\t\t\t\t\t<span>{{ \"SelectAction\" | term : GlobalTermService.languageCode }}</span>\n\t\t\t\t</h3>\n\t\t\t</div>\n\t\t\t<div class=\"grPopoverBody\">\n\t\t\t\t<button pRipple class=\"grButtonActions\" *ngFor=\"let item of actions; let $index = index\" (click)=\"showTemplate(item)\">\n\t\t\t\t\t<span class=\"formRowInputNumber\">{{ $index + 1 }}</span>\n\t\t\t\t\t<span class=\"grButtonActionName\">{{ item.name | term : GlobalTermService.languageCode }}</span>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<!-- Sub Menú -->\n\t\t<div class=\"grPopoverSubMenu\" [ngClass]=\"{ hidden: !item.active }\" *ngFor=\"let item of actions\">\n\t\t\t<div class=\"grPopoverHeader\">\n\t\t\t\t<h3>\n\t\t\t\t\t<button class=\"backButton\" (click)=\"returnSelectActions(item)\">\n\t\t\t\t\t\t<i class=\"icon icon-arrow-left\"></i>\n\t\t\t\t\t</button>\n\t\t\t\t\t<span>{{ item.name | term : GlobalTermService.languageCode }}</span>\n\t\t\t\t</h3>\n\t\t\t</div>\n\t\t\t<div class=\"grPopoverBody\">\n\t\t\t\t<ng-container *ngTemplateOutlet=\"item.template\"></ng-container>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n","import { Component, Input, Output, EventEmitter, inject } from \"@angular/core\";\nimport { FilterModel } from \"./model/filter.model\"; // Ajusta la ruta según tu proyecto\nimport { CommonModule, DatePipe } from \"@angular/common\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { GlobalTermService } from \"../../services/globalTerm.service\";\nimport { DateMode } from \"../../constants/date-mode-options.constants\";\n\n@Component({\n selector: \"filter-chips\",\n templateUrl: \"./filter-chips.component.html\",\n imports: [CommonModule, TooltipModule],\n providers: [DatePipe],\n})\nexport class FilterChipsComponent {\n @Input() filters: FilterModel[] = [];\n @Output() remove = new EventEmitter<FilterModel>();\n @Output() openPopUp = new EventEmitter<FilterModel>();\n readonly GlobalTermService = inject(GlobalTermService);\n readonly datePipe = inject(DatePipe);\n\n onRemove(filter: FilterModel) {\n this.remove.emit(filter);\n }\n\n onTapChip(filter: FilterModel) {\n this.openPopUp.emit(filter);\n }\n\n isBooleanTrue(value: any): boolean {\n return typeof value === \"boolean\" && value === true;\n }\n\n getDateFormat(mode: DateMode): string {\n switch (mode) {\n case \"month\":\n return \"M/yy\";\n case \"year\":\n return \"yy\";\n default:\n return \"d/M/yy\";\n }\n }\n\n formatDateValue(value: any, mode: string): string {\n const pattern = this.getDateFormat(mode as DateMode);\n\n if (Array.isArray(value) && value.length === 2) {\n return `${this.datePipe.transform(\n value[0],\n pattern\n )} - ${this.datePipe.transform(value[1], pattern)}`;\n }\n\n if (value) {\n return this.datePipe.transform(value, pattern) || \"\";\n }\n\n return \"\";\n }\n\n isDateOrDateRange(value: any): boolean {\n const isValidDate = (v: any): boolean => {\n if (typeof v !== \"string\") return false;\n const date = new Date(v);\n return !isNaN(date.getTime());\n };\n\n // Caso 1: Fecha simple (string)\n if (isValidDate(value)) {\n return true;\n }\n\n // Caso 2: Rango de fechas (array de 2 strings válidas)\n if (Array.isArray(value) && value.length === 2) {\n return value.every(isValidDate);\n }\n\n return false;\n }\n\n sortList(list: any[] | string | null | undefined): string[] {\n if (!Array.isArray(list)) {\n return [];\n }\n const stringList = list.map((item) =>\n typeof item === \"string\"\n ? item\n : item?.name || item?.text || JSON.stringify(item)\n );\n const sorted = [...stringList].sort();\n if (sorted.length > 5) {\n return sorted\n .slice(0, 5)\n .map((item, index) => `${index + 1}. ${item}`)\n .concat(\"...\");\n } else {\n return sorted.map((item, index) => `${index + 1}. ${item}`);\n }\n }\n\n getSafeString(value: string | string[] | null | undefined): string | null {\n if (Array.isArray(value)) {\n return value.join(\", \");\n }\n return value ?? null;\n }\n}\n","<div class=\"d-flex gap-2 flex-wrap\">\n\t@for (item of filters; track $index) {\n\t<button\n\t\tclass=\"prPill\"\n\t\tpInputText\n\t\t(click)=\"onTapChip(item)\"\n\t\t[pTooltip]=\"item.isTooltipForm ? tooltipFormContent : item.valueName!.length > 1 ? tooltipContent : item.title ?? ''\"\n\t\ttooltipPosition=\"top\"\n\t>\n\t\t<!-- Templates de tooltip -->\n\t\t<ng-template #tooltipFormContent>\n\t\t\t<span>{{ item.text?.toString() }}</span>\n\t\t\t<br />\n\t\t\t<ul *ngIf=\"item.valueName!.length > 1\" class=\"tooltip-list list-unlisted text-start filterChipsList\">\n\t\t\t\t<li *ngFor=\"let value of item.valueName\">{{ value }}</li>\n\t\t\t</ul>\n\t\t</ng-template>\n\n\t\t<ng-template #tooltipContent>\n\t\t\t<ul *ngIf=\"item.valueName!.length > 1\" class=\"tooltip-list list-unlisted text-start filterChipsList\">\n\t\t\t\t<li *ngFor=\"let value of sortList(item.valueName)\">\n\t\t\t\t\t{{ value }}\n\t\t\t\t</li>\n\t\t\t</ul>\n\t\t</ng-template>\n\n\t\t<!-- Texto del chip -->\n\t\t<span class=\"prPill__value\">\n\t\t\t<ng-container *ngIf=\"isBooleanTrue(item.value)\">{{ item.title | slice : 0 : 15 }}{{ item.title && item.title.length > 15 ? \"...\" : \"\" }}</ng-container>\n\n\t\t\t<ng-container *ngIf=\"(!item.valueName || item.valueName.length === 0) && item.value && item.value.length > 0 && !item.dateFormat\">\n\t\t\t\t{{ item.text | slice : 0 : 15 }}{{ item.text && item.text.length > 15 ? \"...\" : \"\" }}\n\t\t\t</ng-container>\n\n\t\t\t<ng-container *ngIf=\"item.dateFormat\">\n\t\t\t\t{{ formatDateValue(item.value, item.dateFormat) }}\n\t\t\t</ng-container>\n\n\t\t\t<ng-container *ngIf=\"item.valueName?.length === 1\">{{ item.text | slice : 0 : 15 }}{{ item.text!.length > 15 ? \"...\" : \"\" }}</ng-container>\n\n\t\t\t<ng-container *ngIf=\"item.valueName!.length > 1\">{{ item.title | slice : 0 : 15 }}{{ item.title!.length > 15 ? \"...\" : \"\" }}</ng-container>\n\n\t\t\t<ng-container *ngIf=\"item.valueName!.length > 1 && !item.isTooltipForm\">({{ item.valueName?.length }})</ng-container>\n\t\t</span>\n\n\t\t<!-- Botón de cierre -->\n\t\t<i class=\"icon-close1\" (click)=\"onRemove(item); $event.stopPropagation()\"></i>\n\t</button>\n\t}\n</div>\n","export enum FilterTypeEnum {\n\tSelect = 0,\n\tText = 1,\n\tCheckbox = 2,\n\tDate = 3,\n\tSelectDetail = 4,\n\tTemplate = 5,\n\tTextArea = 6,\n\tTextRange = 7,\n}","import {\n Directive,\n EventEmitter,\n forwardRef,\n Injectable,\n Input,\n Output,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { Subject } from \"rxjs\";\nimport { FilterTypeEnum } from \"../../enums/filter-type.enum\";\nimport { FilterChangedModel } from \"../../model/filterChanged.model\";\nconst noop = () => {};\n\nexport const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FilterDirective),\n multi: true,\n};\n@Injectable({\n providedIn: \"root\",\n})\n@Directive({\n selector: \"filter\",\n providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR],\n})\nexport class FilterDirective implements ControlValueAccessor {\n @Input() name: string = \"\";\n @Input() label: string = \"\";\n @Input() visible: boolean = true;\n @Input() enabled: boolean = true;\n @Input() parent: string = \"\";\n @Input() placeholder: string = \"\";\n @Input() title: string = \"\";\n @Input() filterClass: string = \"\";\n @Input() letterIndex: boolean = false;\n @Input() defaultValue: any;\n @Input() showClean: boolean = true;\n @Input() showInAppliedFilter: boolean = true;\n @Input() showClass: boolean = true;\n @Input() selectClass: any = null;\n @Input() confirmDateFormat: boolean = false;\n @Input() hasFilterActionsButton: boolean = false;\n @Input() visibilityRules: { child: string; allowedValues: any[] }[] = [];\n @Output() change: EventEmitter<FilterChangedModel> =\n new EventEmitter<FilterChangedModel>();\n\n private innerValue: any = \"\";\n\n children: FilterDirective[] = [];\n $changes: Subject<any> = new Subject<any>();\n type: FilterTypeEnum;\n index: number = -1;\n\n get value(): any {\n return this.innerValue;\n }\n\n // set accessor including call the onchange callback\n set value(v: any) {\n if (v !== this.innerValue) {\n this.innerValue = v;\n this.onChangeCallback(v);\n }\n }\n\n constructor(filterType: FilterTypeEnum) {\n this.type = filterType;\n }\n\n writeValue(value: any): void {\n if (value !== this.innerValue) {\n this.innerValue = value;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedCallback = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {}\n\n onBlur() {\n this.onTouchedCallback();\n }\n\n private onTouchedCallback: () => void = noop;\n private onChangeCallback: (_: any) => void = noop;\n}\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n forwardRef,\n inject,\n Input,\n OnDestroy,\n Output,\n} from \"@angular/core\";\nimport { MultiSelectModule } from \"primeng/multiselect\";\nimport { CheckboxModule } from \"primeng/checkbox\";\nimport { FormsModule } from \"@angular/forms\";\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from \"@angular/forms\";\nimport { TermPipe } from \"../../pipes/term.pipes\";\nimport { GlobalTermService } from \"../../services/globalTerm.service\";\nimport { CommonModule } from \"@angular/common\";\n\n@Component({\n selector: \"intelica-multi-select\",\n imports: [\n FormsModule,\n MultiSelectModule,\n CheckboxModule,\n TermPipe,\n CommonModule,\n ],\n templateUrl: \"./multi-select.component.html\",\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelectComponent),\n multi: true,\n },\n ],\n})\nexport class MultiSelectComponent\n implements ControlValueAccessor, AfterViewInit\n{\n readonly GlobalTermService = inject(GlobalTermService);\n /**\n * @description Id\n * @default\t\"\"\n * @type {string}\n */\n @Input() id: string = \"\";\n\n /**\n * @description Opciones.\n * @example\t[{value: string, text: string}]\n * @type {any[]}\n */\n @Input() options: any[] = [];\n\n /**\n * @description Label name.\n * @default\t\"text\"\n * @type {{value: string, label: string}[]}\n */\n @Input() optionLabel: string | undefined = \"text\";\n\n /**\n * @description Value name.\n * @default\t\"value\"\n * @type {{value: string, label: string}[]}\n */\n @Input() optionValue: string | undefined = \"value\";\n\n /**\n * @description Placeholder\n * @default\t\"Select an item\"\n * @type {string}\n */\n @Input() placeholder: string = \"Select an item\";\n\n /**\n * @description Show filter textbox\n * @default\tfalse\n * @type {boolean}\n */\n @Input() showFilter: boolean = false;\n\n /**\n * @description Show All Checkbox\n * @default\tfalse\n * @type {boolean}\n */\n @Input() showAll: boolean = false;\n\n /**\n * @description All | Todo\n * @default\t\"All\"\n * @type {string}\n */\n @Input() allText: string = \"All\";\n\n /**\n * @description Number\tof selected labels to show\n * @default\t3\n * @type {number}\n */\n @Input() maxSelectedLabels: number = 1;\n\n /**\n * @description Append To\n * @default\t\"\"\n * @type {string}\n */\n @Input() appendTo: string = \"\";\n\n /**\n * @description Panel Style Class\n * @default\t\"\"\n * @type {string}\n */\n @Input() panelStyleClass: string = \"prMultiselect\";\n\n /**\n * @description Enable virtual scroll\n * @default\t\"\"\n * @type {boolean}\n */\n @Input() virtualScroll: boolean = false;\n\n /**\n * @description Enable virtual scroll\n * @default\t\"\"\n * @type {boolean}\n */\n @Input() disabled: boolean = false;\n\n /**\n * @description Label for the selected items\n * @default\t\"\"\n * @type {string}\n */\n @Input() selectedItemsLabel: string = \"Selected\";\n\n /**\n * @description Style por color text\n * @default\t\"\"\n * @type {string}\n */\n @Input() textColorClass: string = \"\";\n\n /**\n * @description Enable group\n * @default\t\"\"\n * @type {boolean}\n */\n @Input() group: boolean = false;\n\n /**\n * @description Reset filter on hide\n * @default\t\"\"\n * @type {boolean}\n */\n @Input() resetFilterOnHide: boolean = true;\n\n /**\n * @description Change event\n * @emits {string[]}\n * @type {EventEmitter<string[]>}\n */\n @Output(\"onChange\") onChangeEvent: EventEmitter<string[]> =\n new EventEmitter();\n @Output(\"onPanelShow\") onPanelShowEvent: EventEmitter<any> =\n new EventEmitter();\n @Output(\"onPanelHide\") onPanelHideEvent: EventEmitter<any> =\n new EventEmitter();\n\n checked: boolean = false;\n selectedOptions: string[] = [];\n\n onChangeFn: any = () => {};\n onTouchedFn: any = () => {};\n\n /**\n * @description Define custom class\n * @default\t\"\"\n * @type {boolean}\n */\n @Input() customClass: string = \"\";\n\n ngAfterViewInit(): void {\n if (this.options.some((option) => typeof option !== \"object\")) {\n this.optionValue = undefined;\n this.optionLabel = undefined;\n }\n }\n\n writeValue(value: string[]): void {\n this.selectedOptions = value || [];\n const totalOptionsCount = this.group\n ? this.options.reduce((acc, group) => acc + group.items.length, 0)\n : this.options.length;\n\n this.checked = this.selectedOptions.length === totalOptionsCount;\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n /* opcional: implementar si necesitas deshabilitar el componente desde ngModel */\n }\n\n toggleAllSelection(event: any) {\n if (!event.checked) {\n this.selectedOptions = [];\n } else {\n if (this.group) {\n // Agrupadas: aplanar todos los items\n this.selectedOptions = this.options.flatMap((group) =>\n group.items.map((item: any) =>\n this.optionValue ? item[this.optionValue] : item\n )\n );\n } else {\n // Sin agrupar\n this.selectedOptions = this.options.map((option) =>\n this.optionValue ? option[this.optionValue] : option\n );\n }\n }\n this.checked = this.selectedOptions.length > 0;\n this.emitChangeEvent();\n }\n\n onChangeSelect(event: any) {\n this.checked = this.selectedOptions.length === this.options.length;\n this.emitChangeEvent();\n this.onChangeFn(this.selectedOptions);\n this.onTouchedFn();\n }\n\n emitChangeEvent() {\n this.onChangeEvent.emit(this.selectedOptions);\n this.onChangeFn(this.selectedOptions);\n this.onTouchedFn();\n }\n\n onPanelShow(event: any) {\n this.onPanelShowEvent.emit(event);\n }\n\n onPanelHide(event: any) {\n this.onPanelHideEvent.emit(event);\n }\n}\n","<p-multiSelect\n [class]=\"textColorClass + ' prMultiselect'\"\n [disabled]=\"disabled\"\n [options]=\"options\"\n [(ngModel)]=\"selectedOptions\"\n [optionLabel]=\"optionLabel\"\n [optionValue]=\"optionValue\"\n [placeholder]=\"placeholder\"\n [maxSelectedLabels]=\"maxSelectedLabels\"\n [filter]=\"showFilter\"\n [showToggleAll]=\"false\"\n (onChange)=\"onChangeSelect($event)\"\n (onPanelHide)=\"onPanelHide($event)\"\n (onPanelShow)=\"onPanelShow($event)\"\n [appendTo]=\"appendTo\"\n [panelStyleClass]=\"panelStyleClass\"\n [virtualScroll]=\"virtualScroll\"\n [virtualScrollOptions]=\"{ itemSize: 25, scrollHeight: '200px' }\"\n selectedItemsLabel=\"{0} {{\n selectedItemsLabel | term : GlobalTermService.languageCode\n }}\"\n [group]=\"group\"\n [resetFilterOnHide]=\"resetFilterOnHide\"\n [ngClass]=\"customClass\"\n>\n @if(showAll){\n <ng-template #header>\n <div class=\"prMultiselect__all\">\n <label [for]=\"id + '-all'\">\n <p-checkbox\n [inputId]=\"id + '-all'\"\n [binary]=\"true\"\n [(ngModel)]=\"checked\"\n (onChange)=\"toggleAllSelection($event)\"\n ></p-checkbox>\n {{ allText | term : GlobalTermService.languageCode }}\n </label>\n </div>\n </ng-template>\n }\n <ng-template let-group #group *ngIf=\"group\">\n <div class=\"flex items-center\">\n <span>{{ group.label }}</span>\n </div>\n </ng-template>\n</p-multiSelect>\n","import { CommonModule } from \"@angular/common\";\nimport {\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n} from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { ButtonModule } from \"primeng/button\";\nimport { CheckboxModule } from \"primeng/checkbox\";\nimport { DatePickerModule } from \"primeng/datepicker\";\nimport { InputTextModule } from \"primeng/inputtext\";\nimport { MultiSelectModule } from \"primeng/multiselect\";\nimport { SelectModule } from \"primeng/select\";\nimport { TextareaModule } from \"primeng/textarea\";\nimport { Subscription } from \"rxjs\";\nimport { GlobalTermService } from \"../../services/globalTerm.service\";\nimport { FilterModel } from \"../../model/filter.model\";\nimport { FilterDirective } from \"../../directives/filters/filter.directive\";\nimport { FilterTypeEnum } from \"../../enums/filter-type.enum\";\nimport { SelectFilterDirective } from \"../../directives/filters/select-filter.directive\";\nimport { TermPipe } from \"../../pipes/term.pipes\";\nimport { RippleModule } from \"primeng/ripple\";\nimport { DateMode } from \"../../constants/date-mode-options.constants\";\nimport { MultiSelectComponent } from \"../multi-select/multi-select.component\";\nimport { DateFilterDirective } from \"../../../public-api\";\n\n@Component({\n selector: \"intelica-filters\",\n imports: [\n CommonModule,\n DatePickerModule,\n FormsModule,\n TermPipe,\n ButtonModule,\n InputTextModule,\n CheckboxModule,\n SelectModule,\n MultiSelectModule,\n TextareaModule,\n RippleModule,\n MultiSelectComponent,\n ],\n templateUrl: \"./filters.component.html\",\n})\nexport class FiltersComponent implements OnInit, OnChanges, OnDestroy {\n readonly GlobalTermService = inject(GlobalTermService);\n @Input() showButtons: boolean = true;\n @Input() customClass: string = \"\";\n @Input() columns: number = 1;\n @Output() EmitApply: EventEmitter<any> = new EventEmitter<any>();\n @Output() EmitCancel: EventEmitter<any> = new EventEmitter<any>();\n\n // Suscripciones a eventos\n subscriptions: Subscription[] = [];\n\n // Objeto para almacenar términos\n terms: any;\n\n // Variable para mostrar u ocultar opciones de menú\n showMenuOptions: boolean = false;\n\n // Variable para manejar el estilo de altura de pantalla\n styleHeighScreen: boolean = false;\n\n // Lista de filtros aplicados\n _filtersApplied: FilterModel[] = [];\n\n // Clases CSS asociadas a diferentes tipos de controles\n radioClass = \"radioStyle\";\n comboClass = \"comboStyle\";\n ddlClass = \"ddlStyle\";\n ddtClass = \"ddtStyle\";\n dPClass = \"dPStyle\";\n mSClass = \"mSStyle\";\n\n // Texto descriptivo para la opción seleccionada\n selectDescription = \"Selected\";\n\n /**\n * Colección de elementos filtrados mediante la directiva FilterDirective.\n * Utilice @ContentChildren para obtener referencias a elementos dentro del contenido proyectado.\n * @type {QueryList<FilterDirective>}\n */\n @ContentChildren(FilterDirective)\n filterDirectives!: QueryList<FilterDirective>;\n\n // Referencia al ng-template filterActionsButton\n @ContentChild(\"filterActionsButton\", { static: true })\n filterActionsButtonTemplate!: TemplateRef<any>;\n\n /**\n * Colección de instancias de DropDownListComponent.\n * Utilice @ViewChildren para obtener referencias a componentes hijos dentro de la vista actual.\n * @type {QueryList<DropDownListComponent>}\n */\n // @ViewChildren(DropDownListComponent) selects!: QueryList<DropDownListComponent>;\n\n // Cadena de letras\n letters: string = \"abcdefghijklmnopqrstuvwxyz\";\n\n // Arreglo de filtros\n filters: FilterDirective[] = [];\n\n // Enumeración de tipos de filtro\n filterTypeEnum = FilterTypeEnum;\n\n // Índices y longitud de columnas\n indexArray: number[] = [];\n columnsLengthArray: any = [];\n\n // Idioma default para datepicker\n language = \"en\";\n\n //Cantidad limite para mostrar buscador en select-filter\n filterThreshold: number = 10;\n\n hasNoActiveClass: boolean = false;\n\n constructor(private cd: ChangeDetectorRef) {}\n\n ngOnInit() {\n this.columnsLengthArray = Array.from({ length: this.columns }, (_, i) => i);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n for (const propertyName in changes) {\n if (propertyName === \"columns\") {\n const CHANGE = changes[propertyName];\n const CURRENT = CHANGE.currentValue;\n\n this.columnsLengthArray = Array.from({ length: CURRENT }, (v, i) => i);\n this.cd.detectChanges();\n }\n }\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((subscription) => {\n subscription.unsubscribe();\n });\n }\n\n ngAfterViewInit(): void {\n this.setColumnSize();\n this.filters = this.filterDirectives.toArray();\n\n this.filters.forEach((filter) => {\n if (filter.parent) {\n const parent = this.filters.find((f) => f.name === filter.parent);\n if (parent) {\n parent.children.push(filter);\n }\n }\n });\n\n this.subscriptions = [];\n this.filterDirectives.forEach((filter) => {\n if (\n (filter.value === undefined ||\n filter.value === null ||\n filter.value === \"\") &&\n filter.defaultValue != null\n ) {\n filter.value = filter.defaultValue;\n if (filter.type === FilterTypeEnum.Select) {\n filter.value = null;\n }\n this.toggleChildrenVisibility(filter);\n }\n });\n\n this.cd.detectChanges();\n }\n\n getOptionCount(item: any): number {\n if (!item.options || !Array.isArray(item.options)) return 0;\n\n if (item.group) {\n return item.options.reduce((total: number, group: any) => {\n return total + (Array.isArray(group.items) ? group.items.length : 0);\n }, 0);\n } else {\n return item.options.length;\n }\n }\n\n onChange($event: any, filter: FilterDirective): void {\n const value = $event?.value !== undefined ? $event.value : $event;\n filter.value = value;\n this.toggleChildrenVisibility(filter);\n if (filter.change) {\n filter.change.emit({ current: filter, all: this.filterDirectives });\n }\n }\n\n onChangeCheck($event: any, filter: FilterDirective): void {\n filter.value = $event.checked;\n if (filter.change) {\n filter.change.emit({ current: filter, all: this.filterDirectives });\n }\n }\n\n onChangeMultiple($event: any, filter: FilterDirective): void {\n const value = $event?.value !== undefined ? $event.value : $event;\n filter.value = value;\n this.toggleChildrenVisibility(filter);\n if (filter.change) {\n filter.change.emit({ current: filter, all: this.filterDirectives });\n }\n }\n\n isUnselected(item: FilterDirective): boolean {\n const v = item.value;\n const d = item.defaultValue;\n\n if (v === null || v === undefined) return true;\n\n if (item.type === this.filterTypeEnum.Select) {\n if (Array.isArray(v)) {\n const defArr = Array.isArray(d) ? d : [];\n return v.length === 0 || this.arraysAreEqual(v, defArr);\n }\n return v === d;\n }\n\n if (\n item.type === this.filterTypeEnum.Text ||\n item.type === this.filterTypeEnum.TextArea\n ) {\n return typeof v === \"string\" ? v.trim() === \"\" : v === d;\n }\n\n if (item.type === this.filterTypeEnum.Date) {\n if (Array.isArray(v)) {\n const defArr = Array.isArray(d) ? d : [];\n const sameLen = v.length === defArr.length;\n const sameDates =\n sameLen &&\n v.every(\n (vx, i) =>\n vx instanceof Date &&\n defArr[i] instanceof Date &&\n vx.getTime() === (defArr[i] as Date).getTime()\n );\n return v.every((x) => !x) || sameDates;\n }\n if (v instanceof Date && d instanceof Date)\n return v.getTime() === d.getTime();\n return !v;\n }\n return v === d || !v;\n }\n\n private toggleChildrenVisibility(filter: FilterDirective): void {\n if (!filter.visibilityRules?.length) return;\n\n const allFilters = this.filterDirectives.toArray();\n\n filter.visibilityRules.forEach((rule) => {\n const child = allFilters.find((f) => f.name === rule.child);\n if (child) {\n const value = filter.value;\n const shouldShow = Array.isArray(value)\n ? value.some((v) => rule.allowedValues.includes(v))\n : rule.allowedValues.includes(value);\n\n child.visible = shouldShow;\n child.$changes.next({ visible: { currentValue: shouldShow } });\n }\n });\n }\n\n onKeyUp($event: any, filter: FilterDirective) {\n if (filter.change)\n filter.change.emit({ current: filter, all: this.filterDirectives });\n }\n\n cleanValue(filter: FilterDirective) {\n // Limpiar valor del filtro actual\n if (filter.defaultValue !== undefined && filter.defaultValue !== null) {\n filter.value = filter.defaultValue;\n } else {\n switch (typeof filter.value) {\n case \"string\":\n if (filter.type === FilterTypeEnum.Select) {\n filter.value = null;\n } else {\n filter.value = \"\";\n }\n break;\n case \"boolean\":\n filter.value = false;\n break;\n default:\n if (Array.isArray(filter.value)) {\n filter.value = [];\n } else {\n filter.value = null;\n }\n break;\n }\n }\n\n // Si es padre, limpiar hijos\n if (!filter.parent) {\n const children = this.filterDirectives.filter(\n (f) => f.parent === filter.name\n );\n const shouldHideChildren = !(\n filter.defaultValue !== undefined && filter.defaultValue !== null\n ); // solo ocultar si el padre NO tiene defaultValue\n\n children.forEach((child) => {\n if (child.defaultValue !== undefined && child.defaultValue !== null) {\n child.value = child.defaultValue;\n } else {\n switch (typeof child.value) {\n case \"string\":\n child.value = \"\";\n break;\n case \"boolean\":\n child.value = false;\n break;\n default:\n if (Array.isArray(child.value)) {\n child.value = [];\n } else {\n child.value = null;\n }\n break;\n }\n }\n\n if (shouldHideChildren) {\n child.visible = false;\n }\n\n if (child.change) {\n child.change.emit({\n current: child,\n all: this.filterDirectives,\n });\n }\n });\n }\n\n const index = this._filtersApplied.findIndex((x) => x.name === filter.name);\n if (index !== -1) this._filtersApplied.splice(index, 1);\n\n if (filter.change) {\n filter.change.emit({ current: filter, all: this.filterDirectives });\n }\n\n this.cd.detectChanges();\n }\n\n /**\n * Construye y actualiza la lista de filtros aplicados con la información proporcionada por la directiva de filtro.\n * @param {FilterDirective} filter - La directiva de filtro que proporciona la información.\n * @returns {void}\n */\n builderFiltersApplied(filter: FilterDirective): void {\n if (!filter.showInAppliedFilter) return;\n\n let value = filter.value;\n let text = filter.value;\n let valueName: any = [];\n let dateFormat: any = \"\";\n\n if (filter.type === FilterTypeEnum.Select) {\n const selectFilter = filter as SelectFilterDirective;\n\n if (selectFilter.multiple) {\n text = \"\";\n filter.value.forEach((f: any) => {\n let filterSelect = selectFilter.options.filter(\n (x) => x[selectFilter.optionValue] === f\n );\n if (filterSelect.length)\n valueName = [\n ...valueName,\n filterSelect[0][selectFilter.optionLabel],\n ];\n if (filterSelect.length > 0)\n text = text + filterSelect[0][selectFilter.optionLabel] + \"-\";\n });\n text = text.slice(0, -1);\n } else {\n let filterSelect = selectFilter.options.filter(\n (x) => x[selectFilter.optionValue] === filter.value\n );\n if (filterSelect.length > 0)\n text = filterSelect[0][selectFilter.optionLabel];\n }\n }\n\n let filterApplied = this._filtersApplied.filter(\n (x) => x.name === filter.name\n )[0] as any;\n\n if (!filterApplied) {\n if (filter.type === FilterTypeEnum.Date) {\n const dateFilter = filter as DateFilterDirective;\n this._filtersApplied.push({\n name: filter.name,\n value: value,\n text: text,\n title: filter.title,\n valueName: valueName,\n dateFormat: dateFilter.dateMode,\n });\n } else {\n this._filtersApplied.push({\n name: filter.name,\n value: value,\n text: text,\n title: filter.title,\n valueName: valueName,\n });\n }\n } else {\n filterApplied.text = text;\n filterApplied.value = value;\n }\n }\n\n /**\n * Obtiene el índice de un filtro en el contexto de todos los filtros visibles, proporcionando una numeración o letras.\n * @param {FilterDirective} filter - La directiva de filtro para la cual se obtendrá el índice.\n * @param {FilterDirective} [parentFilter] - La directiva de filtro padre, si existe, en el caso de filtros anidados.\n * @returns {string} - El índice del filtro en formato de numeración o letras.\n */\n getIndex(filter: FilterDirective, parentFilter?: FilterDirective): string {\n const filters = [\n ...this.filterDirectives.filter((x) => !x.parent && x.visible),\n ];\n\n // Verifica si el filtro está en la lista principal de filtros visibles\n if (filters.indexOf(filter) > -1) {\n // Retorna el índice en formato de letras si está definido, de lo contrario, utiliza la numeración\n if (filter.letterIndex) return this.letters[filters.indexOf(filter)];\n return (filters.indexOf(filter) + 1).toString();\n }\n\n // Si hay un filtro padre proporcionado\n if (parentFilter) {\n const children = [\n ...this.filterDirectives.filter(\n (x) => x.parent === parentFilter?.name && x.visible\n ),\n ];\n let index: string = \"\";\n\n // Concatena el índice del filtro padre en formato de letras o numeración\n if (parentFilter.letterIndex)\n index += this.letters[filters.indexOf(parentFilter)];\n else index += (filters.indexOf(parentFilter) + 1).toString();\n\n // Concatena el índice del filtro actual en formato de letras o numeración\n if (filter.letterIndex)\n index += \".\" + this.letters[children.indexOf(filter)];\n else index += \".\" + (children.indexOf(filter) + 1).toString();\n\n return index;\n }\n\n // Retorna 'ERROR' si no se cumple ninguna de las condiciones anteriores\n return \"ERROR\";\n }\n\n /**\n * Maneja el evento de hacer clic en el botón \"Aplicar\" para aplicar los filtros seleccionados.\n * Limpia la lista de filtros aplicados y construye la lista nuevamente con los valores actuales de los filtros.\n * Luego, emite el evento `EmitApply` con la lista de filtros aplicados.\n * @returns {void}\n */\n clickApply(): void {\n // Limpia la lista de filtros aplicados\n this._filtersApplied = [];\n // Itera sobre todas las directivas de filtro\n this.filterDirectives.forEach((filterDirective) => {\n if (this.validateFilter(filterDirective)) {\n // Verifica si el tipo de filtro es de texto\n if (filterDirective.type === FilterTypeEnum.Text) {\n // Comprueba si el valor de texto no está vacío y agrega el filtro aplicado\n if (\n filterDirective.value !== undefined &&\n filterDirective.value !== null &&\n filterDirective.value.trim() !== \"\"\n ) {\n this.builderFiltersApplied(filterDirective);\n }\n } else {\n // Si el filtro requiere confirmación de formato de fecha, convierte el valor a un objeto de fecha\n if (filterDirective.confirmDateFormat) {\n const parsedDate = new Date(filterDirective.value);\n filterDirective.value = this.isValidDate(parsedDate)\n ? parsedDate\n : null;\n }\n\n // Comprueba si el valor del filtro es válido y no está vacío, luego agrega el filtro aplicado\n if (\n filterDirective.value !== undefined &&\n filterDirective.value !== null &&\n (this.validStringValue(\n filterDirective.value,\n filterDirective.defaultValue\n ) ||\n filterDirective.value > -1 ||\n Array.isArray(filterDirective.value) ||\n this.isValidDate(filterDirective.value)) &&\n filterDirective.value.toString().length > 0\n ) {\n this.builderFiltersApplied(filterDirective);\n }\n }\n }\n });\n\n this.EmitApply.emit(this._filtersApplied);\n }\n\n private isValidDate(value: any): boolean {\n return value instanceof Date && !isNaN(value.getTime());\n }\n\n validateFilter(filter: FilterDirective): boolean {\n return filter.value !== undefined && filter.value !== null;\n }\n\n validStringValue(value: any, defaultValue: any): boolean {\n return (\n typeof (value == \"string\" || value === \"Object\") && value != defaultValue\n );\n }\n\n clickCancel(): void {\n this.filterDirectives.forEach((filter) => {\n // Restaurar valor por default o limpiar\n if (filter.defaultValue !== undefined && filter.defaultValue !== null) {\n filter.value = filter.defaultValue;\n } else {\n switch (typeof filter.value) {\n case \"string\":\n filter.value = \"\";\n break;\n case \"boolean\":\n filter.value = false;\n break;\n case \"object\":\n if (Array.isArray(filter.value)) {\n filter.value = [];\n } else {\n filter.value = null;\n }\n break;\n default:\n filter.value = null;\n break;\n }\n }\n\n // Ocultar hijos si su padre no tiene defaultValue\n if (filter.parent) {\n const parent = this.filterDirectives.find(\n (f) => f.name === filter.parent\n );\n const parentHasDefault =\n parent?.defaultValue !== undefined && parent?.defaultValue !== null;\n\n if (!parentHasDefault) {\n filter.visible = false;\n }\n }\n\n if (filter.change) {\n filter.change.emit({ current: filter, all: this.filterDirectives });\n }\n });\n\n this._filtersApplied = [];\n\n this.EmitCancel.emit(this.filterDirectives);\n\n this.cd.detectChanges();\n }\n\n /**\n * Evalúa si el valor actual del filtro es diferente al valor predeterminado, considerando el tipo de filtro.\n * @param {FilterDirective} filter - La directiva de filtro a evaluar.\n * @returns {boolean} - `true` si el valor actual es diferente al valor predeterminado, `false` de lo contrario.\n */\n evaluatecleanvalue(filter: FilterDirective): boolean {\n let isContinue = filter.value != filter.defaultValue;\n\n // Si el tipo de filtro es de fecha y el valor predeterminado es un objeto de fecha, compara las fechas en milisegundos\n if (\n filter.type === FilterTypeEnum.Date &&\n typeof filter.defaultValue === \"object\" &&\n filter.defaultValue != null\n ) {\n isContinue =\n (filter.value as Date).getTime() !=\n (filter.defaultValue as Date).getTime();\n }\n\n // Si el tipo de filtro es SelectDetail, compara los primeros elementos de los arreglos\n if (filter.type === FilterTypeEnum.SelectDetail) {\n isContinue = filter.value[0] != filter.defaultValue[0];\n }\n\n return isContinue;\n }\n\n /**\n * Evalúa si el valor actual del filtro de texto es diferente al valor predeterminado y cumple con ciertas condiciones.\n * @param {FilterDirective} filter - La directiva de filtro de texto a evaluar.\n * @returns {boolean} - `true` si el valor actual cumple con las condiciones para ser diferente al valor predeterminado, `false` de lo contrario.\n */\n evaluatecleanvaluetext(filter: FilterDirective): boolean {\n let isContinue =\n filter.value != null &&\n filter.value != 0 &&\n filter.value != -1 &&\n filter.value != filter.defaultValue &&\n filter.showClass;\n\n if (filter.defaultValue) {\n isContinue = filter.value != null && filter.value != filter.defaultValue;\n }\n\n // Si el tipo de filtro es de fecha y el valor predeterminado es un objeto de fecha, compara las fechas en milisegundos\n if (\n filter.value != null &&\n filter.type === FilterTypeEnum.Date &&\n typeof filter.defaultValue === \"object\" &&\n filter.defaultValue != null\n ) {\n isContinue =\n (filter.value as Date).getTime() !=\n (filter.defaultValue as Date).getTime();\n }\n\n if (filter.type === FilterTypeEnum.Select) {\n if (Array.isArray(filter.value) && Array.isArray(filter.defaultValue)) {\n isContinue = !this.arraysAreEqual(filter.value, filter.defaultValue);\n } else {\n isContinue = filter.value != filter.defaultValue;\n }\n }\n return isContinue;\n }\n\n private arraysAreEqual(arr1: any[], arr2: any[]): boolean {\n if (arr1.length !== arr2.length) return false;\n return arr1.every((val, index) => val === arr2[index]);\n }\n\n hasValue(item: FilterDirective): boolean {\n const { value, type } = item;\n\n let has = false;\n\n if (type === this.filterTypeEnum.Select && Array.isArray(value)) {\n has = value.length > 0;\n } else if (\n type === this.filterTypeEnum.Text ||\n type === this.filterTypeEnum.TextArea\n ) {\n has = !!value && value.trim() !== \"\";\n } else if (type === this.filterTypeEnum.Date && Array.isArray(value)) {\n has = value.some((v) => !!v);\n } else {\n has = !!value;\n }\n\n if (has && this.equalsDefault(item)) {\n return false;\n }\n\n return has;\n }\n\n private equalsDefault(item: FilterDirective): boolean {\n const { value, defaultValue, type } = item;\n\n if (defaultValue === undefined || defaultValue === null) {\n return false;\n }\n\n if (\n type === this.filterTypeEnum.Select &&\n Array.isArray(value) &&\n Array.isArray(defaultValue)\n ) {\n return (\n value.length === defaultValue.length &&\n value.every((v, i) => v === defaultValue[i])\n );\n }\n\n if (\n type === this.filterTypeEnum.Date &&\n Array.isArray(value) &&\n Array.isArray(defaultValue)\n ) {\n return (\n value.length === defaultValue.length &&\n value.every(\n (v, i) =>\n v instanceof Date &&\n defaultValue[i] instanceof Date &&\n v.getTime() === (defaultValue[i] as Date).getTime()\n )\n );\n }\n\n if (\n type === this.filterTypeEnum.Date &&\n value instanceof Date &&\n defaultValue instanceof Date\n ) {\n return value.getTime() === defaultValue.getTime();\n }\n\n return value === defaultValue;\n }\n\n getDateView(mode: DateMode): \"date\" | \"month\" | \"year\" {\n switch (mode) {\n case \"month\":\n return \"month\";\n case \"year\":\n return \"year\";\n default:\n return \"date\";\n }\n }\n\n getDateFormat(mode: DateMode): string {\n switch (mode) {\n case \"month\":\n return \"m/y\";\n case \"year\":\n return \"y\";\n default:\n return \"d/m/y\";\n }\n }\n\n getDateFormatPlaceholder(mode: DateMode): string {\n switch (mode) {\n case \"month\":\n return \"m/yy\";\n case \"year\":\n return \"yy\";\n default:\n return \"d/m/yy\";\n }\n }\n\n setColumnSize(): string {\n let response = \"col-md-6\";\n\n if (this.filterDirectives) {\n const visibleParents = this.filterDirectives.filter(\n (x) => x.visible && !x.parent\n );\n const columnBreak = Math.ceil(visibleParents.length / this.columns);\n\n for (const ind of this.columnsLengthArray) {\n const pageNumber = ind + 1;\n const parentsInCol = visibleParents.slice(\n (pageNumber - 1) * columnBreak,\n pageNumber * columnBreak\n );\n\n for (const parent of parentsInCol) {\n parent.index = ind;\n\n const children = this.filterDirectives.filter(\n (x) => x.visible && x.parent === parent.name\n );\n for (const child of children) {\n child.index = ind;\n }\n }\n }\n }\n\n switch (this.columns) {\n case 1:\n response = \"col-md-12\";\n break;\n case 2:\n response = \"col-md-6\";\n break;\n case 3:\n response = \"col-md-4\";\n break;\n case 4:\n response = \"col-md-3\";\n break;\n case 6:\n response = \"col-md-2\";\n break;\n default:\n response = \"col-md-6\";\n break;\n }\n\n return response;\n }\n}\n","<div\n class=\"container overflow-hidden\"\n [ngStyle]=\"{ 'min-width': 313 * columns + 'px' }\"\n>\n <div class=\"row gy-3 filtersAnalytics\">\n @for (colIndex of columnsLengthArray; track colIndex) {\n <div class=\"inputRowGap\" [ngClass]=\"setColumnSize()\">\n @for (filter of filterDirectives; track filter) { @if (filter.visible &&\n !filter.parent && filter.index == colIndex) {\n <div class=\"mb-3\">\n <ng-container\n *ngTemplateOutlet=\"\n template;\n context: { item: filter, index: getIndex(filter) }\n \"\n ></ng-container>\n </div>\n\n @for (child of filterDirectives; track child) { @if (child.visible &&\n child.parent === filter.name && child.index == colIndex) {\n <div class=\"mb-3\">\n <ng-container\n *ngTemplateOutlet=\"\n template;\n context: { item: child, index: getIndex(child, filter) }\n \"\n ></ng-container>\n </div>\n } } } }\n </div>\n }\n </div>\n</div>\n\n@if (showButtons) {\n<div class=\"btnBox btnBox--center mt-4\">\n <button\n pRipple\n class=\"grButton grButton--primary applyAnalytics\"\n (click)=\"clickApply()\"\n >\n <span>{{ \"Apply\" | term : GlobalTermService.languageCode }}</span>\n </button>\n <button\n pRipple\n class=\"grButton grButton--secondary cleanAnalytics\"\n (click)=\"clickCancel()\"\n >\n <span>{{ \"Clear\" | term : GlobalTermService.languageCode }}</span>\n </button>\n</div>\n}\n\n<!-- Template general -->\n<ng-template #template let-item=\"item\" let-index=\"index\">\n @if (item.visible) {\n <div\n class=\"formRowInput {{ item.filterClass }}\"\n [ngClass]=\"{ required: item.required }\"\n >\n @if (item.label && item.label.length > 0) {\n <div class=\"formRowInputLeft\">\n <div class=\"formRowInputNumber\">\n <span>{{ index }}</span>\n </div>\n <label [for]=\"item.name\">\n <span>{{ item.label }}</span>\n </label>\n </div>\n }\n <div class=\"formRowInputWrap align-items-center\">\n @if (item.type === filterTypeEnum.Select) {\n <ng-container\n *ngTemplateOutlet=\"select; context: { item: item, index: index }\"\n ></ng-container>\n }\n <!---->\n @if (item.type === filterTypeEnum.Text) {\n <ng-container\n *ngTemplateOutlet=\"text; context: { item: item, index: index }\"\n ></ng-container>\n }\n <!---->\n @if (item.type === filterTypeEnum.Checkbox) {\n <ng-container\n *ngTemplateOutlet=\"checkbox; context: { item: item, index: index }\"\n ></ng-container>\n }\n <!---->\n @if (item.type === filterTypeEnum.Date) {\n <ng-container\n *ngTemplateOutlet=\"date; context: { item: item, index: index }\"\n ></ng-container>\n }\n <!---->\n @if (item.type === filterTypeEnum.Template) {\n <ng-container\n *ngTemplateOutlet=\"\n template_filter;\n context: { item: item, index: index }\n \"\n ></ng-container>\n }\n <!---->\n @if (item.type === filterTypeEnum.TextArea) {\n <ng-container\n *ngTemplateOutlet=\"text_area; context: { item: item, index: index }\"\n ></ng-container>\n } @if (filterActionsButtonTemplate && item.hasFilterActionsButton) {\n <ng-container\n *ngTemplateOutlet=\"filterActionsButtonTemplate\"\n ></ng-container>\n }\n </div>\n @if (item.showClean && hasValue(item)) {\n <button class=\"desactive formRowInputClear\" (click)=\"cleanValue(item)\">\n <i class=\"icon-times\"></i>\n </button>\n }\n </div>\n }\n</ng-template>\n\n<!-- Tipos de filtros -->\n<ng-template #select let-item=\"item\" let-index=\"index\">\n @if (item.multiple) {\n <intelica-multi-select\n [placeholder]=\"item.placeholder\"\n [options]=\"item.options\"\n [showFilter]=\"getOptionCount(item) > filterThreshold\"\n [resetFilterOnHide]=\"item.resetFilterOnHide\"\n [showAll]=\"item.showAll\"\n [optionLabel]=\"item.optionLabel\"\n [optionValue]=\"item.optionValue\"\n [disabled]=\"!item.enabled\"\n [(ngModel)]=\"item.value\"\n (onChange)=\"onChangeMultiple($event, item)\"\n [appendTo]=\"item.appendTo\"\n [panelStyleClass]=\"item.panelStyleClass\"\n [allText]=\"item.allText\"\n [maxSelectedLabels]=\"item.maxSelectedLabels\"\n [virtualScroll]=\"item.virtualScroll\"\n [selectedItemsLabel]=\"item.selectedItemsLabel\"\n [group]=\"item.group\"\n [customClass]=\"isUnselected(item) ? ' is-unselected' : ''\"\n [class]=\"'fullWidth'\"\n ></intelica-multi-select>\n } @else {\n <p-select\n [options]=\"item.options\"\n [(ngModel)]=\"item.value\"\n [optionLabel]=\"item.optionLabel\"\n [optionValue]=\"item.optionValue\"\n [placeholder]=\"item.placeholder\"\n [disabled]=\"!item.enabled\"\n (onChange)=\"onChange($event, item)\"\n [filter]=\"getOptionCount(item) > filterThreshold\"\n [resetFilterOnHide]=\"item.resetFilterOnHide\"\n [appendTo]=\"item.appendTo\"\n [panelStyleClass]=\"item.panelStyleClass\"\n [virtualScroll]=\"item.virtualScroll\"\n [virtualScrollItemSize]=\"25\"\n [group]=\"item.group\"\n [ngClass]=\"{ prSelect: true, 'is-unselected': isUnselected(item) }\"\n appendTo=\"body\"\n >\n <ng-template let-group #group *ngIf=\"item.group\">\n <div class=\"flex items-center\">\n <span>{{ group.label }}</span>\n </div>\n </ng-template>\n </p-select>\n }\n</ng-template>\n\n<ng-template #text let-item=\"item\" let-index=\"index\">\n <input\n pInputText\n class=\"prInputText\"\n type=\"text\"\n [disabled]=\"!item.enabled\"\n [(ngModel)]=\"item.value\"\n [placeholder]=\"item.placeholder\"\n (keyup)=\"onKeyUp($event, item)\"\n [maxlength]=\"item.maxlength\"\n />\n</ng-template>\n\n<ng-template #checkbox let-item=\"item\" let-index=\"index\">\n <p-checkbox\n class=\"prCheckbox\"\n [(ngModel)]=\"item.value\"\n [binary]=\"true\"\n [disabled]=\"!item.enabled\"\n (onChange)=\"onChangeCheck($event, item)\"\n ></p-checkbox>\n</ng-template>\n\n<ng-template #date let-item=\"item\" let-index=\"index\">\n <p-datepicker\n [(ngModel)]=\"item.value\"\n [selectionMode]=\"item.range ? 'range' : 'single'\"\n [disabled]=\"!item.enabled\"\n [iconDisplay]=\"'input'\"\n [showIcon]=\"true\"\n (ngModelChange)=\"onChange($event, item)\"\n [view]=\"getDateView(item.dateMode)\"\n [dateFormat]=\"getDateFormat(item.dateMode)\"\n class=\"prDatePicker\"\n appendTo=\"body\"\n panelStyleClass=\"prDatePicker\"\n [placeholder]=\"getDateFormatPlaceholder(item.dateMode)\"\n [readonlyInput]=\"item.isReadOnly\"\n [minDate]=\"item.min\"\n [maxDate]=\"item.max\"\n ></p-datepicker>\n</ng-template>\n\n<ng-template #template_filter let-item=\"item\" let-index=\"index\">\n <ng-container *ngTemplateOutlet=\"item.content\"></ng-container>\n</ng-template>\n\n<ng-template #text_area let-item=\"item\" let-index=\"index\">\n <textarea\n pTextarea\n class=\"prInputText\"\n [disabled]=\"!item.enabled\"\n [(ngModel)]=\"item.value\"\n [placeholder]=\"item.placeholder\"\n (keyup)=\"onKeyUp($event, item)\"\n ></textarea>\n</ng-template>\n","import {\n Component,\n ContentChild,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n} from \"@angular/core\";\nimport { Dialog } from \"primeng/dialog\";\nimport { ButtonModule } from \"primeng/button\";\nimport { CommonModule } from \"@angular/common\";\n\n@Component({\n selector: \"intelica-modal-dialog\",\n imports: [Dialog, ButtonModule, CommonModule],\n templateUrl: \"./modal-dialog.component.html\",\n})\nexport class ModalDialogComponent {\n /**\n * Título del cuadro de diálogo.\n * @type {string}\n */\n @Input() Title: string = \"\";\n\n /**\n * Tamaño del cuadro de diálogo.\n * @type {string}\n */\n @Input() Size: string = \"lg\";\n\n /**\n * Controlar el arrastre del cuadro de diálogo.\n * @type {boolean}\n */\n @Input() Draggable: boolean = false;\n\n /**\n * Controlar el cierre del cuadro de diálogo.\n * @type {boolean}\n */\n @Input() DisableMaskClose: boolean = false;\n\n /**\n * Evento emitido al cerrar el cuadro de diálogo.\n * @type {EventEmitter<boolean>}\n */\n @Output() EmmitCloseModal = new EventEmitter<boolean>();\n\n /**\n * Captura la plantilla del contenido.\n * @type {TemplateRef<any>}\n */\n @ContentChild(\"modalContent\") modalContentTemplate!: TemplateRef<any>;\n\n /**\n * Visibilidad del cuadro de diálogo.\n * @type {string}\n */\n Visible: boolean = false;\n\n public showDialog() {\n this.Visible = true;\n }\n\n public closeDialog() {\n this.Visible = false;\n this.EmmitCloseModal.emit(false);\n }\n}\n","<p-dialog\n class=\"prDialog prDialog--{{ Size }}\"\n [modal]=\"true\"\n [(visible)]=\"Visible\"\n [draggable]=\"Draggable\"\n [dismissableMask]=\"!DisableMaskClose\"\n (onHide)=\"closeDialog()\"\n>\n <ng-template pTemplate=\"header\">\n <div class=\"custom-header\">\n <h2>\n <ng-content select=\"[titleHeaderMenu]\"></ng-content>\n </h2>\n <button class=\"grButton--icon-close-modal\" (click)=\"closeDialog()\">\n <i class=\"icon-close1\"></i>\n </button>\n </div>\n </ng-template>\n <div class=\"prDialog__content\">\n <ng-container>\n <ng-container *ngTemplateOutlet=\"modalContentTemplate\"></ng-container>\n </ng-container>\n </div>\n</p-dialog>\n","import { ContentChild, Directive, EventEmitter, Input, Output } from \"@angular/core\";\n\n@Directive({\n\tselector: \"itemsplit\",\n})\nexport class ItemSplitDirective {\n\t/**\n\t * Nombre de la acción.\n\t * @type {string}\n\t */\n\t@Input() name: string = \"\";\n\n\t/**\n\t * Indica si los botones asociados a la acción deben ocultarse.\n\t * @type {boolean}\n\t * @default false\n\t */\n\t@Input() hideButtons: boolean = false;\n\n\t/**\n\t * Indica si detener la propagación de eventos al hacer clic en la acción.\n\t * @type {boolean}\n\t * @default false\n\t */\n\t@Input() stopPropagation: boolean = false;\n\n\t/**\n\t * Evento emitido cuando se hace clic en la acción.\n\t * @type {EventEmitter<any>}\n\t */\n\t@Output() onClick: EventEmitter<any> = new EventEmitter<any>();\n\n\t/**\n\t * Referencia al contenido proporcionado por la plantilla.\n\t * @type {any}\n\t */\n\t@ContentChild(\"template\") template!: any;\n\n\t/**\n\t * Indica si la acción está activa o no.\n\t * @type {boolean}\n\t * @default false\n\t */\n\tactive: boolean = false;\n}\n","import { Component, ContentChildren, QueryList } from \"@angular/core\";\nimport { PopoverModule } from \"primeng/popover\";\nimport { ItemSplitDirective } from \"./itemsplit.directive\";\nimport { CommonModule } from \"@angular/common\";\n\n@Component({\n\tselector: \"intelica-button-split\",\n\timports: [PopoverModule, CommonModule],\n\ttemplateUrl: \"./button-split.component.html\",\n})\nexport class ButtonSplitComponent {\n\t/**\n\t * Directiva que representa una colección de elementos hijos del tipo `ItemSplitDirective`.\n\t * Se utiliza para acceder a las instancias de la directiva `ItemSplitDirective` dentro de un componente.\n\t * @type {QueryList<ItemSplitDirective>}\n\t */\n\t@ContentChildren(ItemSplitDirective)\n\titemsSplit!: QueryList<ItemSplitDirective>;\n\n\t/**\n\t * Muestra la plantilla asociada a una acción si se proporciona un manejador de eventos `onClick`.\n\t * - Emite el evento `onClick` de la acción si está definido.\n\t * - Detiene la propagación del evento si la propiedad `stopPropagation` de la acción está establecida.\n\t * - Activa la acción.\n\t * - Oculta el menú de selección de acciones si se cumplen ciertas condiciones.\n\t *\n\t * @param {ItemSplitDirective} item - La acción para la cual mostrar la plantilla.\n\t */\n\tshowTemplate(item: ItemSplitDirective): void {\n\t\t// Emite el evento onClick de la acción si está definido.\n\t\tif (item.onClick) {\n\t\t\titem.onClick.emit();\n\t\t}\n\n\t\t// Detiene la propagación del evento si la propiedad stopPropagation del item está establecida.\n\t\tif (item.stopPropagation) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Activa el item.\n\t\titem.active = true;\n\t}\n}\n","<button class=\"grButton grButton--icon grButton--select-popover\" (click)=\"op.toggle($event)\"><i class=\"icon icon-list-options\"></i></button>\n<p-popover #op>\n\t<div class=\"prPopoverV3 prPopoverV3--contentLeft\">\n\t\t<ul>\n\t\t\t<li [ngClass]=\"{ hidden: !item.active }\" *ngFor=\"let item of itemsSplit\" (click)=\"showTemplate(item)\">{{ item.name }}</li>\n\t\t</ul>\n\t</div>\n</p-popover>\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from \"@angular/core\";\nimport { PropertiesModel } from \"./model/properties.model\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { RadioButtonModule } from \"primeng/radiobutton\";\n\n@Component({\n\tselector: \"intelica-record-per-page\",\n\timports: [CommonModule, FormsModule, RadioButtonModule],\n\ttemplateUrl: \"./record-per-page.component.html\",\n})\nexport class RecordPerPageComponent implements OnInit, OnChanges {\n\t/**\n\t * Lista de propiedades del modelo `PropertiesModel`.\n\t * @type {PropertiesModel[]}\n\t * @default []\n\t */\n\t@Input() Properties: PropertiesModel[] = [];\n\n\t/**\n\t * Evento emitido al realizar un cambio de pagina, envia el pageSize a los componentes.\n\t * @type {EventEmitter<any>}\n\t */\n\t@Output() ReturnPage: EventEmitter<any> = new EventEmitter();\n\n\t/**\n\t * Términos utilizados en el componente.\n\t * @type {any}\n\t */\n\tTerms: any;\n\n\t/**\n\t * Lista de registros.\n\t * @type {number[]}\n\t * @default []\n\t */\n\tRecords: number[] = [];\n\n\t/**\n\t * Tamaño de página predeterminado.\n\t * @type {number}\n\t * @default 20\n\t * @private\n\t */\n\tPageSize: number = 20;\n\n\tconstructor() {}\n\n\tngOnChanges(changes: any): void {\n\t\tif (changes.Properties && changes.Properties.currentValue.length > 0) this.FillRecordperPage();\n\t}\n\n\tngOnDestroy(): void {}\n\n\tngOnInit(): void {\n\t\tthis.FillRecordperPage();\n\t}\n\n\tChangePageSize() {\n\t\tthis.ReturnPage.emit(this.PageSize);\n\t}\n\n\t/**\n\t * Rellena la lista de registros por página basándose en las propiedades del modelo.\n\t * - Utiliza el término de idioma global para la configuración.\n\t * - Filtra las propiedades para obtener la propiedad 'RP' (Registros por Página).\n\t * - Si la propiedad no existe, la función sale.\n\t * - Divide el valor de la propiedad 'RP' en una lista de números.\n\t * - Establece el tamaño de página predeterminado como el primer elemento de la lista.\n\t */\n\tFillRecordperPage(): any {\n\t\t// Utiliza el término de idioma global para la configuración.\n\t\t// this.terms = this.globals.languageTerms;\n\n\t\t// Filtra las propiedades para obtener la propiedad 'RP' (Registros por Página).\n\t\tvar rpProperty = this.Properties.filter(x => x.code === \"RP\");\n\n\t\t// Si la propiedad no existe, la función sale temprano.\n\t\tif (rpProperty.length === 0) return;\n\n\t\t// Divide el valor de la propiedad 'RP' en una lista de números.\n\t\tthis.Records = rpProperty[0].value.split(\",\").map(x => parseInt(x));\n\n\t\t// Establece el tamaño de página predeterminado como el primer elemento de la lista.\n\t\tthis.PageSize = this.Records[0];\n\t}\n}\n","<div style=\"width: 400px\">\n\t<div class=\"recordsPerPageCtr\">\n\t\t<ng-container *ngFor=\"let record of Records; let i = index\">\n\t\t\t<div class=\"form-check form-check-inline\">\n\t\t\t\t<p-radiobutton class=\"prRadioButton\" [inputId]=\"'radio-' + i\" name=\"optSortRP1\" [(ngModel)]=\"PageSize\" [value]=\"record\" [tabindex]=\"i\" />\n\t\t\t\t<label [for]=\"'radio-' + i\">{{ record }}</label>\n\t\t\t</div>\n\t\t</ng-container>\n\t</div>\n\t<div class=\"recordsPerPageBtnCtr\">\n\t\t<button class=\"grButton grButton--primary applyAnalytics\" (click)=\"ChangePageSize()\">\n\t\t\t<span>Apply</span>\n\t\t</button>\n\t</div>\n</div>\n","export class OrderConstants {\n\t//DESCRIPTION\n\tpublic static ORDER_BY_DESC = \"desc\";\n\tpublic static ORDER_BY_ASC = \"asc\";\n\t//VALUES\n\tpublic static ORDER_BY_DESC_VALUE = \"1\";\n\tpublic static ORDER_BY_ASC_VALUE = \"0\";\n}\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { RadioButtonModule } from \"primeng/radiobutton\";\nimport { ButtonModule } from \"primeng/button\";\nimport { Subscription } from \"rxjs\";\nimport { CascadeFilterModel } from \"./model/cascade-filter\";\nimport { OrderConstants } from \"./model/order.constants\";\n\n@Component({\n\tselector: \"intelica-sorting\",\n\timports: [CommonModule, FormsModule, RadioButtonModule, ButtonModule],\n\ttemplateUrl: \"./sorting.component.html\",\n})\nexport class SortingComponent implements OnInit, OnChanges {\n\t/**\n\t * Suscripción a un observable.\n\t * @type {Subscription}\n\t */\n\tsubscription: Subscription = new Subscription();\n\n\t/**\n\t * Términos utilizados en el componente.\n\t * @type {any}\n\t */\n\tterms: any;\n\n\t/**\n\t * Lista de modelos de filtro en cascada.\n\t * @type {CascadeFilterModel[]}\n\t * @default []\n\t */\n\tLCascadefilter: CascadeFilterModel[] = [];\n\n\t/**\n\t * Número máximo de ordenamiento.\n\t * @type {number}\n\t * @default 4\n\t */\n\tNumMaxSorting = 4;\n\n\t/**\n\t * Lista de objetos de ordenamiento.\n\t * @type {any}\n\t * @default []\n\t */\n\t@Input() Sorters: any = [];\n\n\t/**\n\t * Objeto que indica el ordenamiento actual.\n\t * @type {any}\n\t */\n\t@Input() OrderBy: any;\n\n\t/**\n\t * Objeto que indica el ordenamiento predeterminado.\n\t * @type {any}\n\t * @default {}\n\t */\n\t@Input() OrderByDefault: any = {};\n\n\t/**\n\t * Indica si se debe realizar un solo renderizado.\n\t * @type {boolean}\n\t * @default false\n\t */\n\t@Input() OneRender: boolean = false;\n\n\t/**\n\t * Evento emitido al realizar un retorno de datos.\n\t * @type {EventEmitter<any>}\n\t */\n\t@Output() ReturnSorting: EventEmitter<any> = new EventEmitter();\n\n\t/**\n\t * Evento emitido al alertar sobre una ordenación.\n\t * @type {EventEmitter<any>}\n\t */\n\t@Output() AlertOrder: EventEmitter<any> = new EventEmitter();\n\n\t/**\n\t * Objeto que contiene constantes de ordenación.\n\t * @type {OrderConstants}\n\t */\n\tOrder = OrderConstants;\n\n\tconstructor() {}\n\n\tngOnDestroy(): void {\n\t\tthis.subscription.unsubscribe();\n\t}\n\n\tngOnInit(): void {\n\t\t// this.subscription = this.sharedService.isLoadingPageInfo.subscribe({\n\t\t// \tnext: isLoadingPageInfo => {\n\t\t// \t\tif (!isLoadingPageInfo) this.terms = this.globals.languageTerms;\n\t\t// \t},\n\t\t// });\n\t}\n\n\tngOnChanges(changes: any): void {\n\t\tif (changes.OrderBy && this.Sorters.length > 0) this.GetInfoSorting();\n\t\tif (changes.Sorters && this.Sorters.length > 0) this.GetInfoSorting();\n\t\t// this.terms = this.globals.languageTerms;\n\t}\n\n\t/**\n\t * Obtiene información sobre la ordenación y la asigna a la lista de modelos de filtro en cascada.\n\t * - Si no hay información de ordenación (`orderBy`), la función sale.\n\t * - Crea una lista de modelos de filtro en cascada con una longitud determinada.\n\t * - Filtra las propiedades de ordenación que coinciden con los campos existentes.\n\t * - Asigna las propiedades de ordenación a los modelos de filtro en cascada.\n\t */\n\tGetInfoSorting(): void {\n\t\t// Si no hay información de ordenación (orderBy), la función sale temprano.\n\t\tif (!this.OrderBy) return;\n\n\t\t// Crea una lista de modelos de filtro en cascada con una longitud determinada.\n\t\tthis.LCascadefilter = this.PushCascade(this.Sorters.length);\n\n\t\t// Filtra las propiedades de ordenación que coinciden con los campos existentes.\n\t\tthis.OrderBy = Object.fromEntries(Object.entries(this.OrderBy).filter(([key]) => this.Sorters.find((y: any) => y.field === key)));\n\n\t\t// Obtiene las columnas y el orden de la ordenación.\n\t\tconst columns = Object.keys(this.OrderBy).map(x => x);\n\t\tconst order = columns.map(x => this.OrderBy[x]);\n\n\t\t// Asigna las propiedades de ordenación a los modelos de filtro en cascada.\n\t\tcolumns.forEach((f: any, i) => {\n\t\t\tthis.LCascadefilter[i].id = f;\n\t\t\tthis.LCascadefilter[i].order = order[i];\n\t\t});\n\t}\n\n\t/**\n\t * Función que genera una lista de modelos de filtro en cascada con una cantidad determinada.\n\t *\n\t * @param {number} cant - Cantidad de modelos de filtro en cascada a generar.\n\t * @returns {Array} - Lista de modelos de filtro en cascada.\n\t */\n\tPushCascade(cant: number): Array<any> {\n\t\tlet Lcascadefilter = [];\n\t\tfor (let i = 0; i < cant; i++) {\n\t\t\tLcascadefilter.push({ id: \"0\", index: i, order: OrderConstants.ORDER_BY_ASC });\n\t\t}\n\t\treturn Lcascadefilter;\n\t}\n\n\t/**\n\t * Verifica y procesa la ordenación en cascada.\n\t * - Si algún modelo de filtro en cascada tiene un ID diferente de '0', se realiza la ordenación.\n\t * - De lo contrario, se emite una alerta indicando que no hay columna seleccionada para ordenar.\n\t */\n\tCheckCascadeOrder(): void {\n\t\tthis.OrderBy = {};\n\t\tif (this.LCascadefilter.some(s => s.id !== \"0\")) {\n\t\t\tthis.CascadeOrder();\n\t\t} else {\n\t\t\treturn this.AlertOrder.emit({ ValidMessage: \"Select at least one column to sort\" }); //this.sharedService.getTermTextByCode(\"MSG_NO_COLUMN_ORDER\") });\n\t\t}\n\t}\n\n\t/**\n\t * Procesa la ordenación en cascada y emite el resultado.\n\t */\n\tCascadeOrder(): void {\n\t\tthis.LCascadefilter.forEach(element => {\n\t\t\tif (element.id !== \"0\") {\n\t\t\t\tthis.OrderBy[element.id] = element.order;\n\t\t\t}\n\t\t});\n\t\tthis.ReturnSorting.emit(this.OrderBy);\n\t}\n\n\t/**\n\t * Restaura la ordenación en cascada a la configuración predeterminada y obtiene la información de ordenación.\n\t */\n\tClearCascadeOrder(): void {\n\t\tthis.OrderBy = { ...this.OrderByDefault };\n\t\tthis.GetInfoSorting();\n\t}\n\n\t/**\n\t * Verifica si un modelo de filtro en cascada está deshabilitado basándose en su ID.\n\t *\n\t * @param {string} id - ID del modelo de filtro en cascada.\n\t * @param {number} index - Índice del modelo de filtro en cascada.\n\t * @returns {boolean} - Indica si el modelo de filtro en cascada está deshabilitado.\n\t */\n\tCheckCascadeDisabled(id: string, index: number): boolean {\n\t\treturn this.LCascadefilter.some(e => e.id == id);\n\t}\n}\n","<ng-container>\n\t<div class=\"sortingAnalytics\">\n\t\t<div class=\"sortingCtr\">\n\t\t\t<div></div>\n\t\t\t<div class=\"triangle-top\"></div>\n\t\t\t<div class=\"triangle-down\"></div>\n\t\t\t<ng-container *ngIf=\"OneRender; else multiple_render\">\n\t\t\t\t<ng-container *ngTemplateOutlet=\"one_render; context: { Sorters: Sorters }\"></ng-container>\n\t\t\t</ng-container>\n\t\t</div>\n\n\t\t<div class=\"sortingBtnCtr\">\n\t\t\t<!-- <span>{{'BTN_APPLY_SORT' | term : terms}}</span> -->\n\t\t\t<p-button pRipple class=\"prButton applyAnalytics\" label=\"{{ 'Apply sort' }}\" (onClick)=\"CheckCascadeOrder()\" />\n\t\t\t<!-- <span>{{'BTN_CLEAR_SORT' | term : terms}}</span> -->\n\t\t\t<p-button pRipple class=\"prButton cleanAnalytics\" label=\"{{ 'Clear sort' }}\" severity=\"secondary\" (onClick)=\"ClearCascadeOrder()\" />\n\t\t</div>\n\t</div>\n</ng-container>\n\n<ng-template #one_render let-Sorters=\"Sorters\">\n\t<ng-container *ngFor=\"let row of Sorters; let i = index\">\n\t\t<ng-container *ngIf=\"LCascadefilter.length > 0 && i <= NumMaxSorting\">\n\t\t\t<ng-container *ngIf=\"OneRender && i == 0\">\n\t\t\t\t<div class=\"idx-select\" *ngIf=\"i < LCascadefilter.length\">\n\t\t\t\t\t<div class=\"formRowInputNumber\">\n\t\t\t\t\t\t<span>{{ i + 1 }}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<select class=\"grSelect\" [(ngModel)]=\"LCascadefilter[i].id\">\n\t\t\t\t\t\t<option *ngIf=\"i === 0\" [value]=\"0\">\n\t\t\t\t\t\t\t--\n\t\t\t\t\t\t\t<!-- <span>{{ \"LBL_SORT_BY\" | term : terms }}</span> -->\n\t\t\t\t\t\t\t<span>Sort By</span>\n\t\t\t\t\t\t\t--\n\t\t\t\t\t\t</option>\n\t\t\t\t\t\t<option *ngFor=\"let sort of Sorters\" [ngValue]=\"sort.field\" [disabled]=\"CheckCascadeDisabled(sort.field, i)\">\n\t\t\t\t\t\t\t{{ sort.headerText }}\n\t\t\t\t\t\t</option>\n\t\t\t\t\t</select>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"form-check\" *ngIf=\"i < LCascadefilter.length\">\n\t\t\t\t\t<p-radiobutton class=\"prRadioButton\" name=\"optSort{{ i }}\" [value]=\"Order.ORDER_BY_ASC\" [inputId]=\"'test{{ i + i + 1 }}'\" [(ngModel)]=\"LCascadefilter[i].order\" tabindex=\"0\" />\n\t\t\t\t\t<label for=\"test{{ i + i + 1 }}\"></label>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"form-check\" *ngIf=\"i < LCascadefilter.length\">\n\t\t\t\t\t<p-radiobutton class=\"prRadioButton\" name=\"optSort{{ i }}\" [value]=\"Order.ORDER_BY_DESC\" [inputId]=\"'test{{ i + i + 2 }}'\" [(ngModel)]=\"LCascadefilter[i].order\" tabindex=\"0\" />\n\t\t\t\t\t<label for=\"test{{ i + i + 2 }}\"></label>\n\t\t\t\t</div>\n\t\t\t</ng-container>\n\t\t</ng-container>\n\t</ng-container>\n</ng-template>\n\n<ng-template #multiple_render>\n\t<ng-container *ngFor=\"let row of Sorters; let i = index\">\n\t\t<ng-container *ngIf=\"LCascadefilter.length > 0 && i <= NumMaxSorting\">\n\t\t\t<div class=\"idx-select\" *ngIf=\"i < LCascadefilter.length\">\n\t\t\t\t<div class=\"formRowInputNumber\">\n\t\t\t\t\t<span>{{ i + 1 }}</span>\n\t\t\t\t</div>\n\t\t\t\t<select class=\"grSelect\" [(ngModel)]=\"LCascadefilter[i].id\">\n\t\t\t\t\t<option *ngIf=\"i === 0\" [value]=\"0\">\n\t\t\t\t\t\t--\n\t\t\t\t\t\t<!-- <span>{{ \"LBL_SORT_BY\" | term : terms }}</span> -->\n\t\t\t\t\t\t<span>Sort By</span>\n\t\t\t\t\t\t--\n\t\t\t\t\t</option>\n\t\t\t\t\t<option *ngIf=\"i > 0\" [value]=\"0\">\n\t\t\t\t\t\t--\n\t\t\t\t\t\t<!-- <span>{{ \"LBL_SORT_THEN\" | term : terms }}</span> -->\n\t\t\t\t\t\t<span>Then by</span>\n\t\t\t\t\t\t--\n\t\t\t\t\t</option>\n\t\t\t\t\t<option *ngFor=\"let sort of Sorters\" [ngValue]=\"sort.field\" [disabled]=\"CheckCascadeDisabled(sort.field, i)\">\n\t\t\t\t\t\t{{ sort.headerText }}\n\t\t\t\t\t</option>\n\t\t\t\t</select>\n\t\t\t</div>\n\n\t\t\t<div class=\"form-check\" *ngIf=\"i < LCascadefilter.length\">\n\t\t\t\t<p-radiobutton class=\"prRadioButton\" name=\"optSort{{ i }}\" [value]=\"Order.ORDER_BY_ASC\" [inputId]=\"'test{{ i + i + 1 }}'\" [(ngModel)]=\"LCascadefilter[i].order\" tabindex=\"0\" />\n\t\t\t\t<label for=\"test{{ i + i + 1 }}\"></label>\n\t\t\t</div>\n\n\t\t\t<div class=\"form-check\" *ngIf=\"i < LCascadefilter.length\">\n\t\t\t\t<p-radiobutton class=\"prRadioButton\" name=\"optSort{{ i }}\" [value]=\"Order.ORDER_BY_DESC\" [inputId]=\"'test{{ i + i + 2 }}'\" [(ngModel)]=\"LCascadefilter[i].order\" tabindex=\"0\" />\n\t\t\t\t<label for=\"test{{ i + i + 2 }}\"></label>\n\t\t\t</div>\n\t\t</ng-container>\n\t</ng-container>\n</ng-template>\n","import { Component, Input } from \"@angular/core\";\nimport { PopoverInformationModel } from \"./model/popover-information.model\";\nimport { CommonModule } from \"@angular/common\";\n\n@Component({\n\tselector: \"intelica-popover\",\n\timports: [CommonModule],\n\ttemplateUrl: \"./popover.component.html\",\n})\nexport class PopoverComponent {\n\t/**\n\t * Información de asignación utilizada para la inicialización del popover.\n\t * @type {PopoverModel}\n\t * @default {}\n\t */\n\t@Input() information: PopoverInformationModel[] = [];\n}\n","<div class=\"tooltipTable tooltipTable--limitHeight\">\n\t<div class=\"tooltipTable__row\" *ngFor=\"let item of information\">\n\t\t<div class=\"tooltipTable__left\">\n\t\t\t<span>{{ item.title }}</span>\n\t\t</div>\n\t\t<div class=\"tooltipTable__right tooltipTable__right--gray\">{{ item.description }}</div>\n\t</div>\n</div>\n","import { CommonModule, isPlatformBrowser } from \"@angular/common\";\nimport { AfterViewInit, Component, ElementRef, EventEmitter, Inject, Input, Output, PLATFORM_ID } from \"@angular/core\";\nimport * as echarts from \"echarts\";\nimport { EChartsOption } from \"echarts\";\n\n@Component({\n\tselector: \"intelica-echart\",\n\timports: [CommonModule],\n\ttemplateUrl: \"./echart.component.html\",\n})\nexport class EchartComponent implements AfterViewInit {\n\t@Input() config!: EChartsOption | undefined;\n\t@Input() id!: string;\n\t@Input() renderer: \"canvas\" | \"svg\" = \"canvas\";\n\t@Input() containerStyle: { [klass: string]: any } = {\n\t\twidth: \"100%\",\n\t\theight: \"400px\",\n\t};\n\t@Output() event = new EventEmitter<any>();\n\n\tchart!: echarts.ECharts;\n\n\tconstructor(\n\t\tprivate el: ElementRef,\n\t\t@Inject(PLATFORM_ID) private platformId: Object\n\t) {}\n\n\tngAfterViewInit(): void {\n\t\tconst chartElement = this.el.nativeElement.querySelector(`#${this.id}_plot`);\n\t\tif (!this.config) {\n\t\t\tthrow new Error(\"Chart configuration is not set\");\n\t\t}\n\t\tif (!isPlatformBrowser(this.platformId)) {\n\t\t\tthrow new Error(\"Platform is not browser\");\n\t\t}\n\n\t\tif (!chartElement) {\n\t\t\tthrow new Error(\"Plot area not found\");\n\t\t}\n\n\t\tthis.initChart(chartElement);\n\t}\n\n\trefreshChart() {\n\t\tthis.chart.setOption(this.config!);\n\t}\n\n\tresize() {\n\t\tif (this.chart) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.chart.resize();\n\t\t\t}, 1);\n\t\t}\n\t}\n\n\tprivate initChart(chartElement: any) {\n\t\tconst observer = new ResizeObserver(() => this.resize());\n\t\tthis.chart = echarts.init(chartElement, null, { renderer: this.renderer });\n\t\tthis.chart.setOption(this.config!);\n\t\tthis.chart.on(\"click\", params => {\n\t\t\tthis.event.emit(params);\n\t\t});\n\t\tobserver.observe(chartElement);\n\t}\n}\n","<div [id]=\"id + '_plot'\" class=\"chart\" [ngStyle]=\"containerStyle\"></div>\n","import { Component, ViewChild, ElementRef, ContentChild, TemplateRef, HostListener, ContentChildren, QueryList, OnInit, inject, Input, Output, EventEmitter } from \"@angular/core\";\nimport { ButtonModule } from \"primeng/button\";\nimport { InputGroupAddonModule } from \"primeng/inputgroupaddon\";\nimport { CommonModule } from \"@angular/common\";\nimport { RippleModule } from \"primeng/ripple\";\nimport { TermPipe } from \"../../pipes/term.pipes\";\nimport { GlobalTermService } from \"../../services/globalTerm.service\";\n\n@Component({\n\tselector: \"intelica-template-menu\",\n\timports: [ButtonModule, InputGroupAddonModule, CommonModule, RippleModule, TermPipe],\n\ttemplateUrl: \"./template-menu.component.html\",\n})\nexport class TemplateMenuComponent {\n\treadonly GlobalTermService = inject(GlobalTermService);\n\t@ViewChild(\"popover\") Popover!: ElementRef;\n\t@ViewChild(\"menuButton\") MenuButton!: ElementRef;\n\t@ViewChild(\"popoverContainer\") PopoverContainer!: ElementRef;\n\n\t@Output(\"onOpen\") openPanelEvent: EventEmitter<any> = new EventEmitter<any>();\n\t@Output(\"onClose\") closePanelEvent: EventEmitter<any> = new EventEmitter<any>();\n\n\tIsPopoverOpen: boolean = false;\n\tIsClickInsideDatepicker: boolean = false;\n\n\tconstructor() {}\n\n\topenPanel() {\n\t\tthis.IsPopoverOpen = true;\n\t\tthis.Popover.nativeElement.style.display = \"block\";\n\t\tthis.MenuButton.nativeElement.classList.add(\"active\");\n\t\tthis.PopoverContainer.nativeElement.classList.add(\"backdrop-visible\");\n\t\tthis.openPanelEvent.emit({\n\t\t\topen: this.IsPopoverOpen,\n\t\t\telement: this.Popover.nativeElement,\n\t\t});\n\t}\n\n\tclosePanel() {\n\t\tthis.IsPopoverOpen = false;\n\t\tthis.Popover.nativeElement.style.display = \"none\";\n\t\tthis.MenuButton.nativeElement.classList.remove(\"active\");\n\t\tthis.PopoverContainer.nativeElement.classList.remove(\"backdrop-visible\");\n\t\tthis.closePanelEvent.emit({\n\t\t\topen: this.IsPopoverOpen,\n\t\t\telement: this.Popover.nativeElement,\n\t\t});\n\t}\n\n\ttogglePanel(event?: Event) {\n\t\tthis.IsPopoverOpen ? this.closePanel() : this.openPanel();\n\t}\n\n\t@HostListener(\"mousedown\", [\"$event\"])\n\tonMouseDown(event: Event) {\n\t\tconst target = event.target as HTMLElement;\n\t\tif (target.closest(\".p-datepicker\") || target.closest(\".p-inputtext\") || target.closest(\".p-select-panel\") || target.closest(\".p-multiselect-panel\")) {\n\t\t\tthis.IsClickInsideDatepicker = true;\n\t\t}\n\t}\n\n\t@HostListener(\"window:mousedown\", [\"$event\"])\n\tonMouseDownOutsideBody(event: Event) {\n\t\tconst target = event.target as HTMLElement;\n\t\tif (target.closest(\".p-datepicker\") || target.closest(\".p-inputtext\") || target.closest(\".p-select-panel\") || target.closest(\".p-multiselect-panel\") || target.closest(\".swal2-container\")) {\n\t\t\tthis.IsClickInsideDatepicker = true;\n\t\t}\n\t}\n\n\t@HostListener(\"mouseup\", [\"$event\"])\n\tonMouseUp(event: Event) {\n\t\tsetTimeout(() => {\n\t\t\tthis.IsClickInsideDatepicker = false;\n\t\t}, 100);\n\t}\n\n\t@HostListener(\"document:click\", [\"$event\"])\n\tcloseAll(event?: Event) {\n\t\tif (!event) return;\n\t\tconst target = event.target as HTMLElement;\n\t\t// const forceCloseClasses = [\"closePopoverNow\", \"closeTemplateMenu\"];\n\t\t// if (forceCloseClasses.some(className => target.closest(`.${className}`))) {\n\t\t// \tthis.closePanel();\n\t\t// \treturn;\n\t\t// }\n\t\tif (this.IsPopoverOpen && this.PopoverContainer && target === this.PopoverContainer.nativeElement) {\n\t\t\tthis.closePanel();\n\t\t\treturn;\n\t\t}\n\t\tconst allowedClasses = [\n\t\t\t\"prSelect\",\n\t\t\t\"p-select-option-selected\",\n\t\t\t\"p-select-option\",\n\t\t\t\"p-datepicker-panel\",\n\t\t\t\"p-datepicker-select-month\",\n\t\t\t\"p-button-text\",\n\t\t\t\"p-datepicker-select-year\",\n\t\t\t\"p-datepicker-month\",\n\t\t\t\"p-datepicker-year\",\n\t\t\t\"p-checkbox-input\",\n\t\t\t\"p-multiselect-option\",\n\t\t\t\"p-multiselect-filter\",\n\t\t\t\"p-multiselect-empty-message\",\n\t\t\t\"p-inputicon\",\n\t\t\t\"p-tree-node-selected\",\n\t\t\t\"p-tree-node-content\",\n\t\t\t\"p-multiselect-header\",\n\t\t\t\"grButton--icon-close-modal\",\n\t\t\t\"p-overlay-mask\",\n\t\t\t\"p-select-clear-icon\",\n\t\t\t\"formRowInputClear\",\n\t\t\t\"icon-times\",\n\t\t\t\"p-select-empty-message\",\n\t\t\t\"p-select-list\",\n\t\t\t\"p-iconfield\",\n\t\t\t\"p-inputtext\",\n\t\t\t\"p-select-header\",\n\t\t\t\"p-overlay\",\n\t\t\t\"p-select-filter\",\n\t\t\t\"p-overlay-content\",\n\t\t\t\"p-select-overlay\",\n\t\t\t\"p-select-panel\",\n\t\t\t\"p-multiselect-panel\",\n\t\t];\n\t\tif (this.IsClickInsideDatepicker) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (allowedClasses.some(className => target.closest(`.${className}`))) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.Popover && !this.Popover.nativeElement.contains(target) && this.MenuButton && !this.MenuButton.nativeElement.contains(target)) {\n\t\t\tthis.closePanel();\n\t\t}\n\t}\n}\n","<div #popoverContainer class=\"grPopoverContainer\">\n\t<button #menuButton class=\"grMenuTemplate\" (click)=\"togglePanel($event)\">\n\t\t<span class=\"grMenuTemplate__ico\"><i class=\"icon icon-filter-option\"></i></span>\n\t\t<span class=\"grMenuTemplate__txt\">{{ \"Filters\" | term : GlobalTermService.languageCode }}</span>\n\t</button>\n\t<div class=\"grPopover\" #popover>\n\t\t<div class=\"grPopoverMenu\" [ngClass]=\"{ hidden: !IsPopoverOpen }\">\n\t\t\t<div class=\"grPopoverHeader\">\n\t\t\t\t<h3>\n\t\t\t\t\t<span>{{ \"Filters\" | term : GlobalTermService.languageCode }}</span>\n\t\t\t\t</h3>\n\t\t\t</div>\n\t\t\t<div class=\"grPopoverBody grPopoverBody--template\">\n\t\t\t\t<ng-content></ng-content>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n","/**\n * Constants for DatePicker custom button types\n * Use these constants instead of string literals to maintain consistency\n * and facilitate future changes\n */\n\nexport const DATEPICKER_BUTTON_TYPES = {\n\tTODAY: 'TODAY',\n\tLAST_12_MONTHS: 'LAST_12_MONTHS',\n\tCURRENT_YEAR: 'CURRENT_YEAR',\n\tCURRENT_MONTH: 'CURRENT_MONTH',\n} as const;\n\n/**\n * Type derived from the constants object\n * This ensures type safety while using the constants\n */\nexport type CustomButtonType =\n\t(typeof DATEPICKER_BUTTON_TYPES)[keyof typeof DATEPICKER_BUTTON_TYPES];\n","import { AfterViewChecked, ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, Output, ViewChild } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { DatePicker } from \"primeng/datepicker\";\nimport { SelectModule } from \"primeng/select\";\nimport { ButtonModule } from \"primeng/button\";\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from \"@angular/forms\";\nimport { CustomButtonType, DATEPICKER_BUTTON_TYPES } from \"./datepicker-button-types.constants\";\n\n@Component({\n\tselector: \"intelica-datepicker\",\n\timports: [CommonModule, FormsModule, DatePicker, SelectModule, ButtonModule],\n\ttemplateUrl: \"./datepicker.component.html\",\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => DatepickerComponent),\n\t\t\tmulti: true,\n\t\t},\n\t],\n})\nexport class DatepickerComponent implements ControlValueAccessor, AfterViewChecked {\n\t// Expose constants to template\n\treadonly DATEPICKER_BUTTON_TYPES = DATEPICKER_BUTTON_TYPES;\n\n\t/**\n\t * @description Readonly input\n\t * @default\tfalse\n\t * @type {boolean}\n\t */\n\t@Input() readonlyInput: boolean = false;\n\n\t/**\n\t * @description Show icon\n\t * @default\tfalse\n\t * @type {boolean}\n\t */\n\t@Input() showIcon: boolean = false;\n\n\t/**\n\t * @description Number of months to display\n\t * @default\t2\n\t * @type {number}\n\t */\n\t@Input() numberOfMonths: number = 2;\n\n\t/**\n\t * @description Panel style class\n\t * @default\t\"prDatapicker prDatapicker--dropdown\"\n\t * @type {string}\n\t */\n\t@Input() panelStyleClass: string = \"prDatapicker prDatapicker--dropdown\";\n\n\t/**\n\t * @description Manual apply mode - requires Apply button click to confirm selection\n\t * @default\tfalse\n\t * @type {boolean}\n\t */\n\t@Input() manualApply: boolean = false;\n\n\t/**\n\t * @description Custom buttons to show in footer\n\t * @default\t[]\n\t * @type {CustomButtonType[]}\n\t */\n\t@Input() customButtons: CustomButtonType[] = [];\n\n\t/**\n\t * @description Date format for display in input\n\t * @default\t\"dd M, yy\" (e.g., \"08 Jan, 2026\")\n\t * @type {string}\n\t */\n\t@Input() dateFormat?: string;\n\n\t/**\n\t * @description View mode for the datepicker\n\t * @default\t\"date\"\n\t * @type {\"date\" | \"month\" | \"year\"}\n\t */\n\t@Input() view: \"date\" | \"month\" | \"year\" = \"date\";\n\n\t/**\n\t * @description Selection mode for the datepicker\n\t * @default\t\"range\"\n\t * @type {\"single\" | \"range\"}\n\t */\n\t@Input() selectionMode: \"single\" | \"range\" = \"range\";\n\n\t/**\n\t * @description Change event\n\t * @emits {(Date | null)[] | null}\n\t * @type {EventEmitter<(Date | null)[] | null>}\n\t */\n\t@Output(\"onChange\") onChangeEvent: EventEmitter<(Date | null)[] | null> =\n\t\tnew EventEmitter();\n\n\trangeDates: (Date | null)[] | null = null;\n\n\t// Temporary selection for manual apply mode\n\ttempSelection: (Date | null)[] | null = null;\n\n\tviewMonth!: number;\n\tviewYear!: number;\n\n\tcurrentYear = new Date().getFullYear();\n\tcurrentMonth = new Date().getMonth();\n\n\tdefaultDate!: Date;\n\n\tprivate navigatingWithArrows = false;\n\n\t// ViewChild to access datepicker instance\n\t@ViewChild('datepicker') datepickerRef: any;\n\n\t// Flag to control when closing is allowed\n\tprivate allowClose: boolean = true;\n\n\t// Flag to prevent auto-close immediately after date selection\n\tprivate preventAutoClose: boolean = false;\n\n\t// Track active button\n\tactiveButton: CustomButtonType | null = null;\n\n\tmonths = [\n\t\t{ label: \"Enero\", value: 0 },\n\t\t{ label: \"Febrero\", value: 1 },\n\t\t{ label: \"Marzo\", value: 2 },\n\t\t{ label: \"Abril\", value: 3 },\n\t\t{ label: \"Mayo\", value: 4 },\n\t\t{ label: \"Junio\", value: 5 },\n\t\t{ label: \"Julio\", value: 6 },\n\t\t{ label: \"Agosto\", value: 7 },\n\t\t{ label: \"Septiembre\", value: 8 },\n\t\t{ label: \"Octubre\", value: 9 },\n\t\t{ label: \"Noviembre\", value: 10 },\n\t\t{ label: \"Diciembre\", value: 11 },\n\t];\n\n\tyears: number[] = [];\n\n\tonChangeFn: any = () => {};\n\tonTouchedFn: any = () => {};\n\n\tconstructor(private cdr: ChangeDetectorRef) {\n\t\tconst today = new Date();\n\n\t\tthis.viewMonth = today.getMonth();\n\t\tthis.viewYear = today.getFullYear();\n\n\t\tthis.defaultDate = new Date(this.viewYear, this.viewMonth, 1);\n\n\t\tconst YEARS_BACK = 10;\n\n\t\tthis.years = [];\n\t\tfor (let y = this.viewYear - YEARS_BACK; y <= this.viewYear; y++) {\n\t\t\tthis.years.push(y);\n\t\t}\n\t}\n\n\tget filteredMonths() {\n\t\tif (this.navigatingWithArrows) {\n\t\t\treturn this.months;\n\t\t}\n\n\t\tif (this.viewYear === this.currentYear) {\n\t\t\treturn this.months.filter(m => m.value >= this.currentMonth);\n\t\t}\n\n\t\treturn this.months;\n\t}\n\n\tgetDateFormat(): string {\n\t\tif (this.dateFormat) {\n\t\t\treturn this.dateFormat;\n\t\t}\n\n\t\tswitch (this.view) {\n\t\t\tcase 'month':\n\t\t\t\treturn 'M, yy';\n\t\t\tcase 'year':\n\t\t\t\treturn 'yy';\n\t\t\tdefault:\n\t\t\t\treturn 'dd M, yy';\n\t\t}\n\t}\n\n\tprivate normalizeMonthYear(month: number, year: number) {\n\t\tif (month > 11) {\n\t\t\treturn { month: 0, year: year + 1 };\n\t\t}\n\n\t\tif (month < 0) {\n\t\t\treturn { month: 11, year: year - 1 };\n\t\t}\n\n\t\treturn { month, year };\n\t}\n\n\tonMonthChange(event: any) {\n\t\tthis.navigatingWithArrows = true;\n\t\tconst normalized = this.normalizeMonthYear(event.month, event.year);\n\t\tthis.viewMonth = normalized.month;\n\t\tthis.viewYear = normalized.year;\n\t}\n\n\tonYearChange(event: any) {\n\t\tthis.navigatingWithArrows = true;\n\t\tconst normalized = this.normalizeMonthYear(event.month, event.year);\n\t\tthis.viewMonth = normalized.month;\n\t\tthis.viewYear = normalized.year;\n\t}\n\n\tonViewChange() {\n\t\tthis.navigatingWithArrows = false;\n\t\tif (this.viewYear === this.currentYear && this.viewMonth < this.currentMonth) {\n\t\t\tthis.viewMonth = this.currentMonth;\n\t\t}\n\t\tthis.defaultDate = new Date(this.viewYear, this.viewMonth, 1);\n\t}\n\n\t// Internal model for the datepicker (handles manual apply mode)\n\tget internalModel(): (Date | null)[] | null {\n\t\t// In manual apply mode, show temp selection for the calendar\n\t\t// In normal mode, show the actual value\n\t\treturn this.manualApply ? this.tempSelection : this.rangeDates;\n\t}\n\n\t// Handle model changes from datepicker\n\tonModelChange(val: (Date | null)[] | null): void {\n\t\t// Reset active button when user manually selects dates\n\t\tthis.activeButton = null;\n\n\t\tif (this.manualApply) {\n\t\t\t// In manual apply mode, only store in temp selection\n\t\t\tthis.tempSelection = val;\n\n\t\t\t// Prevent auto-close immediately after date selection\n\t\t\tthis.preventAutoClose = true;\n\n\t\t\t// After a brief moment, allow closing by clicking outside\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.preventAutoClose = false;\n\t\t\t}, 200);\n\t\t} else {\n\t\t\t// In normal mode, update the actual value immediately\n\t\t\tthis.rangeDates = val;\n\t\t\tthis.onChangeEvent.emit(this.rangeDates);\n\t\t\tthis.onChangeFn(this.rangeDates);\n\t\t\tthis.onTouchedFn();\n\t\t}\n\t}\n\n\twriteValue(value: (Date | null)[] | null): void {\n\t\tthis.rangeDates = value;\n\t\tif (this.manualApply) {\n\t\t\tthis.tempSelection = value;\n\t\t}\n\t}\n\n\tregisterOnChange(fn: any): void {\n\t\tthis.onChangeFn = fn;\n\t}\n\n\tregisterOnTouched(fn: any): void {\n\t\tthis.onTouchedFn = fn;\n\t}\n\n\tsetDisabledState?(isDisabled: boolean): void {\n\t\t/* opcional: implementar si necesitas deshabilitar el componente desde ngModel */\n\t}\n\n\tonDateChange() {\n\t\tthis.onChangeEvent.emit(this.rangeDates);\n\t\tthis.onChangeFn(this.rangeDates);\n\t\tthis.onTouchedFn();\n\t}\n\n\t// Event handlers for open/close\n\thandleOpen(): void {\n\t\tif (this.manualApply) {\n\t\t\t// Initialize temp selection with current value\n\t\t\tthis.tempSelection = this.rangeDates;\n\t\t\t// Reset flags\n\t\t\tthis.allowClose = false;\n\t\t\tthis.preventAutoClose = false;\n\n\t\t\t// Ensure hideOverlay is overridden every time the overlay opens\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.setupHideOverlayOverride();\n\t\t\t}, 0);\n\t\t}\n\t}\n\n\thandleClose(): void {\n\t\tif (this.manualApply) {\n\t\t\t// Reset temp selection to current value (discards changes if not applied)\n\t\t\tthis.tempSelection = this.rangeDates;\n\t\t\t// Reset flags\n\t\t\tthis.allowClose = false;\n\t\t\tthis.preventAutoClose = false;\n\n\t\t\t// Force the datepicker to refresh its internal model to show the original value\n\t\t\t// Use setTimeout to ensure the change happens after the close animation\n\t\t\tsetTimeout(() => {\n\t\t\t\tif (this.datepickerRef) {\n\t\t\t\t\t// Update the datepicker's internal value\n\t\t\t\t\tthis.datepickerRef.value = this.rangeDates;\n\t\t\t\t\t// Trigger change detection\n\t\t\t\t\tthis.cdr.detectChanges();\n\t\t\t\t}\n\t\t\t}, 0);\n\t\t}\n\t}\n\n\t// Apply button callback\n\tapplyCallback(event: any): void {\n\t\t// Apply the temporary selection to the actual value\n\t\tthis.rangeDates = this.tempSelection;\n\t\tthis.onChangeEvent.emit(this.rangeDates);\n\t\tthis.onChangeFn(this.rangeDates);\n\t\tthis.onTouchedFn();\n\n\t\t// Allow closing\n\t\tthis.allowClose = true;\n\t\tthis.preventAutoClose = false;\n\n\t\t// Close the datepicker overlay\n\t\tif (this.datepickerRef) {\n\t\t\tthis.datepickerRef.overlayVisible = false;\n\t\t}\n\t}\n\n\t// Clear button callback\n\tclearCallback(event: any): void {\n\t\t// Reset active button\n\t\tthis.activeButton = null;\n\n\t\tif (this.manualApply) {\n\t\t\t// In manual apply mode, clear both temp selection and actual value\n\t\t\tthis.tempSelection = null;\n\t\t\tthis.rangeDates = null;\n\t\t\tthis.onChangeEvent.emit(this.rangeDates);\n\t\t\tthis.onChangeFn(this.rangeDates);\n\t\t\tthis.onTouchedFn();\n\t\t\t// Allow closing\n\t\t\tthis.allowClose = true;\n\t\t\tthis.preventAutoClose = false;\n\t\t} else {\n\t\t\tthis.rangeDates = null;\n\t\t\tthis.onChangeEvent.emit(this.rangeDates);\n\t\t\tthis.onChangeFn(this.rangeDates);\n\t\t\tthis.onTouchedFn();\n\t\t}\n\n\t\t// Close the datepicker overlay\n\t\tif (this.datepickerRef) {\n\t\t\tthis.datepickerRef.overlayVisible = false;\n\t\t}\n\t}\n\n\t// Custom button callbacks\n\ttodayCallback(event: any): void {\n\t\tconst today = new Date();\n\t\tconst dateRange: (Date | null)[] = [today, today];\n\n\t\tthis.activeButton = DATEPICKER_BUTTON_TYPES.TODAY;\n\n\t\tif (this.manualApply) {\n\t\t\tthis.tempSelection = dateRange;\n\t\t} else {\n\t\t\tthis.rangeDates = dateRange;\n\t\t\tthis.onChangeEvent.emit(this.rangeDates);\n\t\t\tthis.onChangeFn(this.rangeDates);\n\t\t\tthis.onTouchedFn();\n\t\t}\n\t}\n\n\tlast12MonthsCallback(event: any): void {\n\t\tconst endDate = new Date();\n\t\tconst startDate = new Date();\n\t\tstartDate.setMonth(startDate.getMonth() - 12);\n\t\tconst dateRange: (Date | null)[] = [startDate, endDate];\n\n\t\tthis.activeButton = DATEPICKER_BUTTON_TYPES.LAST_12_MONTHS;\n\n\t\tif (this.manualApply) {\n\t\t\tthis.tempSelection = dateRange;\n\t\t} else {\n\t\t\tthis.rangeDates = dateRange;\n\t\t\tthis.onChangeEvent.emit(this.rangeDates);\n\t\t\tthis.onChangeFn(this.rangeDates);\n\t\t\tthis.onTouchedFn();\n\t\t}\n\t}\n\n\tcurrentYearCallback(event: any): void {\n\t\tconst today = new Date();\n\t\tconst startDate = new Date(today.getFullYear(), 0, 1); // January 1st\n\t\tconst endDate = new Date(today.getFullYear(), 11, 31); // December 31st\n\t\tconst dateRange: (Date | null)[] = [startDate, endDate];\n\n\t\tthis.activeButton = DATEPICKER_BUTTON_TYPES.CURRENT_YEAR;\n\n\t\tif (this.manualApply) {\n\t\t\tthis.tempSelection = dateRange;\n\t\t} else {\n\t\t\tthis.rangeDates = dateRange;\n\t\t\tthis.onChangeEvent.emit(this.rangeDates);\n\t\t\tthis.onChangeFn(this.rangeDates);\n\t\t\tthis.onTouchedFn();\n\t\t}\n\t}\n\n\tcurrentMonthCallback(event: any): void {\n\t\tconst today = new Date();\n\t\tconst startDate = new Date(today.getFullYear(), today.getMonth(), 1); // First day of month\n\t\tconst lastDay = new Date(today.getFullYear(), today.getMonth() + 1, 0).getDate();\n\t\tconst endDate = new Date(today.getFullYear(), today.getMonth(), lastDay); // Last day of month\n\t\tconst dateRange: (Date | null)[] = [startDate, endDate];\n\n\t\tthis.activeButton = DATEPICKER_BUTTON_TYPES.CURRENT_MONTH;\n\n\t\tif (this.manualApply) {\n\t\t\tthis.tempSelection = dateRange;\n\t\t} else {\n\t\t\tthis.rangeDates = dateRange;\n\t\t\tthis.onChangeEvent.emit(this.rangeDates);\n\t\t\tthis.onChangeFn(this.rangeDates);\n\t\t\tthis.onTouchedFn();\n\t\t}\n\t}\n\n\t// Helper method to check if a button should be shown\n\tshouldShowButton(buttonType: CustomButtonType): boolean {\n\t\treturn this.customButtons.includes(buttonType);\n\t}\n\n\t// Helper method to get button class\n\tgetButtonClass(buttonType: CustomButtonType): string {\n\t\treturn this.activeButton === buttonType ? 'btnActive' : 'btnSecond';\n\t}\n\n\tngAfterViewChecked(): void {\n\t\t// Sync viewYear with PrimeNG's internal year when in month view\n\t\tif (this.view === 'month' && this.datepickerRef && this.datepickerRef.currentYear !== undefined) {\n\t\t\tif (this.viewYear !== this.datepickerRef.currentYear) {\n\t\t\t\t// Use setTimeout to avoid ExpressionChangedAfterItHasBeenCheckedError\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.viewYear = this.datepickerRef.currentYear;\n\t\t\t\t}, 0);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate setupHideOverlayOverride(): void {\n\t\tif (!this.datepickerRef) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if hideOverlay method exists\n\t\tif (!this.datepickerRef.hideOverlay) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Save the original method only once\n\t\tif (!this.datepickerRef._hideOverlayOriginal) {\n\t\t\tthis.datepickerRef._hideOverlayOriginal = this.datepickerRef.hideOverlay.bind(this.datepickerRef);\n\t\t}\n\n\t\t// Override the hideOverlay method\n\t\tthis.datepickerRef.hideOverlay = () => {\n\t\t\t// In manual apply mode, prevent auto-close only immediately after date selection\n\t\t\tif (this.manualApply && this.preventAutoClose) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// In manual apply mode, if closing without Apply button (clicking outside)\n\t\t\t// Reset temp selection to original value BEFORE closing\n\t\t\tif (this.manualApply && !this.allowClose) {\n\t\t\t\t// Reset temp selection to discard changes\n\t\t\t\tthis.tempSelection = this.rangeDates;\n\t\t\t\t// Update datepicker's internal value\n\t\t\t\tthis.datepickerRef.value = this.rangeDates;\n\t\t\t}\n\n\t\t\t// Allow closing\n\t\t\tthis.datepickerRef._hideOverlayOriginal();\n\t\t};\n\t}\n}\n","<p-datepicker\n\t#datepicker\n\t[class]=\"panelStyleClass\"\n\t[ngModel]=\"internalModel\"\n\t(ngModelChange)=\"onModelChange($event)\"\n\t[selectionMode]=\"selectionMode\"\n\t[numberOfMonths]=\"numberOfMonths\"\n\t[readonlyInput]=\"readonlyInput\"\n\t[showIcon]=\"showIcon\"\n\t[view]=\"view\"\n\t[dateFormat]=\"getDateFormat()\"\n\t[defaultDate]=\"defaultDate\"\n\t(onMonthChange)=\"onMonthChange($event)\"\n\t(onYearChange)=\"onYearChange($event)\"\n\t(onShow)=\"handleOpen()\"\n\t(onHide)=\"handleClose()\"\n\t>\n\n\t<ng-template pTemplate=\"header\">\n\t\t<div class=\"prDatapicker__header\">\n\t\t\t<div class=\"prDatapicker__content\">\n\n\t\t\t\t<!-- MES -->\n\t\t\t\t<p-select\n\t\t\t\t\t*ngIf=\"view === 'date'\"\n\t\t\t\t\tclass=\"prSelect\"\n\t\t\t\t\t[options]=\"filteredMonths\"\n\t\t\t\t\toptionLabel=\"label\"\n\t\t\t\t\toptionValue=\"value\"\n\t\t\t\t\t[(ngModel)]=\"viewMonth\"\n\t\t\t\t\t(ngModelChange)=\"onViewChange()\"\n\t\t\t\t\tdropdownIcon=\"icon icon-arrow-down\">\n\t\t\t\t</p-select>\n\n\t\t\t\t<!-- AÑO -->\n\t\t\t\t<p-select\n\t\t\t\t\t*ngIf=\"view === 'date' || view === 'month'\"\n\t\t\t\t\tclass=\"prSelect\"\n\t\t\t\t\t[options]=\"years\"\n\t\t\t\t\t[(ngModel)]=\"viewYear\"\n\t\t\t\t\t(ngModelChange)=\"onViewChange()\"\n\t\t\t\t\tdropdownIcon=\"icon icon-arrow-down\"\n\t\t\t\t\t[virtualScroll]=\"true\"\n\t\t\t\t\t[virtualScrollItemSize]=\"38\">\n\t\t\t\t</p-select>\n\n\t\t\t</div>\n\t\t</div>\n\t</ng-template>\n\t<ng-template pTemplate=\"footer\" *ngIf=\"selectionMode === 'range'\">\n\t\t<div class=\"footerDatapicker footerDatapicker--range\">\n\t\t\t<div class=\"footerDatapicker__box\">\n\t\t\t\t<!-- TODAY button -->\n\t\t\t\t<p-button\n\t\t\t\t\t*ngIf=\"shouldShowButton(DATEPICKER_BUTTON_TYPES.TODAY)\"\n\t\t\t\t\t[class]=\"getButtonClass(DATEPICKER_BUTTON_TYPES.TODAY)\"\n\t\t\t\t\tlabel=\"Today\"\n\t\t\t\t\t(click)=\"todayCallback($event)\">\n\t\t\t\t</p-button>\n\t\t\t\t<!-- LAST 12 MONTHS button -->\n\t\t\t\t<p-button\n\t\t\t\t\t*ngIf=\"shouldShowButton(DATEPICKER_BUTTON_TYPES.LAST_12_MONTHS)\"\n\t\t\t\t\t[class]=\"getButtonClass(DATEPICKER_BUTTON_TYPES.LAST_12_MONTHS)\"\n\t\t\t\t\tlabel=\"Last 12 months\"\n\t\t\t\t\t(click)=\"last12MonthsCallback($event)\">\n\t\t\t\t</p-button>\n\t\t\t\t<!-- CURRENT YEAR button -->\n\t\t\t\t<p-button\n\t\t\t\t\t*ngIf=\"shouldShowButton(DATEPICKER_BUTTON_TYPES.CURRENT_YEAR)\"\n\t\t\t\t\t[class]=\"getButtonClass(DATEPICKER_BUTTON_TYPES.CURRENT_YEAR)\"\n\t\t\t\t\tlabel=\"Current year\"\n\t\t\t\t\t(click)=\"currentYearCallback($event)\">\n\t\t\t\t</p-button>\n\t\t\t\t<!-- CURRENT MONTH button -->\n\t\t\t\t<p-button\n\t\t\t\t\t*ngIf=\"shouldShowButton(DATEPICKER_BUTTON_TYPES.CURRENT_MONTH)\"\n\t\t\t\t\t[class]=\"getButtonClass(DATEPICKER_BUTTON_TYPES.CURRENT_MONTH)\"\n\t\t\t\t\tlabel=\"Current month\"\n\t\t\t\t\t(click)=\"currentMonthCallback($event)\">\n\t\t\t\t</p-button>\n\t\t\t</div>\n\t\t\t<div class=\"footerDatapicker__box\">\n\t\t\t\t<!-- Apply button - shown only in manual apply mode -->\n\t\t\t\t<p-button\n\t\t\t\t\t*ngIf=\"manualApply\"\n\t\t\t\t\tclass=\"btnPrimary\"\n\t\t\t\t\tlabel=\"Apply\"\n\t\t\t\t\t(click)=\"applyCallback($event)\">\n\t\t\t\t</p-button>\n\t\t\t\t<!-- Clear button - always shown -->\n\t\t\t\t<p-button\n\t\t\t\t\tclass=\"btnSecond\"\n\t\t\t\t\tlabel=\"Clear\"\n\t\t\t\t\t(click)=\"clearCallback($event)\">\n\t\t\t\t</p-button>\n\t\t\t</div>\n\t\t</div>\n\t</ng-template>\n\n</p-datepicker>\n","import { Injectable, signal } from \"@angular/core\";\n@Injectable({ providedIn: \"root\" })\nexport class SkeletonService {\n\tisLoading = signal<boolean>(false);\n\tpublic hide() {\n\t\tthis.isLoading.set(false);\n\t}\n\tpublic show() {\n\t\tthis.isLoading.set(true);\n\t}\n}\n","import { Component, inject, Input } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { SkeletonService } from \"../../services/skeleton.service\";\n\n@Component({\n\tselector: \"intelica-skeleton\",\n\timports: [CommonModule],\n\ttemplateUrl: \"./skeleton.component.html\",\n})\nexport class SkeletonComponent {\n\tprivate readonly skeletonService = inject(SkeletonService);\n\tisLoading = this.skeletonService.isLoading;\n\n\t@Input() localLoading: boolean = false;\n\t@Input() show: boolean = false;\n}\n","@if((isLoading() && !localLoading) || show){\n<ng-content></ng-content>\n}\n","import { Component, Input, OnInit } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { SkeletonModule } from \"primeng/skeleton\";\n\n@Component({\n\tselector: \"intelica-skeleton-table\",\n\timports: [CommonModule, SkeletonModule],\n\ttemplateUrl: \"./skeleton-table.component.html\",\n})\nexport class SkeletonTableComponent implements OnInit {\n\t/**\n\t * @description number of rows to display\n\t * @default 6\n\t * @type number\n\t * @example <intelica-skeleton-table [rows]=\"6\"></intelica-skeleton-table>\n\t */\n\t@Input() rows: 2 | 3 | 4 | 6 | 12 = 6;\n\t/**\n\t * @description number of columns to display\n\t * @default 6\n\t * @type number\n\t * @example <intelica-skeleton-table [columns]=\"6\"></intelica-skeleton-table>\n\t */\n\t@Input() columns: 2 | 3 | 4 | 6 | 12 = 6;\n\n\t@Input() showLeftSkeleton: boolean = true;\n\t@Input() showRightSkeleton: boolean = true;\n\n\tcolumnSizes: string[] = [];\n\n\tngOnInit(): void {\n\t\tconst baseSize = 12 / this.columns;\n\t\tthis.columnSizes = Array.from({ length: this.columns }, (_, i) => {\n\t\t\treturn `col-${baseSize}`;\n\t\t});\n\t}\n\n\tget justifyClass(): string | null {\n\t\tif (this.showLeftSkeleton && this.showRightSkeleton) return \"justify-content-between\";\n\t\tif (this.showLeftSkeleton) return \"justify-content-start\";\n\t\tif (this.showRightSkeleton) return \"justify-content-end\";\n\t\treturn null;\n\t}\n\n\tgetRows() {\n\t\treturn new Array(this.rows);\n\t}\n}\n","<div class=\"skeletonTable\">\n\t<div class=\"mb-2 row\" *ngIf=\"showLeftSkeleton || showRightSkeleton\" [ngClass]=\"justifyClass\">\n\t\t<div class=\"col-1 px-0\" *ngIf=\"showLeftSkeleton\">\n\t\t\t<p-skeleton class=\"prSkeleton\" [height]=\"'3rem'\"></p-skeleton>\n\t\t</div>\n\t\t<div class=\"col-3 px-0\" *ngIf=\"showRightSkeleton\">\n\t\t\t<p-skeleton class=\"prSkeleton\" [height]=\"'3rem'\"></p-skeleton>\n\t\t</div>\n\t</div>\n\n\t<div class=\"row\">\n\t\t<div class=\"col-12 px-0 mb-2\">\n\t\t\t<p-skeleton class=\"prSkeleton\" [height]=\"'4rem'\"></p-skeleton>\n\t\t</div>\n\t</div>\n\t@for (row of getRows(); track $index) {\n\t<div class=\"row borderBottomRow\">\n\t\t@for (column of columnSizes; track $index) {\n\t\t<div class=\"{{ column }} px-0\">\n\t\t\t<div class=\"bodyPaddingTable\">\n\t\t\t\t<p-skeleton class=\"prSkeleton\" [height]=\"'2rem'\"></p-skeleton>\n\t\t\t</div>\n\t\t</div>\n\t\t}\n\t</div>\n\t}\n</div>\n","import { Directive, Input } from \"@angular/core\";\n\n@Directive({\n\tselector: \"data\", // El selector es 'data', lo que permite usar <data> en la plantilla\n})\nexport class DataDirective {\n\t@Input() size: string = \"\"; // Esta es la propiedad que recibirás en la etiqueta <data>\n}\n","import { Component, Input, ContentChildren, QueryList, AfterContentInit } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { SkeletonModule } from \"primeng/skeleton\";\nimport { DataDirective } from \"./data.directive\";\n\n@Component({\n\tselector: \"intelica-skeleton-chart\",\n\timports: [CommonModule, SkeletonModule],\n\ttemplateUrl: \"./skeleton-chart.component.html\",\n})\nexport class SkeletonChartComponent implements AfterContentInit {\n\t/**\n\t * @description type of skeleton chart\n\t * @default 'bar'\n\t * @type string\n\t * @example <intelica-skeleton-chart [type]=\"'bar'\"></intelica-skeleton-chart>\n\t */\n\t@Input() type: \"horizontal-bar\" | \"bar\" | \"pie\" | \"line\" | \"donut\" = \"bar\";\n\n\t/**\n\t * @description number of series to display\n\t * @default 6\n\t * @type number\n\t * @example <intelica-skeleton-chart [series]=\"3\"></intelica-skeleton-chart>\n\t */\n\t@Input() series: number = 6;\n\n\t/**\n\t * @description number of data items to display in each bar\n\t * @default 1\n\t * @type number\n\t * @example <intelica-skeleton-chart [data]=\"3\"></intelica-skeleton-chart>\n\t */\n\t@Input() data: number = 1;\n\n\t/**\n\t * @description Flag to indicate whether the label should be displayed or hidden\n\t * @default false\n\t * @type boolean\n\t */\n\t@Input() label: boolean = true;\n\n\t// Propiedad para almacenar los valores aleatorios de porcentaje de altura\n\trandomPercent: string[][] = [];\n\n\t// Recibimos las etiquetas <data> como directivas\n\t@ContentChildren(DataDirective) dataElements!: QueryList<DataDirective>;\n\n\tngOnInit(): void {\n\t\tthis.updateRandomPercentages();\n\t}\n\n\tngAfterContentInit(): void {\n\t\t// Si hay elementos <data> proyectados, usamos sus valores de 'size'\n\t\tif (this.dataElements.length > 0) {\n\t\t\tthis.setFixedPercentages();\n\t\t\treturn;\n\t\t}\n\t\tthis.updateRandomPercentages();\n\t}\n\n\t// Método para asignar alturas aleatorias\n\tupdateRandomPercentages(): void {\n\t\t// Si no se encuentran las etiquetas <data>, usamos valores aleatorios\n\t\tthis.randomPercent = this.getArray(this.series).map(() => this.getArray(this.data).map(() => this.setRandomPercent(20, 100)));\n\t}\n\n\t// Método para asignar alturas fijas según las etiquetas <data>\n\tsetFixedPercentages(): void {\n\t\t// Usa las alturas fijas definidas por las etiquetas <data>\n\t\tthis.randomPercent = this.getArray(this.series).map(\n\t\t\t() => this.dataElements.toArray().map(data => data.size) // Aquí mapeamos todas las alturas de las etiquetas <data>\n\t\t);\n\t}\n\n\t// Función para generar un valor aleatorio en porcentaje\n\tsetRandomPercent(min: number, max: number): string {\n\t\tconst random = Math.floor(Math.random() * (max - min + 1));\n\t\treturn `${random + min}%`;\n\t}\n\n\t// Función auxiliar para crear un array de tamaño \"length\"\n\tgetArray(length: number): number[] {\n\t\treturn Array.from({ length }, (_, i) => i);\n\t}\n}\n","@switch (type) { @case('bar'){\n<div class=\"skeletonGraphic skeletonGraphic--verticalBars\">\n\t<div class=\"skeletonGraphic__serie\" *ngFor=\"let i of getArray(series)\">\n\t\t<div class=\"skeletonGraphic__data\">\n\t\t\t<!-- Si hay etiquetas <data> proyectadas, las usamos con las alturas fijas -->\n\t\t\t<ng-container *ngIf=\"dataElements.length > 0\">\n\t\t\t\t<ng-container *ngFor=\"let data of dataElements.toArray()\">\n\t\t\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"data.size\"></p-skeleton>\n\t\t\t\t</ng-container>\n\t\t\t</ng-container>\n\n\t\t\t<!-- Si no hay etiquetas <data>, usamos los valores aleatorios -->\n\t\t\t<ng-container *ngIf=\"dataElements.length === 0\">\n\t\t\t\t<ng-container *ngFor=\"let j of getArray(data)\">\n\t\t\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"randomPercent[i][j]\"></p-skeleton>\n\t\t\t\t</ng-container>\n\t\t\t</ng-container>\n\t\t</div>\n\t\t<div class=\"skeletonGraphic__label\" *ngIf=\"label\">\n\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'50%'\" [height]=\"'1rem'\"></p-skeleton>\n\t\t</div>\n\t</div>\n</div>\n} @case ('horizontal-bar'){\n<div class=\"skeletonGraphic skeletonGraphic--horizontalBars\">\n\t<div class=\"skeletonGraphic__serie\" *ngFor=\"let i of getArray(series)\">\n\t\t<div class=\"skeletonGraphic__data\">\n\t\t\t<!-- Si hay etiquetas <data> proyectadas, las usamos con las alturas fijas -->\n\t\t\t<ng-container *ngIf=\"dataElements.length > 0\">\n\t\t\t\t<ng-container *ngFor=\"let data of dataElements.toArray()\">\n\t\t\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"data.size\" [height]=\"'100%'\"></p-skeleton>\n\t\t\t\t</ng-container>\n\t\t\t</ng-container>\n\n\t\t\t<!-- Si no hay etiquetas <data>, usamos los valores aleatorios -->\n\t\t\t<ng-container *ngIf=\"dataElements.length === 0\">\n\t\t\t\t<ng-container *ngFor=\"let j of getArray(data)\">\n\t\t\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"randomPercent[i][j]\" [height]=\"'100%'\"></p-skeleton>\n\t\t\t\t</ng-container>\n\t\t\t</ng-container>\n\t\t</div>\n\t\t<div class=\"skeletonGraphic__label\" *ngIf=\"label\">\n\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'10rem'\" [height]=\"'1rem'\"></p-skeleton>\n\t\t</div>\n\t</div>\n</div>\n} @case ('pie'){\n<div class=\"skeletonGraphic skeletonGraphic--pie\">\n\t<ng-container *ngTemplateOutlet=\"pieDonutTemplate\"></ng-container>\n</div>\n} @case ('donut'){\n<div class=\"skeletonGraphic skeletonGraphic--pie skeletonGraphic--donut\">\n\t<ng-container *ngTemplateOutlet=\"pieDonutTemplate\"></ng-container>\n</div>\n} @case ('line'){\n<div class=\"col-6 mb-3\">\n\t<div class=\"row align-items-end\">\n\t\t<div class=\"col-1 d-flex justify-content-end\">\n\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'0.5rem'\" [height]=\"'25rem'\"></p-skeleton>\n\t\t</div>\n\t\t<div class=\"col d-flex justify-content-center px-0\">\n\t\t\t<div class=\"col-8 px-0\">\n\t\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'10rem'\"></p-skeleton>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col d-flex justify-content-center px-0\">\n\t\t\t<div class=\"col-8 px-0\">\n\t\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'20rem'\"></p-skeleton>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col d-flex justify-content-center px-0\">\n\t\t\t<div class=\"col-8 px-0\">\n\t\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'8rem'\"></p-skeleton>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col d-flex justify-content-center px-0\">\n\t\t\t<div class=\"col-8 px-0\">\n\t\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'15rem'\"></p-skeleton>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col d-flex justify-content-center px-0\">\n\t\t\t<div class=\"col-8 px-0\">\n\t\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'20rem'\"></p-skeleton>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"col d-flex justify-content-center px-0\">\n\t\t\t<div class=\"col-8 px-0\">\n\t\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'8rem'\"></p-skeleton>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<div class=\"row mt-3\">\n\t\t<div class=\"col-1\"></div>\n\t\t<div class=\"col\">\n\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'0.5rem'\"></p-skeleton>\n\t\t</div>\n\t</div>\n</div>\n} }\n\n<ng-template #pieDonutTemplate>\n\t<div class=\"skeletonGraphic__serie\">\n\t\t<div class=\"skeletonGraphic__wrap\">\n\t\t\t<div class=\"skeletonGraphic__label left\" *ngIf=\"label\">\n\t\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'100%'\"></p-skeleton>\n\t\t\t</div>\n\t\t\t<div class=\"skeletonGraphic__data\">\n\t\t\t\t<p-skeleton class=\"prSkeleton\" shape=\"circle\" [size]=\"'100%'\"></p-skeleton>\n\t\t\t</div>\n\t\t\t<div class=\"skeletonGraphic__label right\" *ngIf=\"label\">\n\t\t\t\t<p-skeleton class=\"prSkeleton\" [width]=\"'100%'\" [height]=\"'100%'\"></p-skeleton>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</ng-template>\n","import { CommonModule, DatePipe } from \"@angular/common\";\nimport { AfterContentInit, ChangeDetectorRef, Component, ContentChild, ContentChildren, EventEmitter, inject, Input, OnChanges, Output, QueryList, SimpleChanges, TemplateRef } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { BadgeModule } from \"primeng/badge\";\nimport { CheckboxModule } from \"primeng/checkbox\";\nimport { IconField } from \"primeng/iconfield\";\nimport { InputIcon } from \"primeng/inputicon\";\nimport { InputNumber } from \"primeng/inputnumber\";\nimport { InputText, InputTextModule } from \"primeng/inputtext\";\nimport { Paginator } from \"primeng/paginator\";\nimport { Select } from \"primeng/select\";\nimport { TableModule } from \"primeng/table\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { FormatCellPipe } from \"../../pipes/formatCell.pipe\";\nimport { TermPipe } from \"../../pipes/term.pipes\";\nimport { GlobalTermService } from \"../../services/globalTerm.service\";\nimport { ColumnComponent, ColumnGroupComponent, RowResumenComponent } from \"../table/column.component\";\nimport { SortFieldModel } from \"../table/model/sort.model\";\nimport { QueryParametersModel } from \"./model/query.model\";\n\n@Component({\n\tselector: \"intelica-table-fetch\",\n\tstandalone: true,\n\timports: [\n\t\tInputIcon,\n\t\tIconField,\n\t\tInputText,\n\t\tInputTextModule,\n\t\tInputNumber,\n\t\tPaginator,\n\t\tFormsModule,\n\t\tCommonModule,\n\t\tTableModule,\n\t\tSelect,\n\t\tBadgeModule,\n\t\tTooltipModule,\n\t\tTermPipe,\n\t\tCheckboxModule,\n\t\tFormsModule,\n\t\tFormatCellPipe,\n\t],\n\ttemplateUrl: \"./table-fetch.component.html\",\n\tproviders: [FormatCellPipe, DatePipe],\n})\nexport class TableFetchComponent<T> implements OnChanges, AfterContentInit {\n\treadonly GlobalTermService = inject(GlobalTermService);\n\n\t@Input() ComponentId: string = \"\";\n\t@Input() ShowRowPerPage: boolean = true;\n\t@Input() ShowSearch: boolean = false;\n\t@Input() ShowPagination: boolean = false;\n\t@Input() RowsPerPage: number = 10;\n\t@Input() ShowCheckbox: boolean = false;\n\t@Input() ShowIndex: boolean = false;\n\t@Input() ClassName: string = \"\";\n\t@Input() DefaultSortField: string = \"\";\n\t@Input() scrollHeight: string = \"400px\";\n\t@Input() scrollable: boolean = false;\n\t@Input() AllowedPageSizes: number[] = [10, 25, 50, 100];\n\t@Input() tableStyle: { [klass: string]: any } = {};\n\tLevels: number[] = [];\n\t@Input() FilteredList: T[] = [];\n\t@Input() TotalItems: number = 0;\n\tTotalRecords: number = 0;\n\tIsPaginatorInputSearch: boolean = false;\n\n\t@Output() EmitQueryParametersChange = new EventEmitter<QueryParametersModel>();\n\n\t@ContentChildren(ColumnComponent) Columns!: QueryList<ColumnComponent>;\n\t@ContentChildren(ColumnGroupComponent)\n\tColumnGroups!: QueryList<ColumnGroupComponent>;\n\t@ContentChildren(RowResumenComponent)\n\tRowResumenGroups!: QueryList<RowResumenComponent>;\n\n\t@ContentChild(\"additionalTemplate\") AdditionalTemplate?: TemplateRef<any>;\n\t@ContentChild(\"additionalCentralTemplate\")\n\tAdditionalCentralTemplate?: TemplateRef<any>;\n\t@ContentChild(\"additionalExtendedTemplate\")\n\tAdditionalExtendedTemplate?: TemplateRef<any>;\n\t@Output() EmitSortEvent = new EventEmitter<SortFieldModel[]>();\n\n\tColumnList: ColumnComponent[] = [];\n\tColumnGroupList: ColumnGroupComponent[] = [];\n\tRowResumenList: RowResumenComponent[] = [];\n\n\t@Input() CurrentPage: number = 1;\n\t@Input() SortOrder: number = 1;\n\t@Input() SortField: keyof T | null = null;\n\tMaxLevel: number = 0;\n\tListDataTable: T[] = [];\n\tSearchInput: string = \"\";\n\n\tconstructor(private cdr: ChangeDetectorRef) {}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (changes[\"FilteredList\"] || changes[\"RowsPerPage\"] || changes[\"CurrentPage\"]) {\n\t\t\tthis.UpdatePages();\n\t\t}\n\n\t\tif (changes[\"SortField\"] || changes[\"SortOrder\"]) {\n\t\t\tthis.EmitSortEvent.emit([\n\t\t\t\t{\n\t\t\t\t\tsortOrder: this.SortOrder,\n\t\t\t\t\tsortField: this.SortField?.toString() ?? \"\",\n\t\t\t\t},\n\t\t\t]);\n\t\t}\n\t}\n\n\tngAfterContentInit() {\n\t\tthis.captureColumns();\n\t\tthis.captureGroups();\n\t\tthis.captureResumen();\n\n\t\tthis.Columns.changes.subscribe(() => {\n\t\t\tthis.captureColumns();\n\t\t\tthis.cdr.markForCheck();\n\t\t});\n\n\t\tthis.ColumnGroups.changes.subscribe(() => {\n\t\t\tthis.captureGroups();\n\t\t\tthis.cdr.markForCheck();\n\t\t});\n\n\t\tthis.RowResumenGroups.changes.subscribe(() => {\n\t\t\tthis.captureResumen();\n\t\t\tthis.cdr.markForCheck();\n\t\t});\n\t}\n\n\tprivate captureColumns() {\n\t\tthis.ColumnList = this.Columns?.toArray() ?? [];\n\t}\n\n\tprivate captureGroups() {\n\t\tthis.ColumnGroupList = this.ColumnGroups?.toArray() ?? [];\n\n\t\tconst levels = this.ColumnGroupList.map(c => c.level);\n\t\tthis.MaxLevel = levels.length ? Math.max(...levels) + 1 : 1;\n\t\tthis.Levels = Array.from({ length: this.MaxLevel }, (_, i) => i);\n\t}\n\n\tprivate captureResumen() {\n\t\tthis.RowResumenList = this.RowResumenGroups?.toArray() ?? [];\n\t}\n\n\tOnSort(field: string) {\n\t\tif (this.SortField === field) {\n\t\t\tthis.SortOrder *= -1;\n\t\t} else {\n\t\t\tthis.SortField = field as keyof T;\n\t\t\tthis.SortOrder = 1;\n\t\t}\n\t\tthis.ExecuteSearch({});\n\t}\n\tUpdatePages() {\n\t\tif (this.ShowPagination) {\n\t\t\tthis.TotalRecords = this.TotalItems;\n\n\t\t\tconst start = (this.CurrentPage - 1) * this.RowsPerPage;\n\t\t\tconst end = start + this.RowsPerPage;\n\t\t\tthis.ListDataTable = this.FilteredList.slice(start, end);\n\t\t} else {\n\t\t\tthis.ListDataTable = this.FilteredList;\n\t\t}\n\t}\n\n\tOnPageChange(event: { page?: number; rows?: number } | number): void {\n\t\tif (typeof event === \"number\") {\n\t\t\tthis.CurrentPage = event;\n\t\t} else {\n\t\t\tif (typeof event?.rows === \"number\") {\n\t\t\t\tthis.RowsPerPage = event.rows;\n\t\t\t}\n\t\t\tif (typeof event?.page === \"number\") {\n\t\t\t\tthis.CurrentPage = event.page + 1;\n\t\t\t}\n\t\t}\n\t\tthis.IsPaginatorInputSearch = true;\n\t\tthis.ExecuteSearch({});\n\t}\n\n\tResetTable() {\n\t\tthis.CurrentPage = 1;\n\t\tthis.ExecuteSearch({});\n\t}\n\n\tExecuteSearch(event?: any): void {\n\t\tif (event?.fieldText !== undefined && event?.fieldText !== \"\") {\n\t\t\tthis.SearchInput = event;\n\t\t}\n\n\t\tif (this.SearchInput !== undefined && this.SearchInput !== \"\" && !this.IsPaginatorInputSearch) {\n\t\t\tthis.CurrentPage = 1;\n\t\t}\n\n\t\tconst newQueryParameters: QueryParametersModel = {\n\t\t\tFilterValue: this.SearchInput.trim(),\n\t\t\tOrderBy: this.SortField ? String(this.SortField) : undefined,\n\t\t\tSortDirection: this.SortOrder === 1 ? \"asc\" : \"desc\",\n\t\t\tPageNumber: this.CurrentPage,\n\t\t\tPageSize: this.RowsPerPage,\n\t\t};\n\n\t\tthis.EmitQueryParametersChange.emit(newQueryParameters);\n\t\tthis.UpdatePages();\n\t\tthis.IsPaginatorInputSearch = false;\n\t}\n\n\tOnRowsPerPageChange(value: number): void {\n\t\tthis.RowsPerPage = value;\n\t\tthis.CurrentPage = 1;\n\t\tthis.ExecuteSearch({});\n\t}\n\tClearSearch() {\n\t\tthis.SearchInput = \"\";\n\t}\n\tget TotalPages(): number {\n\t\treturn Math.ceil(this.TotalRecords / this.RowsPerPage);\n\t}\n\n\tget RenderPanel(): boolean {\n\t\treturn Boolean(this.AdditionalTemplate) || this.ShowSearch || Boolean(this.AdditionalCentralTemplate) || Boolean(this.AdditionalExtendedTemplate);\n\t}\n\n\tonChangeSelectPage(event: any) {\n\t\tthis.IsPaginatorInputSearch = true;\n\t\tconst eventValue: string = event.target.value;\n\t\tif (eventValue === \"\" || isNaN(parseInt(eventValue)) || eventValue === \"0\" || eventValue.indexOf(\"-\") >= 0) {\n\t\t\tthis.CurrentPage = 1;\n\t\t\tthis.ExecuteSearch({});\n\t\t\treturn;\n\t\t}\n\n\t\tthis.CurrentPage = parseInt(eventValue);\n\n\t\tif (this.CurrentPage > this.TotalPages) {\n\t\t\tthis.CurrentPage = this.TotalPages;\n\t\t}\n\t\tthis.ExecuteSearch({});\n\t}\n}\n","<div class=\"prTable\">\n\t@if (RenderPanel) {\n\t<div class=\" \">\n\t\t<div class=\"prCard__row justify-content-end\">\n\t\t\t<div class=\"prCard__actionflex\">\n\t\t\t\t@if (AdditionalTemplate) {\n\t\t\t\t<ng-container *ngTemplateOutlet=\"AdditionalTemplate\"></ng-container>\n\t\t\t\t}\n\t\t\t</div>\n\n\t\t\t@if (ShowSearch) {\n\t\t\t<div class=\"ptSearch searchTableGA\">\n\t\t\t\t<p-iconfield>\n\t\t\t\t\t<input type=\"text\" class=\"prInputText\" pInputText placeholder=\"{{ 'LBL_SEARCH_SELECT' | term : GlobalTermService.languageCode }}\" [(ngModel)]=\"SearchInput\" (keydown.enter)=\"ExecuteSearch()\" />\n\t\t\t\t\t<p-inputicon>\n\t\t\t\t\t\t<button class=\"ptSearch__icon ptSearch__icon--close\">\n\t\t\t\t\t\t\t<i class=\"icon icon-cancel\" *ngIf=\"SearchInput\" (click)=\"ClearSearch()\"></i>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<span class=\"ptSearch__icon ptSearch__icon--divider\" *ngIf=\"SearchInput\"></span>\n\t\t\t\t\t\t<button class=\"ptSearch__icon ptSearch__icon--search\">\n\t\t\t\t\t\t\t<i class=\"icon icon-search\"></i>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</p-inputicon>\n\t\t\t\t</p-iconfield>\n\t\t\t</div>\n\t\t\t}\n\t\t\t<!-- -->\n\t\t\t@if (AdditionalCentralTemplate) {\n\t\t\t<div class=\"prTableTools__new prTableTools__new--right\">\n\t\t\t\t<ng-container *ngTemplateOutlet=\"AdditionalCentralTemplate\"></ng-container>\n\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t</div>\n\t@if (AdditionalExtendedTemplate) {\n\t<div class=\"prTableTools justify-content-start\">\n\t\t<ng-container *ngTemplateOutlet=\"AdditionalExtendedTemplate\"></ng-container>\n\t</div>\n\t} }\n\t<p-table\n\t\tclass=\"prTable\"\n\t\t[ngClass]=\"ClassName\"\n\t\t[value]=\"FilteredList\"\n\t\tresponsiveLayout=\"scroll\"\n\t\t[sortField]=\"DefaultSortField\"\n\t\t[sortOrder]=\"SortOrder\"\n\t\t[scrollable]=\"scrollable\"\n\t\t[scrollHeight]=\"scrollable ? scrollHeight : 'auto'\"\n\t\t[tableStyle]=\"tableStyle\"\n\t>\n\t\t<!-- Cabecera con columnas agrupadas -->\n\t\t<ng-template pTemplate=\"header\">\n\t\t\t@for (level of Levels; track $index) {\n\t\t\t<tr>\n\t\t\t\t@for (col of ColumnGroupList; track $index) { @if (col.level === level) {\n\t\t\t\t<th [attr.colspan]=\"col.colspan\" [attr.rowspan]=\"col.rowspan\" [pSortableColumn]=\"col.sortable ? col.field : ''\" [style.min-width]=\"col.minWidth\" (click)=\"col.sortable && OnSort(col.field)\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<span tooltipStyleClass=\"prTooltip\" F [pTooltip]=\"col.headerTooltip || col.header\" [tooltipPosition]=\"col.headerTooltipPosition || 'top'\">\n\t\t\t\t\t\t\t{{ col.header }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<p-sortIcon *ngIf=\"col.sortable\" [field]=\"col.field\"></p-sortIcon>\n\t\t\t\t\t</div>\n\t\t\t\t</th>\n\t\t\t\t} } @if (ShowCheckbox && level === 0 && ColumnGroupList.length != 0) {\n\t\t\t\t<th class=\"text-center\" style=\"width: 4%\" [attr.rowspan]=\"MaxLevel === 1 ? 2 : MaxLevel\">\n\t\t\t\t\t<p-tableHeaderCheckbox class=\"prCheckbox\" />\n\t\t\t\t</th>\n\t\t\t\t}\n\t\t\t</tr>\n\t\t\t}\n\n\t\t\t<tr>\n\t\t\t\t@for (col of ColumnList; track $index) { @if (col.showHeader) {\n\t\t\t\t<th\n\t\t\t\t\t[class]=\"col.className\"\n\t\t\t\t\t[pSortableColumn]=\"!col.isChecboxColumn && col.sortable ? col.field : ''\"\n\t\t\t\t\t[style.width]=\"col.width\"\n\t\t\t\t\t[style.min-width]=\"col.minWidth\"\n\t\t\t\t\t(click)=\"!col.isChecboxColumn && col.sortable && OnSort(col.field)\"\n\t\t\t\t>\n\t\t\t\t\t<div class=\"prTable__header\">\n\t\t\t\t\t\t<span tooltipStyleClass=\"prTooltip\" [pTooltip]=\"col.headerTooltip || col.header\" [tooltipPosition]=\"col.headerTooltipPosition || 'top'\">\n\t\t\t\t\t\t\t{{ col.header }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t@if (!col.showIndex) {\n\t\t\t\t\t\t<p-sortIcon *ngIf=\"col.sortable\" [field]=\"col.field\"></p-sortIcon>\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t</th>\n\t\t\t\t} } @if (ShowCheckbox && ColumnGroupList.length == 0) {\n\t\t\t\t<th class=\"text-center\" style=\"width: 4%\">\n\t\t\t\t\t<p-tableHeaderCheckbox class=\"prCheckbox\" />\n\t\t\t\t</th>\n\t\t\t\t}\n\t\t\t</tr>\n\n\t\t\t@if (FilteredList.length > 0 && RowResumenList.length > 0) {\n\t\t\t<tr class=\"fixedRow\">\n\t\t\t\t@for (col of RowResumenList; track $index) {\n\t\t\t\t<td [ngClass]=\"col.className\" [attr.colspan]=\"col.colspan\" [attr.rowspan]=\"col.rowspan\">\n\t\t\t\t\t@if (col.templateRef) {\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"col.templateRef\"></ng-container>\n\t\t\t\t\t</span>\n\t\t\t\t\t}\n\t\t\t\t</td>\n\t\t\t\t}\n\t\t\t</tr>\n\t\t\t}\n\t\t</ng-template>\n\n\t\t<!-- Cuerpo de la tabla -->\n\t\t<ng-template pTemplate=\"body\" let-rowData let-rowIndex=\"rowIndex\">\n\t\t\t<tr>\n\t\t\t\t@for (col of ColumnList; track $index) {\n\t\t\t\t<td [ngClass]=\"col.className\">\n\t\t\t\t\t@if (col.showIndex) {\n\t\t\t\t\t{{ rowIndex + 1 + (CurrentPage - 1) * RowsPerPage }}\n\t\t\t\t\t} @else { @if (col.templateRef) {\n\t\t\t\t\t<ng-container *ngTemplateOutlet=\"col.templateRef; context: { $implicit: rowData }\"></ng-container>\n\t\t\t\t\t} @else {\n\t\t\t\t\t<span class=\"text-breakWord\" tooltipStyleClass=\"prTooltip\" pTooltip=\"{{ col.tooltip }}\" tooltipPosition=\"{{ col.tooltipPosition }}\">\n\t\t\t\t\t\t{{ rowData[col.field] | formatCell : col.formatType }}\n\t\t\t\t\t</span>\n\t\t\t\t\t} }\n\t\t\t\t</td>\n\t\t\t\t} @if (ShowCheckbox) {\n\t\t\t\t<td class=\"text-center\">\n\t\t\t\t\t<p-tableCheckbox [value]=\"rowData\" class=\"prCheckbox\" />\n\t\t\t\t</td>\n\t\t\t\t}\n\t\t\t</tr>\n\t\t</ng-template>\n\n\t\t<!-- Mensaje cuando no hay datos -->\n\t\t<ng-template pTemplate=\"emptymessage\">\n\t\t\t<tr>\n\t\t\t\t<td [attr.colspan]=\"ColumnList.length + (ShowCheckbox ? 1 : 0)\" class=\"text-center\">\n\t\t\t\t\t{{ \"Nodata\" | term : GlobalTermService.languageCode }}\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</ng-template>\n\t</p-table>\n\n\t<!-- <div class=\"prTableToolsBottom\"> -->\n\t<div class=\"d-flex justify-content-end\">\n\t\t@if (TotalRecords !== 0 && ShowPagination) {\n\t\t<div class=\"ptTablePaginator\">\n\t\t\t<p-paginator\n\t\t\t\tclass=\"prPaginator paginatorTableGA\"\n\t\t\t\t[first]=\"(CurrentPage - 1) * RowsPerPage\"\n\t\t\t\t[rows]=\"RowsPerPage\"\n\t\t\t\t[totalRecords]=\"TotalRecords\"\n\t\t\t\t(onPageChange)=\"OnPageChange($event)\"\n\t\t\t\t[showJumpToPageInput]=\"false\"\n\t\t\t\t[showCurrentPageReport]=\"false\"\n\t\t\t\t[showPageLinks]=\"false\"\n\t\t\t\t[showFirstLastIcon]=\"false\"\n\t\t\t\t[templateLeft]=\"templateLeft\"\n\t\t\t>\n\t\t\t\t<ng-template #previouspagelinkicon>\n\t\t\t\t\t<i class=\"icon icon-arrow-left paginatorArrowGA\"></i>\n\t\t\t\t</ng-template>\n\t\t\t\t<ng-template #nextpagelinkicon>\n\t\t\t\t\t<i class=\"icon icon-arrow-right paginatorArrowGA\"></i>\n\t\t\t\t</ng-template>\n\t\t\t\t<ng-template pTemplate=\"templateLeft\" let-state #templateLeft>\n\t\t\t\t\t<span>{{ \"ROWS_PER_PAGE\" | term : GlobalTermService.languageCode }}</span>\n\t\t\t\t\t<p-select panelStyleClass=\"prSelect paginatorSelectTableGA\" class=\"prSelect\" [options]=\"AllowedPageSizes\" [ngModel]=\"RowsPerPage\" appendTo=\"body\" (onChange)=\"OnRowsPerPageChange($event.value)\" />\n\t\t\t\t\t<span>\n\t\t\t\t\t\t{{ \"Page\" | term : GlobalTermService.languageCode }}\n\t\t\t\t\t\t<p-inputnumber class=\"p-paginator-jtp-input\" inputId=\"integeronly\" [(ngModel)]=\"CurrentPage\" [allowEmpty]=\"false\" [min]=\"1\" (keyup.enter)=\"onChangeSelectPage($event)\" />\n\t\t\t\t\t\t{{ \"Of\" | term : GlobalTermService.languageCode }} {{ TotalPages }}\n\t\t\t\t\t</span>\n\t\t\t\t</ng-template>\n\t\t\t</p-paginator>\n\t\t</div>\n\t\t}\n\t</div>\n</div>\n","import { Component } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { ConfirmDialogModule } from \"primeng/confirmdialog\";\nimport { ButtonModule } from \"primeng/button\";\nimport { ConfirmationService } from \"primeng/api\";\n\n@Component({\n\tselector: \"intelica-alert\",\n\tstandalone: true,\n\timports: [CommonModule, ConfirmDialogModule, ButtonModule],\n\ttemplateUrl: './intelica-alert.component.html',\n})\nexport class IntelicaAlertComponent {\n\t// This component is now just a wrapper for the ConfirmDialog.\n\t// All logic is handled via the headless template and the data passed from AlertService.\n}\n","<!-- \n Clases Modificadoras para estados:\n prConfirmDialog--warning\n prConfirmDialog--danger\n prConfirmDialog--error\n prConfirmDialog--success\n prConfirmDialog--default\n-->\n<p-confirmDialog\n\t#cd\n\t[styleClass]=\"\n\t\t'prConfirmDialog' +\n\t\t($any(cd.confirmation)?.data?.config?.type ? ' prConfirmDialog--' + $any(cd.confirmation).data.config.type : ' prConfirmDialog--default') +\n\t\t($any(cd.confirmation)?.data?.config?.size ? ' prConfirmDialog--' + $any(cd.confirmation).data.config.size : '')\n\t\"\n\tkey=\"intelica-alert-dialog\"\n\t[closable]=\"false\"\n\t[visible]=\"undefined\"\n>\n\t<!-- \n We use the headless template. \n 'message' contains the confirmation object.\n 'message.data' contains our custom 'presentationData' object from AlertService.\n -->\n\t<ng-template pTemplate=\"headless\" let-message let-onAccept=\"onAccept\" let-onReject=\"onReject\">\n\t\t<div class=\"prConfirmDialog__content\">\n\t\t\t<!-- Close Button -->\n\t\t\t@if (message.data.config.showCloseButton) {\n\t\t\t<div class=\"prConfirmDialog__close\">\n\t\t\t\t<p-button severity=\"secondary\" [rounded]=\"false\" [text]=\"true\" (onClick)=\"onReject()\" ariaLabel=\"Cerrar\">\n\t\t\t\t\t<i class=\"icon icon-cancel\"></i>\n\t\t\t\t</p-button>\n\t\t\t</div>\n\t\t\t}\n\n\t\t\t<!-- Icon -->\n\t\t\t<div class=\"prConfirmDialog__icon\">\n\t\t\t\t@if (message.data.config.customImageUrl) {\n\t\t\t\t<img [src]=\"message.data.config.customImageUrl\" alt=\"Alert icon\" />\n\t\t\t\t} @else {\n\t\t\t\t<i [class]=\"$any(message).data.iconClass\"></i>\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<div class=\"prConfirmDialog__details\">\n\t\t\t\t<!-- Title -->\n\t\t\t\t<h2 class=\"prConfirmDialog__title\">{{ message.header }}</h2>\n\n\t\t\t\t<!-- Subtitle / Message -->\n\t\t\t\t@if (message.message) {\n\t\t\t\t<p class=\"prConfirmDialog__subtitle\" [style.color]=\"$any(message).data.config.styles?.subtitleColor ?? '#555'\">{{ message.message }}</p>\n\t\t\t\t}\n\t\t\t</div>\n\n\t\t\t<!-- HTML Content -->\n\t\t\t@if (message.data.config.htmlContent) {\n\t\t\t<div class=\"prConfirmDialog__text\" [innerHTML]=\"$any(message).data.config.htmlContent\" [style.color]=\"$any(message).data.config.styles?.subtitleColor ?? '#555'\"></div>\n\t\t\t}\n\n\t\t\t<!-- Buttons -->\n\t\t\t<div class=\"prConfirmDialog__footer\">\n\t\t\t\t<!-- Confirm Button -->\n\t\t\t\t<p-button class=\"prButton\" [label]=\"message.data.confirmText\" (onClick)=\"onAccept()\" />\n\t\t\t\t<!-- Cancel Button -->\n\t\t\t\t@if (message.data.showCancelButton) {\n\t\t\t\t<p-button class=\"prButton\" [label]=\"message.data.cancelText\" severity=\"secondary\" [outlined]=\"true\" (onClick)=\"onReject()\" />\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t</ng-template>\n</p-confirmDialog>\n","import { HttpClient } from \"@angular/common/http\";\nimport { inject, Injectable, signal } from \"@angular/core\";\nimport { Guid } from \"guid-typescript\";\nimport { fromEvent, map, Observable, of, startWith, tap } from \"rxjs\";\nimport { FavoritePageMaintenanceResponse, FavoritePageSimpleResponse } from \"../dto/favoriteResponses\";\nimport { ConfigService } from \"./config.service\";\n\ninterface FavoritesUpdatedEventDetail {\n\tfavorites: FavoritePageSimpleResponse[];\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class GlobalFavoriteService {\n\tprivate configService = inject(ConfigService);\n\tprivate http = inject(HttpClient);\n\tprivate path = `${this.configService.environment?.securityPath}/favorite-page`;\n\tprivate readonly eventFavorites = \"FavoritesUpdatedEvent\";\n\tprivate _favorites = signal<FavoritePageSimpleResponse[]>([]);\n\n\tpublic favorites = this._favorites.asReadonly();\n\n\tconstructor() {\n\t\tthis.loadAllAndStore();\n\t\twindow.addEventListener(this.eventFavorites, this.onFavoritesUpdated);\n\t}\n\n\tpublic delete(guid: Guid): Observable<Guid> {\n\t\treturn this.http.delete<Guid>(`${this.path}/${guid}`).pipe(tap(() => this.loadAllAndStore()));\n\t}\n\n\tpublic getAll(): Observable<FavoritePageSimpleResponse[]> {\n\t\treturn this.http.get<FavoritePageSimpleResponse[]>(`${this.path}`);\n\t}\n\n\tpublic create(): Observable<FavoritePageMaintenanceResponse> {\n\t\treturn this.http.post<FavoritePageMaintenanceResponse>(`${this.path}`, {}).pipe(tap(() => this.loadAllAndStore()));\n\t}\n\n\tpublic loadAllAndStore() {\n\t\tthis.getAll()\n\t\t\t.pipe(tap(favorites => this.setFavorites(favorites)))\n\t\t\t.subscribe();\n\t}\n\n\tpublic setFavorites(favorites: FavoritePageSimpleResponse[]): void {\n\t\tthis._favorites.set([...favorites]);\n\t\tthis.emitFavoritesUpdatedEvent();\n\t}\n\n\tpublic removeFavoriteByPageUrl(pageUrl: string): void {\n\t\tconst normalizedPageUrl = pageUrl;\n\t\tconst filtered = this._favorites().filter(item => !this.matchesPage(item, normalizedPageUrl));\n\t\tthis._favorites.set(filtered);\n\t\tthis.emitFavoritesUpdatedEvent();\n\t}\n\n\tpublic isFavoriteByPageUrl(pageUrl: string): boolean {\n\t\tconst normalizedPageUrl = pageUrl;\n\t\treturn this._favorites().some(item => this.matchesPage(item, normalizedPageUrl));\n\t}\n\n\tpublic isFavoriteByPageRoot(pageRoot: string): boolean {\n\t\treturn this._favorites().some(item => item.pageRoot === pageRoot);\n\t}\n\n\tpublic removeFavoriteByPageRoot(pageRoot: string): Observable<void> {\n\t\tconst favorite = this._favorites().find(item => item.pageRoot === pageRoot);\n\t\tif (!favorite) return of(void 0);\n\t\treturn this.delete(Guid.parse(favorite.favoritePageID)).pipe(map(() => void 0));\n\t}\n\n\tpublic favoritesChanges(): Observable<FavoritePageSimpleResponse[]> {\n\t\treturn fromEvent<CustomEvent<FavoritesUpdatedEventDetail>>(window, this.eventFavorites).pipe(\n\t\t\tmap(event => event.detail.favorites),\n\t\t\tstartWith(this._favorites())\n\t\t);\n\t}\n\n\tprivate onFavoritesUpdated = (event: Event): void => {\n\t\tconst detail = (event as CustomEvent<FavoritesUpdatedEventDetail>).detail;\n\t\tif (!detail?.favorites) return;\n\t\tthis._favorites.set([...detail.favorites]);\n\t};\n\n\tprivate emitFavoritesUpdatedEvent(): void {\n\t\tconst event = new CustomEvent(this.eventFavorites, {\n\t\t\tdetail: { favorites: this._favorites() } satisfies FavoritesUpdatedEventDetail,\n\t\t});\n\t\twindow.dispatchEvent(event);\n\t}\n\n\tprivate matchesPage(item: FavoritePageSimpleResponse, value: string): boolean {\n\t\treturn item.pageUrl === value || item.pageRoot === value;\n\t}\n}\n","import { inject, Injectable } from \"@angular/core\";\nimport { distinctUntilChanged, map, Observable } from \"rxjs\";\nimport { GlobalFavoriteService } from \"../../services/globalFavorite.service\";\nimport { GlobalFeatureFlagService } from \"../../services/globalFeatureFlag.service\";\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class AddFavoritesService {\n\tprivate readonly favoritesService = inject(GlobalFavoriteService);\n\tprivate readonly featureFlagService = inject(GlobalFeatureFlagService);\n\n\tpublic addPageToFavorites(): Observable<void> {\n\t\treturn this.favoritesService.create().pipe(map(() => void 0));\n\t}\n\n\tpublic isPageFavorite(pageRoot?: string): Observable<boolean> {\n\t\tconst resolvedPageRoot = this.resolvePageRoot(pageRoot);\n\t\treturn this.favoritesService.favoritesChanges().pipe(\n\t\t\tmap(() => this.favoritesService.isFavoriteByPageRoot(resolvedPageRoot)),\n\t\t\tdistinctUntilChanged()\n\t\t);\n\t}\n\n\tpublic watchPageFavorite(pageRoot?: string): Observable<boolean> {\n\t\tconst resolvedPageRoot = this.resolvePageRoot(pageRoot);\n\t\treturn this.favoritesService.favoritesChanges().pipe(\n\t\t\tmap(() => this.favoritesService.isFavoriteByPageRoot(resolvedPageRoot)),\n\t\t\tdistinctUntilChanged()\n\t\t);\n\t}\n\n\tpublic removeFromFavorites(pageRoot?: string): Observable<void> {\n\t\tconst resolvedPageRoot = this.resolvePageRoot(pageRoot);\n\t\treturn this.favoritesService.removeFavoriteByPageRoot(resolvedPageRoot);\n\t}\n\n\tprivate resolvePageRoot(pageRoot?: string): string {\n\t\treturn pageRoot?.trim() || this.featureFlagService.GetPageRoot();\n\t}\n}\n","import { NgClass } from \"@angular/common\";\nimport { Component, DestroyRef, inject, OnInit, output } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { Button } from \"primeng/button\";\nimport { TermPipe } from \"../../pipes/term.pipes\";\nimport { GlobalTermService } from \"../../services/globalTerm.service\";\nimport { AddFavoritesService } from \"./add-favorites.service\";\n\nconst ICON_ON = \"icon-favorites-on\";\nconst ICON_OFF = \"icon-favorites-off\";\n\n@Component({\n\tselector: \"intelica-add-favorites\",\n\timports: [Button, TermPipe, NgClass],\n\ttemplateUrl: \"./add-favorites.component.html\",\n})\nexport class AddFavoritesComponent implements OnInit {\n\treadonly termService = inject(GlobalTermService);\n\tprivate readonly addFavoriteService = inject(AddFavoritesService);\n\tprivate readonly destroyRef = inject(DestroyRef);\n\n\treadonly favoriteChanged = output<boolean>();\n\n\tprivate isFavorite = false;\n\tpublic isToggling = false;\n\tpublic iconClass = ICON_OFF;\n\n\tngOnInit(): void {\n\t\tthis.loadInitialState();\n\t}\n\n\ttoggleFavorite(): void {\n\t\tif (this.isToggling) return;\n\t\tthis.isToggling = true;\n\t\tconst nextFavorite = !this.isFavorite;\n\t\tconst action$ = this.isFavorite ? this.addFavoriteService.removeFromFavorites() : this.addFavoriteService.addPageToFavorites();\n\n\t\taction$.subscribe({\n\t\t\tnext: () => {\n\t\t\t\tthis.favoriteChanged.emit(nextFavorite);\n\t\t\t},\n\t\t\tcomplete: () => (this.isToggling = false),\n\t\t\terror: () => (this.isToggling = false),\n\t\t});\n\t}\n\n\tprivate loadInitialState(): void {\n\t\tthis.addFavoriteService\n\t\t\t.watchPageFavorite()\n\t\t\t.pipe(takeUntilDestroyed(this.destroyRef))\n\t\t\t.subscribe({\n\t\t\t\tnext: isFavorite => {\n\t\t\t\t\tthis.isFavorite = isFavorite;\n\t\t\t\t\tthis.updateIcon();\n\t\t\t\t},\n\t\t\t});\n\t}\n\n\tprivate updateIcon(): void {\n\t\tthis.iconClass = this.isFavorite ? ICON_ON : ICON_OFF;\n\t}\n}\n","<p-button class=\"prButton\" severity=\"secondary\" [disabled]=\"isToggling\" (onClick)=\"toggleFavorite()\">\n\t<i class=\"icon p-button-icon-left\" [ngClass]=\"iconClass\" pButtonIcon></i>\n\t<span pButtonLabel>{{ \"ADD_TO_FAVORITES\" | term : termService.languageCode }}</span>\n</p-button>\n","import { CommonModule } from \"@angular/common\";\nimport { Component, effect, inject, input, output } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { Button } from \"primeng/button\";\nimport { MultiSelect } from \"primeng/multiselect\";\nimport { Popover } from \"primeng/popover\";\nimport { Select } from \"primeng/select\";\nimport { TermPipe } from \"../../pipes/term.pipes\";\nimport { GlobalTermService } from \"../../services/globalTerm.service\";\nimport { ContextSelectorClientDto, ContextSelectorCountryDto, ContextSelectorRegionDto, ContextSelectorSelectionDto } from \"./context-selector.dto\";\n\n@Component({\n\tselector: \"itl-context-selector\",\n\timports: [CommonModule, FormsModule, Button, Popover, MultiSelect, Select, TermPipe],\n\ttemplateUrl: \"./context-selector.component.html\",\n})\nexport class ClientContextSelector {\n\treadonly regions = input<ContextSelectorRegionDto[]>([]);\n\treadonly countries = input<ContextSelectorCountryDto[]>([]);\n\treadonly clients = input<ContextSelectorClientDto[]>([]);\n\treadonly selection = input<Partial<ContextSelectorSelectionDto> | null>(null);\n\n\treadonly showRegion = input<boolean>(true);\n\treadonly showCountry = input<boolean>(true);\n\treadonly showClient = input<boolean>(true);\n\n\treadonly buttonTerm = input<string>(\"Select Context\");\n\treadonly popoverTerm = input<string>(\"Select Region, Country and Client\");\n\treadonly regionTerm = input<string>(\"Region\");\n\treadonly countryTerm = input<string>(\"Country\");\n\treadonly clientTerm = input<string>(\"Client / Bank\");\n\treadonly regionPlaceholderTerm = input<string>(\"Select Region\");\n\treadonly countryPlaceholderTerm = input<string>(\"Select Country\");\n\treadonly clientPlaceholderTerm = input<string>(\"Select Client / Bank\");\n\n\treadonly selectionChange = output<ContextSelectorSelectionDto>();\n\treadonly regionChange = output<number | null>();\n\treadonly countriesChange = output<number[]>();\n\treadonly clientChange = output<number | null>();\n\n\treadonly globalTermService = inject(GlobalTermService);\n\n\tselectedRegionId: number | null = null;\n\tselectedCountryIds: number[] = [];\n\tselectedClientId: number | null = null;\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst incomingSelection = this.selection();\n\t\t\tif (!incomingSelection) return;\n\t\t\tthis.selectedRegionId = incomingSelection.regionId ?? null;\n\t\t\tthis.selectedCountryIds = [...(incomingSelection.countryIds ?? [])];\n\t\t\tthis.selectedClientId = incomingSelection.clientId ?? null;\n\t\t\tthis.ensureValidSelection();\n\t\t});\n\t}\n\n\tget filteredCountries(): ContextSelectorCountryDto[] {\n\t\tif (!this.showRegion() || !this.selectedRegionId) {\n\t\t\treturn this.countries();\n\t\t}\n\n\t\treturn this.countries().filter(country => !country.regionId || country.regionId === this.selectedRegionId);\n\t}\n\n\tget filteredClients(): ContextSelectorClientDto[] {\n\t\tlet items = this.clients();\n\n\t\tif (this.showRegion() && this.selectedRegionId) {\n\t\t\titems = items.filter(client => !client.regionId || client.regionId === this.selectedRegionId);\n\t\t}\n\n\t\tif (this.showCountry() && this.selectedCountryIds.length > 0) {\n\t\t\titems = items.filter(client => {\n\t\t\t\tif (!client.countryIds || client.countryIds.length === 0) return true;\n\t\t\t\treturn client.countryIds.some(countryId => this.selectedCountryIds.includes(countryId));\n\t\t\t});\n\t\t}\n\n\t\treturn items;\n\t}\n\n\tonRegionChange(value: number | null): void {\n\t\tthis.selectedRegionId = value ?? null;\n\t\tthis.ensureValidSelection();\n\t\tthis.emitSelection(true, true, true);\n\t}\n\n\tonCountriesChange(value: number[] | null): void {\n\t\tthis.selectedCountryIds = value ?? [];\n\t\tthis.ensureValidSelection();\n\t\tthis.emitSelection(false, true, true);\n\t}\n\n\tonClientChange(value: number | null): void {\n\t\tthis.selectedClientId = value ?? null;\n\t\tthis.emitSelection(false, false, true);\n\t}\n\n\tprivate ensureValidSelection(): void {\n\t\tconst validCountryIds = new Set(this.filteredCountries.map(country => country.id));\n\t\tthis.selectedCountryIds = this.selectedCountryIds.filter(countryId => validCountryIds.has(countryId));\n\n\t\tconst selectedClientStillValid = this.filteredClients.some(client => client.id === this.selectedClientId);\n\t\tif (!selectedClientStillValid) {\n\t\t\tthis.selectedClientId = null;\n\t\t}\n\t}\n\n\tprivate emitSelection(emitRegion: boolean, emitCountries: boolean, emitClient: boolean): void {\n\t\tif (emitRegion) this.regionChange.emit(this.selectedRegionId);\n\t\tif (emitCountries) this.countriesChange.emit(this.selectedCountryIds);\n\t\tif (emitClient) this.clientChange.emit(this.selectedClientId);\n\n\t\tthis.selectionChange.emit({\n\t\t\tregionId: this.selectedRegionId,\n\t\t\tcountryIds: [...this.selectedCountryIds],\n\t\t\tclientId: this.selectedClientId,\n\t\t});\n\t}\n}\n","<div class=\"lyFilterbar__wrap\">\n\t<p-button class=\"prButton u-hide-adjacent\" (click)=\"popoverFilterLayout.toggle($event)\" severity=\"secondary\" label=\"{{ buttonTerm() | term: globalTermService.languageCode }}\" />\n\t<p-popover styleClass=\"prPopover prPopover--compact\" [style]=\"{ '--custom-width': '20.5rem' }\" [focusOnShow]=\"false\" #popoverFilterLayout>\n\t\t<div class=\"prPopover__header\">{{ popoverTerm() | term: globalTermService.languageCode }}</div>\n\t\t<div class=\"prPopover__body\">\n\t\t\t<div class=\"u-display-flex u-flex-column u-gap-sm\">\n\t\t\t\t@if (showRegion()) {\n\t\t\t\t\t<p-select\n\t\t\t\t\t\tclass=\"prSelect\"\n\t\t\t\t\t\t[options]=\"regions()\"\n\t\t\t\t\t\t[ngModel]=\"selectedRegionId\"\n\t\t\t\t\t\t(ngModelChange)=\"onRegionChange($event)\"\n\t\t\t\t\t\toptionValue=\"id\"\n\t\t\t\t\t\toptionLabel=\"label\"\n\t\t\t\t\t\tplaceholder=\"{{ regionPlaceholderTerm() | term: globalTermService.languageCode }}\"\n\t\t\t\t\t\tshowClear=\"true\"\n\t\t\t\t\t\tdropdownIcon=\"icon icon-arrow-down\"\n\t\t\t\t\t\tfilter=\"false\"\n\t\t\t\t\t\tfiltericon=\"icon icon-cancel\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\n\t\t\t\t@if (showCountry()) {\n\t\t\t\t\t<p-multiselect\n\t\t\t\t\t\tclass=\"prMultiselect\"\n\t\t\t\t\t\t[options]=\"filteredCountries\"\n\t\t\t\t\t\t[ngModel]=\"selectedCountryIds\"\n\t\t\t\t\t\t(ngModelChange)=\"onCountriesChange($event)\"\n\t\t\t\t\t\t[maxSelectedLabels]=\"3\"\n\t\t\t\t\t\toptionLabel=\"label\"\n\t\t\t\t\t\toptionValue=\"id\"\n\t\t\t\t\t\tplaceholder=\"{{ countryPlaceholderTerm() | term: globalTermService.languageCode }}\"\n\t\t\t\t\t\tshowClear=\"true\"\n\t\t\t\t\t\tdropdownIcon=\"icon icon-arrow-down\"\n\t\t\t\t\t\tshowToggleAll=\"false\"\n\t\t\t\t\t\tfilter=\"false\"\n\t\t\t\t\t\tfiltericon=\"icon icon-cancel\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\n\t\t\t\t@if (showClient()) {\n\t\t\t\t\t<p-select\n\t\t\t\t\t\tclass=\"prSelect\"\n\t\t\t\t\t\t[options]=\"filteredClients\"\n\t\t\t\t\t\t[ngModel]=\"selectedClientId\"\n\t\t\t\t\t\t(ngModelChange)=\"onClientChange($event)\"\n\t\t\t\t\t\toptionValue=\"id\"\n\t\t\t\t\t\toptionLabel=\"label\"\n\t\t\t\t\t\t[placeholder]=\"clientPlaceholderTerm()\"\n\t\t\t\t\t\tshowClear=\"true\"\n\t\t\t\t\t\tdropdownIcon=\"icon icon-arrow-down\"\n\t\t\t\t\t\tfilter=\"false\"\n\t\t\t\t\t\tfiltericon=\"icon icon-cancel\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t</p-popover>\n</div>\n","import { Component, inject } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\nimport { setCookie } from \"typescript-cookie\";\nimport { ConfigService } from \"../../services/config.service\";\nimport { CookieAttributesGeneral } from \"../../constants/cookieConfiguration.constants\";\n@Component({\n selector: \"security-setsesioninformation\",\n imports: [],\n template: \"\",\n})\nexport class SetsesioninformationComponent {\n private readonly ActivatedRoute = inject(ActivatedRoute);\n private readonly Http = inject(HttpClient);\n private readonly ConfigService = inject(ConfigService);\n constructor() {\n let businessUserID = this.ActivatedRoute.snapshot.params[\"id\"];\n const headers = new HttpHeaders({ \"Skip-Interceptor\": \"true\" });\n let url = `${this.ConfigService.environment?.authenticationPath}/Authenticate/ignore/auth/cache/${businessUserID}`;\n this.Http.get<AuthenticationResponse>(url, { headers }).subscribe(response => {\n let data = JSON.stringify(response.authenticationData);\n setCookie(\"token\", response.jwtToken, CookieAttributesGeneral);\n setCookie(\"refreshToken\", response.refreshToken, CookieAttributesGeneral);\n setCookie(\"data\", data, CookieAttributesGeneral);\n setCookie(\"businessUserClientGroupID\", response.businessUserClientGroupID, CookieAttributesGeneral);\n setCookie(\"language\", response.languageCode, CookieAttributesGeneral);\n if (response.clientID != null) setCookie(\"defaultClientID\", response.clientID, CookieAttributesGeneral);\n setCookie(\"defaultClientGroupID\", response.clientGroupID, CookieAttributesGeneral);\n response.businessUserAuthClient.forEach(element => {\n setCookie(element.authClientID, element.compressedPages, CookieAttributesGeneral);\n });\n setCookie(\"profile\", response.profile, CookieAttributesGeneral);\n setCookie(\"itl\", response.refreshToken, CookieAttributesGeneral);\n this.ConfigService.SetSessionInformation();\n window.location.href = window.location.origin;\n });\n }\n}\nexport interface AuthenticationResponse {\n jwtToken: string;\n refreshToken: string;\n valid: boolean;\n message: string;\n businessUserClientGroupID: string;\n callBack: string;\n clientID: string;\n clientGroupID: string;\n languageCode: string;\n authenticationData: AuthenticationData;\n businessUserAuthClient: BusinessUserPagesAuthFormated[];\n profile: string;\n}\nexport interface AuthenticationData {\n mame: string;\n email: string;\n businessUserID: string;\n businessUserProfile: string;\n}\nexport interface BusinessUserPagesAuthFormated {\n authClientID: string;\n compressedPages: string;\n}\n","import { Component, input, output, signal } from '@angular/core';\nimport { Breadcrumb } from \"primeng/breadcrumb\";\nimport { RouterLink } from \"@angular/router\";\nimport { Tooltip } from 'primeng/tooltip';\nimport { MenuItem } from 'primeng/api';\n\n@Component({\n selector: 'intelica-bread-crumb',\n imports: [Breadcrumb, RouterLink, Tooltip,],\n templateUrl: './bread-crumb.component.html'\n})\nexport class BreadCrumbComponent {\n fullItems = input<MenuItem[]>([]);\n itemClick = output<MenuItem>();\n}\n","<p-breadcrumb class=\"prBreadcrumb\" [model]=\"fullItems()\">\n <ng-template pTemplate=\"item\" let-item>\n <a [routerLink]=\"item.routerLink\" [pTooltip]=\"item.tooltip\" tooltipStyleClass=\"prTooltip\"\n [tooltipPosition]=\"item.tooltipPosition\" [tooltipStyleClass]=\"item.tooltipStyleClass\">\n <span>{{ item.label }}</span>\n </a>\n </ng-template>\n <ng-template pTemplate=\"separator\">\n <span class=\"breadcrumb-separator\">\n <i class=\"icon icon-arrow-right icon--xs\"></i>\n </span>\n </ng-template>\n</p-breadcrumb>","import { Component, input, output } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'intelica-title',\n imports: [Button],\n templateUrl: './title.component.html'\n})\nexport class TitleComponent {\n title = input<string>('');\n back = output<void>();\n}\n","<div class=\"ptSectionTitle\">\n <div class=\"ptSectionTitle__icon\">\n <p-button class=\"prButton\" icon=\"icon icon-nav-left\" (onClick)=\"back.emit()\" />\n </div>\n <div class=\"ptSectionTitle__content\">\n <div class=\"ptSectionTitle__title\">\n {{ title() }}\n </div>\n </div>\n</div>","import { HttpClient, HttpParams } from \"@angular/common/http\";\nimport { ElementRef, Injectable, WritableSignal, inject } from \"@angular/core\";\nimport { ConfigService } from \"./config.service\";\nimport { EmbedVisualCommand } from \"../dto/embed-visual-command\";\nimport { EmbedVisualUrlResponse } from \"../dto/embed-visual-url-response\";\nimport { createEmbeddingContext } from \"amazon-quicksight-embedding-sdk\";\nimport { firstValueFrom } from \"rxjs\";\n\nexport interface QuicksightVisualConfig {\n visualId: string;\n container: ElementRef;\n}\n@Injectable({\n providedIn: 'root',\n})\nexport class Shared {\n private readonly http = inject(HttpClient);\n private readonly configService = inject(ConfigService);\n private readonly path = `${this.configService.environment?.sharedPath}/Quicksight`;\n getEmbedUrl(dashboardId: string) {\n return this.http.get<{ embedUrl: string }>(`${this.path}/embed-url/${dashboardId}`);\n }\n getEmbedVisualUrl(request: EmbedVisualCommand) {\n let params = new HttpParams()\n .set('dashboardId', request.dashboardId)\n .set('sheetId', request.sheetId)\n .set('visualId', request.visualId);\n Object.entries(request.parameters).forEach(([key, values]) => {\n values.forEach(value => {\n params = params.append(`parameters[${key}]`, value);\n });\n });\n return this.http.get<EmbedVisualUrlResponse>(\n `${this.path}/embed-visual-url`,\n { params }\n );\n }\n getEmbedVisualUrlsAnonymous(request: EmbedVisualCommand) {\n let params = new HttpParams()\n .set('dashboardId', request.dashboardId)\n .set('sheetId', request.sheetId)\n .set('visualId', request.visualId);\n Object.entries(request.parameters).forEach(([key, values]) => {\n values.forEach(value => {\n params = params.append(`parameters[${key}]`, value);\n });\n });\n return this.http.get<EmbedVisualUrlResponse>(\n `${this.path}/embed-visual-anonymous`,\n { params }\n );\n }\n async createEmbedContext(embedUrl: string, container: HTMLElement, options?: { height?: string; width?: string }): Promise<void> {\n const embeddingContext = await createEmbeddingContext();\n await embeddingContext.embedDashboard({\n url: embedUrl,\n container,\n ...(options?.height && { height: options.height }),\n ...(options?.width && { width: options.width }),\n });\n }\n async embedDashboard(dashboardId: string, container: HTMLElement, options?: { height?: string; width?: string }): Promise<void> {\n const { embedUrl } = await firstValueFrom(this.getEmbedUrl(dashboardId));\n await this.createEmbedContext(embedUrl, container, options);\n }\n async createEmbedVisualContext(embedUrl: string, container: HTMLElement, options?: { height?: string; width?: string }): Promise<void> {\n const embeddingContext = await createEmbeddingContext();\n await embeddingContext.embedVisual({\n url: embedUrl,\n container,\n ...(options?.height && { height: options.height }),\n ...(options?.width && { width: options.width }),\n }, { scaleToContainer: true, fitToIframeWidth: false } as any);\n }\n async embedSequentialVisuals(dashboardId: string, sheetId: string, parameters: Record<string, string[]>, configs: QuicksightVisualConfig[], onVisualLoaded?: (visualId: string) => void\n ): Promise<void> {\n for (const config of configs) {\n config.container?.nativeElement?.replaceChildren();\n const { visual } = await firstValueFrom(\n this.getEmbedVisualUrl({ dashboardId, sheetId, visualId: config.visualId, parameters })\n );\n if (!visual) continue;\n await this.createEmbedVisualContext(visual.embedUrl, config.container.nativeElement);\n onVisualLoaded?.(config.visualId);\n }\n }\n}","import { Component, computed, effect, ElementRef, inject, QueryList, signal, ViewChildren } from '@angular/core';\nimport { Shared } from '../../services/shared';\nimport { ActivatedRoute } from '@angular/router';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'intelica-dashboard-qs',\n imports: [],\n templateUrl: './dashboard-qs.component.html'\n})\nexport class DashboardQsComponent {\n private readonly sharedService = inject(Shared);\n private readonly route = inject(ActivatedRoute);\n @ViewChildren('visualContainer') containers!: QueryList<ElementRef>;\n private readonly routeData = toSignal(this.route.data, { initialValue: this.route.snapshot.data });\n readonly dashboardId = computed(() => this.routeData()['dashboardId'] as string | undefined);\n readonly height = computed(() => (this.routeData()['height'] as string | undefined) ?? '700px');\n readonly isLoading = signal(true);\n private readonly viewReady = signal(false);\n\n constructor() {\n effect(() => {\n const id = this.dashboardId();\n if (!this.viewReady() || !id) return;\n this.EmbedDashboard(id);\n });\n }\n\n ngAfterViewInit(): void {\n this.viewReady.set(true);\n }\n\n async EmbedDashboard(dashboardId: string): Promise<void> {\n const container = this.containers.first?.nativeElement;\n if (!container) return;\n this.isLoading.set(true);\n try {\n await this.sharedService.embedDashboard(dashboardId, container);\n } catch (error) {\n console.error('Error embedding dashboard:', error);\n } finally {\n this.isLoading.set(false);\n }\n }\n}\n","<div #visualContainer [style.height]=\"height()\" [class.hidden]=\"isLoading()\"></div>","import { Directive, forwardRef, Input, OnChanges, SimpleChanges } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterDirective } from \"./filter.directive\";\nimport { FilterTypeEnum } from \"../../enums/filter-type.enum\";\n\n@Directive({\n\tselector: \"checkbox-filter\",\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => CheckboxFilterDirective),\n\t\t\tmulti: true\n\t\t},\n\t\t{\n\t\t\tprovide: FilterDirective,\n\t\t\tuseExisting: forwardRef(() => CheckboxFilterDirective)\n\t\t}\n\t],\n})\nexport class CheckboxFilterDirective extends FilterDirective implements OnChanges, ControlValueAccessor {\n\tconstructor() {\n\t\tsuper(FilterTypeEnum.Checkbox);\n\t}\n\t@Input() modeCheckBox: string = \"\";\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tthis.$changes.next(changes);\n\t}\n}\n","import {\n Directive,\n EventEmitter,\n forwardRef,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterDirective } from \"./filter.directive\";\nimport { FilterTypeEnum } from \"../../enums/filter-type.enum\";\nimport { DateMode } from \"../../constants/date-mode-options.constants\";\n\n@Directive({\n selector: \"date-filter\",\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateFilterDirective),\n multi: true,\n },\n {\n provide: FilterDirective,\n useExisting: forwardRef(() => DateFilterDirective),\n },\n ],\n})\nexport class DateFilterDirective\n extends FilterDirective\n implements OnChanges, ControlValueAccessor\n{\n constructor() {\n super(FilterTypeEnum.Date);\n }\n @Input() format: string = \"MM-yyyy\";\n @Input() start: string = \"year\";\n @Input() depth: string = \"Year\";\n @Input() strictMode: boolean = false;\n @Input() min: Date = new Date(1970, 0, 1);\n @Input() max: Date = new Date();\n @Input() showTodayButton: boolean = false;\n @Input() allowEdit: boolean = true;\n @Input() range: boolean = false;\n @Input() isReadOnly: boolean = false;\n @Input() dateMode: DateMode = \"day\";\n @Output() open: EventEmitter<any> = new EventEmitter<any>();\n @Output() navigated: EventEmitter<any> = new EventEmitter<any>();\n ngOnChanges(changes: SimpleChanges): void {\n this.$changes.next(changes);\n }\n}\n","import { Directive, forwardRef, Input, OnChanges, SimpleChanges } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterDirective } from \"./filter.directive\";\nimport { FilterTypeEnum } from \"../../enums/filter-type.enum\";\n\n@Directive({\n\tselector: \"select-detail-filter\",\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => SelectDetailFilterDirective),\n\t\t\tmulti: true\n\t\t},\n\t\t{\n\t\t\tprovide: FilterDirective,\n\t\t\tuseExisting: forwardRef(() => SelectDetailFilterDirective)\n\t\t}\n\t],\n})\nexport class SelectDetailFilterDirective extends FilterDirective implements OnChanges, ControlValueAccessor {\n\tconstructor() {\n\t\tsuper(FilterTypeEnum.SelectDetail);\n\t}\n\n\t@Input() id: string = \"\";\n\t@Input() fieldText: string = \"\";\n\t@Input() fieldValue: string = \"\";\n\t@Input() fieldDetail: string = \"\";\n\t@Input() data: any[] = [];\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tthis.$changes.next(changes);\n\t}\n}\n","import { Directive, forwardRef, Input, OnChanges } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterDirective } from \"./filter.directive\";\nimport { FilterTypeEnum } from \"../../enums/filter-type.enum\";\n\n@Directive({\n\tselector: \"select-filter\",\n\tproviders: [\n\t {\n\t\tprovide: NG_VALUE_ACCESSOR,\n\t\tuseExisting: forwardRef(() => SelectFilterDirective),\n\t\tmulti: true\n\t },\n\t {\n\t\tprovide: FilterDirective,\n\t\tuseExisting: forwardRef(() => SelectFilterDirective)\n\t }\n\t]\n })\nexport class SelectFilterDirective extends FilterDirective implements OnChanges, ControlValueAccessor {\n\tconstructor() {\n\t\tsuper(FilterTypeEnum.Select);\n\t}\n\n\t@Input() options: any[] = [];\n\t@Input() optionLabel: string = \"text\";\n\t@Input() optionValue: string = \"value\";\n\t@Input() showFilter: boolean = false;\n\t@Input() showAll: boolean = false;\n\t@Input() multiple: boolean = false;\n\t@Input() popupWidth: string = \"auto\";\n\t@Input() appendTo: string = \"\";\n\t@Input() panelStyleClass: string = \"prSelect\";\n\t@Input() allText: string = \"All\";\n\t@Input() maxSelectedLabels: number = 3;\n\t@Input() virtualScroll: boolean = false;\n\t@Input() selectedItemsLabel: string = \"Selected\";\n\t@Input() group: boolean = false;\n\t@Input() resetFilterOnHide: boolean = true;\n\n\tngOnChanges(changes: any): void {\n\t\tthis.$changes.next(changes);\n\t}\n}\n","import { ContentChild, Directive, forwardRef } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterDirective } from \"./filter.directive\";\nimport { FilterTypeEnum } from \"../../enums/filter-type.enum\";\n\n@Directive({\n\tselector: \"template-filter\",\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => TemplateDirective),\n\t\t\tmulti: true\n\t\t},\n\t\t{\n\t\t\tprovide: FilterDirective,\n\t\t\tuseExisting: forwardRef(() => TemplateDirective)\n\t\t}\n\t],\n})\nexport class TemplateDirective extends FilterDirective implements ControlValueAccessor {\n\tconstructor() {\n\t\tsuper(FilterTypeEnum.Template);\n\t}\n\t@ContentChild(\"content\") content!: any;\n}\n","import { Directive, forwardRef, OnChanges, SimpleChanges } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterDirective } from \"./filter.directive\";\nimport { FilterTypeEnum } from \"../../enums/filter-type.enum\";\n\n@Directive({\n\tselector: \"view-text-area-filter\",\n\tproviders: [\n\t\t {\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => TextAreaFilterDirective),\n\t\t\tmulti: true\n\t\t },\n\t\t {\n\t\t\tprovide: FilterDirective,\n\t\t\tuseExisting: forwardRef(() => TextAreaFilterDirective)\n\t\t }\n\t\t],\n})\nexport class TextAreaFilterDirective extends FilterDirective implements OnChanges, ControlValueAccessor {\n\tconstructor() {\n\t\tsuper(FilterTypeEnum.TextArea);\n\t}\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tthis.$changes.next(changes);\n\t}\n}\n","import { Directive, forwardRef, OnChanges, SimpleChanges } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterDirective } from \"./filter.directive\";\nimport { FilterTypeEnum } from \"../../enums/filter-type.enum\";\n\n@Directive({\n\tselector: \"text-filter\",\n\tproviders: [\n\t\t{\n\t\t provide: NG_VALUE_ACCESSOR,\n\t\t useExisting: forwardRef(() => TextFilterDirective),\n\t\t multi: true\n\t\t},\n\t\t{\n\t\t provide: FilterDirective,\n\t\t useExisting: forwardRef(() => TextFilterDirective)\n\t\t}\n\t ],\n\tstandalone: true,\n})\nexport class TextFilterDirective extends FilterDirective implements OnChanges, ControlValueAccessor {\n\tconstructor() {\n\t\tsuper(FilterTypeEnum.Text);\n\t}\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tthis.$changes.next(changes);\n\t}\n}\n","import { Directive, forwardRef, Input, OnChanges, SimpleChanges } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { FilterDirective } from \"./filter.directive\";\nimport { FilterTypeEnum } from \"../../enums/filter-type.enum\";\n\n@Directive({\n\tselector: \"text-range-filter\",\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => TextRangeFilterDirective),\n\t\t\tmulti: true\n\t\t},\n\t\t{\n\t\t\tprovide: FilterDirective,\n\t\t\tuseExisting: forwardRef(() => TextRangeFilterDirective)\n\t\t}\n\t],\n})\nexport class TextRangeFilterDirective extends FilterDirective implements OnChanges, ControlValueAccessor {\n\tconstructor() {\n\t\tsuper(FilterTypeEnum.TextRange);\n\t}\n\n\t@Input() minRange?: string = \"\";\n\t@Input() maxRange?: string = \"\";\n\t@Input() minLabel: string = \"\";\n\t@Input() maxLabel: string = \"\";\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tthis.$changes.next(changes);\n\t}\n}\n","import { Directive, HostListener, Input, Optional, Host } from \"@angular/core\";\nimport { TableComponent } from \"../../components/table/table.component\";\n\n@Directive({\n selector: \"[intelicaCellCheckbox]\",\n standalone: true,\n})\nexport class IntelicaCellCheckboxDirective {\n @Input(\"intelicaCellCheckbox\") field!: string;\n @Input(\"intelicaCellCheckboxRow\") row!: any;\n\n constructor(@Optional() @Host() private table: TableComponent<any>) {}\n\n // ngModel (Angular forms)\n @HostListener(\"ngModelChange\", [\"$event\"])\n onNgModelChange(val: boolean) {\n if (!this.table || !this.field || !this.row) return;\n this.row[this.field] = val;\n this.table.recomputeHeaderState(this.field);\n }\n\n // onChange (PrimeNG p-checkbox)\n @HostListener(\"onChange\", [\"$event\"])\n onPrimeChange(evt: any) {\n const val = !!evt?.checked;\n this.onNgModelChange(val);\n }\n}\n","import { InjectionToken } from \"@angular/core\";\nimport { AlertButtonMode, AlertType } from \"../enums/alert-type.enum\";\n\n/**\n * Configuration options for alert buttons.\n */\nexport interface AlertButtonConfig {\n\t/** Text to display on the confirm/OK button */\n\tconfirmText?: string;\n\t/** Text to display on the cancel button */\n\tcancelText?: string;\n}\n\n/**\n * Style configuration for customizing alert appearance.\n */\nexport interface AlertStyleConfig {\n\t/** Background color of the icon container */\n\ticonBackgroundColor?: string;\n\t/** Color of the icon */\n\ticonColor?: string;\n\t/** Color of the title text */\n\ttitleColor?: string;\n\t/** Color of the subtitle/message text */\n\tsubtitleColor?: string;\n\t/** Background color of the confirm button */\n\tconfirmButtonColor?: string;\n\t/** Text color of the confirm button */\n\tconfirmButtonTextColor?: string;\n\t/** Background color of the cancel button */\n\tcancelButtonColor?: string;\n\t/** Text color of the cancel button */\n\tcancelButtonTextColor?: string;\n\t/** Width of the dialog (e.g., '400px', '30rem') */\n\twidth?: string;\n}\n\n/**\n * Complete configuration options for displaying an alert.\n */\nexport interface AlertConfig {\n\t/** The type of alert (warning, success, error) */\n\ttype: AlertType;\n\t/** Main title text displayed in the alert */\n\ttitle: string;\n\t/** Optional subtitle/message displayed below the title */\n\tsubtitle?: string;\n\t/** Button configuration mode */\n\tbuttonMode?: AlertButtonMode;\n\t/** Custom button text configuration */\n\tbuttons?: AlertButtonConfig;\n\t/** Whether to show the close (X) button */\n\tshowCloseButton?: boolean;\n\t/** Optional HTML content to display instead of subtitle */\n\thtmlContent?: string;\n\t/** Optional custom CSS class for the popup */\n\tcustomClass?: string;\n\t/** Custom style configuration */\n\tstyles?: AlertStyleConfig;\n\t/** PrimeIcon class for custom icon (e.g., 'pi pi-check') */\n\tcustomIcon?: string;\n\t/** Custom image URL for the icon */\n\tcustomImageUrl?: string;\n\tsize?: \"sm\" | \"md\" | \"lg\";\n}\n\n/**\n * Result returned after an alert is closed.\n */\nexport interface AlertResult {\n\t/** Whether the user confirmed the alert */\n\tisConfirmed: boolean;\n\t/** Whether the user clicked cancel */\n\tisCancelled: boolean;\n\t/** Whether the alert was dismissed (closed via X button or clicking outside) */\n\tisDismissed: boolean;\n}\n\n/**\n * Default configuration values for alerts.\n */\nexport const ALERT_DEFAULTS: Partial<AlertConfig> = {\n\tbuttonMode: AlertButtonMode.OK_ONLY,\n\tshowCloseButton: true,\n\tbuttons: {\n\t\tconfirmText: \"Ok\",\n\t\tcancelText: \"Cancelar\",\n\t},\n};\n\n/**\n * Configuration for each alert type.\n * - `titleColor`: Color for the alert title\n * - `icon`: PrimeIcon class (e.g., 'pi pi-exclamation-triangle')\n * - `iconBackgroundColor`: Background color for the icon container\n * - `iconColor`: Color of the icon itself\n * - `imageUrl`: Custom image/SVG path (takes precedence over `icon` if defined)\n */\nexport interface AlertTypeConfig {\n\ttitleColor: string;\n\ticon?: string;\n\ticonBackgroundColor?: string;\n\ticonColor?: string;\n\timageUrl?: string;\n}\n\n/**\n * Paths to custom SVG icons for alerts.\n * Icons should be placed in: public/assets/icons/alerts/\n */\nexport const ALERT_ICON_PATHS = {\n\terror: \"/assets/icons/alerts/alert-error.svg\",\n\t// warning: \"/assets/icons/alerts/alert-warning.svg\",\n\t// success: \"/assets/icons/alerts/alert-success.svg\",\n};\n\n/**\n * InjectionToken to override the default icon CSS class per alert type.\n * Provide a Partial<Record<AlertType, string>> to customize icons project-wide.\n *\n * Example (app.config.ts):\n * { provide: ALERT_ICON_OVERRIDES, useValue: {\n * [AlertType.SUCCESS]: 'icon icon-success',\n * [AlertType.WARNING]: 'icon icon-warning',\n * [AlertType.ERROR]: 'icon icon-alert',\n * }}\n */\nexport const ALERT_ICON_OVERRIDES = new InjectionToken<Partial<Record<AlertType, string>>>(\"ALERT_ICON_OVERRIDES\");\n\n/**\n * Centralized configuration for each alert type using PrimeNG icons.\n */\nexport const ALERT_TYPE_CONFIG: Record<AlertType, AlertTypeConfig> = {\n\t[AlertType.WARNING]: {\n\t\ttitleColor: \"#c27d00\",\n\t\ticon: \"icon icon-warning\",\n\t\ticonBackgroundColor: \"#fff3cd\",\n\t\ticonColor: \"#c27d00\",\n\t},\n\t[AlertType.SUCCESS]: {\n\t\ttitleColor: \"#126629\",\n\t\ticon: \"icon icon-success\",\n\t\ticonBackgroundColor: \"#d4edda\",\n\t\ticonColor: \"#126629\",\n\t},\n\t[AlertType.ERROR]: {\n\t\ttitleColor: \"#960d0d\",\n\t\ticon: \"icon icon-alert\",\n\t\ticonBackgroundColor: \"#f8d7da\",\n\t\ticonColor: \"#960d0d\",\n\t},\n};\n","export class PageInformation {\n\tpageTitle: string;\n\tpageRoot: string | undefined;\n\tconstructor(pageTitle: string, pageRoot: string | undefined) {\n\t\tthis.pageTitle = pageTitle;\n\t\tthis.pageRoot = pageRoot;\n\t}\n}\n","import * as XLSX from \"xlsx\";\nimport { Alignment, Workbook, Worksheet } from \"exceljs\";\nimport { saveAs } from \"file-saver\";\nimport { Injectable } from \"@angular/core\";\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class HtmlToExcelService {\n\tExportTOExcel(idTabla: string, html: string, filename: string, tabname: string, extension: string) {\n\t\tlet Table = document.getElementById(idTabla);\n\t\tif (Table == null) return;\n\t\tTable.innerHTML = \"\";\n\t\tTable.innerHTML += html;\n\t\tconst ws: XLSX.WorkSheet = XLSX.utils.table_to_sheet(Table, { raw: false });\n\t\tconst wb: XLSX.WorkBook = XLSX.utils.book_new();\n\t\tXLSX.utils.book_append_sheet(wb, ws, tabname);\n\t\tXLSX.writeFile(wb, filename + \".\" + extension);\n\t}\n\tprivate readonly Logo: string =\n\t\t\"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\";\n\tprivate readonly ColumnAligment: Partial<Alignment> = {\n\t\tvertical: \"middle\",\n\t\thorizontal: \"center\",\n\t\twrapText: true,\n\t};\n\tasync ExportToExcel(\n\t\texcelName: string,\n\t\treportTitle: string,\n\t\tfilterTitle: string,\n\t\trowsSerializate: string,\n\t\tcolumns: IExcelColumnName[],\n\t\tfilters: IFilter[],\n\t\tsubtitles: string[] = [],\n\t\tshowTotalRow: boolean = false,\n\t\theaderGroups: IExcelHeaderGroup[] = []\n\t) {\n\t\tconst workbook = new Workbook();\n\t\tconst worksheet = workbook.addWorksheet(reportTitle);\n\t\tworksheet.views = [{ showGridLines: false }];\n\t\tconst imageId = workbook.addImage({\n\t\t\tbase64: this.Logo,\n\t\t\textension: \"png\",\n\t\t});\n\t\tthis.SetReportPage(rowsSerializate, worksheet, columns, imageId, subtitles, showTotalRow, headerGroups);\n\t\tthis.SetTitle(worksheet, reportTitle);\n\t\tif (filters.length > 0) {\n\t\t\tconst worksheetFilter = workbook.addWorksheet(filterTitle);\n\t\t\tworksheetFilter.views = [{ showGridLines: false }];\n\t\t\tthis.SetFilterPage(filterTitle, worksheetFilter, filters);\n\t\t}\n\t\tconst buffer = await workbook.xlsx.writeBuffer();\n\t\tsaveAs(new Blob([buffer]), excelName);\n\t}\n\tprivate SetTitle(worksheet: Worksheet, reportTitle: string) {\n\t\tworksheet.mergeCells(\"D1:I5\");\n\t\tconst titleCell = worksheet.getCell(\"D1\");\n\t\ttitleCell.value = reportTitle;\n\t\ttitleCell.font = {\n\t\t\tname: \"Arial\",\n\t\t\tbold: true,\n\t\t\tsize: 20,\n\t\t\tcolor: { argb: \"203764\" },\n\t\t};\n\t\ttitleCell.alignment = this.ColumnAligment;\n\t}\n\tprivate SetReportPage(\n\t\trowsSerializate: string,\n\t\tworksheet: Worksheet,\n\t\tcolumns: IExcelColumnName[],\n\t\timageId: number,\n\t\tsubtitles: string[] = [],\n\t\tshowTotalRow: boolean = false,\n\t\theaderGroups: IExcelHeaderGroup[] = []\n\t) {\n\t\tlet columnsCell: string[] = [];\n\t\tlet rows = JSON.parse(rowsSerializate);\n\t\tlet isHeaderGood = headerGroups.length > 0;\n\t\tconst imageRows = 5;\n\t\tconst numberRows = rows.length;\n\t\tfor (let i = 0; i < subtitles.length + imageRows; i++) {\n\t\t\tworksheet.addRow([\"\"]);\n\t\t}\n\t\tlet startRow = imageRows + 1 + subtitles.length;\n\t\tconst groupedIndices = new Set<number>();\n\t\tif (isHeaderGood) {\n\t\t\tfor (const group of headerGroups) {\n\t\t\t\tconst startChar = this.GetExcelColumnLetter(group.startColumn);\n\t\t\t\tconst endChar = this.GetExcelColumnLetter(group.endColumn);\n\t\t\t\tconst range = `${startChar}${startRow}:${endChar}${startRow}`;\n\t\t\t\tworksheet.mergeCells(range);\n\t\t\t\tconst cellGroup: string = `${startChar}${startRow}`;\n\t\t\t\tconst cell = worksheet.getCell(cellGroup);\n\t\t\t\tcell.value = group.name;\n\t\t\t\tcell.font = {\n\t\t\t\t\tname: \"Arial\",\n\t\t\t\t\tbold: true,\n\t\t\t\t\tsize: 10,\n\t\t\t\t\tcolor: { argb: \"FFFFFF\" },\n\t\t\t\t};\n\t\t\t\tcell.fill = {\n\t\t\t\t\ttype: \"pattern\",\n\t\t\t\t\tpattern: \"solid\",\n\t\t\t\t\tfgColor: { argb: \"17375e\" },\n\t\t\t\t};\n\t\t\t\tcell.alignment = {\n\t\t\t\t\tvertical: \"middle\",\n\t\t\t\t\thorizontal: \"center\",\n\t\t\t\t\twrapText: true,\n\t\t\t\t};\n\t\t\t\tfor (let i = group.startColumn; i <= group.endColumn; i++) {\n\t\t\t\t\tgroupedIndices.add(i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (let i = 0; i < columns.length; i++) {\n\t\t\tconst colLetter = this.GetExcelColumnLetter(i);\n\t\t\tconst topCell = `${colLetter}${startRow}`;\n\t\t\tconst bottomCell = `${colLetter}${isHeaderGood ? startRow + 1 : startRow}`;\n\t\t\tif (groupedIndices.has(i)) {\n\t\t\t\tcolumnsCell.push(bottomCell);\n\t\t\t\tworksheet.getCell(bottomCell).value = columns[i].displayColumnName;\n\t\t\t\tworksheet.getCell(bottomCell).alignment = {\n\t\t\t\t\tvertical: \"middle\",\n\t\t\t\t\thorizontal: \"center\",\n\t\t\t\t\twrapText: true,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tworksheet.mergeCells(`${topCell}:${bottomCell}`);\n\t\t\t\tconst cell = worksheet.getCell(topCell);\n\t\t\t\tcell.value = columns[i].displayColumnName;\n\t\t\t\tcell.font = {\n\t\t\t\t\tname: \"Arial\",\n\t\t\t\t\tbold: true,\n\t\t\t\t\tsize: 10,\n\t\t\t\t\tcolor: { argb: \"FFFFFF\" },\n\t\t\t\t};\n\t\t\t\tcell.alignment = this.ColumnAligment;\n\t\t\t\tcell.fill = {\n\t\t\t\t\ttype: \"pattern\",\n\t\t\t\t\tpattern: \"solid\",\n\t\t\t\t\tfgColor: { argb: \"17375e\" },\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\tif (isHeaderGood) startRow += 2;\n\t\telse startRow += 1;\n\t\tif (showTotalRow) {\n\t\t\tconst sums = columns.map(col => {\n\t\t\t\tif (col.columnName === \"\") return \"Total\";\n\t\t\t\tif (!col.totalRowValue) return null;\n\t\t\t\treturn col.totalRowValue ? { formula: `\"${col.totalRowValue}\"`, result: col.totalRowValue } : null;\n\t\t\t});\n\t\t\tconst insertedRow = worksheet.insertRow(startRow, sums);\n\t\t\tinsertedRow.eachCell((cell, colNumber) => {\n\t\t\t\tconst column = columns[colNumber - 1];\n\t\t\t\tcell.font = {\n\t\t\t\t\tname: \"Arial\",\n\t\t\t\t\tbold: true,\n\t\t\t\t\tsize: 10,\n\t\t\t\t\tcolor: { argb: \"FF7F00\" },\n\t\t\t\t};\n\t\t\t\tcell.alignment = {\n\t\t\t\t\tvertical: \"middle\",\n\t\t\t\t\thorizontal: (column?.alignHorizontal as \"distributed\" | \"justify\" | \"center\" | \"left\" | \"right\" | \"fill\" | \"centerContinuous\") ?? \"left\",\n\t\t\t\t};\n\t\t\t\tcell.border = { bottom: { style: \"thin\", color: { argb: \"FF7F00\" } } };\n\t\t\t\tif (typeof cell.value === \"number\") {\n\t\t\t\t\tcell.numFmt = \"0.00\";\n\t\t\t\t}\n\t\t\t});\n\t\t\tcolumns.forEach((col, index) => {\n\t\t\t\tconst cellAddress = `${this.GetExcelColumnLetter(index)}${startRow}`;\n\t\t\t\tconst cell = worksheet.getCell(cellAddress);\n\t\t\t\tcell.font = {\n\t\t\t\t\tname: \"Arial\",\n\t\t\t\t\tbold: true,\n\t\t\t\t\tsize: 10,\n\t\t\t\t\tcolor: { argb: \"FF7F00\" },\n\t\t\t\t};\n\t\t\t\tcell.alignment = {\n\t\t\t\t\tvertical: \"middle\",\n\t\t\t\t\thorizontal: (col.alignHorizontal as \"distributed\" | \"justify\" | \"center\" | \"left\" | \"right\" | \"fill\" | \"centerContinuous\") ?? \"left\",\n\t\t\t\t};\n\t\t\t\tcell.border = { bottom: { style: \"thin\", color: { argb: \"FF7F00\" } } };\n\t\t\t});\n\t\t\tstartRow++;\n\t\t}\n\t\t//Inserción de filas\n\t\tfor (let rowIndex = 0; rowIndex < numberRows; rowIndex++) {\n\t\t\tconst rowValues: string[] = [];\n\t\t\tfor (let colIndex = 0; colIndex < columns.length; colIndex++) {\n\t\t\t\trowValues.push(colIndex === 0 ? `${rowIndex + 1}` : rows[rowIndex][columns[colIndex].columnName] ?? \"\");\n\t\t\t}\n\t\t\tconst insertedRow = worksheet.addRow(rowValues);\n\t\t\tinsertedRow.eachCell((cell, colNumber) => {\n\t\t\t\tconst col = columns[colNumber - 1];\n\t\t\t\tif (col.formatNumber) {\n\t\t\t\t\tcell.numFmt = this.GetNumberFormat(col.formatNumber);\n\t\t\t\t\tcell.value = Number(cell.value);\n\t\t\t\t}\n\n\t\t\t\tcell.alignment = {\n\t\t\t\t\tvertical: \"middle\",\n\t\t\t\t\thorizontal: (col.alignHorizontal as Alignment[\"horizontal\"]) ?? \"left\",\n\t\t\t\t\twrapText: true,\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t\t//Formato nombre de columnas\n\t\tcolumnsCell.forEach(cellRef => {\n\t\t\tconst cell = worksheet.getCell(cellRef);\n\t\t\tcell.fill = {\n\t\t\t\ttype: \"pattern\",\n\t\t\t\tpattern: \"solid\",\n\t\t\t\tfgColor: { argb: \"17375e\" },\n\t\t\t};\n\t\t\tcell.font = {\n\t\t\t\tname: \"Arial\",\n\t\t\t\tbold: true,\n\t\t\t\tsize: 10,\n\t\t\t\tcolor: { argb: \"FFFFFF\" },\n\t\t\t};\n\t\t\tcell.alignment = this.ColumnAligment;\n\t\t});\n\t\t//Formato de filas\n\t\tconst firstDataRow = startRow;\n\t\tworksheet.eachRow((row, rowIndex) => {\n\t\t\tif (rowIndex < firstDataRow) return;\n\t\t\tconst isEven = (rowIndex - firstDataRow) % 2 === 0;\n\t\t\trow.eachCell(cell => {\n\t\t\t\tif (!isEven) {\n\t\t\t\t\tcell.fill = {\n\t\t\t\t\t\ttype: \"pattern\",\n\t\t\t\t\t\tpattern: \"solid\",\n\t\t\t\t\t\tfgColor: { argb: \"D9D9D9\" },\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcell.font = {\n\t\t\t\t\tname: \"Arial\",\n\t\t\t\t\tsize: 10,\n\t\t\t\t\tcolor: { argb: \"203764\" },\n\t\t\t\t};\n\t\t\t});\n\t\t});\n\t\t//Logo intelica\n\t\tworksheet.addImage(imageId, {\n\t\t\ttl: { col: 0.5, row: 1.5 },\n\t\t\text: { width: 218, height: 58 },\n\t\t\teditAs: \"absolute\",\n\t\t});\n\t\t//Subtitulos: Se inserta al final para evitar altere el autoajuste de las columnas\n\t\tfor (let i = 0; i < subtitles.length; i++) {\n\t\t\tconst range = `A${6 + i}:${this.GetExcelColumnLetter(columns.length - 1)}${6 + i}`;\n\t\t\tworksheet.mergeCells(range);\n\t\t\tconst cell = worksheet.getCell(`A${6 + i}`);\n\t\t\tcell.value = subtitles[i];\n\t\t\tcell.font = {\n\t\t\t\tname: \"Arial\",\n\t\t\t\tbold: true,\n\t\t\t\titalic: true,\n\t\t\t\tsize: 10,\n\t\t\t\tcolor: { argb: \"203764\" },\n\t\t\t};\n\t\t\tcell.alignment = {\n\t\t\t\tvertical: \"middle\",\n\t\t\t\thorizontal: \"left\",\n\t\t\t\twrapText: true,\n\t\t\t};\n\t\t}\n\t\tthis.AdjustColumnWidth(worksheet, columns);\n\t}\n\tprivate SetFilterPage(filterTitle: string, worksheetFilter: Worksheet, filters: IFilter[]) {\n\t\tlet widtFilter: number = 30;\n\t\tworksheetFilter.addRow([filterTitle]);\n\t\tworksheetFilter.mergeCells([\"A1\", \"B2\"]);\n\t\tworksheetFilter.columns.forEach(column => {\n\t\t\tcolumn.width = widtFilter;\n\t\t\tcolumn.alignment = this.ColumnAligment;\n\t\t\twidtFilter *= 3;\n\t\t});\n\t\t[\"A1\", \"B1\"].map(key => {\n\t\t\tworksheetFilter.getCell(key).fill = {\n\t\t\t\ttype: \"pattern\",\n\t\t\t\tpattern: \"solid\",\n\t\t\t\tfgColor: { argb: \"FF7F00\" },\n\t\t\t\tbgColor: { argb: \"FF7F00\" },\n\t\t\t};\n\t\t\tworksheetFilter.getCell(key).font = {\n\t\t\t\tname: \"Arial\",\n\t\t\t\tbold: true,\n\t\t\t\tsize: 12,\n\t\t\t\tcolor: { argb: \"FFFFFF\" },\n\t\t\t};\n\t\t});\n\t\tfilters.forEach((element, index) => {\n\t\t\tlet row = worksheetFilter.addRow([element.key, element.value]);\n\t\t\tlet color = index % 2 === 1 ? \"D9D9D9\" : \"FFFFFF\";\n\n\t\t\trow.eachCell(cell => {\n\t\t\t\tcell.fill = {\n\t\t\t\t\ttype: \"pattern\",\n\t\t\t\t\tpattern: \"solid\",\n\t\t\t\t\tfgColor: { argb: color },\n\t\t\t\t\tbgColor: { argb: color },\n\t\t\t\t};\n\t\t\t\tcell.font = {\n\t\t\t\t\tname: \"Arial\",\n\t\t\t\t\tbold: false,\n\t\t\t\t\tsize: 10,\n\t\t\t\t\tcolor: { argb: \"203764\" },\n\t\t\t\t};\n\t\t\t});\n\t\t});\n\t}\n\tprivate AdjustColumnWidth(worksheet: Worksheet, columns: IExcelColumnName[]) {\n\t\tworksheet.columns.forEach((column, index) => {\n\t\t\tif (!column.values) return;\n\t\t\tif (columns[index] == undefined) return;\n\t\t\tlet columnWidth = columns[index].width ?? Math.max(...column.values.map(v => (v ? v.toString().length : 0)).filter(v => typeof v === \"number\"), columns[index].displayColumnName.length) * 1.4;\n\t\t\tcolumn.width = Math.min(Math.max(columnWidth, 5), 100);\n\t\t});\n\t\tworksheet.eachRow((row, rowIndex) => {\n\t\t\tif (rowIndex === 1) return;\n\t\t\tlet maxLines = 1;\n\t\t\trow.eachCell((cell, colNumber) => {\n\t\t\t\tif (cell.value) {\n\t\t\t\t\tlet text = typeof cell.value === \"object\" ? cell.text : cell.value.toString();\n\t\t\t\t\tlet columnWidth = worksheet.getColumn(colNumber).width ?? 10;\n\t\t\t\t\tlet charsPerLine = columnWidth * 1.2;\n\t\t\t\t\tlet estimatedLines = Math.ceil(text.length / charsPerLine);\n\t\t\t\t\tmaxLines = Math.max(maxLines, estimatedLines);\n\t\t\t\t}\n\t\t\t});\n\t\t\trow.height = Math.min(Math.max(15 * maxLines, 15), 30);\n\t\t});\n\t}\n\tasync ExportToExcelRawData({ excelName, reportTitle, filterTitle, rowsSerializate, columns, filters, orderColumn = false }: ExportExcelCommand): Promise<void> {\n\t\tconst workbook = new Workbook();\n\t\tconst worksheet = workbook.addWorksheet(reportTitle);\n\t\tconst rows = JSON.parse(rowsSerializate);\n\t\tworksheet.views = [{ showGridLines: false }];\n\t\tconst allColumns = orderColumn ? [{ displayColumnName: \"N°\" }, ...columns] : columns;\n\t\tallColumns.forEach((col, index) => {\n\t\t\tconst columnLetter = this.GetExcelColumnLetter(index);\n\t\t\tconst headerCell = worksheet.getCell(`${columnLetter}1`);\n\t\t\theaderCell.value = col.displayColumnName;\n\t\t\theaderCell.alignment = { horizontal: \"center\", vertical: \"middle\" };\n\t\t\theaderCell.font = { name: \"Arial\", bold: true, size: 10 };\n\t\t});\n\t\tconst maxLengths = allColumns.map(col => col.displayColumnName.length);\n\t\trows.forEach((rowData: any, rowIndex: number) => {\n\t\t\tconst rowValues = allColumns.map((col, colIndex) => {\n\t\t\t\tif (orderColumn && colIndex === 0) {\n\t\t\t\t\treturn (rowIndex + 1).toString();\n\t\t\t\t}\n\t\t\t\tconst originalColIndex = orderColumn ? colIndex - 1 : colIndex;\n\t\t\t\treturn rowData[columns[originalColIndex].columnName]?.toString() || \"\";\n\t\t\t});\n\t\t\trowValues.forEach((value, i) => {\n\t\t\t\tconst length = value.length;\n\t\t\t\tif (length > maxLengths[i]) {\n\t\t\t\t\tmaxLengths[i] = length;\n\t\t\t\t}\n\t\t\t});\n\t\t\tworksheet.addRow(rowValues);\n\t\t});\n\t\tallColumns.forEach((_, index) => {\n\t\t\tworksheet.getColumn(index + 1).width = maxLengths[index] + 2;\n\t\t});\n\t\tif (filters?.length) {\n\t\t\tconst worksheetFilter = workbook.addWorksheet(filterTitle);\n\t\t\tworksheetFilter.views = [{ showGridLines: false }];\n\t\t\tthis.SetFilterPage(filterTitle, worksheetFilter, filters);\n\t\t}\n\t\tconst buffer = await workbook.xlsx.writeBuffer();\n\t\tsaveAs(new Blob([buffer]), excelName);\n\t}\n\tasync ExportToCSVRaw(excelName: string, rowsSerializate: string): Promise<void> {\n\t\tconst rows: { linea: string }[] = JSON.parse(rowsSerializate);\n\t\tconst csvLines: string[] = rows.map(r => r.linea);\n\t\tconst csvContent = csvLines.join(\"\\n\");\n\t\tconst blob = new Blob([\"\\uFEFF\" + csvContent], { type: \"text/csv;charset=utf-8;\" });\n\t\tsaveAs(blob, excelName.endsWith(\".csv\") ? excelName : `${excelName}.csv`);\n\t}\n\tprivate GetExcelColumnLetter(columnNumber: number): string {\n\t\tlet letter = \"\";\n\t\twhile (columnNumber >= 0) {\n\t\t\tletter = String.fromCharCode(65 + (columnNumber % 26)) + letter;\n\t\t\tcolumnNumber = Math.floor(columnNumber / 26) - 1;\n\t\t}\n\t\treturn letter;\n\t}\n\n\tprivate GetNumberFormat(formatNumber: string): string {\n\t\tconst formats: Record<string, string> = {\n\t\t\tinteger: '#,##0;(#,##0);\"-\"',\n\t\t\tdecimal: '#,##0.00;(#,##0.00);\"-\"',\n\t\t\tpercent_2: '#0.00\"%\";(#0.00\"%\");\"-\"',\n\t\t\tpercent_4: '#0.0000\"%\";(#0.0000\"%\");\"-\"',\n\t\t};\n\t\treturn formats[formatNumber] || \"\";\n\t}\n}\nexport interface ExportExcelCommand {\n\texcelName: string;\n\treportTitle: string;\n\tfilterTitle: string;\n\trowsSerializate: string;\n\tcolumns: IExcelColumnName[];\n\tfilters: IFilter[];\n\torderColumn?: boolean;\n}\nexport interface ICell {\n\tindex: number;\n\tcells: string[];\n}\nexport interface IExcelColumnName {\n\tcolumnName: string;\n\tdisplayColumnName: string;\n\talignHorizontal?: string; // 'distributed' | 'justify' | 'center' | 'left' | 'right' | 'fill' | 'centerContinuous' type alignment and left for default\n\twidth?: number;\n\ttotalRowValue?: string;\n\tformatNumber?: \"integer\" | \"decimal\" | \"percent_2\" | \"percent_4\";\n}\nexport interface IFilter {\n\tkey: string;\n\tvalue: string;\n}\nexport interface IExcelHeaderGroup {\n\tstartColumn: number;\n\tendColumn: number;\n\tname: string;\n}\n","import { Injectable, inject } from \"@angular/core\";\nimport { ConfirmationService, Confirmation } from \"primeng/api\";\nimport { AlertButtonMode, AlertType } from \"../enums/alert-type.enum\";\nimport { ALERT_DEFAULTS, ALERT_ICON_OVERRIDES, ALERT_TYPE_CONFIG, AlertConfig, AlertResult, AlertStyleConfig, AlertTypeConfig } from \"../model/alert.model\";\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class AlertService {\n\tprivate readonly confirmationService = inject(ConfirmationService);\n\tprivate readonly iconOverrides = inject(ALERT_ICON_OVERRIDES, { optional: true });\n\tprivate readonly DIALOG_KEY = \"intelica-alert-dialog\";\n\n\t/**\n\t * Displays a warning alert with yellow styling.\n\t * Can be called with (title, subtitle, buttonMode, buttons) OR (title, subtitle, buttons).\n\t */\n\twarning(\n\t\ttitle: string,\n\t\tsubtitle?: string,\n\t\tmodeOrButtons?: AlertButtonMode | { confirmText?: string; cancelText?: string },\n\t\tbuttons?: { confirmText?: string; cancelText?: string },\n\t\tsize?: \"sm\" | \"md\" | \"lg\"\n\t): Promise<AlertResult> {\n\t\tconst { buttonMode, buttonConfig } = this.resolveArgs(modeOrButtons, buttons);\n\t\treturn this.show({\n\t\t\ttype: AlertType.WARNING,\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t\tbuttonMode,\n\t\t\tbuttons: buttonConfig,\n\t\t\tsize,\n\t\t});\n\t}\n\n\t/**\n\t * Displays a success alert with green styling.\n\t * Can be called with (title, subtitle, buttonMode, buttons) OR (title, subtitle, buttons).\n\t */\n\tsuccess(\n\t\ttitle: string,\n\t\tsubtitle?: string,\n\t\tmodeOrButtons?: AlertButtonMode | { confirmText?: string; cancelText?: string },\n\t\tbuttons?: { confirmText?: string; cancelText?: string },\n\t\tsize?: \"sm\" | \"md\" | \"lg\"\n\t): Promise<AlertResult> {\n\t\tconst { buttonMode, buttonConfig } = this.resolveArgs(modeOrButtons, buttons);\n\t\treturn this.show({\n\t\t\ttype: AlertType.SUCCESS,\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t\tbuttonMode,\n\t\t\tbuttons: buttonConfig,\n\t\t\tsize,\n\t\t});\n\t}\n\n\t/**\n\t * Displays an error alert with red styling.\n\t * Can be called with (title, subtitle, buttonMode, buttons) OR (title, subtitle, buttons).\n\t */\n\terror(\n\t\ttitle: string,\n\t\tsubtitle?: string,\n\t\tmodeOrButtons?: AlertButtonMode | { confirmText?: string; cancelText?: string },\n\t\tbuttons?: { confirmText?: string; cancelText?: string },\n\t\tsize?: \"sm\" | \"md\" | \"lg\"\n\t): Promise<AlertResult> {\n\t\tconst { buttonMode, buttonConfig } = this.resolveArgs(modeOrButtons, buttons);\n\t\treturn this.show({\n\t\t\ttype: AlertType.ERROR,\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t\tbuttonMode,\n\t\t\tbuttons: buttonConfig,\n\t\t\tsize,\n\t\t});\n\t}\n\n\t/**\n\t * Helper to resolve flexible arguments.\n\t * If 3rd arg is object (not string enum), treat it as buttons config and default mode to OK_ONLY.\n\t * If 3rd arg is string (enum), treat it as mode and 4th as buttons config.\n\t */\n\tprivate resolveArgs(\n\t\tmodeOrButtons?: AlertButtonMode | { confirmText?: string; cancelText?: string },\n\t\tbuttons?: { confirmText?: string; cancelText?: string }\n\t): { buttonMode: AlertButtonMode; buttonConfig?: { confirmText?: string; cancelText?: string } } {\n\t\tif (modeOrButtons && typeof modeOrButtons === \"object\") {\n\t\t\t// USAGE: success(title, subtitle, { confirmText: 'Ok', cancelText: 'Cancel' })\n\t\t\t// Auto-detect mode based on presence of cancelText\n\t\t\tconst hasCancel = !!(modeOrButtons as any).cancelText;\n\t\t\treturn {\n\t\t\t\tbuttonMode: hasCancel ? AlertButtonMode.CONFIRM_CANCEL : AlertButtonMode.OK_ONLY,\n\t\t\t\tbuttonConfig: modeOrButtons,\n\t\t\t};\n\t\t}\n\n\t\t// USAGE: success(title, subtitle, AlertButtonMode.CONFIRM_CANCEL, { ... })\n\t\t// OR default\n\t\treturn {\n\t\t\tbuttonMode: (modeOrButtons as AlertButtonMode) ?? AlertButtonMode.OK_ONLY,\n\t\t\tbuttonConfig: buttons,\n\t\t};\n\t}\n\n\tmessage(message: string, type: AlertType = AlertType.WARNING): Promise<AlertResult> {\n\t\treturn this.show({\n\t\t\ttype,\n\t\t\ttitle: message,\n\t\t\tbuttonMode: AlertButtonMode.OK_ONLY,\n\t\t});\n\t}\n\n\tconfirm(\n\t\ttitle: string,\n\t\tsubtitle?: string,\n\t\tconfirmText: string = \"Confirmar\",\n\t\tcancelText: string = \"Cancelar\",\n\t\ttype: AlertType = AlertType.WARNING,\n\t\tsize?: \"sm\" | \"md\" | \"lg\"\n\t): Promise<AlertResult> {\n\t\treturn this.show({\n\t\t\ttype,\n\t\t\ttitle,\n\t\t\tsubtitle,\n\t\t\tbuttonMode: AlertButtonMode.CONFIRM_CANCEL,\n\t\t\tbuttons: { confirmText, cancelText },\n\t\t\tsize,\n\t\t});\n\t}\n\n\tshowHtml(title: string, htmlContent: string, type: AlertType = AlertType.WARNING, buttonMode: AlertButtonMode = AlertButtonMode.OK_ONLY): Promise<AlertResult> {\n\t\treturn this.show({\n\t\t\ttype,\n\t\t\ttitle,\n\t\t\thtmlContent,\n\t\t\tbuttonMode,\n\t\t});\n\t}\n\n\tshowWithStyles(config: AlertConfig, styles: AlertStyleConfig): Promise<AlertResult> {\n\t\treturn this.show({\n\t\t\t...config,\n\t\t\tstyles,\n\t\t});\n\t}\n\n\tshow(config: AlertConfig): Promise<AlertResult> {\n\t\treturn new Promise<AlertResult>(resolve => {\n\t\t\tconst mergedConfig = this.mergeWithDefaults(config);\n\t\t\tconst typeConfig = ALERT_TYPE_CONFIG[mergedConfig.type];\n\n\t\t\t// Prepare data object for the view\n\t\t\tconst data = {\n\t\t\t\tconfig: mergedConfig,\n\t\t\t\ttypeConfig: typeConfig,\n\t\t\t\ticonClass: this.getIconClass(mergedConfig, typeConfig),\n\t\t\t\ticonBackgroundColor: this.getIconBackgroundColor(mergedConfig, typeConfig),\n\t\t\t\ticonColor: this.getIconColor(mergedConfig, typeConfig),\n\t\t\t\ttitleColor: this.getTitleColor(mergedConfig, typeConfig),\n\t\t\t\tshowCancelButton: this.showCancelButton(mergedConfig),\n\t\t\t\tconfirmText: this.getConfirmText(mergedConfig),\n\t\t\t\tcancelText: this.getCancelText(mergedConfig),\n\t\t\t\tconfirmButtonStyle: this.getConfirmButtonStyle(mergedConfig),\n\t\t\t\tcancelButtonStyle: this.getCancelButtonStyle(mergedConfig),\n\t\t\t\t// Add manual dismiss handler to data so template can call it if needed,\n\t\t\t\t// though explicit close button in template can just use reject or logic.\n\t\t\t\t// For custom headers/X buttons usually we initiate close.\n\t\t\t};\n\n\t\t\tconst confirmation: Confirmation = {\n\t\t\t\tkey: this.DIALOG_KEY,\n\t\t\t\tmessage: mergedConfig.subtitle,\n\t\t\t\theader: mergedConfig.title,\n\t\t\t\ticon: data.iconClass,\n\t\t\t\tdismissableMask: true,\n\t\t\t\tcloseOnEscape: true,\n\t\t\t\taccept: () => {\n\t\t\t\t\tresolve({\n\t\t\t\t\t\tisConfirmed: true,\n\t\t\t\t\t\tisCancelled: false,\n\t\t\t\t\t\tisDismissed: false,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\treject: (type?: number) => {\n\t\t\t\t\tresolve({\n\t\t\t\t\t\tisConfirmed: false,\n\t\t\t\t\t\tisCancelled: true,\n\t\t\t\t\t\tisDismissed: false,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t};\n\n\t\t\t// Cast to any to allow 'data' property if it doesn't exist on type\n\t\t\t(confirmation as any).data = data;\n\n\t\t\tthis.confirmationService.confirm(confirmation);\n\t\t});\n\t}\n\n\t// Private Helper Methods (Presentation Logic)\n\n\tprivate mergeWithDefaults(config: AlertConfig): AlertConfig {\n\t\treturn {\n\t\t\t...ALERT_DEFAULTS,\n\t\t\t...config,\n\t\t\tbuttons: {\n\t\t\t\t...ALERT_DEFAULTS.buttons,\n\t\t\t\t...config.buttons,\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate getIconClass(config: AlertConfig | null, typeConfig: AlertTypeConfig | null): string {\n\t\tif (config?.customIcon) {\n\t\t\treturn config.customIcon;\n\t\t}\n\t\tif (config?.type && this.iconOverrides?.[config.type]) {\n\t\t\treturn this.iconOverrides[config.type]!;\n\t\t}\n\t\treturn typeConfig?.icon ?? \"pi pi-info-circle\";\n\t}\n\n\tprivate getIconBackgroundColor(config: AlertConfig | null, typeConfig: AlertTypeConfig | null): string {\n\t\tif (config?.styles?.iconBackgroundColor) {\n\t\t\treturn config.styles.iconBackgroundColor;\n\t\t}\n\t\treturn typeConfig?.iconBackgroundColor ?? \"#e3f2fd\";\n\t}\n\n\tprivate getIconColor(config: AlertConfig | null, typeConfig: AlertTypeConfig | null): string {\n\t\tif (config?.styles?.iconColor) {\n\t\t\treturn config.styles.iconColor;\n\t\t}\n\t\treturn typeConfig?.iconColor ?? \"#1976d2\";\n\t}\n\n\tprivate getTitleColor(config: AlertConfig | null, typeConfig: AlertTypeConfig | null): string {\n\t\tif (config?.styles?.titleColor) {\n\t\t\treturn config.styles.titleColor;\n\t\t}\n\t\treturn typeConfig?.titleColor ?? \"#333\";\n\t}\n\n\tprivate showCancelButton(config: AlertConfig | null): boolean {\n\t\treturn config?.buttonMode === AlertButtonMode.CONFIRM_CANCEL;\n\t}\n\n\tprivate getConfirmText(config: AlertConfig | null): string {\n\t\treturn config?.buttons?.confirmText ?? \"Ok\";\n\t}\n\n\tprivate getCancelText(config: AlertConfig | null): string {\n\t\treturn config?.buttons?.cancelText ?? \"Cancelar\";\n\t}\n\n\tprivate getConfirmButtonStyle(config: AlertConfig | null): Record<string, string> {\n\t\tconst styles = config?.styles;\n\t\tconst baseStyle: Record<string, string> = {\n\t\t\tminWidth: \"120px\",\n\t\t};\n\t\tif (styles?.confirmButtonColor) {\n\t\t\tbaseStyle[\"backgroundColor\"] = styles.confirmButtonColor;\n\t\t\tbaseStyle[\"borderColor\"] = styles.confirmButtonColor;\n\t\t}\n\t\tif (styles?.confirmButtonTextColor) {\n\t\t\tbaseStyle[\"color\"] = styles.confirmButtonTextColor;\n\t\t}\n\t\treturn baseStyle;\n\t}\n\n\tprivate getCancelButtonStyle(config: AlertConfig | null): Record<string, string> {\n\t\tconst styles = config?.styles;\n\t\tconst baseStyle: Record<string, string> = {\n\t\t\tminWidth: \"120px\",\n\t\t};\n\t\tif (styles?.cancelButtonColor) {\n\t\t\tbaseStyle[\"backgroundColor\"] = styles.cancelButtonColor;\n\t\t\tbaseStyle[\"borderColor\"] = styles.cancelButtonColor;\n\t\t}\n\t\tif (styles?.cancelButtonTextColor) {\n\t\t\tbaseStyle[\"color\"] = styles.cancelButtonTextColor;\n\t\t}\n\t\treturn baseStyle;\n\t}\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { inject, Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { LanguageSimpleResponse } from \"../dto/languageResponses\";\nimport { ConfigService } from \"./config.service\";\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class LanguageService {\n\tprivate readonly _http = inject(HttpClient);\n\tprivate readonly _configService = inject(ConfigService);\n\tGetAllLanguage(): Observable<LanguageSimpleResponse[]> {\n\t\treturn this._http.get<LanguageSimpleResponse[]>(`${this._configService.environment?.configurationPath}/Language`);\n\t}\n}\n","export function darkenColor(input: string, amount = 0.2): string {\n const clamp = (v: number) => Math.max(0, Math.min(255, v));\n const toHex = (v: number) => v.toString(16).padStart(2, '0');\n\n if (input.startsWith('#')) {\n const r = parseInt(input.slice(1, 3), 16);\n const g = parseInt(input.slice(3, 5), 16);\n const b = parseInt(input.slice(5, 7), 16);\n return `#${toHex(clamp(Math.round(r * (1 - amount))))}${toHex(clamp(Math.round(g * (1 - amount))))}${toHex(clamp(Math.round(b * (1 - amount))))}`;\n }\n const m = input.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*([\\d.]+))?\\)/i);\n if (m) {\n const r = clamp(Math.round(+m[1] * (1 - amount)));\n const g = clamp(Math.round(+m[2] * (1 - amount)));\n const b = clamp(Math.round(+m[3] * (1 - amount)));\n const a = m[4] !== undefined ? `, ${m[4]}` : '';\n return `rgba(${r}, ${g}, ${b}${a})`;\n }\n return input;\n}","import { inject, Injectable } from \"@angular/core\";\nimport {\n\tBarSeriesOption,\n\tDefaultLabelFormatterCallbackParams,\n\tEChartsOption,\n\tGridComponentOption,\n\tLabelFormatterCallback,\n\tLegendComponentOption,\n\tLineSeriesOption,\n\tPieSeriesOption,\n\tTooltipComponentFormatterCallback,\n\tTooltipComponentFormatterCallbackParams,\n\tYAXisComponentOption,\n} from \"echarts\";\nimport { Color, getColor } from \"../constants/color.constants\";\nimport { darkenColor } from \"../functions/echart.util\";\nimport { FormatAmountPipe } from \"../pipes/amount.pipe\";\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class EchartService {\n\tprivate readonly _formatAmountPipe = inject(FormatAmountPipe);\n\n\t/// Chart Generals\n\n\tprivate getDefultAxisConfiguration(type: string, data?: any[], showAxis: boolean = true, showSplitLine: boolean = false): any {\n\t\treturn {\n\t\t\tshow: showAxis,\n\t\t\ttype: type,\n\t\t\tdata: data,\n\t\t\taxisTick: {\n\t\t\t\tshow: false,\n\t\t\t},\n\t\t\taxisLine: {\n\t\t\t\tshow: false,\n\t\t\t\tlineStyle: { color: getColor(\"gray\"), type: \"dashed\" },\n\t\t\t},\n\t\t\tsplitLine: {\n\t\t\t\tshow: showSplitLine,\n\t\t\t\t// lineStyle: {\n\t\t\t\t// \tcolor: Color.gray,\n\t\t\t\t// \ttype: \"dashed\",\n\t\t\t\t// \twidth: 1,\n\t\t\t\t// },\n\t\t\t\tlineStyle: { width: 1, color: Color.gray, type: [5, 5], cap: \"round\" },\n\t\t\t},\n\t\t\taxisLabel: {\n\t\t\t\tfontFamily: \"Lato, sans-serif\",\n\t\t\t\tshow: true,\n\t\t\t\t// show: showAxis,\n\t\t\t\tcolor: Color.gray3,\n\t\t\t\tfontSize: 14,\n\t\t\t\tpadding: 10,\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate getCategoryAxisConfiguration(data: any[]) {\n\t\treturn this.getDefultAxisConfiguration(\"category\", data, true);\n\t}\n\n\tprivate getValueAxisConfiguration(showAxis: boolean = true, format: boolean = true, showAxisLines: boolean = true) {\n\t\tlet axisConfiguration = this.getDefultAxisConfiguration(\"value\", undefined, showAxis, showAxisLines);\n\t\tif (format) {\n\t\t\taxisConfiguration.axisLabel.formatter = (value: number) => {\n\t\t\t\tconst formatted = this._formatAmountPipe.transform(value, true, 0, true);\n\t\t\t\treturn formatted === \"-\" ? 0 : formatted;\n\t\t\t};\n\t\t}\n\t\treturn axisConfiguration;\n\t}\n\n\tprivate getGridConfiguration(): GridComponentOption {\n\t\treturn {\n\t\t\t// left: \"0%\",\n\t\t\t// right: \"0%\",\n\t\t\t// //bottom: '0%',\n\t\t\t// containLabel: true,\n\t\t\tleft: 0,\n\t\t\tright: 0,\n\t\t\ttop: 20,\n\t\t\tbottom: 40,\n\t\t\tcontainLabel: true,\n\t\t};\n\t}\n\n\tprivate getLegendConfiguration(): LegendComponentOption {\n\t\treturn {\n\t\t\t// orient: \"horizontal\", // 'horizontal | vertical'\n\t\t\t// icon: \"circle\",\n\t\t\t// bottom: 5,\n\t\t\t// align: \"auto\",\n\t\t\t// itemGap: 20,\n\t\t\t// textStyle: { color: Color.blue, fontSize: 14 },\n\t\t\tdata: [{ name: \"Expenses\", icon: \"circle\" }],\n\t\t\tbottom: 0,\n\t\t\ttextStyle: {\n\t\t\t\tcolor: \"#4E546F\",\n\t\t\t\tfontFamily: \"Lato, sans-serif\",\n\t\t\t\tfontSize: 12,\n\t\t\t\tlineHeight: 12,\n\t\t\t},\n\t\t\titemWidth: 10,\n\t\t\titemHeight: 10,\n\t\t\titemGap: 25,\n\t\t\talign: \"left\",\n\t\t};\n\t}\n\n\t/**\n\t *\n\t * @param color - Color of the tooltip\n\t * @param title - Title of the tooltip\n\t * @param body - Body of the tooltip\n\t * @returns - Tooltip HTML string\n\t */\n\tgetTooltipFormatter(color: string, title: string, body: string): string {\n\t\tconst titleHtml =\n\t\t\ttitle.length > 0\n\t\t\t\t? `\n\t\t\t<b style=\" font-size: 13px;\">${title} </b><br>\n\t\t\t<hr style=\"border: 1px solid ${color}; margin: 4px 0;\">`\n\t\t\t\t: \"\";\n\t\treturn `\n\t \t<div style=\"font-size: 12px; boder-color: ${color}; color: ${color}; border-radius: 6px; min-width: 120px; text-align: center;\">\n\t\t\t${titleHtml}\n\t\t\t${body}\n\t\t</div>\n\t `;\n\t}\n\n\t/// Charts Configuration\n\n\t/// BAR CHARTS\n\n\t/**\n\t *\n\t * @param categories - Array of categories for the x-axis\n\t * @param series - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration for the bars\n\t * @param tooltipConfig - Optional tooltip configuration for the bars\n\t * @param showLegend - Optional flag to show the legend\n\t * @returns - EChartsOption - Configuration object for the bar chart\n\t */\n\tgetBarChartOptions(\n\t\tcategories: string[],\n\t\tseries: { name: string; value: any; color: string }[],\n\t\tlabelConfig?: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>,\n\t\tshowLegend: boolean = false\n\t): EChartsOption {\n\t\treturn {\n\t\t\ttextStyle: { fontFamily: \"Lato, sans-serif\" },\n\t\t\txAxis: this.getCategoryAxisConfiguration(categories),\n\t\t\tyAxis: this.getValueAxisConfiguration(),\n\t\t\tseries: [\n\t\t\t\t...series.map(\n\t\t\t\t\t(item): BarSeriesOption => ({\n\t\t\t\t\t\ttype: \"bar\",\n\t\t\t\t\t\tname: item.name,\n\t\t\t\t\t\titemStyle: { color: item.color, borderRadius: 8 },\n\t\t\t\t\t\tdata: item.value,\n\t\t\t\t\t\tbarWidth: \"33%\",\n\t\t\t\t\t\tbarGap: \"0%\",\n\t\t\t\t\t\tlabel: {\n\t\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\t\tposition: \"top\",\n\t\t\t\t\t\t\tcolor: Color.blue,\n\t\t\t\t\t\t\tfontSize: 12,\n\t\t\t\t\t\t\tformatter: labelConfig,\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t),\n\t\t\t],\n\t\t\ttooltip: {\n\t\t\t\ttrigger: \"item\",\n\t\t\t\tbackgroundColor: \"#FFFFFF\",\n\t\t\t\tborderWidth: 2,\n\t\t\t\ttextStyle: { fontSize: 12 },\n\t\t\t\tformatter: tooltipConfig,\n\t\t\t\tappendTo: \"body\",\n\t\t\t},\n\t\t\tgrid: this.getGridConfiguration(),\n\t\t\tlegend: showLegend ? this.getLegendConfiguration() : undefined,\n\t\t};\n\t}\n\n\t/**\n\t *\n\t * @param categories - Array of categories for the x-axis\n\t * @param series - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration for the bars\n\t * @param tooltipConfig - Optional tooltip configuration for the bars\n\t * @param showLegend - Optional flag to show the legend\n\t * @returns - EChartsOption - Configuration object for the bar chart\n\t */\n\tgetBarChartStackOptions(\n\t\tcategories: string[],\n\t\tseries: { name: string; value: any; color: string }[],\n\t\tlabelConfig?: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>,\n\t\tshowLegend: boolean = false\n\t): EChartsOption {\n\t\tlet barBase = this.getBarChartOptions(categories, series, labelConfig, tooltipConfig, showLegend);\n\t\t(barBase.series as BarSeriesOption[]).forEach((serie, index) => {\n\t\t\t// serie.barWidth = \"50%\";\n\t\t\t// serie.barGap = \"0%\";\n\t\t\tserie.barCategoryGap = \"10%\";\n\t\t\tserie.stack = \"total\";\n\t\t\tif (index < series.length - 1) {\n\t\t\t\tserie.label = undefined;\n\t\t\t}\n\t\t});\n\t\treturn barBase;\n\t}\n\n\t/**\n\t *\n\t * @param categories - Array of categories for the y-axis\n\t * @param series - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration for the bars\n\t * @param tooltipConfig - Optional tooltip configuration for the bars\n\t * @param showLegend - Optional flag to show the legend\n\t * @returns - EChartsOption - Configuration object for the bar chart\n\t */\n\tgetBarChartHorizontalOptions(\n\t\tcategories: string[],\n\t\tseries: { name: string; value: any; color: string }[],\n\t\tlabelConfig?: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>,\n\t\tshowLegend: boolean = false,\n\t\tenableSelectStyle: boolean = false // 👈 nuevo\n\t): EChartsOption {\n\t\tlet barBase = this.getBarChartOptions(categories, series, labelConfig, tooltipConfig, showLegend);\n\t\tbarBase.xAxis = this.getValueAxisConfiguration(false, true, false);\n\t\tbarBase.yAxis = this.getCategoryAxisConfiguration(categories);\n\n\t\t(barBase.series as BarSeriesOption[]).forEach((serie, idx) => {\n\t\t\tif (serie.label) {\n\t\t\t\tserie.label.position = \"right\";\n\t\t\t}\n\n\t\t\tconst baseColor = (serie.itemStyle as any)?.color ?? (series[idx] && series[idx].color) ?? \"#FF8A00\";\n\n\t\t\tserie.itemStyle = {\n\t\t\t\t...(serie.itemStyle || {}),\n\t\t\t\tcolor: baseColor,\n\t\t\t\tborderWidth: 0,\n\t\t\t};\n\n\t\t\tif (enableSelectStyle) {\n\t\t\t\t(serie as any).selectedMode = \"single\";\n\n\t\t\t\tconst selectedColor = darkenColor(String(baseColor), 0.38);\n\n\t\t\t\tserie.select = {\n\t\t\t\t\titemStyle: {\n\t\t\t\t\t\tcolor: selectedColor,\n\t\t\t\t\t\tborderWidth: 0,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\n\t\tif (barBase.grid) {\n\t\t\t(barBase.grid as GridComponentOption).left = \"10%\";\n\t\t\t(barBase.grid as GridComponentOption).right = \"10%\";\n\t\t\t(barBase.grid as GridComponentOption).bottom = \"10%\";\n\t\t\t(barBase.grid as GridComponentOption).containLabel = true;\n\t\t}\n\t\treturn barBase;\n\t}\n\n\t/**\n\t *\n\t * @param categories - Array of categories for the y-axis\n\t * @param series - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration for the bars\n\t * @param tooltipConfig - Optional tooltip configuration for the bars\n\t * @param showLegend - Optional flag to show the legend\n\t * @returns - EChartsOption - Configuration object for the bar chart\n\t */\n\tgetBarChartHorizontalStackOptions(\n\t\tcategories: string[],\n\t\tseries: { name: string; value: any; color: string }[],\n\t\tlabelConfig?: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>,\n\t\tshowLegend: boolean = false\n\t): EChartsOption {\n\t\tlet barBase = this.getBarChartHorizontalOptions(categories, series, labelConfig, tooltipConfig, showLegend);\n\t\t(barBase.series as BarSeriesOption[]).forEach((serie, index) => {\n\t\t\t// serie.barWidth = \"50%\";\n\t\t\t// serie.barGap = \"0%\";\n\t\t\tserie.barCategoryGap = \"10%\";\n\t\t\tserie.stack = \"total\";\n\t\t\tif (serie.label) {\n\t\t\t\tserie.label.position = \"right\";\n\t\t\t}\n\t\t\tif (index < series.length - 1) {\n\t\t\t\tserie.label = undefined;\n\t\t\t}\n\t\t});\n\t\tif (barBase.grid) {\n\t\t\t(barBase.grid as GridComponentOption).left = \"10%\";\n\t\t\t(barBase.grid as GridComponentOption).right = \"10%\";\n\t\t\t(barBase.grid as GridComponentOption).bottom = \"10%\";\n\t\t\t(barBase.grid as GridComponentOption).containLabel = true;\n\t\t}\n\t\treturn barBase;\n\t}\n\n\t/**\n\t *\n\t * @param categories - Array of categories for the y-axis\n\t * @param series - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration for the bars\n\t * @param tooltipConfig - Optional tooltip configuration for the bars\n\t * @param showLegend - Optional flag to show the legend\n\t * @returns - EChartsOption - Configuration object for the bar chart\n\t */\n\tgetBarChartTopOptions(\n\t\tcategories: string[],\n\t\tseries: { name: string; value: any; color: string }[],\n\t\tcategoryWidth: number = 240,\n\t\tlabelConfig?: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>,\n\t\tshowLegend: boolean = false,\n\t\tcategoryFormatter?: (value: string, index: number) => string\n\t): EChartsOption {\n\t\tconst barBase = this.getBarChartHorizontalOptions(categories, series, labelConfig, tooltipConfig, showLegend, true);\n\n\t\tif (barBase.yAxis) {\n\t\t\tconst y = barBase.yAxis as YAXisComponentOption;\n\t\t\tconst gr = barBase.grid as GridComponentOption;\n\n\t\t\tconst defaultCategoryFormatter = (value: string | number, index: number) => {\n\t\t\t\tconst sangriaBase = \"\\u2008\\u2008\\u2008\\u2008\\u2008\\u2008\\u2009\";\n\t\t\t\tconst lineLength = 35;\n\n\t\t\t\tconst text = String(value ?? \"\");\n\t\t\t\tconst prefix = `${index + 1} - `;\n\n\t\t\t\tconst digitCount = String(index + 1).length;\n\n\t\t\t\tlet extraRepeat = 0;\n\t\t\t\tif (digitCount === 2) extraRepeat = 2;\n\t\t\t\telse if (digitCount === 3) extraRepeat = 5;\n\n\t\t\t\tconst sangria = sangriaBase + \"\\u2008\".repeat(extraRepeat);\n\n\t\t\t\tconst words = text.split(\" \");\n\t\t\t\tconst lines: string[] = [];\n\t\t\t\tlet current = \"\";\n\n\t\t\t\tfor (const w of words) {\n\t\t\t\t\tconst test = current ? `${current} ${w}` : w;\n\t\t\t\t\tif (test.length <= lineLength) current = test;\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (current) lines.push(current);\n\t\t\t\t\t\tcurrent = w;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (current) lines.push(current);\n\n\t\t\t\treturn prefix + lines.map((ln, i) => (i === 0 ? ln : `${sangria}${ln}`)).join(\"\\n\");\n\t\t\t};\n\n\t\t\t// y.inverse = true;\n\t\t\t// y.axisLabel = {\n\t\t\t// \t...y.axisLabel,\n\t\t\t// \tcolor: Color.blue,\n\t\t\t// \tfontSize: 12,\n\t\t\t// \twidth: categoryWidth,\n\t\t\t// \toverflow: \"break\",\n\t\t\t// \talign: \"left\",\n\t\t\t// \tverticalAlign: \"middle\",\n\t\t\t// \tmargin: categoryWidth + 30,\n\t\t\t// \tlineHeight: 16,\n\t\t\t// \tformatter: categoryFormatter || defaultCategoryFormatter,\n\t\t\t// };\n\n\t\t\tgr.top = \"0%\";\n\t\t\tgr.left = -1 * categoryWidth + 60;\n\t\t\tgr.right = 20;\n\t\t\tgr.bottom = \"0%\";\n\t\t\tgr.containLabel = true;\n\t\t}\n\n\t\t(barBase.series as BarSeriesOption[]).forEach(serie => {\n\t\t\tserie.label = {\n\t\t\t\t...(serie.label || {}),\n\t\t\t\tformatter: labelConfig,\n\t\t\t};\n\t\t});\n\n\t\treturn barBase;\n\t}\n\n\t/// LINE CHARTS\n\n\t/**\n\t *\n\t * @param categories - Array of categories for the x-axis\n\t * @param series - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration for the lines\n\t * @param tooltipConfig - Optional tooltip configuration for the lines\n\t * @param showLegend - Optional flag to show the legend\n\t * @returns - EChartsOption - Configuration object for the line chart\n\t */\n\tgetLineChartOptions(\n\t\tcategories: string[],\n\t\tseries: { name: string; value: any; color: string }[],\n\t\tlabelConfig: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>,\n\t\tshowLegend: boolean = false\n\t): EChartsOption {\n\t\treturn {\n\t\t\txAxis: this.getCategoryAxisConfiguration(categories),\n\t\t\tyAxis: this.getValueAxisConfiguration(true, true, true),\n\t\t\tseries: [\n\t\t\t\t...series.map(\n\t\t\t\t\t(item, seriesIndex): LineSeriesOption => ({\n\t\t\t\t\t\ttype: \"line\",\n\t\t\t\t\t\tname: item.name,\n\t\t\t\t\t\tdata: item.value,\n\t\t\t\t\t\titemStyle: { color: item.color },\n\t\t\t\t\t\tsymbol: \"circle\",\n\t\t\t\t\t\tsymbolSize: 14,\n\t\t\t\t\t\temphasis: {\n\t\t\t\t\t\t\titemStyle: {\n\t\t\t\t\t\t\t\tcolor: item.color,\n\t\t\t\t\t\t\t\tborderColor: item.color + \"40\", // 40 ( hexadecimal ) = .25 ( decimal )\n\t\t\t\t\t\t\t\tborderWidth: 16,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t),\n\t\t\t],\n\t\t\ttooltip: {\n\t\t\t\ttrigger: \"item\",\n\t\t\t\tbackgroundColor: \"#FFFFFF\",\n\t\t\t\tborderWidth: 2,\n\t\t\t\ttextStyle: { fontSize: 12 },\n\t\t\t\tformatter: tooltipConfig,\n\t\t\t\tappendTo: \"body\t\",\n\t\t\t},\n\t\t\tdataZoom: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"inside\", // inside | slider\n\t\t\t\t\tshow: true,\n\t\t\t\t\theight: 12,\n\t\t\t\t\tbottom: 10,\n\t\t\t\t\tbackgroundColor: \"#ddd\",\n\t\t\t\t\tborderColor: \"transparent\",\n\t\t\t\t\tfillerColor: \"rgba(150, 150, 150, 0.5)\",\n\t\t\t\t\thandleSize: \"80%\",\n\t\t\t\t\thandleStyle: {\n\t\t\t\t\t\tcolor: \"#A0A0A0\",\n\t\t\t\t\t\tborderColor: \"transparent\",\n\t\t\t\t\t\tshadowBlur: 2,\n\t\t\t\t\t\tshadowColor: \"rgba(0, 0, 0, 0.2)\",\n\t\t\t\t\t},\n\t\t\t\t\tshowDataShadow: false,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"inside\",\n\t\t\t\t\tshowDataShadow: false,\n\t\t\t\t},\n\t\t\t],\n\t\t\tlegend: showLegend ? this.getLegendConfiguration() : undefined,\n\t\t};\n\t}\n\n\t/// PIE CHARTS\n\n\t/**\n\t *\n\t * @param data - Array of series data, each containing name, value, and color\n\t * @param labelConfig - Optional label configuration\n\t * @param tooltipConfig - Optional tooltip configuration\n\t * @returns - EChartsOption - Configuration object for the pie\n\t */\n\tgetDoughnutPieOptions(\n\t\tdata: { name: string; value: any; color: string }[],\n\t\tlabelConfig: LabelFormatterCallback<DefaultLabelFormatterCallbackParams>,\n\t\ttooltipConfig?: TooltipComponentFormatterCallback<TooltipComponentFormatterCallbackParams>\n\t): EChartsOption {\n\t\treturn {\n\t\t\tseries: <PieSeriesOption[]>[\n\t\t\t\t{\n\t\t\t\t\tdata: data.map(item => ({\n\t\t\t\t\t\t...item,\n\t\t\t\t\t\titemStyle: { color: item.color },\n\t\t\t\t\t})),\n\t\t\t\t\tname: \"Pie Chart\",\n\t\t\t\t\ttype: \"pie\",\n\t\t\t\t\tradius: [\"40%\", \"70%\"],\n\t\t\t\t\tavoidLabelOverlap: false,\n\t\t\t\t\temphasis: {\n\t\t\t\t\t\tscale: true,\n\t\t\t\t\t},\n\t\t\t\t\tlabelLine: {\n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\tlength: 15,\n\t\t\t\t\t\tlength2: 20,\n\t\t\t\t\t},\n\t\t\t\t\tlabel: {\n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\tposition: \"outside\",\n\t\t\t\t\t\tcolor: Color.blue,\n\t\t\t\t\t\tfontSize: 14,\n\t\t\t\t\t\tformatter: labelConfig,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t\ttooltip: {\n\t\t\t\ttrigger: \"item\",\n\t\t\t\tformatter: tooltipConfig,\n\t\t\t\tappendTo: \"body\",\n\t\t\t\t// extraCssText: this.chartService.getTooltipCssText(),\n\t\t\t},\n\t\t\tlegend: <LegendComponentOption>{\n\t\t\t\torient: \"horizontal\", // 'horizontal | vertical'\n\t\t\t\ticon: \"circle\",\n\t\t\t\tbottom: 5,\n\t\t\t\talign: \"auto\",\n\t\t\t\titemGap: 20,\n\t\t\t\ttextStyle: { color: Color.blue, fontSize: 14 },\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t *\n\t * @param letter - text to show in the center of the pie\n\t * @param value - rate\tvalue\n\t * @param textSize - size of the letter\n\t * @param color - color of the letter and pie\n\t * @param\ttotal - total value for the pie (default is 100)\n\t * @returns\n\t */\n\tgetRateDoughnutPieOptions(letter: string, value: number, textSize: number, color: string, total: number = 100): EChartsOption {\n\t\tconst data = [\n\t\t\t{ name: letter, value: value, itemStyle: { color: color } },\n\t\t\t{\n\t\t\t\tname: \"placeholder\",\n\t\t\t\tvalue: total - value,\n\t\t\t\titemStyle: { color: Color.gray5 },\n\t\t\t},\n\t\t];\n\t\treturn {\n\t\t\ttooltip: {\n\t\t\t\ttrigger: \"none\",\n\t\t\t\tappendTo: \"body\",\n\t\t\t},\n\t\t\tseries: <PieSeriesOption[]>[\n\t\t\t\t{\n\t\t\t\t\tname: \"RateDoughnutPie\",\n\t\t\t\t\ttype: \"pie\",\n\t\t\t\t\ttooltip: {\n\t\t\t\t\t\ttrigger: \"none\",\n\t\t\t\t\t},\n\t\t\t\t\tradius: [\"80%\", \"60%\"],\n\t\t\t\t\tdata: data,\n\t\t\t\t\tstartAngle: 0,\n\t\t\t\t\tselectedMode: false,\n\t\t\t\t\tsilent: true,\n\t\t\t\t\tlabel: {\n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\tformatter: letter,\n\t\t\t\t\t\tcolor: color,\n\t\t\t\t\t\tposition: \"center\",\n\t\t\t\t\t\tfontWeight: \"bold\",\n\t\t\t\t\t\tfontSize: textSize,\n\t\t\t\t\t\tfontFamily: \"Arial\",\n\t\t\t\t\t\tlineHeight: textSize * -0.22,\n\t\t\t\t\t\talign: \"center\",\n\t\t\t\t\t\tverticalAlign: \"middle\",\n\t\t\t\t\t\tbackgroundColor: \"transparent\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t}\n\n\t/**\n\t * Semi doughnut gauge (half circle) with:\n\t * - Progress arc\n\t * - End dot\n\t * - Center letter\n\t *\n\t * @param letter - Text to show in the center\n\t * @param value - Current value\n\t * @param textSize - Center letter font size\n\t * @param color - Progress and end dot color\n\t * @param total - Max value (default 100)\n\t */\n\tgetRateSemiDoughnutOptions(letter: string, value: number, textSize: number, color: string, total: number = 100, bottomText?: string): EChartsOption {\n\t\tconst safeTotal = total > 0 ? total : 100;\n\t\tconst safeValue = Math.max(0, Math.min(value, safeTotal));\n\n\t\tconst START_ANGLE = 210;\n\t\tconst END_ANGLE = -30;\n\n\t\tconst THICKNESS = 11;\n\t\tconst BACKGROUND_COLOR = \"#D9D9E3\";\n\t\tconst TEXT_COLOR = \"#4F5470\";\n\n\t\tconst MIN_LABEL = \"0\";\n\t\tconst MAX_LABEL = String(safeTotal);\n\t\tconst MIN_MAX_FONT_SIZE = 15;\n\n\t\tconst RADIUS = \"96%\";\n\t\tconst CENTER: [string, string] = [\"50%\", \"50%\"];\n\n\t\tconst dotSizePx = THICKNESS + 5;\n\t\tconst POINTER_LENGTH = \"98%\";\n\n\t\tconst option: EChartsOption = {\n\t\t\ttooltip: { trigger: \"none\", appendTo: \"body\" },\n\t\t\tseries: [\n\t\t\t\t/* ================= GAUGE 1: PROGRESS ================= */\n\t\t\t\t{\n\t\t\t\t\ttype: \"gauge\",\n\t\t\t\t\tradius: RADIUS,\n\t\t\t\t\tcenter: CENTER,\n\t\t\t\t\tstartAngle: START_ANGLE,\n\t\t\t\t\tendAngle: END_ANGLE,\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: safeTotal,\n\n\t\t\t\t\tpointer: { show: false },\n\n\t\t\t\t\tprogress: {\n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\troundCap: true,\n\t\t\t\t\t\twidth: THICKNESS,\n\t\t\t\t\t\titemStyle: { color },\n\t\t\t\t\t},\n\n\t\t\t\t\taxisLine: {\n\t\t\t\t\t\troundCap: true,\n\t\t\t\t\t\tlineStyle: {\n\t\t\t\t\t\t\twidth: THICKNESS,\n\t\t\t\t\t\t\tcolor: [[1, BACKGROUND_COLOR]],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\n\t\t\t\t\taxisTick: { show: false },\n\t\t\t\t\tsplitLine: { show: false },\n\t\t\t\t\taxisLabel: { show: false },\n\n\t\t\t\t\tdetail: {\n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\toffsetCenter: [0, \"8%\"],\n\t\t\t\t\t\tformatter: () => (bottomText ? `{letter|${letter}}\\n{bottom|${bottomText}}` : `{letter|${letter}}`),\n\t\t\t\t\t\trich: {\n\t\t\t\t\t\t\tletter: {\n\t\t\t\t\t\t\t\tfontSize: textSize,\n\t\t\t\t\t\t\t\tfontWeight: 700,\n\t\t\t\t\t\t\t\tcolor: TEXT_COLOR,\n\t\t\t\t\t\t\t\tfontFamily: \"Lato, sans-serif\",\n\t\t\t\t\t\t\t\tlineHeight: textSize + 2,\n\t\t\t\t\t\t\t\talign: \"center\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbottom: {\n\t\t\t\t\t\t\t\tfontSize: 16,\n\t\t\t\t\t\t\t\tfontWeight: 500,\n\t\t\t\t\t\t\t\tcolor: TEXT_COLOR,\n\t\t\t\t\t\t\t\tfontFamily: \"Lato, sans-serif\",\n\t\t\t\t\t\t\t\tlineHeight: 22,\n\t\t\t\t\t\t\t\talign: \"center\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\n\t\t\t\t\tdata: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: safeValue,\n\t\t\t\t\t\t\tname: \"0\",\n\t\t\t\t\t\t\ttitle: {\n\t\t\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\t\t\tformatter: () => MIN_LABEL,\n\t\t\t\t\t\t\t\toffsetCenter: [\"-80%\", \"66%\"],\n\t\t\t\t\t\t\t\tfontSize: MIN_MAX_FONT_SIZE,\n\t\t\t\t\t\t\t\tcolor: TEXT_COLOR,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: safeValue,\n\t\t\t\t\t\t\tname: \"100\",\n\t\t\t\t\t\t\ttitle: {\n\t\t\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\t\t\tformatter: () => MAX_LABEL,\n\t\t\t\t\t\t\t\toffsetCenter: [\"80%\", \"66%\"],\n\t\t\t\t\t\t\t\tfontSize: MIN_MAX_FONT_SIZE,\n\t\t\t\t\t\t\t\tcolor: TEXT_COLOR,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t} as any,\n\n\t\t\t\t/* ================= GAUGE 2: END DOT ================= */\n\t\t\t\t{\n\t\t\t\t\ttype: \"gauge\",\n\t\t\t\t\tradius: RADIUS,\n\t\t\t\t\tcenter: CENTER,\n\t\t\t\t\tstartAngle: START_ANGLE,\n\t\t\t\t\tendAngle: END_ANGLE,\n\t\t\t\t\tmin: 0,\n\t\t\t\t\tmax: safeTotal,\n\n\t\t\t\t\taxisLine: { show: false },\n\t\t\t\t\tprogress: { show: false },\n\t\t\t\t\tsplitLine: { show: false },\n\t\t\t\t\taxisTick: { show: false },\n\t\t\t\t\taxisLabel: { show: false },\n\t\t\t\t\tdetail: { show: false },\n\n\t\t\t\t\tpointer: {\n\t\t\t\t\t\tshow: true,\n\t\t\t\t\t\ticon: \"circle\",\n\t\t\t\t\t\tlength: POINTER_LENGTH,\n\t\t\t\t\t\twidth: dotSizePx,\n\t\t\t\t\t\titemStyle: {\n\t\t\t\t\t\t\tcolor,\n\t\t\t\t\t\t\tborderWidth: 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\n\t\t\t\t\tdata: [{ value: safeValue }],\n\t\t\t\t} as any,\n\t\t\t],\n\t\t};\n\n\t\treturn option;\n\t}\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { inject, Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { ConfigService } from \"./config.service\";\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class AuthenticationService {\n\tprivate readonly _http = inject(HttpClient);\n\tprivate readonly _configService = inject(ConfigService);\n\tGetPrivateValue(): Observable<string> {\n\t\treturn this._http.get<string>(`${this._configService.environment?.authenticationPath}/Authenticate/GetPrivateValue`);\n\t}\n}\n","import JSEncrypt from \"jsencrypt\";\nexport function decryptData(encryptedData: string, privateKey: string): string | null {\n\tconst decryptor = new JSEncrypt();\n\tdecryptor.setPrivateKey(privateKey);\n\tconst decryptedText = decryptor.decrypt(encryptedData);\n\n\tif (!decryptedText) {\n\t\tconsole.error(\"Error al descifrar los datos con RSA\");\n\t\treturn null;\n\t}\n\n\treturn decryptedText;\n}\n","import { inject, Injectable, signal } from \"@angular/core\";\nimport { getCookie } from \"typescript-cookie\";\nimport { AuthenticationService } from \"./authentication.service\";\nimport { decryptData } from \"../functions/decryptRSA\";\n@Injectable({ providedIn: \"root\" })\nexport class ProfileService {\n\tprivate readonly AuthenticationService = inject(AuthenticationService);\n\tProfile?: any = null;\n\tPrivateKey: string = \"\";\n\tProfileReady = signal<boolean>(false);\n\tInitialize(): void {\n\t\tthis.AuthenticationService.GetPrivateValue().subscribe(response => {\n\t\t\tthis.PrivateKey = response;\n\t\t\tthis.SetProfile();\n\t\t});\n\t}\n\tSetProfile() {\n\t\tconst profileCookie = getCookie(\"profile\");\n\t\tif (profileCookie) {\n\t\t\tconst decrypted = decryptData(profileCookie, this.PrivateKey);\n\t\t\tthis.Profile = decrypted ? JSON.parse(decrypted) : null;\n\t\t} else this.Profile = null;\n\t\tthis.ProfileReady.set(true);\n\t}\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { inject, Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { ElementResponse } from \"../dto/elementResponse\";\nimport { ConfigService } from \"./config.service\";\n\n@Injectable({ providedIn: \"root\" })\nexport class PageElementService {\n\tprivate readonly _http = inject(HttpClient);\n\tprivate readonly _configService = inject(ConfigService);\n\tGetElements(pageRoot: string): Observable<ElementResponse[]> {\n\t\treturn this._http.get<ElementResponse[]>(`${this._configService.environment?.securityPath}/Page/GetAvailableElementsByPageRoot/${pageRoot}`);\n\t}\n}\n","import { inject, Injectable } from \"@angular/core\";\nimport { map, Observable, of, tap } from \"rxjs\";\nimport { ElementResponse } from \"../dto/elementResponse\";\nimport { PageElementService } from \"./pageElement.service\";\n@Injectable({ providedIn: \"root\" })\nexport class ElementService {\n\tElements: ElementResponse[] = [];\n\tPageRoot: string = \"\";\n\tprivate readonly pageElementService = inject(PageElementService);\n\tInitialize$(pageRootValue: string): Observable<void> {\n\t\tif (!pageRootValue) return of();\n\n\t\tthis.PageRoot = pageRootValue;\n\n\t\treturn this.pageElementService.GetElements(this.PageRoot).pipe(\n\t\t\ttap(elements => (this.Elements = elements)),\n\t\t\tmap(() => void 0)\n\t\t);\n\t}\n\n\t/**\n\t * Verify if page has available element by description\n\t */\n\tHasElement(description: string): boolean {\n\t\treturn this.Elements.some(x => x.elementDescription === description);\n\t}\n}\n","import { inject, Injectable } from \"@angular/core\";\nimport { Guid } from \"guid-typescript\";\nimport { ConfigService } from \"./config.service\";\n\nexport interface ItlSessionEnvelope<T> {\n\tsessionId: string;\n\tupdatedAt: number;\n\tvalue: T;\n}\n\nexport type ItlSessionScope = \"global\" | \"user\" | \"profile\" | \"user-profile\";\n\n@Injectable({\n\tprovidedIn: \"root\",\n})\nexport class IntelicaSessionService {\n\tprivate readonly configService = inject(ConfigService);\n\tprivate readonly prefix = \"itl.session.\";\n\tprivate readonly sessionIdKey = \"itl.session.__sessionId\";\n\tprivate pageRoot: string = \"\";\n\tprivate sessionId: string | null = null;\n\n\tconstructor() {\n\t\tthis.ensureSessionId();\n\t\tthis.cleanupForeignSessions();\n\t}\n\n\t/**\n\t * Actualiza el pageRoot actual, es necesario matricularlo en el app.component\n\t */\n\tsetPageRoot(pageRoot: string) {\n\t\tthis.pageRoot = pageRoot;\n\t}\n\n\t/**\n\t * Retorna la key de usuario con scope si necesitas reutilizarla manualmente.\n\t */\n\tgetUserKey(key: string): string {\n\t\treturn this.buildScopedKey(key, \"user\");\n\t}\n\n\tprivate ensureSessionId(): string {\n\t\tif (this.sessionId) return this.sessionId;\n\n\t\tconst stored = localStorage.getItem(this.sessionIdKey);\n\t\tif (stored) {\n\t\t\tthis.sessionId = stored;\n\t\t\treturn stored;\n\t\t}\n\n\t\tconst id = this.createGuid();\n\t\tthis.sessionId = id;\n\t\tlocalStorage.setItem(this.sessionIdKey, id);\n\t\treturn id;\n\t}\n\n\tprivate createGuid(): string {\n\t\treturn Guid.create().toString();\n\t}\n\n\tprivate buildScopedKey(key: string, scope: ItlSessionScope = \"user-profile\"): string {\n\t\tconst parts: string[] = [];\n\t\tif (this.pageRoot) parts.push(this.pageRoot);\n\t\tparts.push(key);\n\n\t\tconst userId = this.configService.SessionInformation?.businessUserID;\n\t\tconst profileId = this.configService.SessionInformation?.businessUserProfile;\n\n\t\tif (scope === \"user\" || scope === \"user-profile\") {\n\t\t\tif (userId) parts.push(`user:${userId}`);\n\t\t}\n\t\tif (scope === \"profile\" || scope === \"user-profile\") {\n\t\t\tif (profileId) parts.push(`profile:${profileId}`);\n\t\t}\n\n\t\treturn parts.join(\"|\");\n\t}\n\n\t/**\n\t * Guarda un valor serializable en localStorage con scope por pageRoot\n\t */\n\tset<T>(key: string, value: T): void;\n\t/**\n\t * Guarda un valor serializable en localStorage usando el scope indicado.\n\t */\n\tset<T>(key: string, value: T, scope: ItlSessionScope): void;\n\tset<T>(key: string, value: T, scope: ItlSessionScope = \"user-profile\"): void {\n\t\tthis.ensureSessionId();\n\t\tconst storageKey = this.buildScopedKey(key, scope);\n\t\tconst envelope: ItlSessionEnvelope<T> = {\n\t\t\tsessionId: this.sessionId as string,\n\t\t\tupdatedAt: Date.now(),\n\t\t\tvalue,\n\t\t};\n\t\tlocalStorage.setItem(this.prefix + storageKey, JSON.stringify(envelope));\n\t}\n\n\t/**\n\t * Obtiene un valor desde localStorage usando la misma composición de key\n\t * (pageRoot + usuario + perfil). Retorna null si no existe o la sesión no coincide.\n\t */\n\tget<T>(key: string): T | null;\n\t/**\n\t * Obtiene un valor desde localStorage usando el scope indicado.\n\t */\n\tget<T>(key: string, scope: ItlSessionScope): T | null;\n\tget<T>(key: string, scope: ItlSessionScope = \"user-profile\"): T | null {\n\t\tconst storageKey = this.buildScopedKey(key, scope);\n\t\tconst raw = localStorage.getItem(this.prefix + storageKey);\n\t\tif (!raw) return null;\n\n\t\ttry {\n\t\t\tconst env = JSON.parse(raw) as ItlSessionEnvelope<T>;\n\t\t\tif (!this.sessionId || env.sessionId !== this.sessionId) return null;\n\t\t\treturn env.value;\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * Limpia todo lo que haya en localStorage para este servicio (todas las sesiones).\n\t * Úsalo al iniciar sesión/cerrar sesión para evitar acumulación.\n\t */\n\tclearAll(): void {\n\t\tObject.keys(localStorage)\n\t\t\t.filter(k => k.startsWith(this.prefix))\n\t\t\t.forEach(k => localStorage.removeItem(k));\n\t\tlocalStorage.removeItem(this.sessionIdKey);\n\t\tthis.sessionId = null;\n\t}\n\n\t/**\n\t * Limpia los valores de la sesión actual para el pageRoot vigente.\n\t */\n\tclearCurrentPageRoot(): void {\n\t\tif (!this.pageRoot) return;\n\t\tthis.clearPageRoot(this.pageRoot);\n\t}\n\n\tprivate clearPageRoot(pageRoot: string): void {\n\t\tconst prefix = `${this.prefix}${pageRoot}|`;\n\t\tObject.keys(localStorage)\n\t\t\t.filter(k => k.startsWith(prefix))\n\t\t\t.forEach(k => {\n\t\t\t\tconst raw = localStorage.getItem(k);\n\t\t\t\tif (!raw) return;\n\t\t\t\tconst env = this.tryParseEnvelope(raw);\n\t\t\t\tif (!env || env.sessionId !== this.sessionId) return;\n\t\t\t\tlocalStorage.removeItem(k);\n\t\t\t});\n\t}\n\n\tprivate cleanupForeignSessions(): void {\n\t\tif (!this.sessionId) return;\n\t\tObject.keys(localStorage)\n\t\t\t.filter(k => k.startsWith(this.prefix))\n\t\t\t.forEach(k => {\n\t\t\t\tconst raw = localStorage.getItem(k);\n\t\t\t\tif (!raw) return;\n\t\t\t\tconst env = this.tryParseEnvelope(raw);\n\t\t\t\tif (!env) return;\n\t\t\t\tif (env.sessionId !== this.sessionId) {\n\t\t\t\t\tlocalStorage.removeItem(k);\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tprivate tryParseEnvelope(raw: string): ItlSessionEnvelope<unknown> | null {\n\t\ttry {\n\t\t\treturn JSON.parse(raw) as ItlSessionEnvelope<unknown>;\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n}\n","import { inject, Injectable, signal } from \"@angular/core\";\nimport { getCookie, setCookie } from \"typescript-cookie\";\nimport { GetCookieAttributes } from \"../functions/cookie\";\nimport { ConfigService } from \"../services/config.service\";\n\ninterface MenuVisibilityEventDetail {\n\tmenuIsVisible: boolean;\n}\n\nexport interface ProductEventDetail {\n\tproductId: string;\n\tproduct: string;\n\ticon: string;\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class GlobalMenuService {\n\tprivate readonly ConfigService = inject(ConfigService);\n\tprivate _isMenuVisible = signal<boolean>(true);\n\tprivate _selectedProduct = signal<ProductEventDetail>({ product: \"\", icon: \"\", productId: \"\" });\n\n\tpublic isMenuVisible = this._isMenuVisible.asReadonly();\n\tpublic selectedProduct = this._selectedProduct.asReadonly();\n\n\tprivate readonly eventMenu = \"MenuBarEvent\";\n\tprivate readonly eventProducts = \"SelectedProductMenuEvent\";\n\n\tprivate readonly COOKIE_PRODUCT = \"intelica:selected-product\";\n\tprivate readonly COOKIE_MENU = \"intelica:menu-visible\";\n\n\tprivate initialized = false;\n\n\tinitialize() {\n\t\tif (this.initialized) return;\n\n\t\tthis.listenMenuEvents();\n\t\tthis.hydrateFromCookies();\n\n\t\tthis.initialized = true;\n\t}\n\n\tprivate hydrateFromCookies(): void {\n\t\tconst productCookie = getCookie(this.COOKIE_PRODUCT);\n\t\tif (productCookie) {\n\t\t\ttry {\n\t\t\t\tconst parsed = JSON.parse(productCookie) as ProductEventDetail;\n\t\t\t\tthis._selectedProduct.set({\n\t\t\t\t\tproduct: parsed.product ?? \"\",\n\t\t\t\t\ticon: parsed.icon ?? \"\",\n\t\t\t\t\tproductId: parsed.productId ?? \"\",\n\t\t\t\t});\n\t\t\t} catch {}\n\t\t}\n\n\t\tconst menuCookie = getCookie(this.COOKIE_MENU);\n\t\tif (menuCookie !== undefined) {\n\t\t\tthis._isMenuVisible.set(menuCookie === \"true\");\n\t\t}\n\t}\n\n\tpublic setMenuVisibility(isVisible: boolean): void {\n\t\tconst cookieAttributesGeneral = GetCookieAttributes(this.ConfigService.environment?.environment ?? \"\");\n\t\tsetCookie(this.COOKIE_MENU, String(isVisible), cookieAttributesGeneral); // 👈 NUEVO\n\t\tthis.emitMenuEvent(isVisible);\n\t}\n\n\tpublic setSelectedProduct(product: ProductEventDetail): void {\n\t\tconst cookieAttributesGeneral = GetCookieAttributes(this.ConfigService.environment?.environment ?? \"\");\n\t\tsetCookie(this.COOKIE_PRODUCT, JSON.stringify(product), cookieAttributesGeneral); // 👈 NUEVO\n\t\tthis.emitSelectedProductEvent(product);\n\t}\n\n\tprivate listenMenuEvents(): void {\n\t\twindow.addEventListener(this.eventMenu, this.onMenuEvent);\n\t\twindow.addEventListener(this.eventProducts, this.onSelectedProductEvent);\n\t}\n\n\tprivate onMenuEvent = (event: Event): void => {\n\t\tconst { menuIsVisible } = (event as CustomEvent<MenuVisibilityEventDetail>).detail ?? {};\n\n\t\tif (typeof menuIsVisible === \"boolean\") {\n\t\t\tthis._isMenuVisible.set(menuIsVisible);\n\t\t\tconst cookieAttributesGeneral = GetCookieAttributes(this.ConfigService.environment?.environment ?? \"\");\n\t\t\tsetCookie(this.COOKIE_MENU, String(menuIsVisible), cookieAttributesGeneral); // 👈 NUEVO\n\t\t}\n\t};\n\n\tprivate onSelectedProductEvent = (event: Event): void => {\n\t\tconst detail = (event as CustomEvent<ProductEventDetail>).detail;\n\t\tif (!detail) return;\n\n\t\tconst { product, icon, productId: authClient } = detail;\n\n\t\tif (typeof product === \"string\" && typeof icon === \"string\" && typeof authClient === \"string\") {\n\t\t\tconst normalized = { product, icon, productId: authClient };\n\n\t\t\tthis._selectedProduct.set(normalized);\n\t\t\tconst cookieAttributesGeneral = GetCookieAttributes(this.ConfigService.environment?.environment ?? \"\");\n\t\t\tsetCookie(this.COOKIE_PRODUCT, JSON.stringify(normalized), cookieAttributesGeneral); // 👈 NUEVO\n\t\t}\n\t};\n\n\tprivate emitMenuEvent(isVisible: boolean): void {\n\t\tconst event = new CustomEvent(this.eventMenu, {\n\t\t\tdetail: { menuIsVisible: isVisible } satisfies MenuVisibilityEventDetail,\n\t\t});\n\t\twindow.dispatchEvent(event);\n\t}\n\n\tprivate emitSelectedProductEvent(selectedProduct: ProductEventDetail): void {\n\t\tconst event = new CustomEvent(this.eventProducts, {\n\t\t\tdetail: { product: selectedProduct.product, icon: selectedProduct.icon, productId: selectedProduct.productId } satisfies ProductEventDetail,\n\t\t});\n\t\twindow.dispatchEvent(event);\n\t}\n}\n","import { Injectable } from \"@angular/core\";\nimport { Observable, shareReplay, throwError } from \"rxjs\";\nimport { catchError } from \"rxjs/operators\";\n\ninterface CacheEntry<T> {\n\texpiresAt: number;\n\tvalue$: Observable<T>;\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class RequestCacheService {\n\tprivate readonly cache = new Map<string, CacheEntry<unknown>>();\n\tprivate readonly maxEntries = 300;\n\tprivate readonly defaultTtlMs = 5 * 60 * 1000;\n\n\tpublic getOrSet<T>(key: string, factory: () => Observable<T>, ttlMs: number = this.defaultTtlMs): Observable<T> {\n\t\tthis.removeExpiredEntries();\n\t\tconst now = Date.now();\n\t\tconst cached = this.cache.get(key) as CacheEntry<T> | undefined;\n\n\t\tif (cached && cached.expiresAt > now) {\n\t\t\treturn cached.value$;\n\t\t}\n\n\t\tconst value$ = factory().pipe(\n\t\t\tshareReplay(1),\n\t\t\tcatchError(error => {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t\treturn throwError(() => error);\n\t\t\t})\n\t\t);\n\n\t\tthis.cache.set(key, { value$, expiresAt: now + Math.max(ttlMs, 0) });\n\t\tthis.enforceCapacityLimit();\n\t\treturn value$;\n\t}\n\n\tpublic invalidate(prefix?: string): void {\n\t\tif (!prefix) {\n\t\t\tthis.cache.clear();\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const key of this.cache.keys()) {\n\t\t\tif (key.startsWith(prefix)) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate removeExpiredEntries(): void {\n\t\tconst now = Date.now();\n\t\tfor (const [key, entry] of this.cache.entries()) {\n\t\t\tif (entry.expiresAt <= now) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate enforceCapacityLimit(): void {\n\t\twhile (this.cache.size > this.maxEntries) {\n\t\t\tconst oldestKey = this.cache.keys().next().value as string | undefined;\n\t\t\tif (!oldestKey) break;\n\t\t\tthis.cache.delete(oldestKey);\n\t\t}\n\t}\n}\n","/**\n * Función de comparación genérica para ordenar objetos por un campo específico.\n *\n * @template T - Tipo genérico que representa la estructura de los objetos a comparar.\n * @param {keyof T} field - El nombre del campo por el cual se realizará la comparación.\n * @param {number} [sortOrder=1] - Orden de la clasificación: 1 para ascendente y -1 para descendente.\n * @returns {(a: T, b: T) => number} - Función de comparación que puede ser utilizada en métodos de ordenación como `Array.prototype.sort`.\n */\nexport function CompareByField<T>(field: keyof T, sortOrder: number = 1) {\n\treturn (a: T, b: T): number => {\n\t\tconst valueA = a[field];\n\t\tconst valueB = b[field];\n\n\t\t// Manejo de valores nulos\n\t\tif (valueA === null && valueB === null) return 0;\n\t\tif (valueA === null) return -sortOrder;\n\t\tif (valueB === null) return sortOrder;\n\n\t\t// Comparación de fechas\n\t\tif (valueA instanceof Date && valueB instanceof Date) {\n\t\t\treturn sortOrder * (valueA.getTime() - valueB.getTime());\n\t\t}\n\n\t\t// Comparación de números\n\t\tif (typeof valueA === \"number\" && typeof valueB === \"number\") {\n\t\t\treturn sortOrder * (valueA - valueB);\n\t\t}\n\n\t\t// Comparación de booleanos\n\t\tif (typeof valueA === \"boolean\" && typeof valueB === \"boolean\") {\n\t\t\treturn sortOrder * (Number(valueA) - Number(valueB));\n\t\t}\n\n\t\t// Comparación de cadenas de texto\n\t\tconst strA = valueA?.toString().toLowerCase() || \"\";\n\t\tconst strB = valueB?.toString().toLowerCase() || \"\";\n\t\treturn sortOrder * strA.localeCompare(strB);\n\t};\n}\n","import JSEncrypt from \"jsencrypt\";\nexport function encryptData(data: any, keyEncrypt: string): string | null {\n\tconst encryptor = new JSEncrypt();\n\tencryptor.setPublicKey(keyEncrypt);\n\tconst encryptedText = encryptor.encrypt(data);\n\tif (!encryptedText) {\n\t\tconsole.error(\"Error al cifrar los datos con RSA\");\n\t\treturn null;\n\t}\n\treturn encryptedText;\n}\n","export class Patterns {\n\tPatternText: string = \"^(?!\\\\s*$)[a-zA-Z0-9-\\\\s]*$\";\n\tPatternEmail: string = \"^[a-zA-Z0-9._+~\\\\-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,}$\";\n\tPatternOnlyLetters: string = \"^[a-zA-Z\\\\s]+$\";\n\tPatternOnlyLettersWithAccents: string = \"^[A-Za-záéíóúÁÉÍÓÚžščřćďňťľźěǎǧȟǐǩǫřšťžŽŠČŘĆĎŇŤĽŹĚǍǦȞǏǨǪŘŠŤŽ\\\\s]+$\";\n\tPatternLettersEmail: string = \"^[A-Za-z0-9@._-]+$\";\n}\nexport function InputValidation(event: KeyboardEvent) {\n\tconst allowedCharacters = /^[a-zA-Z0-9-\\s]$/;\n\tconst inputChar = event.key;\n\tif (!allowedCharacters.test(inputChar)) event.preventDefault();\n}\nexport function DynamicInputValidation(event: KeyboardEvent, pattern: string) {\n\tconst inputChar = event.key;\n\tconst regex = new RegExp(pattern);\n\tif (!regex.test(inputChar)) {\n\t\tevent.preventDefault();\n\t}\n}\nexport function EmailInputValidation(event: KeyboardEvent) {\n\tconst inputChar = event.key;\n\tif (event.ctrlKey || event.altKey || inputChar.length > 1) return;\n\tconst allowedCharacters = /^[a-zA-Z0-9._+@-]$/;\n\tif (!allowedCharacters.test(inputChar)) {\n\t\tevent.preventDefault();\n\t}\n}\n","// notification/dto/recipient-dispatch-error.dto.ts\n\n/**\n * Error mínimo de dispatch para campanas / UI.\n * - Fuente: progress (SignalR) + persistencia (rehidratación recipients)\n * - Key natural: recipientId\n * - Escalable: agrega campos opcionales sin romper consumers.\n */\nexport interface RecipientDispatchError {\n\trecipientId: string;\n\n\t/** Texto del último error (si el backend lo provee) */\n\tlastErrorMessage: string | null;\n\n\t/** Campos opcionales útiles (ya existen en progress) */\n\tnotificationId?: string;\n\tjobId?: string | null;\n\n\tchannelCode?: string;\n\tstatusCode?: string;\n\n\tattempts?: number;\n\tlastAttemptAt?: string | null;\n\n\t/** Identificadores de negocio si los quieres luego */\n\tuserId?: string | null;\n\tclientId?: string | null;\n\tgroupId?: string | null;\n}\n","import { inject, Injectable } from \"@angular/core\";\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\nimport { Observable } from \"rxjs\";\nimport { NotificationRecipientSummaryResponse } from \"./dto/notification-response.dto\";\nimport { UserNotificationInboxItem } from \"./dto/notification-inbox-response.dto\";\nimport { ConfigService } from \"../services/config.service\";\nimport { HtmlPreviewBucket } from \"./dto/notification-request.dto\";\n\n@Injectable({ providedIn: \"root\" })\nexport class NotificationService {\n\tprivate readonly configService = inject(ConfigService);\n\tprivate readonly path = `${this.configService.environment?.notificationsPath}/Notifications`;\n\t/*\n\tprivate readonly defaultHeaders = new HttpHeaders({\n\t\trefreshtoken: \"f06c110a-ea4e-44a9-896f-210f3b387e57\",\n\t\tlanguagecode: \"EN\",\n\t\tpageRoot: \"\",\n\t\tauthorization:\n\t\t\t\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwcmVmZXJyZWRfdXNlcm5hbWUiOiJBbGV4YW5kZXIiLCJmdWxsTmFtZSI6IkFsZXhhbmRlciBUb3JyZSIsInN1YiI6Ijg3ZTQxYzZlLWNmN2EtNDk4MC05YTQ1LThjZjllNWMwOGMzZCIsImVtYWlsIjoiam9oYW4uY2FyYm9uZWxAaW50ZWxpY2EuY29tIiwiYnVzaW5lc3NVc2VyQ2xpZW50R3JvdXBJRCI6ImNlMjE5NDAyLWQyMDAtNGU1Yy1iNzE0LWJkNDJiMjZhNzNkNSIsImJhbmtzSUQiOiJnUlZPUEt6V3BNbHQ2NFE3OWdDcUxlQ1pFeWp2RjVFQVo0TmNMVTQvZlhJMVlvbERPeEFOV0NWTUpFYkJYRDJQUHkvUi8xdDVQVHBFZ08vcFFPcnMwVnNNeWRONkVocEY5MzRCRDJFRXhlelVyakZWWVduWitrcCtObGRLOU56VWg4VjZaRjBVTzEyN0JIaG12aGhUNzZMRm51Zm9nSndUTHVuOW5qMFpEaSsxV3MxTHkzZytzWkNYSVdTelR3QjBEc1g5Y2tXSTJrWmFHeWhHVlFhTlliT3hGYzU5UU9xV0pxQUJqdmVBdFNEaGNQdFZta3RIOXFaaEJ5Tkphdkh5R1pkWWJScXovcUZPOW1HUC92NjVScFZ5djNwejhCZUtvMVlJVW5vSUFqSU9udzRTMEkzcmxaSTNrTExBRFFOdnhBSk81NjgvZTVvdWlVZFd3SDlJd2c9PSIsImlzSW50ZWxpY2EiOiIxIiwiY2xpZW50R3JvdXBJRCI6ImU5ZDc1ODY3LTZkMDQtNGNiMC1iZjMxLTE5MmI5Y2VjMzVkYSIsImNsaWVudElEIjoiMDYzMGU0MDEtMzk1Ny00OTU5LTljYTUtYjM1MGVkNmU5Yjk2IiwiYm5rR3JvdXBJRCI6IjAiLCJpbXJwUHJvamVjdElEIjoiMTAwNjMyIiwiZXhwIjoxNzY4ODU3MTUwLCJpc3MiOiJpbnRlbGljYS5jb20iLCJhdWQiOiJpbnRlbGljYS5jb20ifQ.n0BGAUHrp6BiA_XpgTw6WdresOk_C3aaON7V7AcF5uo\",\n\t});\n*/\n\tconstructor(private http: HttpClient) {}\n\n\tgetUserNotificacions(): Observable<UserNotificationInboxItem[]> {\n\t\treturn this.http.get<UserNotificationInboxItem[]>(`${this.path}/users/notifications`);\n\t}\n\n\tmarkAsRead(recipientId: string): Observable<NotificationRecipientSummaryResponse> {\n\t\treturn this.http.put<NotificationRecipientSummaryResponse>(`${this.path}/users/recipients/${recipientId}/read`, {});\n\t}\n\n\tmarkAllAsRead(): Observable<NotificationRecipientSummaryResponse[]> {\n\t\treturn this.http.put<NotificationRecipientSummaryResponse[]>(`${this.path}/users/recipients/read/all`, {});\n\t}\n\n\tmarkAsHidden(recipientId: string): Observable<NotificationRecipientSummaryResponse> {\n\t\treturn this.http.put<NotificationRecipientSummaryResponse>(`${this.path}/users/recipients/${recipientId}/hidden`, {});\n\t}\n\n\thtmlPreview(request: HtmlPreviewBucket): Observable<string> {\n\t\treturn this.http.post(`${this.path}/html/preview`, request, { responseType: \"text\" });\n\t}\n}\n","import { inject, Injectable } from \"@angular/core\";\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\nimport { ConfigService } from \"../services/config.service\";\nimport { catchError, map, Observable, of } from \"rxjs\";\nimport { NotificationJobResponse, NotificationRecipientSummaryResponse, NotificationResponse } from \"./dto/notification-response.dto\";\nimport { CreateNotificationJobRequest, CreateNotificationsForJobRequest } from \"./dto/notification-request.dto\";\n\n@Injectable({ providedIn: \"root\" })\nexport class NotificationJobService {\n\tprivate readonly configService = inject(ConfigService);\n\tprivate readonly path = `${this.configService.environment?.notificationsPath}/NotificationJobs`;\n\t/*\n\tprivate readonly defaultHeaders = new HttpHeaders({\n\t\trefreshtoken: \"f06c110a-ea4e-44a9-896f-210f3b387e57\",\n\t\tlanguagecode: \"EN\",\n\t\tpageRoot: \"\",\n\t\tauthorization:\n\t\t\t\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwcmVmZXJyZWRfdXNlcm5hbWUiOiJBbGV4YW5kZXIiLCJmdWxsTmFtZSI6IkFsZXhhbmRlciBUb3JyZSIsInN1YiI6Ijg3ZTQxYzZlLWNmN2EtNDk4MC05YTQ1LThjZjllNWMwOGMzZCIsImVtYWlsIjoiam9oYW4uY2FyYm9uZWxAaW50ZWxpY2EuY29tIiwiYnVzaW5lc3NVc2VyQ2xpZW50R3JvdXBJRCI6ImNlMjE5NDAyLWQyMDAtNGU1Yy1iNzE0LWJkNDJiMjZhNzNkNSIsImJhbmtzSUQiOiJnUlZPUEt6V3BNbHQ2NFE3OWdDcUxlQ1pFeWp2RjVFQVo0TmNMVTQvZlhJMVlvbERPeEFOV0NWTUpFYkJYRDJQUHkvUi8xdDVQVHBFZ08vcFFPcnMwVnNNeWRONkVocEY5MzRCRDJFRXhlelVyakZWWVduWitrcCtObGRLOU56VWg4VjZaRjBVTzEyN0JIaG12aGhUNzZMRm51Zm9nSndUTHVuOW5qMFpEaSsxV3MxTHkzZytzWkNYSVdTelR3QjBEc1g5Y2tXSTJrWmFHeWhHVlFhTlliT3hGYzU5UU9xV0pxQUJqdmVBdFNEaGNQdFZta3RIOXFaaEJ5Tkphdkh5R1pkWWJScXovcUZPOW1HUC92NjVScFZ5djNwejhCZUtvMVlJVW5vSUFqSU9udzRTMEkzcmxaSTNrTExBRFFOdnhBSk81NjgvZTVvdWlVZFd3SDlJd2c9PSIsImlzSW50ZWxpY2EiOiIxIiwiY2xpZW50R3JvdXBJRCI6ImU5ZDc1ODY3LTZkMDQtNGNiMC1iZjMxLTE5MmI5Y2VjMzVkYSIsImNsaWVudElEIjoiMDYzMGU0MDEtMzk1Ny00OTU5LTljYTUtYjM1MGVkNmU5Yjk2IiwiYm5rR3JvdXBJRCI6IjAiLCJpbXJwUHJvamVjdElEIjoiMTAwNjMyIiwiZXhwIjoxNzY4ODU3MTUwLCJpc3MiOiJpbnRlbGljYS5jb20iLCJhdWQiOiJpbnRlbGljYS5jb20ifQ.n0BGAUHrp6BiA_XpgTw6WdresOk_C3aaON7V7AcF5uo\",\n\t});\n*/\n\tconstructor(private http: HttpClient) {}\n\n\tcreateJobNotifications(payload: CreateNotificationJobRequest): Observable<NotificationJobResponse> {\n\t\treturn this.http.post<NotificationJobResponse>(`${this.path}/notifications`, payload, {});\n\t}\n\n\tcreateJob(payload: CreateNotificationJobRequest): Observable<NotificationJobResponse> {\n\t\treturn this.http.post<NotificationJobResponse>(`${this.path}`, payload, {});\n\t}\n\n\tgetJob(jobId: string): Observable<NotificationJobResponse> {\n\t\treturn this.http.get<NotificationJobResponse>(`${this.path}/${jobId}`);\n\t}\n\n\tcreateNotifications(jobId: string, payload: CreateNotificationsForJobRequest[]): Observable<NotificationResponse> {\n\t\treturn this.http.post<NotificationResponse>(`${this.path}/${jobId}/notifications`, payload, {});\n\t}\n\n\tgetActiveJob(featureCode: string, origin?: string): Observable<NotificationJobResponse | null> {\n\t\tlet url = `${this.path}/active?featureCode=${encodeURIComponent(featureCode)}`;\n\t\tif (origin) {\n\t\t\turl += `&origin=${encodeURIComponent(origin)}`;\n\t\t}\n\n\t\treturn this.http.get<NotificationJobResponse[]>(url, {}).pipe(\n\t\t\tmap(list => (Array.isArray(list) && list.length > 0 ? list[0] : null)),\n\t\t\tcatchError(err => {\n\t\t\t\tconsole.error(\"Error obteniendo active jobs\", err);\n\t\t\t\treturn of(null);\n\t\t\t})\n\t\t);\n\t}\n\n\tgetRecipients(jobId: string): Observable<NotificationRecipientSummaryResponse[]> {\n\t\treturn this.http.get<NotificationRecipientSummaryResponse[]>(`${this.path}/${jobId}/recipients`, {});\n\t}\n}\n","import { inject, Injectable, NgZone } from \"@angular/core\";\nimport * as signalR from \"@microsoft/signalr\";\nimport { Subject } from \"rxjs\";\nimport { ConfigService } from \"../services/config.service\";\nimport { RecipientNotification } from \"./dto/notification-message-response.dto\";\nimport { RecipientProgressNotification } from \"./dto/notification-progress-message-response.dto\";\nimport { CallbackExecutionResult } from \"./dto/notification-callback-message-response.dto\";\n\n@Injectable({ providedIn: \"root\" })\nexport class NotificationSignalRService {\n\tprivate readonly configService = inject(ConfigService);\n\tprivate readonly path = `${this.configService.environment?.signalPath}/websocket`;\n\n\tprivate hubConnection?: signalR.HubConnection;\n\tprivate startPromise?: Promise<void>;\n\n\t// Mantiene los grupos a los que ya nos unimos (idempotencia + rejoin tras reconexión)\n\tprivate joinedGroups = new Set<string>();\n\n\tprivate notificationSendSubject = new Subject<RecipientNotification>();\n\tnotificationSend$ = this.notificationSendSubject.asObservable();\n\n\tprivate jobProgressSubject = new Subject<RecipientProgressNotification>();\n\tjobProgress$ = this.jobProgressSubject.asObservable();\n\n\tprivate callbackResultSubject = new Subject<CallbackExecutionResult>();\n\tcallbackResult$ = this.callbackResultSubject.asObservable();\n\n\tconstructor(private zone: NgZone) {}\n\n\t/**\n\t * Inicia la conexión una sola vez. Reutiliza la promesa para evitar carreras.\n\t */\n\tstartConnection(): Promise<void> {\n\t\tif (this.startPromise) return this.startPromise;\n\n\t\tthis.hubConnection = new signalR.HubConnectionBuilder().withUrl(this.path).withAutomaticReconnect().build();\n\t\tthis.hubConnection.keepAliveIntervalInMilliseconds = 15_000;\n\t\tthis.hubConnection.serverTimeoutInMilliseconds = 120_000;\n\n\t\tthis.registerListeners();\n\t\tthis.registerReconnectHandlers();\n\n\t\tthis.startPromise = this.hubConnection.start().catch(err => {\n\t\t\tconsole.error(\"Error starting SignalR connection\", err);\n\t\t\tthis.startPromise = undefined; // permitir reintentar\n\t\t\tthrow err;\n\t\t});\n\n\t\treturn this.startPromise;\n\t}\n\n\t/**\n\t * Se une a un grupo de forma idempotente.\n\t * Importante: esta función garantiza que la conexión esté iniciada.\n\t */\n\tasync joinScope(scopeType: string, scopeId: string): Promise<void> {\n\t\tawait this.startConnection();\n\t\tif (!this.hubConnection) return;\n\n\t\tconst groupName = `${scopeType}-${scopeId}`;\n\n\t\tif (this.joinedGroups.has(groupName)) return;\n\n\t\tawait this.hubConnection.invoke(\"Connect\", groupName);\n\t\tthis.joinedGroups.add(groupName);\n\t}\n\n\t/**\n\t * Sale de un grupo y actualiza el estado local.\n\t * Requiere que el Hub implemente el método Disconnect(groupName).\n\t */\n\tasync leaveScope(scopeType: string, scopeId: string): Promise<void> {\n\t\tif (!this.hubConnection) return;\n\n\t\tconst groupName = `${scopeType}-${scopeId}`;\n\n\t\tif (!this.joinedGroups.has(groupName)) return;\n\n\t\tawait this.hubConnection.invoke(\"Disconnect\", groupName);\n\t\tthis.joinedGroups.delete(groupName);\n\t}\n\n\t/**\n\t * Detiene la conexión y limpia estado local.\n\t * Útil si quieres liberar recursos al cerrar sesión.\n\t */\n\tasync stopConnection(): Promise<void> {\n\t\tif (!this.hubConnection) return;\n\n\t\ttry {\n\t\t\tawait this.hubConnection.stop();\n\t\t} finally {\n\t\t\tthis.joinedGroups.clear();\n\t\t\tthis.hubConnection = undefined;\n\t\t\tthis.startPromise = undefined;\n\t\t}\n\t}\n\n\tprivate registerListeners(): void {\n\t\tif (!this.hubConnection) return;\n\n\t\tthis.hubConnection.on(\"NotificationSend\", (raw: string) => {\n\t\t\tthis.zone.run(() => {\n\t\t\t\tconst data = JSON.parse(raw) as RecipientNotification;\n\t\t\t\tthis.notificationSendSubject.next(data);\n\t\t\t});\n\t\t});\n\n\t\tthis.hubConnection.on(\"JobProgress\", (raw: string) => {\n\t\t\tthis.zone.run(() => {\n\t\t\t\tconst data = JSON.parse(raw) as RecipientProgressNotification;\n\t\t\t\tthis.jobProgressSubject.next(data);\n\t\t\t});\n\t\t});\n\n\t\tthis.hubConnection.on(\"CallbackResult\", (raw: string) => {\n\t\t\tthis.zone.run(() => {\n\t\t\t\tconst data = JSON.parse(raw) as CallbackExecutionResult;\n\t\t\t\tthis.callbackResultSubject.next(data);\n\t\t\t});\n\t\t});\n\n\t\t// Opcional (tu hub lo emite): útil para debugging\n\t\tthis.hubConnection.on(\"Connect\", (_msg: string) => {});\n\t}\n\n\t/**\n\t * SignalR pierde pertenencia a grupos tras reconexión: re-join automático.\n\t */\n\tprivate registerReconnectHandlers(): void {\n\t\tif (!this.hubConnection) return;\n\n\t\tthis.hubConnection.onreconnected(async () => {\n\t\t\ttry {\n\t\t\t\tfor (const groupName of this.joinedGroups) {\n\t\t\t\t\tawait this.hubConnection!.invoke(\"Connect\", groupName);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(\"Error rejoining groups after reconnection\", e);\n\t\t\t}\n\t\t});\n\n\t\tthis.hubConnection.onclose(() => {\n\t\t\t// Mantén joinedGroups para poder rejoin si el usuario vuelve a startConnection()\n\t\t\tthis.startPromise = undefined;\n\t\t});\n\t}\n}\n","import { Injectable } from \"@angular/core\";\nimport { BehaviorSubject, Subject, firstValueFrom, Observable } from \"rxjs\";\nimport { NotificationJobService } from \"./notification-job.service\";\nimport { NotificationSignalRService } from \"./notification-signalr.service\";\nimport { JobState } from \"./dto/job-state.dto\";\nimport { NotificationDraft } from \"./dto/notification-draft.dto\";\nimport { RecipientNotification } from \"./dto/notification-message-response.dto\";\nimport { NotificationRecipientSummaryResponse } from \"./dto/notification-response.dto\";\nimport { CreateNotificationJobRequest, CreateNotificationsForJobRequest, HtmlPreviewBucket } from \"./dto/notification-request.dto\";\nimport { RecipientDispatchError } from \"./dto/recipient-dispatch-error.dto\";\nimport { NotificationService } from \"./notification.service\";\nimport { UserNotificationInboxItem } from \"./dto/notification-inbox-response.dto\";\nimport { RecipientProgressNotification } from \"./dto/notification-progress-message-response.dto\";\nimport { CallbackExecutionResult } from \"./dto/notification-callback-message-response.dto\";\nimport { JobStatusCatalog, OriginCatalog } from \"./dto/notification-catalog.dto\";\n\n@Injectable({ providedIn: \"root\" })\nexport class NotificationOrchestratorService {\n\t// Config actual (feature/origin) del “scope”\n\tprivate origin?: OriginCatalog;\n\tprivate featureCode?: string;\n\n\tprivate currentJobId?: string;\n\tprivate subscribedJobId?: string;\n\n\t// --- streams públicos (feature/origin job state)\n\tprivate readonly jobStateSubject = new BehaviorSubject<JobState>({\n\t\tstatus: \"pending\",\n\t\tprocessedCount: 0,\n\t\ttotalCount: 0,\n\t\tprocessedNotificationsCount: 0,\n\t\ttotalNotificationsCount: 0,\n\t});\n\treadonly jobState$ = this.jobStateSubject.asObservable();\n\n\tprivate readonly dispatchErrorsMapSubject = new BehaviorSubject<Map<string, RecipientDispatchError>>(new Map());\n\treadonly dispatchErrors$ = this.dispatchErrorsMapSubject.asObservable();\n\n\tprivate readonly callbackRawSubject = new Subject<CallbackExecutionResult>();\n\treadonly callbackRaw$ = this.callbackRawSubject.asObservable();\n\n\t/**\n\t * Router de progreso por jobId (para UIs multi-job).\n\t */\n\tprivate readonly jobProgressSubjects = new Map<string, Subject<RecipientProgressNotification>>();\n\tprivate readonly jobWatchRefCount = new Map<string, number>();\n\n\t/**\n\t * Router de NotificationSend por userId (campana/inbox).\n\t */\n\tprivate readonly userInboxSubjects = new Map<string, Subject<RecipientNotification>>();\n\tprivate readonly userWatchRefCount = new Map<string, number>();\n\n\t// Guard anti-carreras para rehidratación\n\tprivate initInFlight?: Promise<void>;\n\n\tconstructor(\n\t\tprivate jobService: NotificationJobService,\n\t\tprivate notificationService: NotificationService,\n\t\tprivate signalR: NotificationSignalRService\n\t) {\n\t\t// stream global SignalR => orquestador enruta\n\t\tthis.signalR.jobProgress$.subscribe(update => this.onJobProgress(update));\n\t\tthis.signalR.callbackResult$.subscribe(update => this.onCallbackResult(update));\n\t\tthis.signalR.notificationSend$.subscribe(update => this.onNotificationSend(update));\n\t}\n\n\t// ---------------------------------------------------------------------\n\t// API pública para UI: Inbox user-scoped (NotificationSend)\n\t// ---------------------------------------------------------------------\n\n\tasync watchUserInbox(userId: string): Promise<Observable<RecipientNotification>> {\n\t\tif (!userId) throw new Error(\"userId is required\");\n\n\t\tconst current = this.userWatchRefCount.get(userId) ?? 0;\n\t\tthis.userWatchRefCount.set(userId, current + 1);\n\n\t\tawait this.signalR.joinScope(\"user\", userId);\n\n\t\treturn this.userInbox$(userId);\n\t}\n\n\tasync unwatchUserInbox(userId: string): Promise<void> {\n\t\tif (!userId) return;\n\n\t\tconst current = this.userWatchRefCount.get(userId) ?? 0;\n\n\t\tif (current <= 1) {\n\t\t\tthis.userWatchRefCount.delete(userId);\n\n\t\t\tawait this.signalR.leaveScope(\"user\", userId);\n\n\t\t\tconst subj = this.userInboxSubjects.get(userId);\n\t\t\tif (subj) {\n\t\t\t\tsubj.complete();\n\t\t\t\tthis.userInboxSubjects.delete(userId);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tthis.userWatchRefCount.set(userId, current - 1);\n\t}\n\n\tuserInbox$(userId: string): Observable<RecipientNotification> {\n\t\tlet subj = this.userInboxSubjects.get(userId);\n\t\tif (!subj) {\n\t\t\tsubj = new Subject<RecipientNotification>();\n\t\t\tthis.userInboxSubjects.set(userId, subj);\n\t\t}\n\t\treturn subj.asObservable();\n\t}\n\n\t// ---------------------------------------------------------------------\n\t// API pública para UI: Job progress por jobId (PRG)\n\t// ---------------------------------------------------------------------\n\n\tasync watchJobProgress(jobId: string): Promise<Observable<RecipientProgressNotification>> {\n\t\tif (!jobId) throw new Error(\"jobId is required\");\n\n\t\tconst current = this.jobWatchRefCount.get(jobId) ?? 0;\n\t\tthis.jobWatchRefCount.set(jobId, current + 1);\n\n\t\tawait this.signalR.joinScope(\"job\", jobId);\n\n\t\treturn this.jobProgress$(jobId);\n\t}\n\n\tasync unwatchJobProgress(jobId: string): Promise<void> {\n\t\tif (!jobId) return;\n\n\t\tconst current = this.jobWatchRefCount.get(jobId) ?? 0;\n\n\t\tif (current <= 1) {\n\t\t\tthis.jobWatchRefCount.delete(jobId);\n\n\t\t\tawait this.signalR.leaveScope(\"job\", jobId);\n\n\t\t\tconst subj = this.jobProgressSubjects.get(jobId);\n\t\t\tif (subj) {\n\t\t\t\tsubj.complete();\n\t\t\t\tthis.jobProgressSubjects.delete(jobId);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tthis.jobWatchRefCount.set(jobId, current - 1);\n\t}\n\n\tjobProgress$(jobId: string): Observable<RecipientProgressNotification> {\n\t\tlet subj = this.jobProgressSubjects.get(jobId);\n\t\tif (!subj) {\n\t\t\tsubj = new Subject<RecipientProgressNotification>();\n\t\t\tthis.jobProgressSubjects.set(jobId, subj);\n\t\t}\n\t\treturn subj.asObservable();\n\t}\n\n\t// ---------------------------------------------------------------------\n\t// Scope feature/origin (tu lógica existente)\n\t// ---------------------------------------------------------------------\n\n\trehydrateScope(origin: OriginCatalog, featureCode: string): Promise<void> {\n\t\tthis.origin = origin;\n\t\tthis.featureCode = featureCode;\n\n\t\tif (this.initInFlight) return this.initInFlight;\n\n\t\tthis.initInFlight = (async () => {\n\t\t\ttry {\n\t\t\t\tawait this.rehydrateActiveJobInternal();\n\t\t\t} finally {\n\t\t\t\tthis.initInFlight = undefined;\n\t\t\t}\n\t\t})();\n\n\t\treturn this.initInFlight;\n\t}\n\n\tgetCurrentJobId(): string | undefined {\n\t\treturn this.currentJobId;\n\t}\n\n\tgetJobStateSnapshot(): JobState {\n\t\treturn this.jobStateSubject.value;\n\t}\n\n\tasync ensureActiveOrCreateJobNotifications(notificationDraft: NotificationDraft[]): Promise<{ jobId: string; mode: \"active\" | \"created\" }> {\n\t\tif (!this.origin || !this.featureCode) throw new Error(\"Scope not initialized. Call rehydrateScope(featureCode, origin) first.\");\n\n\t\tif (this.currentJobId) {\n\t\t\treturn { jobId: this.currentJobId, mode: \"active\" };\n\t\t}\n\n\t\tconst jobPayload: CreateNotificationJobRequest = {\n\t\t\tfeatureCode: this.featureCode,\n\t\t\torigin: this.origin,\n\t\t\ttotalCount: notificationDraft?.length ?? 0,\n\t\t\ttotalNotificationsCount: notificationDraft?.filter(n => n.recipients?.some(r => r.isRequiredForProcessed)).length ?? 0,\n\t\t};\n\n\t\tconst job = await firstValueFrom(this.jobService.createJob(jobPayload));\n\t\tthis.currentJobId = job.jobId;\n\n\t\tthis.setJobState({\n\t\t\tjobId: this.currentJobId,\n\t\t\tstatus: \"pending\",\n\t\t\tprocessedCount: 0,\n\t\t\ttotalCount: jobPayload.totalCount,\n\t\t\tprocessedNotificationsCount: 0,\n\t\t\ttotalNotificationsCount: jobPayload.totalNotificationsCount,\n\t\t});\n\n\t\tawait this.subscribeToJob(this.currentJobId);\n\n\t\tconst notifications: CreateNotificationsForJobRequest[] = notificationDraft.map(draft => ({\n\t\t\toriginReference: `${draft.originReference}-${job.jobId}`,\n\t\t\tnotificationTypeCode: draft.notificationTypeCode,\n\t\t\tdestination: draft.destination,\n\t\t\tdestinationLabel: draft.destinationLabel,\n\t\t\tbucketName: draft.bucketName,\n\t\t\ttemplateName: draft.templateName,\n\t\t\ttemplateData: draft.templateData,\n\t\t\tpriorityCode: draft.priorityCode,\n\t\t\ttitle: draft.title,\n\t\t\tbody: draft.body,\n\t\t\tmetaData: draft.metaData,\n\t\t\trecipients: draft.recipients,\n\t\t\tactions: draft.actions,\n\t\t\tattachments: draft.attachments,\n\t\t\tcallbacks: draft.callbacks,\n\t\t}));\n\n\t\tawait firstValueFrom(this.jobService.createNotifications(job.jobId, notifications));\n\n\t\treturn { jobId: this.currentJobId, mode: \"created\" };\n\t}\n\n\tasync ensureCreateJobNotifications(origin: OriginCatalog, featureCode: string, notificationDraft: NotificationDraft[]): Promise<void> {\n\t\tif (!origin || !featureCode) throw new Error(\"Scope not initialized.\");\n\n\t\tconst jobPayload: CreateNotificationJobRequest = {\n\t\t\tfeatureCode: featureCode,\n\t\t\torigin: origin,\n\t\t\ttotalCount: 1,\n\t\t\ttotalNotificationsCount: 1,\n\t\t\tnotifications: notificationDraft.map(draft => ({\n\t\t\t\toriginReference: draft.originReference,\n\t\t\t\tnotificationTypeCode: draft.notificationTypeCode,\n\t\t\t\tdestination: draft.destination,\n\t\t\t\tdestinationLabel: draft.destinationLabel,\n\t\t\t\tbucketName: draft.bucketName,\n\t\t\t\ttemplateName: draft.templateName,\n\t\t\t\ttemplateData: draft.templateData,\n\t\t\t\tpriorityCode: draft.priorityCode,\n\t\t\t\ttitle: draft.title,\n\t\t\t\tbody: draft.body,\n\t\t\t\tmetaData: draft.metaData,\n\t\t\t\trecipients: draft.recipients,\n\t\t\t\tactions: draft.actions,\n\t\t\t\tattachments: draft.attachments,\n\t\t\t\tcallbacks: draft.callbacks,\n\t\t\t})),\n\t\t};\n\n\t\tawait firstValueFrom(this.jobService.createJobNotifications(jobPayload));\n\t}\n\n\tasync markAsRead(recipientId: string): Promise<NotificationRecipientSummaryResponse> {\n\t\tconst result = await firstValueFrom(this.notificationService.markAsRead(recipientId));\n\t\treturn result;\n\t}\n\n\tasync markAllAsRead(): Promise<NotificationRecipientSummaryResponse[]> {\n\t\tconst result = await firstValueFrom(this.notificationService.markAllAsRead());\n\t\treturn result;\n\t}\n\n\tasync markAsHidden(recipientId: string): Promise<NotificationRecipientSummaryResponse> {\n\t\tconst result = await firstValueFrom(this.notificationService.markAsHidden(recipientId));\n\t\treturn result;\n\t}\n\n\tasync htmlPreview(request: HtmlPreviewBucket): Promise<string> {\n\t\tconst result = await firstValueFrom(this.notificationService.htmlPreview(request));\n\t\treturn result;\n\t}\n\n\tasync getUserNotificacions(): Promise<UserNotificationInboxItem[]> {\n\t\tconst items = await firstValueFrom(this.notificationService.getUserNotificacions());\n\t\treturn items;\n\t}\n\n\tresetLocal(): void {\n\t\tthis.currentJobId = undefined;\n\t\tthis.setJobState({ status: \"pending\", processedCount: 0, totalCount: 0, processedNotificationsCount: 0, totalNotificationsCount: 0 });\n\t\tthis.dispatchErrorsMapSubject.next(new Map());\n\t}\n\n\tprivate async rehydrateActiveJobInternal(): Promise<void> {\n\t\tif (!this.featureCode || !this.origin) return;\n\n\t\tconst active = await firstValueFrom(this.jobService.getActiveJob(this.featureCode, this.origin));\n\n\t\tif (!active) {\n\t\t\tthis.currentJobId = undefined;\n\t\t\tthis.setJobState({ status: \"idle\", processedCount: 0, totalCount: 0, processedNotificationsCount: 0, totalNotificationsCount: 0 });\n\t\t\tthis.dispatchErrorsMapSubject.next(new Map());\n\t\t\treturn;\n\t\t}\n\n\t\tthis.currentJobId = active.jobId;\n\n\t\tthis.setJobState({\n\t\t\tjobId: active.jobId,\n\t\t\tstatus: (active.statusCode?.toLowerCase() as JobStatusCatalog) || \"running\",\n\t\t\tprocessedCount: active.processedCount ?? 0,\n\t\t\ttotalCount: active.totalCount ?? 0,\n\t\t\tprocessedNotificationsCount: active.processedNotificationsCount ?? 0,\n\t\t\ttotalNotificationsCount: active.totalNotificationsCount ?? 0,\n\t\t});\n\n\t\tconst recipients: NotificationRecipientSummaryResponse[] = await firstValueFrom(this.jobService.getRecipients(active.jobId));\n\t\tconst map = new Map<string, RecipientDispatchError>();\n\n\t\tfor (const r of recipients) {\n\t\t\tif (r.recipientId && r.statusCode === \"failed\") {\n\t\t\t\tmap.set(r.recipientId, {\n\t\t\t\t\trecipientId: r.recipientId,\n\t\t\t\t\tlastErrorMessage: r.lastErrorMessage ?? null,\n\t\t\t\t\tchannelCode: r.channelCode || undefined,\n\t\t\t\t\tstatusCode: r.statusCode,\n\t\t\t\t\tattempts: r.attempts,\n\t\t\t\t\tlastAttemptAt: r.lastAttemptAt ?? null,\n\t\t\t\t\tuserId: r.userId ?? null,\n\t\t\t\t\tclientId: r.clientId ?? null,\n\t\t\t\t\tgroupId: r.groupId ?? null,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tthis.dispatchErrorsMapSubject.next(map);\n\n\t\tawait this.subscribeToJob(active.jobId);\n\t}\n\n\tprivate async subscribeToJob(jobId: string): Promise<void> {\n\t\tif (this.subscribedJobId && this.subscribedJobId !== jobId) {\n\t\t\tawait this.signalR.leaveScope(\"job\", this.subscribedJobId);\n\t\t\tawait this.signalR.leaveScope(\"callBack\", this.subscribedJobId);\n\t\t}\n\n\t\tthis.subscribedJobId = jobId;\n\n\t\tawait this.signalR.joinScope(\"job\", jobId);\n\t\tawait this.signalR.joinScope(\"callBack\", jobId);\n\t}\n\n\tprivate onNotificationSend(update: RecipientNotification): void {\n\t\t// Enrutado por userId para campana/inbox\n\t\tif (update.userId) {\n\t\t\tthis.userInboxSubjects.get(update.userId)?.next(update);\n\t\t}\n\t}\n\n\tprivate onJobProgress(update: RecipientProgressNotification): void {\n\t\t// Enrutado por jobId para UIs multi-job\n\t\tif (update.jobId) {\n\t\t\tthis.jobProgressSubjects.get(update.jobId)?.next(update);\n\t\t}\n\n\t\t// Lógica existente: solo aplica al job \"actual\" (feature/origin)\n\t\tif (!this.currentJobId || update.jobId !== this.currentJobId) return;\n\n\t\tif (update.recipientId) {\n\t\t\tconst current = this.dispatchErrorsMapSubject.value;\n\t\t\tconst next = new Map(current);\n\n\t\t\tif ((update.jobStatusCode ?? \"\").toLowerCase() === \"failed\") {\n\t\t\t\tnext.set(update.recipientId, {\n\t\t\t\t\trecipientId: update.recipientId,\n\t\t\t\t\tlastErrorMessage: update.lastErrorMessage ?? null,\n\n\t\t\t\t\tnotificationId: update.notificationId,\n\t\t\t\t\tjobId: update.jobId ?? null,\n\n\t\t\t\t\tchannelCode: update.channelCode,\n\t\t\t\t\tstatusCode: update.jobStatusCode,\n\n\t\t\t\t\tattempts: update.attempts,\n\t\t\t\t\tlastAttemptAt: update.lastAttemptAt ?? null,\n\n\t\t\t\t\tuserId: update.userId ?? null,\n\t\t\t\t\tclientId: update.clientId ?? null,\n\t\t\t\t\tgroupId: update.groupId ?? null,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tnext.delete(update.recipientId);\n\t\t\t}\n\n\t\t\tthis.dispatchErrorsMapSubject.next(next);\n\t\t}\n\n\t\tif (typeof update.jobProcessedCount === \"number\" && typeof update.jobTotalCount === \"number\") {\n\t\t\tthis.setJobState({\n\t\t\t\tjobId: update.jobId,\n\t\t\t\tstatus: update.jobStatusCode?.toLowerCase() as JobStatusCatalog,\n\t\t\t\tprocessedCount: update.jobProcessedCount,\n\t\t\t\ttotalCount: update.jobTotalCount,\n\t\t\t\tprocessedNotificationsCount: update.jobProcessedNotificationsCount,\n\t\t\t\ttotalNotificationsCount: update.jobTotalNotificationsCount,\n\t\t\t});\n\t\t}\n\n\t\tif (update.jobStatusCode?.toLowerCase() === \"completed\") {\n\t\t\tthis.setJobState({\n\t\t\t\tjobId: this.jobStateSubject.value.jobId,\n\t\t\t\tstatus: this.jobStateSubject.value.status,\n\t\t\t\tprocessedCount: this.jobStateSubject.value.processedCount,\n\t\t\t\ttotalCount: this.jobStateSubject.value.totalCount,\n\t\t\t\tprocessedNotificationsCount: this.jobStateSubject.value.processedNotificationsCount,\n\t\t\t\ttotalNotificationsCount: this.jobStateSubject.value.totalNotificationsCount,\n\t\t\t});\n\t\t} else if (this.jobStateSubject.value.status === \"pending\") {\n\t\t\tthis.setJobState({ ...this.jobStateSubject.value, status: \"pending\" });\n\t\t} else if (this.jobStateSubject.value.status === \"running\") {\n\t\t\tthis.setJobState({ ...this.jobStateSubject.value, status: \"running\" });\n\t\t}\n\t}\n\n\tprivate onCallbackResult(update: CallbackExecutionResult): void {\n\t\tthis.callbackRawSubject.next(update);\n\t}\n\n\tprivate setJobState(state: JobState): void {\n\t\tthis.jobStateSubject.next({\n\t\t\tjobId: state.jobId,\n\t\t\tstatus: state.status,\n\t\t\tprocessedCount: state.processedCount,\n\t\t\ttotalCount: state.totalCount,\n\t\t\tprocessedNotificationsCount: state.processedNotificationsCount,\n\t\t\ttotalNotificationsCount: state.totalNotificationsCount,\n\t\t});\n\t}\n}\n","//Pipes\nexport * from \"./lib/pipes/term.pipes\";\nexport * from \"./lib/pipes/amount.pipe\";\nexport * from \"./lib/pipes/truncate.pipe\";\n//Constants\nexport * from \"./lib/constants/cookieConfiguration.constants\";\nexport * from \"./lib/constants/color.constants\";\nexport * from \"./lib/constants/date-mode-options.constants\";\n//Interceptors\nexport * from \"./lib/interceptor/error.interceptor\";\nexport * from \"./lib/interceptor/responseHeaders.interceptor\";\n//Enums\nexport * from \"./lib/enums/sort-order.enum\";\nexport * from \"./lib/enums/alert-type.enum\";\n//Guards\nexport * from \"./lib/guards/PageRootChildGuard\";\n//Components\nexport * from \"./lib/components/spinner/spinner.component\";\nexport * from \"./lib/components/table/table.component\";\nexport * from \"./lib/components/table/column.component\";\nexport * from \"./lib/components/table/model/search.model\";\nexport * from \"./lib/components/table/model/sort.model\";\nexport * from \"./lib/components/tree-table/tree-table.component\";\nexport * from \"./lib/components/tree-table/column.component\";\nexport * from \"./lib/components/matrix-table/matrix-table.component\";\nexport * from \"./lib/components/matrix-table/column.component\";\nexport * from \"./lib/components/actions-menu/actions-menu.component\";\nexport * from \"./lib/components/actions-menu/action.directive\";\nexport * from \"./lib/components/filter-chips/filter-chips.component\";\nexport * from \"./lib/components/filters/filters.component\";\nexport * from \"./lib/components/search/search.component\";\nexport * from \"./lib/components/search/model/search.model\";\nexport * from \"./lib/components/paginator/paginator.component\";\nexport * from \"./lib/components/modal-dialog/modal-dialog.component\";\nexport * from \"./lib/components/button-split/button-split.component\";\nexport * from \"./lib/components/button-split/itemsplit.directive\";\nexport * from \"./lib/components/record-per-page/record-per-page.component\";\nexport * from \"./lib/components/record-per-page/model/properties.model\";\nexport * from \"./lib/components/sorting/sorting.component\";\nexport * from \"./lib/components/sorting/model/cascade-filter\";\nexport * from \"./lib/components/sorting/model/order.constants\";\nexport * from \"./lib/components/popover/popover.component\";\nexport * from \"./lib/components/popover/model/popover-information.model\";\nexport * from \"./lib/components/echart/echart.component\";\nexport * from \"./lib/components/template-menu/template-menu.component\";\nexport * from \"./lib/components/multi-select/multi-select.component\";\nexport * from \"./lib/components/datepicker/datepicker.component\";\nexport * from \"./lib/components/datepicker/datepicker-button-types.constants\";\nexport * from \"./lib/components/skeleton/skeleton.component\";\nexport * from \"./lib/components/skeleton-table/skeleton-table.component\";\nexport * from \"./lib/components/skeleton-chart/skeleton-chart.component\";\nexport * from \"./lib/components/skeleton-chart/data.directive\";\nexport * from \"./lib/components/table-fetch/table-fetch.component\";\nexport * from \"./lib/components/table-fetch/model/query.model\";\nexport * from \"./lib/components/intelica-alert/intelica-alert.component\";\nexport * from \"./lib/components/add-favorites/add-favorites.component\";\nexport * from \"./lib/components/context-selector/context-selector.component\";\nexport * from \"./lib/components/context-selector/context-selector.dto\";\nexport * from \"./lib/components/setsesioninformation/setsesioninformation.component\";\nexport * from \"./lib/components/bread-crumb/bread-crumb.component\";\nexport * from \"./lib/components/title/title.component\";\nexport * from \"./lib/components/dashboard-qs/dashboard-qs.component\";\n//Directives\nexport * from \"./lib/directives/filters/checkbox-filter.directive\";\nexport * from \"./lib/directives/filters/date-filter.directive\";\nexport * from \"./lib/directives/filters/select-detail-filter.directive\";\nexport * from \"./lib/directives/filters/select-filter.directive\";\nexport * from \"./lib/directives/filters/template.directive\";\nexport * from \"./lib/directives/filters/text-area-filter.directive\";\nexport * from \"./lib/directives/filters/text-filter.directive\";\nexport * from \"./lib/directives/filters/text-range-filter.directive\";\nexport * from \"./lib/directives/table/cell-checkbox.directive\";\n\n//Models\nexport * from \"./lib/model/filter.model\";\nexport * from \"./lib/model/alert.model\"; // includes ALERT_ICON_OVERRIDES token\nexport * from \"./lib/model/pageInformation.model\";\n\n//Services\nexport * from \"./lib/services/htmlToExcel.service\";\nexport * from \"./lib/services/shared.service\";\nexport * from \"./lib/services/config.service\";\nexport * from \"./lib/services/spinner.service\";\nexport * from \"./lib/services/sweet-alert.service\";\nexport * from \"./lib/services/alert.service\";\nexport * from \"./lib/services/globalTerm.service\";\nexport * from \"./lib/services/term.service\";\nexport * from \"./lib/services/globalFeatureFlag.service\";\nexport * from \"./lib/services/featureFlag.service\";\nexport * from \"./lib/services/language.service\";\nexport * from \"./lib/services/echart.service\";\nexport * from \"./lib/services/profile.service\";\nexport * from \"./lib/services/skeleton.service\";\nexport * from \"./lib/services/element.service\";\nexport * from \"./lib/services/intelicaSession.service\";\nexport * from \"./lib/services/globalMenu.service\";\nexport * from \"./lib/services/globalFavorite.service\";\nexport * from \"./lib/services/request-cache.service\";\nexport * from \"./lib/services/googleTaskManager.service\";\nexport * from \"./lib/services/shared\";\n//Funcions\nexport * from \"./lib/functions/compareByField\";\nexport * from \"./lib/functions/encryptRSA\";\nexport * from \"./lib/functions/inputValidation\";\nexport * from \"./lib/functions/decryptRSA\";\nexport * from \"./lib/functions/cookie\";\n\n//Notification\nexport * from \"./lib/notification/dto/job-state.dto\";\nexport * from \"./lib/notification/dto/notification-catalog.dto\";\nexport * from \"./lib/notification/dto/notification-draft.dto\";\nexport * from \"./lib/notification/dto/notification-inbox-response.dto\";\nexport * from \"./lib/notification/dto/notification-message-response.dto\";\nexport * from \"./lib/notification/dto/notification-progress-message-response.dto\";\nexport * from \"./lib/notification/dto/notification-callback-message-response.dto\";\nexport * from \"./lib/notification/dto/notification-request.dto\";\nexport * from \"./lib/notification/dto/notification-response.dto\";\nexport * from \"./lib/notification/dto/recipient-dispatch-error.dto\";\nexport * from \"./lib/notification/notification.service\";\nexport * from \"./lib/notification/notification-job.service\";\nexport * from \"./lib/notification/notification-signalr.service\";\nexport * from \"./lib/notification/notificacion-orchestrator.service\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FeatureFlagService","i6","i7","i1","i2","i3","i4","i1.TermPipe","i1.FilterTypeEnum","i8","i5","tap","i1.TableComponent","catchError","i1.NotificationJobService","i2.NotificationService","i3.NotificationSignalRService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACM,SAAU,mBAAmB,CAAC,WAAmB,EAAA;AACtD,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC;SAC7B,KAAK,CAAC,GAAG;AACT,SAAA,KAAK,CAAC,WAAW,IAAI,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;SACrC,IAAI,CAAC,GAAG,CAAC;IACX,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC5C,IAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;AACrD;;MCNa,wBAAwB,CAAA;AACjC,IAAA,OAAO,CAAC,EAAU,EAAA;QACd,MAAM,CAAC,GAAG,MAAa;QACvB,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE;QACrC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAC3E,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC/C,QAAA,MAAM,CAAC,KAAK,GAAG,IAAI;AACnB,QAAA,MAAM,CAAC,GAAG,GAAG,CAAA,2CAAA,EAA8C,EAAE,EAAE;AAC/D,QAAA,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;IAChE;wGATS,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cADX,MAAM,EAAA,CAAA;;4FACnB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCQrB,aAAa,CAAA;AACR,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AACzB,IAAA,wBAAwB,GAAG,MAAM,CAAC,wBAAwB,CAAC;AAC5E,IAAA,WAAW;IACX,kBAAkB,GAA8B,IAAI;AACnC,IAAA,eAAe,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC;AAC3D,IAAA,SAAS,GAAuB,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;AAC1E,IAAA,MAAM,IAAI,GAAA;AACT,QAAA,MAAM,WAAW,GAAG,CAAA,EAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAA,EAAA,EAAK,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAA,EAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,WAAW,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAA,CAAE,GAAG,EAAE,+BAA+B;AACxL,QAAA,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS;AAAE,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACjG,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAc,WAAW,CAAC,CAAC,SAAS,EAAE;AAC5E,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,WAAW,KAAK,aAAa,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK;YAAE,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IAC9I;IACA,qBAAqB,GAAA;AACpB,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9D;AACA,IAAA,WAAW,CAAC,QAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;IACpC;IACA,WAAW,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK;IAClC;wGArBY,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cADA,MAAM,EAAA,CAAA;;4FACnB,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;AAwB5B,SAAU,uBAAuB,CAAC,KAAoB,EAAA;AAC3D,IAAA,OAAO,MAAM,KAAK,CAAC,IAAI,EAAE;AAC1B;;MC5Ba,WAAW,CAAA;AACN,IAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAC1B,IAAA,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;IAChD,QAAQ,CAAC,YAAoB,EAAE,QAAgB,EAAA;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAqB,CAAA,EAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAA,kBAAA,EAAqB,QAAQ,aAAa,YAAY,CAAA,CAAE,CAAC;IAC7I;wGALY,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAX,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cADE,MAAM,EAAA,CAAA;;4FACnB,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCErB,iBAAiB,CAAA;IAC7B,KAAK,GAAuB,EAAE;IACvB,YAAY,GAAW,EAAE;AAChC,IAAA,UAAU,GAAG,MAAM,CAAU,KAAK,sDAAC;IACnC,QAAQ,GAAW,EAAE;AACJ,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IACtC,aAAa,GAAG,gBAAgB;IAChC,cAAc,GAAG,UAAU;IAE1B,uBAAuB,GAAG,MAAW;AACrD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,EAAE;QAClD,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,YAAY,EAAE,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC;AACpH,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;AAChC,IAAA,CAAC;AAED,IAAA,WAAA,GAAA;QACC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,uBAAuB,CAAC;IAC1E;AAEA,IAAA,UAAU,CAAC,QAAgB,EAAA;AAC1B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,EAAE;QAClD,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,YAAY,EAAE,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC;AACpH,QAAA,IAAI,QAAQ,IAAI,EAAE,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;YACzB;QACD;AACA,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;IAChC;AAEQ,IAAA,YAAY,CAAC,YAAoB,EAAA;AACxC,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE;AACxB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;YACzB;QACD;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;AAC3E,YAAA,IAAI,CAAC,YAAY,GAAG,YAAY;AAChC,YAAA,IAAI,CAAC,KAAK,GAAG,QAAQ;AACrB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,CAAC,CAAC;IACH;IAEQ,sBAAsB,GAAA;AAC7B,QAAA,MAAM,eAAe,GAAG,CAAC,SAAS,CAAC,QAAQ,IAAI,IAAI,EAAE,WAAW,EAAE;AAClE,QAAA,IAAI,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC;AAAE,YAAA,OAAO,IAAI;AACjD,QAAA,IAAI,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC;AAAE,YAAA,OAAO,IAAI;AACjD,QAAA,OAAO,IAAI;IACZ;wGAjDY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cADJ,MAAM,EAAA,CAAA;;4FACnB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACJlC;MAIa,QAAQ,CAAA;AACH,IAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC9D,IAAA,SAAS,CAAC,QAAgB,EAAE,WAAmB,IAAI,EAAE,OAAe,CAAC,EAAA;QACpE,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,YAAY,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE,IAAI,EAAE;AAE5C,QAAA,IAAI,CAAC,YAAY;AAAE,YAAA,OAAO,GAAG;QAE7B,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,EAAE,QAAQ,KAAK,YAAY,CAAC,EAAE,SAAS,IAAI,GAAG;QAEjF,IAAI,OAAO,IAAI,KAAK,QAAQ;AAAE,YAAA,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC;QAExD,IAAI,IAAI,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG;QAC/D,IAAI,IAAI,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE;AAEzC,QAAA,OAAO,IAAI;IACZ;wGAhBY,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA;AAAR,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAQ,cAFK,MAAM,EAAA,CAAA;;4FAEnB,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAFpB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;kBACjC,IAAI;mBAAC,EAAE,IAAI,EAAE,MAAM,EAAE;;;MCET,gBAAgB,CAAA;IAC5B,SAAS,CAAC,KAAyC,EAAE,WAAA,GAAuB,KAAK,EAAE,aAAA,GAAwB,CAAC,EAAE,aAAA,GAAyB,KAAK,EAAA;AAC3I,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,IAAI,CAAC,EAAE;AACxD,YAAA,OAAO,GAAG;QACX;AAEA,QAAA,MAAM,YAAY,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK;AAEjF,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AAC/B,YAAA,OAAO,GAAG;QACX;AAEA,QAAA,IAAI,cAAsB;QAE1B,IAAI,WAAW,EAAE;YAChB,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,aAAa,CAAC;QAClE;aAAO;YACN,cAAc,GAAG,IAAI,CAAC,4BAA4B,CAAC,YAAY,EAAE,aAAa,CAAC;QAChF;QAEA,IAAI,aAAa,EAAE;AAClB,YAAA,IAAI,YAAY,GAAG,CAAC,EAAE;AACrB,gBAAA,cAAc,GAAG,CAAA,CAAA,EAAI,cAAc,CAAA,CAAA,CAAG;YACvC;QACD;AAEA,QAAA,OAAO,cAAc;IACtB;IAEQ,cAAc,CAAC,KAAa,EAAE,aAAqB,EAAA;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAChC,QAAA,MAAM,QAAQ,GAAG;AAChB,YAAA,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;AAC5B,YAAA,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;AAC3B,YAAA,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;AAC3B,YAAA,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;SAC3B;QAED,KAAK,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,QAAQ,EAAE;AACzC,YAAA,IAAI,QAAQ,IAAI,KAAK,EAAE;AACtB,gBAAA,OAAO,CAAC,QAAQ,GAAG,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,MAAM;YAC1D;QACD;AAEA,QAAA,OAAO,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC;IACvC;IAEQ,4BAA4B,CAAC,KAAa,EAAE,aAAqB,EAAA;QACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAChC,QAAA,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AACrC,YAAA,qBAAqB,EAAE,aAAa;AACpC,YAAA,qBAAqB,EAAE,aAAa;AACpC,SAAA,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;IACpB;wGArDY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cALhB,MAAM,EAAA,CAAA;;4FAKN,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACX,oBAAA,UAAU,EAAE,MAAM;AAClB,iBAAA;;kBACA,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACL,oBAAA,IAAI,EAAE,QAAQ;AACd,iBAAA;;;MCDY,YAAY,CAAA;IACxB,SAAS,CAAC,KAAU,EAAE,IAAA,GAAe,EAAE,EAAE,QAAQ,GAAG,KAAK,EAAA;AACxD,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,KAAK;AACxB,QAAA,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI;AAAE,YAAA,OAAO,KAAK;QACtC,IAAI,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC;AAC7C,QAAA,OAAO,CAAC,QAAQ,GAAG,CAAA,EAAG,cAAc,CAAA,GAAA,CAAK,GAAG,cAAc,CAAC,WAAW,EAAE;IACzE;wGANY,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAJC,MAAM,EAAA,CAAA;;4FAInB,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;kBACjC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACL,oBAAA,IAAI,EAAE,UAAU;AAChB,iBAAA;;;ACJD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACtE,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;AACrC,MAAM,uBAAuB,GAAqB,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM;;ACF7F,MAAM,KAAK,GAAG;AACpB,IAAA,UAAU,EAAE,SAAS;AACrB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,UAAU,EAAE,SAAS;AACrB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,KAAK,EAAE,SAAS;;AAKV,MAAM,QAAQ,GAAG,CAAC,IAAe,KAAY;AACnD,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC;AACnB;;ACjBO,MAAM,eAAe,GAAG;IAC7B,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;IACtC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;IACxC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE;;;MCGzB,kBAAkB,CAAA;AACb,IAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAC1B,IAAA,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;AACvD,IAAA,aAAa,CAAC,QAAgB,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgC,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,iBAAiB,gBAAgB,QAAQ,CAAA,CAAE,CAAC;IACtI;wGALY,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,cADL,MAAM,EAAA,CAAA;;4FACnB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCDrB,wBAAwB,CAAA;AAKhB,IAAA,sBAAA;IAJZ,QAAQ,GAAW,EAAE;AAC7B,IAAA,OAAO,GAAG,MAAM,CAAU,KAAK,mDAAC;AAChC,IAAA,kBAAkB,GAAG,MAAM,CAAgC,EAAE,8DAAC;AAE9D,IAAA,WAAA,CAAoB,sBAA0C,EAAA;QAA1C,IAAA,CAAA,sBAAsB,GAAtB,sBAAsB;IAAuB;AACjE,IAAA,UAAU,CAAC,QAAgB,EAAA;AAC1B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;;;;;;IAMvB;AACA,IAAA,MAAM,CAAC,eAAuB,EAAA;QAC7B,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,eAAe,CAAC,IAAI,IAAI,CAAC;IACjF;IACA,OAAO,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC/B;IACA,WAAW,GAAA;QACV,OAAO,IAAI,CAAC,QAAQ;IACrB;wGAvBY,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,cADX,MAAM,EAAA,CAAA;;4FACnB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCErB,iBAAiB,CAAA;AAC7B,IAAA,OAAO,GAAsB;AAC5B,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,WAAW,EAAE;AACZ,YAAA,KAAK,EAAE,oBAAoB;AAC3B,YAAA,SAAS,EAAE,wBAAwB;AACnC,YAAA,aAAa,EAAE,sBAAsB;AACrC,YAAA,YAAY,EAAE,qBAAqB;AACnC,SAAA;AACD,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,eAAe,EAAE,6BAA6B;AAC9C,QAAA,QAAQ,EAAE,CAAA,EAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAA,iCAAA,CAAmC;AACtE,QAAA,gBAAgB,EAAE,KAAK;AACvB,QAAA,iBAAiB,EAAE,IAAI;AACvB,QAAA,gBAAgB,EAAE,EAAE;AACpB,QAAA,IAAI,EAAE,EAAE;KACR;AAED,IAAA,UAAU,CAAC,OAAe,EAAA;QACzB,IAAI,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3C,QAAA,OAAO,CAAC,gBAAgB,GAAG,KAAK;AAChC,QAAA,OAAO,CAAC,IAAI,GAAG,OAAO;AACtB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IAC1B;AAEA,IAAA,cAAc,CAAC,OAAA,GAAkB,EAAE,EAAE,SAAkB,KAAK,EAAA;QAC3D,IAAI,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3C,QAAA,OAAO,CAAC,gBAAgB,GAAG,KAAK;AAChC,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,GAAG,uBAAuB,GAAG,OAAO;;AAC/E,YAAA,OAAO,CAAC,IAAI,GAAG,OAAO;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IACnB;IAEA,UAAU,CAAC,OAAe,EAAE,iBAAyB,EAAE,gBAAwB,EAAE,KAAc,EAAE,IAAa,EAAE,UAAmB,EAAA;QAClI,IAAI,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3C,QAAA,OAAO,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE;AAC3B,QAAA,OAAO,CAAC,gBAAgB,GAAG,gBAAgB,IAAI,EAAE,GAAG,KAAK,GAAG,IAAI;AAChE,QAAA,OAAO,CAAC,IAAI,GAAG,OAAO;AACtB,QAAA,OAAO,CAAC,iBAAiB,GAAG,iBAAiB;AAC7C,QAAA,OAAO,CAAC,gBAAgB,GAAG,gBAAgB;AAC3C,QAAA,OAAO,CAAC,IAAI,GAAG,IAAI;QACnB,IAAI,UAAU,EAAE;YACf,OAAO,CAAC,WAAW,GAAG;AACrB,gBAAA,KAAK,EAAE,UAAU;aACjB;QACF;AACA,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IAC1B;AAEA,IAAA,cAAc,CAAC,KAAa,EAAE,IAAY,EAAE,iBAAyB,EAAA;QACpE,IAAI,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3C,QAAA,OAAO,CAAC,gBAAgB,GAAG,KAAK;AAChC,QAAA,OAAO,CAAC,KAAK,GAAG,KAAK;AACrB,QAAA,OAAO,CAAC,IAAI,GAAG,IAAI;AACnB,QAAA,OAAO,CAAC,iBAAiB,GAAG,iBAAiB;AAC7C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IAC1B;wGAxDY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFjB,MAAM,EAAA,CAAA;;4FAEN,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACX,oBAAA,UAAU,EAAE,MAAM;AAClB,iBAAA;;;MCFY,cAAc,CAAA;AAC1B,IAAA,SAAS,GAAG,MAAM,CAAU,KAAK,qDAAC;IAC3B,IAAI,GAAA;AACV,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1B;IACO,IAAI,GAAA;AACV,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IACzB;wGAPY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADD,MAAM,EAAA,CAAA;;4FACnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCOrB,gBAAgB,GAAsB,CAAC,GAAG,EAAE,IAAI,KAAI;IAChE,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAChD,IAAI,IAAI,EAAE;AACT,QAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC;YAC1B,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;AAC/C,SAAA,CAAC;AACF,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB;AACA,IAAA,MAAM,wBAAwB,GAAG,MAAM,CAAC,wBAAwB,CAAC;AACjE,IAAA,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AAC7C,IAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACnD,IAAA,MAAM,aAAa,GAAkB,MAAM,CAAC,aAAa,CAAC;IAC1D,MAAM,cAAc,GAA0C,EAAE;IAChE,MAAM,sBAAsB,GAAG,aAAa,CAAC,WAAW,EAAE,QAAQ,IAAI,EAAE;IACxE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;AAC1C,QAAA,cAAc,CAAC,QAAQ,CAAC,GAAG,kBAAkB;AAC7C,QAAA,cAAc,CAAC,cAAc,CAAC,GAAG,kBAAkB;QACnD,cAAc,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE;QAC1D,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE;QAChE,cAAc,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,WAAW,EAAE,QAAQ,IAAI,EAAE;QACtE,cAAc,CAAC,UAAU,CAAC,GAAG,wBAAwB,CAAC,WAAW,EAAE;QACnE,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE;QAC5D,cAAc,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC,WAAW,EAAE,WAAW,IAAI,EAAE;QAC5E,cAAc,CAAC,QAAQ,CAAC,GAAG,sBAAsB,IAAI,EAAE,GAAG,EAAE,IAAI,SAAS,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;IACzG;AACA,IAAA,IAAI,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;AACtE,IAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAC3D,SAAS,mBAAmB,CAAC,KAAwB,EAAA;QACpD,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;QACzC,cAAc,CAAC,IAAI,EAAE;QACrB,MAAM,sBAAsB,GAAG,CAAA,EAAG,aAAa,CAAC,WAAW,EAAE,iBAAiB,CAAA,UAAA,EAAa,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAA,UAAA,EAAa,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAA,CAAE;QACjK,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;AAAE,YAAA,iBAAiB,CAAC,UAAU,CAAC,oEAAoE,CAAC;AAC3I,aAAA,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG;AAAE,YAAA,iBAAiB,CAAC,UAAU,CAAC,mDAAmD,CAAC;AAC1G,aAAA,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG;AAAE,YAAA,iBAAiB,CAAC,UAAU,CAAC,wBAAwB,CAAC;AAC/E,aAAA,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,EAAE;YAC7B,iBAAiB,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;AAC/C,YAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,sBAAsB;QAC9C;AAAO,aAAA,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,EAAE;YAC/B,iBAAiB,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;YAC/C,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM;QAC9C;;YAAO,iBAAiB,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;QACxD,OAAO,UAAU,CAAC,MAAK;YACtB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO;AAC5B,QAAA,CAAC,CAAC;IACH;AACD;;MChDa,0BAA0B,GAAsB,CAAC,GAAG,EAAE,IAAI,KAAI;IAC1E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CACpB,GAAG,CAAC,KAAK,IAAG;AACX,QAAA,IAAI,KAAK,YAAY,YAAY,EAAE;YAClC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YACtE,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC5C,IAAI,CAAC,MAAM,EAAE;AACZ,gBAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO;gBAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;AACxC,gBAAA,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,EAAE;AAAE,oBAAA,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,uBAAuB,CAAC;YAC9F;QACD;IACD,CAAC,CAAC,CACF;AACF;;ICnBY;AAAZ,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,cAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAO;AACP,IAAA,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,CAAA,GAAA,MAAS;AACX,CAAC,EAHW,cAAc,KAAd,cAAc,GAAA,EAAA,CAAA,CAAA;;ACA1B;;;AAGG;IACS;AAAZ,CAAA,UAAY,SAAS,EAAA;;AAEpB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;;AAEnB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;;AAEnB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AAChB,CAAC,EAPW,SAAS,KAAT,SAAS,GAAA,EAAA,CAAA,CAAA;AASrB;;;AAGG;IACS;AAAZ,CAAA,UAAY,eAAe,EAAA;;AAE1B,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;;AAEnB,IAAA,eAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;;AAEjC,IAAA,eAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC9B,CAAC,EAPW,eAAe,KAAf,eAAe,GAAA,EAAA,CAAA,CAAA;;MCbd,kBAAkB,CAAA;IAC9B,gBAAgB,CAAC,KAA6B,EAAE,MAA2B,EAAA;AAC1E,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI;AACrC,QAAA,IAAI,UAAU,GAAG,UAAU,CAAC,EAAE;YAC7B,KAAK,CAAC,IAAI,GAAG;gBACZ,GAAG,KAAK,CAAC,IAAI;AACb,gBAAA,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC;aAChC;QACF;AACA,QAAA,OAAO,IAAI;IACZ;wGAVY,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,cADL,MAAM,EAAA,CAAA;;4FACnB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCKrB,gBAAgB,CAAA;AACX,IAAA,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC;AACvD,IAAA,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS;IACxC,WAAW,GAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,qCAAqC;wGAHxE,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,uECR7B,govDA2tCA,EAAA,MAAA,EAAA,CAAA,+VAAA,CAAA,EAAA,CAAA;;4FDntCa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,WACd,EAAE,EAAA,QAAA,EAAA,govDAAA,EAAA,MAAA,EAAA,CAAA,+VAAA,CAAA,EAAA;;;MEIC,cAAc,CAAA;AACR,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAE5C,SAAS,CACP,KAAU,EACV,IAQY,EAAA;QAEZ,IAAI,KAAK,IAAI,IAAI;AAAE,YAAA,OAAO,EAAE;QAE5B,QAAQ,IAAI;AACV,YAAA,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC;AAC3C,YAAA,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC;AAC7C,YAAA,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC;AAC5C,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AAC/B,YAAA,KAAK,UAAU;gBACb,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;AACrC,YAAA,KAAK,UAAU;gBACb,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;AACrC,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACjC,YAAA;AACE,gBAAA,OAAO,KAAK;;IAElB;AAEA,IAAA,aAAa,CAAC,IAAc,EAAA;QAC1B,QAAQ,IAAI;AACV,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,MAAM;AACf,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,IAAI;AACb,YAAA;AACE,gBAAA,OAAO,QAAQ;;IAErB;IAEA,eAAe,CAAC,KAAU,EAAE,IAAY,EAAA;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAgB,CAAC;AAEpD,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9C,YAAA,OAAO,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAC/B,KAAK,CAAC,CAAC,CAAC,EACR,OAAO,CACR,CAAA,GAAA,EAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;QACrD;QAEA,IAAI,KAAK,EAAE;AACT,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE;QACtD;AAEA,QAAA,OAAO,EAAE;IACX;AAEQ,IAAA,UAAU,CAAC,KAAU,EAAA;AAC3B,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAAE,YAAA,OAAO,EAAE;AAEpC,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC3B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AACjC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AACjC,QAAA,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI;AAEtC,QAAA,KAAK,GAAG,KAAK,GAAG,EAAE;QAClB,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,EAAE;AAC1B,QAAA,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC5C,QAAA,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC9C,QAAA,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;QAE9C,OAAO,CAAA,EAAG,EAAE,CAAA,CAAA,EAAI,EAAE,IAAI,EAAE,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE;IACpC;IAEQ,aAAa,CAAC,KAAU,EAAE,MAAc,EAAA;AAC9C,QAAA,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC;QAC7B,IAAI,KAAK,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,EAAE;AACzB,QAAA,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;IAC5B;AAEQ,IAAA,YAAY,CAAC,KAAU,EAAA;AAC7B,QAAA,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC;QAC7B,IAAI,KAAK,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,EAAE;QAEzB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QAC5B,IAAI,MAAM,IAAI,QAAQ,IAAI,MAAM,IAAI,GAAG,EAAE;;AAEvC,YAAA,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1B;AAAO,aAAA,IAAI,MAAM,GAAG,QAAQ,EAAE;AAC5B,YAAA,OAAO,GAAG,CAAC,QAAQ,EAAE;QACvB;aAAO;AACL,YAAA,OAAO,GAAG,CAAC,QAAQ,EAAE;QACvB;IACF;wGAtGW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;MCPY,mBAAmB,CAAA;AACxB,IAAA,OAAgB,IAAI,GAAW,QAAQ;AACvC,IAAA,OAAgB,IAAI,GAAW,WAAW;AAC1C,IAAA,OAAgB,IAAI,GAAW,MAAM;AACrC,IAAA,OAAgB,WAAW,GAAW,QAAQ;AAC9C,IAAA,OAAgB,WAAW,GAAW,MAAM;AAC5C,IAAA,OAAgB,QAAQ,GAAW,YAAY;AAC/C,IAAA,OAAgB,SAAS,GAAW,YAAY;AAChD,IAAA,OAAgB,QAAQ,GAAW,YAAY;AAC/C,IAAA,OAAgB,SAAS,GAAW,UAAU;AAC9C,IAAA,OAAgB,cAAc,GAAW,YAAY;;;MCDhD,aAAa,CAAA;AA2CJ,IAAA,QAAA;AA1Cb,IAAA,gBAAgB,GAAG,IAAI,OAAO,EAAW;AAChD,IAAA,SAAS,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;AACtC,IAAA,eAAe,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC;AAC3C,IAAA,iBAAiB,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;AAC9C,IAAA,iBAAiB,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC;AAC7C,IAAA,iBAAiB,GAAG,IAAI,OAAO,EAAU;IACzC,OAAO,GAAG,CAAC;AACX,IAAA,UAAU,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;AACvC,IAAA,cAAc,GAAG,IAAI,eAAe,CAAW,EAAE,CAAC;IAClD,MAAM,GAAuB,CAAC;AAC9B,IAAA,eAAe,GAAqB,IAAI,OAAO,EAAW;AAC1D,IAAA,MAAM,GAAG;AACP,QAAA,EAAE,EAAE;YACF,SAAS;YACT,UAAU;YACV,OAAO;YACP,OAAO;YACP,KAAK;YACL,MAAM;YACN,MAAM;YACN,QAAQ;YACR,WAAW;YACX,SAAS;YACT,UAAU;YACV,UAAU;AACX,SAAA;AACD,QAAA,EAAE,EAAE;YACF,OAAO;YACP,SAAS;YACT,OAAO;YACP,OAAO;YACP,MAAM;YACN,OAAO;YACP,OAAO;YACP,QAAQ;YACR,YAAY;YACZ,SAAS;YACT,WAAW;YACX,WAAW;AACZ,SAAA;KACF;AACD,IAAA,gCAAgC;AAChC,IAAA,WAAA,CAAoB,QAAkB,EAAA;QAAlB,IAAA,CAAA,QAAQ,GAAR,QAAQ;IAAa;;AAEzC,IAAA,YAAY,CAAC,CAAM,EAAA;AACjB,QAAA,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/C;AACA,IAAA,gBAAgB,CAAC,MAAc,EAAA;AAC7B,QAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,YAAA,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;AAAE,gBAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;AACxD,YAAA,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;AAC5B,YAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC;QAC9D;AACA,QAAA,OAAO,MAAM;IACf;IACA,qBAAqB,CAAC,GAAW,EAAE,WAAgB,EAAA;QACjD,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,CAAM,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IACrE;IACA,uBAAuB,CAAC,GAAW,EAAE,WAAgB,EAAA;QACnD,QACE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,CAAM,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5D,aAAC,WAAW,CAAC,MAAM,IAAI,CAAC,CAAC;IAE7B;AACA,IAAA,eAAe,CACb,GAAW,EACX,WAAkB,EAClB,OAA6B,EAAA;QAE7B,IAAI,CAAC,OAAO,EAAE,MAAM;YAClB,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,CAAM,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEvE,IAAI,MAAM,GAA2B,WAAW,CAAC,MAAM,CACrD,CAAC,GAA2B,EAAE,IAAS,KAAI;YACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7D,YAAA,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC;AAChD,YAAA,OAAO,GAAG;QACZ,CAAC,EACD,EAAE,CACH;QACD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE;QAC9C,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;QACvC,IAAI,UAAU,IAAI,CAAC,CAAC;AAClB,YAAA,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC;AAC1E,QAAA,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1D;AACA,IAAA,iBAAiB,CAAC,KAAa,EAAA;AAC7B,QAAA,KAAK,GAAG,KAAK,EAAE,QAAQ,EAAE,IAAI,MAAM;QACnC,IAAI,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAAE,YAAA,OAAO,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG;;AAClE,YAAA,OAAO,KAAK,CAAC,QAAQ,EAAE;IAC9B;AACA,IAAA,YAAY,CAAC,KAAa,EAAE,UAAkB,EAAE,UAAkB,EAAA;AAChE,QAAA,OAAO,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE;AACnC,YAAA,qBAAqB,EAAE,UAAU;AACjC,YAAA,qBAAqB,EAAE,UAAU;AAClC,SAAA,CAAC;IACJ;AACA,IAAA,qBAAqB,CAAC,KAAU,EAAA;QAC9B,IAAI,GAAG,GAAG,KAAK;AACf,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,YAAA,MAAM,GAAG,GAAI,KAAe,CAAC,UAAqB;AAClD,YAAA,GAAG,GAAG,GAAG,CAAC,EAAE,KAAK,kBAAkB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC;QACnE;AACA,QAAA,OAAO,GAAG;IACZ;IACA,YAAY,CAAC,GAAY,EAAE,CAAS,EAAA;QAClC,IAAI,GAAG,GAAG,EAAE;AACZ,QAAA,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;QACzB,IAAI,OAAO,GAAG,EAAE;AAChB,QAAA,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC/B,QAAA,IAAI,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC;AAAE,YAAA,OAAO,KAAK;AAC5D,QAAA,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAA;AAC5B,YAAA,OAAO,GAAG,CAAC,EAAE,KAAK,CAAC;AACrB,QAAA,CAAC,CAAC;AACF,QAAA,IACE,CAAC,GAAG;aACH,GAAG,CAAC,OAAO,KAAK,MAAM,IAAI,GAAG,CAAC,aAAa,KAAK,IAAI,CAAC;YACtD,CAAC,KAAK,CAAC,EACP;YACA,GAAG,GAAG,IAAI;QACZ;AACA,QAAA,IACE,CAAC,GAAG;AACJ,YAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAA;gBACtB,OAAO,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClC,YAAA,CAAC,CAAC;YAEF,GAAG,GAAG,IAAI;AACZ,QAAA,IAAI,GAAG,CAAC,aAAa,IAAI,CAAC,GAAG,EAAE;AAC7B,YAAA,CAAC,EAAE;YACH,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;QAC/C;AACA,QAAA,OAAO,GAAG;IACZ;AACA,IAAA,yBAAyB,CAAC,YAAiB,EAAE,OAAY,EAAE,KAAa,EAAA;AACtE,QAAA,OAAO;cACH,YAAY,CAAC,SAAS,GAAG,KAAK,GAAG,OAAO,CAAC,KAAK;AAChD,cAAE,OAAO,CAAC,KAAK,CAAC;IACpB;IACA,cAAc,CAAC,qBAA4B,EAAE,WAAgB,EAAA;AAC3D,QAAA,OAAO,qBAAqB,CAAC,MAAM,GAAG;cAClC,WAAW,CAAC,SAAS;gBACnB,KAAK;AACL,gBAAA,WAAW,CAAC,WAAW;gBACvB,KAAK;AACL,gBAAA,WAAW,CAAC;AAChB,cAAE,WAAW,CAAC,kBAAkB;IACpC;IACA,QAAQ,CAAC,KAAU,EAAE,SAAc,EAAA;AACjC,QAAA,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,IAAI,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,UAAU;IACpD;AACA,IAAA,kBAAkB,CAAC,MAAW,EAAA;QAC5B,IAAI,KAAK,CAAC,MAAM,CAAC;YAAE,MAAM,GAAG,CAAC;QAC7B,IAAI,SAAS,GAAW,EAAE;AAC1B,QAAA,IAAI,SAAS,GACX,MAAM,KAAK;AACT,cAAE;AACF,cAAE,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE;AAC7B,gBAAA,qBAAqB,EAAE,CAAC;AACxB,gBAAA,qBAAqB,EAAE,CAAC;AACzB,aAAA,CAAC;QACR,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,YAAA,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE;AACzC,gBAAA,qBAAqB,EAAE,CAAC;AACxB,gBAAA,qBAAqB,EAAE,CAAC;AACzB,aAAA,CAAC;AACJ,QAAA,IAAI,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;YACxD,SAAS;gBACP;qBACG,cAAc,CAAC,OAAO,EAAE;AACvB,oBAAA,qBAAqB,EAAE,CAAC;AACxB,oBAAA,qBAAqB,EAAE,CAAC;iBACzB;AACA,qBAAA,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI;QAC/B;aAAO,IAAI,MAAM,GAAG,CAAC;YAAE,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI;;AAChE,YAAA,SAAS,GAAG,SAAS,GAAG,GAAG;AAChC,QAAA,IACE,MAAM,CAAC,iBAAiB,KAAK,MAAM;YACnC,MAAM,CAAC,iBAAiB,KAAK,MAAM;YAEnC,SAAS,GAAG,EAAE;AAChB,QAAA,OAAO,SAAS;IAClB;AACA,IAAA,iBAAiB,CAAC,MAAW,EAAA;QAC3B,IAAI,KAAK,CAAC,MAAM,CAAC;YAAE,MAAM,GAAG,CAAC;QAC7B,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACjC,IAAI,SAAS,GAAW,EAAE;AAC1B,QAAA,IAAI,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AACtD,YAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG;aAClD,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,EAAE;YACrC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG;QACzE;aAAO,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,MAAM,EAAE;YAC9C,SAAS;gBACP,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;AACjC,qBAAA,QAAQ;AACR,qBAAA,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK;QAChC;aAAO,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,EAAE;YAC3C,SAAS;gBACP,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;AAC9B,qBAAA,QAAQ;AACR,qBAAA,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK;QAChC;AAAO,aAAA,IAAI,MAAM,GAAG,CAAC,EAAE;YACrB,SAAS;gBACP,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;AAC3B,qBAAA,QAAQ;AACR,qBAAA,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK;QAChC;aAAO,IAAI,MAAM,GAAG,IAAI;AAAE,YAAA,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;aACpE,IAAI,UAAU,GAAG,MAAM;AAC1B,YAAA,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,IAAI;aAChE,IAAI,OAAO,GAAG,MAAM;AACvB,YAAA,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,IAAI;;AAC7D,YAAA,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,IAAI;AAClE,QAAA,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE;YACnE,IAAI,CAAC,GAAG,SAAS;YACjB,IAAI,CAAC,GAAG,IAAI;AACZ,YAAA,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC;YAElB,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;gBACjC,IAAI,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;gBACrC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAChE;iBAAO,IACL,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC7B,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAC7B;gBACA,IAAI,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;gBACrC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAChE;YAEA,SAAS,GAAG,MAAM;QACpB;AACA,QAAA,OAAO,SAAS;IAClB;IACA,YAAY,CAAC,QAAgB,EAAE,IAAS,EAAA;AACtC,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,SAAgB;AACnC,QAAA,IAAI,GAAG,CAAC,gBAAgB,EAAE;AACxB,YAAA,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC;QACtC;aAAO;YACL,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AACxC,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;AACnC,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,YAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AACjD,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YAC/B,IAAI,CAAC,KAAK,EAAE;QACd;IACF;AACA,IAAA,QAAQ,CAAC,QAAa,EAAA;QACpB,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AACrC,QAAA,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,eAAe,CAAC;AACxC,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5B,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC3C,QAAA,CAAC,CAAC,MAAM,GAAG,QAAQ;QACnB,CAAC,CAAC,KAAK,EAAE;AACT,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC9B;AACA,IAAA,iBAAiB,CAAC,MAAc,EAAA;QAC9B,OAAO,MAAM,KAAK;AAChB,cAAE;AACF,cAAE,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE;AAC7B,gBAAA,qBAAqB,EAAE,CAAC;AACxB,gBAAA,qBAAqB,EAAE,CAAC;AACzB,aAAA,CAAC;IACR;AACA,IAAA,aAAa,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK;AAAE,YAAA,OAAO,CAAC;AACzC,QAAA,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC;IACnD;AACA,IAAA,OAAO,CAAC,KAAU,EAAA;QAChB,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,SAAS;IAC9D;IACA,aAAa,CAAC,IAAW,EAAE,WAAmB,EAAA;QAC5C,IAAI,SAAS,GAAG,EAAE;AAClB,QAAA,IAAI,WAAW,IAAI,EAAE,EAAE;AACrB,YAAA,SAAS,GAAG;gBACV,GAAG,IAAI,GAAG,CACR,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AAChB,oBAAA,OAAO,IAAI,CAAC,WAAW,CAAC;AAC1B,gBAAA,CAAC,CAAC,CACH;AACF,aAAA,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7C;aAAO;AACL,YAAA,SAAS,GAAG;gBACV,GAAG,IAAI,GAAG,CACR,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AAChB,oBAAA,OAAO,IAAI;AACb,gBAAA,CAAC,CAAC,CACH;AACF,aAAA,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7C;AACA,QAAA,OAAO,SAAS;IAClB;AACA,IAAA,gBAAgB,CAAC,MAAc,EAAE,KAAa,EAAE,IAAgB,EAAA;QAC9D,IAAI,eAAe,GAAG,IAAI;QAC1B,IAAI,QAAQ,GAAG,CAAC;AAChB,QAAA,KAAK,IAAI,CAAC,GAAW,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpD,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACzB,YAAA,IAAI,eAAe,IAAI,IAAI,EAAE;gBAC3B,eAAe,GAAG,GAAG;YACvB;iBAAO,IAAI,GAAG,KAAK,IAAI,IAAI,eAAe,IAAI,GAAG,EAAE;AACjD,gBAAA,QAAQ,EAAE;YACZ;iBAAO,IAAI,GAAG,KAAK,IAAI,IAAI,eAAe,IAAI,GAAG,EAAE;gBACjD,eAAe,GAAG,IAAI;AACtB,gBAAA,OAAO,QAAQ;YACjB;QACF;AACA,QAAA,OAAO,QAAQ;IACjB;AACA,IAAA,wBAAwB,CACtB,IAAW,EACX,GAAW,EACX,SAAiB,EAAA;QAEjB,IAAI,MAAM,GAAG,EAAE;QACf,IAAI,SAAS,GAAa,EAAE;AAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;YACvB,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAA,CAAC,CAAC;AACF,QAAA,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;AAClC,QAAA,OAAO,MAAM;IACf;IACA,UAAU,CAAC,EAAO,EAAE,GAAQ,EAAA;AAC1B,QAAA,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU,EAAO,EAAE,CAAM,EAAA;YACxC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AACvC,YAAA,OAAO,EAAE;QACX,CAAC,EAAE,EAAE,CAAC;IACR;AACA,IAAA,eAAe,CAAC,KAAa,EAAA;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC7C,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACzB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;YAC3C,IAAI,CAAC,IAAI,GAAG,wBAAwB,GAAG,KAAK,GAAG,MAAM;AACrD,YAAA,IAAI,CAAC,GAAG,GAAG,YAAY;AACvB,YAAA,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;QAC5D;IACF;AACA,IAAA,iBAAiB,CAAC,KAAa,EAAA;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC7C,QAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AAC3B,YAAA,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC;AAC/D,QAAA,CAAC,CAAC;IACJ;AACA,IAAA,gBAAgB,CAAC,KAAa,EAAA;QAC5B,MAAM,MAAM,GAAG,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAU,EAAE;QAC1B,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,OAAY,KAAI;YACzC,IAAI,CAAC,GAAG,OAAiB;AAEzB,YAAA,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,EAAE;AAC/B,gBAAA,IAAI,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;gBAChC,IAAI,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AAC/C,oBAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;gBACxB;YACF;AACF,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,QAAQ;IACjB;AACA,IAAA,mBAAmB,CAAC,MAAW,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AAAE,YAAA,OAAO,CAAC;AAClC,QAAA,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAC3B,IAAI,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9C,QAAA,MAAM,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE;QACrD,OAAO,MAAM,CAAC,MAAM;IACtB;IACA,oBAAoB,CAAC,IAAW,EAAE,GAAW,EAAA;QAC3C,IAAI,gBAAgB,GAAa,EAAE;AACnC,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;YACvB,IAAI,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACrD,YAAA,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;AACjC,QAAA,CAAC,CAAC;QACF,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC;AAC9C,QAAA,OAAO,UAAU;IACnB;AACA,IAAA,iBAAiB,CAAC,IAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;IAChC;IACA,UAAU,CAAC,IAAY,EAAE,MAAc,EAAA;QACrC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IACpC;IACA,MAAM,CAAC,GAAQ,EAAE,IAAS,EAAA;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;YACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC;AAChC,QAAA,CAAC,CAAC;IACJ;AACA,IAAA,YAAY,CAAC,KAAa,EAAA;QACxB,MAAM,YAAY,GAAG,6CAA6C;AAClE,QAAA,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;IACjC;AACA,IAAA,MAAM,CAAC,GAAW,EAAA;QAChB,MAAM,SAAS,GACb,iEAAiE;AACnE,QAAA,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;IAC5B;AACA,IAAA,yBAAyB,CAAC,GAAW,EAAA;QACnC,MAAM,gBAAgB,GAAG,mBAAmB;AAC5C,QAAA,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC;IACpC;AACA,IAAA,QAAQ,CAAC,KAAU,EAAA;AACjB,QAAA,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;IACtC;IACA,qBAAqB,CAAC,IAAU,EAAE,SAAiB,EAAA;QACjD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,SAAS,CAAC;AAC1C,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC;AAEpE,QAAA,OAAO,OAAO;IAChB;AACA,IAAA,oBAAoB,CAClB,WAAkB,EAClB,GAAW,EACX,KAAU,EACV,UAAkB,EAAA;QAElB,IAAI,UAAU,GAAG,EAAE;QACnB,QAAQ,UAAU;YAChB,KAAK,CAAC;gBACJ,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;gBAChC,IAAI,KAAK,GAAW,CAAC;AACrB,gBAAA,IAAI,QAAa;AACjB,gBAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACnB,oBAAA,IAAI,CAAC,OAAO,CAAC,CAAC,OAAY,KAAI;AAC5B,wBAAA,IAAI,KAAK,KAAK,CAAC,EAAE;AACf,4BAAA,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAC9B,CAAC,CAAC,GAAG;AACH,kCAAE,QAAQ;AACV,kCAAE,WAAW;AACZ,iCAAA,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CACnC;wBACH;6BAAO;AACL,4BAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAM,KAChC,CAAC,CAAC,GAAG;AACH,kCAAE,QAAQ;AACV,kCAAE,WAAW;AACZ,iCAAA,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CACnC;wBACH;AACA,wBAAA,KAAK,EAAE;AACT,oBAAA,CAAC,CAAC;oBACF,UAAU,GAAG,QAAQ;gBACvB;qBAAO;oBACL,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAChC,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAClD;gBACH;gBACA;YACF,KAAK,CAAC;AACJ,gBAAA,UAAU,GAAG;sBACT,WAAW,CAAC,MAAM,CAChB,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,KAAK,KAAK;sBAEpD,WAAW;gBACf;YACF,KAAK,CAAC;gBACJ,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAChC,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CACpD;gBACD;YACF,KAAK,CAAC;gBACJ,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAChC,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAClD;gBACD;AACF,YAAA;gBACE,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAChC,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAClD;gBACD;;AAEJ,QAAA,OAAO,UAAU;IACnB;IACA,sBAAsB,CACpB,WAAkB,EAClB,GAAW,EACX,KAAU,EACV,UAAkB,EAClB,MAAA,GAAc,IAAI,EAAA;AAElB,QAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;AAAE,YAAA,OAAO,WAAW;QACzC,IAAI,CAAC,WAAW,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,IAAI;AAAE,YAAA,OAAO,EAAE;QACpD,IAAI,UAAU,GAAG,WAAW;QAC5B,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE;AACtC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG;cAC5B,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO;AACjC,cAAE,CAAC,KAAK,CAAC;AACX,QAAA,MAAM,cAAc,GAAG,CAAC,IAAS,KAAI;AACnC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE;YACtD,QAAQ,UAAU;gBAChB,KAAK,CAAC;AACJ,oBAAA,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAS,KAAK,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC9D,KAAK,CAAC;oBACJ,OAAO,SAAS,KAAK,KAAK;gBAC5B,KAAK,CAAC;AACJ,oBAAA,OAAO,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC;gBACrC,KAAK,CAAC;AACJ,oBAAA,OAAO,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC;AACnC,gBAAA;AACE,oBAAA,OAAO,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC;;AAEvC,QAAA,CAAC;QACD,IAAI,MAAM,EAAE;;YAEV,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;gBACrC,OAAO;AACL,oBAAA,GAAG,MAAM;AACT,oBAAA,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,IAAS,KAAK,cAAc,CAAC,IAAI,CAAC,CAAC;iBACtE;AACH,YAAA,CAAC,CAAC;;AAEF,YAAA,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACvE;aAAO;;AAEL,YAAA,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC;QAChD;AACA,QAAA,OAAO,UAAU;IACnB;IACO,yBAAyB,CAC9B,GAAQ,EACR,MAAyB,EAAA;;;QAIzB,MAAM,SAAS,GAA4B,EAA6B;QACxE,GAAG,CAAC,OAAO,CAAC,CAAC,MAAS,MAAM,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AAChE,QAAA,OAAO,SAAS;IAClB;IACO,mBAAmB,CACxB,GAAQ,EACR,MAAyB,EAAA;;;QAIzB,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACtD;IACA,oBAAoB,GAAA;AAClB,QAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAClD,MAAM,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;QACvC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;IAC1C;IACA,iBAAiB,GAAA;AACf,QAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAClD,MAAM,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;IACnC;IACA,iBAAiB,GAAA;AACf,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;QAChD,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AACjD,QAAA,MAAM,cAAc,GAA8B;AAChD,YAAA,GAAG,EAAE,oBAAoB;AACzB,YAAA,GAAG,EAAE,iBAAiB;SACvB;;AAED,QAAA,IACE,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC3B,YAAA,cAAc,CAAC,cAAc,CAAC,WAAW,CAAC;AAE1C,YAAA,OAAO,cAAc,CAAC,WAAW,CAAC;;AAC/B,YAAA,OAAO,WAAW;IACzB;IACA,gBAAgB,CAAC,MAAW,EAAE,iBAAyB,EAAA;QACrD,IAAI,MAAM,GAAG,MAAM,IAAI,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI;QACpE,IAAI,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,YAAA,MAAM,CAAC,WAAW,CAAC,SAAS,GAAG,CAAA,EAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAA,CAAA,EAAI,iBAAiB,EAAE;QAC9E;IACF;AACA,IAAA,uBAAuB,CAAC,GAAW,EAAA;;QAEjC,MAAM,gBAAgB,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;AAE1C,QAAA,MAAM,KAAK,GAAG,qBAAqB,CAAC;QACpC,OAAO,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IAC5C;IACA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;IACjC;AACA,IAAA,gBAAgB,CAAC,MAAc,EAAE,KAAA,GAAgB,CAAC,EAAA;AAChD,QAAA,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,GAAG,EAAE;AACjD,YAAA,OAAO,GAAG;QACZ;QACA,IAAI,UAAU,GAAG,EAAE;QACnB,IAAI,cAAc,GAAG,MAAM;AAC3B,QAAA,IAAI,MAAM,GAAG,CAAC,EAAE;AACd,YAAA,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QAC3B;QACA,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,GAAG,OAAO,EAAE;AACtC,YAAA,MAAM,GAAG,UAAU,CAAC,CAAC,MAAM,GAAG,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACnD,UAAU,GAAG,IAAI;QACnB;aAAO,IAAI,MAAM,IAAI,OAAO,IAAI,MAAM,GAAG,UAAU,EAAE;AACnD,YAAA,MAAM,GAAG,UAAU,CAAC,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACtD,UAAU,GAAG,IAAI;QACnB;aAAO,IAAI,MAAM,IAAI,UAAU,IAAI,MAAM,IAAI,aAAa,EAAE;AAC1D,YAAA,MAAM,GAAG,UAAU,CAAC,CAAC,MAAM,GAAG,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACzD,UAAU,GAAG,IAAI;QACnB;aAAO;YACL,MAAM,GAAG,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,KAAK,CAAC;QAC3D;QACA,OAAO,cAAc,GAAG;AACtB,cAAE,CAAA,CAAA,EAAI,MAAM,CAAA,EAAG,UAAU,CAAA,CAAA;AACzB,cAAE,CAAA,EAAG,MAAM,CAAA,EAAG,UAAU,EAAE;IAC9B;AACA,IAAA,4BAA4B,CAAC,MAAc,EAAE,KAAA,GAAgB,CAAC,EAAA;AAC5D,QAAA,MAAM,OAAO,GAAG,CACd,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,EAC9D,OAAO,CAAC,KAAK,CAAC;AAChB,QAAA,OAAO,OAAO;IAChB;AACA,IAAA,gBAAgB,CAAC,MAAc,EAAE,OAAA,GAAkB,CAAC,EAAA;QAClD,IAAI,UAAU,GAAG,MAAM;QACvB,IAAI,MAAM,GAAG,CAAC;AAAE,YAAA,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QACzC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,WAAW,GAAG,CAAA,EAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA,CAAA,CAAG;AACtD,QAAA,OAAO,UAAU,GAAG,CAAC,GAAG,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,CAAG,GAAG,CAAA,EAAG,WAAW,EAAE;IAC/D;AACA,IAAA,YAAY,CAAC,UAAkB,EAAE,IAAA,GAAoB,IAAI,EAAA;QACvD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;IACtC;AACA,IAAA,sBAAsB,CAAC,MAAc,EAAE,aAAA,GAAwB,CAAC,EAAA;AAC9D,QAAA,IAAI,MAAM,KAAK,CAAC,EAAE;AAChB,YAAA,OAAO,GAAG;QACZ;AACA,QAAA,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC;QAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QACtC,MAAM,YAAY,GAAG,UAAU,CAC7B,CAAC,aAAa,GAAG,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,CAC9C,CAAC,cAAc,CAAC,OAAO,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI;AAEnB,QAAA,OAAO;AACL,cAAE,CAAA,CAAA,EAAI,YAAY,CAAA,EAAG,MAAM,CAAA,CAAA;AAC3B,cAAE,CAAA,EAAG,YAAY,CAAA,EAAG,MAAM,EAAE;IAChC;;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,GAAG,EAAE,EACX,CAAC,EACD,MAAM;QACR,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YACvB,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;AACjC,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE;gBAC/C,IAAI,IAAI,GAAG;YACb;AACA,YAAA,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,EAAE,QAAQ,CACpE,EAAE,CACH;QACH;AACA,QAAA,OAAO,IAAI;IACb;AACA,IAAA,yBAAyB,CACvB,cAAsB,EACtB,SAAgB,EAChB,eAA2C,EAAA;QAE3C,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC;QAC5D,IAAI,CAAC,YAAY,EAAE;YACjB;QACF;QACA,MAAM,UAAU,GAAG,YAAY,CAAC,gBAAgB,CAAC,qBAAqB,CAAC;AACvE,QAAA,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAChD,UAAU,CACM;QAClB,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;;AAEvC,YAAA,MAAM,aAAa,GAAG,KAAK,GAAG,SAAS,CAAC,MAAM;AAE9C,YAAA,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAK;AACnC,gBAAA,MAAM,WAAW,GAAG,SAAS,CAAC,aAAa,CAAC;gBAC5C,IAAI,WAAW,EAAE;oBACf,eAAe,CAAC,WAAW,CAAC;gBAC9B;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AACA,IAAA,oBAAoB,CAAC,MAAc,EAAA;AACjC,QAAA,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC;AAC7B,QAAA,IAAI,MAAM,GAAG,CAAC,EAAE;AACd,YAAA,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QAC3B;QAEA,IAAI,WAAW,GAAG,CAAA,EAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA,CAAE;AACrD,QAAA,OAAO,UAAU,GAAG,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,CAAG,GAAG,CAAA,EAAG,WAAW,EAAE;IAC3D;AACA,IAAA,aAAa,CAAC,IAAW,EAAE,MAAW,EAAE,QAAgB,EAAA;QACtD,OAAO,CAAC,CAAC,OAAO,CACd,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;YAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;gBAChC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;AAC5B,oBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC;gBAC7D;AACF,YAAA,CAAC,CAAC;AACF,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC,EACF;YACE,CAAC,GAAQ,KAAI;AACX,gBAAA,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC;AACvB,gBAAA,IAAI,KAAK,IAAI,IAAI,EAAE;oBACjB,KAAK,GAAG,EAAE;gBACZ;AACA,gBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;oBAC7B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;oBAC7C,MAAM,iBAAiB,GAAG,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;oBACxD,OAAO,iBAAiB,GAAG,CAAA,CAAA,EAAI,UAAU,CAAA,CAAE,GAAG,UAAU;gBAC1D;AACA,gBAAA,OAAO,KAAK;YACd,CAAC;AACF,SAAA,EACD,CAAC,QAA0B,CAAC,CAC7B;IACH;AACA,IAAA,oBAAoB,CAAC,IAAW,EAAE,MAAW,EAAE,QAAgB,EAAA;QAC7D,OAAO,CAAC,CAAC,OAAO,CACd,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;YAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;gBAChC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;AAC5B,oBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC;gBAC7D;AACF,YAAA,CAAC,CAAC;AACF,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC,EACF;YACE,CAAC,GAAQ,KAAI;AACX,gBAAA,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC;gBACvB,IACE,KAAK,IAAI,IAAI;AACb,qBAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAClD;AACA,oBAAA,OAAO,MAAM;gBACf;AACA,gBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;oBAC7B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;oBAC7C,MAAM,iBAAiB,GAAG,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;oBACxD,IAAI,iBAAiB,EAAE;wBACrB,OAAO,CAAA,IAAA,EAAO,UAAU,CAAA,CAAE;oBAC5B;oBACA,OAAO,CAAA,IAAA,EAAO,UAAU,CAAA,CAAE;gBAC5B;gBACA,OAAO,CAAA,IAAA,EAAO,KAAK,CAAA,CAAE;YACvB,CAAC;AACF,SAAA,EACD,CAAC,QAA0B,CAAC,CAC7B;IACH;AACA,IAAA,mBAAmB,CAAC,IAAW,EAAE,MAAW,EAAE,QAAgB,EAAA;QAC5D,OAAO,CAAC,CAAC,OAAO,CACd,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;YAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;gBAChC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;AAC5B,oBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC;gBACnE;AACF,YAAA,CAAC,CAAC;AACF,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC,EACF;YACE,CAAC,GAAQ,KAAI;AACX,gBAAA,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC;gBACvB,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;oBACjC,OAAO,MAAM,CAAC,iBAAiB;gBACjC;AACA,gBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,oBAAA,OAAO,KAAK;gBACd;gBACA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;AACzB,oBAAA,OAAO,MAAM,CAAC,KAAK,CAAC;gBACtB;gBACA,OAAO,MAAM,CAAC,iBAAiB;YACjC,CAAC;AACF,SAAA,EACD,CAAC,QAA0B,CAAC,CAC7B;IACH;AAEA,IAAA,YAAY,CAAC,KAAU,EAAA;AACrB,QAAA,QACE,OAAO,KAAK,KAAK,QAAQ,IAAI,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC;IAE1E;AAEA,IAAA,iBAAiB,CAAC,IAAW,EAAE,MAAW,EAAE,QAAgB,EAAA;QAC1D,OAAO,CAAC,CAAC,OAAO,CACd,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;YAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;gBAChC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;AAC5B,oBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC;gBACjE;AACF,YAAA,CAAC,CAAC;AACF,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC,EACF;YACE,CAAC,GAAQ,KAAI;AACX,gBAAA,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC;gBACvB,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;oBACjC,OAAO,MAAM,CAAC,iBAAiB;gBACjC;AACA,gBAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;gBACjC,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE;oBAC9B,OAAO,MAAM,CAAC,iBAAiB;gBACjC;AACA,gBAAA,OAAO,SAAS,CAAC,OAAO,EAAE;YAC5B,CAAC;AACF,SAAA,EACD,CAAC,QAA0B,CAAC,CAC7B;IACH;wGA/xBW,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA;;4FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCNY,eAAe,CAAA;AACjB,IAAA,KAAK;AACL,IAAA,MAAM;IACN,QAAQ,GAAY,KAAK;AACzB,IAAA,KAAK;AACL,IAAA,SAAS;IACT,aAAa,GAAW,EAAE;IAC1B,qBAAqB,GAAwC,KAAK;IAClE,OAAO,GAAW,EAAE;IACpB,eAAe,GAAwC,KAAK;IAC5D,SAAS,GAAY,KAAK;IAC1B,UAAU,GAAY,IAAI;AAC1B,IAAA,QAAQ;IACR,eAAe,GAAY,KAAK;;;IAGhC,UAAU,GAQJ,QAAQ;AACI,IAAA,WAAW;wGAzB3B,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,qeAyBZ,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAzBd,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,SAAS;mBAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE;;sBAE9B;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAGA;;sBASA,YAAY;uBAAC,WAAW;;MAGd,oBAAoB,CAAA;AACtB,IAAA,KAAK;AACL,IAAA,MAAM;IACN,QAAQ,GAAY,KAAK;AACzB,IAAA,KAAK;AACL,IAAA,QAAQ;AACR,IAAA,SAAS;IACT,aAAa,GAAW,EAAE;IAC1B,qBAAqB,GAAwC,KAAK;;;;;;IAMlE,OAAO,GAAW,CAAC;IACnB,OAAO,GAAW,CAAC;IACnB,KAAK,GAAW,CAAC;IACjB,UAAU,GAQJ,QAAQ;wGAzBZ,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,SAAS;mBAAC,EAAE,QAAQ,EAAE,aAAa,EAAE;;sBAEnC;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAMA;;sBACA;;sBACA;;sBACA;;MAWU,mBAAmB,CAAA;AACrB,IAAA,KAAK;AACL,IAAA,SAAS;;;;;;;;;;IAUT,OAAO,GAAW,CAAC;IACnB,OAAO,GAAW,CAAC;AACD,IAAA,WAAW;IAC7B,UAAU,GAQJ,QAAQ;wGAvBZ,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,8OAchB,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAdd,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,SAAS;mBAAC,EAAE,QAAQ,EAAE,qBAAqB,EAAE;;sBAE3C;;sBACA;;sBAUA;;sBACA;;sBACA,YAAY;uBAAC,WAAW;;sBACxB;;;MC7BU,cAAc,CAAA;AACT,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAC7C,IAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAC7C,WAAW,GAAW,EAAE;IACxB,QAAQ,GAAQ,EAAE;IAClB,cAAc,GAAY,IAAI;IAC9B,UAAU,GAAY,KAAK;IAC3B,cAAc,GAAY,KAAK;IAC/B,WAAW,GAAW,EAAE;IACxB,YAAY,GAAY,KAAK;IAC7B,SAAS,GAAY,KAAK;IAC1B,gBAAgB,GAAQ,EAAE;IAC1B,kBAAkB,GAAmB,IAAI;IACzC,SAAS,GAAW,EAAE;IACtB,gBAAgB,GAAW,EAAE;IAC7B,gBAAgB,GAAW,CAAC;IAC5B,YAAY,GAAW,OAAO;IAC9B,UAAU,GAAY,KAAK;IAC3B,gBAAgB,GAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAC9C,UAAU,GAA6B,EAAE;IAC1C,gBAAgB,GAAG,KAAK;IACxB,eAAe,GAAG,KAAK;IAC/B,WAAW,GAAiE,EAAE;IAE9E,IACI,eAAe,CAAC,GAAY,EAAA;AAC/B,QAAA,IAAI,CAAC,gBAAgB,GAAG,GAAG;QAE3B,IAAI,GAAG,EAAE;AACR,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACrD,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI;YAC5B;iBAAO;AACN,gBAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE;AAC9B,gBAAA,IAAI,CAAC,sBAAsB,GAAG,EAAE;gBAChC,IAAI,CAAC,aAAa,EAAE;YACrB;QACD;IACD;AACA,IAAA,IAAI,eAAe,GAAA;QAClB,OAAO,IAAI,CAAC,gBAAgB;IAC7B;AAEO,IAAA,oBAAoB,CAAC,KAAa,EAAA;AACxC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM;AACxC,QAAA,IAAI,KAAK,KAAK,CAAC,EAAE;AAChB,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE;YAClE;QACD;QACA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAK,CAAS,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM;AAClF,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG;YACzB,OAAO,EAAE,OAAO,KAAK,KAAK;AAC1B,YAAA,aAAa,EAAE,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,KAAK;SAC7C;IACF;AAEA,IAAA,oBAAoB,CAAC,KAAa,EAAA;AACjC,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;IACjC;IAEQ,sBAAsB,GAAA;AAC7B,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAChG;AACU,IAAA,gBAAgB,GAAG,IAAI,YAAY,EAAO;AAC1C,IAAA,kBAAkB,GAAG,IAAI,YAAY,EAAO;AAC5C,IAAA,eAAe,GAAG,IAAI,YAAY,EAAoB;AACtD,IAAA,aAAa,GAAG,IAAI,YAAY,EAAoB;AAC5B,IAAA,OAAO;AAEzC,IAAA,YAAY;AAEZ,IAAA,gBAAgB;AACoB,IAAA,kBAAkB;AAEtD,IAAA,0BAA0B;AAE1B,IAAA,yBAAyB;IACzB,UAAU,GAAsB,EAAE;IAClC,eAAe,GAA2B,EAAE;IAC5C,cAAc,GAA0B,EAAE;IAC1C,cAAc,GAAQ,EAAE;IACxB,aAAa,GAAQ,EAAE;IACvB,sBAAsB,GAAQ,EAAE;IAChC,oBAAoB,GAAQ,EAAE;AAC9B,IAAA,WAAW,GAAqB,EAAE,UAAU,EAAE,EAAE,EAAsB;IACtE,YAAY,GAAW,CAAC;IACxB,WAAW,GAAW,CAAC;IACvB,SAAS,GAAW,CAAC;IACrB,SAAS,GAAmB,IAAI;IAChC,QAAQ,GAAW,CAAC;IACpB,MAAM,GAAa,EAAE;IACrB,WAAW,GAAA;QACV,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC7C,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAA2B;AACjD,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB;QACvC;QACA,IAAI,CAAC,aAAa,EAAE;QACpB,IAAI,CAAC,cAAc,EAAE;IACtB;IACA,kBAAkB,GAAA;QACjB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;QAC/C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;QACzD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE;AAE5D,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;QACrD,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;QAC3D,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAEhE,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,IAAG;YAC1D,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAC/B,gBAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE;YACrE;AACD,QAAA,CAAC,CAAC;QAEF,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,eAAe,EAAE;AAClD,YAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE;AAC9B,YAAA,IAAI,CAAC,sBAAsB,GAAG,EAAE;AAChC,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK;YAC5B,IAAI,CAAC,aAAa,EAAE;QACrB;aAAO;YACN,IAAI,CAAC,sBAAsB,EAAE;QAC9B;IACD;AACA,IAAA,MAAM,CAAC,KAAa,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;AAC7B,YAAA,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;QACrB;aAAO;AACN,YAAA,IAAI,CAAC,SAAS,GAAG,KAAgB;AACjC,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC;QACnB;QACA,IAAI,CAAC,SAAS,EAAE;IACjB;AACA,IAAA,YAAY,CAAC,KAAgD,EAAA;AAC5D,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC9B,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;QACzB;aAAO;AACN,YAAA,IAAI,OAAO,KAAK,EAAE,IAAI,KAAK,QAAQ,EAAE;AACpC,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI;YAC9B;AACA,YAAA,IAAI,OAAO,KAAK,EAAE,IAAI,KAAK,QAAQ,EAAE;gBACpC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC;YAClC;QACD;QACA,IAAI,CAAC,WAAW,EAAE;IACnB;AACA,IAAA,aAAa,CAAC,UAAmB,EAAA;AAChC,QAAA,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AACnC,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE;QAC/D;QACA,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;AACxC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE;QAClE,IAAI,MAAM,EAAE;YACX,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAG;AACjD,gBAAA,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,IAAW;AAC9C,qBAAA,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;qBACzC,IAAI,CAAC,GAAG;AACR,qBAAA,WAAW,EAAE;AACf,gBAAA,OAAO,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC;AACvC,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC;QACrB;QACA,IAAI,CAAC,SAAS,EAAE;IACjB;IACA,SAAS,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACpB,IAAI,CAAC,WAAW,EAAE;YAClB;QACD;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM;AACnD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAoB;AAEvC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;QAC9D,IAAI,CAAC,SAAS,EAAE;AACf,YAAA,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,KAAK,CAAC;YAC7C,IAAI,CAAC,WAAW,EAAE;YAClB;QACD;AACA,QAAA,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU;AACvC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,GAAG,KAAK,CAAC;AAChH,QAAA,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;YACpC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC;QACrG;aAAO;AACN,YAAA,IAAI,UAAU,KAAK,MAAM,EAAE;gBAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC;YACnG;iBAAO;gBACN,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC;YACtG;QACD;QACA,IAAI,CAAC,WAAW,EAAE;IACnB;IACA,WAAW,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACxB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM;AAC9C,YAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW;AACvD,YAAA,MAAM,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,WAAW;AACpC,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;QAC3D;aAAO;AACN,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc;QACzC;QACA,IAAI,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,sBAAsB,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACnF,IAAI,CAAC,sBAAsB,EAAE;QAC7B,IAAI,CAAC,gBAAgB,EAAE;IACxB;IACA,cAAc,GAAA;QACb,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,YAAY,EAAE;AAClD,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;YACzB;QACD;QACA,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,kBAA6B,CAAC,CAAC,CAAC;QACxG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,kBAA6B,CAAC,CAAC,CAAC;QACnH,IAAI,CAAC,sBAAsB,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC;IAC7D;AACA,IAAA,SAAS,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,YAAY;YAAE;AACnD,QAAA,IAAI,KAAK,CAAC,OAAO,EAAE;YAClB,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,kBAA6B,CAAC,CAAC,CAAC;AAC5G,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,IAAG;AAClC,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,kBAA6B,CAAC,CAAC,EAAE;AAC/D,oBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;gBACrC;AACD,YAAA,CAAC,CAAC;QACH;aAAO;YACN,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,kBAA6B,CAAC,CAAC,CAAC;YACtG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,kBAA6B,CAAC,CAAC,CAAC;QACjI;QACA,IAAI,CAAC,sBAAsB,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAC5D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC;IACtD;AACA,IAAA,uBAAuB,CAAC,OAAgB,EAAA;AACvC,QAAA,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;IAC5B;AACA,IAAA,WAAW,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,YAAY;YAAE;AACnD,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,kBAA6B,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,kBAA6B,CAAC,CAAC;QACpJ,IAAI,CAAC,MAAM,EAAE;AACZ,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC;QAC7C;QACA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC;IACtD;AACA,IAAA,aAAa,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,YAAY;YAAE;AACnD,QAAA,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI;QACjC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,kBAA6B,CAAC,KAAK,cAAc,CAAC,IAAI,CAAC,kBAA6B,CAAC,CAAC;QACrK,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC;IACtD;IACA,UAAU,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC;AACpB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;QAClE,IAAI,CAAC,aAAa,EAAE;IACrB;IACA,gBAAgB,GAAA;QACf,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QACjD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AAC3C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACvB,YAAA;gBACC,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;AAC3C,aAAA;AACD,SAAA,CAAC;IACH;IACA,sBAAsB,CAAC,OAAgB,EAAE,KAAa,EAAA;AACrD,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAM,CAAS,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC;AAE/D,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE;QAC3D,IAAI,CAAC,WAAW,EAAE;IACnB;IAEQ,wBAAwB,GAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,CAAC;QACpH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,kBAA6B,CAAC,CAAC,CAAC;QAC5G,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,kBAA6B,CAAC,CAAC,CAAC,CAAC,MAAM;IAC5G;AACA,IAAA,IAAI,wBAAwB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,wBAAwB,EAAE,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM;IACxG;AACA,IAAA,IAAI,8BAA8B,GAAA;AACjC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,EAAE;QACrD,OAAO,aAAa,GAAG,CAAC,IAAI,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM;IACvE;AAEA,IAAA,UAAU,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAK,IAAgC,CAAC,KAAK,CAAC,CAAC;IAC/E;AACA,IAAA,eAAe,CAAC,MAAc,EAAA;AAC7B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAK,IAAgC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QAC/F,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC;QAChH,IAAI,OAAO,IAAI,SAAS;YAAE;AAC1B,QAAA,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACpD,YAAA,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,2BAA2B,CAAC;QAC3D;aAAO;AACN,YAAA,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC;QACjC;IACD;AACA,IAAA,mBAAmB,CAAC,KAAa,EAAA;AAChC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC;QACpB,IAAI,CAAC,WAAW,EAAE;IACnB;IACA,kBAAkB,GAAA;AACjB,QAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE;QAC9B,IAAI,CAAC,sBAAsB,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC;IAC7D;IACA,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,EAAE;IACjC;AAEA,IAAA,IAAI,UAAU,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;IACvD;AACA,IAAA,kBAAkB,CAAC,KAAU,EAAA;AAC5B,QAAA,MAAM,UAAU,GAAW,KAAK,CAAC,MAAM,CAAC,KAAK;QAC7C,IAAI,UAAU,KAAK,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC3G,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC;YACpB,IAAI,CAAC,WAAW,EAAE;YAClB;QACD;AAEA,QAAA,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC;QAEvC,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE;AACvC,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU;QACnC;QACA,IAAI,CAAC,WAAW,EAAE;IACnB;AACA,IAAA,IAAI,WAAW,GAAA;QACd,OAAO,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC;IAClJ;wGAvUY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,4xBAFf,CAAC,cAAc,EAAE,QAAQ,CAAC,iZAoEpB,eAAe,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EACf,oBAAoB,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,SAAA,EAEpB,mBAAmB,kDCjHrC,+hUA+OA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtNE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,eAAe,kLACf,SAAS,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,SAAS,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACT,eAAe,+BACf,WAAW,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,cAAA,EAAA,SAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,SAAS,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,YAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACT,WAAW,m4EACX,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACN,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,aAAa,oYAEb,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,WAAW,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,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAFX,QAAQ,wCAGR,cAAc,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA;;4FAKH,cAAc,EAAA,UAAA,EAAA,CAAA;kBAvB1B,SAAS;+BACC,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACP;wBACR,YAAY;wBACZ,eAAe;wBACf,SAAS;wBACT,SAAS;wBACT,eAAe;wBACf,WAAW;wBACX,SAAS;wBACT,WAAW;wBACX,MAAM;wBACN,WAAW;wBACX,aAAa;wBACb,QAAQ;wBACR,cAAc;wBACd,WAAW;wBACX,cAAc;AACd,qBAAA,EAAA,SAAA,EAEU,CAAC,cAAc,EAAE,QAAQ,CAAC,EAAA,QAAA,EAAA,+hUAAA,EAAA;;sBAKpC;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAKA;;sBAsCA;;sBACA;;sBACA;;sBACA;;sBACA,eAAe;uBAAC,eAAe;;sBAC/B,eAAe;uBAAC,oBAAoB;;sBAEpC,eAAe;uBAAC,mBAAmB;;sBAEnC,YAAY;uBAAC,oBAAoB;;sBACjC,YAAY;uBAAC,4BAA4B;;sBAEzC,YAAY;uBAAC,2BAA2B;;;MElH7B,uBAAuB,CAAA;AACf,IAAA,EAAA;AAApB,IAAA,WAAA,CAAoB,EAAc,EAAA;QAAd,IAAA,CAAA,EAAE,GAAF,EAAE;IAAe;AACF,IAAA,aAAa,CAAC,KAAY,EAAA;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK;AAC/C,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;QACjE,IAAI,WAAW,KAAK,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;YAChD,KAAK,CAAC,eAAe,EAAE;QACxB;IACD;wGARY,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,iBAAA;;sBAGC,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;MCOrB,kBAAkB,CAAA;AACrB,IAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACtD;;;AAGG;IACM,UAAU,GAAW,CAAC;AAE/B;;;AAGG;IACM,WAAW,GAAW,CAAC;AAEhC;;;;AAIG;IACM,YAAY,GAAW,EAAE;AAElC;;;AAGG;AACO,IAAA,UAAU,GAAsB,IAAI,YAAY,EAAE;AAE5D;;;AAGG;IACH,UAAU,GAAW,CAAC;AAEtB,IAAA,WAAW,CAAC,OAAsB,EAAA;QACjC,IAAI,CAAC,mBAAmB,EAAE;IAC3B;IAEA,mBAAmB,GAAA;AAClB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC;IACjE;IAEA,aAAa,GAAA;AACZ,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC;QACpB,IAAI,CAAC,cAAc,EAAE;IACtB;IAEA,gBAAgB,GAAA;QACf,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;AAC3C,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,UAAU,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU;AACzE,QAAA,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC;AAAE,YAAA,IAAI,CAAC,WAAW,IAAI,CAAC;QAC/C,IAAI,CAAC,cAAc,EAAE;IACtB;IAEA,YAAY,GAAA;QACX,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;AAC3C,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU;AACrD,QAAA,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU;AAAE,YAAA,IAAI,CAAC,WAAW,IAAI,CAAC;QAC7D,IAAI,CAAC,cAAc,EAAE;IACtB;IAEA,YAAY,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU;QAClC,IAAI,CAAC,cAAc,EAAE;IACtB;IAEA,cAAc,GAAA;QACb,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IACvC;AAEA,IAAA,OAAO,CAAC,KAAU,EAAA;AACjB,QAAA,MAAM,UAAU,GAAW,KAAK,CAAC,MAAM,CAAC,KAAK;QAC7C,IAAI,UAAU,KAAK,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC3G,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC;YACpB,IAAI,CAAC,cAAc,EAAE;YACrB;QACD;AAEA,QAAA,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC;QAEvC,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE;AACvC,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU;QACnC;QACA,IAAI,CAAC,cAAc,EAAE;IACtB;wGAnFY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb/B,whDAiBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDPW,WAAW,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,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA;;4FAGxE,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACC,oBAAoB,EAAA,OAAA,EACrB,CAAC,WAAW,EAAE,YAAY,EAAE,uBAAuB,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAA,QAAA,EAAA,whDAAA,EAAA;;sBASpF;;sBAMA;;sBAOA;;sBAMA;;;AEtCF,IAAY,eAIX;AAJD,CAAA,UAAY,eAAe,EAAA;AAC1B,IAAA,eAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,eAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AAC1B,CAAC,EAJW,eAAe,KAAf,eAAe,GAAA,EAAA,CAAA,CAAA;;MCyBd,eAAe,CAAA;AAClB,IAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACtD;;;AAGG;IACM,WAAW,GAAW,EAAE;IACxB,WAAW,GAAY,KAAK;AAErC;;;AAGG;AACM,IAAA,kBAAkB;AAE3B;;;AAGG;AACM,IAAA,aAAa;AAEtB;;;;AAIG;IACM,iBAAiB,GAAY,KAAK;AAE3C;;;AAGG;IACM,WAAW,GAAW,EAAE;AAEjC;;;AAGG;AACiB,IAAA,aAAa,GAAG,IAAI,YAAY,EAAoB;AAEvD,IAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;;;AAKlD;;;;AAIG;IACH,cAAc,GAAY,KAAK;AAE/B;;;AAGG;AACH,IAAA,UAAU;AAEV;;;AAGG;AACH,IAAA,sBAAsB;AAEtB;;;AAGG;AACH,IAAA,qBAAqB;AAErB;;;AAGG;AACH,IAAA,QAAQ,GAAsC,MAAK,EAAE,CAAC;AAEtD;;;AAGG;AACH,IAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAEhC,IAAA,WAAA,GAAA,EAAe;IAEf,QAAQ,GAAA;QACP,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACxC,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,UAAU,EAAE,EAAE;AACd,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,IAAG;AAC5E,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACrB,QAAA,CAAC,CAAC;;AAGF,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE;AAAE,YAAA,IAAI,CAAC,WAAW,GAAG,mBAAmB;AACnE,QAAA,IAAI,CAAC,qBAAqB,KAAK,IAAI,CAAC,wBAAwB,EAAE;AAC9D,QAAA,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,qBAAqB,EAAE;QAExD,IAAI,CAAC,cAAc,EAAE;IACtB;IAEA,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE;IAC1C;IAEA,cAAc,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YACxB,UAAU,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,EAAE;YAC5C,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;AAC/E,YAAA,UAAU,EAAE,EAAE;AACd,SAAA,CAAC;QACF,IAAI,CAAC,QAAQ,EAAE;IAChB;AAEA,IAAA,cAAc,CAAC,MAAe,EAAA;AAC7B,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM;IAC7B;IAEA,aAAa,GAAA;QACZ,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,IAAI,CAAC,QAAQ,EAAE;IACzC;IAEA,aAAa,GAAA;QACZ,IAAI,IAAI,CAAC,aAAa;YAAE,IAAI,CAAC,QAAQ,EAAE;IACxC;IAEA,QAAQ,GAAA;AACP,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAyB;QACvD,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,IAAI,EAAE;QACjG,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,EAAE;AACxF,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/B;IAEA,eAAe,CAAC,YAAqB,IAAI,EAAA;AACxC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC7D,IAAI,SAAS,EAAE;YACd,IAAI,CAAC,QAAQ,EAAE;QAChB;IACD;AAEA,IAAA,IAAI,aAAa,GAAA;AAChB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,KAAK;AACzE,QAAA,OAAO,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;IAC3C;IAEA,wBAAwB,GAAA;AACvB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,KAAK;AACzE,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,UAAU,CAAC;QACrF,OAAO,YAAY,GAAG,YAAY,CAAC,KAAK,GAAG,EAAE;IAC9C;IAEA,qBAAqB,GAAA;AACpB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,KAAK;AACtE,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,UAAU,CAAC;QAClF,OAAO,YAAY,GAAG,YAAY,CAAC,KAAK,GAAG,EAAE;IAC9C;IAEA,iBAAiB,GAAA;QAChB,OAAO,CAAA,EAAG,IAAI,CAAC,wBAAwB,EAAE,CAAA,EAAA,EAAK,IAAI,CAAC,qBAAqB,EAAE,CAAA,CAAE;IAC7E;AAEA,IAAA,kBAAkB,CAAC,IAAY,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC;IAChE;AAEA,IAAA,gBAAgB,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC;IACtE;AAEA,IAAA,aAAa,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC;IACnE;IAEA,wBAAwB,GAAA;QACvB,OAAO;AACN,YAAA,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE;AAC5B,YAAA,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE;AACzB,YAAA,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE;AACzB,YAAA,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;SACxB;IACF;IAEA,qBAAqB,GAAA;QACpB,OAAO;AACN,YAAA,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;AACxB,YAAA,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;SACxB;IACF;wGA/LY,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EARhB;AACV,YAAA;AACC,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,eAAe,CAAC;AAC9C,aAAA;AACD,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtBF,wlGA4DA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED7CW,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,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,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,mVAAE,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,gYAAE,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA;;4FAU5G,eAAe,EAAA,UAAA,EAAA,CAAA;kBAZ3B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,WAClB,CAAC,WAAW,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAA,SAAA,EAE9G;AACV,wBAAA;AACC,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,qBAAqB,CAAC;AAC9C,yBAAA;AACD,qBAAA,EAAA,QAAA,EAAA,wlGAAA,EAAA;;sBASA;;sBACA;;sBAMA;;sBAMA;;sBAOA;;sBAMA;;sBAMA,MAAM;uBAAC,UAAU;;;ME7DN,mBAAmB,CAAA;AACrB,IAAA,KAAK;AACL,IAAA,MAAM;IACN,QAAQ,GAAY,KAAK;AACzB,IAAA,KAAK;AACL,IAAA,SAAS;IACT,aAAa,GAAW,EAAE;IAC1B,qBAAqB,GAAwC,KAAK;IAClE,OAAO,GAAW,EAAE;IACpB,eAAe,GAAwC,KAAK;IAC5D,SAAS,GAAY,KAAK;IAC1B,UAAU,GAAY,IAAI;AAC1B,IAAA,QAAQ;IACR,eAAe,GAAY,KAAK;IAChC,iBAAiB,GAAY,KAAK;AAChB,IAAA,WAAW;IAC7B,UAAU,GAQJ,QAAQ;wGAxBZ,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,6gBAehB,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAfd,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,SAAS;mBAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE;;sBAE9B;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA,YAAY;uBAAC,WAAW;;sBACxB;;MAWU,wBAAwB,CAAA;AAC1B,IAAA,KAAK;AACL,IAAA,MAAM;IACN,QAAQ,GAAY,KAAK;AACzB,IAAA,KAAK;AACL,IAAA,QAAQ;IACR,OAAO,GAAW,CAAC;IACnB,OAAO,GAAW,CAAC;IACnB,KAAK,GAAW,CAAC;IACjB,UAAU,GAQJ,QAAQ;wGAjBZ,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,SAAS;mBAAC,EAAE,QAAQ,EAAE,aAAa,EAAE;;sBAEnC;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;MAWU,uBAAuB,CAAA;AACzB,IAAA,KAAK;AACL,IAAA,SAAS;IACT,OAAO,GAAW,CAAC;IACnB,OAAO,GAAW,CAAC;AACD,IAAA,WAAW;IAE7B,UAAU,GAQJ,QAAQ;wGAfZ,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,8OAKpB,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FALd,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,SAAS;mBAAC,EAAE,QAAQ,EAAE,qBAAqB,EAAE;;sBAE3C;;sBACA;;sBACA;;sBACA;;sBACA,YAAY;uBAAC,WAAW;;sBAExB;;;MCAU,kBAAkB,CAAA;AACZ,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAC7C,IAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAE7C,WAAW,GAAW,EAAE;IACxB,QAAQ,GAAQ,EAAE;IAClB,SAAS,GAAW,EAAE;IACtB,WAAW,GAAW,EAAE;IACxB,OAAO,GAAW,EAAE;IACpB,gBAAgB,GAAW,EAAE;IAC7B,gBAAgB,GAAW,CAAC;IAC5B,YAAY,GAAW,OAAO;IAC9B,UAAU,GAAY,KAAK;IAC3B,UAAU,GAA6B,EAAE;IACzC,UAAU,GAAY,KAAK;IAC3B,cAAc,GAAY,KAAK;IAC/B,WAAW,GAAW,EAAE;IACxB,gBAAgB,GAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAC9C,YAAY,GAAY,KAAK;IAC7B,SAAS,GAAY,KAAK;IAC1B,iBAAiB,GAAY,KAAK;IAClC,gBAAgB,GAAQ,EAAE;IAC1B,kBAAkB,GAAmB,IAAI;IACzC,iBAAiB,GAAU,EAAE;IAC7B,cAAc,GAAY,IAAI;AAE7B,IAAA,gBAAgB,GAAG,IAAI,YAAY,EAAO;AAC1C,IAAA,kBAAkB,GAAG,IAAI,YAAY,EAAO;AAC5C,IAAA,eAAe,GAAG,IAAI,YAAY,EAAoB;AACtD,IAAA,aAAa,GAAG,IAAI,YAAY,EAAoB;AAG9D,IAAA,OAAO;AAEP,IAAA,YAAY;AAEZ,IAAA,gBAAgB;AACoB,IAAA,kBAAkB;AAEtD,IAAA,yBAAyB;AAEzB,IAAA,0BAA0B;AAEG,IAAA,cAAc;AACjB,IAAA,WAAW;IAErC,cAAc,GAAQ,EAAE;IACxB,aAAa,GAAQ,EAAE;IACvB,oBAAoB,GAAQ,EAAE;IAC9B,UAAU,GAA0B,EAAE;IACtC,eAAe,GAA+B,EAAE;IAChD,cAAc,GAA8B,EAAE;IAC9C,QAAQ,GAAW,CAAC;IACpB,MAAM,GAAa,EAAE;IACrB,SAAS,GAAW,CAAC;IACrB,SAAS,GAAmB,IAAI;IAChC,YAAY,GAAW,CAAC;IACxB,WAAW,GAAW,CAAC;IACvB,WAAW,GAAqB,EAAsB;IACtD,uBAAuB,GAAoC,EAAE;IAE7D,WAAW,GAAA;QACT,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC5C,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAA2B;AACjD,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB;QACxC;AACA,QAAA,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,cAAc,EAAE;IACvB;IAGA,kBAAkB,GAAA;QAChB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;QACxC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;QAClD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;QACrD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;QACzE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAClE;AAEA,IAAA,MAAM,CAAC,KAAa,EAAA;AAClB,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;AAC5B,YAAA,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;QACtB;aAAO;AACL,YAAA,IAAI,CAAC,SAAS,GAAG,KAAgB;AACjC,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC;QACpB;QACA,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,YAAY,CAAC,SAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,WAAW,GAAG,SAAS;QAC5B,IAAI,CAAC,WAAW,EAAE;IACpB;IAEA,SAAS,GAAA;AACP,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM;AACnD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAoB;AACvC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAC1C,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,SAAS,CAC5D,GAAG,KAAK,CAAC;AACV,QAAA,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;YACnC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAC1D,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,EACxB,KAAK,EACL,KAAK,CACN;QACH;aAAO;YACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAC3D,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,EACxB,KAAK,EACL,KAAK,CACN;QACH;QACA,IAAI,CAAC,WAAW,EAAE;IACpB;AAEA,IAAA,aAAa,CAAC,KAAU,EAAA;QACtB,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QACxC,IAAI,CAAC,SAAS,EAAE;IAClB;IAEA,sBAAsB,CAAC,KAAU,EAAE,KAAa,EAAA;AAC9C,QAAA,MAAM,OAAO,GAAY,KAAK,CAAC,OAAO;QACtC,IAAI,CAAC,IAAI,CAAC,kBAAkB;YAAE;QAC9B,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,kBAA6B,CAAC,CACnD,CACF;QACD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,kBAA6B,CAAC;YACnD,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,IAAI,MAAM,EAAE;AACT,gBAAA,IAAgC,CAAC,KAAK,CAAC,GAAG,OAAO;YACpD;AACF,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;IAC7B;AAEA,IAAA,eAAe,CAAC,MAAc,EAAA;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CACnC,CAAC,IAAI,KAAM,IAAgC,CAAC,MAAM,CAAC,CACpD,CAAC,MAAM;AACR,QAAA,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CACjE,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,MAAM,CAC9C;QACD,IAAI,OAAO,IAAI,SAAS;YAAE;QAC1B,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM;AACjD,YAAA,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,2BAA2B,CAAC;;AACvD,YAAA,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC;IACvC;AAEA,IAAA,SAAS,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;AAAE,YAAA,OAAO,EAAE;QACtC,OAAO,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,KAAK,CAAC;IACxC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM;AAC9C,YAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW;AACvD,YAAA,MAAM,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,WAAW;AACpC,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;QAC5D;aAAO;AACL,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc;QAC1C;QACA,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEA,cAAc,GAAA;QACZ,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,YAAY,EAAE;AACjD,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;YACzB;QACF;QACA,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CACvB,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,kBAA6B,CAAC,CACnD,CACF;QACD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,KACpD,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,kBAA6B,CAAC,CAAC,CAC1D;IACH;AAEA,IAAA,SAAS,CAAC,KAAU,EAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,YAAY;YAAE;AACnD,QAAA,IAAI,KAAK,CAAC,OAAO,EAAE;YACjB,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAC3B,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,kBAA6B,CAAC,CACnD,CACF;YACD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACnC,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,kBAA6B,CAAC,CAAC,EAAE;AAC9D,oBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;gBACtC;AACF,YAAA,CAAC,CAAC;QACJ;aAAO;YACL,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,kBAA6B,CAAC,CACnD,CACF;YACD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAC1D,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,kBAA6B,CAAC,CAAC,CACrE;QACH;QACA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC;IACvD;AAEA,IAAA,WAAW,CAAC,KAAU,EAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,YAAY;YAAE;AACnD,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI;AAC/B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC3C,CAAC,IAAI,KACH,IAAI,CAAC,IAAI,CAAC,kBAA6B,CAAC;AACxC,YAAA,YAAY,CAAC,IAAI,CAAC,kBAA6B,CAAC,CACnD;QACD,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC;QAC9C;QACA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC;IACvD;AAEA,IAAA,aAAa,CAAC,KAAU,EAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,YAAY;YAAE;AACnD,QAAA,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI;AACjC,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAC1D,CAAC,IAAI,KACH,IAAI,CAAC,IAAI,CAAC,kBAA6B,CAAC;AACxC,YAAA,cAAc,CAAC,IAAI,CAAC,kBAA6B,CAAC,CACrD;QACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC;IACvD;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,CAAC;AACnC,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC;QACtB;AACA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE;AAClC,YAAA,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,EAAE;QACjC;AACA,QAAA,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;IACxB;IAEA,gBAAgB,GAAA;QACd,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QACjD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AAC3C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACtB,YAAA;gBACE,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;AAC5C,aAAA;AACF,SAAA,CAAC;IACJ;AAEA,IAAA,mBAAmB,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;QACxB,IAAI,CAAC,UAAU,EAAE;IACnB;wGAtQW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,63BAFlB,CAAC,cAAc,EAAE,QAAQ,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,2BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,4BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,4BAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAiCpB,mBAAmB,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAEnB,wBAAwB,mDAExB,uBAAuB,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3F1C,2hUAuSA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED/PI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,eAAe,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,kBAAkB,+IAClB,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACN,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,4BAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAEb,cAAc,qaACd,WAAW,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,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAHZ,QAAQ,wCAIR,cAAc,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA;;4FAKL,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBApB9B,SAAS;+BACE,qBAAqB,EAAA,UAAA,EACnB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,eAAe;wBACf,kBAAkB;wBAClB,MAAM;wBACN,WAAW;wBACX,WAAW;wBACX,aAAa;wBACb,QAAQ;wBACR,cAAc;wBACd,WAAW;wBACX,YAAY;wBACZ,cAAc;AACf,qBAAA,EAAA,SAAA,EAEU,CAAC,cAAc,EAAE,QAAQ,CAAC,EAAA,QAAA,EAAA,2hUAAA,EAAA;;sBAMpC;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBAEA,eAAe;uBAAC,mBAAmB;;sBAEnC,eAAe;uBAAC,wBAAwB;;sBAExC,eAAe;uBAAC,uBAAuB;;sBAEvC,YAAY;uBAAC,oBAAoB;;sBACjC,YAAY;uBAAC,2BAA2B;;sBAExC,YAAY;uBAAC,4BAA4B;;sBAGzC,SAAS;uBAAC,gBAAgB;;sBAC1B,SAAS;uBAAC,aAAa;;;MElGb,qBAAqB,CAAA;AACxB,IAAA,KAAK;AACL,IAAA,MAAM;AACN,IAAA,KAAK;AACL,IAAA,SAAS;IACT,aAAa,GAAW,EAAE;IAC1B,qBAAqB,GAAwC,KAAK;IAClE,OAAO,GAAW,EAAE;IACpB,eAAe,GAAwC,KAAK;IAC5D,SAAS,GAAY,KAAK;IAC1B,UAAU,GAAY,IAAI;AAC1B,IAAA,QAAQ;AACU,IAAA,WAAW;wGAZ1B,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,iZAYnB,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAZb,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,SAAS;mBAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE;;sBAE/B;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA,YAAY;uBAAC,WAAW;;MAGb,0BAA0B,CAAA;AAC7B,IAAA,KAAK;AACL,IAAA,MAAM;IACN,QAAQ,GAAY,KAAK;AACzB,IAAA,KAAK;AACL,IAAA,SAAS;IACT,aAAa,GAAW,EAAE;IAC1B,qBAAqB,GAAwC,KAAK;AAClE,IAAA,QAAQ;IACR,OAAO,GAAW,CAAC;IACnB,OAAO,GAAW,CAAC;IACnB,KAAK,GAAW,CAAC;wGAXd,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,SAAS;mBAAC,EAAE,QAAQ,EAAE,aAAa,EAAE;;sBAEpC;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;MCTW,oBAAoB,CAAA;AACf,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAC7C,IAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAC7C,WAAW,GAAW,EAAE;IACxB,QAAQ,GAAQ,EAAE;IAClB,SAAS,GAAY,KAAK;IAC1B,SAAS,GAAW,EAAE;IACtB,OAAO,GAAW,EAAE;IACpB,YAAY,GAAW,OAAO;IAC9B,UAAU,GAAY,KAAK;IAC3B,UAAU,GAA6B,EAAE;AACV,IAAA,OAAO;AACF,IAAA,YAAY;IACzD,UAAU,GAA4B,EAAE;IACxC,eAAe,GAAiC,EAAE;IAClD,QAAQ,GAAW,CAAC;IACpB,MAAM,GAAa,EAAE;AACrB,IAAA,WAAW,KAAU;IACrB,kBAAkB,GAAA;QACjB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;QACxC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;QAClD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;QACvE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IACjE;wGAvBY,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAWf,qBAAqB,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EACrB,0BAA0B,kDC/B5C,2pFA0EA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED1DW,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,sgEAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAY,cAAc,8BAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAnD,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA;;4FAG7D,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,cACrB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,2pFAAA,EAAA;;sBAMpH;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA,eAAe;uBAAC,qBAAqB;;sBACrC,eAAe;uBAAC,0BAA0B;;;ME1B/B,eAAe,CAAA;AAC3B;;;AAGG;IACM,IAAI,GAAW,EAAE;AAE1B;;;;AAIG;IACM,WAAW,GAAY,KAAK;AAErC;;;;AAIG;IACM,SAAS,GAAW,OAAO;AAEpC;;;;AAIG;IACM,UAAU,GAAW,OAAO;AAErC;;;;AAIG;IACM,eAAe,GAAY,KAAK;AAEzC;;;AAGG;AACO,IAAA,OAAO,GAAsB,IAAI,YAAY,EAAO;AAE9D;;;AAGG;AACO,IAAA,QAAQ,GAAsB,IAAI,YAAY,EAAO;AAE/D;;;AAGG;AACO,IAAA,OAAO,GAAsB,IAAI,YAAY,EAAO;AAE9D;;;AAGG;AACuB,IAAA,QAAQ;AAElC;;;;AAIG;IACH,MAAM,GAAY,KAAK;wGAhEX,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,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,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,QAAQ;AAClB,iBAAA;;sBAMC;;sBAOA;;sBAOA;;sBAOA;;sBAOA;;sBAMA;;sBAMA;;sBAMA;;sBAMA,YAAY;uBAAC,UAAU;;;MChDZ,oBAAoB,CAAA;AAuBH,IAAA,QAAA;AAtBpB,IAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAChC,IAAA,OAAO;AACJ,IAAA,UAAU;AACJ,IAAA,gBAAgB;IAE/C,aAAa,GAAY,KAAK;IAC9B,uBAAuB,GAAY,KAAK;AAExC;;;;AAIG;IACH,eAAe,GAAG,KAAK;AAEvB;;;;AAIG;IACH,iBAAiB,GAAG,KAAK;AAEzB,IAAA,WAAA,CAA6B,QAAkB,EAAA;QAAlB,IAAA,CAAA,QAAQ,GAAR,QAAQ;IAAa;IAElD,QAAQ,GAAA;;;;;;;;;;IAUR;IAEA,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;;AAGzB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;;AAG3B,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;IAG9B;IAEA,YAAY,GAAA;AACX,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;;AAG1B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;;AAG5B,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;IAE9B;;AAGA,IAAA,aAAa,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE;;AAG7D,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;AAC7B,YAAA,MAAM,CAAC,MAAM,GAAG,KAAK;AACtB,QAAA,CAAC,CAAC;IACH;AAGA,IAAA,WAAW,CAAC,KAAY,EAAA;AACvB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,QAAA,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE;AACrJ,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI;QACpC;IACD;AAGA,IAAA,sBAAsB,CAAC,KAAY,EAAA;AAClC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,QAAA,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE;AACrJ,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI;QACpC;IACD;AAGA,IAAA,SAAS,CAAC,KAAY,EAAA;QACrB,UAAU,CAAC,MAAK;AACf,YAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK;QACrC,CAAC,EAAE,GAAG,CAAC;IACR;AAGA,IAAA,QAAQ,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,KAAK;YAAE;AACZ,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAE1C,QAAA,MAAM,cAAc,GAAG;YACtB,UAAU;YACV,0BAA0B;YAC1B,iBAAiB;YACjB,oBAAoB;YACpB,2BAA2B;YAC3B,eAAe;YACf,0BAA0B;YAC1B,oBAAoB;YACpB,mBAAmB;YACnB,kBAAkB;YAClB,sBAAsB;YACtB,sBAAsB;YACtB,6BAA6B;YAC7B,aAAa;YACb,sBAAsB;YACtB,qBAAqB;YACrB,sBAAsB;YACtB,4BAA4B;YAC5B,gBAAgB;YAChB,qBAAqB;YACrB,mBAAmB;YACnB,YAAY;YACZ,wBAAwB;YACxB,eAAe;YACf,aAAa;YACb,aAAa;YACb,iBAAiB;YACjB,WAAW;YACX,iBAAiB;YACjB,mBAAmB;YACnB,kBAAkB;YAClB,gBAAgB;YAChB,qBAAqB;SACrB;AACD,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;YACjC;QACD;AAEA,QAAA,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,CAAA,CAAA,EAAI,SAAS,EAAE,CAAC,CAAC,EAAE;YACtE;QACD;AACA,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACvI,IAAI,CAAC,YAAY,EAAE;QACpB;IACD;AAEA;;;;AAIG;AAEH,IAAA,OAAO;AAEP;;;;;;;;AAQG;AACH,IAAA,YAAY,CAAC,MAAuB,EAAA;;AAEnC,QAAA,IAAI,MAAM,CAAC,OAAO,EAAE;AACnB,YAAA,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;QACtB;;AAGA,QAAA,IAAI,MAAM,CAAC,eAAe,EAAE;YAC3B;QACD;;AAGA,QAAA,MAAM,CAAC,MAAM,GAAG,IAAI;;AAGpB,QAAA,IAAI,MAAM,CAAC,MAAM,EAAE;;AAElB,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;QAC/B;IACD;AAEA;;;;;;;AAOG;AACH,IAAA,mBAAmB,CAAC,MAAuB,EAAA;;AAE1C,QAAA,MAAM,CAAC,MAAM,GAAG,KAAK;;AAGrB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;;AAG3B,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;IAC9B;wGAxMY,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,QAAA,EAAA,CAAA,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,uBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,gCAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAsJf,eAAe,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpKjC,qyDAqCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED1BW,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,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,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,2FAAE,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA;;4FAGvE,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACC,uBAAuB,EAAA,OAAA,EACxB,CAAC,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAA,QAAA,EAAA,qyDAAA,EAAA;;sBAKnF,SAAS;uBAAC,SAAS;;sBACnB,SAAS;uBAAC,YAAY;;sBACtB,SAAS;uBAAC,kBAAkB;;sBAkE5B,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;;sBAQpC,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC;;sBAQ3C,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;sBAOlC,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;sBAyDzC,eAAe;uBAAC,eAAe;;;MEvJpB,oBAAoB,CAAA;IACtB,OAAO,GAAkB,EAAE;AAC1B,IAAA,MAAM,GAAG,IAAI,YAAY,EAAe;AACxC,IAAA,SAAS,GAAG,IAAI,YAAY,EAAe;AAC5C,IAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC7C,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEpC,IAAA,QAAQ,CAAC,MAAmB,EAAA;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1B;AAEA,IAAA,SAAS,CAAC,MAAmB,EAAA;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;IAC7B;AAEA,IAAA,aAAa,CAAC,KAAU,EAAA;QACtB,OAAO,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;IACrD;AAEA,IAAA,aAAa,CAAC,IAAc,EAAA;QAC1B,QAAQ,IAAI;AACV,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,MAAM;AACf,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,IAAI;AACb,YAAA;AACE,gBAAA,OAAO,QAAQ;;IAErB;IAEA,eAAe,CAAC,KAAU,EAAE,IAAY,EAAA;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAgB,CAAC;AAEpD,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9C,YAAA,OAAO,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAC/B,KAAK,CAAC,CAAC,CAAC,EACR,OAAO,CACR,CAAA,GAAA,EAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE;QACrD;QAEA,IAAI,KAAK,EAAE;AACT,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE;QACtD;AAEA,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,iBAAiB,CAAC,KAAU,EAAA;AAC1B,QAAA,MAAM,WAAW,GAAG,CAAC,CAAM,KAAa;YACtC,IAAI,OAAO,CAAC,KAAK,QAAQ;AAAE,gBAAA,OAAO,KAAK;AACvC,YAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAC/B,QAAA,CAAC;;AAGD,QAAA,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;AACtB,YAAA,OAAO,IAAI;QACb;;AAGA,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9C,YAAA,OAAO,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;QACjC;AAEA,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,QAAQ,CAAC,IAAuC,EAAA;QAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACxB,YAAA,OAAO,EAAE;QACX;AACA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAC/B,OAAO,IAAI,KAAK;AACd,cAAE;AACF,cAAE,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CACrD;QACD,MAAM,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,EAAE;AACrC,QAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,YAAA,OAAO;AACJ,iBAAA,KAAK,CAAC,CAAC,EAAE,CAAC;AACV,iBAAA,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,CAAA,EAAG,KAAK,GAAG,CAAC,CAAA,EAAA,EAAK,IAAI,EAAE;iBAC5C,MAAM,CAAC,KAAK,CAAC;QAClB;aAAO;AACL,YAAA,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,CAAA,EAAG,KAAK,GAAG,CAAC,KAAK,IAAI,CAAA,CAAE,CAAC;QAC7D;IACF;AAEA,IAAA,aAAa,CAAC,KAA2C,EAAA;AACvD,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,YAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACzB;QACA,OAAO,KAAK,IAAI,IAAI;IACtB;wGA5FW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EAFpB,CAAC,QAAQ,CAAC,0BCXvB,gpEAkDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDxCY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,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,YAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA;;4FAG1B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;+BACE,cAAc,EAAA,OAAA,EAEf,CAAC,YAAY,EAAE,aAAa,CAAC,EAAA,SAAA,EAC3B,CAAC,QAAQ,CAAC,EAAA,QAAA,EAAA,gpEAAA,EAAA;;sBAGpB;;sBACA;;sBACA;;;AEhBH,IAAY,cASX;AATD,CAAA,UAAY,cAAc,EAAA;AACzB,IAAA,cAAA,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACV,IAAA,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ;AACR,IAAA,cAAA,CAAA,cAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY;AACZ,IAAA,cAAA,CAAA,cAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ;AACR,IAAA,cAAA,CAAA,cAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAgB;AAChB,IAAA,cAAA,CAAA,cAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY;AACZ,IAAA,cAAA,CAAA,cAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY;AACZ,IAAA,cAAA,CAAA,cAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa;AACd,CAAC,EATW,cAAc,KAAd,cAAc,GAAA,EAAA,CAAA,CAAA;;ACY1B,MAAM,IAAI,GAAG,MAAK,EAAE,CAAC;AAEd,MAAM,mCAAmC,GAAQ;AACtD,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,eAAe,CAAC;AAC9C,IAAA,KAAK,EAAE,IAAI;CACZ;MAQY,eAAe,CAAA;IACjB,IAAI,GAAW,EAAE;IACjB,KAAK,GAAW,EAAE;IAClB,OAAO,GAAY,IAAI;IACvB,OAAO,GAAY,IAAI;IACvB,MAAM,GAAW,EAAE;IACnB,WAAW,GAAW,EAAE;IACxB,KAAK,GAAW,EAAE;IAClB,WAAW,GAAW,EAAE;IACxB,WAAW,GAAY,KAAK;AAC5B,IAAA,YAAY;IACZ,SAAS,GAAY,IAAI;IACzB,mBAAmB,GAAY,IAAI;IACnC,SAAS,GAAY,IAAI;IACzB,WAAW,GAAQ,IAAI;IACvB,iBAAiB,GAAY,KAAK;IAClC,sBAAsB,GAAY,KAAK;IACvC,eAAe,GAA8C,EAAE;AAC9D,IAAA,MAAM,GACd,IAAI,YAAY,EAAsB;IAEhC,UAAU,GAAQ,EAAE;IAE5B,QAAQ,GAAsB,EAAE;AAChC,IAAA,QAAQ,GAAiB,IAAI,OAAO,EAAO;AAC3C,IAAA,IAAI;IACJ,KAAK,GAAW,CAAC,CAAC;AAElB,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,UAAU;IACxB;;IAGA,IAAI,KAAK,CAAC,CAAM,EAAA;AACd,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC;AACnB,YAAA,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC1B;IACF;AAEA,IAAA,WAAA,CAAY,UAA0B,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI,GAAG,UAAU;IACxB;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;QACzB;IACF;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE;IAC5B;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;IAC7B;IAEA,gBAAgB,CAAE,UAAmB,EAAA,EAAS;IAE9C,MAAM,GAAA;QACJ,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEQ,iBAAiB,GAAe,IAAI;IACpC,gBAAgB,GAAqB,IAAI;wGAjEtC,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAI,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAFf,CAAC,mCAAmC,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;AAErC,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cANd,MAAM,EAAA,CAAA;;4FAMP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;kBACA,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,QAAQ;oBAClB,SAAS,EAAE,CAAC,mCAAmC,CAAC;AACjD,iBAAA;;sBAEE;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;MCRU,oBAAoB,CAAA;AAGtB,IAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACtD;;;;AAIG;IACM,EAAE,GAAW,EAAE;AAExB;;;;AAIG;IACM,OAAO,GAAU,EAAE;AAE5B;;;;AAIG;IACM,WAAW,GAAuB,MAAM;AAEjD;;;;AAIG;IACM,WAAW,GAAuB,OAAO;AAElD;;;;AAIG;IACM,WAAW,GAAW,gBAAgB;AAE/C;;;;AAIG;IACM,UAAU,GAAY,KAAK;AAEpC;;;;AAIG;IACM,OAAO,GAAY,KAAK;AAEjC;;;;AAIG;IACM,OAAO,GAAW,KAAK;AAEhC;;;;AAIG;IACM,iBAAiB,GAAW,CAAC;AAEtC;;;;AAIG;IACM,QAAQ,GAAW,EAAE;AAE9B;;;;AAIG;IACM,eAAe,GAAW,eAAe;AAElD;;;;AAIG;IACM,aAAa,GAAY,KAAK;AAEvC;;;;AAIG;IACM,QAAQ,GAAY,KAAK;AAElC;;;;AAIG;IACM,kBAAkB,GAAW,UAAU;AAEhD;;;;AAIG;IACM,cAAc,GAAW,EAAE;AAEpC;;;;AAIG;IACM,KAAK,GAAY,KAAK;AAE/B;;;;AAIG;IACM,iBAAiB,GAAY,IAAI;AAE1C;;;;AAIG;AACiB,IAAA,aAAa,GAC/B,IAAI,YAAY,EAAE;AACG,IAAA,gBAAgB,GACrC,IAAI,YAAY,EAAE;AACG,IAAA,gBAAgB,GACrC,IAAI,YAAY,EAAE;IAEpB,OAAO,GAAY,KAAK;IACxB,eAAe,GAAa,EAAE;AAE9B,IAAA,UAAU,GAAQ,MAAK,EAAE,CAAC;AAC1B,IAAA,WAAW,GAAQ,MAAK,EAAE,CAAC;AAE3B;;;;AAIG;IACM,WAAW,GAAW,EAAE;IAEjC,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,MAAM,KAAK,QAAQ,CAAC,EAAE;AAC7D,YAAA,IAAI,CAAC,WAAW,GAAG,SAAS;AAC5B,YAAA,IAAI,CAAC,WAAW,GAAG,SAAS;QAC9B;IACF;AAEA,IAAA,UAAU,CAAC,KAAe,EAAA;AACxB,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,IAAI,EAAE;AAClC,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC;cAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;AACjE,cAAE,IAAI,CAAC,OAAO,CAAC,MAAM;QAEvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,iBAAiB;IAClE;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE;IACvB;AAEA,IAAA,gBAAgB,CAAE,UAAmB,EAAA;;IAErC;AAEA,IAAA,kBAAkB,CAAC,KAAU,EAAA;AAC3B,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AAClB,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE;QAC3B;aAAO;AACL,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;;AAEd,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAChD,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,KACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CACjD,CACF;YACH;iBAAO;;AAEL,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAC7C,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,MAAM,CACrD;YACH;QACF;QACA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;QAC9C,IAAI,CAAC,eAAe,EAAE;IACxB;AAEA,IAAA,cAAc,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM;QAClE,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC;QACrC,IAAI,CAAC,WAAW,EAAE;IACpB;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AAC7C,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC;QACrC,IAAI,CAAC,WAAW,EAAE;IACpB;AAEA,IAAA,WAAW,CAAC,KAAU,EAAA;AACpB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC;AAEA,IAAA,WAAW,CAAC,KAAU,EAAA;AACpB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC;wGAzNW,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,uBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EARpB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClCH,o7CA8CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDzBI,WAAW,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,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,iBAAiB,gyCACjB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAEd,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EADZ,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA;;4FAYC,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAlBhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,OAAA,EACxB;wBACP,WAAW;wBACX,iBAAiB;wBACjB,cAAc;wBACd,QAAQ;wBACR,YAAY;qBACb,EAAA,SAAA,EAEU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC;AACnD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,o7CAAA,EAAA;;sBAWA;;sBAOA;;sBAOA;;sBAOA;;sBAOA;;sBAOA;;sBAOA;;sBAOA;;sBAOA;;sBAOA;;sBAOA;;sBAOA;;sBAOA;;sBAOA;;sBAOA;;sBAOA;;sBAOA;;sBAOA,MAAM;uBAAC,UAAU;;sBAEjB,MAAM;uBAAC,aAAa;;sBAEpB,MAAM;uBAAC,aAAa;;sBAcpB;;;ME/HU,gBAAgB,CAAA;AA0EP,IAAA,EAAA;AAzEX,IAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAC7C,WAAW,GAAY,IAAI;IAC3B,WAAW,GAAW,EAAE;IACxB,OAAO,GAAW,CAAC;AAClB,IAAA,SAAS,GAAsB,IAAI,YAAY,EAAO;AACtD,IAAA,UAAU,GAAsB,IAAI,YAAY,EAAO;;IAGjE,aAAa,GAAmB,EAAE;;AAGlC,IAAA,KAAK;;IAGL,eAAe,GAAY,KAAK;;IAGhC,gBAAgB,GAAY,KAAK;;IAGjC,eAAe,GAAkB,EAAE;;IAGnC,UAAU,GAAG,YAAY;IACzB,UAAU,GAAG,YAAY;IACzB,QAAQ,GAAG,UAAU;IACrB,QAAQ,GAAG,UAAU;IACrB,OAAO,GAAG,SAAS;IACnB,OAAO,GAAG,SAAS;;IAGnB,iBAAiB,GAAG,UAAU;AAE9B;;;;AAIG;AAEH,IAAA,gBAAgB;;AAIhB,IAAA,2BAA2B;AAE3B;;;;AAIG;;;IAIH,OAAO,GAAW,4BAA4B;;IAG9C,OAAO,GAAsB,EAAE;;IAG/B,cAAc,GAAG,cAAc;;IAG/B,UAAU,GAAa,EAAE;IACzB,kBAAkB,GAAQ,EAAE;;IAG5B,QAAQ,GAAG,IAAI;;IAGf,eAAe,GAAW,EAAE;IAE5B,gBAAgB,GAAY,KAAK;AAEjC,IAAA,WAAA,CAAoB,EAAqB,EAAA;QAArB,IAAA,CAAA,EAAE,GAAF,EAAE;IAAsB;IAE5C,QAAQ,GAAA;QACN,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAC7E;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,KAAK,MAAM,YAAY,IAAI,OAAO,EAAE;AAClC,YAAA,IAAI,YAAY,KAAK,SAAS,EAAE;AAC9B,gBAAA,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;AACpC,gBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY;gBAEnC,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AACtE,gBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;YACzB;QACF;IACF;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,KAAI;YAC1C,YAAY,CAAC,WAAW,EAAE;AAC5B,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,aAAa,EAAE;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;QAE9C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAC9B,YAAA,IAAI,MAAM,CAAC,MAAM,EAAE;gBACjB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC;gBACjE,IAAI,MAAM,EAAE;AACV,oBAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC9B;YACF;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;QACvB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACvC,YAAA,IACE,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS;gBACzB,MAAM,CAAC,KAAK,KAAK,IAAI;AACrB,gBAAA,MAAM,CAAC,KAAK,KAAK,EAAE;AACrB,gBAAA,MAAM,CAAC,YAAY,IAAI,IAAI,EAC3B;AACA,gBAAA,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,YAAY;gBAClC,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,MAAM,EAAE;AACzC,oBAAA,MAAM,CAAC,KAAK,GAAG,IAAI;gBACrB;AACA,gBAAA,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;YACvC;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;AAEA,IAAA,cAAc,CAAC,IAAS,EAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AAAE,YAAA,OAAO,CAAC;AAE3D,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAa,EAAE,KAAU,KAAI;gBACvD,OAAO,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YACtE,CAAC,EAAE,CAAC,CAAC;QACP;aAAO;AACL,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM;QAC5B;IACF;IAEA,QAAQ,CAAC,MAAW,EAAE,MAAuB,EAAA;AAC3C,QAAA,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,KAAK,SAAS,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM;AACjE,QAAA,MAAM,CAAC,KAAK,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;AACrC,QAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACrE;IACF;IAEA,aAAa,CAAC,MAAW,EAAE,MAAuB,EAAA;AAChD,QAAA,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO;AAC7B,QAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACrE;IACF;IAEA,gBAAgB,CAAC,MAAW,EAAE,MAAuB,EAAA;AACnD,QAAA,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,KAAK,SAAS,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM;AACjE,QAAA,MAAM,CAAC,KAAK,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;AACrC,QAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACrE;IACF;AAEA,IAAA,YAAY,CAAC,IAAqB,EAAA;AAChC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK;AACpB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY;AAE3B,QAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;AAAE,YAAA,OAAO,IAAI;QAE9C,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC5C,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AACpB,gBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;AACxC,gBAAA,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC;YACzD;YACA,OAAO,CAAC,KAAK,CAAC;QAChB;QAEA,IACE,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI;YACtC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,QAAQ,EAC1C;AACA,YAAA,OAAO,OAAO,CAAC,KAAK,QAAQ,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC;QAC1D;QAEA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAC1C,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AACpB,gBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;gBACxC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;gBAC1C,MAAM,SAAS,GACb,OAAO;AACP,oBAAA,CAAC,CAAC,KAAK,CACL,CAAC,EAAE,EAAE,CAAC,KACJ,EAAE,YAAY,IAAI;AAClB,wBAAA,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI;AACzB,wBAAA,EAAE,CAAC,OAAO,EAAE,KAAM,MAAM,CAAC,CAAC,CAAU,CAAC,OAAO,EAAE,CACjD;AACH,gBAAA,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS;YACxC;AACA,YAAA,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI;gBACxC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE;YACpC,OAAO,CAAC,CAAC;QACX;AACA,QAAA,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtB;AAEQ,IAAA,wBAAwB,CAAC,MAAuB,EAAA;AACtD,QAAA,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM;YAAE;QAErC,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;QAElD,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACtC,YAAA,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC;YAC3D,IAAI,KAAK,EAAE;AACT,gBAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK;AAC1B,gBAAA,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK;AACpC,sBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;sBAChD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC;AAEtC,gBAAA,KAAK,CAAC,OAAO,GAAG,UAAU;AAC1B,gBAAA,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,CAAC;YAChE;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,OAAO,CAAC,MAAW,EAAE,MAAuB,EAAA;QAC1C,IAAI,MAAM,CAAC,MAAM;AACf,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACvE;AAEA,IAAA,UAAU,CAAC,MAAuB,EAAA;;AAEhC,QAAA,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,IAAI,MAAM,CAAC,YAAY,KAAK,IAAI,EAAE;AACrE,YAAA,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,YAAY;QACpC;aAAO;AACL,YAAA,QAAQ,OAAO,MAAM,CAAC,KAAK;AACzB,gBAAA,KAAK,QAAQ;oBACX,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,MAAM,EAAE;AACzC,wBAAA,MAAM,CAAC,KAAK,GAAG,IAAI;oBACrB;yBAAO;AACL,wBAAA,MAAM,CAAC,KAAK,GAAG,EAAE;oBACnB;oBACA;AACF,gBAAA,KAAK,SAAS;AACZ,oBAAA,MAAM,CAAC,KAAK,GAAG,KAAK;oBACpB;AACF,gBAAA;oBACE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAC/B,wBAAA,MAAM,CAAC,KAAK,GAAG,EAAE;oBACnB;yBAAO;AACL,wBAAA,MAAM,CAAC,KAAK,GAAG,IAAI;oBACrB;oBACA;;QAEN;;AAGA,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAC3C,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAChC;AACD,YAAA,MAAM,kBAAkB,GAAG,EACzB,MAAM,CAAC,YAAY,KAAK,SAAS,IAAI,MAAM,CAAC,YAAY,KAAK,IAAI,CAClE,CAAC;AAEF,YAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACzB,gBAAA,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI,EAAE;AACnE,oBAAA,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,YAAY;gBAClC;qBAAO;AACL,oBAAA,QAAQ,OAAO,KAAK,CAAC,KAAK;AACxB,wBAAA,KAAK,QAAQ;AACX,4BAAA,KAAK,CAAC,KAAK,GAAG,EAAE;4BAChB;AACF,wBAAA,KAAK,SAAS;AACZ,4BAAA,KAAK,CAAC,KAAK,GAAG,KAAK;4BACnB;AACF,wBAAA;4BACE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AAC9B,gCAAA,KAAK,CAAC,KAAK,GAAG,EAAE;4BAClB;iCAAO;AACL,gCAAA,KAAK,CAAC,KAAK,GAAG,IAAI;4BACpB;4BACA;;gBAEN;gBAEA,IAAI,kBAAkB,EAAE;AACtB,oBAAA,KAAK,CAAC,OAAO,GAAG,KAAK;gBACvB;AAEA,gBAAA,IAAI,KAAK,CAAC,MAAM,EAAE;AAChB,oBAAA,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AAChB,wBAAA,OAAO,EAAE,KAAK;wBACd,GAAG,EAAE,IAAI,CAAC,gBAAgB;AAC3B,qBAAA,CAAC;gBACJ;AACF,YAAA,CAAC,CAAC;QACJ;QAEA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC;QAC3E,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAEvD,QAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACrE;AAEA,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;AAEA;;;;AAIG;AACH,IAAA,qBAAqB,CAAC,MAAuB,EAAA;QAC3C,IAAI,CAAC,MAAM,CAAC,mBAAmB;YAAE;AAEjC,QAAA,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK;AACxB,QAAA,IAAI,IAAI,GAAG,MAAM,CAAC,KAAK;QACvB,IAAI,SAAS,GAAQ,EAAE;QACvB,IAAI,UAAU,GAAQ,EAAE;QAExB,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,MAAM,EAAE;YACzC,MAAM,YAAY,GAAG,MAA+B;AAEpD,YAAA,IAAI,YAAY,CAAC,QAAQ,EAAE;gBACzB,IAAI,GAAG,EAAE;gBACT,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAM,KAAI;oBAC9B,IAAI,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAC5C,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CACzC;oBACD,IAAI,YAAY,CAAC,MAAM;AACrB,wBAAA,SAAS,GAAG;AACV,4BAAA,GAAG,SAAS;AACZ,4BAAA,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC;yBAC1C;AACH,oBAAA,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;AACzB,wBAAA,IAAI,GAAG,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,GAAG;AACjE,gBAAA,CAAC,CAAC;gBACF,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1B;iBAAO;gBACL,IAAI,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAC5C,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,MAAM,CAAC,KAAK,CACpD;AACD,gBAAA,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;oBACzB,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC;YACpD;QACF;QAEA,IAAI,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAC7C,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAC9B,CAAC,CAAC,CAAQ;QAEX,IAAI,CAAC,aAAa,EAAE;YAClB,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,EAAE;gBACvC,MAAM,UAAU,GAAG,MAA6B;AAChD,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;oBACxB,IAAI,EAAE,MAAM,CAAC,IAAI;AACjB,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE,MAAM,CAAC,KAAK;AACnB,oBAAA,SAAS,EAAE,SAAS;oBACpB,UAAU,EAAE,UAAU,CAAC,QAAQ;AAChC,iBAAA,CAAC;YACJ;iBAAO;AACL,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;oBACxB,IAAI,EAAE,MAAM,CAAC,IAAI;AACjB,oBAAA,KAAK,EAAE,KAAK;AACZ,oBAAA,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE,MAAM,CAAC,KAAK;AACnB,oBAAA,SAAS,EAAE,SAAS;AACrB,iBAAA,CAAC;YACJ;QACF;aAAO;AACL,YAAA,aAAa,CAAC,IAAI,GAAG,IAAI;AACzB,YAAA,aAAa,CAAC,KAAK,GAAG,KAAK;QAC7B;IACF;AAEA;;;;;AAKG;IACH,QAAQ,CAAC,MAAuB,EAAE,YAA8B,EAAA;AAC9D,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC;SAC/D;;QAGD,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;;YAEhC,IAAI,MAAM,CAAC,WAAW;gBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACpE,YAAA,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE;QACjD;;QAGA,IAAI,YAAY,EAAE;AAChB,YAAA,MAAM,QAAQ,GAAG;gBACf,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAC7B,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,YAAY,EAAE,IAAI,IAAI,CAAC,CAAC,OAAO,CACpD;aACF;YACD,IAAI,KAAK,GAAW,EAAE;;YAGtB,IAAI,YAAY,CAAC,WAAW;AAC1B,gBAAA,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;;AACjD,gBAAA,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE;;YAG5D,IAAI,MAAM,CAAC,WAAW;AACpB,gBAAA,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;;AAClD,gBAAA,KAAK,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE;AAE7D,YAAA,OAAO,KAAK;QACd;;AAGA,QAAA,OAAO,OAAO;IAChB;AAEA;;;;;AAKG;IACH,UAAU,GAAA;;AAER,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;;QAEzB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,eAAe,KAAI;AAChD,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE;;gBAExC,IAAI,eAAe,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,EAAE;;AAEhD,oBAAA,IACE,eAAe,CAAC,KAAK,KAAK,SAAS;wBACnC,eAAe,CAAC,KAAK,KAAK,IAAI;wBAC9B,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EACnC;AACA,wBAAA,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC;oBAC7C;gBACF;qBAAO;;AAEL,oBAAA,IAAI,eAAe,CAAC,iBAAiB,EAAE;wBACrC,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;wBAClD,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU;AACjD,8BAAE;8BACA,IAAI;oBACV;;AAGA,oBAAA,IACE,eAAe,CAAC,KAAK,KAAK,SAAS;wBACnC,eAAe,CAAC,KAAK,KAAK,IAAI;yBAC7B,IAAI,CAAC,gBAAgB,CACpB,eAAe,CAAC,KAAK,EACrB,eAAe,CAAC,YAAY,CAC7B;AACC,4BAAA,eAAe,CAAC,KAAK,GAAG,CAAC,CAAC;AAC1B,4BAAA,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC;AACpC,4BAAA,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;wBAC1C,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,EAC3C;AACA,wBAAA,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC;oBAC7C;gBACF;YACF;AACF,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;IAC3C;AAEQ,IAAA,WAAW,CAAC,KAAU,EAAA;AAC5B,QAAA,OAAO,KAAK,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IACzD;AAEA,IAAA,cAAc,CAAC,MAAuB,EAAA;QACpC,OAAO,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI;IAC5D;IAEA,gBAAgB,CAAC,KAAU,EAAE,YAAiB,EAAA;AAC5C,QAAA,QACE,QAAQ,KAAK,IAAI,QAAQ,IAAI,KAAK,KAAK,QAAQ,CAAC,IAAI,KAAK,IAAI,YAAY;IAE7E;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;;AAEvC,YAAA,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,IAAI,MAAM,CAAC,YAAY,KAAK,IAAI,EAAE;AACrE,gBAAA,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,YAAY;YACpC;iBAAO;AACL,gBAAA,QAAQ,OAAO,MAAM,CAAC,KAAK;AACzB,oBAAA,KAAK,QAAQ;AACX,wBAAA,MAAM,CAAC,KAAK,GAAG,EAAE;wBACjB;AACF,oBAAA,KAAK,SAAS;AACZ,wBAAA,MAAM,CAAC,KAAK,GAAG,KAAK;wBACpB;AACF,oBAAA,KAAK,QAAQ;wBACX,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAC/B,4BAAA,MAAM,CAAC,KAAK,GAAG,EAAE;wBACnB;6BAAO;AACL,4BAAA,MAAM,CAAC,KAAK,GAAG,IAAI;wBACrB;wBACA;AACF,oBAAA;AACE,wBAAA,MAAM,CAAC,KAAK,GAAG,IAAI;wBACnB;;YAEN;;AAGA,YAAA,IAAI,MAAM,CAAC,MAAM,EAAE;gBACjB,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACvC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAChC;AACD,gBAAA,MAAM,gBAAgB,GACpB,MAAM,EAAE,YAAY,KAAK,SAAS,IAAI,MAAM,EAAE,YAAY,KAAK,IAAI;gBAErE,IAAI,CAAC,gBAAgB,EAAE;AACrB,oBAAA,MAAM,CAAC,OAAO,GAAG,KAAK;gBACxB;YACF;AAEA,YAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,gBAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACrE;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;QAEzB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAE3C,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;IACzB;AAEA;;;;AAIG;AACH,IAAA,kBAAkB,CAAC,MAAuB,EAAA;QACxC,IAAI,UAAU,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,YAAY;;AAGpD,QAAA,IACE,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI;AACnC,YAAA,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ;AACvC,YAAA,MAAM,CAAC,YAAY,IAAI,IAAI,EAC3B;YACA,UAAU;AACP,gBAAA,MAAM,CAAC,KAAc,CAAC,OAAO,EAAE;AAC/B,oBAAA,MAAM,CAAC,YAAqB,CAAC,OAAO,EAAE;QAC3C;;QAGA,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,YAAY,EAAE;AAC/C,YAAA,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;QACxD;AAEA,QAAA,OAAO,UAAU;IACnB;AAEA;;;;AAIG;AACH,IAAA,sBAAsB,CAAC,MAAuB,EAAA;AAC5C,QAAA,IAAI,UAAU,GACZ,MAAM,CAAC,KAAK,IAAI,IAAI;YACpB,MAAM,CAAC,KAAK,IAAI,CAAC;AACjB,YAAA,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;AAClB,YAAA,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,YAAY;YACnC,MAAM,CAAC,SAAS;AAElB,QAAA,IAAI,MAAM,CAAC,YAAY,EAAE;AACvB,YAAA,UAAU,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,YAAY;QAC1E;;AAGA,QAAA,IACE,MAAM,CAAC,KAAK,IAAI,IAAI;AACpB,YAAA,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI;AACnC,YAAA,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ;AACvC,YAAA,MAAM,CAAC,YAAY,IAAI,IAAI,EAC3B;YACA,UAAU;AACP,gBAAA,MAAM,CAAC,KAAc,CAAC,OAAO,EAAE;AAC/B,oBAAA,MAAM,CAAC,YAAqB,CAAC,OAAO,EAAE;QAC3C;QAEA,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,MAAM,EAAE;AACzC,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;AACrE,gBAAA,UAAU,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC;YACtE;iBAAO;gBACL,UAAU,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,YAAY;YAClD;QACF;AACA,QAAA,OAAO,UAAU;IACnB;IAEQ,cAAc,CAAC,IAAW,EAAE,IAAW,EAAA;AAC7C,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,KAAK;AAC7C,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;IACxD;AAEA,IAAA,QAAQ,CAAC,IAAqB,EAAA;AAC5B,QAAA,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI;QAE5B,IAAI,GAAG,GAAG,KAAK;AAEf,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC/D,YAAA,GAAG,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;QACxB;AAAO,aAAA,IACL,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI;AACjC,YAAA,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,QAAQ,EACrC;YACA,GAAG,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;QACtC;AAAO,aAAA,IAAI,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACpE,YAAA,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9B;aAAO;AACL,YAAA,GAAG,GAAG,CAAC,CAAC,KAAK;QACf;QAEA,IAAI,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;AACnC,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,OAAO,GAAG;IACZ;AAEQ,IAAA,aAAa,CAAC,IAAqB,EAAA;QACzC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,IAAI;QAE1C,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,EAAE;AACvD,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,IACE,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM;AACnC,YAAA,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AACpB,YAAA,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAC3B;AACA,YAAA,QACE,KAAK,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM;AACpC,gBAAA,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC;QAEhD;AAEA,QAAA,IACE,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI;AACjC,YAAA,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AACpB,YAAA,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAC3B;AACA,YAAA,QACE,KAAK,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM;AACpC,gBAAA,KAAK,CAAC,KAAK,CACT,CAAC,CAAC,EAAE,CAAC,KACH,CAAC,YAAY,IAAI;AACjB,oBAAA,YAAY,CAAC,CAAC,CAAC,YAAY,IAAI;AAC/B,oBAAA,CAAC,CAAC,OAAO,EAAE,KAAM,YAAY,CAAC,CAAC,CAAU,CAAC,OAAO,EAAE,CACtD;QAEL;AAEA,QAAA,IACE,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI;AACjC,YAAA,KAAK,YAAY,IAAI;YACrB,YAAY,YAAY,IAAI,EAC5B;YACA,OAAO,KAAK,CAAC,OAAO,EAAE,KAAK,YAAY,CAAC,OAAO,EAAE;QACnD;QAEA,OAAO,KAAK,KAAK,YAAY;IAC/B;AAEA,IAAA,WAAW,CAAC,IAAc,EAAA;QACxB,QAAQ,IAAI;AACV,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,OAAO;AAChB,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,MAAM;AACf,YAAA;AACE,gBAAA,OAAO,MAAM;;IAEnB;AAEA,IAAA,aAAa,CAAC,IAAc,EAAA;QAC1B,QAAQ,IAAI;AACV,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,KAAK;AACd,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,GAAG;AACZ,YAAA;AACE,gBAAA,OAAO,OAAO;;IAEpB;AAEA,IAAA,wBAAwB,CAAC,IAAc,EAAA;QACrC,QAAQ,IAAI;AACV,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,MAAM;AACf,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,IAAI;AACb,YAAA;AACE,gBAAA,OAAO,QAAQ;;IAErB;IAEA,aAAa,GAAA;QACX,IAAI,QAAQ,GAAG,UAAU;AAEzB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CACjD,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAC9B;AACD,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AAEnE,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzC,gBAAA,MAAM,UAAU,GAAG,GAAG,GAAG,CAAC;AAC1B,gBAAA,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CACvC,CAAC,UAAU,GAAG,CAAC,IAAI,WAAW,EAC9B,UAAU,GAAG,WAAW,CACzB;AAED,gBAAA,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE;AACjC,oBAAA,MAAM,CAAC,KAAK,GAAG,GAAG;oBAElB,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAC3C,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAC7C;AACD,oBAAA,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;AAC5B,wBAAA,KAAK,CAAC,KAAK,GAAG,GAAG;oBACnB;gBACF;YACF;QACF;AAEA,QAAA,QAAQ,IAAI,CAAC,OAAO;AAClB,YAAA,KAAK,CAAC;gBACJ,QAAQ,GAAG,WAAW;gBACtB;AACF,YAAA,KAAK,CAAC;gBACJ,QAAQ,GAAG,UAAU;gBACrB;AACF,YAAA,KAAK,CAAC;gBACJ,QAAQ,GAAG,UAAU;gBACrB;AACF,YAAA,KAAK,CAAC;gBACJ,QAAQ,GAAG,UAAU;gBACrB;AACF,YAAA,KAAK,CAAC;gBACJ,QAAQ,GAAG,UAAU;gBACrB;AACF,YAAA;gBACE,QAAQ,GAAG,UAAU;gBACrB;;AAGJ,QAAA,OAAO,QAAQ;IACjB;wGAjwBW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,6BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,SAAA,EAuCV,eAAe,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9FlC,0rOAwOA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDhMI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,aAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,WAAW,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,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAEX,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,oBAAoB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EARpB,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA;;4FAYC,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAlB5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,OAAA,EACnB;wBACP,YAAY;wBACZ,gBAAgB;wBAChB,WAAW;wBACX,QAAQ;wBACR,YAAY;wBACZ,eAAe;wBACf,cAAc;wBACd,YAAY;wBACZ,iBAAiB;wBACjB,cAAc;wBACd,YAAY;wBACZ,oBAAoB;AACrB,qBAAA,EAAA,QAAA,EAAA,0rOAAA,EAAA;;sBAKA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAiCA,eAAe;uBAAC,eAAe;;sBAI/B,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,qBAAqB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;MEjF1C,oBAAoB,CAAA;AAC/B;;;AAGG;IACM,KAAK,GAAW,EAAE;AAE3B;;;AAGG;IACM,IAAI,GAAW,IAAI;AAE5B;;;AAGG;IACM,SAAS,GAAY,KAAK;AAEnC;;;AAGG;IACM,gBAAgB,GAAY,KAAK;AAE1C;;;AAGG;AACO,IAAA,eAAe,GAAG,IAAI,YAAY,EAAW;AAEvD;;;AAGG;AAC2B,IAAA,oBAAoB;AAElD;;;AAGG;IACH,OAAO,GAAY,KAAK;IAEjB,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;IACrB;IAEO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;IAClC;wGAlDW,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,4VCjBjC,4sBAwBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDVY,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,qIAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAGjC,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,WACxB,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,4sBAAA,EAAA;;sBAQ5C;;sBAMA;;sBAMA;;sBAMA;;sBAMA;;sBAMA,YAAY;uBAAC,cAAc;;;ME/CjB,kBAAkB,CAAA;AAC9B;;;AAGG;IACM,IAAI,GAAW,EAAE;AAE1B;;;;AAIG;IACM,WAAW,GAAY,KAAK;AAErC;;;;AAIG;IACM,eAAe,GAAY,KAAK;AAEzC;;;AAGG;AACO,IAAA,OAAO,GAAsB,IAAI,YAAY,EAAO;AAE9D;;;AAGG;AACuB,IAAA,QAAQ;AAElC;;;;AAIG;IACH,MAAM,GAAY,KAAK;wGAtCX,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,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,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,WAAW;AACrB,iBAAA;;sBAMC;;sBAOA;;sBAOA;;sBAMA;;sBAMA,YAAY;uBAAC,UAAU;;;MC1BZ,oBAAoB,CAAA;AAChC;;;;AAIG;AAEH,IAAA,UAAU;AAEV;;;;;;;;AAQG;AACH,IAAA,YAAY,CAAC,IAAwB,EAAA;;AAEpC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACpB;;AAGA,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACzB;QACD;;AAGA,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;IACnB;wGA/BY,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,4GAMf,kBAAkB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBpC,oZAQA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDDW,aAAa,yUAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAGzB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,OAAA,EACxB,CAAC,aAAa,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,oZAAA,EAAA;;sBASrC,eAAe;uBAAC,kBAAkB;;;MELvB,sBAAsB,CAAA;AAClC;;;;AAIG;IACM,UAAU,GAAsB,EAAE;AAE3C;;;AAGG;AACO,IAAA,UAAU,GAAsB,IAAI,YAAY,EAAE;AAE5D;;;AAGG;AACH,IAAA,KAAK;AAEL;;;;AAIG;IACH,OAAO,GAAa,EAAE;AAEtB;;;;;AAKG;IACH,QAAQ,GAAW,EAAE;AAErB,IAAA,WAAA,GAAA,EAAe;AAEf,IAAA,WAAW,CAAC,OAAY,EAAA;AACvB,QAAA,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,iBAAiB,EAAE;IAC/F;AAEA,IAAA,WAAW,KAAU;IAErB,QAAQ,GAAA;QACP,IAAI,CAAC,iBAAiB,EAAE;IACzB;IAEA,cAAc,GAAA;QACb,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IACpC;AAEA;;;;;;;AAOG;IACH,iBAAiB,GAAA;;;;AAKhB,QAAA,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;;AAG7D,QAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE;;QAG7B,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;;QAGnE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAChC;wGA1EY,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,sLCXnC,uoBAeA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDPW,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,kWAAE,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAG1C,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,WAC3B,CAAC,YAAY,EAAE,WAAW,EAAE,iBAAiB,CAAC,EAAA,QAAA,EAAA,uoBAAA,EAAA;;sBAStD;;sBAMA;;;MEvBW,cAAc,CAAA;;AAEnB,IAAA,OAAO,aAAa,GAAG,MAAM;AAC7B,IAAA,OAAO,YAAY,GAAG,KAAK;;AAE3B,IAAA,OAAO,mBAAmB,GAAG,GAAG;AAChC,IAAA,OAAO,kBAAkB,GAAG,GAAG;;;MCQ1B,gBAAgB,CAAA;AAC5B;;;AAGG;AACH,IAAA,YAAY,GAAiB,IAAI,YAAY,EAAE;AAE/C;;;AAGG;AACH,IAAA,KAAK;AAEL;;;;AAIG;IACH,cAAc,GAAyB,EAAE;AAEzC;;;;AAIG;IACH,aAAa,GAAG,CAAC;AAEjB;;;;AAIG;IACM,OAAO,GAAQ,EAAE;AAE1B;;;AAGG;AACM,IAAA,OAAO;AAEhB;;;;AAIG;IACM,cAAc,GAAQ,EAAE;AAEjC;;;;AAIG;IACM,SAAS,GAAY,KAAK;AAEnC;;;AAGG;AACO,IAAA,aAAa,GAAsB,IAAI,YAAY,EAAE;AAE/D;;;AAGG;AACO,IAAA,UAAU,GAAsB,IAAI,YAAY,EAAE;AAE5D;;;AAGG;IACH,KAAK,GAAG,cAAc;AAEtB,IAAA,WAAA,GAAA,EAAe;IAEf,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;IAChC;IAEA,QAAQ,GAAA;;;;;;IAMR;AAEA,IAAA,WAAW,CAAC,OAAY,EAAA;QACvB,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,cAAc,EAAE;QACrE,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,cAAc,EAAE;;IAEtE;AAEA;;;;;;AAMG;IACH,cAAc,GAAA;;QAEb,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE;;AAGnB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;;QAG3D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC;;AAGjI,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;AACrD,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;;QAG/C,OAAO,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,CAAC,KAAI;YAC7B,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;AAC7B,YAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;AACxC,QAAA,CAAC,CAAC;IACH;AAEA;;;;;AAKG;AACH,IAAA,WAAW,CAAC,IAAY,EAAA;QACvB,IAAI,cAAc,GAAG,EAAE;AACvB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;AAC9B,YAAA,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,YAAY,EAAE,CAAC;QAC/E;AACA,QAAA,OAAO,cAAc;IACtB;AAEA;;;;AAIG;IACH,iBAAiB,GAAA;AAChB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AACjB,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE;YAChD,IAAI,CAAC,YAAY,EAAE;QACpB;aAAO;AACN,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,oCAAoC,EAAE,CAAC,CAAC;QACrF;IACD;AAEA;;AAEG;IACH,YAAY,GAAA;AACX,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,IAAG;AACrC,YAAA,IAAI,OAAO,CAAC,EAAE,KAAK,GAAG,EAAE;gBACvB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK;YACzC;AACD,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IACtC;AAEA;;AAEG;IACH,iBAAiB,GAAA;QAChB,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE;QACzC,IAAI,CAAC,cAAc,EAAE;IACtB;AAEA;;;;;;AAMG;IACH,oBAAoB,CAAC,EAAU,EAAE,KAAa,EAAA;AAC7C,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IACjD;wGAjLY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECd7B,8wIA6FA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlFW,YAAY,saAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,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,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAGxD,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;+BACC,kBAAkB,EAAA,OAAA,EACnB,CAAC,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,8wIAAA,EAAA;;sBAmCpE;;sBAMA;;sBAOA;;sBAOA;;sBAMA;;sBAMA;;;MErEW,gBAAgB,CAAA;AAC5B;;;;AAIG;IACM,WAAW,GAA8B,EAAE;wGANxC,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECT7B,4UAQA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDFW,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAGV,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;+BACC,kBAAkB,EAAA,OAAA,EACnB,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,4UAAA,EAAA;;sBAStB;;;MELW,eAAe,CAAA;AAalB,IAAA,EAAA;AACqB,IAAA,UAAA;AAbrB,IAAA,MAAM;AACN,IAAA,EAAE;IACF,QAAQ,GAAqB,QAAQ;AACrC,IAAA,cAAc,GAA6B;AACnD,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,MAAM,EAAE,OAAO;KACf;AACS,IAAA,KAAK,GAAG,IAAI,YAAY,EAAO;AAEzC,IAAA,KAAK;IAEL,WAAA,CACS,EAAc,EACO,UAAkB,EAAA;QADvC,IAAA,CAAA,EAAE,GAAF,EAAE;QACmB,IAAA,CAAA,UAAU,GAAV,UAAU;IACrC;IAEH,eAAe,GAAA;AACd,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,EAAE,CAAA,KAAA,CAAO,CAAC;AAC5E,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC;QAClD;QACA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACxC,YAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC;QAC3C;QAEA,IAAI,CAAC,YAAY,EAAE;AAClB,YAAA,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC;QACvC;AAEA,QAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;IAC7B;IAEA,YAAY,GAAA;QACX,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAO,CAAC;IACnC;IAEA,MAAM,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACf,UAAU,CAAC,MAAK;AACf,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACpB,CAAC,EAAE,CAAC,CAAC;QACN;IACD;AAEQ,IAAA,SAAS,CAAC,YAAiB,EAAA;AAClC,QAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AACxD,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1E,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAO,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,IAAG;AAC/B,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AACxB,QAAA,CAAC,CAAC;AACF,QAAA,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;IAC/B;AArDY,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,4CAclB,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAdR,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECV5B,kFACA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDMW,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAGV,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACC,iBAAiB,EAAA,OAAA,EAClB,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,kFAAA,EAAA;;0BAiBrB,MAAM;2BAAC,WAAW;;sBAbnB;;sBACA;;sBACA;;sBACA;;sBAIA;;;MELW,qBAAqB,CAAA;AACxB,IAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAChC,IAAA,OAAO;AACJ,IAAA,UAAU;AACJ,IAAA,gBAAgB;AAE7B,IAAA,cAAc,GAAsB,IAAI,YAAY,EAAO;AAC1D,IAAA,eAAe,GAAsB,IAAI,YAAY,EAAO;IAE/E,aAAa,GAAY,KAAK;IAC9B,uBAAuB,GAAY,KAAK;AAExC,IAAA,WAAA,GAAA,EAAe;IAEf,SAAS,GAAA;AACR,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;QACzB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO;QAClD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;QACrD,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC;AACrE,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YACxB,IAAI,EAAE,IAAI,CAAC,aAAa;AACxB,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;AACnC,SAAA,CAAC;IACH;IAEA,UAAU,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;QAC1B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;QACjD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;QACxD,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC;AACxE,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YACzB,IAAI,EAAE,IAAI,CAAC,aAAa;AACxB,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;AACnC,SAAA,CAAC;IACH;AAEA,IAAA,WAAW,CAAC,KAAa,EAAA;AACxB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE;IAC1D;AAGA,IAAA,WAAW,CAAC,KAAY,EAAA;AACvB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,QAAA,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE;AACrJ,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI;QACpC;IACD;AAGA,IAAA,sBAAsB,CAAC,KAAY,EAAA;AAClC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;AAC1C,QAAA,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE;AAC3L,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI;QACpC;IACD;AAGA,IAAA,SAAS,CAAC,KAAY,EAAA;QACrB,UAAU,CAAC,MAAK;AACf,YAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK;QACrC,CAAC,EAAE,GAAG,CAAC;IACR;AAGA,IAAA,QAAQ,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,KAAK;YAAE;AACZ,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;;;;;;AAM1C,QAAA,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,gBAAgB,IAAI,MAAM,KAAK,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE;YAClG,IAAI,CAAC,UAAU,EAAE;YACjB;QACD;AACA,QAAA,MAAM,cAAc,GAAG;YACtB,UAAU;YACV,0BAA0B;YAC1B,iBAAiB;YACjB,oBAAoB;YACpB,2BAA2B;YAC3B,eAAe;YACf,0BAA0B;YAC1B,oBAAoB;YACpB,mBAAmB;YACnB,kBAAkB;YAClB,sBAAsB;YACtB,sBAAsB;YACtB,6BAA6B;YAC7B,aAAa;YACb,sBAAsB;YACtB,qBAAqB;YACrB,sBAAsB;YACtB,4BAA4B;YAC5B,gBAAgB;YAChB,qBAAqB;YACrB,mBAAmB;YACnB,YAAY;YACZ,wBAAwB;YACxB,eAAe;YACf,aAAa;YACb,aAAa;YACb,iBAAiB;YACjB,WAAW;YACX,iBAAiB;YACjB,mBAAmB;YACnB,kBAAkB;YAClB,gBAAgB;YAChB,qBAAqB;SACrB;AACD,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;YACjC;QACD;AAEA,QAAA,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,CAAA,CAAA,EAAI,SAAS,EAAE,CAAC,CAAC,EAAE;YACtE;QACD;AACA,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACvI,IAAI,CAAC,UAAU,EAAE;QAClB;IACD;wGAzHY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,QAAA,EAAA,eAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,gCAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECblC,4vBAkBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDRW,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA;;4FAGvE,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACC,wBAAwB,EAAA,OAAA,EACzB,CAAC,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAA,QAAA,EAAA,4vBAAA,EAAA;;sBAKnF,SAAS;uBAAC,SAAS;;sBACnB,SAAS;uBAAC,YAAY;;sBACtB,SAAS;uBAAC,kBAAkB;;sBAE5B,MAAM;uBAAC,QAAQ;;sBACf,MAAM;uBAAC,SAAS;;sBAiChB,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;;sBAQpC,YAAY;uBAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC;;sBAQ3C,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;sBAOlC,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;AE5E3C;;;;AAIG;AAEI,MAAM,uBAAuB,GAAG;AACtC,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,cAAc,EAAE,gBAAgB;AAChC,IAAA,YAAY,EAAE,cAAc;AAC5B,IAAA,aAAa,EAAE,eAAe;;;MCWlB,mBAAmB,CAAA;AA0HX,IAAA,GAAA;;IAxHX,uBAAuB,GAAG,uBAAuB;AAE1D;;;;AAIG;IACM,aAAa,GAAY,KAAK;AAEvC;;;;AAIG;IACM,QAAQ,GAAY,KAAK;AAElC;;;;AAIG;IACM,cAAc,GAAW,CAAC;AAEnC;;;;AAIG;IACM,eAAe,GAAW,qCAAqC;AAExE;;;;AAIG;IACM,WAAW,GAAY,KAAK;AAErC;;;;AAIG;IACM,aAAa,GAAuB,EAAE;AAE/C;;;;AAIG;AACM,IAAA,UAAU;AAEnB;;;;AAIG;IACM,IAAI,GAA8B,MAAM;AAEjD;;;;AAIG;IACM,aAAa,GAAuB,OAAO;AAEpD;;;;AAIG;AACiB,IAAA,aAAa,GAChC,IAAI,YAAY,EAAE;IAEnB,UAAU,GAA2B,IAAI;;IAGzC,aAAa,GAA2B,IAAI;AAE5C,IAAA,SAAS;AACT,IAAA,QAAQ;AAER,IAAA,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACtC,IAAA,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE;AAEpC,IAAA,WAAW;IAEH,oBAAoB,GAAG,KAAK;;AAGX,IAAA,aAAa;;IAG9B,UAAU,GAAY,IAAI;;IAG1B,gBAAgB,GAAY,KAAK;;IAGzC,YAAY,GAA4B,IAAI;AAE5C,IAAA,MAAM,GAAG;AACR,QAAA,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;AAC5B,QAAA,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE;AAC9B,QAAA,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;AAC5B,QAAA,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;AAC5B,QAAA,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE;AAC3B,QAAA,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;AAC5B,QAAA,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;AAC5B,QAAA,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE;AAC7B,QAAA,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE;AACjC,QAAA,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE;AAC9B,QAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE;AACjC,QAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE;KACjC;IAED,KAAK,GAAa,EAAE;AAEpB,IAAA,UAAU,GAAQ,MAAK,EAAE,CAAC;AAC1B,IAAA,WAAW,GAAQ,MAAK,EAAE,CAAC;AAE3B,IAAA,WAAA,CAAoB,GAAsB,EAAA;QAAtB,IAAA,CAAA,GAAG,GAAH,GAAG;AACtB,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;AAExB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAE;AACjC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE;AAEnC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAE7D,MAAM,UAAU,GAAG,EAAE;AAErB,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,UAAU,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE;AACjE,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACnB;IACD;AAEA,IAAA,IAAI,cAAc,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC9B,OAAO,IAAI,CAAC,MAAM;QACnB;QAEA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,WAAW,EAAE;AACvC,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC;QAC7D;QAEA,OAAO,IAAI,CAAC,MAAM;IACnB;IAEA,aAAa,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACpB,OAAO,IAAI,CAAC,UAAU;QACvB;AAEA,QAAA,QAAQ,IAAI,CAAC,IAAI;AAChB,YAAA,KAAK,OAAO;AACX,gBAAA,OAAO,OAAO;AACf,YAAA,KAAK,MAAM;AACV,gBAAA,OAAO,IAAI;AACZ,YAAA;AACC,gBAAA,OAAO,UAAU;;IAEpB;IAEQ,kBAAkB,CAAC,KAAa,EAAE,IAAY,EAAA;AACrD,QAAA,IAAI,KAAK,GAAG,EAAE,EAAE;YACf,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE;QACpC;AAEA,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;YACd,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE;QACrC;AAEA,QAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;IACvB;AAEA,IAAA,aAAa,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;AAChC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC;AACnE,QAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,KAAK;AACjC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI;IAChC;AAEA,IAAA,YAAY,CAAC,KAAU,EAAA;AACtB,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;AAChC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC;AACnE,QAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,KAAK;AACjC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI;IAChC;IAEA,YAAY,GAAA;AACX,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK;AACjC,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE;AAC7E,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY;QACnC;AACA,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9D;;AAGA,IAAA,IAAI,aAAa,GAAA;;;AAGhB,QAAA,OAAO,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU;IAC/D;;AAGA,IAAA,aAAa,CAAC,GAA2B,EAAA;;AAExC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AAExB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;;AAErB,YAAA,IAAI,CAAC,aAAa,GAAG,GAAG;;AAGxB,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;;YAG5B,UAAU,CAAC,MAAK;AACf,gBAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;YAC9B,CAAC,EAAE,GAAG,CAAC;QACR;aAAO;;AAEN,YAAA,IAAI,CAAC,UAAU,GAAG,GAAG;YACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;YAChC,IAAI,CAAC,WAAW,EAAE;QACnB;IACD;AAEA,IAAA,UAAU,CAAC,KAA6B,EAAA;AACvC,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;QAC3B;IACD;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACrB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE;IACtB;AAEA,IAAA,gBAAgB,CAAE,UAAmB,EAAA;;IAErC;IAEA,YAAY,GAAA;QACX,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;QAChC,IAAI,CAAC,WAAW,EAAE;IACnB;;IAGA,UAAU,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;;AAErB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU;;AAEpC,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;;YAG7B,UAAU,CAAC,MAAK;gBACf,IAAI,CAAC,wBAAwB,EAAE;YAChC,CAAC,EAAE,CAAC,CAAC;QACN;IACD;IAEA,WAAW,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;;AAErB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU;;AAEpC,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;;;YAI7B,UAAU,CAAC,MAAK;AACf,gBAAA,IAAI,IAAI,CAAC,aAAa,EAAE;;oBAEvB,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU;;AAE1C,oBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;gBACzB;YACD,CAAC,EAAE,CAAC,CAAC;QACN;IACD;;AAGA,IAAA,aAAa,CAAC,KAAU,EAAA;;AAEvB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa;QACpC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;QAChC,IAAI,CAAC,WAAW,EAAE;;AAGlB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;;AAG7B,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACvB,YAAA,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,KAAK;QAC1C;IACD;;AAGA,IAAA,aAAa,CAAC,KAAU,EAAA;;AAEvB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AAExB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;;AAErB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;YACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;YAChC,IAAI,CAAC,WAAW,EAAE;;AAElB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;QAC9B;aAAO;AACN,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;YACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;YAChC,IAAI,CAAC,WAAW,EAAE;QACnB;;AAGA,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACvB,YAAA,IAAI,CAAC,aAAa,CAAC,cAAc,GAAG,KAAK;QAC1C;IACD;;AAGA,IAAA,aAAa,CAAC,KAAU,EAAA;AACvB,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;AACxB,QAAA,MAAM,SAAS,GAAoB,CAAC,KAAK,EAAE,KAAK,CAAC;AAEjD,QAAA,IAAI,CAAC,YAAY,GAAG,uBAAuB,CAAC,KAAK;AAEjD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS;QAC/B;aAAO;AACN,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;YAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;YAChC,IAAI,CAAC,WAAW,EAAE;QACnB;IACD;AAEA,IAAA,oBAAoB,CAAC,KAAU,EAAA;AAC9B,QAAA,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE;AAC1B,QAAA,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE;QAC5B,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;AAC7C,QAAA,MAAM,SAAS,GAAoB,CAAC,SAAS,EAAE,OAAO,CAAC;AAEvD,QAAA,IAAI,CAAC,YAAY,GAAG,uBAAuB,CAAC,cAAc;AAE1D,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS;QAC/B;aAAO;AACN,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;YAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;YAChC,IAAI,CAAC,WAAW,EAAE;QACnB;IACD;AAEA,IAAA,mBAAmB,CAAC,KAAU,EAAA;AAC7B,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;AACxB,QAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACtD,QAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACtD,QAAA,MAAM,SAAS,GAAoB,CAAC,SAAS,EAAE,OAAO,CAAC;AAEvD,QAAA,IAAI,CAAC,YAAY,GAAG,uBAAuB,CAAC,YAAY;AAExD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS;QAC/B;aAAO;AACN,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;YAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;YAChC,IAAI,CAAC,WAAW,EAAE;QACnB;IACD;AAEA,IAAA,oBAAoB,CAAC,KAAU,EAAA;AAC9B,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;AACxB,QAAA,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;AAChF,QAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;AACzE,QAAA,MAAM,SAAS,GAAoB,CAAC,SAAS,EAAE,OAAO,CAAC;AAEvD,QAAA,IAAI,CAAC,YAAY,GAAG,uBAAuB,CAAC,aAAa;AAEzD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS;QAC/B;aAAO;AACN,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;YAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;YAChC,IAAI,CAAC,WAAW,EAAE;QACnB;IACD;;AAGA,IAAA,gBAAgB,CAAC,UAA4B,EAAA;QAC5C,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC/C;;AAGA,IAAA,cAAc,CAAC,UAA4B,EAAA;AAC1C,QAAA,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU,GAAG,WAAW,GAAG,WAAW;IACpE;IAEA,kBAAkB,GAAA;;AAEjB,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,KAAK,SAAS,EAAE;YAChG,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;;gBAErD,UAAU,CAAC,MAAK;oBACf,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW;gBAC/C,CAAC,EAAE,CAAC,CAAC;YACN;QACD;IACD;IAEQ,wBAAwB,GAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACxB;QACD;;AAGA,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;YACpC;QACD;;AAGA,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE;AAC7C,YAAA,IAAI,CAAC,aAAa,CAAC,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;QAClG;;AAGA,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,MAAK;;YAErC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBAC9C;YACD;;;YAIA,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;;AAEzC,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU;;gBAEpC,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU;YAC3C;;AAGA,YAAA,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE;AAC1C,QAAA,CAAC;IACF;wGAndY,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,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,qBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EARpB;AACV,YAAA;AACC,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE,IAAI;AACX,aAAA;SACD,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBF,+2GAoGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDzFW,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,mWAAE,UAAU,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,aAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAU/D,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAZ/B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,OAAA,EACtB,CAAC,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,CAAC,EAAA,SAAA,EAEjE;AACV,wBAAA;AACC,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE,IAAI;AACX,yBAAA;AACD,qBAAA,EAAA,QAAA,EAAA,+2GAAA,EAAA;;sBAWA;;sBAOA;;sBAOA;;sBAOA;;sBAOA;;sBAOA;;sBAOA;;sBAOA;;sBAOA;;sBAOA,MAAM;uBAAC,UAAU;;sBAmBjB,SAAS;uBAAC,YAAY;;;ME9GX,eAAe,CAAA;AAC3B,IAAA,SAAS,GAAG,MAAM,CAAU,KAAK,qDAAC;IAC3B,IAAI,GAAA;AACV,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1B;IACO,IAAI,GAAA;AACV,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IACzB;wGAPY,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAf,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cADF,MAAM,EAAA,CAAA;;4FACnB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCQrB,iBAAiB,CAAA;AACZ,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AAC1D,IAAA,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS;IAEjC,YAAY,GAAY,KAAK;IAC7B,IAAI,GAAY,KAAK;wGALlB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECT9B,8EAGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDGW,YAAY,EAAA,CAAA,EAAA,CAAA;;4FAGV,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;+BACC,mBAAmB,EAAA,OAAA,EACpB,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,8EAAA,EAAA;;sBAOtB;;sBACA;;;MELW,sBAAsB,CAAA;AAClC;;;;;AAKG;IACM,IAAI,GAAuB,CAAC;AACrC;;;;;AAKG;IACM,OAAO,GAAuB,CAAC;IAE/B,gBAAgB,GAAY,IAAI;IAChC,iBAAiB,GAAY,IAAI;IAE1C,WAAW,GAAa,EAAE;IAE1B,QAAQ,GAAA;AACP,QAAA,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO;QAClC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAI;YAChE,OAAO,CAAA,IAAA,EAAO,QAAQ,CAAA,CAAE;AACzB,QAAA,CAAC,CAAC;IACH;AAEA,IAAA,IAAI,YAAY,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,iBAAiB;AAAE,YAAA,OAAO,yBAAyB;QACrF,IAAI,IAAI,CAAC,gBAAgB;AAAE,YAAA,OAAO,uBAAuB;QACzD,IAAI,IAAI,CAAC,iBAAiB;AAAE,YAAA,OAAO,qBAAqB;AACxD,QAAA,OAAO,IAAI;IACZ;IAEA,OAAO,GAAA;AACN,QAAA,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;IAC5B;wGArCY,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,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECTnC,26BA2BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDrBW,YAAY,gOAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAG1B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAAA,OAAA,EAC1B,CAAC,YAAY,EAAE,cAAc,CAAC,EAAA,QAAA,EAAA,26BAAA,EAAA;;sBAUtC;;sBAOA;;sBAEA;;sBACA;;;MErBW,aAAa,CAAA;AAChB,IAAA,IAAI,GAAW,EAAE,CAAC;wGADf,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACV,QAAQ,EAAE,MAAM;AAChB,iBAAA;;sBAEC;;;MCIW,sBAAsB,CAAA;AAClC;;;;;AAKG;IACM,IAAI,GAAwD,KAAK;AAE1E;;;;;AAKG;IACM,MAAM,GAAW,CAAC;AAE3B;;;;;AAKG;IACM,IAAI,GAAW,CAAC;AAEzB;;;;AAIG;IACM,KAAK,GAAY,IAAI;;IAG9B,aAAa,GAAe,EAAE;;AAGE,IAAA,YAAY;IAE5C,QAAQ,GAAA;QACP,IAAI,CAAC,uBAAuB,EAAE;IAC/B;IAEA,kBAAkB,GAAA;;QAEjB,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,IAAI,CAAC,mBAAmB,EAAE;YAC1B;QACD;QACA,IAAI,CAAC,uBAAuB,EAAE;IAC/B;;IAGA,uBAAuB,GAAA;;AAEtB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9H;;IAGA,mBAAmB,GAAA;;AAElB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAClD,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;SACxD;IACF;;IAGA,gBAAgB,CAAC,GAAW,EAAE,GAAW,EAAA;AACxC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AAC1D,QAAA,OAAO,CAAA,EAAG,MAAM,GAAG,GAAG,GAAG;IAC1B;;AAGA,IAAA,QAAQ,CAAC,MAAc,EAAA;AACtB,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAC3C;wGA1EY,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,0LAoCjB,aAAa,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9C/B,64JAmHA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED5GW,YAAY,saAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAG1B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAAA,OAAA,EAC1B,CAAC,YAAY,EAAE,cAAc,CAAC,EAAA,QAAA,EAAA,64JAAA,EAAA;;sBAUtC;;sBAQA;;sBAQA;;sBAOA;;sBAMA,eAAe;uBAAC,aAAa;;;MEFlB,mBAAmB,CAAA;AAgDX,IAAA,GAAA;AA/CX,IAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAE7C,WAAW,GAAW,EAAE;IACxB,cAAc,GAAY,IAAI;IAC9B,UAAU,GAAY,KAAK;IAC3B,cAAc,GAAY,KAAK;IAC/B,WAAW,GAAW,EAAE;IACxB,YAAY,GAAY,KAAK;IAC7B,SAAS,GAAY,KAAK;IAC1B,SAAS,GAAW,EAAE;IACtB,gBAAgB,GAAW,EAAE;IAC7B,YAAY,GAAW,OAAO;IAC9B,UAAU,GAAY,KAAK;IAC3B,gBAAgB,GAAa,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IAC9C,UAAU,GAA6B,EAAE;IAClD,MAAM,GAAa,EAAE;IACZ,YAAY,GAAQ,EAAE;IACtB,UAAU,GAAW,CAAC;IAC/B,YAAY,GAAW,CAAC;IACxB,sBAAsB,GAAY,KAAK;AAE7B,IAAA,yBAAyB,GAAG,IAAI,YAAY,EAAwB;AAE5C,IAAA,OAAO;AAEzC,IAAA,YAAY;AAEZ,IAAA,gBAAgB;AAEoB,IAAA,kBAAkB;AAEtD,IAAA,yBAAyB;AAEzB,IAAA,0BAA0B;AAChB,IAAA,aAAa,GAAG,IAAI,YAAY,EAAoB;IAE9D,UAAU,GAAsB,EAAE;IAClC,eAAe,GAA2B,EAAE;IAC5C,cAAc,GAA0B,EAAE;IAEjC,WAAW,GAAW,CAAC;IACvB,SAAS,GAAW,CAAC;IACrB,SAAS,GAAmB,IAAI;IACzC,QAAQ,GAAW,CAAC;IACpB,aAAa,GAAQ,EAAE;IACvB,WAAW,GAAW,EAAE;AAExB,IAAA,WAAA,CAAoB,GAAsB,EAAA;QAAtB,IAAA,CAAA,GAAG,GAAH,GAAG;IAAsB;AAE7C,IAAA,WAAW,CAAC,OAAsB,EAAA;AACjC,QAAA,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE;YAChF,IAAI,CAAC,WAAW,EAAE;QACnB;QAEA,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;AACjD,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AACvB,gBAAA;oBACC,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;AAC3C,iBAAA;AACD,aAAA,CAAC;QACH;IACD;IAEA,kBAAkB,GAAA;QACjB,IAAI,CAAC,cAAc,EAAE;QACrB,IAAI,CAAC,aAAa,EAAE;QACpB,IAAI,CAAC,cAAc,EAAE;QAErB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;YACnC,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACxB,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;YACxC,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACxB,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;YAC5C,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACxB,QAAA,CAAC,CAAC;IACH;IAEQ,cAAc,GAAA;QACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;IAChD;IAEQ,aAAa,GAAA;QACpB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE;AAEzD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;QACrD,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;QAC3D,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IACjE;IAEQ,cAAc,GAAA;QACrB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE;IAC7D;AAEA,IAAA,MAAM,CAAC,KAAa,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;AAC7B,YAAA,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;QACrB;aAAO;AACN,YAAA,IAAI,CAAC,SAAS,GAAG,KAAgB;AACjC,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC;QACnB;AACA,QAAA,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;IACvB;IACA,WAAW,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU;AAEnC,YAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW;AACvD,YAAA,MAAM,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,WAAW;AACpC,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;QACzD;aAAO;AACN,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY;QACvC;IACD;AAEA,IAAA,YAAY,CAAC,KAAgD,EAAA;AAC5D,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC9B,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;QACzB;aAAO;AACN,YAAA,IAAI,OAAO,KAAK,EAAE,IAAI,KAAK,QAAQ,EAAE;AACpC,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI;YAC9B;AACA,YAAA,IAAI,OAAO,KAAK,EAAE,IAAI,KAAK,QAAQ,EAAE;gBACpC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC;YAClC;QACD;AACA,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI;AAClC,QAAA,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;IACvB;IAEA,UAAU,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC;AACpB,QAAA,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;IACvB;AAEA,IAAA,aAAa,CAAC,KAAW,EAAA;AACxB,QAAA,IAAI,KAAK,EAAE,SAAS,KAAK,SAAS,IAAI,KAAK,EAAE,SAAS,KAAK,EAAE,EAAE;AAC9D,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;QACzB;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAC9F,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC;QACrB;AAEA,QAAA,MAAM,kBAAkB,GAAyB;AAChD,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AACpC,YAAA,OAAO,EAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,SAAS;AAC5D,YAAA,aAAa,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM;YACpD,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,QAAQ,EAAE,IAAI,CAAC,WAAW;SAC1B;AAED,QAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,kBAAkB,CAAC;QACvD,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK;IACpC;AAEA,IAAA,mBAAmB,CAAC,KAAa,EAAA;AAChC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC;AACpB,QAAA,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;IACvB;IACA,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE;IACtB;AACA,IAAA,IAAI,UAAU,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;IACvD;AAEA,IAAA,IAAI,WAAW,GAAA;QACd,OAAO,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC;IAClJ;AAEA,IAAA,kBAAkB,CAAC,KAAU,EAAA;AAC5B,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI;AAClC,QAAA,MAAM,UAAU,GAAW,KAAK,CAAC,MAAM,CAAC,KAAK;QAC7C,IAAI,UAAU,KAAK,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC3G,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC;AACpB,YAAA,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YACtB;QACD;AAEA,QAAA,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC;QAEvC,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE;AACvC,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU;QACnC;AACA,QAAA,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;IACvB;wGApMY,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,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,0rBAFpB,CAAC,cAAc,EAAE,QAAQ,CAAC,iZA0BpB,eAAe,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EACf,oBAAoB,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,SAAA,EAEpB,mBAAmB,kDCvErC,44OAoLA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED5JE,SAAS,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,SAAS,uIACT,SAAS,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACT,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,WAAW,gqBACX,SAAS,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,YAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,oBAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACT,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,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,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,YAAY,uYACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,0BAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,eAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,4BAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACN,WAAW,8BACX,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAEb,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EADd,QAAQ,wCAGR,cAAc,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA;;4FAKH,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAxB/B,SAAS;+BACC,sBAAsB,EAAA,UAAA,EACpB,IAAI,EAAA,OAAA,EACP;wBACR,SAAS;wBACT,SAAS;wBACT,SAAS;wBACT,eAAe;wBACf,WAAW;wBACX,SAAS;wBACT,WAAW;wBACX,YAAY;wBACZ,WAAW;wBACX,MAAM;wBACN,WAAW;wBACX,aAAa;wBACb,QAAQ;wBACR,cAAc;wBACd,WAAW;wBACX,cAAc;AACd,qBAAA,EAAA,SAAA,EAEU,CAAC,cAAc,EAAE,QAAQ,CAAC,EAAA,QAAA,EAAA,44OAAA,EAAA;;sBAKpC;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBAIA;;sBAEA,eAAe;uBAAC,eAAe;;sBAC/B,eAAe;uBAAC,oBAAoB;;sBAEpC,eAAe;uBAAC,mBAAmB;;sBAGnC,YAAY;uBAAC,oBAAoB;;sBACjC,YAAY;uBAAC,2BAA2B;;sBAExC,YAAY;uBAAC,4BAA4B;;sBAEzC;;sBAMA;;sBACA;;sBACA;;;ME3EW,sBAAsB,CAAA;wGAAtB,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,0ECZnC,muFAsEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED7DW,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,swBAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAG7C,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;+BACC,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,mBAAmB,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,muFAAA,EAAA;;;MEG9C,qBAAqB,CAAA;AACzB,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;IACzB,IAAI,GAAG,CAAA,EAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,YAAY,CAAA,cAAA,CAAgB;IAC7D,cAAc,GAAG,uBAAuB;AACjD,IAAA,UAAU,GAAG,MAAM,CAA+B,EAAE,sDAAC;AAEtD,IAAA,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;AAE/C,IAAA,WAAA,GAAA;QACC,IAAI,CAAC,eAAe,EAAE;QACtB,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC;IACtE;AAEO,IAAA,MAAM,CAAC,IAAU,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAO,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,CAAC,CAAC,IAAI,CAACM,KAAG,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IAC9F;IAEO,MAAM,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAA+B,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,CAAE,CAAC;IACnE;IAEO,MAAM,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAkC,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,CAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAACA,KAAG,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IACnH;IAEO,eAAe,GAAA;QACrB,IAAI,CAAC,MAAM;AACT,aAAA,IAAI,CAACA,KAAG,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AACnD,aAAA,SAAS,EAAE;IACd;AAEO,IAAA,YAAY,CAAC,SAAuC,EAAA;QAC1D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;QACnC,IAAI,CAAC,yBAAyB,EAAE;IACjC;AAEO,IAAA,uBAAuB,CAAC,OAAe,EAAA;QAC7C,MAAM,iBAAiB,GAAG,OAAO;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;AAC7F,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC7B,IAAI,CAAC,yBAAyB,EAAE;IACjC;AAEO,IAAA,mBAAmB,CAAC,OAAe,EAAA;QACzC,MAAM,iBAAiB,GAAG,OAAO;QACjC,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IACjF;AAEO,IAAA,oBAAoB,CAAC,QAAgB,EAAA;AAC3C,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC;IAClE;AAEO,IAAA,wBAAwB,CAAC,QAAgB,EAAA;AAC/C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC;AAC3E,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IAChF;IAEO,gBAAgB,GAAA;AACtB,QAAA,OAAO,SAAS,CAA2C,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAC3F,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EACpC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAC5B;IACF;AAEQ,IAAA,kBAAkB,GAAG,CAAC,KAAY,KAAU;AACnD,QAAA,MAAM,MAAM,GAAI,KAAkD,CAAC,MAAM;QACzE,IAAI,CAAC,MAAM,EAAE,SAAS;YAAE;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAC3C,IAAA,CAAC;IAEO,yBAAyB,GAAA;QAChC,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE;YAClD,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,EAAwC;AAC9E,SAAA,CAAC;AACF,QAAA,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;IAC5B;IAEQ,WAAW,CAAC,IAAgC,EAAE,KAAa,EAAA;QAClE,OAAO,IAAI,CAAC,OAAO,KAAK,KAAK,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK;IACzD;wGAjFY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAArB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cADR,MAAM,EAAA,CAAA;;4FACnB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCHrB,mBAAmB,CAAA;AACd,IAAA,gBAAgB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAChD,IAAA,kBAAkB,GAAG,MAAM,CAAC,wBAAwB,CAAC;IAE/D,kBAAkB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IAC9D;AAEO,IAAA,cAAc,CAAC,QAAiB,EAAA;QACtC,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;QACvD,OAAO,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,IAAI,CACnD,GAAG,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,EACvE,oBAAoB,EAAE,CACtB;IACF;AAEO,IAAA,iBAAiB,CAAC,QAAiB,EAAA;QACzC,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;QACvD,OAAO,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,IAAI,CACnD,GAAG,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,EACvE,oBAAoB,EAAE,CACtB;IACF;AAEO,IAAA,mBAAmB,CAAC,QAAiB,EAAA;QAC3C,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;QACvD,OAAO,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,gBAAgB,CAAC;IACxE;AAEQ,IAAA,eAAe,CAAC,QAAiB,EAAA;QACxC,OAAO,QAAQ,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;IACjE;wGA/BY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFnB,MAAM,EAAA,CAAA;;4FAEN,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACX,oBAAA,UAAU,EAAE,MAAM;AAClB,iBAAA;;;ACCD,MAAM,OAAO,GAAG,mBAAmB;AACnC,MAAM,QAAQ,GAAG,oBAAoB;MAOxB,qBAAqB,CAAA;AACxB,IAAA,WAAW,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC/B,IAAA,kBAAkB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAChD,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAEvC,eAAe,GAAG,MAAM,EAAW;IAEpC,UAAU,GAAG,KAAK;IACnB,UAAU,GAAG,KAAK;IAClB,SAAS,GAAG,QAAQ;IAE3B,QAAQ,GAAA;QACP,IAAI,CAAC,gBAAgB,EAAE;IACxB;IAEA,cAAc,GAAA;QACb,IAAI,IAAI,CAAC,UAAU;YAAE;AACrB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,UAAU;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE;QAE9H,OAAO,CAAC,SAAS,CAAC;YACjB,IAAI,EAAE,MAAK;AACV,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;YACxC,CAAC;YACD,QAAQ,EAAE,OAAO,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACzC,KAAK,EAAE,OAAO,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACtC,SAAA,CAAC;IACH;IAEQ,gBAAgB,GAAA;AACvB,QAAA,IAAI,CAAC;AACH,aAAA,iBAAiB;AACjB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC;YACV,IAAI,EAAE,UAAU,IAAG;AAClB,gBAAA,IAAI,CAAC,UAAU,GAAG,UAAU;gBAC5B,IAAI,CAAC,UAAU,EAAE;YAClB,CAAC;AACD,SAAA,CAAC;IACJ;IAEQ,UAAU,GAAA;AACjB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,GAAG,OAAO,GAAG,QAAQ;IACtD;wGA5CY,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,mIChBlC,ySAIA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDSW,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAY,OAAO,+EAAjB,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA;;4FAGd,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,WACzB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,ySAAA,EAAA;;;MEGxB,qBAAqB,CAAA;AACxB,IAAA,OAAO,GAAG,KAAK,CAA6B,EAAE,mDAAC;AAC/C,IAAA,SAAS,GAAG,KAAK,CAA8B,EAAE,qDAAC;AAClD,IAAA,OAAO,GAAG,KAAK,CAA6B,EAAE,mDAAC;AAC/C,IAAA,SAAS,GAAG,KAAK,CAA8C,IAAI,qDAAC;AAEpE,IAAA,UAAU,GAAG,KAAK,CAAU,IAAI,sDAAC;AACjC,IAAA,WAAW,GAAG,KAAK,CAAU,IAAI,uDAAC;AAClC,IAAA,UAAU,GAAG,KAAK,CAAU,IAAI,sDAAC;AAEjC,IAAA,UAAU,GAAG,KAAK,CAAS,gBAAgB,sDAAC;AAC5C,IAAA,WAAW,GAAG,KAAK,CAAS,mCAAmC,uDAAC;AAChE,IAAA,UAAU,GAAG,KAAK,CAAS,QAAQ,sDAAC;AACpC,IAAA,WAAW,GAAG,KAAK,CAAS,SAAS,uDAAC;AACtC,IAAA,UAAU,GAAG,KAAK,CAAS,eAAe,sDAAC;AAC3C,IAAA,qBAAqB,GAAG,KAAK,CAAS,eAAe,iEAAC;AACtD,IAAA,sBAAsB,GAAG,KAAK,CAAS,gBAAgB,kEAAC;AACxD,IAAA,qBAAqB,GAAG,KAAK,CAAS,sBAAsB,iEAAC;IAE7D,eAAe,GAAG,MAAM,EAA+B;IACvD,YAAY,GAAG,MAAM,EAAiB;IACtC,eAAe,GAAG,MAAM,EAAY;IACpC,YAAY,GAAG,MAAM,EAAiB;AAEtC,IAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAEtD,gBAAgB,GAAkB,IAAI;IACtC,kBAAkB,GAAa,EAAE;IACjC,gBAAgB,GAAkB,IAAI;AAEtC,IAAA,WAAA,GAAA;QACC,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,EAAE;AAC1C,YAAA,IAAI,CAAC,iBAAiB;gBAAE;YACxB,IAAI,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,QAAQ,IAAI,IAAI;AAC1D,YAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,IAAI,iBAAiB,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;YACnE,IAAI,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,QAAQ,IAAI,IAAI;YAC1D,IAAI,CAAC,oBAAoB,EAAE;AAC5B,QAAA,CAAC,CAAC;IACH;AAEA,IAAA,IAAI,iBAAiB,GAAA;QACpB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACjD,YAAA,OAAO,IAAI,CAAC,SAAS,EAAE;QACxB;QAEA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,gBAAgB,CAAC;IAC3G;AAEA,IAAA,IAAI,eAAe,GAAA;AAClB,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE;QAE1B,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAC/C,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,gBAAgB,CAAC;QAC9F;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7D,YAAA,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,IAAG;gBAC7B,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;AAAE,oBAAA,OAAO,IAAI;AACrE,gBAAA,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACxF,YAAA,CAAC,CAAC;QACH;AAEA,QAAA,OAAO,KAAK;IACb;AAEA,IAAA,cAAc,CAAC,KAAoB,EAAA;AAClC,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,IAAI,IAAI;QACrC,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IACrC;AAEA,IAAA,iBAAiB,CAAC,KAAsB,EAAA;AACvC,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,IAAI,EAAE;QACrC,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;IACtC;AAEA,IAAA,cAAc,CAAC,KAAoB,EAAA;AAClC,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,IAAI,IAAI;QACrC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;IACvC;IAEQ,oBAAoB,GAAA;QAC3B,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC;QAClF,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,IAAI,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAErG,MAAM,wBAAwB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,gBAAgB,CAAC;QACzG,IAAI,CAAC,wBAAwB,EAAE;AAC9B,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;QAC7B;IACD;AAEQ,IAAA,aAAa,CAAC,UAAmB,EAAE,aAAsB,EAAE,UAAmB,EAAA;AACrF,QAAA,IAAI,UAAU;YAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAC7D,QAAA,IAAI,aAAa;YAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;AACrE,QAAA,IAAI,UAAU;YAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAE7D,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YACzB,QAAQ,EAAE,IAAI,CAAC,gBAAgB;AAC/B,YAAA,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC;YACxC,QAAQ,EAAE,IAAI,CAAC,gBAAgB;AAC/B,SAAA,CAAC;IACH;wGAvGY,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,sBAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBlC,61EA2DA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED9CW,YAAY,8BAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,WAAW,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,aAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,UAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,MAAM,48BAAE,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA;;4FAGvE,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,OAAA,EACvB,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAA,QAAA,EAAA,61EAAA,EAAA;;;MEFxE,6BAA6B,CAAA;AACvB,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AACzB,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACtD,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;QAC9D,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC;AAC/D,QAAA,IAAI,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,kBAAkB,CAAA,gCAAA,EAAmC,cAAc,EAAE;AAClH,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAyB,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;YAC3E,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YACtD,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,CAAC;YAC9D,SAAS,CAAC,cAAc,EAAE,QAAQ,CAAC,YAAY,EAAE,uBAAuB,CAAC;AACzE,YAAA,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,uBAAuB,CAAC;YAChD,SAAS,CAAC,2BAA2B,EAAE,QAAQ,CAAC,yBAAyB,EAAE,uBAAuB,CAAC;YACnG,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,YAAY,EAAE,uBAAuB,CAAC;AACrE,YAAA,IAAI,QAAQ,CAAC,QAAQ,IAAI,IAAI;gBAAE,SAAS,CAAC,iBAAiB,EAAE,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,CAAC;YACvG,SAAS,CAAC,sBAAsB,EAAE,QAAQ,CAAC,aAAa,EAAE,uBAAuB,CAAC;AAClF,YAAA,QAAQ,CAAC,sBAAsB,CAAC,OAAO,CAAC,OAAO,IAAG;gBAChD,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,eAAe,EAAE,uBAAuB,CAAC;AACnF,YAAA,CAAC,CAAC;YACF,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;YAC/D,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,EAAE,uBAAuB,CAAC;AAChE,YAAA,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE;YAC1C,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM;AAC/C,QAAA,CAAC,CAAC;IACJ;wGAzBW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,yFAF9B,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;4FAED,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBALzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,QAAQ,EAAE,EAAE;AACb,iBAAA;;;MCCY,mBAAmB,CAAA;AAC9B,IAAA,SAAS,GAAG,KAAK,CAAa,EAAE,qDAAC;IACjC,SAAS,GAAG,MAAM,EAAY;wGAFnB,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,qQCXhC,0lBAYe,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDJH,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,oOAAE,OAAO,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAG9B,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,WACvB,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,EAAA,QAAA,EAAA,0lBAAA,EAAA;;;MEAhC,cAAc,CAAA;AACzB,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;IACzB,IAAI,GAAG,MAAM,EAAQ;wGAFV,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,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,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECR3B,gVASM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDJM,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAGL,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;+BACE,gBAAgB,EAAA,OAAA,EACjB,CAAC,MAAM,CAAC,EAAA,QAAA,EAAA,gVAAA,EAAA;;;MEUN,MAAM,CAAA;AACE,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AACzB,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IACrC,IAAI,GAAG,CAAA,EAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,UAAU,CAAA,WAAA,CAAa;AAClF,IAAA,WAAW,CAAC,WAAmB,EAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAuB,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,WAAA,EAAc,WAAW,CAAA,CAAE,CAAC;IACvF;AACA,IAAA,iBAAiB,CAAC,OAA2B,EAAA;AACzC,QAAA,IAAI,MAAM,GAAG,IAAI,UAAU;AACtB,aAAA,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,WAAW;AACtC,aAAA,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO;AAC9B,aAAA,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC;AACtC,QAAA,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,KAAI;AACzD,YAAA,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;gBACnB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA,WAAA,EAAc,GAAG,CAAA,CAAA,CAAG,EAAE,KAAK,CAAC;AACvD,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAChB,CAAA,EAAG,IAAI,CAAC,IAAI,mBAAmB,EAC/B,EAAE,MAAM,EAAE,CACb;IACL;AACA,IAAA,2BAA2B,CAAC,OAA2B,EAAA;AACnD,QAAA,IAAI,MAAM,GAAG,IAAI,UAAU;AACtB,aAAA,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,WAAW;AACtC,aAAA,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO;AAC9B,aAAA,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC;AACtC,QAAA,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,KAAI;AACzD,YAAA,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;gBACnB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA,WAAA,EAAc,GAAG,CAAA,CAAA,CAAG,EAAE,KAAK,CAAC;AACvD,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAChB,CAAA,EAAG,IAAI,CAAC,IAAI,yBAAyB,EACrC,EAAE,MAAM,EAAE,CACb;IACL;AACA,IAAA,MAAM,kBAAkB,CAAC,QAAgB,EAAE,SAAsB,EAAE,OAA6C,EAAA;AAC5G,QAAA,MAAM,gBAAgB,GAAG,MAAM,sBAAsB,EAAE;QACvD,MAAM,gBAAgB,CAAC,cAAc,CAAC;AAClC,YAAA,GAAG,EAAE,QAAQ;YACb,SAAS;AACT,YAAA,IAAI,OAAO,EAAE,MAAM,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;AAClD,YAAA,IAAI,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;AAClD,SAAA,CAAC;IACN;AACA,IAAA,MAAM,cAAc,CAAC,WAAmB,EAAE,SAAsB,EAAE,OAA6C,EAAA;AAC3G,QAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACxE,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC;IAC/D;AACA,IAAA,MAAM,wBAAwB,CAAC,QAAgB,EAAE,SAAsB,EAAE,OAA6C,EAAA;AAClH,QAAA,MAAM,gBAAgB,GAAG,MAAM,sBAAsB,EAAE;QACvD,MAAM,gBAAgB,CAAC,WAAW,CAAC;AAC/B,YAAA,GAAG,EAAE,QAAQ;YACb,SAAS;AACT,YAAA,IAAI,OAAO,EAAE,MAAM,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;AAClD,YAAA,IAAI,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;SAClD,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAS,CAAC;IAClE;IACA,MAAM,sBAAsB,CAAC,WAAmB,EAAE,OAAe,EAAE,UAAoC,EAAE,OAAiC,EAAE,cAA2C,EAAA;AAEnL,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC1B,YAAA,MAAM,CAAC,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE;YAClD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,cAAc,CACnC,IAAI,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,CAC1F;AACD,YAAA,IAAI,CAAC,MAAM;gBAAE;AACb,YAAA,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC;AACpF,YAAA,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC;QACrC;IACJ;wGAtES,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAN,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAM,cAFH,MAAM,EAAA,CAAA;;4FAET,MAAM,EAAA,UAAA,EAAA,CAAA;kBAHlB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA;;;MCJY,oBAAoB,CAAA;AACd,IAAA,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;AAC9B,IAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC;AACd,IAAA,UAAU;IAC1B,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACzF,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,aAAa,CAAuB,uDAAC;AACnF,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAO,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAwB,IAAI,OAAO,kDAAC;AACtF,IAAA,SAAS,GAAG,MAAM,CAAC,IAAI,qDAAC;AAChB,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AAE1C,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE;AAC7B,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE;gBAAE;AAC9B,YAAA,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;AACzB,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;IAC1B;IAEA,MAAM,cAAc,CAAC,WAAmB,EAAA;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,aAAa;AACtD,QAAA,IAAI,CAAC,SAAS;YAAE;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI;YACF,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,WAAW,EAAE,SAAS,CAAC;QACjE;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC;QACpD;gBAAU;AACR,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;QAC3B;IACF;wGAjCW,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,mLCVjC,yFAAmF,EAAA,CAAA;;4FDUtE,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,WACxB,EAAE,EAAA,QAAA,EAAA,yFAAA,EAAA;;sBAMV,YAAY;uBAAC,iBAAiB;;;AEM3B,MAAO,uBAAwB,SAAQ,eAAe,CAAA;AAC3D,IAAA,WAAA,GAAA;AACC,QAAA,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;IAC/B;IACS,YAAY,GAAW,EAAE;AAElC,IAAA,WAAW,CAAC,OAAsB,EAAA;AACjC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;IAC5B;wGARY,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,iBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAZxB;AACV,YAAA;AACC,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC;AACtD,gBAAA,KAAK,EAAE;AACP,aAAA;AACD,YAAA;AACC,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB;AACrD;AACD,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAEW,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAdnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,SAAS,EAAE;AACV,wBAAA;AACC,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,6BAA6B,CAAC;AACtD,4BAAA,KAAK,EAAE;AACP,yBAAA;AACD,wBAAA;AACC,4BAAA,OAAO,EAAE,eAAe;AACxB,4BAAA,WAAW,EAAE,UAAU,CAAC,6BAA6B;AACrD;AACD,qBAAA;AACD,iBAAA;;sBAKC;;;ACKI,MAAO,mBACX,SAAQ,eAAe,CAAA;AAGvB,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;IAC5B;IACS,MAAM,GAAW,SAAS;IAC1B,KAAK,GAAW,MAAM;IACtB,KAAK,GAAW,MAAM;IACtB,UAAU,GAAY,KAAK;IAC3B,GAAG,GAAS,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAChC,IAAA,GAAG,GAAS,IAAI,IAAI,EAAE;IACtB,eAAe,GAAY,KAAK;IAChC,SAAS,GAAY,IAAI;IACzB,KAAK,GAAY,KAAK;IACtB,UAAU,GAAY,KAAK;IAC3B,QAAQ,GAAa,KAAK;AACzB,IAAA,IAAI,GAAsB,IAAI,YAAY,EAAO;AACjD,IAAA,SAAS,GAAsB,IAAI,YAAY,EAAO;AAChE,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;IAC7B;wGAtBW,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,aAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EAZnB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AACnD,aAAA;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAEU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAd/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,eAAe;AACxB,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AACnD,yBAAA;AACF,qBAAA;AACF,iBAAA;;sBAQE;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;AC5BG,MAAO,2BAA4B,SAAQ,eAAe,CAAA;AAC/D,IAAA,WAAA,GAAA;AACC,QAAA,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC;IACnC;IAES,EAAE,GAAW,EAAE;IACf,SAAS,GAAW,EAAE;IACtB,UAAU,GAAW,EAAE;IACvB,WAAW,GAAW,EAAE;IACxB,IAAI,GAAU,EAAE;AACzB,IAAA,WAAW,CAAC,OAAsB,EAAA;AACjC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;IAC5B;wGAZY,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,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAZ5B;AACV,YAAA;AACC,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,2BAA2B,CAAC;AAC1D,gBAAA,KAAK,EAAE;AACP,aAAA;AACD,YAAA;AACC,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,2BAA2B;AACzD;AACD,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAEW,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAdvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,SAAS,EAAE;AACV,wBAAA;AACC,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,iCAAiC,CAAC;AAC1D,4BAAA,KAAK,EAAE;AACP,yBAAA;AACD,wBAAA;AACC,4BAAA,OAAO,EAAE,eAAe;AACxB,4BAAA,WAAW,EAAE,UAAU,CAAC,iCAAiC;AACzD;AACD,qBAAA;AACD,iBAAA;;sBAMC;;sBACA;;sBACA;;sBACA;;sBACA;;;ACTI,MAAO,qBAAsB,SAAQ,eAAe,CAAA;AACzD,IAAA,WAAA,GAAA;AACC,QAAA,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC;IAC7B;IAES,OAAO,GAAU,EAAE;IACnB,WAAW,GAAW,MAAM;IAC5B,WAAW,GAAW,OAAO;IAC7B,UAAU,GAAY,KAAK;IAC3B,OAAO,GAAY,KAAK;IACxB,QAAQ,GAAY,KAAK;IACzB,UAAU,GAAW,MAAM;IAC3B,QAAQ,GAAW,EAAE;IACrB,eAAe,GAAW,UAAU;IACpC,OAAO,GAAW,KAAK;IACvB,iBAAiB,GAAW,CAAC;IAC7B,aAAa,GAAY,KAAK;IAC9B,kBAAkB,GAAW,UAAU;IACvC,KAAK,GAAY,KAAK;IACtB,iBAAiB,GAAY,IAAI;AAE1C,IAAA,WAAW,CAAC,OAAY,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;IAC5B;wGAvBY,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,eAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,SAAA,EAZtB;AACT,YAAA;AACD,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,gBAAA,KAAK,EAAE;AACL,aAAA;AACD,YAAA;AACD,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB;AACjD;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAEW,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAdjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,SAAS,EAAE;AACT,wBAAA;AACD,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC;AACpD,4BAAA,KAAK,EAAE;AACL,yBAAA;AACD,wBAAA;AACD,4BAAA,OAAO,EAAE,eAAe;AACxB,4BAAA,WAAW,EAAE,UAAU,CAAC,2BAA2B;AACjD;AACF;AACC,iBAAA;;sBAMD;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;ACnBI,MAAO,iBAAkB,SAAQ,eAAe,CAAA;AACrD,IAAA,WAAA,GAAA;AACC,QAAA,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;IAC/B;AACyB,IAAA,OAAO;wGAJpB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,SAAA,EAZlB;AACV,YAAA;AACC,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,gBAAA,KAAK,EAAE;AACP,aAAA;AACD,YAAA;AACC,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB;AAC/C;AACD,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAEW,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAd7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,SAAS,EAAE;AACV,wBAAA;AACC,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;AAChD,4BAAA,KAAK,EAAE;AACP,yBAAA;AACD,wBAAA;AACC,4BAAA,OAAO,EAAE,eAAe;AACxB,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB;AAC/C;AACD,qBAAA;AACD,iBAAA;;sBAKC,YAAY;uBAAC,SAAS;;;ACJlB,MAAO,uBAAwB,SAAQ,eAAe,CAAA;AAC3D,IAAA,WAAA,GAAA;AACC,QAAA,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;IAC/B;AACA,IAAA,WAAW,CAAC,OAAsB,EAAA;AACjC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;IAC5B;wGANY,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,SAAA,EAZxB;AACR,YAAA;AACD,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC;AACtD,gBAAA,KAAK,EAAE;AACL,aAAA;AACD,YAAA;AACD,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB;AACnD;AACF,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAEU,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAdnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,SAAS,EAAE;AACR,wBAAA;AACD,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,6BAA6B,CAAC;AACtD,4BAAA,KAAK,EAAE;AACL,yBAAA;AACD,wBAAA;AACD,4BAAA,OAAO,EAAE,eAAe;AACxB,4BAAA,WAAW,EAAE,UAAU,CAAC,6BAA6B;AACnD;AACF,qBAAA;AACF,iBAAA;;;ACEK,MAAO,mBAAoB,SAAQ,eAAe,CAAA;AACvD,IAAA,WAAA,GAAA;AACC,QAAA,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;IAC3B;AACA,IAAA,WAAW,CAAC,OAAsB,EAAA;AACjC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;IAC5B;wGANY,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,aAAA,EAAA,SAAA,EAbpB;AACV,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE;AACR,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB;AAClD;AACC,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAGS,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAf/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,SAAS,EAAE;AACV,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE;AACR,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,eAAe;AACxB,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB;AAClD;AACC,qBAAA;AACH,oBAAA,UAAU,EAAE,IAAI;AAChB,iBAAA;;;ACAK,MAAO,wBAAyB,SAAQ,eAAe,CAAA;AAC5D,IAAA,WAAA,GAAA;AACC,QAAA,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC;IAChC;IAES,QAAQ,GAAY,EAAE;IACtB,QAAQ,GAAY,EAAE;IACtB,QAAQ,GAAW,EAAE;IACrB,QAAQ,GAAW,EAAE;AAE9B,IAAA,WAAW,CAAC,OAAsB,EAAA;AACjC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;IAC5B;wGAZY,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAZzB;AACV,YAAA;AACC,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAwB,CAAC;AACvD,gBAAA,KAAK,EAAE;AACP,aAAA;AACD,YAAA;AACC,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAwB;AACtD;AACD,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAEW,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAdpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,SAAS,EAAE;AACV,wBAAA;AACC,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,8BAA8B,CAAC;AACvD,4BAAA,KAAK,EAAE;AACP,yBAAA;AACD,wBAAA;AACC,4BAAA,OAAO,EAAE,eAAe;AACxB,4BAAA,WAAW,EAAE,UAAU,CAAC,8BAA8B;AACtD;AACD,qBAAA;AACD,iBAAA;;sBAMC;;sBACA;;sBACA;;sBACA;;;MCpBW,6BAA6B,CAAA;AAIA,IAAA,KAAA;AAHT,IAAA,KAAK;AACF,IAAA,GAAG;AAErC,IAAA,WAAA,CAAwC,KAA0B,EAAA;QAA1B,IAAA,CAAA,KAAK,GAAL,KAAK;IAAwB;;AAIrE,IAAA,eAAe,CAAC,GAAY,EAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE;QAC7C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG;QAC1B,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7C;;AAIA,IAAA,aAAa,CAAC,GAAQ,EAAA;AACpB,QAAA,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO;AAC1B,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;IAC3B;wGAnBW,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAS,cAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,CAAA,sBAAA,EAAA,OAAA,CAAA,EAAA,GAAA,EAAA,CAAA,yBAAA,EAAA,KAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAJzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;0BAKc;;0BAAY;;sBAHxB,KAAK;uBAAC,sBAAsB;;sBAC5B,KAAK;uBAAC,yBAAyB;;sBAK/B,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;;sBAQxC,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;;;ACwDtC;;AAEG;AACI,MAAM,cAAc,GAAyB;IACnD,UAAU,EAAE,eAAe,CAAC,OAAO;AACnC,IAAA,eAAe,EAAE,IAAI;AACrB,IAAA,OAAO,EAAE;AACR,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,UAAU,EAAE,UAAU;AACtB,KAAA;;AAmBF;;;AAGG;AACI,MAAM,gBAAgB,GAAG;AAC/B,IAAA,KAAK,EAAE,sCAAsC;;;;AAK9C;;;;;;;;;;AAUG;MACU,oBAAoB,GAAG,IAAI,cAAc,CAAqC,sBAAsB;AAEjH;;AAEG;AACI,MAAM,iBAAiB,GAAuC;AACpE,IAAA,CAAC,SAAS,CAAC,OAAO,GAAG;AACpB,QAAA,UAAU,EAAE,SAAS;AACrB,QAAA,IAAI,EAAE,mBAAmB;AACzB,QAAA,mBAAmB,EAAE,SAAS;AAC9B,QAAA,SAAS,EAAE,SAAS;AACpB,KAAA;AACD,IAAA,CAAC,SAAS,CAAC,OAAO,GAAG;AACpB,QAAA,UAAU,EAAE,SAAS;AACrB,QAAA,IAAI,EAAE,mBAAmB;AACzB,QAAA,mBAAmB,EAAE,SAAS;AAC9B,QAAA,SAAS,EAAE,SAAS;AACpB,KAAA;AACD,IAAA,CAAC,SAAS,CAAC,KAAK,GAAG;AAClB,QAAA,UAAU,EAAE,SAAS;AACrB,QAAA,IAAI,EAAE,iBAAiB;AACvB,QAAA,mBAAmB,EAAE,SAAS;AAC9B,QAAA,SAAS,EAAE,SAAS;AACpB,KAAA;;;MCtJW,eAAe,CAAA;AAC3B,IAAA,SAAS;AACT,IAAA,QAAQ;IACR,WAAA,CAAY,SAAiB,EAAE,QAA4B,EAAA;AAC1D,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;IACzB;AACA;;MCAY,kBAAkB,CAAA;IAC9B,aAAa,CAAC,OAAe,EAAE,IAAY,EAAE,QAAgB,EAAE,OAAe,EAAE,SAAiB,EAAA;QAChG,IAAI,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC;QAC5C,IAAI,KAAK,IAAI,IAAI;YAAE;AACnB,QAAA,KAAK,CAAC,SAAS,GAAG,EAAE;AACpB,QAAA,KAAK,CAAC,SAAS,IAAI,IAAI;AACvB,QAAA,MAAM,EAAE,GAAmB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QAC3E,MAAM,EAAE,GAAkB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;QAC/C,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC;QAC7C,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,QAAQ,GAAG,GAAG,GAAG,SAAS,CAAC;IAC/C;IACiB,IAAI,GACpB,01ZAA01Z;AAC10Z,IAAA,cAAc,GAAuB;AACrD,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,QAAQ,EAAE,IAAI;KACd;IACD,MAAM,aAAa,CAClB,SAAiB,EACjB,WAAmB,EACnB,WAAmB,EACnB,eAAuB,EACvB,OAA2B,EAC3B,OAAkB,EAClB,SAAA,GAAsB,EAAE,EACxB,YAAA,GAAwB,KAAK,EAC7B,YAAA,GAAoC,EAAE,EAAA;AAEtC,QAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE;QAC/B,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC;QACpD,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;AAC5C,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC;YACjC,MAAM,EAAE,IAAI,CAAC,IAAI;AACjB,YAAA,SAAS,EAAE,KAAK;AAChB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC;AACvG,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;AACrC,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,MAAM,eAAe,GAAG,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC;YAC1D,eAAe,CAAC,KAAK,GAAG,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;YAClD,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,eAAe,EAAE,OAAO,CAAC;QAC1D;QACA,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE;QAChD,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC;IACtC;IACQ,QAAQ,CAAC,SAAoB,EAAE,WAAmB,EAAA;AACzD,QAAA,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC;QAC7B,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;AACzC,QAAA,SAAS,CAAC,KAAK,GAAG,WAAW;QAC7B,SAAS,CAAC,IAAI,GAAG;AAChB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SACzB;AACD,QAAA,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc;IAC1C;AACQ,IAAA,aAAa,CACpB,eAAuB,EACvB,SAAoB,EACpB,OAA2B,EAC3B,OAAe,EACf,SAAA,GAAsB,EAAE,EACxB,YAAA,GAAwB,KAAK,EAC7B,eAAoC,EAAE,EAAA;QAEtC,IAAI,WAAW,GAAa,EAAE;QAC9B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;AACtC,QAAA,IAAI,YAAY,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC;QAC1C,MAAM,SAAS,GAAG,CAAC;AACnB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM;AAC9B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;AACtD,YAAA,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;QACvB;QACA,IAAI,QAAQ,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM;AAC/C,QAAA,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU;QACxC,IAAI,YAAY,EAAE;AACjB,YAAA,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE;gBACjC,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,WAAW,CAAC;gBAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,SAAS,CAAC;gBAC1D,MAAM,KAAK,GAAG,CAAA,EAAG,SAAS,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,OAAO,CAAA,EAAG,QAAQ,CAAA,CAAE;AAC7D,gBAAA,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC;AAC3B,gBAAA,MAAM,SAAS,GAAW,CAAA,EAAG,SAAS,CAAA,EAAG,QAAQ,EAAE;gBACnD,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC;AACzC,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI;gBACvB,IAAI,CAAC,IAAI,GAAG;AACX,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBACzB;gBACD,IAAI,CAAC,IAAI,GAAG;AACX,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC3B;gBACD,IAAI,CAAC,SAAS,GAAG;AAChB,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,UAAU,EAAE,QAAQ;AACpB,oBAAA,QAAQ,EAAE,IAAI;iBACd;AACD,gBAAA,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE;AAC1D,oBAAA,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;gBACtB;YACD;QACD;AACA,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAC9C,YAAA,MAAM,OAAO,GAAG,CAAA,EAAG,SAAS,CAAA,EAAG,QAAQ,EAAE;AACzC,YAAA,MAAM,UAAU,GAAG,CAAA,EAAG,SAAS,CAAA,EAAG,YAAY,GAAG,QAAQ,GAAG,CAAC,GAAG,QAAQ,EAAE;AAC1E,YAAA,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AAC1B,gBAAA,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;AAC5B,gBAAA,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,iBAAiB;AAClE,gBAAA,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,SAAS,GAAG;AACzC,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,UAAU,EAAE,QAAQ;AACpB,oBAAA,QAAQ,EAAE,IAAI;iBACd;YACF;iBAAO;gBACN,SAAS,CAAC,UAAU,CAAC,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,UAAU,CAAA,CAAE,CAAC;gBAChD,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;gBACvC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,iBAAiB;gBACzC,IAAI,CAAC,IAAI,GAAG;AACX,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBACzB;AACD,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc;gBACpC,IAAI,CAAC,IAAI,GAAG;AACX,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC3B;YACF;QACD;AACA,QAAA,IAAI,YAAY;YAAE,QAAQ,IAAI,CAAC;;YAC1B,QAAQ,IAAI,CAAC;QAClB,IAAI,YAAY,EAAE;YACjB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,IAAG;AAC9B,gBAAA,IAAI,GAAG,CAAC,UAAU,KAAK,EAAE;AAAE,oBAAA,OAAO,OAAO;gBACzC,IAAI,CAAC,GAAG,CAAC,aAAa;AAAE,oBAAA,OAAO,IAAI;gBACnC,OAAO,GAAG,CAAC,aAAa,GAAG,EAAE,OAAO,EAAE,CAAA,CAAA,EAAI,GAAG,CAAC,aAAa,CAAA,CAAA,CAAG,EAAE,MAAM,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,IAAI;AACnG,YAAA,CAAC,CAAC;YACF,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC;YACvD,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,SAAS,KAAI;gBACxC,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;gBACrC,IAAI,CAAC,IAAI,GAAG;AACX,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBACzB;gBACD,IAAI,CAAC,SAAS,GAAG;AAChB,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,UAAU,EAAG,MAAM,EAAE,eAAyG,IAAI,MAAM;iBACxI;gBACD,IAAI,CAAC,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;AACtE,gBAAA,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE;AACnC,oBAAA,IAAI,CAAC,MAAM,GAAG,MAAM;gBACrB;AACD,YAAA,CAAC,CAAC;YACF,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;AAC9B,gBAAA,MAAM,WAAW,GAAG,CAAA,EAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAA,EAAG,QAAQ,CAAA,CAAE;gBACpE,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC;gBAC3C,IAAI,CAAC,IAAI,GAAG;AACX,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBACzB;gBACD,IAAI,CAAC,SAAS,GAAG;AAChB,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,UAAU,EAAG,GAAG,CAAC,eAAyG,IAAI,MAAM;iBACpI;gBACD,IAAI,CAAC,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;AACvE,YAAA,CAAC,CAAC;AACF,YAAA,QAAQ,EAAE;QACX;;AAEA,QAAA,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,UAAU,EAAE,QAAQ,EAAE,EAAE;YACzD,MAAM,SAAS,GAAa,EAAE;AAC9B,YAAA,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE;AAC7D,gBAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,GAAG,CAAA,EAAG,QAAQ,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACxG;YACA,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;YAC/C,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,SAAS,KAAI;gBACxC,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;AAClC,gBAAA,IAAI,GAAG,CAAC,YAAY,EAAE;oBACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC;oBACpD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;gBAChC;gBAEA,IAAI,CAAC,SAAS,GAAG;AAChB,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,UAAU,EAAG,GAAG,CAAC,eAA2C,IAAI,MAAM;AACtE,oBAAA,QAAQ,EAAE,IAAI;iBACd;AACF,YAAA,CAAC,CAAC;QACH;;AAEA,QAAA,WAAW,CAAC,OAAO,CAAC,OAAO,IAAG;YAC7B,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;YACvC,IAAI,CAAC,IAAI,GAAG;AACX,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAC3B;YACD,IAAI,CAAC,IAAI,GAAG;AACX,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aACzB;AACD,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc;AACrC,QAAA,CAAC,CAAC;;QAEF,MAAM,YAAY,GAAG,QAAQ;QAC7B,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,QAAQ,KAAI;YACnC,IAAI,QAAQ,GAAG,YAAY;gBAAE;YAC7B,MAAM,MAAM,GAAG,CAAC,QAAQ,GAAG,YAAY,IAAI,CAAC,KAAK,CAAC;AAClD,YAAA,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAG;gBACnB,IAAI,CAAC,MAAM,EAAE;oBACZ,IAAI,CAAC,IAAI,GAAG;AACX,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,OAAO,EAAE,OAAO;AAChB,wBAAA,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;qBAC3B;gBACF;gBACA,IAAI,CAAC,IAAI,GAAG;AACX,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBACzB;AACF,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;;AAEF,QAAA,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE;YAC3B,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;YAC1B,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;AAC/B,YAAA,MAAM,EAAE,UAAU;AAClB,SAAA,CAAC;;AAEF,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1C,MAAM,KAAK,GAAG,CAAA,CAAA,EAAI,CAAC,GAAG,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,CAAE;AAClF,YAAA,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC;AAC3B,YAAA,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA,CAAA,EAAI,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC;AAC3C,YAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,IAAI,GAAG;AACX,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aACzB;YACD,IAAI,CAAC,SAAS,GAAG;AAChB,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,UAAU,EAAE,MAAM;AAClB,gBAAA,QAAQ,EAAE,IAAI;aACd;QACF;AACA,QAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC;IAC3C;AACQ,IAAA,aAAa,CAAC,WAAmB,EAAE,eAA0B,EAAE,OAAkB,EAAA;QACxF,IAAI,UAAU,GAAW,EAAE;AAC3B,QAAA,eAAe,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC;QACrC,eAAe,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxC,QAAA,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;AACxC,YAAA,MAAM,CAAC,KAAK,GAAG,UAAU;AACzB,YAAA,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc;YACtC,UAAU,IAAI,CAAC;AAChB,QAAA,CAAC,CAAC;QACF,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,IAAG;AACtB,YAAA,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG;AACnC,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC3B,gBAAA,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAC3B;AACD,YAAA,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG;AACnC,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aACzB;AACF,QAAA,CAAC,CAAC;QACF,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,KAAI;AAClC,YAAA,IAAI,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9D,YAAA,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,QAAQ,GAAG,QAAQ;AAEjD,YAAA,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAG;gBACnB,IAAI,CAAC,IAAI,GAAG;AACX,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AACxB,oBAAA,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;iBACxB;gBACD,IAAI,CAAC,IAAI,GAAG;AACX,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,IAAI,EAAE,EAAE;AACR,oBAAA,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBACzB;AACF,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;IACH;IACQ,iBAAiB,CAAC,SAAoB,EAAE,OAA2B,EAAA;QAC1E,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,KAAI;YAC3C,IAAI,CAAC,MAAM,CAAC,MAAM;gBAAE;AACpB,YAAA,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,SAAS;gBAAE;AACjC,YAAA,IAAI,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,GAAG;AAC9L,YAAA,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;AACvD,QAAA,CAAC,CAAC;QACF,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,QAAQ,KAAI;YACnC,IAAI,QAAQ,KAAK,CAAC;gBAAE;YACpB,IAAI,QAAQ,GAAG,CAAC;YAChB,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,SAAS,KAAI;AAChC,gBAAA,IAAI,IAAI,CAAC,KAAK,EAAE;oBACf,IAAI,IAAI,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AAC7E,oBAAA,IAAI,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,KAAK,IAAI,EAAE;AAC5D,oBAAA,IAAI,YAAY,GAAG,WAAW,GAAG,GAAG;AACpC,oBAAA,IAAI,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;oBAC1D,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC;gBAC9C;AACD,YAAA,CAAC,CAAC;YACF,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;AACvD,QAAA,CAAC,CAAC;IACH;AACA,IAAA,MAAM,oBAAoB,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,KAAK,EAAsB,EAAA;AAC7I,QAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE;QAC/B,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;QACxC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,WAAW,GAAG,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,OAAO;QACpF,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;YACjC,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;YACrD,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA,EAAG,YAAY,CAAA,CAAA,CAAG,CAAC;AACxD,YAAA,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC,iBAAiB;AACxC,YAAA,UAAU,CAAC,SAAS,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACnE,YAAA,UAAU,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;AAC1D,QAAA,CAAC,CAAC;AACF,QAAA,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC;QACtE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAY,EAAE,QAAgB,KAAI;YAC/C,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,KAAI;AAClD,gBAAA,IAAI,WAAW,IAAI,QAAQ,KAAK,CAAC,EAAE;oBAClC,OAAO,CAAC,QAAQ,GAAG,CAAC,EAAE,QAAQ,EAAE;gBACjC;AACA,gBAAA,MAAM,gBAAgB,GAAG,WAAW,GAAG,QAAQ,GAAG,CAAC,GAAG,QAAQ;AAC9D,gBAAA,OAAO,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;AACvE,YAAA,CAAC,CAAC;YACF,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,KAAI;AAC9B,gBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;AAC3B,gBAAA,IAAI,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE;AAC3B,oBAAA,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM;gBACvB;AACD,YAAA,CAAC,CAAC;AACF,YAAA,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;AAC5B,QAAA,CAAC,CAAC;QACF,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAI;AAC/B,YAAA,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AAC7D,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,OAAO,EAAE,MAAM,EAAE;YACpB,MAAM,eAAe,GAAG,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC;YAC1D,eAAe,CAAC,KAAK,GAAG,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;YAClD,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,eAAe,EAAE,OAAO,CAAC;QAC1D;QACA,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE;QAChD,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC;IACtC;AACA,IAAA,MAAM,cAAc,CAAC,SAAiB,EAAE,eAAuB,EAAA;QAC9D,MAAM,IAAI,GAAwB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;AAC7D,QAAA,MAAM,QAAQ,GAAa,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;QACjD,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AACtC,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,QAAQ,GAAG,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC;QACnF,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,GAAG,SAAS,CAAA,IAAA,CAAM,CAAC;IAC1E;AACQ,IAAA,oBAAoB,CAAC,YAAoB,EAAA;QAChD,IAAI,MAAM,GAAG,EAAE;AACf,QAAA,OAAO,YAAY,IAAI,CAAC,EAAE;AACzB,YAAA,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,IAAI,YAAY,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM;YAC/D,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,CAAC;QACjD;AACA,QAAA,OAAO,MAAM;IACd;AAEQ,IAAA,eAAe,CAAC,YAAoB,EAAA;AAC3C,QAAA,MAAM,OAAO,GAA2B;AACvC,YAAA,OAAO,EAAE,mBAAmB;AAC5B,YAAA,OAAO,EAAE,yBAAyB;AAClC,YAAA,SAAS,EAAE,yBAAyB;AACpC,YAAA,SAAS,EAAE,6BAA6B;SACxC;AACD,QAAA,OAAO,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE;IACnC;wGA1YY,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,cAFlB,MAAM,EAAA,CAAA;;4FAEN,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACX,oBAAA,UAAU,EAAE,MAAM;AAClB,iBAAA;;;MCEY,YAAY,CAAA;AACP,IAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;IACjD,aAAa,GAAG,MAAM,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAChE,UAAU,GAAG,uBAAuB;AAErD;;;AAGG;IACH,OAAO,CACN,KAAa,EACb,QAAiB,EACjB,aAA+E,EAC/E,OAAuD,EACvD,IAAyB,EAAA;AAEzB,QAAA,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,OAAO,CAAC;QAC7E,OAAO,IAAI,CAAC,IAAI,CAAC;YAChB,IAAI,EAAE,SAAS,CAAC,OAAO;YACvB,KAAK;YACL,QAAQ;YACR,UAAU;AACV,YAAA,OAAO,EAAE,YAAY;YACrB,IAAI;AACJ,SAAA,CAAC;IACH;AAEA;;;AAGG;IACH,OAAO,CACN,KAAa,EACb,QAAiB,EACjB,aAA+E,EAC/E,OAAuD,EACvD,IAAyB,EAAA;AAEzB,QAAA,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,OAAO,CAAC;QAC7E,OAAO,IAAI,CAAC,IAAI,CAAC;YAChB,IAAI,EAAE,SAAS,CAAC,OAAO;YACvB,KAAK;YACL,QAAQ;YACR,UAAU;AACV,YAAA,OAAO,EAAE,YAAY;YACrB,IAAI;AACJ,SAAA,CAAC;IACH;AAEA;;;AAGG;IACH,KAAK,CACJ,KAAa,EACb,QAAiB,EACjB,aAA+E,EAC/E,OAAuD,EACvD,IAAyB,EAAA;AAEzB,QAAA,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,OAAO,CAAC;QAC7E,OAAO,IAAI,CAAC,IAAI,CAAC;YAChB,IAAI,EAAE,SAAS,CAAC,KAAK;YACrB,KAAK;YACL,QAAQ;YACR,UAAU;AACV,YAAA,OAAO,EAAE,YAAY;YACrB,IAAI;AACJ,SAAA,CAAC;IACH;AAEA;;;;AAIG;IACK,WAAW,CAClB,aAA+E,EAC/E,OAAuD,EAAA;AAEvD,QAAA,IAAI,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;;;AAGvD,YAAA,MAAM,SAAS,GAAG,CAAC,CAAE,aAAqB,CAAC,UAAU;YACrD,OAAO;AACN,gBAAA,UAAU,EAAE,SAAS,GAAG,eAAe,CAAC,cAAc,GAAG,eAAe,CAAC,OAAO;AAChF,gBAAA,YAAY,EAAE,aAAa;aAC3B;QACF;;;QAIA,OAAO;AACN,YAAA,UAAU,EAAG,aAAiC,IAAI,eAAe,CAAC,OAAO;AACzE,YAAA,YAAY,EAAE,OAAO;SACrB;IACF;AAEA,IAAA,OAAO,CAAC,OAAe,EAAE,IAAA,GAAkB,SAAS,CAAC,OAAO,EAAA;QAC3D,OAAO,IAAI,CAAC,IAAI,CAAC;YAChB,IAAI;AACJ,YAAA,KAAK,EAAE,OAAO;YACd,UAAU,EAAE,eAAe,CAAC,OAAO;AACnC,SAAA,CAAC;IACH;AAEA,IAAA,OAAO,CACN,KAAa,EACb,QAAiB,EACjB,cAAsB,WAAW,EACjC,UAAA,GAAqB,UAAU,EAC/B,IAAA,GAAkB,SAAS,CAAC,OAAO,EACnC,IAAyB,EAAA;QAEzB,OAAO,IAAI,CAAC,IAAI,CAAC;YAChB,IAAI;YACJ,KAAK;YACL,QAAQ;YACR,UAAU,EAAE,eAAe,CAAC,cAAc;AAC1C,YAAA,OAAO,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE;YACpC,IAAI;AACJ,SAAA,CAAC;IACH;AAEA,IAAA,QAAQ,CAAC,KAAa,EAAE,WAAmB,EAAE,IAAA,GAAkB,SAAS,CAAC,OAAO,EAAE,UAAA,GAA8B,eAAe,CAAC,OAAO,EAAA;QACtI,OAAO,IAAI,CAAC,IAAI,CAAC;YAChB,IAAI;YACJ,KAAK;YACL,WAAW;YACX,UAAU;AACV,SAAA,CAAC;IACH;IAEA,cAAc,CAAC,MAAmB,EAAE,MAAwB,EAAA;QAC3D,OAAO,IAAI,CAAC,IAAI,CAAC;AAChB,YAAA,GAAG,MAAM;YACT,MAAM;AACN,SAAA,CAAC;IACH;AAEA,IAAA,IAAI,CAAC,MAAmB,EAAA;AACvB,QAAA,OAAO,IAAI,OAAO,CAAc,OAAO,IAAG;YACzC,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;YACnD,MAAM,UAAU,GAAG,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC;;AAGvD,YAAA,MAAM,IAAI,GAAG;AACZ,gBAAA,MAAM,EAAE,YAAY;AACpB,gBAAA,UAAU,EAAE,UAAU;gBACtB,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC;gBACtD,mBAAmB,EAAE,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,UAAU,CAAC;gBAC1E,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC;gBACtD,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,UAAU,CAAC;AACxD,gBAAA,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC;AACrD,gBAAA,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;AAC9C,gBAAA,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;AAC5C,gBAAA,kBAAkB,EAAE,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC;AAC5D,gBAAA,iBAAiB,EAAE,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC;;;;aAI1D;AAED,YAAA,MAAM,YAAY,GAAiB;gBAClC,GAAG,EAAE,IAAI,CAAC,UAAU;gBACpB,OAAO,EAAE,YAAY,CAAC,QAAQ;gBAC9B,MAAM,EAAE,YAAY,CAAC,KAAK;gBAC1B,IAAI,EAAE,IAAI,CAAC,SAAS;AACpB,gBAAA,eAAe,EAAE,IAAI;AACrB,gBAAA,aAAa,EAAE,IAAI;gBACnB,MAAM,EAAE,MAAK;AACZ,oBAAA,OAAO,CAAC;AACP,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,WAAW,EAAE,KAAK;AAClB,wBAAA,WAAW,EAAE,KAAK;AAClB,qBAAA,CAAC;gBACH,CAAC;AACD,gBAAA,MAAM,EAAE,CAAC,IAAa,KAAI;AACzB,oBAAA,OAAO,CAAC;AACP,wBAAA,WAAW,EAAE,KAAK;AAClB,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,WAAW,EAAE,KAAK;AAClB,qBAAA,CAAC;gBACH,CAAC;aACD;;AAGA,YAAA,YAAoB,CAAC,IAAI,GAAG,IAAI;AAEjC,YAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,YAAY,CAAC;AAC/C,QAAA,CAAC,CAAC;IACH;;AAIQ,IAAA,iBAAiB,CAAC,MAAmB,EAAA;QAC5C,OAAO;AACN,YAAA,GAAG,cAAc;AACjB,YAAA,GAAG,MAAM;AACT,YAAA,OAAO,EAAE;gBACR,GAAG,cAAc,CAAC,OAAO;gBACzB,GAAG,MAAM,CAAC,OAAO;AACjB,aAAA;SACD;IACF;IAEQ,YAAY,CAAC,MAA0B,EAAE,UAAkC,EAAA;AAClF,QAAA,IAAI,MAAM,EAAE,UAAU,EAAE;YACvB,OAAO,MAAM,CAAC,UAAU;QACzB;AACA,QAAA,IAAI,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE;YACtD,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAE;QACxC;AACA,QAAA,OAAO,UAAU,EAAE,IAAI,IAAI,mBAAmB;IAC/C;IAEQ,sBAAsB,CAAC,MAA0B,EAAE,UAAkC,EAAA;AAC5F,QAAA,IAAI,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE;AACxC,YAAA,OAAO,MAAM,CAAC,MAAM,CAAC,mBAAmB;QACzC;AACA,QAAA,OAAO,UAAU,EAAE,mBAAmB,IAAI,SAAS;IACpD;IAEQ,YAAY,CAAC,MAA0B,EAAE,UAAkC,EAAA;AAClF,QAAA,IAAI,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE;AAC9B,YAAA,OAAO,MAAM,CAAC,MAAM,CAAC,SAAS;QAC/B;AACA,QAAA,OAAO,UAAU,EAAE,SAAS,IAAI,SAAS;IAC1C;IAEQ,aAAa,CAAC,MAA0B,EAAE,UAAkC,EAAA;AACnF,QAAA,IAAI,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE;AAC/B,YAAA,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU;QAChC;AACA,QAAA,OAAO,UAAU,EAAE,UAAU,IAAI,MAAM;IACxC;AAEQ,IAAA,gBAAgB,CAAC,MAA0B,EAAA;AAClD,QAAA,OAAO,MAAM,EAAE,UAAU,KAAK,eAAe,CAAC,cAAc;IAC7D;AAEQ,IAAA,cAAc,CAAC,MAA0B,EAAA;AAChD,QAAA,OAAO,MAAM,EAAE,OAAO,EAAE,WAAW,IAAI,IAAI;IAC5C;AAEQ,IAAA,aAAa,CAAC,MAA0B,EAAA;AAC/C,QAAA,OAAO,MAAM,EAAE,OAAO,EAAE,UAAU,IAAI,UAAU;IACjD;AAEQ,IAAA,qBAAqB,CAAC,MAA0B,EAAA;AACvD,QAAA,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM;AAC7B,QAAA,MAAM,SAAS,GAA2B;AACzC,YAAA,QAAQ,EAAE,OAAO;SACjB;AACD,QAAA,IAAI,MAAM,EAAE,kBAAkB,EAAE;AAC/B,YAAA,SAAS,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC,kBAAkB;AACxD,YAAA,SAAS,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,kBAAkB;QACrD;AACA,QAAA,IAAI,MAAM,EAAE,sBAAsB,EAAE;AACnC,YAAA,SAAS,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,sBAAsB;QACnD;AACA,QAAA,OAAO,SAAS;IACjB;AAEQ,IAAA,oBAAoB,CAAC,MAA0B,EAAA;AACtD,QAAA,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM;AAC7B,QAAA,MAAM,SAAS,GAA2B;AACzC,YAAA,QAAQ,EAAE,OAAO;SACjB;AACD,QAAA,IAAI,MAAM,EAAE,iBAAiB,EAAE;AAC9B,YAAA,SAAS,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC,iBAAiB;AACvD,YAAA,SAAS,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,iBAAiB;QACpD;AACA,QAAA,IAAI,MAAM,EAAE,qBAAqB,EAAE;AAClC,YAAA,SAAS,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,qBAAqB;QAClD;AACA,QAAA,OAAO,SAAS;IACjB;wGArRY,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFZ,MAAM,EAAA,CAAA;;4FAEN,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACX,oBAAA,UAAU,EAAE,MAAM;AAClB,iBAAA;;;MCCY,eAAe,CAAA;AACV,IAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAC1B,IAAA,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;IACvD,cAAc,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAA2B,CAAA,EAAG,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,iBAAiB,CAAA,SAAA,CAAW,CAAC;IAClH;wGALY,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAf,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFf,MAAM,EAAA,CAAA;;4FAEN,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACX,oBAAA,UAAU,EAAE,MAAM;AAClB,iBAAA;;;SCPe,WAAW,CAAC,KAAa,EAAE,MAAM,GAAG,GAAG,EAAA;IACnD,MAAM,KAAK,GAAG,CAAC,CAAS,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,CAAC,CAAS,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAE5D,IAAA,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACvB,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACzC,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;AACzC,QAAA,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;QACzC,OAAO,CAAA,CAAA,EAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA,EAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA,EAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE;IACrJ;IACA,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,oDAAoD,CAAC;IAC3E,IAAI,CAAC,EAAE;QACH,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,CAAA,EAAA,EAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;QAC/C,OAAO,CAAA,KAAA,EAAQ,CAAC,CAAA,EAAA,EAAK,CAAC,KAAK,CAAC,CAAA,EAAG,CAAC,CAAA,CAAA,CAAG;IACvC;AACA,IAAA,OAAO,KAAK;AAChB;;MCEa,aAAa,CAAA;AACR,IAAA,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC;;IAIrD,0BAA0B,CAAC,IAAY,EAAE,IAAY,EAAE,QAAA,GAAoB,IAAI,EAAE,aAAA,GAAyB,KAAK,EAAA;QACtH,OAAO;AACN,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,QAAQ,EAAE;AACT,gBAAA,IAAI,EAAE,KAAK;AACX,aAAA;AACD,YAAA,QAAQ,EAAE;AACT,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE;AACtD,aAAA;AACD,YAAA,SAAS,EAAE;AACV,gBAAA,IAAI,EAAE,aAAa;;;;;;gBAMnB,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE;AACtE,aAAA;AACD,YAAA,SAAS,EAAE;AACV,gBAAA,UAAU,EAAE,kBAAkB;AAC9B,gBAAA,IAAI,EAAE,IAAI;;gBAEV,KAAK,EAAE,KAAK,CAAC,KAAK;AAClB,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,OAAO,EAAE,EAAE;AACX,aAAA;SACD;IACF;AAEQ,IAAA,4BAA4B,CAAC,IAAW,EAAA;QAC/C,OAAO,IAAI,CAAC,0BAA0B,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC;IAC/D;IAEQ,yBAAyB,CAAC,WAAoB,IAAI,EAAE,SAAkB,IAAI,EAAE,gBAAyB,IAAI,EAAA;AAChH,QAAA,IAAI,iBAAiB,GAAG,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,CAAC;QACpG,IAAI,MAAM,EAAE;YACX,iBAAiB,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,KAAa,KAAI;AACzD,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC;gBACxE,OAAO,SAAS,KAAK,GAAG,GAAG,CAAC,GAAG,SAAS;AACzC,YAAA,CAAC;QACF;AACA,QAAA,OAAO,iBAAiB;IACzB;IAEQ,oBAAoB,GAAA;QAC3B,OAAO;;;;;AAKN,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,GAAG,EAAE,EAAE;AACP,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,YAAY,EAAE,IAAI;SAClB;IACF;IAEQ,sBAAsB,GAAA;QAC7B,OAAO;;;;;;;YAON,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC5C,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,SAAS,EAAE;AACV,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,UAAU,EAAE,kBAAkB;AAC9B,gBAAA,QAAQ,EAAE,EAAE;AACZ,gBAAA,UAAU,EAAE,EAAE;AACd,aAAA;AACD,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,UAAU,EAAE,EAAE;AACd,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,KAAK,EAAE,MAAM;SACb;IACF;AAEA;;;;;;AAMG;AACH,IAAA,mBAAmB,CAAC,KAAa,EAAE,KAAa,EAAE,IAAY,EAAA;AAC7D,QAAA,MAAM,SAAS,GACd,KAAK,CAAC,MAAM,GAAG;AACd,cAAE;kCAC4B,KAAK,CAAA;AACL,gCAAA,EAAA,KAAK,CAAA,kBAAA;cACjC,EAAE;QACN,OAAO;AACsC,6CAAA,EAAA,KAAK,YAAY,KAAK,CAAA;KAChE,SAAS;KACT,IAAI;;IAEL;IACH;;;AAMA;;;;;;;;AAQG;IACH,kBAAkB,CACjB,UAAoB,EACpB,MAAqD,EACrD,WAAyE,EACzE,aAA0F,EAC1F,UAAA,GAAsB,KAAK,EAAA;QAE3B,OAAO;AACN,YAAA,SAAS,EAAE,EAAE,UAAU,EAAE,kBAAkB,EAAE;AAC7C,YAAA,KAAK,EAAE,IAAI,CAAC,4BAA4B,CAAC,UAAU,CAAC;AACpD,YAAA,KAAK,EAAE,IAAI,CAAC,yBAAyB,EAAE;AACvC,YAAA,MAAM,EAAE;gBACP,GAAG,MAAM,CAAC,GAAG,CACZ,CAAC,IAAI,MAAuB;AAC3B,oBAAA,IAAI,EAAE,KAAK;oBACX,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE;oBACjD,IAAI,EAAE,IAAI,CAAC,KAAK;AAChB,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,MAAM,EAAE,IAAI;AACZ,oBAAA,KAAK,EAAE;AACN,wBAAA,IAAI,EAAE,IAAI;AACV,wBAAA,QAAQ,EAAE,KAAK;wBACf,KAAK,EAAE,KAAK,CAAC,IAAI;AACjB,wBAAA,QAAQ,EAAE,EAAE;AACZ,wBAAA,SAAS,EAAE,WAAW;AACtB,qBAAA;AACD,iBAAA,CAAC,CACF;AACD,aAAA;AACD,YAAA,OAAO,EAAE;AACR,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,eAAe,EAAE,SAAS;AAC1B,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,SAAS,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;AAC3B,gBAAA,SAAS,EAAE,aAAa;AACxB,gBAAA,QAAQ,EAAE,MAAM;AAChB,aAAA;AACD,YAAA,IAAI,EAAE,IAAI,CAAC,oBAAoB,EAAE;AACjC,YAAA,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC,sBAAsB,EAAE,GAAG,SAAS;SAC9D;IACF;AAEA;;;;;;;;AAQG;IACH,uBAAuB,CACtB,UAAoB,EACpB,MAAqD,EACrD,WAAyE,EACzE,aAA0F,EAC1F,UAAA,GAAsB,KAAK,EAAA;AAE3B,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,CAAC;QAChG,OAAO,CAAC,MAA4B,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;;;AAG9D,YAAA,KAAK,CAAC,cAAc,GAAG,KAAK;AAC5B,YAAA,KAAK,CAAC,KAAK,GAAG,OAAO;YACrB,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,gBAAA,KAAK,CAAC,KAAK,GAAG,SAAS;YACxB;AACD,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,OAAO;IACf;AAEA;;;;;;;;AAQG;AACH,IAAA,4BAA4B,CAC3B,UAAoB,EACpB,MAAqD,EACrD,WAAyE,EACzE,aAA0F,EAC1F,aAAsB,KAAK,EAC3B,iBAAA,GAA6B,KAAK;;AAElC,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,CAAC;AACjG,QAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;QAClE,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,4BAA4B,CAAC,UAAU,CAAC;QAE5D,OAAO,CAAC,MAA4B,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,KAAI;AAC5D,YAAA,IAAI,KAAK,CAAC,KAAK,EAAE;AAChB,gBAAA,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;YAC/B;YAEA,MAAM,SAAS,GAAI,KAAK,CAAC,SAAiB,EAAE,KAAK,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,SAAS;YAEpG,KAAK,CAAC,SAAS,GAAG;AACjB,gBAAA,IAAI,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC;AAC1B,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,WAAW,EAAE,CAAC;aACd;YAED,IAAI,iBAAiB,EAAE;AACrB,gBAAA,KAAa,CAAC,YAAY,GAAG,QAAQ;gBAEtC,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;gBAE1D,KAAK,CAAC,MAAM,GAAG;AACd,oBAAA,SAAS,EAAE;AACV,wBAAA,KAAK,EAAE,aAAa;AACpB,wBAAA,WAAW,EAAE,CAAC;AACd,qBAAA;iBACD;YACF;AACD,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,OAAO,CAAC,IAAI,EAAE;AAChB,YAAA,OAAO,CAAC,IAA4B,CAAC,IAAI,GAAG,KAAK;AACjD,YAAA,OAAO,CAAC,IAA4B,CAAC,KAAK,GAAG,KAAK;AAClD,YAAA,OAAO,CAAC,IAA4B,CAAC,MAAM,GAAG,KAAK;AACnD,YAAA,OAAO,CAAC,IAA4B,CAAC,YAAY,GAAG,IAAI;QAC1D;AACA,QAAA,OAAO,OAAO;IACf;AAEA;;;;;;;;AAQG;IACH,iCAAiC,CAChC,UAAoB,EACpB,MAAqD,EACrD,WAAyE,EACzE,aAA0F,EAC1F,UAAA,GAAsB,KAAK,EAAA;AAE3B,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,4BAA4B,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,CAAC;QAC1G,OAAO,CAAC,MAA4B,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;;;AAG9D,YAAA,KAAK,CAAC,cAAc,GAAG,KAAK;AAC5B,YAAA,KAAK,CAAC,KAAK,GAAG,OAAO;AACrB,YAAA,IAAI,KAAK,CAAC,KAAK,EAAE;AAChB,gBAAA,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;YAC/B;YACA,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,gBAAA,KAAK,CAAC,KAAK,GAAG,SAAS;YACxB;AACD,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,OAAO,CAAC,IAAI,EAAE;AAChB,YAAA,OAAO,CAAC,IAA4B,CAAC,IAAI,GAAG,KAAK;AACjD,YAAA,OAAO,CAAC,IAA4B,CAAC,KAAK,GAAG,KAAK;AAClD,YAAA,OAAO,CAAC,IAA4B,CAAC,MAAM,GAAG,KAAK;AACnD,YAAA,OAAO,CAAC,IAA4B,CAAC,YAAY,GAAG,IAAI;QAC1D;AACA,QAAA,OAAO,OAAO;IACf;AAEA;;;;;;;;AAQG;AACH,IAAA,qBAAqB,CACpB,UAAoB,EACpB,MAAqD,EACrD,aAAA,GAAwB,GAAG,EAC3B,WAAyE,EACzE,aAA0F,EAC1F,UAAA,GAAsB,KAAK,EAC3B,iBAA4D,EAAA;AAE5D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,4BAA4B,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC;AAEnH,QAAA,IAAI,OAAO,CAAC,KAAK,EAAE;AAClB,YAAA,MAAM,CAAC,GAAG,OAAO,CAAC,KAA6B;AAC/C,YAAA,MAAM,EAAE,GAAG,OAAO,CAAC,IAA2B;AAE9C,YAAA,MAAM,wBAAwB,GAAG,CAAC,KAAsB,EAAE,KAAa,KAAI;gBAC1E,MAAM,WAAW,GAAG,4CAA4C;gBAChE,MAAM,UAAU,GAAG,EAAE;gBAErB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;AAChC,gBAAA,MAAM,MAAM,GAAG,CAAA,EAAG,KAAK,GAAG,CAAC,KAAK;gBAEhC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM;gBAE3C,IAAI,WAAW,GAAG,CAAC;gBACnB,IAAI,UAAU,KAAK,CAAC;oBAAE,WAAW,GAAG,CAAC;qBAChC,IAAI,UAAU,KAAK,CAAC;oBAAE,WAAW,GAAG,CAAC;gBAE1C,MAAM,OAAO,GAAG,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;gBAE1D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;gBAC7B,MAAM,KAAK,GAAa,EAAE;gBAC1B,IAAI,OAAO,GAAG,EAAE;AAEhB,gBAAA,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;AACtB,oBAAA,MAAM,IAAI,GAAG,OAAO,GAAG,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE,GAAG,CAAC;AAC5C,oBAAA,IAAI,IAAI,CAAC,MAAM,IAAI,UAAU;wBAAE,OAAO,GAAG,IAAI;yBACxC;AACJ,wBAAA,IAAI,OAAO;AAAE,4BAAA,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;wBAChC,OAAO,GAAG,CAAC;oBACZ;gBACD;AACA,gBAAA,IAAI,OAAO;AAAE,oBAAA,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;AAEhC,gBAAA,OAAO,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAA,EAAG,OAAO,CAAA,EAAG,EAAE,CAAA,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACpF,YAAA,CAAC;;;;;;;;;;;;;;AAgBD,YAAA,EAAE,CAAC,GAAG,GAAG,IAAI;YACb,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,aAAa,GAAG,EAAE;AACjC,YAAA,EAAE,CAAC,KAAK,GAAG,EAAE;AACb,YAAA,EAAE,CAAC,MAAM,GAAG,IAAI;AAChB,YAAA,EAAE,CAAC,YAAY,GAAG,IAAI;QACvB;AAEC,QAAA,OAAO,CAAC,MAA4B,CAAC,OAAO,CAAC,KAAK,IAAG;YACrD,KAAK,CAAC,KAAK,GAAG;AACb,gBAAA,IAAI,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;AACtB,gBAAA,SAAS,EAAE,WAAW;aACtB;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,OAAO;IACf;;AAIA;;;;;;;;AAQG;IACH,mBAAmB,CAClB,UAAoB,EACpB,MAAqD,EACrD,WAAwE,EACxE,aAA0F,EAC1F,UAAA,GAAsB,KAAK,EAAA;QAE3B,OAAO;AACN,YAAA,KAAK,EAAE,IAAI,CAAC,4BAA4B,CAAC,UAAU,CAAC;YACpD,KAAK,EAAE,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AACvD,YAAA,MAAM,EAAE;gBACP,GAAG,MAAM,CAAC,GAAG,CACZ,CAAC,IAAI,EAAE,WAAW,MAAwB;AACzC,oBAAA,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,KAAK;AAChB,oBAAA,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AAChC,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,UAAU,EAAE,EAAE;AACd,oBAAA,QAAQ,EAAE;AACT,wBAAA,SAAS,EAAE;4BACV,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,4BAAA,WAAW,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI;AAC9B,4BAAA,WAAW,EAAE,EAAE;AACf,yBAAA;AACD,qBAAA;AACD,iBAAA,CAAC,CACF;AACD,aAAA;AACD,YAAA,OAAO,EAAE;AACR,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,eAAe,EAAE,SAAS;AAC1B,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,SAAS,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;AAC3B,gBAAA,SAAS,EAAE,aAAa;AACxB,gBAAA,QAAQ,EAAE,OAAO;AACjB,aAAA;AACD,YAAA,QAAQ,EAAE;AACT,gBAAA;oBACC,IAAI,EAAE,QAAQ;AACd,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,MAAM,EAAE,EAAE;AACV,oBAAA,MAAM,EAAE,EAAE;AACV,oBAAA,eAAe,EAAE,MAAM;AACvB,oBAAA,WAAW,EAAE,aAAa;AAC1B,oBAAA,WAAW,EAAE,0BAA0B;AACvC,oBAAA,UAAU,EAAE,KAAK;AACjB,oBAAA,WAAW,EAAE;AACZ,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,WAAW,EAAE,aAAa;AAC1B,wBAAA,UAAU,EAAE,CAAC;AACb,wBAAA,WAAW,EAAE,oBAAoB;AACjC,qBAAA;AACD,oBAAA,cAAc,EAAE,KAAK;AACrB,iBAAA;AACD,gBAAA;AACC,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,cAAc,EAAE,KAAK;AACrB,iBAAA;AACD,aAAA;AACD,YAAA,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC,sBAAsB,EAAE,GAAG,SAAS;SAC9D;IACF;;AAIA;;;;;;AAMG;AACH,IAAA,qBAAqB,CACpB,IAAmD,EACnD,WAAwE,EACxE,aAA0F,EAAA;QAE1F,OAAO;AACN,YAAA,MAAM,EAAqB;AAC1B,gBAAA;oBACC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK;AACvB,wBAAA,GAAG,IAAI;AACP,wBAAA,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AAChC,qBAAA,CAAC,CAAC;AACH,oBAAA,IAAI,EAAE,WAAW;AACjB,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;AACtB,oBAAA,iBAAiB,EAAE,KAAK;AACxB,oBAAA,QAAQ,EAAE;AACT,wBAAA,KAAK,EAAE,IAAI;AACX,qBAAA;AACD,oBAAA,SAAS,EAAE;AACV,wBAAA,IAAI,EAAE,IAAI;AACV,wBAAA,MAAM,EAAE,EAAE;AACV,wBAAA,OAAO,EAAE,EAAE;AACX,qBAAA;AACD,oBAAA,KAAK,EAAE;AACN,wBAAA,IAAI,EAAE,IAAI;AACV,wBAAA,QAAQ,EAAE,SAAS;wBACnB,KAAK,EAAE,KAAK,CAAC,IAAI;AACjB,wBAAA,QAAQ,EAAE,EAAE;AACZ,wBAAA,SAAS,EAAE,WAAW;AACtB,qBAAA;AACD,iBAAA;AACD,aAAA;AACD,YAAA,OAAO,EAAE;AACR,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,SAAS,EAAE,aAAa;AACxB,gBAAA,QAAQ,EAAE,MAAM;;AAEhB,aAAA;AACD,YAAA,MAAM,EAAyB;gBAC9B,MAAM,EAAE,YAAY;AACpB,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,OAAO,EAAE,EAAE;gBACX,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;AAC9C,aAAA;SACD;IACF;AAEA;;;;;;;;AAQG;IACH,yBAAyB,CAAC,MAAc,EAAE,KAAa,EAAE,QAAgB,EAAE,KAAa,EAAE,KAAA,GAAgB,GAAG,EAAA;AAC5G,QAAA,MAAM,IAAI,GAAG;AACZ,YAAA,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;AAC3D,YAAA;AACC,gBAAA,IAAI,EAAE,aAAa;gBACnB,KAAK,EAAE,KAAK,GAAG,KAAK;AACpB,gBAAA,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE;AACjC,aAAA;SACD;QACD,OAAO;AACN,YAAA,OAAO,EAAE;AACR,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,QAAQ,EAAE,MAAM;AAChB,aAAA;AACD,YAAA,MAAM,EAAqB;AAC1B,gBAAA;AACC,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,IAAI,EAAE,KAAK;AACX,oBAAA,OAAO,EAAE;AACR,wBAAA,OAAO,EAAE,MAAM;AACf,qBAAA;AACD,oBAAA,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;AACtB,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,UAAU,EAAE,CAAC;AACb,oBAAA,YAAY,EAAE,KAAK;AACnB,oBAAA,MAAM,EAAE,IAAI;AACZ,oBAAA,KAAK,EAAE;AACN,wBAAA,IAAI,EAAE,IAAI;AACV,wBAAA,SAAS,EAAE,MAAM;AACjB,wBAAA,KAAK,EAAE,KAAK;AACZ,wBAAA,QAAQ,EAAE,QAAQ;AAClB,wBAAA,UAAU,EAAE,MAAM;AAClB,wBAAA,QAAQ,EAAE,QAAQ;AAClB,wBAAA,UAAU,EAAE,OAAO;AACnB,wBAAA,UAAU,EAAE,QAAQ,GAAG,CAAC,IAAI;AAC5B,wBAAA,KAAK,EAAE,QAAQ;AACf,wBAAA,aAAa,EAAE,QAAQ;AACvB,wBAAA,eAAe,EAAE,aAAa;AAC9B,qBAAA;AACD,iBAAA;AACD,aAAA;SACD;IACF;AAEA;;;;;;;;;;;AAWG;AACH,IAAA,0BAA0B,CAAC,MAAc,EAAE,KAAa,EAAE,QAAgB,EAAE,KAAa,EAAE,KAAA,GAAgB,GAAG,EAAE,UAAmB,EAAA;AAClI,QAAA,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,GAAG;AACzC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAEzD,MAAM,WAAW,GAAG,GAAG;AACvB,QAAA,MAAM,SAAS,GAAG,CAAC,EAAE;QAErB,MAAM,SAAS,GAAG,EAAE;QACpB,MAAM,gBAAgB,GAAG,SAAS;QAClC,MAAM,UAAU,GAAG,SAAS;QAE5B,MAAM,SAAS,GAAG,GAAG;AACrB,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACnC,MAAM,iBAAiB,GAAG,EAAE;QAE5B,MAAM,MAAM,GAAG,KAAK;AACpB,QAAA,MAAM,MAAM,GAAqB,CAAC,KAAK,EAAE,KAAK,CAAC;AAE/C,QAAA,MAAM,SAAS,GAAG,SAAS,GAAG,CAAC;QAC/B,MAAM,cAAc,GAAG,KAAK;AAE5B,QAAA,MAAM,MAAM,GAAkB;YAC7B,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE;AAC9C,YAAA,MAAM,EAAE;;AAEP,gBAAA;AACC,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,MAAM,EAAE,MAAM;AACd,oBAAA,MAAM,EAAE,MAAM;AACd,oBAAA,UAAU,EAAE,WAAW;AACvB,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,GAAG,EAAE,SAAS;AAEd,oBAAA,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AAExB,oBAAA,QAAQ,EAAE;AACT,wBAAA,IAAI,EAAE,IAAI;AACV,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,KAAK,EAAE,SAAS;wBAChB,SAAS,EAAE,EAAE,KAAK,EAAE;AACpB,qBAAA;AAED,oBAAA,QAAQ,EAAE;AACT,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,SAAS,EAAE;AACV,4BAAA,KAAK,EAAE,SAAS;AAChB,4BAAA,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;AAC9B,yBAAA;AACD,qBAAA;AAED,oBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AACzB,oBAAA,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AAC1B,oBAAA,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AAE1B,oBAAA,MAAM,EAAE;AACP,wBAAA,IAAI,EAAE,IAAI;AACV,wBAAA,YAAY,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC;wBACvB,SAAS,EAAE,OAAO,UAAU,GAAG,CAAA,QAAA,EAAW,MAAM,CAAA,WAAA,EAAc,UAAU,GAAG,GAAG,CAAA,QAAA,EAAW,MAAM,GAAG,CAAC;AACnG,wBAAA,IAAI,EAAE;AACL,4BAAA,MAAM,EAAE;AACP,gCAAA,QAAQ,EAAE,QAAQ;AAClB,gCAAA,UAAU,EAAE,GAAG;AACf,gCAAA,KAAK,EAAE,UAAU;AACjB,gCAAA,UAAU,EAAE,kBAAkB;gCAC9B,UAAU,EAAE,QAAQ,GAAG,CAAC;AACxB,gCAAA,KAAK,EAAE,QAAQ;AACf,6BAAA;AACD,4BAAA,MAAM,EAAE;AACP,gCAAA,QAAQ,EAAE,EAAE;AACZ,gCAAA,UAAU,EAAE,GAAG;AACf,gCAAA,KAAK,EAAE,UAAU;AACjB,gCAAA,UAAU,EAAE,kBAAkB;AAC9B,gCAAA,UAAU,EAAE,EAAE;AACd,gCAAA,KAAK,EAAE,QAAQ;AACf,6BAAA;AACD,yBAAA;AACD,qBAAA;AAED,oBAAA,IAAI,EAAE;AACL,wBAAA;AACC,4BAAA,KAAK,EAAE,SAAS;AAChB,4BAAA,IAAI,EAAE,GAAG;AACT,4BAAA,KAAK,EAAE;AACN,gCAAA,IAAI,EAAE,IAAI;AACV,gCAAA,SAAS,EAAE,MAAM,SAAS;AAC1B,gCAAA,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;AAC7B,gCAAA,QAAQ,EAAE,iBAAiB;AAC3B,gCAAA,KAAK,EAAE,UAAU;AACjB,6BAAA;AACD,yBAAA;AACD,wBAAA;AACC,4BAAA,KAAK,EAAE,SAAS;AAChB,4BAAA,IAAI,EAAE,KAAK;AACX,4BAAA,KAAK,EAAE;AACN,gCAAA,IAAI,EAAE,IAAI;AACV,gCAAA,SAAS,EAAE,MAAM,SAAS;AAC1B,gCAAA,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;AAC5B,gCAAA,QAAQ,EAAE,iBAAiB;AAC3B,gCAAA,KAAK,EAAE,UAAU;AACjB,6BAAA;AACD,yBAAA;AACD,qBAAA;AACM,iBAAA;;AAGR,gBAAA;AACC,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,MAAM,EAAE,MAAM;AACd,oBAAA,MAAM,EAAE,MAAM;AACd,oBAAA,UAAU,EAAE,WAAW;AACvB,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,GAAG,EAAE,CAAC;AACN,oBAAA,GAAG,EAAE,SAAS;AAEd,oBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AACzB,oBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AACzB,oBAAA,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AAC1B,oBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AACzB,oBAAA,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AAC1B,oBAAA,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;AAEvB,oBAAA,OAAO,EAAE;AACR,wBAAA,IAAI,EAAE,IAAI;AACV,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,MAAM,EAAE,cAAc;AACtB,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,SAAS,EAAE;4BACV,KAAK;AACL,4BAAA,WAAW,EAAE,CAAC;AACd,yBAAA;AACD,qBAAA;AAED,oBAAA,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AACrB,iBAAA;AACR,aAAA;SACD;AAED,QAAA,OAAO,MAAM;IACd;wGA5sBY,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFb,MAAM,EAAA,CAAA;;4FAEN,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACX,oBAAA,UAAU,EAAE,MAAM;AAClB,iBAAA;;;MCbY,qBAAqB,CAAA;AAChB,IAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAC1B,IAAA,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;IACvD,eAAe,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAS,CAAA,EAAG,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,kBAAkB,CAAA,6BAAA,CAA+B,CAAC;IACrH;wGALY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAArB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cAFrB,MAAM,EAAA,CAAA;;4FAEN,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACX,oBAAA,UAAU,EAAE,MAAM;AAClB,iBAAA;;;ACLK,SAAU,WAAW,CAAC,aAAqB,EAAE,UAAkB,EAAA;AACpE,IAAA,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE;AACjC,IAAA,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC;IACnC,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC;IAEtD,IAAI,CAAC,aAAa,EAAE;AACnB,QAAA,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC;AACrD,QAAA,OAAO,IAAI;IACZ;AAEA,IAAA,OAAO,aAAa;AACrB;;MCPa,cAAc,CAAA;AACT,IAAA,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;IACtE,OAAO,GAAS,IAAI;IACpB,UAAU,GAAW,EAAE;AACvB,IAAA,YAAY,GAAG,MAAM,CAAU,KAAK,wDAAC;IACrC,UAAU,GAAA;QACT,IAAI,CAAC,qBAAqB,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,QAAQ,IAAG;AACjE,YAAA,IAAI,CAAC,UAAU,GAAG,QAAQ;YAC1B,IAAI,CAAC,UAAU,EAAE;AAClB,QAAA,CAAC,CAAC;IACH;IACA,UAAU,GAAA;AACT,QAAA,MAAM,aAAa,GAAG,SAAS,CAAC,SAAS,CAAC;QAC1C,IAAI,aAAa,EAAE;YAClB,MAAM,SAAS,GAAG,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC;AAC7D,YAAA,IAAI,CAAC,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,IAAI;QACxD;;AAAO,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;IAC5B;wGAlBY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADD,MAAM,EAAA,CAAA;;4FACnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCGrB,kBAAkB,CAAA;AACb,IAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAC1B,IAAA,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;AACvD,IAAA,WAAW,CAAC,QAAgB,EAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,YAAY,wCAAwC,QAAQ,CAAA,CAAE,CAAC;IAC7I;wGALY,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,cADL,MAAM,EAAA,CAAA;;4FACnB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCDrB,cAAc,CAAA;IAC1B,QAAQ,GAAsB,EAAE;IAChC,QAAQ,GAAW,EAAE;AACJ,IAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAChE,IAAA,WAAW,CAAC,aAAqB,EAAA;AAChC,QAAA,IAAI,CAAC,aAAa;YAAE,OAAO,EAAE,EAAE;AAE/B,QAAA,IAAI,CAAC,QAAQ,GAAG,aAAa;AAE7B,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC7DD,KAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC,EAC3C,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CACjB;IACF;AAEA;;AAEG;AACH,IAAA,UAAU,CAAC,WAAmB,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,kBAAkB,KAAK,WAAW,CAAC;IACrE;wGApBY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADD,MAAM,EAAA,CAAA;;4FACnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCWrB,sBAAsB,CAAA;AACjB,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IACrC,MAAM,GAAG,cAAc;IACvB,YAAY,GAAG,yBAAyB;IACjD,QAAQ,GAAW,EAAE;IACrB,SAAS,GAAkB,IAAI;AAEvC,IAAA,WAAA,GAAA;QACC,IAAI,CAAC,eAAe,EAAE;QACtB,IAAI,CAAC,sBAAsB,EAAE;IAC9B;AAEA;;AAEG;AACH,IAAA,WAAW,CAAC,QAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;IACzB;AAEA;;AAEG;AACH,IAAA,UAAU,CAAC,GAAW,EAAA;QACrB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC;IACxC;IAEQ,eAAe,GAAA;QACtB,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC,SAAS;QAEzC,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;QACtD,IAAI,MAAM,EAAE;AACX,YAAA,IAAI,CAAC,SAAS,GAAG,MAAM;AACvB,YAAA,OAAO,MAAM;QACd;AAEA,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;QACnB,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;AAC3C,QAAA,OAAO,EAAE;IACV;IAEQ,UAAU,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC;AAEQ,IAAA,cAAc,CAAC,GAAW,EAAE,KAAA,GAAyB,cAAc,EAAA;QAC1E,MAAM,KAAK,GAAa,EAAE;QAC1B,IAAI,IAAI,CAAC,QAAQ;AAAE,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5C,QAAA,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QAEf,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,cAAc;QACpE,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,mBAAmB;QAE5E,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,cAAc,EAAE;AACjD,YAAA,IAAI,MAAM;AAAE,gBAAA,KAAK,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAA,CAAE,CAAC;QACzC;QACA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,cAAc,EAAE;AACpD,YAAA,IAAI,SAAS;AAAE,gBAAA,KAAK,CAAC,IAAI,CAAC,WAAW,SAAS,CAAA,CAAE,CAAC;QAClD;AAEA,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;IACvB;AAUA,IAAA,GAAG,CAAI,GAAW,EAAE,KAAQ,EAAE,QAAyB,cAAc,EAAA;QACpE,IAAI,CAAC,eAAe,EAAE;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC;AAClD,QAAA,MAAM,QAAQ,GAA0B;YACvC,SAAS,EAAE,IAAI,CAAC,SAAmB;AACnC,YAAA,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,KAAK;SACL;AACD,QAAA,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACzE;AAWA,IAAA,GAAG,CAAI,GAAW,EAAE,KAAA,GAAyB,cAAc,EAAA;QAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC;AAClD,QAAA,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;AAC1D,QAAA,IAAI,CAAC,GAAG;AAAE,YAAA,OAAO,IAAI;AAErB,QAAA,IAAI;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA0B;YACpD,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS;AAAE,gBAAA,OAAO,IAAI;YACpE,OAAO,GAAG,CAAC,KAAK;QACjB;AAAE,QAAA,MAAM;AACP,YAAA,OAAO,IAAI;QACZ;IACD;AAEA;;;AAGG;IACH,QAAQ,GAAA;AACP,QAAA,MAAM,CAAC,IAAI,CAAC,YAAY;AACtB,aAAA,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;AACrC,aAAA,OAAO,CAAC,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC1C,QAAA,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;AAC1C,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;IACtB;AAEA;;AAEG;IACH,oBAAoB,GAAA;QACnB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;AACpB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;IAClC;AAEQ,IAAA,aAAa,CAAC,QAAgB,EAAA;QACrC,MAAM,MAAM,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,CAAA,EAAG,QAAQ,CAAA,CAAA,CAAG;AAC3C,QAAA,MAAM,CAAC,IAAI,CAAC,YAAY;aACtB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;aAChC,OAAO,CAAC,CAAC,IAAG;YACZ,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,GAAG;gBAAE;YACV,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;YACtC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS;gBAAE;AAC9C,YAAA,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3B,QAAA,CAAC,CAAC;IACJ;IAEQ,sBAAsB,GAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE;AACrB,QAAA,MAAM,CAAC,IAAI,CAAC,YAAY;AACtB,aAAA,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;aACrC,OAAO,CAAC,CAAC,IAAG;YACZ,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,GAAG;gBAAE;YACV,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;AACtC,YAAA,IAAI,CAAC,GAAG;gBAAE;YACV,IAAI,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,EAAE;AACrC,gBAAA,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;YAC3B;AACD,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,gBAAgB,CAAC,GAAW,EAAA;AACnC,QAAA,IAAI;AACH,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgC;QACtD;AAAE,QAAA,MAAM;AACP,YAAA,OAAO,IAAI;QACZ;IACD;wGA/JY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cAFtB,MAAM,EAAA,CAAA;;4FAEN,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACX,oBAAA,UAAU,EAAE,MAAM;AAClB,iBAAA;;;MCEY,iBAAiB,CAAA;AACZ,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAC9C,IAAA,cAAc,GAAG,MAAM,CAAU,IAAI,0DAAC;AACtC,IAAA,gBAAgB,GAAG,MAAM,CAAqB,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,4DAAC;AAExF,IAAA,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;AAChD,IAAA,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE;IAE1C,SAAS,GAAG,cAAc;IAC1B,aAAa,GAAG,0BAA0B;IAE1C,cAAc,GAAG,2BAA2B;IAC5C,WAAW,GAAG,uBAAuB;IAE9C,WAAW,GAAG,KAAK;IAE3B,UAAU,GAAA;QACT,IAAI,IAAI,CAAC,WAAW;YAAE;QAEtB,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,kBAAkB,EAAE;AAEzB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;IACxB;IAEQ,kBAAkB,GAAA;QACzB,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;QACpD,IAAI,aAAa,EAAE;AAClB,YAAA,IAAI;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAuB;AAC9D,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;AACzB,oBAAA,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;AAC7B,oBAAA,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;AACvB,oBAAA,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;AACjC,iBAAA,CAAC;YACH;YAAE,MAAM,EAAC;QACV;QAEA,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9C,QAAA,IAAI,UAAU,KAAK,SAAS,EAAE;YAC7B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,KAAK,MAAM,CAAC;QAC/C;IACD;AAEO,IAAA,iBAAiB,CAAC,SAAkB,EAAA;AAC1C,QAAA,MAAM,uBAAuB,GAAG,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,WAAW,IAAI,EAAE,CAAC;AACtG,QAAA,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,uBAAuB,CAAC,CAAC;AACxE,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;IAC9B;AAEO,IAAA,kBAAkB,CAAC,OAA2B,EAAA;AACpD,QAAA,MAAM,uBAAuB,GAAG,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,WAAW,IAAI,EAAE,CAAC;AACtG,QAAA,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,uBAAuB,CAAC,CAAC;AACjF,QAAA,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC;IACvC;IAEQ,gBAAgB,GAAA;QACvB,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC;QACzD,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,sBAAsB,CAAC;IACzE;AAEQ,IAAA,WAAW,GAAG,CAAC,KAAY,KAAU;QAC5C,MAAM,EAAE,aAAa,EAAE,GAAI,KAAgD,CAAC,MAAM,IAAI,EAAE;AAExF,QAAA,IAAI,OAAO,aAAa,KAAK,SAAS,EAAE;AACvC,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC;AACtC,YAAA,MAAM,uBAAuB,GAAG,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,WAAW,IAAI,EAAE,CAAC;AACtG,YAAA,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE,uBAAuB,CAAC,CAAC;QAC7E;AACD,IAAA,CAAC;AAEO,IAAA,sBAAsB,GAAG,CAAC,KAAY,KAAU;AACvD,QAAA,MAAM,MAAM,GAAI,KAAyC,CAAC,MAAM;AAChE,QAAA,IAAI,CAAC,MAAM;YAAE;QAEb,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM;AAEvD,QAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;YAC9F,MAAM,UAAU,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE;AAE3D,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;AACrC,YAAA,MAAM,uBAAuB,GAAG,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,WAAW,IAAI,EAAE,CAAC;AACtG,YAAA,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,uBAAuB,CAAC,CAAC;QACrF;AACD,IAAA,CAAC;AAEO,IAAA,aAAa,CAAC,SAAkB,EAAA;QACvC,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE;AAC7C,YAAA,MAAM,EAAE,EAAE,aAAa,EAAE,SAAS,EAAsC;AACxE,SAAA,CAAC;AACF,QAAA,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;IAC5B;AAEQ,IAAA,wBAAwB,CAAC,eAAmC,EAAA;QACnE,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE;AACjD,YAAA,MAAM,EAAE,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,SAAS,EAA+B;AAC3I,SAAA,CAAC;AACF,QAAA,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;IAC5B;wGAlGY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cADJ,MAAM,EAAA,CAAA;;4FACnB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCLrB,mBAAmB,CAAA;AACd,IAAA,KAAK,GAAG,IAAI,GAAG,EAA+B;IAC9C,UAAU,GAAG,GAAG;AAChB,IAAA,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI;IAEtC,QAAQ,CAAI,GAAW,EAAE,OAA4B,EAAE,KAAA,GAAgB,IAAI,CAAC,YAAY,EAAA;QAC9F,IAAI,CAAC,oBAAoB,EAAE;AAC3B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAA8B;QAE/D,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,GAAG,GAAG,EAAE;YACrC,OAAO,MAAM,CAAC,MAAM;QACrB;AAEA,QAAA,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC,IAAI,CAC5B,WAAW,CAAC,CAAC,CAAC,EACdE,YAAU,CAAC,KAAK,IAAG;AAClB,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;AACtB,YAAA,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC;QAC/B,CAAC,CAAC,CACF;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;QACpE,IAAI,CAAC,oBAAoB,EAAE;AAC3B,QAAA,OAAO,MAAM;IACd;AAEO,IAAA,UAAU,CAAC,MAAe,EAAA;QAChC,IAAI,CAAC,MAAM,EAAE;AACZ,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YAClB;QACD;QAEA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE;AACpC,YAAA,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAC3B,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;YACvB;QACD;IACD;IAEQ,oBAAoB,GAAA;AAC3B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;AAChD,YAAA,IAAI,KAAK,CAAC,SAAS,IAAI,GAAG,EAAE;AAC3B,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;YACvB;QACD;IACD;IAEQ,oBAAoB,GAAA;QAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;AACzC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAA2B;AACtE,YAAA,IAAI,CAAC,SAAS;gBAAE;AAChB,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;QAC7B;IACD;wGAvDY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cADN,MAAM,EAAA,CAAA;;4FACnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACTlC;;;;;;;AAOG;SACa,cAAc,CAAI,KAAc,EAAE,YAAoB,CAAC,EAAA;AACtE,IAAA,OAAO,CAAC,CAAI,EAAE,CAAI,KAAY;AAC7B,QAAA,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC;AACvB,QAAA,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC;;AAGvB,QAAA,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI;AAAE,YAAA,OAAO,CAAC;QAChD,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,CAAC,SAAS;QACtC,IAAI,MAAM,KAAK,IAAI;AAAE,YAAA,OAAO,SAAS;;QAGrC,IAAI,MAAM,YAAY,IAAI,IAAI,MAAM,YAAY,IAAI,EAAE;AACrD,YAAA,OAAO,SAAS,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QACzD;;QAGA,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC7D,YAAA,OAAO,SAAS,IAAI,MAAM,GAAG,MAAM,CAAC;QACrC;;QAGA,IAAI,OAAO,MAAM,KAAK,SAAS,IAAI,OAAO,MAAM,KAAK,SAAS,EAAE;AAC/D,YAAA,OAAO,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QACrD;;QAGA,MAAM,IAAI,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE;QACnD,MAAM,IAAI,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE;QACnD,OAAO,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AAC5C,IAAA,CAAC;AACF;;ACrCM,SAAU,WAAW,CAAC,IAAS,EAAE,UAAkB,EAAA;AACxD,IAAA,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE;AACjC,IAAA,SAAS,CAAC,YAAY,CAAC,UAAU,CAAC;IAClC,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;IAC7C,IAAI,CAAC,aAAa,EAAE;AACnB,QAAA,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC;AAClD,QAAA,OAAO,IAAI;IACZ;AACA,IAAA,OAAO,aAAa;AACrB;;MCVa,QAAQ,CAAA;IACpB,WAAW,GAAW,6BAA6B;IACnD,YAAY,GAAW,qDAAqD;IAC5E,kBAAkB,GAAW,gBAAgB;IAC7C,6BAA6B,GAAW,oEAAoE;IAC5G,mBAAmB,GAAW,oBAAoB;AAClD;AACK,SAAU,eAAe,CAAC,KAAoB,EAAA;IACnD,MAAM,iBAAiB,GAAG,kBAAkB;AAC5C,IAAA,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG;AAC3B,IAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,KAAK,CAAC,cAAc,EAAE;AAC/D;AACM,SAAU,sBAAsB,CAAC,KAAoB,EAAE,OAAe,EAAA;AAC3E,IAAA,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG;AAC3B,IAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC;IACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;QAC3B,KAAK,CAAC,cAAc,EAAE;IACvB;AACD;AACM,SAAU,oBAAoB,CAAC,KAAoB,EAAA;AACxD,IAAA,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG;AAC3B,IAAA,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE;IAC3D,MAAM,iBAAiB,GAAG,oBAAoB;IAC9C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;QACvC,KAAK,CAAC,cAAc,EAAE;IACvB;AACD;;AC1BA;;MCSa,mBAAmB,CAAA;AAYX,IAAA,IAAA;AAXH,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IACrC,IAAI,GAAG,CAAA,EAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,iBAAiB,CAAA,cAAA,CAAgB;AAC5F;;;;;;;;AAQC;AACD,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAA,CAAA,IAAI,GAAJ,IAAI;IAAe;IAEvC,oBAAoB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAA8B,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,oBAAA,CAAsB,CAAC;IACtF;AAEA,IAAA,UAAU,CAAC,WAAmB,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAuC,CAAA,EAAG,IAAI,CAAC,IAAI,qBAAqB,WAAW,CAAA,KAAA,CAAO,EAAE,EAAE,CAAC;IACpH;IAEA,aAAa,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAyC,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,0BAAA,CAA4B,EAAE,EAAE,CAAC;IAC3G;AAEA,IAAA,YAAY,CAAC,WAAmB,EAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAuC,CAAA,EAAG,IAAI,CAAC,IAAI,qBAAqB,WAAW,CAAA,OAAA,CAAS,EAAE,EAAE,CAAC;IACtH;AAEA,IAAA,WAAW,CAAC,OAA0B,EAAA;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,IAAI,eAAe,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;IACtF;wGAhCY,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAV,IAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cADN,MAAM,EAAA,CAAA;;4FACnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCArB,sBAAsB,CAAA;AAYd,IAAA,IAAA;AAXH,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IACrC,IAAI,GAAG,CAAA,EAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,iBAAiB,CAAA,iBAAA,CAAmB;AAC/F;;;;;;;;AAQC;AACD,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAA,CAAA,IAAI,GAAJ,IAAI;IAAe;AAEvC,IAAA,sBAAsB,CAAC,OAAqC,EAAA;AAC3D,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAA0B,CAAA,EAAG,IAAI,CAAC,IAAI,gBAAgB,EAAE,OAAO,EAAE,EAAE,CAAC;IAC1F;AAEA,IAAA,SAAS,CAAC,OAAqC,EAAA;AAC9C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAA0B,CAAA,EAAG,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC;IAC5E;AAEA,IAAA,MAAM,CAAC,KAAa,EAAA;AACnB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAA0B,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CAAC;IACvE;IAEA,mBAAmB,CAAC,KAAa,EAAE,OAA2C,EAAA;AAC7E,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAuB,GAAG,IAAI,CAAC,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,cAAA,CAAgB,EAAE,OAAO,EAAE,EAAE,CAAC;IAChG;IAEA,YAAY,CAAC,WAAmB,EAAE,MAAe,EAAA;AAChD,QAAA,IAAI,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,oBAAA,EAAuB,kBAAkB,CAAC,WAAW,CAAC,CAAA,CAAE;QAC9E,IAAI,MAAM,EAAE;AACX,YAAA,GAAG,IAAI,CAAA,QAAA,EAAW,kBAAkB,CAAC,MAAM,CAAC,EAAE;QAC/C;QAEA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAA4B,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAC5D,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EACtE,UAAU,CAAC,GAAG,IAAG;AAChB,YAAA,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,CAAC;AAClD,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;QAChB,CAAC,CAAC,CACF;IACF;AAEA,IAAA,aAAa,CAAC,KAAa,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAyC,CAAA,EAAG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAA,WAAA,CAAa,EAAE,EAAE,CAAC;IACrG;wGA/CY,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cADT,MAAM,EAAA,CAAA;;4FACnB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCErB,0BAA0B,CAAA;AAmBlB,IAAA,IAAA;AAlBH,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IACrC,IAAI,GAAG,CAAA,EAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,UAAU,CAAA,UAAA,CAAY;AAEzE,IAAA,aAAa;AACb,IAAA,YAAY;;AAGZ,IAAA,YAAY,GAAG,IAAI,GAAG,EAAU;AAEhC,IAAA,uBAAuB,GAAG,IAAI,OAAO,EAAyB;AACtE,IAAA,iBAAiB,GAAG,IAAI,CAAC,uBAAuB,CAAC,YAAY,EAAE;AAEvD,IAAA,kBAAkB,GAAG,IAAI,OAAO,EAAiC;AACzE,IAAA,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AAE7C,IAAA,qBAAqB,GAAG,IAAI,OAAO,EAA2B;AACtE,IAAA,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE;AAE3D,IAAA,WAAA,CAAoB,IAAY,EAAA;QAAZ,IAAA,CAAA,IAAI,GAAJ,IAAI;IAAW;AAEnC;;AAEG;IACH,eAAe,GAAA;QACd,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC,YAAY;QAE/C,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,sBAAsB,EAAE,CAAC,KAAK,EAAE;AAC3G,QAAA,IAAI,CAAC,aAAa,CAAC,+BAA+B,GAAG,MAAM;AAC3D,QAAA,IAAI,CAAC,aAAa,CAAC,2BAA2B,GAAG,OAAO;QAExD,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,yBAAyB,EAAE;AAEhC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,IAAG;AAC1D,YAAA,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,GAAG,CAAC;AACvD,YAAA,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;AAC9B,YAAA,MAAM,GAAG;AACV,QAAA,CAAC,CAAC;QAEF,OAAO,IAAI,CAAC,YAAY;IACzB;AAEA;;;AAGG;AACH,IAAA,MAAM,SAAS,CAAC,SAAiB,EAAE,OAAe,EAAA;AACjD,QAAA,MAAM,IAAI,CAAC,eAAe,EAAE;QAC5B,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;AAEzB,QAAA,MAAM,SAAS,GAAG,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,OAAO,EAAE;AAE3C,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE;QAEtC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC;AACrD,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;IACjC;AAEA;;;AAGG;AACH,IAAA,MAAM,UAAU,CAAC,SAAiB,EAAE,OAAe,EAAA;QAClD,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;AAEzB,QAAA,MAAM,SAAS,GAAG,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,OAAO,EAAE;QAE3C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE;QAEvC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC;AACxD,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;IACpC;AAEA;;;AAGG;AACH,IAAA,MAAM,cAAc,GAAA;QACnB,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;AAEzB,QAAA,IAAI;AACH,YAAA,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;QAChC;gBAAU;AACT,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS;AAC9B,YAAA,IAAI,CAAC,YAAY,GAAG,SAAS;QAC9B;IACD;IAEQ,iBAAiB,GAAA;QACxB,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;QAEzB,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,GAAW,KAAI;AACzD,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;gBAClB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA0B;AACrD,gBAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;AACxC,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,GAAW,KAAI;AACpD,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;gBAClB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAkC;AAC7D,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;AACnC,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,GAAW,KAAI;AACvD,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;gBAClB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B;AACvD,gBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;AACtC,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;;AAGF,QAAA,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAY,KAAI,EAAE,CAAC,CAAC;IACvD;AAEA;;AAEG;IACK,yBAAyB,GAAA;QAChC,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE;AAEzB,QAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,YAAW;AAC3C,YAAA,IAAI;AACH,gBAAA,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,YAAY,EAAE;oBAC1C,MAAM,IAAI,CAAC,aAAc,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC;gBACvD;YACD;YAAE,OAAO,CAAC,EAAE;AACX,gBAAA,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,CAAC,CAAC;YAC9D;AACD,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAK;;AAE/B,YAAA,IAAI,CAAC,YAAY,GAAG,SAAS;AAC9B,QAAA,CAAC,CAAC;IACH;wGA1IY,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAA1B,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cADb,MAAM,EAAA,CAAA;;4FACnB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCSrB,+BAA+B,CAAA;AAwClC,IAAA,UAAA;AACA,IAAA,mBAAA;AACA,IAAA,OAAA;;AAxCD,IAAA,MAAM;AACN,IAAA,WAAW;AAEX,IAAA,YAAY;AACZ,IAAA,eAAe;;IAGN,eAAe,GAAG,IAAI,eAAe,CAAW;AAChE,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,cAAc,EAAE,CAAC;AACjB,QAAA,UAAU,EAAE,CAAC;AACb,QAAA,2BAA2B,EAAE,CAAC;AAC9B,QAAA,uBAAuB,EAAE,CAAC;AAC1B,KAAA,CAAC;AACO,IAAA,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IAEvC,wBAAwB,GAAG,IAAI,eAAe,CAAsC,IAAI,GAAG,EAAE,CAAC;AACtG,IAAA,eAAe,GAAG,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE;AAEtD,IAAA,kBAAkB,GAAG,IAAI,OAAO,EAA2B;AACnE,IAAA,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AAE9D;;AAEG;AACc,IAAA,mBAAmB,GAAG,IAAI,GAAG,EAAkD;AAC/E,IAAA,gBAAgB,GAAG,IAAI,GAAG,EAAkB;AAE7D;;AAEG;AACc,IAAA,iBAAiB,GAAG,IAAI,GAAG,EAA0C;AACrE,IAAA,iBAAiB,GAAG,IAAI,GAAG,EAAkB;;AAGtD,IAAA,YAAY;AAEpB,IAAA,WAAA,CACS,UAAkC,EAClC,mBAAwC,EACxC,OAAmC,EAAA;QAFnC,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QACnB,IAAA,CAAA,OAAO,GAAP,OAAO;;AAGf,QAAA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACpF;;;;IAMA,MAAM,cAAc,CAAC,MAAc,EAAA;AAClC,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC;AAElD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QACvD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,CAAC;QAE/C,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;AAE5C,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAC/B;IAEA,MAAM,gBAAgB,CAAC,MAAc,EAAA;AACpC,QAAA,IAAI,CAAC,MAAM;YAAE;AAEb,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;AAEvD,QAAA,IAAI,OAAO,IAAI,CAAC,EAAE;AACjB,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC;YAErC,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC;YAE7C,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;YAC/C,IAAI,IAAI,EAAE;gBACT,IAAI,CAAC,QAAQ,EAAE;AACf,gBAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC;YACtC;YACA;QACD;QAEA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,CAAC;IAChD;AAEA,IAAA,UAAU,CAAC,MAAc,EAAA;QACxB,IAAI,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;QAC7C,IAAI,CAAC,IAAI,EAAE;AACV,YAAA,IAAI,GAAG,IAAI,OAAO,EAAyB;YAC3C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;QACzC;AACA,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE;IAC3B;;;;IAMA,MAAM,gBAAgB,CAAC,KAAa,EAAA;AACnC,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC;AAEhD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;QACrD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,CAAC;QAE7C,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;AAE1C,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IAChC;IAEA,MAAM,kBAAkB,CAAC,KAAa,EAAA;AACrC,QAAA,IAAI,CAAC,KAAK;YAAE;AAEZ,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AAErD,QAAA,IAAI,OAAO,IAAI,CAAC,EAAE;AACjB,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;YAEnC,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC;YAE3C,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC;YAChD,IAAI,IAAI,EAAE;gBACT,IAAI,CAAC,QAAQ,EAAE;AACf,gBAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC;YACvC;YACA;QACD;QAEA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,CAAC;IAC9C;AAEA,IAAA,YAAY,CAAC,KAAa,EAAA;QACzB,IAAI,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC;QAC9C,IAAI,CAAC,IAAI,EAAE;AACV,YAAA,IAAI,GAAG,IAAI,OAAO,EAAiC;YACnD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC;QAC1C;AACA,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE;IAC3B;;;;IAMA,cAAc,CAAC,MAAqB,EAAE,WAAmB,EAAA;AACxD,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;QAE9B,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC,YAAY;AAE/C,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,YAAW;AAC/B,YAAA,IAAI;AACH,gBAAA,MAAM,IAAI,CAAC,0BAA0B,EAAE;YACxC;oBAAU;AACT,gBAAA,IAAI,CAAC,YAAY,GAAG,SAAS;YAC9B;QACD,CAAC,GAAG;QAEJ,OAAO,IAAI,CAAC,YAAY;IACzB;IAEA,eAAe,GAAA;QACd,OAAO,IAAI,CAAC,YAAY;IACzB;IAEA,mBAAmB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK;IAClC;IAEA,MAAM,oCAAoC,CAAC,iBAAsC,EAAA;QAChF,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC;AAEhI,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACtB,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE;QACpD;AAEA,QAAA,MAAM,UAAU,GAAiC;YAChD,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,YAAA,UAAU,EAAE,iBAAiB,EAAE,MAAM,IAAI,CAAC;YAC1C,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC;SACtH;AAED,QAAA,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AACvE,QAAA,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,KAAK;QAE7B,IAAI,CAAC,WAAW,CAAC;YAChB,KAAK,EAAE,IAAI,CAAC,YAAY;AACxB,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,cAAc,EAAE,CAAC;YACjB,UAAU,EAAE,UAAU,CAAC,UAAU;AACjC,YAAA,2BAA2B,EAAE,CAAC;YAC9B,uBAAuB,EAAE,UAAU,CAAC,uBAAuB;AAC3D,SAAA,CAAC;QAEF,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC;QAE5C,MAAM,aAAa,GAAuC,iBAAiB,CAAC,GAAG,CAAC,KAAK,KAAK;YACzF,eAAe,EAAE,GAAG,KAAK,CAAC,eAAe,CAAA,CAAA,EAAI,GAAG,CAAC,KAAK,CAAA,CAAE;YACxD,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;YAChD,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;YACxC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;AAC1B,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAEnF,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE;IACrD;AAEA,IAAA,MAAM,4BAA4B,CAAC,MAAqB,EAAE,WAAmB,EAAE,iBAAsC,EAAA;AACpH,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;AAEtE,QAAA,MAAM,UAAU,GAAiC;AAChD,YAAA,WAAW,EAAE,WAAW;AACxB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,uBAAuB,EAAE,CAAC;YAC1B,aAAa,EAAE,iBAAiB,CAAC,GAAG,CAAC,KAAK,KAAK;gBAC9C,eAAe,EAAE,KAAK,CAAC,eAAe;gBACtC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;gBAChD,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;gBACxC,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;AAC1B,aAAA,CAAC,CAAC;SACH;QAED,MAAM,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;IACzE;IAEA,MAAM,UAAU,CAAC,WAAmB,EAAA;AACnC,QAAA,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AACrF,QAAA,OAAO,MAAM;IACd;AAEA,IAAA,MAAM,aAAa,GAAA;AAClB,QAAA,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,CAAC;AAC7E,QAAA,OAAO,MAAM;IACd;IAEA,MAAM,YAAY,CAAC,WAAmB,EAAA;AACrC,QAAA,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AACvF,QAAA,OAAO,MAAM;IACd;IAEA,MAAM,WAAW,CAAC,OAA0B,EAAA;AAC3C,QAAA,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAClF,QAAA,OAAO,MAAM;IACd;AAEA,IAAA,MAAM,oBAAoB,GAAA;AACzB,QAAA,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,CAAC;AACnF,QAAA,OAAO,KAAK;IACb;IAEA,UAAU,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,GAAG,SAAS;QAC7B,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,2BAA2B,EAAE,CAAC,EAAE,uBAAuB,EAAE,CAAC,EAAE,CAAC;QACrI,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;IAC9C;AAEQ,IAAA,MAAM,0BAA0B,GAAA;QACvC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE;QAEvC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhG,IAAI,CAAC,MAAM,EAAE;AACZ,YAAA,IAAI,CAAC,YAAY,GAAG,SAAS;YAC7B,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,2BAA2B,EAAE,CAAC,EAAE,uBAAuB,EAAE,CAAC,EAAE,CAAC;YAClI,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;YAC7C;QACD;AAEA,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK;QAEhC,IAAI,CAAC,WAAW,CAAC;YAChB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAG,MAAM,CAAC,UAAU,EAAE,WAAW,EAAuB,IAAI,SAAS;AAC3E,YAAA,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,CAAC;AAC1C,YAAA,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC;AAClC,YAAA,2BAA2B,EAAE,MAAM,CAAC,2BAA2B,IAAI,CAAC;AACpE,YAAA,uBAAuB,EAAE,MAAM,CAAC,uBAAuB,IAAI,CAAC;AAC5D,SAAA,CAAC;AAEF,QAAA,MAAM,UAAU,GAA2C,MAAM,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5H,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkC;AAErD,QAAA,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;YAC3B,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,UAAU,KAAK,QAAQ,EAAE;AAC/C,gBAAA,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE;oBACtB,WAAW,EAAE,CAAC,CAAC,WAAW;AAC1B,oBAAA,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,IAAI,IAAI;AAC5C,oBAAA,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,SAAS;oBACvC,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ;AACpB,oBAAA,aAAa,EAAE,CAAC,CAAC,aAAa,IAAI,IAAI;AACtC,oBAAA,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI;AACxB,oBAAA,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,IAAI;AAC5B,oBAAA,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI;AAC1B,iBAAA,CAAC;YACH;QACD;AAEA,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC;QAEvC,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC;IACxC;IAEQ,MAAM,cAAc,CAAC,KAAa,EAAA;QACzC,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,KAAK,KAAK,EAAE;AAC3D,YAAA,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC;AAC1D,YAAA,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC;QAChE;AAEA,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;QAE5B,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;QAC1C,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC;IAChD;AAEQ,IAAA,kBAAkB,CAAC,MAA6B,EAAA;;AAEvD,QAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AAClB,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;QACxD;IACD;AAEQ,IAAA,aAAa,CAAC,MAAqC,EAAA;;AAE1D,QAAA,IAAI,MAAM,CAAC,KAAK,EAAE;AACjB,YAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;QACzD;;QAGA,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY;YAAE;AAE9D,QAAA,IAAI,MAAM,CAAC,WAAW,EAAE;AACvB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK;AACnD,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;AAE7B,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,QAAQ,EAAE;AAC5D,gBAAA,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE;oBAC5B,WAAW,EAAE,MAAM,CAAC,WAAW;AAC/B,oBAAA,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,IAAI;oBAEjD,cAAc,EAAE,MAAM,CAAC,cAAc;AACrC,oBAAA,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI;oBAE3B,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,UAAU,EAAE,MAAM,CAAC,aAAa;oBAEhC,QAAQ,EAAE,MAAM,CAAC,QAAQ;AACzB,oBAAA,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,IAAI;AAE3C,oBAAA,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI;AAC7B,oBAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;AACjC,oBAAA,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;AAC/B,iBAAA,CAAC;YACH;iBAAO;AACN,gBAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;YAChC;AAEA,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;QACzC;AAEA,QAAA,IAAI,OAAO,MAAM,CAAC,iBAAiB,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,EAAE;YAC7F,IAAI,CAAC,WAAW,CAAC;gBAChB,KAAK,EAAE,MAAM,CAAC,KAAK;AACnB,gBAAA,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,WAAW,EAAsB;gBAC/D,cAAc,EAAE,MAAM,CAAC,iBAAiB;gBACxC,UAAU,EAAE,MAAM,CAAC,aAAa;gBAChC,2BAA2B,EAAE,MAAM,CAAC,8BAA8B;gBAClE,uBAAuB,EAAE,MAAM,CAAC,0BAA0B;AAC1D,aAAA,CAAC;QACH;QAEA,IAAI,MAAM,CAAC,aAAa,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE;YACxD,IAAI,CAAC,WAAW,CAAC;AAChB,gBAAA,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK;AACvC,gBAAA,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM;AACzC,gBAAA,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,cAAc;AACzD,gBAAA,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU;AACjD,gBAAA,2BAA2B,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,2BAA2B;AACnF,gBAAA,uBAAuB,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,uBAAuB;AAC3E,aAAA,CAAC;QACH;aAAO,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;AAC3D,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QACvE;aAAO,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;AAC3D,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QACvE;IACD;AAEQ,IAAA,gBAAgB,CAAC,MAA+B,EAAA;AACvD,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;IACrC;AAEQ,IAAA,WAAW,CAAC,KAAe,EAAA;AAClC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YACzB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,2BAA2B,EAAE,KAAK,CAAC,2BAA2B;YAC9D,uBAAuB,EAAE,KAAK,CAAC,uBAAuB;AACtD,SAAA,CAAC;IACH;wGAzaY,+BAA+B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAW,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,0BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAA/B,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,+BAA+B,cADlB,MAAM,EAAA,CAAA;;4FACnB,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAD3C,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;AChBlC;;ACAA;;AAEG;;;;"}
|