@masterkeymaterial/ui 1.0.0 → 1.0.3

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":"masterkeymaterial-ui.mjs","sources":["../../../projects/master-key-material/src/util/log.ts","../../../projects/master-key-material/src/util/util.ts","../../../projects/master-key-material/src/fields/Formulario/Formulario.ts","../../../projects/master-key-material/src/fields/Base/BaseFieldsValues/BaseFieldsValues.ts","../../../projects/master-key-material/src/fields/Base/BaseFieldsForm/BaseFieldsForm.component.ts","../../../projects/master-key-material/src/elements/ui-icon/ui-icon.ts","../../../projects/master-key-material/src/elements/ui-button/ui-button.ts","../../../projects/master-key-material/src/elements/ui-button/ui-button.html","../../../projects/master-key-material/src/elements/ui-chip/ui-chip.ts","../../../projects/master-key-material/src/elements/ui-chip/ui-chip.html","../../../projects/master-key-material/src/elements/ui-drop-zone/ui-drop-zone.ts","../../../projects/master-key-material/src/elements/ui-drop-zone/ui-drop-zone.html","../../../projects/master-key-material/src/elements/ui-file-list/ui-file-list.ts","../../../projects/master-key-material/src/elements/ui-file-list/ui-file-list.html","../../../projects/master-key-material/src/elements/ui-micro-gallery/ui-file-preview/ui-file-preview.ts","../../../projects/master-key-material/src/elements/ui-micro-gallery/ui-file-preview/ui-file-preview.html","../../../projects/master-key-material/src/elements/ui-micro-gallery/ui-micro-gallery.ts","../../../projects/master-key-material/src/elements/ui-micro-gallery/ui-micro-gallery.html","../../../projects/master-key-material/src/elements/ui-arquivos/ui-arquivos.ts","../../../projects/master-key-material/src/elements/ui-arquivos/ui-arquivos.html","../../../projects/master-key-material/src/elements/overlay/overlay.util.ts","../../../projects/master-key-material/src/elements/overlay/overlay-position.util.ts","../../../projects/master-key-material/src/elements/ui-select/ui-select.ts","../../../projects/master-key-material/src/elements/ui-select/ui-select.html","../../../projects/master-key-material/src/elements/ui-procurar/ui-procurar.ts","../../../projects/master-key-material/src/elements/ui-procurar/ui-procurar.html","../../../projects/master-key-material/src/elements/ui-progress/ui-progress.ts","../../../projects/master-key-material/src/elements/ui-progress/ui-progress.html","../../../projects/master-key-material/src/elements/ui-slide/ui-slide.ts","../../../projects/master-key-material/src/elements/ui-slide/ui-slide.html","../../../projects/master-key-material/src/elements/ui-check-box/ui-check-box.ts","../../../projects/master-key-material/src/elements/ui-check-box/ui-check-box.html","../../../projects/master-key-material/src/elements/ui-list-errors/ui-list-errors.ts","../../../projects/master-key-material/src/elements/ui-list-errors/ui-list-errors.html","../../../projects/master-key-material/src/elements/ui-loading/ui-loading.ts","../../../projects/master-key-material/src/elements/ui-loading/ui-loading.html","../../../projects/master-key-material/src/elements/ui-menu/ui-menu.ts","../../../projects/master-key-material/src/elements/ui-menu/ui-menu.html","../../../projects/master-key-material/src/elements/ui-divider/ui-divider.ts","../../../projects/master-key-material/src/elements/ui-divider/ui-divider.html","../../../projects/master-key-material/src/elements/ui-badge/ui-badge.ts","../../../projects/master-key-material/src/elements/ui-badge/ui-badge.html","../../../projects/master-key-material/src/elements/ui-card/ui-card.ts","../../../projects/master-key-material/src/elements/ui-card/ui-card.html","../../../projects/master-key-material/src/elements/ui-avatar/ui-avatar.ts","../../../projects/master-key-material/src/elements/ui-avatar/ui-avatar.html","../../../projects/master-key-material/src/elements/ui-tag/ui-tag.ts","../../../projects/master-key-material/src/elements/ui-tag/ui-tag.html","../../../projects/master-key-material/src/elements/ui-empty-state/ui-empty-state.ts","../../../projects/master-key-material/src/elements/ui-empty-state/ui-empty-state.html","../../../projects/master-key-material/src/elements/ui-tabs/ui-tabs.ts","../../../projects/master-key-material/src/elements/ui-tabs/ui-tabs.html","../../../projects/master-key-material/src/elements/ui-accordion/ui-accordion.ts","../../../projects/master-key-material/src/elements/ui-accordion/ui-accordion.html","../../../projects/master-key-material/src/elements/ui-accordion/ui-accordion-item/ui-accordion-item.ts","../../../projects/master-key-material/src/elements/ui-accordion/ui-accordion-item/ui-accordion-item.html","../../../projects/master-key-material/src/elements/ui-breadcrumb/ui-breadcrumb.ts","../../../projects/master-key-material/src/elements/ui-breadcrumb/ui-breadcrumb.html","../../../projects/master-key-material/src/elements/ui-stepper/ui-stepper.ts","../../../projects/master-key-material/src/elements/ui-stepper/ui-stepper.html","../../../projects/master-key-material/src/elements/ui-pagination/ui-pagination.ts","../../../projects/master-key-material/src/elements/ui-pagination/ui-pagination.html","../../../projects/master-key-material/src/elements/ui-tooltip/ui-tooltip.ts","../../../projects/master-key-material/src/elements/ui-toast/ui-toast.service.ts","../../../projects/master-key-material/src/elements/ui-toast/ui-toast-container.ts","../../../projects/master-key-material/src/elements/ui-toast/ui-toast-container.html","../../../projects/master-key-material/src/elements/ui-modal/ui-modal-box.ts","../../../projects/master-key-material/src/elements/ui-modal/ui-modal-box.html","../../../projects/master-key-material/src/elements/ui-modal/ui-modal.service.ts","../../../projects/master-key-material/src/elements/ui-modal/ui-modal-outlet.ts","../../../projects/master-key-material/src/elements/ui-drawer/ui-drawer.ts","../../../projects/master-key-material/src/elements/ui-drawer/ui-drawer.html","../../../projects/master-key-material/src/elements/ui-rating/ui-rating.ts","../../../projects/master-key-material/src/elements/ui-rating/ui-rating.html","../../../projects/master-key-material/src/elements/ui-tree/ui-tree.ts","../../../projects/master-key-material/src/elements/ui-tree/ui-tree.html","../../../projects/master-key-material/src/elements/ui-timeline/ui-timeline.ts","../../../projects/master-key-material/src/elements/ui-timeline/ui-timeline.html","../../../projects/master-key-material/src/fields/autocomplete/autocomplete.ts","../../../projects/master-key-material/src/fields/autocomplete/autocomplete.html","../../../projects/master-key-material/src/fields/button/button.ts","../../../projects/master-key-material/src/fields/button/button.html","../../../projects/master-key-material/src/fields/checkbox/checkbox.ts","../../../projects/master-key-material/src/fields/checkbox/checkbox.html","../../../projects/master-key-material/src/fields/color/CirculoColorido/circulocolorido.ts","../../../projects/master-key-material/src/fields/color/CirculoColorido/circulocolorido.html","../../../projects/master-key-material/src/fields/color/color.ts","../../../projects/master-key-material/src/fields/color/color.html","../../../projects/master-key-material/src/fields/date/date.ts","../../../projects/master-key-material/src/fields/date/date.html","../../../projects/master-key-material/src/fields/datetime/datetime.ts","../../../projects/master-key-material/src/fields/datetime/datetime.html","../../../projects/master-key-material/src/util/JsonColorido.pipe.ts","../../../projects/master-key-material/src/fields/display/display.ts","../../../projects/master-key-material/src/fields/display/display.html","../../../projects/master-key-material/src/fields/editor/editor.ts","../../../projects/master-key-material/src/fields/editor/editor.html","../../../projects/master-key-material/src/fields/email/email.ts","../../../projects/master-key-material/src/fields/email/email.html","../../../projects/master-key-material/src/fields/hidden/hidden.ts","../../../projects/master-key-material/src/fields/hidden/hidden.html","../../../projects/master-key-material/src/fields/icon/icon.ts","../../../projects/master-key-material/src/fields/icon/icon.html","../../../projects/master-key-material/src/fields/multifactor/multifactor.ts","../../../projects/master-key-material/src/fields/multifactor/multifactor.html","../../../projects/master-key-material/src/fields/multitext/multitext.ts","../../../projects/master-key-material/src/fields/multitext/multitext.html","../../../projects/master-key-material/src/fields/number/number.ts","../../../projects/master-key-material/src/fields/number/number.html","../../../projects/master-key-material/src/fields/password/password.ts","../../../projects/master-key-material/src/fields/password/password.html","../../../projects/master-key-material/src/fields/search/search.ts","../../../projects/master-key-material/src/fields/search/search.html","../../../projects/master-key-material/src/fields/select/select.ts","../../../projects/master-key-material/src/fields/select/select.html","../../../projects/master-key-material/src/fields/slide/slide.ts","../../../projects/master-key-material/src/fields/slide/slide.html","../../../projects/master-key-material/src/fields/text/text.ts","../../../projects/master-key-material/src/fields/text/text.html","../../../projects/master-key-material/src/fields/upload/upload.ts","../../../projects/master-key-material/src/fields/upload/upload.html","../../../projects/master-key-material/src/fields/time/time.ts","../../../projects/master-key-material/src/fields/time/time.html","../../../projects/master-key-material/src/fields/textarea/textarea.ts","../../../projects/master-key-material/src/fields/textarea/textarea.html","../../../projects/master-key-material/src/fields/multikv/multikv.ts","../../../projects/master-key-material/src/fields/multikv/multikv.html","../../../projects/master-key-material/src/fields/generic/generic.ts","../../../projects/master-key-material/src/fields/generic/generic.html","../../../projects/master-key-material/src/util/ClassOf.pipe.ts","../../../projects/master-key-material/src/fields/Formulario/form-controls/form-controls.ts","../../../projects/master-key-material/src/fields/Formulario/form-controls/form-controls.html","../../../projects/master-key-material/src/fields/Formulario/form-filter/form-filter.ts","../../../projects/master-key-material/src/fields/Formulario/form-filter/form-filter.html","../../../projects/master-key-material/src/fields/Formulario/form-fase/form-fase.ts","../../../projects/master-key-material/src/fields/Formulario/form-fase/form-fase.html","../../../projects/master-key-material/src/fields/Formulario/form-action/form-action.ts","../../../projects/master-key-material/src/fields/Formulario/form-action/form-action.html","../../../projects/master-key-material/src/fields/Formulario/form-no-action/form-no-action.ts","../../../projects/master-key-material/src/fields/Formulario/form-no-action/form-no-action.html","../../../projects/master-key-material/src/fields/Formulario/formated-values/formated-values.ts","../../../projects/master-key-material/src/fields/Formulario/formated-values/formated-values.html","../../../projects/master-key-material/src/fields/Formulario/single-values/single-values.ts","../../../projects/master-key-material/src/fields/Formulario/single-values/single-values.html","../../../projects/master-key-material/src/mk-grid/mk-grid.types.ts","../../../projects/master-key-material/src/mk-grid/grid-cell/grid-cell.service.ts","../../../projects/master-key-material/src/mk-grid/grid-cell-handler/grid-cell-handler.ts","../../../projects/master-key-material/src/mk-grid/grid-cell-handler/grid-cell-handler.html","../../../projects/master-key-material/src/mk-grid/grid-cell-actions/grid-cell-actions.ts","../../../projects/master-key-material/src/mk-grid/grid-cell-actions/grid-cell-actions.html","../../../projects/master-key-material/src/mk-grid/grid-row-renderer/grid-row-renderer.ts","../../../projects/master-key-material/src/mk-grid/grid-row-renderer/grid-row-renderer.html","../../../projects/master-key-material/src/mk-grid/grid-header-row/grid-header-row.ts","../../../projects/master-key-material/src/mk-grid/grid-header-row/grid-header-row.html","../../../projects/master-key-material/src/mk-grid/grid-pagination/grid-pagination.ts","../../../projects/master-key-material/src/mk-grid/grid-pagination/grid-pagination.html","../../../projects/master-key-material/src/mk-grid/grid-filter-bar/grid-filter-bar.ts","../../../projects/master-key-material/src/mk-grid/grid-filter-bar/grid-filter-bar.html","../../../projects/master-key-material/src/mk-grid/grid-empty-list/grid-empty-list.ts","../../../projects/master-key-material/src/mk-grid/grid-empty-list/grid-empty-list.html","../../../projects/master-key-material/src/mk-grid/grid-loading/grid-loading.ts","../../../projects/master-key-material/src/mk-grid/grid-loading/grid-loading.html","../../../projects/master-key-material/src/mk-grid/mk-grid.ts","../../../projects/master-key-material/src/mk-grid/mk-grid.html","../../../projects/master-key-material/src/mk-grid/grid-cell/grid-cell.ts","../../../projects/master-key-material/src/public-api.ts","../../../projects/master-key-material/src/masterkeymaterial-ui.ts"],"sourcesContent":["\n////////////////////////////////////\n// CONSOLES: LOG - WARN - ERR ...\n////////////////////////////////////\n// LibUtil.loglevel: 1,2,3 => Bigger will see more\n\nlet loglevel = 0;\n\nexport const setLogLevel = (level: number) => {\n\tloglevel = level;\n}\n\nexport const LOG = (level: number, ...attr: any) => {\n\tif ((loglevel ?? 0) >= level) {\n\t\treturn console.log(...attr);\n\t}\n}\n\n// export const WARN = (level: number, ...attr: any) => {\n// if ((loglevel ?? 0) >= level) {\n// return console.warn(...attr);\n// }\n// }\n\n// export const ERR = (level: number, ...attr: any) => {\n// if ((loglevel ?? 0) >= level) {\n// return console.error(...attr);\n// }\n// }\n\nexport const G_START = (level: number, ...attr: any) => {\n\tif ((loglevel ?? 0) >= level) {\n\t\treturn console.groupCollapsed(...attr);\n\t}\n}\n\nexport const G_START_OPEN = (level: number, ...attr: any) => {\n\tif ((loglevel ?? 0) >= level) {\n\t\treturn console.group(...attr);\n\t}\n}\n\nexport const G_END = (level: number, ...attr: any) => {\n\tif ((loglevel ?? 0) >= level) {\n\t\treturn console.groupEnd();\n\t}\n}\n\n// LOG COLAPSADO\nexport const LOGC = (level: number, title: string, ...attr: any) => {\n\tG_START(level, title);\n\tLOG(level, ...attr);\n\tG_END(level);\n}","import { WritableSignal } from \"@angular/core\";\nimport { IFieldComponent } from \"../fields/Formulario/Formulario\";\nimport { G_END, G_START, LOG } from \"./log\";\n\nexport class LibUtil {\n\n static formConfigs: Partial<IFieldComponent<any>> = {};\n\n static classof = (o: any): IClassOf => {\n let nomeClasse = Object.prototype.toString.call(o).slice(8, -1).toLowerCase();\n if (nomeClasse == \"number\") {\n if (o.toString() == \"NaN\") {\n nomeClasse = \"nan\";\n }\n }\n return nomeClasse as IClassOf;\n };\n\n static wait = (ms: number) => {\n // Essa mecânica usa um setTimeout. A mecânica do Queue não foi implementada\n return new Promise(r => setTimeout(r, ms))\n };\n\n static clonar = (i: any) => {\n // Clona com a técnica de montar e desmontar string.\n // Não funciona para objetos com serviços (Date, File, Map, Set, etc)\n let parsed = null;\n try {\n let stringified = JSON.stringify(i);\n if (stringified == null) return null;\n if (stringified == \"\") return \"\";\n parsed = JSON.parse(stringified);\n if (parsed == null) return null;\n } catch (e) {\n return null;\n }\n return parsed;\n };\n\n static limparObject = (o: any) => {\n // Converte (Object) Limpar Nulos e Vazios\n if (LibUtil.classof(o) == \"object\") {\n for (let propName in o) {\n if (\n o[propName as keyof typeof o] === null ||\n o[propName as keyof typeof o] === undefined ||\n o[propName as keyof typeof o] === \"\" ||\n o[propName as keyof typeof o] === \"undefined\"\n ) {\n delete o[propName as keyof typeof o];\n }\n }\n }\n return o;\n };\n\n static mascarar = (texto: any, mascara: any): string | undefined => {\n // Informando uma máscara e um texto, retorna dado mascarado.\n // Mascaras: 0=Numero, A=Letra, Outros repete.\n if (LibUtil.classof(mascara) != \"string\") {\n // Se passar uma funcao para a mascara, Executa a função enviando o texto e deve retornar uma string da mascara para esse texto.\n if (LibUtil.classof(mascara) == \"function\") {\n mascara = mascara(texto); // Sobreextreve a mascara a ser executada pelo retorno da função.\n }\n }\n if (mascara) {\n if (texto) {\n if (LibUtil.classof(texto) != \"string\") texto = texto?.toString();\n if (LibUtil.classof(mascara) != \"string\") mascara = mascara?.toString(); // Se a chegar até aqui e ainda não for string\n let ms = [...LibUtil.clonar(mascara)];\n let ss = [...LibUtil.clonar(texto)];\n // this.l(\"ss: \", ss);\n let ts: any = [];\n let pm = 0;\n ss.forEach(s => {\n let t = null;\n if (/[0-9]/.test(s)) {\n t = \"0\";\n } else if (/[a-zA-Z]/.test(s)) {\n t = \"A\";\n } else {\n t = \" \";\n }\n ts.push(t);\n pm++;\n });\n // this.l(\"ts: \", ts);\n // this.l(\"ms: \", ms);\n let r: any = [];\n for (let tp = 0, mp = 0; (tp < ts.length) && (mp < ms.length); tp++, mp++) {\n if (((ms[mp] === \"0\" || ms[mp] === \"A\") && (ms[mp] == ts[tp]))\n || (ms[mp] === \"S\" && (ts[tp] === \"A\" || ts[tp] === \"0\"))) {\n // FORMATO IGUAL.\n r.push(ss[tp]);\n } else {\n // MESMO CARACTER\n if (ss[tp] === ms[mp]) {\n r.push(ss[tp]);\n } else {\n // this.l(\"> \", ss[tp], \" vs \", ms[mp])\n // Mágica: Coloca o especial que o usuário não colocou.\n if (ms[mp] != \"0\" && ms[mp] != \"A\" && ms[mp] != \"S\") {\n r.push(ms[mp]);\n tp--;\n } else {\n mp--;\n }\n }\n }\n }\n return r.join(\"\");\n }\n } else {\n console.log(\"❌ Mascarar Requer Texto: \", texto, \" e Mascara: \", mascara);\n }\n return undefined;\n };\n\n static tryParseJSON(val: any): any[] | null {\n try {\n return JSON.parse(val);\n } catch (e) {\n return null;\n }\n }\n\n static contem = (strMaior: string, strMenor: string): boolean => {\n // Comparardor de string CONTEM\n strMaior = LibUtil.removeAcentos(strMaior).toLowerCase();\n strMenor = LibUtil.removeAcentos(strMenor).toLowerCase();\n return (strMaior.includes(strMenor));\n };\n\n static removeAcentos = (s: string): string => {\n if (s == null) return \"\";\n // Remove acentos e depois chama Apenas Números e Letras.\n s = s.toString();\n let r = \"\";\n let sS = \"áàãâäéèêëíìîïóòõôöúùûüçÁÀÃÂÄÉÈÊËÍÌÎÏÓÒÕÖÔÚÙÛÜÇ\";\n let sN = \"aaaaaeeeeiiiiooooouuuucAAAAAEEEEIIIIOOOOOUUUUC\";\n for (let p = 0; p < s.length; p++) {\n let pSS = sS.indexOf(s.charAt(p)); // <= Procura\n if (pSS != -1) {\n r += sN.charAt(pSS); // Substitui mesma posicao\n } else {\n r += s.charAt(p);\n }\n }\n return r;\n };\n\n static fileReader = async (arquivo: File, eventos?: Function): Promise<string | null> => {\n return new Promise((r) => {\n let leitor = new FileReader();\n let gatilhos = (event: any) => {\n if (event.type == \"error\") {\n r(null);\n }\n else if (event.type == \"loadend\") {\n // Quando terminar, o result já é a string completa.\n let buffer = leitor.result as string;\n r(buffer);\n }\n if (eventos)\n eventos(event, Math.trunc((event.loaded / event.total) * 100));\n }\n if (arquivo) {\n if (arquivo.name != \"\") {\n leitor.addEventListener(\"loadstart\", gatilhos);\n leitor.addEventListener(\"progress\", gatilhos);\n leitor.addEventListener(\"error\", gatilhos);\n leitor.addEventListener(\"abort\", gatilhos);\n leitor.addEventListener(\"load\", gatilhos);\n leitor.addEventListener(\"loadend\", gatilhos);\n leitor.readAsDataURL(arquivo);\n }\n else {\n LOG(1, \"⚠️ fileReader() - Nome do arquivo necessário: \", arquivo.name);\n r(null);\n }\n } else {\n LOG(1, \"⚠️ fileReader() - Arquivo Nulo: \", arquivo);\n r(null);\n }\n });\n };\n\n static removeHtmlTags(texto: string): string {\n return texto.replace(/<\\/?[^>]+(>|$)/g, \"\");\n }\n\n // Salva a posição do cursor\n static saveCursorPosition(element: any, plus: number = 0): { start: number; end: number, plus: number } | null {\n const selection = window.getSelection();\n if (!selection || selection.rangeCount === 0) return null;\n const range = selection.getRangeAt(0);\n const preCaretRange = range.cloneRange();\n if (!element) return null;\n preCaretRange.selectNodeContents(element);\n preCaretRange.setEnd(range.startContainer, range.startOffset);\n const start = preCaretRange.toString().length;\n return {\n start: start,\n end: start + range.toString().length,\n plus\n };\n }\n\n // Restaura a posição do cursor\n static restoreCursorPosition(element: any, position: { start: number; end: number, plus: number }) {\n if (!element) return;\n const selection = window.getSelection();\n if (!selection) return;\n let charIndex = 0;\n const range = document.createRange();\n range.setStart(element, 0);\n range.collapse(true);\n const nodeIterator = (node: Node): boolean => {\n if (node.nodeType === Node.TEXT_NODE) {\n const textNode = node as Text;\n const nextCharIndex = charIndex + (textNode.length || 0);\n if (position.start >= charIndex && position.start <= nextCharIndex) {\n range.setStart(textNode, position.start - charIndex);\n range.setEnd(textNode, position.start - charIndex);\n return true;\n }\n charIndex = nextCharIndex;\n } else {\n for (let i = 0; i < node.childNodes.length; i++) {\n if (nodeIterator(node.childNodes[i])) {\n return true;\n }\n }\n }\n return false;\n };\n nodeIterator(element);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n\n static formatJson(texto: string, colorir: boolean = false): string {\n let retorno = \"\";\n try {\n retorno = JSON.stringify(texto, null, 2);\n } catch (e) {\n LOG(1, \"⚠️ JSON Inválido: Não foi possível formatar o JSON.\");\n return texto;\n }\n if (!retorno) {\n console.log(\"⚠️ JSON Vazio: O JSON é vazio ou nulo.\", texto);\n return texto;\n };\n\n if (colorir) {\n let keyNameStart: string = '<span class=\"json-key\">';\n let nullStart: string = '<span class=\"json-null\">';\n let numberStart: string = '<span class=\"json-number\">';\n let booleanStart: string = '<span class=\"json-boolean\">';\n let stringStart: string = '<span class=\"json-string\">';\n let spanEnd: string = '</span>';\n // Identificar a posição das chaves do json e adicionar as tags de span\n retorno = retorno.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n retorno = retorno.replace(/(\"(\\\\u[a-zA-Z0-9]{4}|\\\\[^u]|[^\\\\\"])*\"(\\s*:)?|\\b(true|false|null)\\b|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)/g, function (match) {\n let cls = nullStart;\n if (/^\"/.test(match)) {\n if (/:$/.test(match)) {\n cls = keyNameStart;\n } else {\n cls = stringStart;\n }\n } else if (/true|false/.test(match)) {\n cls = booleanStart;\n } else if (/null/.test(match)) {\n cls = nullStart;\n } else if (/undefined/.test(match)) {\n cls = nullStart;\n } else {\n cls = numberStart;\n }\n return cls + match + spanEnd;\n });\n }\n\n // Remove aspas duplas das chaves (mantém aspas dos valores string)\n retorno = retorno.replace(/\"([^\"]+)\"(\\s*):/g, '$1$2:');\n\n return retorno;\n }\n\n static async copy(content: string): Promise<void> {\n try {\n await this.copyHtml(content);\n } catch (erro) {\n LOG(1, \"❌ %cFalha ao copiar como HTML, tentando como texto puro\", \"color:red;\", erro);\n this.copyPlainText(content);\n }\n }\n\n private static copyPlainText(text: string) {\n const elemento = document.createElement('textarea');\n elemento.style.position = 'fixed';\n elemento.style.opacity = '0';\n elemento.style.whiteSpace = 'pre';\n elemento.value = text;\n document.body.appendChild(elemento);\n elemento.select();\n elemento.setSelectionRange(0, 99999);\n const result = document.execCommand('copy');\n if (!result) {\n LOG(1, \"❌ Falha ao copiar via execCommand.\");\n }\n LOG(1, \"🫤! Cópia via execCommand: \", text);\n elemento.remove();\n }\n\n private static async copyHtml(html?: string) {\n if (!html) {\n html = \"\";\n LOG(1, \"❌ %cNão foi possível copiar.\", \"color:red;\");\n return;\n }\n try {\n // Remove tags HTML para gerar a versão texto puro\n const plainText = this.stripHtmlTags(html);\n if (navigator.clipboard && window.isSecureContext) {\n const clipboardItem = new ClipboardItem({\n 'text/plain': new Blob([plainText], { type: 'text/plain' }),\n 'text/html': new Blob([html], { type: 'text/html' })\n });\n await navigator.clipboard.write([clipboardItem]);\n console.groupCollapsed(\"✅ %cCopiado para a área de transferência.\", \"color:aquamarine;\");\n LOG(1, plainText);\n console.groupEnd();\n return;\n }\n\n // Fallback: copia HTML usando execCommand\n const elemento = document.createElement('div');\n elemento.style.position = 'fixed';\n elemento.style.opacity = '0';\n elemento.innerHTML = html;\n document.body.appendChild(elemento);\n\n const range = document.createRange();\n range.selectNodeContents(elemento);\n const selection = window.getSelection();\n selection?.removeAllRanges();\n selection?.addRange(range);\n\n document.execCommand('copy');\n console.groupCollapsed(\"➡️ %cCopiado para a área de transferência. (execCommand)\", \"color:lightblue;\");\n LOG(1, plainText);\n console.groupEnd();\n elemento.remove();\n } catch (erro) {\n LOG(1, \"❌ Erro ao copiar:\", erro);\n throw erro;\n }\n }\n\n private static stripHtmlTags(html: string): string {\n // Cria um elemento temporário para extrair texto puro\n const temp = document.createElement('div');\n temp.innerHTML = html;\n // Substitui <br> por quebras de linha antes de extrair o texto\n temp.innerHTML = temp.innerHTML.replace(/<br\\s*\\/?>/gi, '\\n');\n return temp.textContent || temp.innerText || '';\n }\n\n static apenasNumeros = (s: string | number = \"\"): string => {\n if (s == null) return \"\";\n // Ignora qualquer outro caracter além de Numeros\n return s.toString().replace(/(?![0-9])./g, \"\");\n }\n\n static frequencia = (array: any): any => {\n // Retorna o total de encontro na array.\n // Quando é objeto converte pra string pra poder contar\n let f: any = {};\n for (let e of array) {\n let s = e;\n if (LibUtil.classof(e) == \"object\") s = JSON.stringify(e);\n f[s] ? f[s]++ : (f[s] = 1);\n }\n return f;\n }\n\n static formats: IUtilFormatters = {\n cpf: {\n mask: \"000.000.000-00\",\n regex: \"^([0-9]{3}([\\.]?[0-9]{3}){2}[-]?[0-9]{2})$\",\n validate: (cpf: any) => {\n let m1 = [10, 9, 8, 7, 6, 5, 4, 3, 2];\n let m2 = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2];\n if (!cpf) { return false; }\n cpf = LibUtil.apenasNumeros(cpf);\n if (cpf.length != 11) { return false; }\n let temp = cpf.slice(0, 9);\n let c = 0;\n for (let i = 0; i < 9; i++) { c += Number(temp.charAt(i)) * m1[i]; }\n let r = c % 11;\n (r < 2) ? r = 0 : r = 11 - r;\n temp += r.toString();\n c = 0;\n for (let i = 0; i < 10; i++) { c += Number(temp.charAt(i)) * m2[i]; }\n r = c % 11;\n (r < 2) ? r = 0 : r = 11 - r;\n if (cpf.charAt(10) != r.toString()) {\n return false;\n };\n let char0 = cpf.charAt(0);\n let repChar0 = LibUtil.frequencia(cpf)[char0];\n if (repChar0 >= 11) {\n return false;\n }\n return true;\n }\n },\n cnpj: {\n mask: \"00.000.000/0000-00\",\n regex: \"^([0-9]{2}([\\.]?[0-9]{3}){2}[\\/]?[0-9]{4}[-]?[0-9]{2})$\",\n validate: (cnpj: any) => {\n let m1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n let m2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n if (!cnpj) { return false; }\n cnpj = LibUtil.apenasNumeros(cnpj);\n if (cnpj.length != 14) { return false; }\n let temp = cnpj.slice(0, 12);\n let c = 0;\n for (let i = 0; i < 12; i++) { c += Number(temp.charAt(i)) * m1[i]; }\n let r = (c % 11);\n (r < 2) ? r = 0 : r = 11 - r;\n temp += r.toString();\n c = 0;\n for (let i = 0; i < 13; i++) { c += Number(temp.charAt(i)) * m2[i]; }\n r = (c % 11);\n (r < 2) ? r = 0 : r = 11 - r;\n return cnpj.charAt(13) == r.toString();\n }\n },\n cpf_cnpj: {\n mask: (str: string) => {\n if (LibUtil.apenasNumeros(str).length <= 11) {\n return \"000.000.000-00\"\n } else {\n return \"00.000.000/0000-00\"\n };\n },\n regex: \"^([0-9]{2}([\\.]?[0-9]{3}){2}[\\/]?[0-9]{4}[-]?[0-9]{2})|([0-9]{3}([\\.]?[0-9]{3}){2}[-]?[0-9]{2})$\",\n validate: (cpf_cnpj: any) => {\n if (LibUtil.apenasNumeros(cpf_cnpj).length <= 11) {\n return LibUtil.formats.cpf.validate?.(cpf_cnpj) ?? false;\n } else {\n return LibUtil.formats.cnpj.validate?.(cpf_cnpj) ?? false;\n };\n }\n },\n cnh: {\n mask: \"00000000000\",\n regex: \"^([0-9]{11})$\",\n validate: (cnh: any) => {\n if (!cnh) { return false; }\n cnh = LibUtil.apenasNumeros(cnh);\n if (cnh.length != 11) { return false; }\n return true;\n },\n },\n pis: {\n mask: \"000.00000.00-0\",\n regex: \"^([0-9]{3}[\\.]?[0-9]{5}[\\.]?[0-9]{2}[-]?[0-9]{1})$\",\n validate: (pis: any) => {\n if (!pis) { return false; }\n pis = LibUtil.apenasNumeros(pis);\n if (pis.length != 11) { return false; }\n return true;\n },\n },\n dia: {\n mask: \"00\",\n regex: \"^(0[1-9]|[1-9]|[1-2][0-9]|3[0-1])$\",\n validate: (dia: any) => {\n if (!dia) { return false; }\n dia = LibUtil.apenasNumeros(dia);\n let diaNum = Number(dia);\n return diaNum >= 1 && diaNum <= 31;\n },\n },\n mes: {\n mask: \"00\",\n regex: \"^(0[1-9]|1[0-2])$\",\n validate: (mes: any) => {\n if (!mes) { return false; }\n mes = LibUtil.apenasNumeros(mes);\n let mesNum = Number(mes);\n return mesNum >= 1 && mesNum <= 12;\n },\n },\n ano: {\n mask: \"0000\",\n regex: \"^([0-2]?([0-9]){3})$\",\n validate: (ano: any) => {\n if (!ano) { return false; }\n ano = LibUtil.apenasNumeros(ano);\n let anoNum = Number(ano);\n return anoNum >= 1000 && anoNum <= 2999;\n },\n },\n anoRecente: {\n mask: \"0000\",\n regex: \"^(19([0-9]){2})|(20([0-9]){2})|(21([0-9]){2})$\",\n validate: (anoRecente: any) => {\n if (!anoRecente) { return false; }\n anoRecente = LibUtil.apenasNumeros(anoRecente);\n let anoNum = Number(anoRecente);\n return anoNum >= 1900 && anoNum <= 2199;\n },\n },\n data: {\n mask: \"0000-00-00\",\n regex: \"^([0-9]{4}(-[0-9]{2}){2})$\",\n validate: (data: any) => {\n if (!data) { return false; }\n data = LibUtil.apenasNumeros(data);\n return new RegExp(LibUtil.formats.data.regex).test(data);\n },\n },\n dataIso: {\n mask: \"0000-00-00T00:00:00.000Z\",\n regex: \"^([0-9]{4}(-[0-9]{2}){2}T[0-9]{2}(:[0-9]{2}){2}\\.[0-9]{3}Z)$\",\n validate: (dataIso: any) => {\n if (!dataIso) { return false; }\n dataIso = LibUtil.apenasNumeros(dataIso);\n return new RegExp(LibUtil.formats.dataIso.regex).test(dataIso);\n },\n },\n numero: {\n mask: \"#0\",\n regex: \"^[0-9]*$\",\n validate: (numero: any) => {\n if (!numero) { return false; }\n numero = LibUtil.apenasNumeros(numero);\n return numero.length > 0;\n },\n },\n decimal: {\n mask: \"#0,00\",\n regex: \"^[0-9,]*$\",\n validate: (decimal: any) => {\n if (!decimal) { return false; }\n return new RegExp(LibUtil.formats.decimal.regex).test(decimal);\n },\n },\n letra: {\n mask: \"A\",\n regex: \"^[A-Za-z]*$\",\n validate: (letra: any) => {\n if (!letra) { return false; }\n return new RegExp(LibUtil.formats.letra.regex).test(letra);\n },\n },\n numeroELetra: {\n mask: \"S\",\n regex: \"^[A-Za-z0-9]*$\",\n validate: (numeroELetra: any) => {\n if (!numeroELetra) { return false; }\n return new RegExp(LibUtil.formats.numeroELetra.regex).test(numeroELetra);\n }\n },\n ip: {\n mask: \"000.000.000.000\",\n regex: \"^([0-2]?[0-9]?[0-9]([\\.][0-2]?[0-9]?[0-9]){3})$\",\n validate: (ip: any) => {\n if (!ip) { return false; }\n const regex = new RegExp(LibUtil.formats.ip.regex);\n if (!regex.test(ip)) { return false; }\n const parts = ip.split('.').map(Number);\n return parts.every((part: number) => part >= 0 && part <= 255);\n }\n },\n email: {\n mask: \"S\",\n regex: \"^(([a-zA-Z0-9_+-\\.]+)+)@([a-zA-Z0-9_+-\\.]+\\.[a-zA-Z]+)+$\",\n validate: (email: any) => {\n if (!email) { return false; }\n return new RegExp(LibUtil.formats.email.regex).test(email);\n }\n },\n cep: {\n mask: \"00000-000\",\n regex: \"^([0-9]{5}[-]?[0-9]{3})$\",\n validate: (cep: any) => {\n if (!cep) { return false; }\n cep = LibUtil.apenasNumeros(cep);\n return new RegExp(LibUtil.formats.cep.regex).test(cep);\n }\n }\n }\n\n static stringToDataBR = (data: string | null | undefined): string | null => {\n let resultado = null;\n if (LibUtil.classof(data) == \"null\" || LibUtil.classof(data) == \"undefined\") {\n return null;\n } else if (LibUtil.classof(data) == \"string\") {\n // Quando a data é \"YYYY-MM-DD\", ascrescenta 1 espaço para UTC.\n if (new RegExp(\"^[12][0-9]{3}[-][0-1][0-9][-][0-3][0-9]$\").test(data!)) {\n data += \" \";\n }\n // Tentativa Direta:\n resultado = new Date(data!).toLocaleString().replace(\",\", \"\");\n\n // Falhando, tenta converter pra número.\n if (resultado.toUpperCase() == \"INVALID DATE\") {\n resultado = new Date(Number(data)).toLocaleString().replace(\",\", \"\");\n\n // Agora tenta ver se a data inicia no formato br já\n if (resultado.toUpperCase() == \"INVALID DATE\") {\n // DD/MM/YYYY ?\n if (new RegExp(\"^[0-3][0-9][/][0-1][0-9][/][0-2][0-9]{3}\").test(data!)) {\n resultado = new Date(LibUtil.dataToIsoData(data!)).toLocaleString().replace(\",\", \"\");\n }\n }\n }\n } else {\n LOG(1, \"❌ stringToDataBR(): A data precisa ser formato string: \", data, LibUtil.classof(data));\n }\n return resultado;\n }\n\n // ISO 8601 (Padrão Internacional)\n static dataToIsoData = (data: string): string => {\n // Converter de DD/MM/YYYY para YYYY-MM-DD\n if (new RegExp(\"^[0-3][0-9][/][0-1][0-9][/][0-2][0-9]{3}\").test(data)) {\n\n }\n if (new RegExp(\"^[0-3][0-9][/][0-1][0-9][/][0-2][0-9]{3}\").test(data)) {\n let novaData = data.slice(6, 10) + \"-\" + data.slice(3, 5) + \"-\" + data.slice(0, 2);\n let resto = data.slice(10, data.length);\n if (resto != \"\" && new RegExp(\"^ [0-2][0-9]:[0-5][0-9]:[0-5][0-9]\").test(resto)) {\n novaData += resto;\n }\n return novaData;\n }\n return data; // < Se falhar\n };\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // ============================ SIGNALS DIRETO => CRUD E UTEIS ============================ \\\\\n\n // SET (SIGNAL)\n static sinalSet<T>(sinal: WritableSignal<any | undefined>, item: Partial<T>) {\n sinal.update(i => {\n if (!i) return item;\n return { ...i, ...item };\n });\n }\n\n // CREATE (SIGNAL)\n static sinalCreate<T>(sinal: WritableSignal<any[] | undefined>, item: T) {\n sinal.update(i => {\n if (!i) return [item];\n return [...i, item];\n });\n }\n\n // UPDATE (SIGNAL)\n static sinalUpdate<T>(sinal: WritableSignal<any[] | undefined>, item: Partial<T>, k: string, v?: string) {\n if (v != null && item) {\n sinal.update(i => {\n if (!i) return i;\n return i.map((o: T) => o[k as keyof T] === v ? { ...o, ...item } : o);\n });\n } else {\n if (v == null) {\n // PATCH UPDATE\n let value = item[k as keyof T];\n if (value != null) {\n sinal.update(i => {\n if (!i) return i;\n return i.map((o: T) => o[k as keyof T] === value ? { ...o, ...item } : o);\n });\n } else {\n LOG(1, `⚠️ sinalUpdate: A chave ${k} está nula. Passe o V desta chave para atualizar.`);\n }\n } else {\n LOG(1, `❌ Item ${k} chegou nulo para Update.`);\n }\n }\n }\n\n // DELETE (SIGNAL)\n static sinalDelete<T>(sinal: WritableSignal<any[] | undefined>, k: string, v?: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i) return i;\n return i.filter((o: T) => o[k as keyof T] !== v);\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para Delete.`);\n }\n }\n\n // CLEAR (SIGNAL)\n static sinalClear<T>(sinal: WritableSignal<any[] | undefined>) {\n sinal.set(undefined);\n }\n\n // EXISTS (SIGNAL) - Verifica se um item existe na lista\n static sinalExists<T>(sinal: WritableSignal<any[] | undefined>, k: Extract<keyof T, string>, v: string): boolean {\n if (v != null) {\n const items = sinal();\n if (!items) return false;\n return items.some((o: T) => o[k] === v);\n } else {\n return false;\n }\n }\n\n\n // MOVE UP (SIGNAL) - Move um item uma posição para cima\n static sinalMoveUp<T>(sinal: WritableSignal<any[] | undefined>, k: Extract<keyof T, string>, v: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i || i.length <= 1) return i;\n const index = i.findIndex((o: T) => o[k] === v);\n if (index <= 0) return i; // Já está no topo ou não encontrado\n\n const newArray = [...i];\n [newArray[index - 1], newArray[index]] = [newArray[index], newArray[index - 1]];\n return newArray;\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para MoveUp.`);\n }\n }\n\n // MOVE DOWN (SIGNAL) - Move um item uma posição para baixo\n static sinalMoveDown<T>(sinal: WritableSignal<any[] | undefined>, k: Extract<keyof T, string>, v: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i || i.length <= 1) return i;\n\n const index = i.findIndex((o: T) => o[k] === v);\n if (index < 0 || index >= i.length - 1) return i; // Já está no final ou não encontrado\n\n const newArray = [...i];\n [newArray[index], newArray[index + 1]] = [newArray[index + 1], newArray[index]];\n return newArray;\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para MoveDown.`);\n }\n }\n\n // MOVE TO INDEX (SIGNAL) - Move um item para uma posição específica\n static sinalMoveToIndex<T>(sinal: WritableSignal<any[] | undefined>, k: Extract<keyof T, string>, v: string, targetIndex: number) {\n if (v != null) {\n sinal.update(i => {\n if (!i || i.length <= 1) return i;\n const currentIndex = i.findIndex((o: T) => o[k] === v);\n if (currentIndex < 0 || targetIndex < 0 || targetIndex >= i.length || currentIndex === targetIndex) {\n return i; // Item não encontrado, índice inválido ou já está na posição\n }\n const newArray = [...i];\n const [movedItem] = newArray.splice(currentIndex, 1);\n newArray.splice(targetIndex, 0, movedItem);\n return newArray;\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para MoveToIndex.`);\n }\n }\n\n static FlatRecursivo<T>(lista: T[], keyRecursive: keyof T): T[] {\n if (LibUtil.classof(lista) != \"array\") return [];\n\n let novaArray: T[] = [];\n lista.map(objeto => {\n if (LibUtil.classof(objeto) != \"object\") return;\n let novoObjeto: T = {} as T;\n for (let prop in objeto) {\n if (prop != keyRecursive) novoObjeto[prop] = objeto[prop];\n }\n novaArray = [...novaArray, novoObjeto];\n let children = objeto[keyRecursive] as T[];\n if (children != null) {\n novaArray = [...novaArray, ...LibUtil.FlatRecursivo(children, keyRecursive)];\n }\n })\n return novaArray;\n }\n\n // ============================ SIGNALS RECURSIVO => CRUD E UTEIS ============================ \\\\\n\n // Adiciona um novo item em uma estrutura hierárquica baseado na chave pai\n // CREATE RECURSIVE (SIGNAL)\n static sinalCreateRecursive<T>(sinal: WritableSignal<any[] | undefined>, item: T, keyRecursive: keyof T, keyPai: Extract<keyof T, string>, valuePai?: string) {\n sinal.update(i => {\n if (!i) return [item];\n if (valuePai != null) {\n return i.map((o: T) => {\n return LibUtil._recursiveCreate<T>(o, item, keyRecursive, keyPai, valuePai);\n });\n } else {\n // Sem Pai inserir direto na raiz\n return [...i, item];\n }\n });\n }\n\n // Encontra o item pai pela chave e adiciona o novo item no array de filhos\n static _recursiveCreate<T>(atual: T, novo: T, keyRecursive: keyof T, keyPai: Extract<keyof T, string>, valuePai: string): T {\n if (atual[keyPai] === valuePai) {\n // Encontrou o pai, adiciona o item no array recursivo\n if (atual[keyRecursive] == null) {\n (atual[keyRecursive] as T[]) = [novo];\n } else {\n (atual[keyRecursive] as T[]) = [...(atual[keyRecursive] as T[]), novo];\n }\n return atual;\n }\n if (atual[keyRecursive] == null || (atual[keyRecursive] as T[])?.length == 0) return atual;\n (atual[keyRecursive] as T[]) = [\n ...(atual[keyRecursive] as T[]).map(child => {\n return LibUtil._recursiveCreate(child, novo, keyRecursive, keyPai, valuePai);\n })\n ];\n return atual;\n }\n\n // Atualiza um item específico em uma estrutura hierárquica\n // UPDATE RECURSIVE (SIGNAL)\n static sinalUpdateRecursive<T>(sinal: WritableSignal<any[] | undefined>, item: Partial<T>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i) return i;\n return i.map((o: T) => {\n return LibUtil._recursiveUpdate<T>(o, item, keyRecursive, k, v);\n });\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para Update Recursivo.`);\n }\n }\n\n // Encontra o item pela chave e atualiza suas propriedades\n static _recursiveUpdate<T>(atual: T, novo: Partial<T>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): T {\n if (atual[k] === v) {\n LOG(1, \"Editado\", { ...atual, ...novo })\n return { ...atual, ...novo };\n }\n if (atual[keyRecursive] == null || (atual[keyRecursive] as T[])?.length == 0) return atual;\n (atual[keyRecursive] as T[]) = [\n ...(atual[keyRecursive] as T[]).map(child => {\n return LibUtil._recursiveUpdate(child, novo, keyRecursive, k, v);\n })\n ];\n return atual;\n }\n\n // Remove um item específico de uma estrutura hierárquica\n // DELETE RECURSIVE (SIGNAL)\n static sinalDeleteRecursive<T>(sinal: WritableSignal<any[] | undefined>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i) return i;\n // Primeiro verifica se precisa deletar no nível raiz\n const filteredRoot = i.filter((o: T) => o[k] !== v);\n // Se encontrou e removeu no nível raiz, retorna o array filtrado\n if (filteredRoot.length !== i.length) {\n return filteredRoot;\n }\n // Se não encontrou no nível raiz, processa recursivamente\n return i.map((o: T) => {\n return LibUtil._recursiveDelete<T>(o, keyRecursive, k, v);\n });\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para Delete Recursivo.`);\n }\n }\n // Encontra e remove o item pela chave, filtrando do array de filhos\n static _recursiveDelete<T>(atual: T, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): T {\n // Se tem filhos, processa os filhos\n if (atual[keyRecursive] && (atual[keyRecursive] as T[])?.length > 0) {\n const children = atual[keyRecursive] as T[];\n // Remove o item dos filhos se existir e processa recursivamente os filhos restantes\n const filteredChildren = children\n .filter(child => child[k] !== v)\n .map(child => LibUtil._recursiveDelete(child, keyRecursive, k, v));\n return { ...atual, [keyRecursive]: filteredChildren };\n }\n return atual;\n }\n\n // EXISTS RECURSIVE (SIGNAL) - Verifica se um item existe em uma estrutura hierárquica\n static sinalExistsRecursive<T>(sinal: WritableSignal<any[] | undefined>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): boolean {\n if (v != null) {\n const items = sinal();\n if (!items) return false;\n return items.some((o: T) => {\n return LibUtil._recursiveExists<T>(o, keyRecursive, k, v);\n });\n } else {\n return false;\n }\n }\n\n // Função auxiliar para busca recursiva\n static _recursiveExists<T>(atual: T, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): boolean {\n // Verifica se o item atual é o que estamos procurando\n if (atual[k] === v) return true;\n // Se tem filhos, procura recursivamente\n if (atual[keyRecursive] && (atual[keyRecursive] as T[])?.length > 0) {\n const children = atual[keyRecursive] as T[];\n return children.some(child => LibUtil._recursiveExists(child, keyRecursive, k, v));\n }\n return false;\n }\n\n // Move um item uma posição para cima na hierarquia\n // MOVE UP RECURSIVE (SIGNAL) - Para estruturas hierárquicas\n static sinalMoveUpRecursive<T>(sinal: WritableSignal<any[] | undefined>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i || i.length <= 1) return i;\n // Primeiro verifica se precisa mover no nível raiz\n const rootIndex = i.findIndex((o: T) => o[k] === v);\n if (rootIndex > 0) {\n const newArray = [...i];\n [newArray[rootIndex - 1], newArray[rootIndex]] = [newArray[rootIndex], newArray[rootIndex - 1]];\n return newArray;\n }\n // Se não encontrou no nível raiz, processa recursivamente\n return i.map((o: T) => {\n return LibUtil._recursiveMoveUp<T>(o, keyRecursive, k, v);\n });\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para MoveUp Recursivo.`);\n }\n }\n\n // Encontra o item e troca sua posição com o anterior no array\n static _recursiveMoveUp<T>(atual: T, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): T {\n // Se tem filhos, processa os filhos primeiro\n if (atual[keyRecursive] && (atual[keyRecursive] as T[])?.length > 0) {\n const children = atual[keyRecursive] as T[];\n // Verifica se precisa mover dentro dos filhos\n const targetIndex = children.findIndex(child => child[k] === v);\n if (targetIndex > 0) {\n const newChildren = [...children];\n [newChildren[targetIndex - 1], newChildren[targetIndex]] = [newChildren[targetIndex], newChildren[targetIndex - 1]];\n return { ...atual, [keyRecursive]: newChildren };\n }\n // Se não encontrou, processa recursivamente os filhos\n const processedChildren = children.map(child =>\n LibUtil._recursiveMoveUp(child, keyRecursive, k, v)\n );\n return { ...atual, [keyRecursive]: processedChildren };\n }\n return atual;\n }\n\n // Move um item uma posição para baixo na hierarquia\n // MOVE DOWN RECURSIVE (SIGNAL) - Para estruturas hierárquicas\n static sinalMoveDownRecursive<T>(sinal: WritableSignal<any[] | undefined>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i || i.length <= 1) return i;\n // Primeiro verifica se precisa mover no nível raiz\n const rootIndex = i.findIndex((o: T) => o[k] === v);\n if (rootIndex >= 0 && rootIndex < i.length - 1) {\n const newArray = [...i];\n [newArray[rootIndex], newArray[rootIndex + 1]] = [newArray[rootIndex + 1], newArray[rootIndex]];\n return newArray;\n }\n // Se não encontrou no nível raiz, processa recursivamente\n return i.map((o: T) => {\n return LibUtil._recursiveMoveDown<T>(o, keyRecursive, k, v);\n });\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para MoveDown Recursivo.`);\n }\n }\n\n // Encontra o item e troca sua posição com o próximo no array\n static _recursiveMoveDown<T>(atual: T, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): T {\n if (atual[keyRecursive] && (atual[keyRecursive] as T[])?.length > 0) {\n const children = atual[keyRecursive] as T[];\n // Verifica se precisa mover dentro dos filhos\n const targetIndex = children.findIndex(child => child[k] === v);\n if (targetIndex >= 0 && targetIndex < children.length - 1) {\n const newChildren = [...children];\n [newChildren[targetIndex], newChildren[targetIndex + 1]] = [newChildren[targetIndex + 1], newChildren[targetIndex]];\n return { ...atual, [keyRecursive]: newChildren };\n }\n // Se não encontrou, processa recursivamente os filhos\n const processedChildren = children.map(child =>\n LibUtil._recursiveMoveDown(child, keyRecursive, k, v)\n );\n return { ...atual, [keyRecursive]: processedChildren };\n }\n return atual;\n }\n\n static sinalSetOrderRecursive<T>(sinal: WritableSignal<any[] | undefined>, keyRecursive: keyof T, k: Extract<keyof T, string>, propOrder: keyof T) {\n sinal.update(i => {\n if (!i) return i;\n return i.map((o: T, i) => {\n return LibUtil._recursiveSetOrder<T>(o, keyRecursive, k, propOrder, i);\n });\n });\n }\n\n static _recursiveSetOrder<T>(atual: T, keyRecursive: keyof T, k: Extract<keyof T, string>, propOrder: keyof T, index: number): T {\n atual = { ...atual, [propOrder]: index };\n if (atual[keyRecursive] == null || (atual[keyRecursive] as T[])?.length == 0) return atual;\n (atual[keyRecursive] as T[]) = [\n ...(atual[keyRecursive] as T[]).map((child, i) => {\n return LibUtil._recursiveSetOrder(child, keyRecursive, k, propOrder, i);\n })\n ];\n return atual;\n }\n\n // ============================ ATALHOS PERSONALIZADOS ============================ \\\\\n\n static Q = (query: any) => {\n // Busca elemento único, podendo buscar ele mesmo. (Bifurcacado)\n if (LibUtil.classof(query) == \"string\") return document.querySelector(query);\n return query;\n };\n\n static QAll = (query: any): any[] => {\n // Sempre retorna uma array de encontrados. Inclusive uma array com um LibUtil.Q\n if (LibUtil.classof(query) == \"string\") {\n // Se buscando uma string, retorna a array do select encontrado\n return Array.from(document.querySelectorAll(query));\n } else if (LibUtil.classof(query).endsWith(\"Element\")) {\n // Quando buscar um único elemento, retorna o elemento em uma lista.\n return [query];\n } else if (LibUtil.classof(query) == \"array\") {\n // Quando buscar uma array, retorna a propria array. (Bifurcado)\n return query;\n } else {\n LOG(1, \"⚠️ QAll() - Requer String / Elemento / Array. ClassOf: \", LibUtil.classof(query), \" Query: \", query);\n return [];\n }\n };\n\n static QverOff = (query: Element | HTMLElement | string | null = \"body\"): any[] => {\n // Adiciona Classe Oculto em todos os elementos do Query\n // Retorna uma array de elementos por causa do QAll\n return LibUtil.aCadaElemento(query, (e: any) => {\n e?.classList.add(\"oculto\");\n });\n };\n\n static QverOn = (query: Element | HTMLElement | string | null = \"body\") => {\n // Remove classe Oculto em todos os elementos do Query\n // Retorna uma array de elementos por causa do QAll\n return LibUtil.aCadaElemento(query, (e: any) => {\n e?.classList.remove(\"oculto\");\n });\n };\n\n static dataGetMs = (data: string | null = null): number => {\n // Retorna Milisegundos da data no formato Javascript\n if (data != null) {\n if (data.length > 10) {\n // Recomendado que os dados cheguem: 'YYYY-MM-DD HH:MM:SS'\n return new Date(data).getTime(); // Recomendado que os dados \n } else {\n let dataCortada = data.split(\"-\");\n let oDia: number = Number(dataCortada[2]);\n let oMes: number = Number(dataCortada[1]) - 1;\n let oAno: number = Number(dataCortada[0]);\n return new Date(oAno, oMes, oDia).getTime();\n }\n } else return new Date().getTime();\n };\n\n static dataMsToSegundos = (num: number, reverse: boolean = false) => {\n if (reverse) {\n return num * 1000;\n }\n return Math.trunc(num / 1000); // 1000 ms == 1s\n }\n\n static dataMsToDias = (num: number, reverse: boolean = false) => {\n // 1000 * 3600 * 24 Considerando todo dia tiver 24 horas (~23h 56m 4.1s)\n // (360º translacao / 86400000) = ~4.1\n // Então o erro de 1 dia ocorre 1x ao ano (Dia represeta 1436min).\n // Por isso, é melhor trabalhar com Dias em vez de outro formato maior.\n if (reverse) {\n return Math.trunc(num * 86400000);\n }\n return Math.trunc(num / 86400000);\n };\n\n static dataGetSegundosDiferenca = (msDe: number, msAte: number | null = null): number => {\n // Retorna a diferença de segundos entre dois MS\n if (msAte == null) msAte = LibUtil.dataGetMs();\n return LibUtil.dataMsToSegundos(msAte - msDe);\n };\n\n static dataGetDiasDiferenca = (msDe: number, msAte: number | null = null): number => {\n // Retorna a diferença de dias entre dois MS\n if (msAte == null) msAte = LibUtil.dataGetMs();\n return LibUtil.dataMsToDias(msAte - msDe);\n };\n\n static dataShowTempoDiferenca = (msDe: number | string, msAte: number | string | null = null) => {\n if (LibUtil.classof(msDe) == \"string\") msDe = LibUtil.dataGetMs(msDe as string);\n if (LibUtil.classof(msAte) == \"string\") msAte = LibUtil.dataGetMs(msAte as string);\n let dias = LibUtil.dataGetDiasDiferenca(msDe as number, msAte as number | null);\n if (dias < 0) {\n dias = dias * -1;\n }\n let strTempo = \"\";\n if (dias > 29) { // Em Meses\n if (dias < 60) {\n strTempo = \"1 mês\";\n } else {\n if (dias > 365) { // Em Anos (+ Meses restantes)\n let anos = Math.floor(dias / 365);\n let diasRestoAno = dias % 365;\n if (anos < 2) {\n strTempo += anos + \" ano \";\n } else {\n strTempo += anos + \" anos \";\n }\n if (diasRestoAno > 30) {\n if (diasRestoAno < 60) {\n strTempo += \"1 mês\";\n } else {\n strTempo += Math.floor(diasRestoAno / 30) + \" meses\";\n }\n }\n } else {\n strTempo = Math.floor(dias / 30) + \" meses\";\n }\n }\n } else {\n if (dias < 1) {\n let segundos = LibUtil.dataGetSegundosDiferenca(msDe as number, msAte as number);\n if (segundos > 7199) { // Em Horas\n strTempo = Math.floor(segundos / 3600) + \" horas\";\n } else {\n if (segundos > 3599) {\n strTempo = \"1 hora\";\n } else {\n if (segundos > 119) { // Em Minutos\n strTempo = Math.floor(segundos / 60) + \" minutos\";\n } else {\n if (segundos > 59) {\n strTempo = \"1 minuto\";\n } else {\n strTempo = Math.floor(segundos) + \" segundos\";\n }\n }\n }\n }\n } else { // Em Dias\n strTempo = dias + \" dias\";\n }\n }\n if (strTempo.includes(\"NaN\")) return \"\";\n return strTempo;\n }\n\n static displayCelular = (area: string, numero: string, isoDDI?: string): string => {\n if (numero == null) numero = \"\"\n else numero = LibUtil.apenasNumeros(numero);\n if (area == null) area = \"\";\n else area = LibUtil.apenasEstes(area, \"0-9\\+\");\n if (numero == \"\" && area == \"\") return \"\";\n let displayArea = area;\n let displayNumero = numero;\n let displayFlag = \"\";\n if (numero != \"\" && displayArea == \"\") displayArea = \"+55\"\n if (displayArea == \"+55\") {\n numero = numero.slice(0, 11); // No brasil o limite é 9.\n displayNumero = numero;\n let apenasCelular = numero.slice(2, 11);\n if (apenasCelular.length == 9) {\n apenasCelular = apenasCelular.slice(0, 5) + \"-\" + apenasCelular.slice(5, 9);\n }\n displayNumero = \"(\" + numero.slice(0, 2) + \") \" + apenasCelular;\n }\n if (isoDDI != null) {\n displayFlag = LibUtil.displayFlag(isoDDI);\n }\n return `${displayFlag}<a href=\"tel:${area || \"\"}${numero || \"\"}\">${displayArea} ${displayNumero}</a>`\n }\n\n static displayFlag = (pais: string): string => {\n if (pais != null) {\n return `<img class=\"flagSizeIco\" src=\"/images/Paises/${pais || \"transparent\"}.svg\" alt=\"${pais || \"transparent\"}\" onerror=\"base_imgonerror(this);\"> `\n }\n return \"\";\n }\n\n static diaEMes(data: string): string {\n //Retorna: 01 de Abril\n let arrData = LibUtil.stringToDataBR(data)?.split(\" \")?.[0]?.split(\"/\");\n return arrData?.[0] + \" de \" + LibUtil.meses.get(Number(arrData?.[1] || 0))?.[0];\n }\n\n // =============== Gerenciamento Monetário / Numérico / Locale =================== \\\\\n static toNumber = (valor: any, casas: number = 2): number => {\n // Informando String/Number, converte para o número de casas c.casas (padrão 2).\n // LibUtil.toNumber(\"R$ 1.222,333\") => 1222.33\n if (valor != null) {\n if (LibUtil.classof(valor) == \"string\") {\n // Possiveis separadores\n let us = [\".\", \",\"].reduce((x, y) => (valor.lastIndexOf(x) > valor.lastIndexOf(y)) ? x : y);\n let posPonto = valor.lastIndexOf(us)\n if (posPonto >= 0) {\n let i = valor.slice(0, posPonto);\n let d = valor.slice(posPonto + 1).slice(0, 2).padEnd(2, \"0\");\n i = [...i.toString()].filter(a => { return new RegExp(LibUtil.formats.numero.regex).test(a) }).join(\"\");\n d = [...d.toString()].filter(a => { return new RegExp(LibUtil.formats.numero.regex).test(a) }).join(\"\");\n valor = i + \".\" + d;\n } else {\n valor = [...valor.toString()].filter(a => { return new RegExp(LibUtil.formats.numero.regex).test(a) }).join(\"\").padStart(3, \"0\")\n valor = valor.padStart(casas, \"0\");\n valor = valor.slice(0, -(casas)) + (casas > 0 ? \".\" : \"\") + valor.slice(-(casas));\n }\n } else if (LibUtil.classof(valor) == \"number\") {\n valor = valor.toFixed(casas); // <= Vira String, mas essa função apenas devolve Number\n } else {\n LOG(1, \"❌ toNumber() - Formato de entrada não implementado: \", LibUtil.classof(valor));\n }\n return Number(valor); // <= OutPut Number\n }\n return 0; // <= OutPut Number\n };\n\n // ============================= ARMAZENADORES ESTÁTICOS ============================ \\\\\n static a: any = {\n ALL: \"*/*\", // ContentType Blob\n FORMDATA: \"multipart/form-data\", // ContentType FORM\n GET: \"GET\", // Api Method GET\n HTML: \"text/html\", // ContentType HTML\n JSON: \"application/json\", // ContentType JSON\n POST: \"POST\", // Api Method POST\n DELETE: \"DELETE\", // Api Method DELETE\n SVGINI: \"<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'>\",\n SVGFIM: \"</svg>\",\n timers: [] as any, // Array para guardar timers em andamento ou finalizados\n wpool: null as any | null, // WorkerPool quando iniciado\n }\n\n static meses = new Map([\n [1, [\"Janeiro\", \"JAN\", \"01\"]],\n [2, [\"Fevereiro\", \"FEV\", \"02\"]],\n [3, [\"Março\", \"MAR\", \"03\"]],\n [4, [\"Abril\", \"ABR\", \"04\"]],\n [5, [\"Maio\", \"MAI\", \"05\"]],\n [6, [\"Junho\", \"JUN\", \"06\"]],\n [7, [\"Julho\", \"JUL\", \"07\"]],\n [8, [\"Agosto\", \"AGO\", \"08\"]],\n [9, [\"Setembro\", \"SET\", \"09\"]],\n [10, [\"Outubro\", \"OUT\", \"10\"]],\n [11, [\"Novembro\", \"NOV\", \"11\"]],\n [12, [\"Dezembro\", \"DEZ\", \"12\"]],\n ]);\n\n // ============================ TOOLS e JS HELPERS ================================ \\\\\n\n static isJson = (s: any): boolean => {\n try {\n JSON.parse(s);\n } catch (e) {\n return false;\n }\n return true;\n };\n\n static stringify = (o: any): string => {\n // Converte o Objeto em String JSON, e aproveita e já remove alguns caracteres de controle.\n return JSON.stringify(o)\n ?.replace(new RegExp(\"\\n\", 'g'), \"\")\n ?.replace(new RegExp(\"\\r\", 'g'), \"\")\n ?.replace(new RegExp(\"\\t\", 'g'), \"\")\n ?.replace(new RegExp(\"\\b\", 'g'), \"\")\n ?.replace(new RegExp(\"\\f\", 'g'), \"\")\n };\n\n static parseJSON = (t: any) => {\n // Se for um JSON válido. Retorna o objeto, se não null.\n if (t === \"\") return \"\";\n let resultado = null;\n try {\n resultado = JSON.parse(t);\n } catch (e) {\n LOG(1, \"❌ JSON Inválido: Não foi possível converter o JSON.\");\n return null;\n }\n return resultado;\n };\n\n // String qualquer em string com números\n static convertToNumeric = (texto: string): Array<number> => {\n let arrayDeNumeros = [];\n for (const char of texto) {\n arrayDeNumeros.push(char.codePointAt(0) || 0);\n }\n return arrayDeNumeros;\n }\n\n // COnversor para Texto.\n static convertToTexto = (arrayNumeros: Array<number>): string => {\n return String.fromCodePoint(...arrayNumeros);\n }\n\n // Conversor para Texto, separado por virgula\n static convertToTexto2 = (stringNumeros: string): string => {\n return String.fromCodePoint(...stringNumeros.split(\",\").map(i => Number(i)));\n }\n\n static aCadaElemento = (query: any, fn: Function): any[] => {\n // A cada elemento encontrado pelo QAll executa a funcao\n let elementos = LibUtil.QAll(query);\n elementos.forEach((e: any) => {\n fn(e);\n });\n // Sempre retorna uma array por caus do QAll\n return elementos;\n };\n\n // Executa a FUNCAO em todas as propriedades deste OA. Inclusive Obj.Obj... (Matriz de Dados)\n static aCadaSubPropriedade = (OA: any, funcao: Function | null = null, exceto: string = \"Object\") => {\n let c = 0;\n for (let a in OA) {\n if (LibUtil.classof(OA[a]) != exceto) {\n if (funcao) {\n funcao(OA[a], a, OA);\n }\n }\n c++;\n // Se o atual é objeto, itera internamente\n if (LibUtil.classof(OA[a]) == \"object\") {\n c += LibUtil.aCadaSubPropriedade(OA[a], funcao, exceto);\n }\n // Se o atual é array, itera internamente\n if (LibUtil.classof(OA[a]) == \"array\") {\n c += LibUtil.aCadaSubPropriedade(OA[a], funcao, exceto);\n }\n }\n return c;\n };\n\n static apenasEstes = (s: string = \"\", regexPossiveis: string = \"0-9\\+\"): string => {\n if (s == null) return \"\";\n let regex = new RegExp(\"(?![\" + regexPossiveis + \"]).\");\n return s.toString().replace(regex, \"\");\n }\n\n static getV = (keys: string | string[], objeto: any): any => {\n // Retorna o valor do chave informada, podendo ser obj.obj.chave\n // LibUtil.getV(\"a.b.c\",{a:{b:{c:\"d\"}}})\n if (LibUtil.classof(objeto) == \"object\") {\n if (LibUtil.classof(keys) == \"string\") {\n if (keys.includes(\".\")) {\n // Multi\n let ks: string[] = (keys as string).split(\".\");\n let lastObj = objeto;\n let lastV = {};\n // Iterar o Keys, Ver Obj atual e Setar Conteudo;\n ks.forEach((k) => {\n if (lastObj) { // Pode ficar nulo durante\n lastV = lastObj[k];\n if (typeof lastV == \"object\") {\n lastObj = lastV;\n } else {\n lastObj = null;\n }\n }\n });\n return lastV;\n } else {\n // Simples\n return objeto[(keys as string)];\n }\n } else if (LibUtil.classof(keys) == \"array\") {\n // Array de Keys. Faz um loop e de forma recursiva tenta pegar o valor. Se o valor não for nulo, interrompe e retorna.\n let lastV = null;\n for (let k of (keys as string[])) {\n lastV = LibUtil.getV(k, objeto);\n if (lastV != null) {\n return lastV;\n }\n }\n } else {\n LOG(1, \"❌ getV() - Nome da propriedade precisa ser em String. (\" + LibUtil.classof(keys) + \"):\", keys);\n }\n } else {\n LOG(1, \"❌ Para ver a chave, o parametro objeto precisa receber um objeto. (\" + typeof objeto + \")\");\n }\n return null;\n };\n\n static setV = (keys: string, value: any, objeto: any) => {\n // Retorna o valor do chave informada, podendo ser obj.obj.chave\n // LibUtil.setV(\"a.b.c\",\"mudei\",{a:{b:{c:\"d\"}}})\n if (typeof objeto == \"object\") {\n if (LibUtil.classof(keys) == \"string\") {\n if (keys.includes(\".\")) {\n // Multi\n let ks: string[] = keys.split(\".\");\n let lastObj = objeto;\n // Iterar o Keys, Ver Obj atual e Setar Conteudo;\n ks.forEach((k) => {\n if (ks.indexOf(k) == (ks.length - 1)) {\n // Último\n lastObj[k] = value;\n } else {\n if (LibUtil.classof(lastObj[k]) != \"object\") {\n lastObj[k] = {};\n }\n }\n lastObj = lastObj[k];\n });\n return objeto;\n } else {\n // Set direto, não tem ponto e é string\n objeto[keys] = value;\n return objeto;\n }\n } else {\n LOG(1, \"❌ setV() - Nome da propriedade precisa ser em string. (\" + LibUtil.classof(keys) + \"):\", keys);\n }\n } else {\n LOG(1, \"❌ setV() - Objeto precisa receber um objeto. (\" + typeof objeto + \")\");\n }\n return null;\n };\n\n static geraObjForm = (form: any) => {\n // Gerar Objeto a partir de um Form Entries\n if (LibUtil.classof(form) != \"object\") {\n // Se vier o Elemento Form / o Query do Form\n form = LibUtil.Q(form);\n }\n // Coleta apenas os campos com value.\n let rObjeto: any = [...form.querySelectorAll(\" *[name]\")]\n .map(o => { return { [o.name]: o.value } })\n .reduce((a, o) => { a = { ...a, ...o }; return a; }, {});\n if (form) {\n\n for (let [k, v] of Object.entries(rObjeto)) {\n LibUtil.setV(k, v, rObjeto);\n if (k.includes(\".\")) {\n delete rObjeto[k];\n }\n }\n Array.from(form.querySelectorAll(\"mk-sel\")).forEach((e: any) => {\n // rObjeto[mk.name] = mk.value;\n LibUtil.setV(e.name, e.value, rObjeto);\n });\n // Aqui apenas coleta os mkBot que foram modificados pelo usuário.\n Array.from(form.querySelectorAll(\"mk-bot.changed\")).forEach((e: any) => {\n // rObjeto[mk.name] = mk.value;\n LibUtil.setV(e.name, e.value, rObjeto);\n });\n }\n return rObjeto;\n }\n\n static funcoesDinamicas = new Map<string, Function>();\n static aCada1s = () => {\n Array.from(LibUtil.funcoesDinamicas.values()).map((fn: Function) => { if (fn != null) fn() });\n setTimeout(() => {\n LibUtil.aCada1s();\n }, 1000);\n };\n\n static cortarString = (linha: string, regex: string, casas: any) => {\n let resultado: any = \"\";\n try {\n resultado = new RegExp(regex).exec(linha)?.groups?.[\"ok\"];\n } catch (e) {\n LOG(1, \"Regex Inválido. \", e);\n return \"0\";\n }\n if ((!casas) || (casas == \"\") || (casas <= 0)) casas = 0;\n return `${LibUtil.toNumber(resultado, casas)}`;\n }\n\n static uuid = () => {\n // Padrão UUIDV4 - Gerador de identificador unico\n return \"10000000-1000-4000-8000-100000000000\".replace(/[018]/g, (c: any) => { // c = String\n return (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16);\n }).toString().toUpperCase();\n }\n\n // mk.isRoute(\"/Pesagem$\") // <= Rota termina com /Pesagem\n static isRoute = (rotaRegex: string) => {\n return new RegExp(rotaRegex).test(window.location.pathname);\n }\n\n static verificarIgualdade(array: any[], propriedades: string[]) {\n // Verifica se várias propriedades estão iguais em todos os objetos de um array.\n if (array.length <= 1) return true;\n const primeiro = array[0];\n return array.every(objeto => {\n return propriedades.every(propriedade => {\n // Verifica se a propriedade existe em ambos os objetos antes da comparação\n if (!(propriedade in objeto) || !(propriedade in primeiro)) {\n LOG(1, `⚠️ Propriedade '${propriedade}' ausente em um ou mais objetos.`);\n return false; // considera falso se a propriedade não existir\n }\n return objeto[propriedade] === primeiro[propriedade];\n });\n });\n }\n\n static individualNoObjeto(array: any[], propriedade: string): any[] {\n // Ignora os Objetos que esta Propriedade se repetir.\n let novoSet = new Set(array.map((o) => { return o[propriedade] }));\n return array.map((o) => {\n if (novoSet.has(o[propriedade])) {\n novoSet.delete(o[propriedade]);\n return o;\n } else return null;\n }).filter(o => o);\n }\n\n static hasFaltante(array: any[], propriedades: string[]) {\n // Verifica as propriedades informadas estão disponíveis em todos os objetos do array.\n if (array.length <= 0) return false;\n return array.every(objeto => {\n return propriedades.every(propriedade => {\n if (!(propriedade in objeto)) {\n return true;\n }\n return false;\n });\n });\n }\n\n static somarEmObjeto(lista: any[], propriedade: string) {\n // Soma uma determinada propriedade em uma lista\n return lista.reduce((acc: number, val: any) => {\n if (LibUtil.classof(val[propriedade]) == \"number\") {\n return acc + val[propriedade];\n }\n return acc;\n }, 0);\n }\n\n static capitalize = (texto?: string | null): string => {\n let arrayTexto = texto?.toString().split(\" \");\n return arrayTexto?.map(str => {\n let str_low = str.toLowerCase();\n if ([\"da\", \"de\", \"do\", \"das\", \"dos\", \"e\"].includes(str_low)) {\n return str_low;\n } else {\n return str_low.charAt(0).toUpperCase() + str_low.slice(1);\n }\n }).join(\" \") || \"\";\n };\n\n static GetParam = (name: string | null = null, url: string | null = null) => {\n // Coleta o valor do parametro da url.\n if (!url) url = document.location.toString();\n if (name != null) {\n return new URL(url).searchParams.get(name);\n } else {\n return new URL(url).searchParams.toString();\n }\n }\n\n static getParamObject = (url?: string) => {\n if (!url) url = document.location.toString();\n return url?.split(\"?\")[1]?.split(\"&\")?.reduce((acc: any, val: string) => {\n const [key, value] = val.split(\"=\");\n acc[key] = value;\n return acc;\n }, {});\n }\n\n static toQueryString(obj?: any, urlAtual: string = \"\"): string {\n if (obj) {\n // Quando é GET, modifica a URL e acrescenta os QUERYSTRING do objeto enviado por parametro.\n if (obj != null) {\n if (!urlAtual.includes(\"?\")) {\n urlAtual = urlAtual + \"?\"; // Cria o divisor entre os dados do query e o endereço destino.\n }\n let queryStrings = \"\";\n if (LibUtil.classof(obj) == \"object\") {\n for (let propriedade in obj) {\n if (LibUtil.classof(obj[propriedade]) == \"object\") {\n let propJson = JSON.stringify(obj[propriedade]);\n queryStrings += `&${propriedade}=${propJson}`;\n LOG(1, `⚠️ toQueryString() - Uma propriedade enviada: '${propriedade}' era um objeto. Url`, urlAtual);\n } else {\n if (obj[propriedade] != null) {\n queryStrings += `&${propriedade}=${obj[propriedade]}`;\n }\n }\n }\n } else {\n LOG(1, \"❌ Dados enviados via GET precisam ser Object. Dados: \", LibUtil.classof(obj));\n }\n urlAtual = urlAtual + queryStrings;\n }\n }\n if (urlAtual.endsWith(\"?\")) urlAtual = urlAtual.slice(0, -1); // Remove o ? final se não tiver nada depois.\n urlAtual = urlAtual.replaceAll(\"?&\", \"?\");\n return urlAtual;\n }\n\n /**\n * Mapeia uma EntidadeA para EntidadeB usando o TRANSFORMA\n * É nescessário informar o DE/PARA/TRANSFORMA de cada propriedade.\n */\n static mapearEntidade<T, U>(\n entidadeOrigem: T,\n mapeamento: MapeamentoItem<T, U>[]\n ): U {\n const entidadeDestino: any = {};\n mapeamento.forEach(item => {\n const valor = entidadeOrigem[item.de];\n if (valor !== undefined) {\n entidadeDestino[item.para] = item.transforma(valor);\n } else {\n entidadeDestino[item.para] = null;\n }\n });\n return entidadeDestino as U;\n\n }\n\n /**\n * Faz uma tentativa de obter uma url, mas se falhar, retorna nulo\n */\n static getURL(urlQuery?: string) {\n let url;\n if (urlQuery) {\n try {\n url = new URL(urlQuery);\n } catch (e) {\n LOG(1, \"❌ URL INVÁLIDA: \", urlQuery);\n }\n }\n return url;\n }\n\n static conversorCSS(texto: string): string[] {\n const regex = /\\.([a-z0-9-]+)\\s*{.*?}/g;\n let arrayTexto = texto.replace(/\\s+/g, ' ').replace(/[\\r\\n]/g, '').replace(regex, (match, group1) => group1 + \",\").trim().split(\",\");\n return arrayTexto.map(i => i.trim()).filter(o => o != \"\");\n }\n\n static sort<T, K extends keyof T>(array: T[], propriedade: K): T[] {\n return array.sort((a, b) => (a[propriedade] < b[propriedade] ? -1 : 1));\n }\n\n static converteEnterEmBr(texto: string): string {\n return texto.replace(/\\n/g, \"<br>\");\n }\n\n static hasHtmlTags(texto: string): boolean {\n const regex = /<\\/?[a-z][\\s\\S]*>/i;\n return regex.test(texto);\n }\n\n\n /**\n * Une duas listas quando elas tem uma propriedade em comum\n * @param listaA Lista a ser sobreescrita ou preenchida\n * @param listaB Lista com os dados para preencher ou sobreescrever\n * @param propEmComum Nome da propriedade que, se estiver em comum nas listas, será populado, do contrário não.\n * @returns Lista Unida por um Filtro.\n */\n static Union(listaA: any[], listaB: any[], propEmComum?: string): any[] {\n let resultado = listaA.map(itensA => ({\n ...itensA,\n ...listaB.filter(o => o[propEmComum as keyof typeof o]?.toString() == itensA[propEmComum as keyof typeof listaA]?.toString())[0],\n }));\n G_START(3, \"Unindo Listas...\")\n LOG(3, \"ListaA: \", listaA);\n LOG(3, \"ListaB: \", listaB);\n LOG(3, \"Resultado: \", resultado);\n G_END(3);\n return resultado;\n }\n\n /**\n * Gera uma string menor que a informada.\n * @returns \n */\n static gerarHashCurto(texto: string, tamanho: number = 8): string {\n let hash = 0;\n for (let i = 0; i < texto.length; i++) {\n hash = ((hash << 5) - hash) + texto.charCodeAt(i);\n hash = hash & hash; // Converte para inteiro de 32 bits\n }\n // Converter para string hexadecimal positiva e pegar os primeiros caracteres\n return Math.abs(hash).toString(16).substring(0, tamanho);\n }\n\n static gerarNomeColection(nomeSistema: string, colecao: string): string {\n return LibUtil.gerarHashCurto(nomeSistema) + \"_\" + colecao;\n }\n\n\n static apenasNumerosLetras = (s: string = \"\"): string => {\n if (s == null) return \"\";\n // Ignora qualquer outro caracter além de Numeros e Letras formato ocidental\n return s.replace(/(?![a-zA-Z0-9])./g, \"\");\n };\n\n static removeEspecias = (s: string): string => {\n if (s == null) return \"\";\n // Remove acentos e depois chama Apenas Números e Letras.\n s = s.toString();\n return LibUtil.apenasNumerosLetras(LibUtil.removeAcentos(s));\n };\n\n static LerTexto = async (texto = \"Teste som: 1, 2, 3.\", locutor = 0) => {\n let lerVoz = window.speechSynthesis;\n let listaVozes = lerVoz.getVoices().filter(o => o.lang.toLowerCase() == \"pt-br\");\n let locutorEncontrado = listaVozes[locutor] || listaVozes[0] || null;\n return new Promise((r) => {\n if (lerVoz.speaking) {\n LOG(1, \">> Ainda está reproduzindo. Tente mais tarde.\");\n return;\n }\n if (texto != \"\") {\n const ssu = new SpeechSynthesisUtterance(texto);\n ssu.lang = \"pt-BR\";\n ssu.voice = locutorEncontrado;\n ssu.pitch = 0; // Tom de voz\n ssu.rate = 1.5; // Velocidade\n ssu.onend = (ev) => { r(true) };\n ssu.onerror = (ev) => { LOG(1, \"❌ Erro: \", ev.error); r(false) };\n lerVoz.cancel();\n lerVoz.speak(ssu);\n }\n });\n }\n\n static async LerProximoERemover(playlist: string[]) {\n if (await LibUtil.LerTexto(playlist[0]) == true) {\n playlist.shift();\n }\n return playlist;\n }\n\n static LeituraInterrompida() {\n window.speechSynthesis.cancel();\n }\n\n static gerarNumeroInteiro(min: number, max: number): any {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n\n static SelectInner(e: HTMLInputElement) {\n // Seleciona texto do elemento\n if (window.getSelection) {\n const selection = window.getSelection();\n const range = document.createRange();\n range.selectNodeContents(e);\n selection?.removeAllRanges();\n selection?.addRange(range);\n }\n }\n\n static generatePrimaryKey(item: any, primarykey: string): any {\n if (item == null) {\n LOG(1, \"❌ Não foi possível gerar uma chave, pois o objeto ainda não está preenchido.\")\n return item;\n }\n\n if (LibUtil.classof(item) != \"object\") {\n LOG(1, \"⚠️ Não foi possível gerar uma chave neste tipo de variável: \", LibUtil.classof(item));\n return item;\n }\n\n if (item[primarykey] != null) {\n LOG(5, \"Chave não gerada no objeto, pois já estava preenchido com:\", item[primarykey]);\n return item;\n }\n\n item[primarykey] = LibUtil.uuid();\n return item;\n }\n\n static hslToHex(h: number, s: number, l: number) {\n // Normalize saturation and lightness to a 0-1 range\n s /= 100;\n l /= 100;\n\n let c = (1 - Math.abs(2 * l - 1)) * s,\n x = c * (1 - Math.abs(((h / 60) % 2) - 1)),\n m = l - c / 2,\n r = 0,\n g = 0,\n b = 0;\n\n if (0 <= h && h < 60) {\n r = c;\n g = x;\n b = 0;\n } else if (60 <= h && h < 120) {\n r = x;\n g = c;\n b = 0;\n } else if (120 <= h && h < 180) {\n r = 0;\n g = c;\n b = x;\n } else if (180 <= h && h < 240) {\n r = 0;\n g = x;\n b = c;\n } else if (240 <= h && h < 300) {\n r = x;\n g = 0;\n b = c;\n } else if (300 <= h && h < 360) {\n r = c;\n g = 0;\n b = x;\n }\n\n // Convert RGB values to 0-255 range\n r = Math.round((r + m) * 255);\n g = Math.round((g + m) * 255);\n b = Math.round((b + m) * 255);\n\n // Convert RGB components to hexadecimal and pad with leading zero if needed\n const toHex = (c: any) => {\n const hex = c.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n };\n\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n }\n\n static isFilled(dados: any): boolean {\n if (LibUtil.classof(dados) == \"array\") {\n if ((dados as Array<any>).length && (dados as Array<any>).length > 0) {\n return true;\n }\n }\n return false;\n }\n\n static replace(regex: string, valor: string | number): string {\n if (typeof valor === \"number\") valor = valor.toString();\n return valor.replace(new RegExp(regex, 'g'), '');\n }\n\n // Mínimo 2 timestamps\n static calculateJitter(timestamps: number[]): number {\n if (timestamps.length < 2) return 0;\n\n const delays = [];\n for (let i = 1; i < timestamps.length; i++) {\n delays.push(timestamps[i] - timestamps[i - 1]);\n }\n\n if (delays.length < 2) return 0;\n let totalJitterDifference = 0;\n\n for (let i = 1; i < delays.length; i++) {\n totalJitterDifference += Math.abs(delays[i] - delays[i - 1]);\n }\n\n return totalJitterDifference / (delays.length - 1);\n }\n\n // Soma os valores dos arrays por índice\n static somarPorIndice = (arrays: number[][]): number[] => {\n if (arrays.length === 0) return [];\n return arrays.reduce((acc, arr) =>\n arr.map((val, i) => (acc[i] || 0) + val)\n );\n }\n\n // Soma os valores dos arrays\n static somarArrayInterna = (arrays: number[][]): number[] => {\n if (arrays.length === 0) return [];\n return arrays.map(a => a.reduce((acc, v) => acc + v, 0));\n }\n\n // Faz o download de um Blob()\n static downloadBlob = (blob: Blob, nomeArquivo: string) => {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = nomeArquivo;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n }\n\n static wordsToCamelCase(texto: string): string {\n // Se houver espaços, traços, undercores, converte para camelCase\n return texto.split(/[\\s-_]+/)\n .map((word, index) =>\n index === 0 ? word : word.charAt(0).toUpperCase() + word.slice(1)\n ).join('');\n }\n\n static camelCase(texto: string): string {\n return texto.charAt(0).toLowerCase() + texto.slice(1);\n }\n\n static pascalCase(texto: string): string {\n return texto.charAt(0).toUpperCase() + texto.slice(1);\n }\n\n static dashedCase(texto: string): string {\n // Converte camelCase ou PascalCase para dashed-case\n return texto.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n }\n\n static separaWordsCase(texto: string): string {\n // Separa as palavras ao trocar de letra minúscula para maiúscula.\n // CodigoIBGE => Codigo IBGE\n let textoSeparado = texto.replace(/([a-z])([A-Z])/g, '$1 $2');\n return textoSeparado;\n }\n\n // Separa as palavras por espaço, traço ou underline, e retorna um array com as palavras.\n static wordsArray(texto: string): string[] {\n return texto.split(/[\\s-_]+/).filter(word => word.length > 0);\n }\n\n static tentaAcentuarTexto(s: string | string[]): string {\n // Utiliza regras de acentuação de português para tentar acentuar a palavra informada.\n if (LibUtil.classof(s) == \"array\") {\n return (s as string[]).map((palavra) => LibUtil.tentaAcentuarTexto(palavra)).join(\" \");\n }\n let texto = (s as string);\n if (texto.endsWith(\"ao\")) {\n texto = texto.slice(0, -2) + \"ão\"; // Ex: mão\n }\n if (texto.endsWith(\"oes\")) {\n texto = texto.slice(0, -3) + \"ões\"; // Ex: permissões\n }\n if (texto.endsWith(\"cao\") || texto.endsWith(\"çao\") || (texto.endsWith(\"cão\") && texto != \"cão\")) {\n texto = texto.slice(0, -3) + \"ção\"; // Ex: ação\n }\n if (texto.endsWith(\"coes\") || texto.endsWith(\"çoes\") || texto.endsWith(\"cões\")) {\n texto = texto.slice(0, -4) + \"ções\"; // Ex: observações\n }\n\n return texto;\n }\n\n static pluralOf(word: string | string[]): string {\n // Retorna o plural da palavra informada em português\n if (LibUtil.classof(word) == \"array\") {\n return (word as string[]).map((palavra) => LibUtil.pluralOf(palavra)).join(\" \");\n }\n\n let texto = (word as string);\n if (texto.endsWith(\"ão\")) {\n return texto.slice(0, -2) + \"ões\";\n } else if (texto.endsWith(\"ões\")) {\n return texto.slice(0, -3) + \"ões\";\n } else if (texto.endsWith(\"r\") || texto.endsWith(\"s\") || texto.endsWith(\"z\")) {\n return texto + \"es\";\n } else if (texto.endsWith(\"m\")) {\n return texto.slice(0, -1) + \"ns\";\n } else if (texto.endsWith(\"l\")) {\n return texto.slice(0, -1) + \"is\";\n } else {\n return texto + \"s\";\n }\n }\n\n static setFormConfigs(configs: Partial<IFieldComponent<any>>): void {\n LibUtil.formConfigs = configs;\n }\n\n static paraPortugues(texto: string): string {\n let acentuado = LibUtil.tentaAcentuarTexto(LibUtil.wordsArray(LibUtil.separaWordsCase(texto)))\n return LibUtil.replaceDicionario(acentuado);\n }\n\n static paraPortuguesPlural(texto: string): string {\n let plural = LibUtil.pluralOf(LibUtil.paraPortugues(texto))\n return plural;\n }\n\n // Dicionário\n static replaceDicionario(texto: string): string {\n if (texto.startsWith(\"Is \")) {\n texto = texto.replace(/^Is /, \"É \");\n }\n texto = texto.replaceAll(\"Codigo\", \"Código\");\n texto = texto.replaceAll(\"Icone\", \"Ícone\");\n texto = texto.replaceAll(\"Enderec\", \"Endereç\");\n texto = texto.replaceAll(\"Balanc\", \"Balanç\");\n texto = texto.replaceAll(\"Usuari\", \"Usuári\");\n texto = texto.replaceAll(\"Lancamento\", \"Lançamento\");\n texto = texto.replaceAll(\"Referencia\", \"Referência\");\n texto = texto.replaceAll(\"Ultim\", \"Últim\");\n texto = texto.replaceAll(\"Numero\", \"Número\");\n texto = texto.replaceAll(\"Inicio\", \"Início\");\n texto = texto.replaceAll(\"Socio\", \"Sócio\");\n texto = texto.replaceAll(\"Socia\", \"Sócia\");\n texto = texto.replaceAll(\"Especie\", \"Espécie\");\n texto = texto.replaceAll(\"Cobranca\", \"Cobrança\");\n texto = texto.replaceAll(\"Modulo\", \"Módulo\");\n texto = texto.replaceAll(\"Servico\", \"Serviço\");\n texto = texto.replaceAll(\"Aliquota\", \"Alíquota\");\n texto = texto.replaceAll(\"Calculo\", \"Cálculo\");\n texto = texto.replaceAll(\"Unitario\", \"Unitário\");\n texto = texto.replaceAll(\"Procedencia\", \"Procedência\");\n texto = texto.replaceAll(\"Mudanca\", \"Mudança\");\n texto = texto.replaceAll(\"Pratica\", \"Prática\");\n texto = texto.replaceAll(\"Propria\", \"Própria\");\n texto = texto.replaceAll(\"Impropria\", \"Imprópria\");\n texto = texto.replaceAll(\"Responsavel\", \"Responsável\");\n texto = texto.replaceAll(\"Conjuge\", \"Cônjuge\");\n texto = texto.replaceAll(\"Cafe\", \"Café\");\n texto = texto.replaceAll(\"Transferencia\", \"Transferência\");\n texto = texto.replaceAll(\"Bancaria\", \"Bancária\");\n texto = texto.replaceAll(\"Agencia\", \"Agência\");\n texto = texto.replaceAll(\"Digito\", \"Dígito\");\n\n if (texto.includes(\"Mes \")) texto = texto.replaceAll(\"Mes \", \"Mês \");\n if (texto.endsWith(\"Mes\")) texto = texto.replace(/Mes$/, \"Mês\");\n if (texto.includes(\"Ate \")) texto = texto.replaceAll(\"Ate \", \"Até \");\n if (texto.endsWith(\"Ate\")) texto = texto.replace(/Ate$/, \"Até\");\n if (texto.includes(\"Socio \")) texto = texto.replaceAll(\"Socio \", \"Sócio \");\n if (texto.endsWith(\"Socio\")) texto = texto.replace(/Socio$/, \"Sócio\");\n if (texto.includes(\"Socia \")) texto = texto.replaceAll(\"Socia \", \"Sócia \");\n if (texto.endsWith(\"Socia\")) texto = texto.replace(/Socia$/, \"Sócia\");\n return texto;\n }\n\n}\n\n\nexport type IClassOf = \"string\" | \"number\" | \"nan\" | \"object\" | \"array\" | \"boolean\" | \"undefined\" | \"null\" | \"function\" | \"date\" | \"regexp\" | \"error\" | \"symbol\" | \"bigint\"\n\nexport interface IFormatter {\n mask: string | ((value: any) => string);\n regex: string;\n validate: (value: any) => boolean;\n}\n\nexport interface IUtilFormatters {\n cpf: IFormatter;\n cnpj: IFormatter;\n cpf_cnpj: IFormatter;\n cnh: IFormatter;\n pis: IFormatter;\n dia: IFormatter;\n mes: IFormatter;\n ano: IFormatter;\n anoRecente: IFormatter;\n data: IFormatter;\n dataIso: IFormatter;\n numero: IFormatter;\n decimal: IFormatter;\n letra: IFormatter;\n numeroELetra: IFormatter;\n ip: IFormatter;\n email: IFormatter;\n cep: IFormatter;\n}\n\nexport interface MapeamentoItem<T, U> {\n de: keyof T;\n para: keyof U;\n transforma: (v: T[keyof T]) => U[keyof U];\n}\n","import { computed, signal, Type, WritableSignal } from \"@angular/core\";\nimport { IKV, IKV_ext, ITipoBotao, ITiposTema } from '../../interfaces/interfaces';\nimport { LibUtil } from \"../../util/util\";\nimport { LOG } from '../../util/log';\n\nexport class Formulario {\n\n campos = signal<IFields<any>>({});\n listaCampos = computed<IFieldComponent<any>[]>(() => Object.values(this.campos()));\n listaErrors = computed<string[]>(() => {\n let errors: string[] = [];\n for (const key of Object.keys(this.campos())) {\n const campoErros = this.campos()?.[key]?.errors;\n if (campoErros && campoErros.length > 0) {\n errors = [...errors, ...campoErros.map(e => `${String(key)}: ${e}`)];\n }\n }\n return errors;\n });\n values = signal<any>({});\n registredFields = signal<{ [key in keyof IFields<any>]: any }>({});\n\n showTouched = signal<boolean>(false);\n isEnviado: boolean = false;\n isEnviando: boolean = false;\n instance: any = null;\n\n valido = computed(() => {\n for (const key of Object.keys(this.campos())) {\n const campo = this.campos()[key];\n const errors = campo.errors;\n if (errors && errors.length > 0) {\n return false;\n }\n }\n return true;\n });\n algumTocado = computed(() => {\n return this.listaCampos().some(campo => campo.touched);\n });\n\n constructor(campos: IFields<any>, startValues: any = {}, instance: any = null) {\n this.instance = instance;\n let values: any = this._startValues(campos, startValues);\n let camposStarted: IFields<any> = {};\n for (const key of Object.keys(campos)) {\n camposStarted[key] = {\n ...campos[key],\n touched: false,\n invalid: false,\n errors: [], // [Valide.msg.naoValidado]\n ...LibUtil.formConfigs,\n };\n }\n this.campos.set(camposStarted);\n this.values.set(values);\n this.obterOpcoes();\n return this;\n }\n\n updateValues(newValues: any) {\n if (LibUtil.classof(newValues) !== 'object') {\n LOG(1, \"❌ Formulario.updateValues deve receber um objeto.\");\n }\n this.values.update(v => {\n return { ...v, ...newValues }\n });\n }\n\n removeValue(prop: keyof IFields<any>) {\n this.values.update(v => {\n if (v.hasOwnProperty(prop)) {\n delete v[prop];\n } else {\n LOG(1, `❌ Formulario.removeValue: Propriedade '${String(prop)}' não existe nos valores.`);\n }\n return { ...v };\n });\n }\n\n updateCampo(prop: keyof IFields<any>, newCampoData: Partial<IFieldComponent<any>>) {\n if (newCampoData.hasOwnProperty('errors')) {\n newCampoData.invalid = (newCampoData.errors && newCampoData.errors.length > 0);\n }\n this.campos.update(c => {\n if (c[prop]) {\n c[prop] = { ...c[prop], ...newCampoData };\n } else {\n LOG(1, `❌ Formulario.updateCampo: Campo '${String(prop)}' não existe.`);\n }\n return { ...c };\n });\n }\n\n setAllCamposPartial(newCampoData: Partial<IFieldComponent<any>>) {\n if (newCampoData.hasOwnProperty('errors')) {\n newCampoData.invalid = (newCampoData.errors && newCampoData.errors.length > 0);\n }\n this.campos.update(c => {\n for (const key of Object.keys(c)) {\n c[key] = { ...c[key], ...newCampoData };\n }\n return { ...c };\n });\n }\n\n setAllValuesTo(value: any) {\n this.values.update(v => {\n for (const key of Object.keys(v)) {\n v[key] = value;\n }\n return { ...v };\n });\n }\n\n resetToStartValues() {\n const campos = this.campos();\n const startValues = this._startValues(campos);\n this.values.set(startValues);\n }\n\n private _startValues(campos: IFields<any>, startValues: any = {}) {\n let values: any = {};\n for (const key of Object.keys(campos)) {\n values[key] = campos[key].value ?? '';\n }\n values = { ...values, ...startValues };\n return values;\n }\n\n setDisabledAll(disabled: boolean) {\n this.setAllCamposPartial({ disabled });\n }\n\n setTouchedAll(touched: boolean) {\n this.setAllCamposPartial({ touched });\n }\n\n async validar(): Promise<any> {\n let camposComErros: string[] = [];\n let camposPendentes: string[] = [];\n\n // Executa validações diretamente nos campos registrados\n for (const key of Object.keys(this.registredFields())) {\n const campoComponent = this.registredFields()[key];\n if (campoComponent && typeof campoComponent.executarValidacoes === 'function') {\n try {\n await campoComponent.executarValidacoes();\n } catch (error) {\n LOG(1, `❌ Erro ao validar o campo '${key}':`, error);\n }\n }\n }\n\n // Verifica cada campo para erros e pendências\n for (const key of Object.keys(this.campos())) {\n const campo = this.campos()[key];\n if (campo.errors && campo.errors.length > 0) {\n LOG(1, `❌ Erro de validação no campo '${key}':`, campo.errors);\n camposComErros.push(key);\n }\n if (campo.pending) {\n LOG(1, `⏳ Campo '${key}' ainda está pendente.`);\n camposPendentes.push(key);\n }\n }\n\n // Se houver campos pendentes ou com erros rejeita a validação\n if (camposPendentes.length > 0) {\n return Promise.reject(`${camposPendentes.length} Campos pendentes: ${camposPendentes.join(', ')}`);\n }\n if (camposComErros.length > 0) {\n return Promise.reject(`${camposComErros.length} Campos com erros (inválidos): ${camposComErros.join(', ')}`);\n }\n return this.values();\n }\n\n private async obterOpcoes() {\n let campos = this.campos();\n for (const key of Object.keys(campos)) {\n let campo = campos[key];\n // Ignora campos que não são de seleção\n if ([IField.AutoComplete, IField.Select].indexOf(campo.tipo) === -1) continue;\n this.updateCampo(campo.prop, { pending: false });\n\n // Inicializa o signal de opções se não existir\n if (campo.options === undefined) campo.options = signal<IKV[]>([]);\n\n // Opções atuais\n const opcoesAtuais = campo.options?.();\n\n // Se já houver opções E não estiverem vazias, não executa o refill neste momento\n if (opcoesAtuais && opcoesAtuais.length > 0) continue;\n\n // Um refill inicial será executado se definido\n if (campo.refill) {\n LOG(4, `🔄 Refill em '${key}'. Opções iniciais:`, opcoesAtuais);\n this.updateCampo(campo.prop, { pending: true });\n let options: IKV[] | null = null;\n try {\n options = await campo.refill(this);\n\n // await LibUtil.wait(1000);\n if (campo.mapear) {\n options = await campo.mapear(options);\n }\n // let opcoesKV: IKV[] = this.conveterEntidadesParaKV(options, campo.servico.configService.propsDisplay);\n if (options === null || LibUtil.classof(options) !== 'array') {\n options = [];\n }\n\n // Só atualiza as opções se houver conteúdo, pois já está iniciado o signal.\n if (options.length > 0) {\n // campo.options.set(options);\n this.updateCampo(campo.prop, { options: signal(options) });\n LOG(3, `🔄 Refill em '${key}'. recebido:`, options);\n }\n } catch (error) {\n LOG(1, `❌ Erro ao obter opções para o campo '${key}':`, error);\n }\n this.updateCampo(campo.prop, { pending: false });\n\n // Se o onMatchOptionOnInit estiver definido, executa o onMatchOption com a opção correspondente ao valor atual do campo.\n if (campo.onMatchOptionOnInit) {\n const optionValue = options?.find(opt => opt.k === this.values()[campo.prop]);\n if (campo.onMatchOption && optionValue) {\n try {\n campo.onMatchOption?.(this, optionValue);\n } catch (err) {\n LOG(1, `❌ Erro ao executar onMatchOption do campo '${key}'`, err);\n }\n }\n }\n\n // Ao concluir o refill executa afterRefill, se definido.\n if (campo.afterRefill) {\n await campo.afterRefill(this, options);\n }\n }\n }\n }\n\n // Remove os valores que não estão nos campos e os tipos campos que não devem ter valor.\n sanitizar() {\n const campos = this.campos();\n const valoresAtuais = this.values();\n const novosValores: any = {};\n for (const key of Object.keys(campos)) {\n if (campos[key].sanitize) continue;\n if (key in valoresAtuais) {\n novosValores[key] = valoresAtuais[key];\n }\n }\n this.values.set(novosValores);\n }\n\n // Remove os valores que não estão nos campos ou que estão em campos desabilitados.\n onlyAvailable() {\n const novosValores: any = {};\n const valoresAtuais = this.values();\n const campos = this.campos();\n for (const campo of Object.values(campos)) {\n if (campo.prop in valoresAtuais && !campo.disabled) {\n novosValores[campo.prop] = valoresAtuais[campo.prop];\n }\n }\n this.values.set(novosValores);\n }\n\n save() {\n if (this.instance && typeof this.instance.onSave === 'function') {\n this.instance.onSave();\n } else {\n LOG(1, \"❌ Formulario.save: instância não encontrada.\");\n }\n }\n\n}\n\n\n\n/************************************************\\\\\n// Modo de uso\t\t\t\t\t\t\t\t\t\t\t\t\t\t \\\\\n//*************************************************/\n\nexport interface IFields<T> {\n [key: string]: IFieldComponent<T>;\n}\n\n/************************************************\\\\\n// Tipos de Campos disponíveis para uso\t \\\\\n//*************************************************/\n\nexport enum IField {\n AutoComplete = 'autocomplete',\n Button = 'button',\n Checkbox = 'checkbox',\n Color = 'color',\n Custom = 'custom',\t\t\t\t\t\t\t\t// <== Componentes customizados para uma determinada área.\n Date = 'date',\n DateTime = 'datetime',\n Display = 'display',\t\t\t\t\t\t\t// Representa um campo apenas para exibição\n Editor = 'editor',\t\t\t\t\t\t\t\t// Texto multilinha e com Editor\n Email = 'email',\n Hidden = 'hidden',\n Icon = 'icon',\t\t\t\t\t\t\t\t\t\t// Combo de um texto que permite selecionar um icone instalado no sistema.\n MultiFactor = 'multifactor',\t\t\t// Combo de 6 campos texto para preenchimento individual por caracter.\n MultiKV = 'multikv', // Permite adicionar ou retirar itens em forma KV (Como usado nos seletores e no Importar)\n MultiText = 'multitext',\t\t\t\t\t// Lista com: Texto em unica linha.\n Number = 'number',\n Password = 'password',\n Referencia = 'referencia',\t\t\t\t// Campo que referencia um registro de outra entidade. Utilizado para exibir objetos recebidos de relacionamento.\n Search = 'search',\n Select = 'select',\n Slide = 'slide',\n Text = 'text',\t\t\t\t\t\t\t\t\t\t// Texto em unica linha.\n Textarea = 'textarea',\t\t\t\t\t\t// Texto multilinha.\n Time = 'time',\t\t\t\t\t\t\t\t\t\t// Campo de hora (HH:MM)\n Upload = 'upload', \t\t\t\t\t\t\t\t// (Padrão 1 Imagem)(Padrao Accept: \".png,.svg,.jpg,.jpeg,.gif\")\n\n}\n\n/************************************************\\\\\n// Propriedades para Campos\t\t\t\t\t\t\t\t \\\\\n//*************************************************/\n\nexport interface IFieldComponent<T> {\n tipo: IField,\t\t\t\t\t\t\t\t\t\t\t// [OBRIGATORIO] Tipo do campo.\n prop: keyof T & string,\t\t\t\t\t\t// [OBRIGATORIO] nome da propriedade a ser enviada e do controle do formulário.\n value?: any,\t\t\t\t\t\t\t\t\t\t\t// Valor do campo.\n titulo?: string,\t\t\t\t\t\t\t\t\t// nome do campo a ser exibido ao usuário (Display)\n area?: string,\t\t\t\t\t\t\t\t\t\t// Posição gridArea. Doc: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-area\n icone?: string,\t\t\t\t\t\t\t\t\t\t// Ícone a ser exibido no campo.\n placeholder?: string,\t\t\t\t\t\t\t// Texto exibido que não representam o valor.\n style?: string,\t\t\t\t\t\t\t\t\t\t// Estilos CSS a serem aplicados no campo.\n classe?: string,\t\t\t\t\t\t\t\t\t// Classes CSS a serem aplicadas no campo.\n hideLabel?: boolean,\t\t\t\t\t\t\t// Controla se o campo deve ocultar o label (titulo).\n filter?: boolean,\t\t\t\t\t\t\t\t\t// Padrão true. Indica se o campo será usado em filtros (em grids, por exemplo).\n autofocus?: boolean,\t\t\t\t\t\t\t// Define se o campo deve receber foco automaticamente ao ser exibido.\n regras?: IRegra[],\t\t\t\t\t\t\t\t// Regras de validação do campo.\t\n maxl?: number,\t\t\t\t\t\t\t\t\t\t// Tamanho máximo do valor.\n minl?: number,\t\t\t\t\t\t\t\t\t\t// Tamanho mínimo do valor.\n errors?: (string | undefined)[],\t// Lista de mensagens de erro para o campo.\n dica?: string,\t\t\t\t\t\t\t\t\t\t// Texto de ajuda para o campo.\n onInput?: (form: Formulario) => any;// Executada a cada alteração simples no campo.\n onChange?: (form: Formulario) => any;// Executada ao fim de uma alteração no campo.\n\n // Indicadores\n readonly?: boolean,\t\t\t\t\t\t\t\t// Indisponibiliza a edição.\n need?: boolean,\t\t\t\t\t\t\t\t\t\t// Valida se o campo está preenchido.\n touched?: boolean,\t\t\t\t\t\t\t\t// Indica se o campo foi tocado/editado.\n disabled?: boolean,\t\t\t\t\t\t\t\t// Indisponibiliza todos os controles.\n invalid?: boolean,\t\t\t\t\t\t\t\t// Indica se o campo está inválido.\n empty?: boolean,\t\t\t\t\t\t\t\t\t// Indica se o campo está vazio.\n pending?: boolean,\t\t\t\t\t\t\t\t// Indica que o campo está em estado de espera (loading).\n\n // Configurações específicas por tipo de campo\n tema?: ITiposTema,\t\t\t\t\t\t\t\t// Tema do botão (para button, etc).\n tituloClicavel?: string,\t\t\t\t\t// Título do botão (para button, slide, etc).\n textoAtivo?: string,\t\t\t\t\t\t\t// Texto quando ativo (para slide).\n textoInativo?: string,\t\t\t\t\t\t// Texto quando inativo (para slide).\n tituloChave?: string,\t\t\t\t\t\t // Titulo para a chave (para multikv).\n tituloValor?: string,\t\t\t\t\t\t // Titulo para o valor (para multikv).\n rows?: number,\t\t\t\t\t\t\t\t\t\t// Número de linhas (para textarea, select).\n cols?: number,\t\t\t\t\t\t\t\t\t\t// Número de colunas (para textarea).\n mask?: string | ((valor?: string) => string),\t// Máscara a ser aplicada ao valor.\n options?: WritableSignal<IKV[]>// Opções para campos que possuem seleção (select, radio, etc).\n multiple?: boolean,\t\t\t\t\t\t\t\t// Permitir múltiplas seleções (para select, upload, etc).\n canUnselect?: boolean,\t\t\t\t\t\t// Permitir desselecionar a opção selecionada (para select, radio, etc).\n componente?: Type<any>;\t\t\t\t\t\t// Componente Angular personalizado para renderizar este campo. (para custom)\n tipoBotao?: ITipoBotao;\t\t\t\t\t\t// Tipo do botão (para button).\n onClick?: (form: Formulario) => any;// Função chamada quando o campo é clicado (para button, etc).\n afterRefill?: (form: Formulario, options: IKV[] | null) => any;// Função chamada após o refill do campo (para select, autocomplete, etc).\n onMatchOption?: (form: Formulario, option?: IKV_ext) => any;\t// Função chamada quando uma opção é selecionada (para autocomplete, select, etc).\n onMatchOptionOnInit?: boolean,\t\t// Indica se deve disparar onMatchOption ao iniciar o componente.\n onComplete?: (form: Formulario, value: any) => any\t// Função chamada quando o campo é completado (para multifactor, etc).\n showHeader?: boolean,\t\t\t\t\t\t\t// Define se o campo deve exibir o cabeçalho (header) com o título e ícone.\n showToolbar?: boolean,\t\t\t\t\t\t// Define se o campo deve exibir a toolbar de formatação (para editor).\n accept?: string,\t\t\t\t\t\t\t\t\t// Define os tipos de arquivos aceitos (para upload, dropzone, etc). \".png,.svg,.jpg,.jpeg,.gif\"\n refill?: (form: Formulario) => Promise<IKV[] | null>;\t// Função que retorna os dados para popular o campo (para select, autocomplete, etc).\n mapear?: (r: any) => Promise<IKV[] | null>;\t// Função que mapeia o valor do campo para o formato esperado na submissão do formulário.\n subFields?: IFields<any>; \t\t\t\t// Define os sub-campos (para multiobject).\n isCollapsed?: () => boolean;\t\t\t// Indica se o campo deve colapsar.\n getDisplay?: (value: any, form?: Formulario) => any;\t// Função para obter o valor a ser exibido no campo, normalmente no campo Referencia.\n textEmpty?: string;\t\t\t\t\t\t\t\t// Texto a ser exibido quando o campo estiver vazio (para select).\n sanitize?: boolean;\t\t\t\t\t\t// Indica se o valor do campo deve ser sanitizado antes de ser enviado (removendo caracteres inválidos, por exemplo).\n}\n\n/************************************************\\\\\n// FASES\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \\\\\n//*************************************************/\n\nexport interface IFases<T> {\n fases: IFaseCampos<T>[],\n isLinear?: boolean,\n orientation?: 'horizontal' | 'vertical',\n}\n\nexport interface IFaseCampos<T> {\n nome: string,\n icone?: string | null,\n completed?: boolean,\n optional?: boolean,\n hasErrors?: boolean,\n errorMessage?: string,\n campos: (IFaseCamposAgrupados<T> | keyof T & string)[],\n disabled?: boolean,\n gridMin?: string,\t// Valor padrão para grid-template-columns mínimo das fases. Ex: \"150px\"\n gridMax?: string,\t// Valor padrão para grid-template-columns máximo das fases. Ex: \"1fr\"\n}\n\nexport interface IFaseCamposAgrupados<T> {\n campos: (keyof T & string)[],\n titulo?: string,\n area?: string,\n tituloArea?: string,\n}\n\n/************************************************\\\\\n// CAMPOS SIMPLIFICADOS\t\t\t\t\t\t\t\t\t\t \\\\\n//*************************************************/\n\nexport class CampoDe {\n\n static AutoComplete<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.AutoComplete,\n prop,\n titulo,\n ...config,\n };\n }\n\n static Button<T>(prop: any, tituloClicavel: string, click: (form: Formulario) => void, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Button,\n prop,\n tituloClicavel,\n sanitize: true, // Button é padrão true.\n onClick: click,\n ...config,\n }\n }\n\n static Checkbox<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Checkbox,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Color<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Color,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Cpf<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Text,\n prop,\n titulo,\n mask: LibUtil.formats.cpf.mask,\n placeholder: \"000.000.000-00\",\n regras: [Regra.CPF()],\n ...config,\n }\n }\n\n static Cnpj<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Text,\n prop,\n titulo,\n mask: LibUtil.formats.cnpj.mask,\n placeholder: \"00.000.000/0000-00\",\n regras: [Regra.CNPJ()],\n ...config,\n }\n }\n\n static CpfCnpj<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Text,\n prop,\n titulo,\n mask: LibUtil.formats.cpf_cnpj.mask,\n placeholder: \"000.000.000-00 ou 00.000.000/0000-00\",\n maxl: 18,\n // regras: [Regra.CPF_CNPJ()],\n ...config,\n }\n }\n\n static Custom<T>(prop: keyof T & string, componente: Type<any>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Custom,\n prop,\n titulo,\n componente,\n ...config,\n }\n }\n\n static Date<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Date,\n prop,\n titulo,\n ...config,\n }\n }\n\n static DateTime<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.DateTime,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Display<T>(prop: any, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Display,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Editor<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Textarea,\n prop,\n titulo,\n area: 'auto / auto / span 2 / auto',\n ...config,\n }\n }\n\n static Email<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Email,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Hidden<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Hidden,\n need: false,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Icon<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Icon,\n prop,\n titulo,\n ...config,\n }\n }\n\n static MultiFactor<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.MultiFactor,\n prop,\n titulo,\n ...config,\n }\n }\n\n static MultiKV<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.MultiKV,\n prop,\n titulo,\n ...config,\n }\n }\n\n static MultiText<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.MultiText,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Number<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Number,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Password<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Password,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Referencia<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Referencia,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Search<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Search,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Select<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Select,\n prop,\n titulo,\n ...config,\n };\n }\n\n static Slide<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Slide,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Upload<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Upload,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Text<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Text,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Textarea<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Textarea,\n prop,\n titulo,\n rows: 15,\n cols: 30,\n ...config,\n }\n }\n\n static Time<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Time,\n prop,\n titulo,\n ...config,\n }\n }\n\n static UploadImage<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Upload,\n prop,\n titulo,\n accept: \".png,.svg,.jpg,.jpeg,.gif\",\n ...config,\n }\n }\n\n}\n\n/************************************************\\\\\n// FILTROS SIMPLIFICADOS\t\t\t\t\t\t\t\t\t \\\\\n//*************************************************/\n\nexport class FiltroDe {\n\n static Boolean<T>(prop: Extract<keyof T, string>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<any> {\n return {\n ...CampoDe.Select<T>((prop as any), titulo, {\n options: signal([{ k: \"\", v: \"Todos\" }, { k: \"true\", v: \"Sim\" }, { k: \"false\", v: \"Não\" }])\n }),\n ...config,\n };\n };\n\n static Hidden<T>(prop: Extract<keyof T, string>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<any> {\n return CampoDe.Hidden<T>((prop as any), titulo, config);\n };\n\n /** Usar este FiltroTexto quando não for Hidden, Select ou Booleano */\n static Text<T>(prop: Extract<keyof T, string>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<any> {\n return CampoDe.Text<T>((prop as any), titulo, config);\n };\n\n static Select<T>(prop: Extract<keyof T, string>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<any> {\n return {\n ...CampoDe.Select<T>((prop as any), titulo),\n ...config,\n };\n };\n\n static Date<T>(prop: Extract<keyof T, string>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<any> {\n return {\n ...CampoDe.Date<T>((prop as any), titulo),\n ...config,\n };\n };\n\n}\n\n/************************************************\\\\\n// VALIDAÇÃO de campos\t\t\t\t\t\t\t\t\t\t \\\\\n//*************************************************/\n\nexport enum IRegraTipo {\n ApenasNumeros = \"apenasNumeros\",\n}\n\nexport interface IRegra {\n nome: string;\n mensagem: string;\n validar: (value: any) => boolean | Promise<boolean>;\n}\n\nexport class Regra {\n\n static ApenasNumeros(): IRegra {\n return {\n nome: IRegraTipo.ApenasNumeros,\n mensagem: Regra.mensagens.apenasNumeros,\n validar: (value: any): boolean => {\n let s = value.replace(/(?![0-9])./g, \"\");\n return value.length === s.length;\n }\n }\n }\n\n static ApenasLista(): IRegra {\n return {\n nome: \"apenasLista\",\n mensagem: Regra.mensagens.apenasLista,\n validar: (value: any): boolean => {\n return Array.isArray(value);\n }\n }\n }\n\n static ApenasListaDeObjetos(): IRegra {\n return {\n nome: \"apenasListaDeObjetos\",\n mensagem: Regra.mensagens.apenasListaDeObjetos,\n validar: (value: any): boolean => {\n if (!Array.isArray(value)) return false;\n for (let item of value) {\n if (typeof item !== 'object' || item === null) return false;\n }\n return true;\n }\n }\n }\n\n static EntreValores(min: number, max: number): IRegra {\n return {\n nome: \"apenasEntre\",\n mensagem: Regra.mensagens.apenasEntre(min, max),\n validar: (value: any): boolean => {\n if (typeof value !== 'number') return false;\n return value >= min && value <= max;\n }\n }\n }\n\n static TamanhoMinimo(qntCaracteres: number): IRegra {\n return {\n nome: \"temSizeMin\",\n mensagem: Regra.mensagens.temSizeMin,\n validar: (value: any): boolean => {\n if (!value) return false;\n return value.length >= qntCaracteres;\n }\n }\n }\n\n static TamanhoMaximo(qntCaracteres: number): IRegra {\n return {\n nome: \"temSizeMax\",\n mensagem: Regra.mensagens.temSizeMax,\n validar: (value: any): boolean => {\n if (!value) return true;\n return value.length <= qntCaracteres;\n }\n }\n }\n\n static ApenasLetras(): IRegra {\n return {\n nome: \"temApenasLetras\",\n mensagem: Regra.mensagens.temApenasLetras,\n validar: (value: any): boolean => {\n if (!value) return true;\n let s = value.replace(/(?![A-Za-z])./g, \"\");\n return value.length === s.length;\n }\n }\n }\n\n static ApenasNumerosELetras(): IRegra {\n return {\n nome: \"temApenasNumerosELetras\",\n mensagem: Regra.mensagens.temApenasNumerosELetras,\n validar: (value: any): boolean => {\n if (!value) return true;\n let s = value.replace(/(?![0-9A-Za-z])./g, \"\");\n return value.length === s.length;\n }\n }\n }\n\n static TemMaiuscula(): IRegra {\n return {\n nome: \"temMaiuscula\",\n mensagem: Regra.mensagens.temMaiuscula,\n validar: (value: any): boolean => {\n if (!value) return true;\n return /[A-Z]/.test(value);\n }\n }\n }\n\n static TemMinuscula(): IRegra {\n return {\n nome: \"temMinuscula\",\n mensagem: Regra.mensagens.temMinuscula,\n validar: (value: any): boolean => {\n if (!value) return true;\n return /[a-z]/.test(value);\n }\n }\n }\n\n static TemNumero(): IRegra {\n return {\n nome: \"temNumero\",\n mensagem: Regra.mensagens.temNumero,\n validar: (value: any): boolean => {\n if (!value) return true;\n return /[0-9]/.test(value);\n }\n }\n }\n\n static TemEspecial(): IRegra {\n return {\n nome: \"temEspecial\",\n mensagem: Regra.mensagens.temEspecial,\n validar: (value: any): boolean => {\n if (!value) return true;\n return /(?![0-9a-zA-Z])./.test(value);\n }\n }\n }\n\n static Email(): IRegra {\n return {\n nome: \"isEmail\",\n mensagem: Regra.mensagens.isEmail,\n validar: (value: any): boolean => {\n if (!value) return true;\n return LibUtil.formats.email.validate(value);\n }\n }\n }\n\n static Same(compareValue: any, mensagem?: string): IRegra {\n return {\n nome: \"isSame\",\n mensagem: mensagem || Regra.mensagens.isSame,\n validar: (value: any): boolean => {\n return value === compareValue;\n }\n }\n }\n\n static SenhaForte(): IRegra {\n return {\n nome: \"senhaForte\",\n mensagem: Regra.mensagens.senhaForte,\n validar: (value: any): boolean => {\n if (!value) return true;\n const hasNumber = /[0-9]/.test(value);\n const hasMaiuscula = /[A-Z]/.test(value);\n const hasMinuscula = /[a-z]/.test(value);\n const hasEspecial = /(?![0-9a-zA-Z])./.test(value);\n\n return hasNumber && hasMaiuscula && hasMinuscula && hasEspecial;\n }\n }\n }\n\n static Unique(asyncValidate: (value: any) => Promise<boolean>): IRegra {\n return {\n nome: \"isUnique\",\n mensagem: Regra.mensagens.isUnique,\n validar: async (value: any): Promise<boolean> => {\n return await asyncValidate(value);\n }\n }\n }\n\n static CepBR(): IRegra {\n return {\n nome: \"isCepBR\",\n mensagem: Regra.mensagens.isCepBR,\n validar: (value: any): boolean => {\n if (!value) return true;\n return /^([0-9]{2}[\\.]?[0-9]{3}[-]?[0-9]{3})$/.test(value);\n }\n }\n }\n\n static CPF(): IRegra {\n return {\n nome: \"isCPF\",\n mensagem: Regra.mensagens.isCPF,\n validar: (value: any): boolean => {\n if (!value) return true;\n let c = 0;\n let m1 = [10, 9, 8, 7, 6, 5, 4, 3, 2];\n let m2 = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2];\n let cpf = LibUtil.apenasNumeros(value);\n if (cpf.length != 11) { return false; }\n let temp = cpf.slice(0, 9);\n for (let i = 0; i < 9; i++) { c += Number(temp.charAt(i)) * m1[i]; }\n let r = c % 11;\n (r < 2) ? r = 0 : r = 11 - r;\n temp += r.toString();\n c = 0;\n for (let i = 0; i < 10; i++) { c += Number(temp.charAt(i)) * m2[i]; }\n r = c % 11;\n (r < 2) ? r = 0 : r = 11 - r;\n return cpf.charAt(10) == r.toString();\n }\n }\n }\n\n static CNPJ(): IRegra {\n return {\n nome: \"isCNPJ\",\n mensagem: Regra.mensagens.isCNPJ,\n validar: (value: any): boolean => {\n if (!value) return true;\n let digitCnpj = (cnpj: string) => {\n let m1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n let m2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n if (!cnpj) { return false; }\n cnpj = LibUtil.apenasNumeros(cnpj);\n if (cnpj.length != 14) { return false; }\n let temp = cnpj.slice(0, 12);\n let c = 0;\n for (let i = 0; i < 12; i++) { c += Number(temp.charAt(i)) * m1[i]; }\n let r = (c % 11);\n (r < 2) ? r = 0 : r = 11 - r;\n temp += r.toString();\n c = 0;\n for (let i = 0; i < 13; i++) { c += Number(temp.charAt(i)) * m2[i]; }\n r = (c % 11);\n (r < 2) ? r = 0 : r = 11 - r;\n return cnpj.charAt(13) == r.toString();\n }\n return digitCnpj(value);\n }\n }\n }\n\n static ClickRequired(): IRegra {\n return {\n nome: \"clickRequired\",\n mensagem: Regra.mensagens.clickRequired,\n validar: (value: any): boolean => {\n return value === true;\n }\n }\n }\n\n static Obrigatorio(): IRegra {\n return {\n nome: \"obrigatorio\",\n mensagem: Regra.mensagens.obrigatorio,\n validar: (value: any): boolean => {\n if (value === null || value === undefined) return false;\n if (typeof value === 'string' && value.trim() === '') return false;\n if (Array.isArray(value) && value.length === 0) return false;\n return true;\n }\n }\n }\n\n static mensagens = {\n obrigatorio: \"Campo Obrigatório.\",\n apenasNumeros: \"Apenas Números.\",\n apenasLista: \"O valor deve ser uma lista.\",\n apenasListaDeObjetos: \"O valor deve ser uma lista de objetos.\",\n apenasEntre: (min: number, max: number) => `O valor deve estar entre ${min} e ${max}.`,\n temSizeMin: \"Tamanho Mínimo.\",\n temSizeMax: \"Tamanho Excedido.\",\n temApenasNumeros: \"Apenas Números.\",\n temApenasLetras: \"Apenas Letras.\",\n temApenasNumerosELetras: \"Apenas Números e Letras.\",\n temMaiuscula: \"Faltou maiúscula.\",\n temMinuscula: \"Faltou minúscula.\",\n temNumero: \"Faltou numero.\",\n temEspecial: \"Faltou caracter Especial.\",\n isEmail: \"Email inválido.\",\n isSame: \"Valores diferentes.\",\n senhaForte: \"Senha Fraca.\",\n isUnique: \"Já está em uso.\",\n isCepBR: \"CEP inválido no Brasil.\",\n isCPF: \"CPF inválido.\",\n isCNPJ: \"CNPJ inválido.\",\n clickRequired: \"Clique Necessário.\",\n }\n\n\n}\n","import { Component, computed, effect, input, model, OnInit, output, signal } from '@angular/core';\nimport { Formulario, IFaseCamposAgrupados, IFases, IFieldComponent, IFields } from '../../Formulario/Formulario';\nimport { LOG } from '../../../util/log';\n\ninterface IFaseCampoGrupo {\n tipo: 'campo' | 'grupo',\n faseIndex: number,\n nome?: string,\n campo?: IFieldComponent<any>,\n grupo?: IFaseCamposAgrupados<any>,\n}\n\n@Component({\n selector: 'fields-base-fields-values',\n template: '',\n})\nexport abstract class BaseFieldsValues<T> implements OnInit {\n\n abstract onSave(): Promise<any>;\n\n form!: Formulario;\n\n values = model<Partial<T>>();\n campos = input.required<IFields<T>>();\n fases = input<IFases<T>>();\n\n gmin = input<string | undefined>();\n gmax = input<string | undefined>();\n showFormControls = input<boolean>(false);\n camposNaoEncontrados = new Set<string>();\n gruposNaoEncontrados = new Set<string>();\n\n formulario = output<Formulario>();\n\n isFaseado = computed(() => {\n let fases = this.fases()?.fases;\n return fases !== undefined && fases.length > 0;\n });\n isDisabledAction = signal<boolean>(true);\n isLoadingActive = signal<boolean>(false);\n faseIndex = signal<number>(0);\n\n listaFase = computed(() => {\n return this.fases()?.fases ?? [];\n });\n faseGrupo = computed<IFaseCampoGrupo[]>(() => {\n let listaFase = this.listaFase();\n if (!listaFase || listaFase.length === 0) {\n return [];\n }\n let resultado: IFaseCampoGrupo[] = [];\n for (let i = 0; i < listaFase.length; i++) {\n for (let campoOrGrupo of listaFase[i].campos) {\n if (typeof campoOrGrupo === 'string') {\n let campo = this.form.campos()[campoOrGrupo];\n if (!campo) {\n this.camposNaoEncontrados.add(campoOrGrupo);\n }\n resultado = [...resultado, { tipo: 'campo', nome: campoOrGrupo, campo: campo, grupo: undefined, faseIndex: i }];\n } else {\n if (campoOrGrupo.area === undefined) {\n // Para cada campo deste grupo encontrado em this.form.campos(), deve retornar a area de algum dos campos ou undefined\n let areaEncontrada = undefined;\n for (let campoNome of campoOrGrupo.campos) {\n let campo = this.form.campos()[campoNome];\n if (campo && campo.area) {\n areaEncontrada = campo.area;\n break;\n }\n }\n campoOrGrupo.area = areaEncontrada;\n }\n if (!campoOrGrupo) {\n this.gruposNaoEncontrados.add(campoOrGrupo);\n }\n resultado = [...resultado, { tipo: 'grupo', campo: undefined, grupo: campoOrGrupo, faseIndex: i }];\n }\n }\n }\n return resultado;\n });\n\n constructor() {\n effect(() => {\n let faseIndex = this.faseIndex();\n this.updateDisabledAction();\n });\n }\n ngOnInit(): void {\n this.form = new Formulario(this.campos(), this.values(), this);\n this.formulario.emit(this.form);\n\n // Verifica campos e grupos não encontrados após um pequeno delay para garantir que todos os cálculos foram feitos\n setTimeout(() => {\n if (this.camposNaoEncontrados.size > 0) LOG(1, \"❌ Campos não encontrados nas fases:\", Array.from(this.camposNaoEncontrados));\n if (this.gruposNaoEncontrados.size > 0) LOG(1, \"❌ Grupos não encontrados nas fases:\", Array.from(this.gruposNaoEncontrados));\n }, 1)\n }\n\n updateDisabledAction(forcedDisabled: boolean = false) {\n if (forcedDisabled) return this.isDisabledAction.set(true);\n\n let isFaseado = this.isFaseado();\n if (!isFaseado) return this.isDisabledAction.set(false);\n\n let isLinear = this.fases()?.isLinear ?? false;\n if (!isLinear) return this.isDisabledAction.set(false);\n\n let isUltimaFase = this.faseIndex() >= (this.listaFase().length - 1);\n this.isDisabledAction.set(!isUltimaFase);\n }\n}\n","import { Component, computed, HostBinding, input, OnDestroy, OnInit, output, Signal } from '@angular/core';\nimport { LibUtil } from '../../../util/util';\nimport { LOG } from '../../../util/log';\nimport { Formulario, IFieldComponent, IFields, Regra } from '../../Formulario/Formulario';\n\n@Component({ selector: 'app-BaseFieldsForm', template: '' })\nexport class BaseFieldsForm implements OnInit, OnDestroy {\n\n readonly form = input.required<Formulario>()\n readonly name = input.required<keyof IFields<any>>();\n change = output<string>();\n\n readonly value = computed(() => this.form().values()[this.name()]);\n readonly campo: Signal<IFieldComponent<any> | undefined> = computed(() => this.form().campos()[this.name()]);\n\n ngOnInit(): void {\n this.form().registredFields.update(old => ({ ...old, [this.name()]: this }));\n }\n ngOnDestroy(): void {\n this.form().registredFields.update(old => {\n const updated = { ...old };\n delete updated[this.name()];\n return updated;\n });\n }\n\n updateCampo(newCampoData: Partial<IFieldComponent<any>>) {\n this.form().updateCampo(this.name(), newCampoData);\n }\n\n updateValue(newValue: any, touch: boolean = true) {\n if (touch) this.tocarCampo();\n this.form().updateValues({ [this.name()]: newValue })\n }\n\n tocarCampo() {\n this.updateCampo({ touched: true });\n }\n\n onClickLabel() {\n LOG(2, \"Valor:\", this.value());\n LOG(2, \"Campo: \", this.campo());\n LOG(2, \"ClassOf: \", LibUtil.classof(this.value()));\n LOG(2, \"Opcoes: \", this.campo()?.options?.());\n }\n\n @HostBinding('style.grid-area')\n get gridArea() {\n return this.campo()?.area ?? 'auto';\n }\n\n onClickEmit() {\n this.campo()?.onClick?.(this.form());\n }\n\n // Executa o onChange com delay para utilizar o valor após ter executado o effect do empty.\n async onChangeEmit() {\n setTimeout(async () => {\n await this.executarValidacoes();\n this.campo()?.onChange?.(this.form());\n this.change.emit(this.value());\n }, 1)\n }\n\n async executarValidacoes() {\n // Padrão para todos os campos\n this.validarRequired();\n // Validações específicas\n await this.validarRegrasDoCampo();\n\n }\n\n validarRequired() {\n let isEmpty = this.campo()?.empty;\n if (this.campo()?.need && isEmpty) {\n LOG(1, `Campo '${this.name()}' é obrigatório e está vazio.`, this.campo());\n this.adicionaErro(Regra.mensagens.obrigatorio);\n } else {\n this.removerErro(Regra.mensagens.obrigatorio);\n }\n }\n\n async validarRegrasDoCampo() {\n let regrasDefinidas = this.campo()?.regras ?? [];\n if (!regrasDefinidas.length) return;\n for (const regra of regrasDefinidas) {\n if (regra) {\n let isValid = await regra.validar(this.value());\n if (!isValid) {\n this.adicionaErro(regra.mensagem);\n } else {\n this.removerErro(regra.mensagem);\n }\n } else {\n console.warn(`Regra de validação não encontrada para o campo \"${this.name()}\".`);\n }\n }\n }\n\n adicionaErro(erroNovo: string) {\n let errosAtuais = this.campo()?.errors ?? [];\n if (!errosAtuais.includes(erroNovo)) {\n this.updateCampo({ errors: [...errosAtuais, erroNovo] });\n }\n }\n\n removerErro(erroRemover: string) {\n let errosAtuais = this.campo()?.errors ?? [];\n if (errosAtuais.includes(erroRemover)) {\n this.updateCampo({ errors: errosAtuais.filter(e => e !== erroRemover) });\n }\n }\n\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\ninterface IconDef { box: string; paths: string[]; fillRule?: string }\n\nconst R: Record<string, IconDef> = {\n // ── Navigation ─────────────────────────────────────────────────────────\n 'arrow-left': { box: '0 0 16 16', paths: ['M15 8a.5.5 0 0 0-.5-.5H2.707l3.147-3.146a.5.5 0 1 0-.708-.708l-4 4a.5.5 0 0 0 0 .708l4 4a.5.5 0 0 0 .708-.708L2.707 8.5H14.5A.5.5 0 0 0 15 8'] },\n 'arrow-right': { box: '0 0 16 16', paths: ['M1 8a.5.5 0 0 1 .5-.5h11.793l-3.147-3.146a.5.5 0 0 1 .708-.708l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 0 1-.708-.708L13.293 8.5H1.5A.5.5 0 0 1 1 8'] },\n 'chevron-down': { box: '0 0 16 16', paths: ['M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'] },\n 'chevron-right': { box: '0 0 16 16', paths: ['M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'] },\n 'chevron-left': { box: '0 0 16 16', paths: ['M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'] },\n 'chevron-double-left': { box: '0 0 16 16', paths: ['M8.354 1.646a.5.5 0 0 1 0 .708L2.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0', 'M12.354 1.646a.5.5 0 0 1 0 .708L6.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'] },\n 'chevron-double-right': { box: '0 0 16 16', paths: ['M3.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L9.293 8 3.646 2.354a.5.5 0 0 1 0-.708', 'M7.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L13.293 8 7.646 2.354a.5.5 0 0 1 0-.708'] },\n // ── Caret / sort ───────────────────────────────────────────────────────\n 'caret-down': { box: '0 0 16 16', paths: ['M3.204 5h9.592L8 10.481zm-.753.659 4.796 5.48a1 1 0 0 0 1.506 0l4.796-5.48c.566-.647.106-1.659-.753-1.659H3.204a1 1 0 0 0-.753 1.659'] },\n 'caret-down-fill': { box: '0 0 16 16', paths: ['M7.247 11.14 2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z'] },\n 'sort-up': { box: '0 0 16 16', paths: ['M7.247 4.86l-4.796 5.481c-.566.647-.106 1.659.753 1.659h9.592a1 1 0 0 0 .753-1.659l-4.796-5.48a1 1 0 0 0-1.506 0z'] },\n 'sort-down': { box: '0 0 16 16', paths: ['M7.247 11.14 2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z'] },\n // ── Close / X ──────────────────────────────────────────────────────────\n 'x': { box: '0 0 16 16', paths: ['M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708'] },\n 'x-lg': { box: '0 0 16 16', paths: ['M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8z'] },\n // ── Check ──────────────────────────────────────────────────────────────\n 'check': { box: '0 0 16 16', paths: ['M10.97 4.97a.75.75 0 0 1 1.07 1.05l-3.99 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425z'] },\n 'check2-all': { box: '0 0 16 16', paths: ['M1.646 11.354a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0m3-3a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0m.5 6a.5.5 0 0 1-.708 0l-2.5-2.5a.5.5 0 0 1 .708-.708L5 13.293l9.646-9.647a.5.5 0 0 1 .708.708z'] },\n 'check2-square': { box: '0 0 16 16', paths: ['M3 14.5A1.5 1.5 0 0 1 1.5 13V3A1.5 1.5 0 0 1 3 1.5h8a.5.5 0 0 1 0 1H3a.5.5 0 0 0-.5.5v10a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5V8a.5.5 0 0 1 1 0v5a1.5 1.5 0 0 1-1.5 1.5zm9.354-10.354a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708L5 10.793l6.646-6.647a.5.5 0 0 1 .708 0'] },\n 'square': { box: '0 0 16 16', paths: ['M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z'] },\n 'check-double': { box: '0 0 16 16', paths: ['M8.97 4.97a.75.75 0 0 1 1.07 1.05l-3.99 4.99a.75.75 0 0 1-1.08.02L2.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093L8.95 4.992zm-.92 5.14.92.92a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 1 0-1.091-1.028L9.477 9.417l-.485-.486z'] },\n 'circle': { box: '0 0 16 16', paths: ['M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16'] },\n // ── Toast alerts ───────────────────────────────────────────────────────\n 'check-circle': { box: '0 0 16 16', paths: ['M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z'] },\n 'x-circle': { box: '0 0 16 16', paths: ['M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.646a.5.5 0 0 0 .708.708L8 8.707l2.646 2.647a.5.5 0 0 0 .708-.708L8.707 8l2.647-2.646a.5.5 0 0 0-.708-.708L8 7.293z'] },\n 'exclamation-triangle': { box: '0 0 16 16', paths: ['M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5m.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2'] },\n 'info-circle': { box: '0 0 16 16', paths: ['M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2'] },\n // ── Search / filter ────────────────────────────────────────────────────\n 'search': { box: '0 0 16 16', paths: ['M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001q.044.06.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1 1 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0'] },\n 'funnel': { box: '0 0 16 16', paths: ['M1.5 1.5A.5.5 0 0 1 2 1h12a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.128.334L10 8.692V13.5a.5.5 0 0 1-.342.474l-3 1A.5.5 0 0 1 6 14.5V8.692L1.628 3.834A.5.5 0 0 1 1.5 3.5zm1 .5v1.308l4.372 4.858A.5.5 0 0 1 7 8.5v5.306l2-.666V8.5a.5.5 0 0 1 .128-.334L13.5 3.308V2z'] },\n // ── Menu ───────────────────────────────────────────────────────────────\n 'three-dots-vertical': { box: '0 0 16 16', paths: ['M9.5 13a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0'] },\n 'dot': { box: '0 0 16 16', paths: ['M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3'] },\n // ── Star / decorative ──────────────────────────────────────────────────\n 'star-fill': { box: '0 0 16 16', paths: ['M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z'] },\n 'cursor-fill': { box: '0 0 16 16', paths: ['M14.082 2.182a.5.5 0 0 1 .103.557L8.528 15.467a.5.5 0 0 1-.917-.007L5.57 10.694.803 8.652a.5.5 0 0 1-.006-.916l12.728-5.657a.5.5 0 0 1 .556.103z'] },\n // ── Files ──────────────────────────────────────────────────────────────\n 'file-earmark': { box: '0 0 16 16', paths: ['M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1L14 5.5zM4 1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1z'] },\n 'file-earmark-fill': { box: '0 0 16 16', paths: ['M4 0h5.293A1 1 0 0 1 10 .293L13.707 4a1 1 0 0 1 .293.707V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2m5.5 1.5v2a1 1 0 0 0 1 1h2z'] },\n 'file-exclamation': { box: '0 0 16 16', paths: ['M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1L14 5.5zM4 1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1zm4 5.5a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-1 0V7a.5.5 0 0 1 .5-.5m0 5.5a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1'] },\n // ── Cloud / upload ─────────────────────────────────────────────────────\n 'cloud-upload': { box: '0 0 16 16', paths: ['M4.406 1.342A5.53 5.53 0 0 1 8 0c2.69 0 4.923 2 5.166 4.579C14.758 4.804 16 6.137 16 7.773 16 9.569 14.502 11 12.687 11H10a.5.5 0 0 1 0-1h2.688C13.979 10 15 8.988 15 7.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 2.825 10.328 1 8 1a4.53 4.53 0 0 0-2.941 1.1c-.757.652-1.153 1.438-1.153 2.055v.448l-.445.049C2.064 4.805 1 5.952 1 7.318 1 8.785 2.23 10 3.781 10H6a.5.5 0 0 1 0 1H3.781C1.708 11 0 9.366 0 7.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383', 'M7.646 4.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 5.707V14.5a.5.5 0 0 1-1 0V5.707L5.354 7.854a.5.5 0 1 1-.708-.708z'] },\n // ── Database ───────────────────────────────────────────────────────────\n 'database-check': { box: '0 0 16 16', paths: ['M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m1.679-4.493-1.335 2.226a.75.75 0 0 1-1.174.144l-.774-.773a.5.5 0 0 1 .708-.708l.547.548 1.17-1.951a.5.5 0 1 1 .858.514', 'M12.096 6.223A5 5 0 0 0 13 6c.5 0 .999.05 1.479.145v-1.29L13 5.5V4l1.479.677A4.97 4.97 0 0 0 16 4V1a1 1 0 0 0-.548-.9l-5-2.5a1 1 0 0 0-.904 0l-5 2.5A1 1 0 0 0 4 1v3a4.97 4.97 0 0 0 2.521.677L8 4v1.5l-1.479.677A4.97 4.97 0 0 0 4 5v1c0 .13.01.26.03.387.2.023.4.064.603.123A3 3 0 0 1 6.636 6.5c.17-.044.344-.075.523-.092A5.02 5.02 0 0 0 8 6.5c.5 0 .999-.05 1.479-.145v.007A4.02 4.02 0 0 1 12.096 6.223', 'M6.528 9.098a4.98 4.98 0 0 0-.033.666c0 .47.063.926.182 1.361A3.007 3.007 0 0 1 6 11c-.5 0-.999-.05-1.479-.145v1.29l1.479.678V14l-1.479-.677A4.97 4.97 0 0 0 2 14v-9c0 .13.01.26.03.387A4.97 4.97 0 0 0 4 6c.5 0 .999-.05 1.479-.145v1.29L4 7.5V9l1.479-.677A5.02 5.02 0 0 0 6.528 9.098'] },\n // ── Eye ────────────────────────────────────────────────────────────────\n 'eye': { box: '0 0 16 16', paths: ['M10.5 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0', 'M0 8s3-5.5 8-5.5S16 8 16 8s-3 5.5-8 5.5S0 8 0 8m8 3.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7'] },\n 'eye-slash': { box: '0 0 16 16', paths: ['M13.359 11.238C15.06 9.72 16 8 16 8s-3-5.5-8-5.5a7 7 0 0 0-2.79.588l.77.771A6 6 0 0 1 8 3.5c2.12 0 3.879 1.168 5.168 2.457A13 13 0 0 1 14.828 8q-.086.13-.195.288c-.335.48-.83 1.12-1.465 1.755q-.247.248-.517.486z', 'M11.297 9.176a3.5 3.5 0 0 0-4.474-4.474l.823.823a2.5 2.5 0 0 1 2.829 2.829zm-2.943 1.299.822.822a3.5 3.5 0 0 1-4.474-4.474l.823.823a2.5 2.5 0 0 0 2.829 2.829', 'M3.35 5.47q-.27.24-.518.487A13 13 0 0 0 1.172 8l.195.288c.335.48.83 1.12 1.465 1.755C4.121 11.332 5.881 12.5 8 12.5c.716 0 1.39-.133 2.02-.36l.77.772A7 7 0 0 1 8 13.5C3 13.5 0 8 0 8s.939-1.721 2.641-3.238l.708.709zm10.296 8.884-12-12 .708-.708 12 12z'] },\n // ── Person / user ──────────────────────────────────────────────────────\n 'person-lock': { box: '0 0 16 16', paths: ['M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0M8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4m0 5.996V14H3s-1 0-1-1 1-4 6-4c.564 0 1.077.038 1.544.107a4.5 4.5 0 0 0-.803.918A11 11 0 0 0 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664zM9 13a1 1 0 0 1 1-1v-1a2 2 0 1 1 4 0v1a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1zm3-3a1 1 0 0 0-1 1v1h2v-1a1 1 0 0 0-1-1'] },\n 'handshake': { box: '0 0 16 16', paths: ['M5 8a1 1 0 1 0 0-2 1 1 0 0 0 0 2', 'm3.75 0 .313.156A11.9 11.9 0 0 0 5 3.88V7.5h.5A1.5 1.5 0 0 1 7 9v.5h1.094l1.416-2.83a1 1 0 0 1 1.79.894l-1.94 3.88A3 3 0 0 1 6.683 13H5a3 3 0 0 1-3-3V7.5h-.5A1.5 1.5 0 0 1 0 6V1.5A1.5 1.5 0 0 1 1.5 0h1.88zM1.5 1a.5.5 0 0 0-.5.5V6a.5.5 0 0 0 .5.5H3V1.5H2a1 1 0 0 0-.5-.5zM4 1.5H3V6.5h.5v.5A.5.5 0 0 0 4 7.5H5.5A.5.5 0 0 0 6 7V3.88A10.9 10.9 0 0 1 4.813.94L4 1.5z', 'M12.5 16h2.25A1.25 1.25 0 0 0 16 14.75V7.5h-.5A1.5 1.5 0 0 0 14 9v.5h-1.094l-1.416-2.83a1 1 0 0 0-1.79.894l1.94 3.88A3 3 0 0 0 13.317 13H15a3 3 0 0 0 0-6h-1.25A1.25 1.25 0 0 0 12.5 8.25v.75h1v-.75a.25.25 0 0 1 .25-.25H15a2 2 0 1 1 0 4H13.317a2 2 0 0 1-1.789-1.106l-1.94-3.88a.002.002 0 0 0-.002-.001'] },\n 'handshake-slash': { box: '0 0 16 16', paths: ['M6.964 4.162A2.057 2.057 0 0 0 5.986 4H4V1.5a.5.5 0 0 0-.5-.5h-1A1.5 1.5 0 0 0 1 2.5v4A1.5 1.5 0 0 0 2.5 8H3v1.338c-.396.101-.727.32-.957.605L.854.146.146.854l15 15 .708-.708-3.28-3.28.022-.044 1.394-2.787a1 1 0 0 0-1.79-.894L10.784 11H9.5v-.5a1.5 1.5 0 0 0-1.5-1.5H7.5V7.88A11.94 11.94 0 0 0 8.687.94L8 1.5H6.964v2.662z', 'M4 7V4.5H3V7h1zm8-5.5h-1A1.5 1.5 0 0 0 9.5 3v4H9V3.88a11.94 11.94 0 0 1 1.687 7.78L5.5 6.539V7.5a1.5 1.5 0 0 0 1.5 1.5H8v.5a1.5 1.5 0 0 0 1.5 1.5H10v2a1.5 1.5 0 0 0 1.5 1.5h2A1.5 1.5 0 0 0 15 13.5v-10A1.5 1.5 0 0 0 13.5 2z'] },\n // ── Clock ──────────────────────────────────────────────────────────────\n 'clock': { box: '0 0 16 16', paths: ['M8 3.5a.5.5 0 0 0-1 0V9a.5.5 0 0 0 .252.434l3.5 2a.5.5 0 0 0 .496-.868L8 8.71z', 'M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m7-8A7 7 0 1 1 1 8a7 7 0 0 1 14 0'] },\n 'clock-rotate': { box: '0 0 16 16', paths: ['M8 3a5 5 0 1 1-4.546 2.914.5.5 0 0 0-.908-.417A6 6 0 1 0 8 2z', 'M8 4.466V.534a.25.25 0 0 0-.41-.192L5.23 2.308a.25.25 0 0 0 0 .384l2.36 1.966A.25.25 0 0 0 8 4.466'] },\n // ── Actions ────────────────────────────────────────────────────────────\n 'copy': { box: '0 0 16 16', paths: ['M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1z', 'M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5zm-3-1A1.5 1.5 0 0 0 5 1.5h-.5A1.5 1.5 0 0 0 3 3v.5a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5V3a1.5 1.5 0 0 0-1.5-1.5H11A1.5 1.5 0 0 0 9.5 0z'] },\n 'eraser': { box: '0 0 16 16', paths: ['M8.086 2.207a2 2 0 0 1 2.828 0l3.879 3.879a2 2 0 0 1 0 2.828l-5.5 5.5A2 2 0 0 1 7.879 15H5.12a2 2 0 0 1-1.414-.586l-2.5-2.5a2 2 0 0 1 0-2.828zm2.121.707a1 1 0 0 0-1.414 0L4.16 7.547l5.293 5.293 4.633-4.633a1 1 0 0 0 0-1.414zM8.746 13.547 3.453 8.254 1.914 9.793a1 1 0 0 0 0 1.414l2.5 2.5a1 1 0 0 0 .707.293H7.88a1 1 0 0 0 .707-.293z'] },\n 'trash': { box: '0 0 16 16', paths: ['M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0z', 'M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1zM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4zM2.5 3h11V2h-11z'] },\n 'plus-circle': { box: '0 0 16 16', paths: ['M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16', 'M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4'] },\n 'power': { box: '0 0 16 16', paths: ['M7.5 1v7h1V1z', 'M3 8.812a5 5 0 0 1 2.578-4.375l-.485-.874A6 6 0 1 0 11 3.616l-.501.865A5 5 0 1 1 3 8.812'] },\n 'broom': { box: '0 0 16 16', paths: ['M1.293 12.707a1 1 0 0 0 1.414 0L7 8.414l.707.707-4.293 4.293a1 1 0 0 1-1.414-1.414L5 8.293l.707.707L2.414 12H1.293z', 'M13 2a1 1 0 0 0-1.414 0L7 6.586l.707.707L12.293 2.7A1 1 0 0 0 13 2M5.707 7.707l4.586-4.586a2 2 0 0 1 2.828 0 2 2 0 0 1 0 2.828L8.535 10.535a2 2 0 0 1-2.47.245L5.707 9.414a2 2 0 0 1 0-2.828z'] },\n 'send': { box: '0 0 16 16', paths: ['M15.854.146a.5.5 0 0 1 .11.54l-5.819 14.547a.75.75 0 0 1-1.329.124l-3.178-4.995L.643 7.184a.75.75 0 0 1 .124-1.33L15.314.037a.5.5 0 0 1 .54.11ZM6.832 11.15 9.245 15l5.019-12.545zm2.933-4.757L15.07 1.188 2.52 6.208z'] },\n 'send-check': { box: '0 0 16 16', paths: ['M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855H.766l-.452.18a.5.5 0 0 0-.082.887l.41.26.001.002 4.995 3.178 1.59 2.498C8 14 8 13 8 12.5a4.5 4.5 0 0 1 5.026-4.47zm-1.833 1.89L6.637 10.07l-.215-.338a.5.5 0 0 0-.154-.154l-.338-.215 7.976-7.979-.073.23z', 'M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-1.993-1.679a.5.5 0 0 0-.686.172l-1.17 1.95-.547-.547a.5.5 0 0 0-.708.708l.774.773a.75.75 0 0 0 1.174-.144l1.335-2.226a.5.5 0 0 0-.172-.686'] },\n 'skip-backward': { box: '0 0 16 16', paths: ['M.5 3.5A.5.5 0 0 1 1 4v3.248l6.267-3.636c.52-.302 1.233.043 1.233.696v2.94l6.267-3.636c.52-.302 1.233.043 1.233.696v7.384c0 .653-.713.998-1.233.696L8.5 8.752v2.94c0 .653-.713.998-1.233.696L1 8.752V12a.5.5 0 0 1-1 0V4a.5.5 0 0 1 .5-.5m7 1.133L1.696 8 7.5 11.367zm7.5 0L9.196 8 15 11.367z'] },\n 'inbox': { box: '0 0 16 16', paths: ['M4.98 4h6.04c.434 0 .787.345.787.77v.39H4.193V4.77c0-.425.353-.77.786-.77m-2.787.77V14c0 .554.446 1 .996 1h9.622a1 1 0 0 0 .996-1V4.77A1.769 1.769 0 0 0 11.02 3H4.98A1.769 1.769 0 0 0 2.193 4.77m.5.73h10.615v3H10.5a.5.5 0 0 0-.5.5 2 2 0 0 1-4 0 .5.5 0 0 0-.5-.5H2.693z'] },\n 'flag': { box: '0 0 16 16', paths: ['M14.778.085A.5.5 0 0 1 15 .5V8a.5.5 0 0 1-.314.464L14.5 8l.186.464-.003.001-.006.003-.023.009a12 12 0 0 1-.397.15c-.264.095-.631.223-1.047.35-.816.252-1.879.523-2.71.523-.847 0-1.548-.28-2.158-.525l-.028-.01C7.68 8.71 7.14 8.5 6.5 8.5c-.7 0-1.638.23-2.437.477A20 20 0 0 0 3 9.342V15.5a.5.5 0 0 1-1 0V.5a.5.5 0 0 1 1 0v.282c.226-.079.496-.17.79-.26C4.606.272 5.67 0 6.5 0c.84 0 1.524.277 2.121.519l.043.018C9.286.788 9.828 1 10.5 1c.7 0 1.638-.23 2.437-.477a20 20 0 0 0 1.349-.476l.019-.007.004-.002h.001'] },\n // ── Grid layout ────────────────────────────────────────────────────────\n 'arrows-collapse': { box: '0 0 16 16', paths: ['M1 8a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13A.5.5 0 0 1 1 8m7-8a.5.5 0 0 1 .5.5v3.793l1.146-1.147a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 1 1 .708-.708L7.5 4.293V.5A.5.5 0 0 1 8 0m-.5 16a.5.5 0 0 0 .5-.5v-3.793l1.146 1.147a.5.5 0 0 0 .708-.708l-2-2a.5.5 0 0 0-.708 0l-2 2a.5.5 0 0 0 .708.708L7.5 11.707V15.5a.5.5 0 0 0-.5.5'] },\n 'arrows-expand': { box: '0 0 16 16', paths: ['M1 8a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13A.5.5 0 0 1 1 8M7.646.146a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 1.707V5.5a.5.5 0 0 1-1 0V1.707L6.354 2.854a.5.5 0 1 1-.708-.708zM7 9.5a.5.5 0 0 1 1 0v3.793l1.146-1.147a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 0 1 .708-.708L7 13.293z'] },\n 'grid-3x3': { box: '0 0 16 16', paths: ['M0 1.5A1.5 1.5 0 0 1 1.5 0h13A1.5 1.5 0 0 1 16 1.5v13a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 14.5zM1.5 1a.5.5 0 0 0-.5.5V5h4V1zM5 6H1v4h4zm1 4h4V6H6zm-1 1H1v3.5a.5.5 0 0 0 .5.5H5zm1 0v4h3v-4zm4 0v4h2.5a.5.5 0 0 0 .5-.5V11zm0-1h4V6h-4zm0-5h4V1.5a.5.5 0 0 0-.5-.5H10zm-1 0V1H6v4z'] },\n 'layout-sidebar': { box: '0 0 16 16', paths: ['M0 3a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5-1v12h9a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1zM4 2H2a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h2z'] },\n 'arrows-to-circle': { box: '0 0 16 16', paths: ['M8 3a5 5 0 1 0 0 10A5 5 0 0 0 8 3M2 8a6 6 0 1 1 12 0A6 6 0 0 1 2 8', 'M5.854 10.854a.5.5 0 0 1-.707-.707l1.5-1.5A.5.5 0 0 1 7 8.5h.5V8a.5.5 0 0 1 .146-.354l1.5-1.5a.5.5 0 0 1 .708.708L8.5 8.207V8.5a.5.5 0 0 1-.5.5h-.293z'] },\n // ── Object group/ungroup ───────────────────────────────────────────────\n 'object-group': { box: '0 0 16 16', paths: ['M7.25 0a.75.75 0 0 0 0 1.5h.5V3H3A2 2 0 0 0 1 5v.5H.25a.75.75 0 0 0 0 1.5H1v3H.25a.75.75 0 0 0 0 1.5H1V12a2 2 0 0 0 2 2h4.75v.5a.75.75 0 0 0 1.5 0V14H13a2 2 0 0 0 2-2v-.5h.75a.75.75 0 0 0 0-1.5H15V7h.75a.75.75 0 0 0 0-1.5H15V5a2 2 0 0 0-2-2H8.75V1.5h.5a.75.75 0 0 0 0-1.5zM2.5 5A.5.5 0 0 1 3 4.5h10a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5z'] },\n 'object-ungroup': { box: '0 0 16 16', paths: ['M0 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v2h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-2H2a2 2 0 0 1-2-2zm5 10v2a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-2v5a2 2 0 0 1-2 2zM1 2v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1'] },\n // ── Form / UI checks ───────────────────────────────────────────────────\n 'ui-checks': { box: '0 0 16 16', paths: ['M7 2.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zm0 5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zm0 5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zM1.496 5a.5.5 0 0 1 .496-.5l1.5.001a.5.5 0 0 1 .353.854L2.5 6.2l-.353-.354a.5.5 0 0 1 0-.707zM2 2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm0 5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm0 5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5z'] },\n 'list-check': { box: '0 0 16 16', paths: ['M5 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5M3.854 2.146a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0l-.5-.5a.5.5 0 1 1 .708-.708L2 3.293l1.146-1.147a.5.5 0 0 1 .708 0m0 4a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0l-.5-.5a.5.5 0 1 1 .708-.708L2 7.293l1.146-1.147a.5.5 0 0 1 .708 0m0 4a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0l-.5-.5a.5.5 0 0 1 .708-.708l.146.147 1.146-1.147a.5.5 0 0 1 .708 0'] },\n 'border': { box: '0 0 16 16', paths: ['M0 0h.969v.5H1v.469H.969V1H.5V.969H0zm2.844 1h1.875V0H2.844zm3.75 0h1.875V0H6.594zm3.75 0h1.875V0h-1.875zM15.5 1h-.469V.969H15V.5h-.031V0H15.5zM1 2.844v1.875H0V2.844zm14.5 0v1.875H15V2.844zM1 6.594v1.875H0V6.594zm14.5 0v1.875H15V6.594zM1 10.344v1.875H0v-1.875zm14.5 0v1.875H15v-1.875zM0 15.5v-.469h.031V15h.469v.031H1V15.5zm2.844 0v-1H4.72V15.5zm3.75 0v-1h1.875v1zm3.75 0v-1h1.875v1zM15.5 15.5H15v-.031H14.5V15h.469v-.469H15.5z', 'M14 2a1 1 0 0 1 1 1v2h-1V3H3v10h10v-2h1v2a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1z'] },\n // ── Microscope / inspect ───────────────────────────────────────────────\n 'microscope': { box: '0 0 16 16', paths: ['M8.5 11.956c2.474-.252 4.437-2.333 4.492-4.862a5.5 5.5 0 0 0-4.492 4.862M6 6.402V3.5A2.5 2.5 0 0 1 8.5 1h1a.5.5 0 0 1 0 1h-1A1.5 1.5 0 0 0 7 3.5v2.902A5.5 5.5 0 0 0 2.5 11h.5a.5.5 0 0 0 0 1H2.05a5.5 5.5 0 0 0 5.45 3h1a5.5 5.5 0 0 0 5.45-3H13.5a.5.5 0 0 0 0-1h-.5a5.5 5.5 0 0 0-5-5.491V6.5a.5.5 0 0 1-1 0v-.098zm1 1.094A4.5 4.5 0 0 1 11.5 11 4.5 4.5 0 0 1 7 7.5v-.004zm-1.5 4.5A4.5 4.5 0 0 1 3 7.5H2.5a5 5 0 1 0 10 0H12A4.5 4.5 0 0 1 7.5 12V12z'] },\n // ── Editor formatting ──────────────────────────────────────────────────\n 'align-left': { box: '0 0 16 16', paths: ['M2 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5'] },\n 'align-center': { box: '0 0 16 16', paths: ['M4 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m2-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5'] },\n 'align-right': { box: '0 0 16 16', paths: ['M6 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m-4-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m4-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m-4-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5'] },\n 'align-justify': { box: '0 0 16 16', paths: ['M2 12.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5'] },\n 'bold': { box: '0 0 16 16', paths: ['M8.21 13c2.106 0 3.412-1.087 3.412-2.823 0-1.306-.984-2.283-2.324-2.386v-.055a2.176 2.176 0 0 0 1.852-2.14c0-1.51-1.162-2.46-3.014-2.46H3.843V13zM5.908 4.674h1.696c.963 0 1.517.451 1.517 1.244 0 .834-.629 1.32-1.73 1.32H5.908zm0 6.788V8.598h1.73c1.217 0 1.88.492 1.88 1.415 0 .943-.643 1.449-1.832 1.449z'] },\n 'italic': { box: '0 0 16 16', paths: ['M7.991 11.674 9.53 4.455c.123-.595.246-.71 1.347-.807l.11-.52H7.211l-.11.52c1.06.096 1.128.212 1.005.807L6.57 11.674c-.123.595-.246.71-1.346.806l-.11.52h3.774l.11-.52c-1.06-.095-1.129-.211-1.006-.806z'] },\n 'underline': { box: '0 0 16 16', paths: ['M5.313 3.136h-1.23V9a2.99 2.99 0 0 0 .141.918 3.16 3.16 0 0 0 .267.662 2.48 2.48 0 0 0 .45.576c.51.5 1.2.818 2.059.818.893 0 1.583-.319 2.081-.814.228-.22.403-.485.533-.76q.184-.408.238-.876.052-.465.053-.926V3.137h-1.23v5.336a6 6 0 0 1-.035.63c-.049.394-.165.7-.32.89-.318.386-.78.583-1.32.583-.545 0-1.004-.197-1.32-.592-.156-.19-.27-.496-.319-.89a5 5 0 0 1-.036-.63zm4.32 10.864H6.367v1h3.267z'] },\n};\n\n@Component({\n selector: 'ui-icon',\n template: `\n @if(def(); as d) {\n <svg [attr.viewBox]=\"d.box\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" focusable=\"false\">\n @for(p of d.paths; track $index) {\n <path [attr.d]=\"p\" />\n }\n </svg>\n }\n `,\n styles: [`\n :host { display: inline-flex; align-items: center; justify-content: center; }\n svg { width: 1em; height: 1em; fill: currentColor; }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UiIcon {\n name = input.required<string>();\n def = computed(() => R[this.name()] ?? null);\n}\n","import { Component, computed, effect, ElementRef, input, model, OnInit, output, signal, viewChild } from '@angular/core';\nimport { ITipoBotao, ITiposTema } from '../../interfaces/interfaces';\nimport { UiIcon } from '../ui-icon/ui-icon';\n\n@Component({\n selector: 'ui-button',\n templateUrl: './ui-button.html',\n styleUrl: './ui-button.css',\n imports: [UiIcon],\n})\nexport class UiButton {\n\n botao = viewChild('botao', { read: ElementRef });\n rippleEffect = viewChild('rippleEffect', { read: ElementRef });\n ripple = viewChild('ripple', { read: ElementRef });\n\n icone = model<string | undefined | null>(null);\n iconeNome = input<string | undefined | null>();\n iconeAntes = model<boolean>(true);\n iconeDepois = model<boolean>(false);\n iconeCategory = model<string>('');\n pathCarretDown = \"M3.204 5h9.592L8 10.481zm-.753.659 4.796 5.48a1 1 0 0 0 1.506 0l4.796-5.48c.566-.647.106-1.659-.753-1.659H3.204a1 1 0 0 0-.753 1.659\";\n\n clicked = output<PointerEvent>();\n\n disabled = input<boolean>();\n eventPropagation = input<boolean>(false);\n radiusTabFormat = input<boolean>(false);\n tabindex = input<number | string>();\n tipo = input<ITipoBotao | undefined>(\"fill\");\n tema = model<ITiposTema | undefined>(\"\");\n classes = input<string>(\"\");\n ativo = input<boolean>(false);\n\n isCategory = computed(() => this.tipo() === 'menu-item-category' || this.tipo() === 'sidebar-item-category');\n buttonClasses = computed(() => {\n return `btnr ${this.tipo() || 'fill'} ${this.classes()}`;\n });\n\n corFundo = signal<string | undefined>(undefined);\n corFrente = signal<string | undefined>(undefined);\n\n constructor() {\n effect(() => {\n let tema = this.tema();\n switch (tema) {\n case \"primary\":\n this.corFundo.set(`var(--sys-primary)`);\n this.corFrente.set(`var(--sys-on-primary)`);\n break;\n case \"secondary\":\n this.corFundo.set(`var(--sys-secondary)`);\n this.corFrente.set(`var(--sys-on-secondary)`);\n break;\n case \"high\":\n this.corFundo.set(`var(--sys-high)`);\n this.corFrente.set(`var(--sys-on-high)`);\n break;\n case \"success\":\n this.corFundo.set(`var(--sys-success)`);\n this.corFrente.set(`var(--sys-on-success)`);\n break;\n case \"warning\":\n this.corFundo.set(`var(--sys-warning)`);\n this.corFrente.set(`var(--sys-on-warning)`);\n break;\n case \"error\":\n this.corFundo.set(`var(--sys-error)`);\n this.corFrente.set(`var(--sys-on-error)`);\n break;\n case \"info\":\n this.corFundo.set(`var(--sys-info)`);\n this.corFrente.set(`var(--sys-on-info)`);\n break;\n case \"white\":\n this.corFundo.set(`var(--sys-white)`);\n this.corFrente.set(`var(--sys-on-white)`);\n break;\n case \"black\":\n this.corFundo.set(`var(--sys-black)`);\n this.corFrente.set(`var(--sys-on-black)`);\n break;\n case \"card\":\n this.corFundo.set(`var(--sys-card)`);\n this.corFrente.set(`var(--sys-on-card)`);\n break;\n case \"\": // Sem Tema \n default: // Tema Desconhecido\n this.corFundo.set(undefined);\n this.corFrente.set(undefined);\n break;\n }\n });\n }\n\n\n onKeyPressed(ev: Event) {\n this.onClickExpanded(ev as any);\n }\n\n onClickExpanded(ev: PointerEvent) {\n if (this.disabled()) {\n ev.preventDefault();\n if (this.eventPropagation()) {\n ev.stopPropagation();\n }\n return;\n }\n this.botao()?.nativeElement.focus();\n if (ev instanceof PointerEvent) {\n this.createRipple(ev);\n }\n this.clicked.emit(ev);\n if (this.eventPropagation()) {\n ev.stopPropagation();\n }\n }\n\n createRipple(e: PointerEvent) {\n const rippleEffect = e.currentTarget ?? this.rippleEffect()?.nativeElement;\n const ripple = this.ripple()?.nativeElement.cloneNode(true) as HTMLElement;\n const rect = rippleEffect.getBoundingClientRect();\n // Calcula a posição do clique relativa ao botão\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n // Define o tamanho do ripple (maior dimensão do botão * 2)\n const size = Math.max(rect.width, rect.height) * 2;\n ripple.style.width = ripple.style.height = size + 'px';\n ripple.style.left = (x - size / 2) + 'px';\n ripple.style.top = (y - size / 2) + 'px';\n ripple.classList.add('ripple');\n rippleEffect.appendChild(ripple);\n ripple.addEventListener('animationend', () => {\n ripple.remove();\n });\n }\n}\n","<button #botao type=\"button\" [class]=\"buttonClasses()\" [style.--btnr-corFundo]=\"corFundo()\"\n\t[style.--btnr-corFrente]=\"corFrente()\" [disabled]=\"disabled()\" [tabIndex]=\"tabindex()\"\n\t[class.radiusTabFormat]=\"radiusTabFormat()\" [class.disabled]=\"disabled()\" [class.ativo]=\"ativo()\"\n\t(keyup.Enter)=\"onKeyPressed($event)\" [class.category]=\"isCategory()\">\n\t@if((icone() || iconeNome()) && iconeAntes()){\n\t\t<div class=\"icone iconeAntes\">\n\t\t\t@if(icone()) { <i [class]=\"icone()\"></i> } @else { <ui-icon [name]=\"iconeNome()!\" /> }\n\t\t</div>\n\t}\n\t<ng-content />\n\t@if((icone() || iconeNome()) && iconeDepois()){\n\t\t<div class=\"icone iconeDepois\">\n\t\t\t@if(icone()) { <i [class]=\"icone()\"></i> } @else { <ui-icon [name]=\"iconeNome()!\" /> }\n\t\t</div>\n\t}\n\t@if(isCategory()){\n\t<div class=\"icone iconeCategory\">\n\t\t@if(iconeCategory()) {\n\t\t<i [class]=\"iconeCategory()\"></i>\n\t\t} @else {\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\"\n\t\t\tclass=\"carretDown\">\n\t\t\t<path [attr.d]=\"pathCarretDown\" />\n\t\t</svg>\n\t\t}\n\t</div>\n\t}\n\t<span #rippleEffect class=\"expandedClick\" (click)=\"onClickExpanded($event)\">\n\t\t<span #ripple class=\"ripple\"></span>\n\t</span>\n</button>","import { Component, computed, input } from '@angular/core';\nimport { LibUtil } from '../../util/util';\n\n@Component({\n selector: 'ui-chip',\n templateUrl: './ui-chip.html',\n styleUrl: './ui-chip.css',\n})\nexport class UiChip {\n\n // HSL\n cor = input<number | null | undefined>();\n\n hue = computed<number | null>(() => {\n let hue = this.cor();\n if (LibUtil.classof(hue) == 'number') {\n if (hue! < 0) { return 0; };\n if (hue! > 359) { return 359; };\n return hue!;\n }\n return null;\n });\n\n\n}\n","<span class=\"baseChip\" [style.--ChipHue]=\"hue()\" [class.noColor]=\"!cor() || hue() === 0\">\n\t<ng-content></ng-content>\n</span>","import { ChangeDetectionStrategy, Component, ElementRef, input, model, output, signal, viewChild } from '@angular/core';\nimport { IDropOutput, IDropZoneEvent, IFileMetadata } from '../../interfaces/interfaces';\nimport { LibUtil } from '../../util/util';\nimport { LOG } from '../../util/log';\n\n@Component({\n selector: 'ui-drop-zone',\n templateUrl: './ui-drop-zone.html',\n styleUrl: './ui-drop-zone.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UiDropZone {\n\n value = model<IDropOutput>();\n disabled = input<boolean>();\n sobrepor = input<boolean>();\n clicked = output<Event>();\n changed = output<IDropOutput>();\n\n rippleEffect = viewChild('rippleEffect', { read: ElementRef });\n ripple = viewChild('ripple', { read: ElementRef });\n isDragging = signal(false);\n\n async onDropZone(tipo: IDropZoneEvent, ev: Event) {\n ev.preventDefault();\n ev.stopPropagation();\n if (this.disabled()) return;\n\n let target = ((ev as Event).target as HTMLDivElement);\n if (tipo == \"dragenter\" && !this.disabled()) this.isDragging.set(true);\n if (tipo == \"dragleave\" && !this.disabled()) this.isDragging.set(false);\n if (tipo == \"click\" && target && target.classList?.contains(\"dropzone\")) {\n this.clicked.emit(ev);\n }\n }\n\n async onDrop(ev: DragEvent) {\n ev.preventDefault();\n ev.stopPropagation();\n this.isDragging.set(false);\n if (this.disabled()) return;\n\n const dataTransfer = ev.dataTransfer;\n if (!dataTransfer) {\n this.createRipple(ev as DragEvent, \"red\");\n return;\n }\n this.createRipple(ev as DragEvent);\n\n const output: IDropOutput = {\n timestamp: new Date().toISOString(),\n types: (dataTransfer.types as any),\n tipo: \"unknown\",\n };\n\n // 1. Verificar se há arquivos\n if (dataTransfer.files && dataTransfer.files.length > 0) {\n\n output.data = ([] as IFileMetadata[]);\n output.tipo = \"file\";\n\n for await (let file of dataTransfer.files) {\n let lastIndexOf = file.name.lastIndexOf(\".\");\n if (lastIndexOf < 0) {\n LOG(1, `❌ O arquivo ${file.name} está sem uma extensão.`);\n continue;\n }\n let base64: string | null = await LibUtil.fileReader(file);\n if (!base64) {\n LOG(1, `❌ Ocorreu um erro com o arquivo ${file.name}.`);\n continue;\n }\n\n (output.data as IFileMetadata[]).push({\n base64: base64,\n name: file.name,\n size: file.size,\n extension: file.name.slice(lastIndexOf), // inclui o \".\"\n type: file.type,\n lastModifiedIso: new Date(file.lastModified).toISOString(),\n });\n }\n\n }\n\n // 2. Verificar se há texto\n const text = dataTransfer.getData('text/plain');\n if (text) {\n output.data = text;\n output.tipo = \"text\";\n }\n\n // 3. Verificar se há HTML\n const html = dataTransfer.getData('text/html');\n if (html) {\n output.data = html;\n output.tipo = \"html\";\n }\n\n // 4. Verificar se há URL\n const url = dataTransfer.getData('text/uri-list');\n if (url) {\n output.data = url;\n output.tipo = \"url\";\n }\n\n // 5. Verificar se há dados JSON customizados\n try {\n const json = dataTransfer.getData('application/json');\n if (json) {\n output.data = JSON.parse(json);\n output.tipo = \"json\";\n }\n } catch (e) {\n // JSON inválido, ignorar\n }\n\n // 6. Capturar todos os outros tipos de dados disponíveis\n dataTransfer.types.forEach(type => {\n if (!['text/plain', 'text/html', 'text/uri-list', 'application/json', 'Files'].includes(type)) {\n const data = dataTransfer.getData(type);\n if (data) {\n output.data = data;\n output.tipo = \"unknown\";\n }\n }\n });\n\n this.value.set(output);\n this.changed.emit(output);\n }\n\n createRipple(ev: DragEvent, classColor: string = \"\") {\n const rippleEffect = ev.currentTarget ?? this.rippleEffect()?.nativeElement;\n const ripple = this.ripple()?.nativeElement.cloneNode(true) as HTMLElement;\n const rect = rippleEffect.getBoundingClientRect();\n // Calcula a posição do clique relativa ao botão\n const x = ev.clientX - rect.left;\n const y = ev.clientY - rect.top;\n // Define o tamanho do ripple (maior dimensão do botão * 2)\n const size = Math.max(rect.width, rect.height) * 2;\n ripple.style.width = ripple.style.height = size + 'px';\n ripple.style.left = (x - size / 2) + 'px';\n ripple.style.top = (y - size / 2) + 'px';\n ripple.classList.add('ripple');\n if (classColor) {\n ripple.classList.add(classColor);\n }\n rippleEffect.appendChild(ripple);\n ripple.addEventListener('animationend', () => {\n ripple.remove();\n });\n }\n}\n","<div #dropzonearea class=\"dropzone\" [class.naosobrepor]=\"!sobrepor()\" (dragenter)=\"onDropZone('dragenter',$event)\"\n\t(dragleave)=\"onDropZone('dragleave',$event)\" (drop)=\"onDrop($event)\" (dragover)=\"onDropZone('dragover',$event)\"\n\t(click)=\"onDropZone('click',$event)\" [class.disabled]=\"disabled()\" [class.dragging]=\"isDragging()\">\n\t<span #rippleEffect class=\"rippleArea\">\n\t\t<span #ripple class=\"ripple\"></span>\n\t</span>\n\t<ng-content>\n\t\t<span class=\"dropzone-label\">Arraste e solte aqui</span>\n\t</ng-content>\n</div>","import { Component, input, output } from '@angular/core';\nimport { UiButton } from \"../ui-button/ui-button\";\nimport { UiIcon } from '../ui-icon/ui-icon';\nimport { IFileMetadata } from '../../interfaces/interfaces';\n\n@Component({\n selector: 'ui-file-list',\n templateUrl: './ui-file-list.html',\n styleUrl: './ui-file-list.css',\n imports: [UiButton, UiIcon]\n})\nexport class UiFileList {\n\n disabled = input<boolean>();\n filesList = input<IFileMetadata[]>();\n remove = output<IFileMetadata>();\n\n onDelete(file: IFileMetadata) {\n if (this.disabled()) return;\n this.remove.emit(file);\n }\n\n}\n","<div class=\"e-filelist-area\">\n\t@for (file of filesList(); track $index) {\n\t<div class=\"e-filelist-item\">\n\t\t<div class=\"e-filelist-item-icon\">\n\t\t\t<ui-icon name=\"file-earmark-fill\"></ui-icon>\n\t\t\t<div class=\"e-filelist-item-icon-ext\">{{ file.extension.slice(1) }}</div>\n\t\t</div>\n\t\t<div class=\"e-filelist-item-text\">{{ file.name }}</div>\n\t\t<div class=\"e-filelist-action\">\n\t\t\t@if(!disabled()){\n\t\t\t<ui-button tipo=\"icon\" tema=\"error\" [disabled]=\"disabled()\" (click)=\"onDelete(file)\" iconeNome=\"x-lg\">\n\t\t\t</ui-button>\n\t\t\t}\n\t\t</div>\n\t</div>\n\t}\n</div>","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { IFileMetadata } from '../../../interfaces/interfaces';\nimport { UiIcon } from '../../ui-icon/ui-icon';\n\n@Component({\n selector: 'ui-file-preview',\n templateUrl: './ui-file-preview.html',\n styleUrl: './ui-file-preview.css',\n imports: [UiIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UiFilePreview {\n\n arquivo = input.required<IFileMetadata>();\n removivel = input<boolean>(false);\n remover = output<IFileMetadata>();\n\n tipoDisplay = computed(() => {\n const type = (this.arquivo().type ?? '').toLowerCase();\n const ext = (this.arquivo().extension ?? '').toLowerCase();\n if (type.includes('image/png') || ext === '.png') return 'png';\n if (type.includes('image/jpeg') || type.includes('image/jpg') || ext === '.jpg' || ext === '.jpeg') return 'jpg';\n if (type.includes('image/svg') || ext === '.svg') return 'svg';\n if (type.includes('application/pdf') || ext === '.pdf') return 'pdf';\n return 'other';\n });\n\n isImage = computed(() => {\n const d = this.tipoDisplay();\n return d === 'png' || d === 'jpg' || d === 'svg';\n });\n\n isPdf = computed(() => this.tipoDisplay() === 'pdf');\n\n onRemover() {\n this.remover.emit(this.arquivo());\n }\n}\n","<div class=\"preview-container\">\n\t@if (isImage()) {\n\t\t<img [src]=\"arquivo().base64\" [alt]=\"arquivo().name\" class=\"preview-img\" />\n\t} @else if (isPdf()) {\n\t\t<embed [src]=\"arquivo().base64\" type=\"application/pdf\" class=\"preview-embed\" />\n\t} @else {\n\t\t<div class=\"preview-other\">\n\t\t\t<ui-icon name=\"file-earmark\"></ui-icon>\n\t\t\t<span class=\"preview-ext\">{{ arquivo().extension.slice(1) }}</span>\n\t\t</div>\n\t}\n\t@if (removivel()) {\n\t\t<button class=\"btn-remover\" (click)=\"onRemover()\" type=\"button\" title=\"Remover\">\n\t\t\t<ui-icon name=\"x\"></ui-icon>\n\t\t</button>\n\t}\n</div>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { IFileMetadata } from '../../interfaces/interfaces';\nimport { UiFilePreview } from './ui-file-preview/ui-file-preview';\n\n@Component({\n selector: 'ui-micro-gallery',\n templateUrl: './ui-micro-gallery.html',\n styleUrl: './ui-micro-gallery.css',\n imports: [UiFilePreview],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UiMicroGallery {\n\n arquivos = input<IFileMetadata[]>([]);\n remover = output<IFileMetadata>();\n\n onRemover(arquivo: IFileMetadata) {\n this.remover.emit(arquivo);\n }\n}\n","<div class=\"gallery\">\n\t@for (arquivo of arquivos(); track arquivo.name) {\n\t\t<ui-file-preview [arquivo]=\"arquivo\" [removivel]=\"true\" (remover)=\"onRemover($event)\">\n\t\t</ui-file-preview>\n\t}\n</div>\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, input, model, output, viewChild } from '@angular/core';\nimport { IDropOutput, IFileMetadata } from '../../interfaces/interfaces';\nimport { LibUtil } from '../../util/util';\nimport { LOG } from '../../util/log';\nimport { UiDropZone } from '../ui-drop-zone/ui-drop-zone';\nimport { UiMicroGallery } from '../ui-micro-gallery/ui-micro-gallery';\n\n@Component({\n selector: 'ui-arquivos',\n templateUrl: './ui-arquivos.html',\n styleUrl: './ui-arquivos.css',\n imports: [UiDropZone, UiMicroGallery],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UiArquivos {\n\n arquivos = model<IFileMetadata[]>([]);\n disabled = input<boolean>(false);\n accept = input<string>('');\n multiple = input<boolean>(true);\n changed = output<IFileMetadata[]>();\n\n fileInput = viewChild<ElementRef<HTMLInputElement>>('fileInput');\n\n temArquivos = computed(() => this.arquivos().length > 0);\n\n onDropChanged(dropOutput: IDropOutput) {\n if (dropOutput.tipo === 'file' && Array.isArray(dropOutput.data)) {\n this.arquivos.set(dropOutput.data as IFileMetadata[]);\n this.changed.emit(this.arquivos());\n }\n }\n\n onDropClicked() {\n this.fileInput()?.nativeElement.click();\n }\n\n async onFileInputChange(event: Event) {\n const input = event.target as HTMLInputElement;\n if (!input.files || input.files.length === 0) return;\n\n const newFiles: IFileMetadata[] = [];\n for await (const file of input.files) {\n const lastIndexOf = file.name.lastIndexOf('.');\n if (lastIndexOf < 0) {\n LOG(1, `❌ O arquivo ${file.name} está sem uma extensão.`);\n continue;\n }\n const base64 = await LibUtil.fileReader(file);\n if (!base64) {\n LOG(1, `❌ Ocorreu um erro com o arquivo ${file.name}.`);\n continue;\n }\n newFiles.push({\n base64,\n name: file.name,\n size: file.size,\n extension: file.name.slice(lastIndexOf),\n type: file.type,\n lastModifiedIso: new Date(file.lastModified).toISOString(),\n });\n }\n\n this.arquivos.set(newFiles);\n this.changed.emit(this.arquivos());\n input.value = '';\n }\n\n onRemover(arquivo: IFileMetadata) {\n this.arquivos.update(list => list.filter(a => a.name !== arquivo.name));\n this.changed.emit(this.arquivos());\n }\n}\n","<input #fileInput type=\"file\" class=\"file-input-hidden\"\n\t[accept]=\"accept()\" [multiple]=\"multiple()\" [disabled]=\"disabled()\"\n\t(change)=\"onFileInputChange($event)\" />\n\n<ui-drop-zone [sobrepor]=\"temArquivos()\" [disabled]=\"disabled()\"\n\t(changed)=\"onDropChanged($event)\" (clicked)=\"onDropClicked()\">\n\t@if (temArquivos()) {\n\t\t<ui-micro-gallery [arquivos]=\"arquivos()\" (remover)=\"onRemover($event)\">\n\t\t</ui-micro-gallery>\n\t}\n</ui-drop-zone>\n","import { ElementRef } from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef, ScrollStrategy } from '@angular/cdk/overlay';\nimport { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport interface IOverlayConnectedConfig {\n\toverlay: Overlay;\n\ttrigger: ElementRef | HTMLElement;\n\tpositions: ConnectedPosition[];\n\tscrollStrategy?: ScrollStrategy;\n\tpanelClass?: string | string[];\n\twidth?: number | string;\n\tminWidth?: number | string;\n}\n\n/**\n * Cria um OverlayRef conectado a um elemento trigger com FlexibleConnectedPositionStrategy.\n * Centraliza a configuração padrão usada pelo tooltip, select, menu e autocomplete.\n */\nexport function criarOverlayConectado(cfg: IOverlayConnectedConfig): OverlayRef {\n\tconst nativeEl = cfg.trigger instanceof ElementRef ? cfg.trigger.nativeElement : cfg.trigger;\n\n\tconst positionStrategy = cfg.overlay\n\t\t.position()\n\t\t.flexibleConnectedTo(nativeEl)\n\t\t.withPositions(cfg.positions)\n\t\t.withPush(true)\n\t\t.withFlexibleDimensions(false);\n\n\tconst config = new OverlayConfig({\n\t\tpositionStrategy,\n\t\tscrollStrategy: cfg.scrollStrategy ?? cfg.overlay.scrollStrategies.reposition(),\n\t\tpanelClass: cfg.panelClass,\n\t\twidth: cfg.width,\n\t\tminWidth: cfg.minWidth,\n\t});\n\n\treturn cfg.overlay.create(config);\n}\n","import { ConnectedPosition } from '@angular/cdk/overlay';\nimport { IPosicoesFloating } from '../../interfaces/interfaces';\n\nexport type IPosicaoOverlay = IPosicoesFloating;\n\nconst FALLBACKS: Record<IPosicaoOverlay, IPosicaoOverlay[]> = {\n\t'bottom-start': ['top-start', 'bottom-end', 'top-end'],\n\t'bottom-end': ['top-end', 'bottom-start', 'top-start'],\n\t'bottom': ['top', 'bottom-start', 'top-start'],\n\t'top-start': ['bottom-start', 'top-end', 'bottom-end'],\n\t'top-end': ['bottom-end', 'top-start', 'bottom-start'],\n\t'top': ['bottom', 'top-start', 'bottom-start'],\n\t'right-start': ['left-start', 'bottom-start', 'top-start', 'bottom-end', 'top-end'],\n\t'right-end': ['left-end', 'bottom-end', 'top-end'],\n\t'right': ['left', 'bottom', 'top'],\n\t'left-start': ['right-start', 'bottom-start', 'top-start'],\n\t'left-end': ['right-end', 'bottom-end', 'top-end'],\n\t'left': ['right', 'bottom', 'top'],\n};\n\nfunction posToConnected(pos: IPosicaoOverlay, offsetPx: number = 2): ConnectedPosition {\n\tconst [side, align] = pos.split('-') as [string, string | undefined];\n\n\tconst originY = side === 'top' ? 'top' : side === 'bottom' ? 'bottom' : align === 'end' ? 'bottom' : 'top';\n\tconst overlayY = side === 'bottom' ? 'top' : side === 'top' ? 'bottom' : align === 'end' ? 'bottom' : 'top';\n\n\tconst originX = side === 'left' ? 'start' : side === 'right' ? 'end' : align === 'end' ? 'end' : align === 'start' ? 'start' : 'center';\n\tconst overlayX = side === 'right' ? 'start' : side === 'left' ? 'end' : align === 'end' ? 'end' : align === 'start' ? 'start' : 'center';\n\n\tconst isVertical = side === 'top' || side === 'bottom';\n\tconst offsetY = isVertical ? offsetPx : 0;\n\tconst offsetX = isVertical ? 0 : offsetPx;\n\n\treturn { originX, originY, overlayX, overlayY, offsetX, offsetY } as ConnectedPosition;\n}\n\n/**\n * Converte um valor de IPosicoesFloating para um array de ConnectedPosition do CDK,\n * incluindo a posição primária e os fallbacks equivalentes ao flip() do floating-ui.\n *\n * @param pos posição solicitada (ex.: 'bottom-start')\n * @param offsetPx distância entre o trigger e o overlay (padrão: 2)\n */\nexport function toConnectedPositions(pos: IPosicaoOverlay, offsetPx: number = 2): ConnectedPosition[] {\n\tconst primary = posToConnected(pos, offsetPx);\n\tconst fallbacks = (FALLBACKS[pos] ?? []).map(fb => posToConnected(fb, offsetPx));\n\treturn [primary, ...fallbacks];\n}\n","import {\n AfterViewInit, Component, computed, ElementRef, inject, input,\n model, OnDestroy, output, signal, TemplateRef, viewChild, ViewContainerRef\n} from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Subscription } from 'rxjs';\nimport { LibUtil } from '../../util/util';\nimport { LOG } from '../../util/log';\nimport { IKV } from '../../interfaces/interfaces';\nimport { UiButton } from \"../ui-button/ui-button\";\nimport { criarOverlayConectado } from '../overlay/overlay.util';\nimport { toConnectedPositions } from '../overlay/overlay-position.util';\n\nexport interface IOptionValue {\n optionChanged?: IKV;\n keys: string | number | string[] | number[];\n values: string | number | string[] | number[];\n}\n\ninterface IKVSeletor extends IKV {\n selected: boolean;\n choosing: boolean;\n}\n\n@Component({\n selector: 'ui-select',\n templateUrl: './ui-select.html',\n styleUrl: './ui-select.css',\n host: { '[class]': 'hostClasses()' },\n imports: [UiButton],\n})\nexport class UiSelect implements OnDestroy, AfterViewInit {\n\n elementRef: ElementRef = inject(ElementRef);\n private overlay = inject(Overlay);\n private vcr = inject(ViewContainerRef);\n\n value = model<string | number | string[] | number[] | undefined>();\n options = input<IKV[] | undefined | null>();\n\n name = input<string | number | undefined>();\n placeholder = input<string>();\n disabled = input<boolean>();\n multiple = input<boolean>(false);\n canUnselect = input<boolean | undefined>(false);\n textEmpty = input<string | undefined>(\"Nada selecionado\");\n\n changed = output<IOptionValue>();\n\n isOpenedOptions = signal(false);\n markedOptionKey = signal<string | number | null | undefined>(null);\n isSmallScreen = signal(window.innerWidth < 500);\n optionMinWidth = signal<number>(0);\n textoFiltrado = signal<string>(\"\");\n\n private overlayRef: OverlayRef | null = null;\n private outsideSub: Subscription | null = null;\n\n readonly optionsTemplate = viewChild<TemplateRef<unknown>>('optionsTemplate');\n readonly displayText = viewChild<ElementRef>('displayText');\n readonly triggerElement = viewChild<ElementRef>('triggerElement');\n\n readonly optionsList = computed<IKVSeletor[]>(() => {\n const options = this.options?.() ?? [];\n if (this.multiple() !== true) {\n let valor = (this.value() as string | number | undefined);\n return options.map(op => ({\n ...op,\n selected: String(op.k) == String(valor),\n choosing: op.k == this.markedOptionKey()\n }));\n } else {\n let valor = (this.value() as string[] | number[] | undefined);\n if (!Array.isArray(valor)) {\n valor = [];\n }\n return options.map(op => ({\n ...op,\n selected: op.k != null ? valor.some(v => String(op.k) == String(v)) : false,\n choosing: op.k == this.markedOptionKey()\n }));\n }\n });\n\n readonly optionsFiltered = computed<IKVSeletor[]>(() => {\n let words = this.textoFiltrado().trim().split(\" \").filter(t => t != \"\");\n const options = (this.optionsList() || []).map(o => ({ ...o, html: o.v || `⚠️ Chave: ${o.k}` }));\n if (words.length === 0) return options;\n return options.filter(op => {\n for (const w of words) {\n let encontrado = false;\n if (op.v != null && LibUtil.contem(op.v, w)) {\n encontrado = true;\n }\n if (!encontrado) return false;\n }\n return true;\n }).map(op => {\n let data = op.v?.toString() || '';\n if (words.length > 0) {\n for (let word of words) {\n let w = word.toLowerCase();\n let preparedData = LibUtil.removeAcentos(data).toLowerCase();\n if (w != \"\" && preparedData.includes(w)) {\n if (new RegExp(`<[^>]*${w}[^>]*>`, 'i').test(preparedData.toString())) continue;\n let pos = preparedData.indexOf(w);\n data = data.slice(0, pos)\n + \"<mark>\"\n + data.slice(pos, pos + w.length)\n + \"</mark>\"\n + data.slice(pos + w.length);\n data = data.replaceAll(\"</mark><mark>\", \"\");\n }\n };\n }\n return { ...op, html: data };\n });\n });\n\n readonly textoExibindo = computed<string>(() => {\n const val = this.value();\n if (this.multiple() !== true) {\n let selectedOption = this.optionsList().find(op => String(op.k) == String(val));\n return selectedOption?.v ?? (selectedOption?.k ? `⚠️ Chave: ${selectedOption?.k}` : (this.textEmpty() ?? 'Nada selecionado'));\n }\n\n let valor = (this.value() as string[] | number[] | undefined);\n if (valor == undefined || !Array.isArray(valor)) {\n valor = [];\n }\n const textosSelecionados = this.optionsList()\n .filter(op => valor.some(v => String(v) == String(op.k)))\n .map(op => op.v);\n return textosSelecionados.length > 0 ? `[${textosSelecionados.length}] ${textosSelecionados.join(\", \")}` : (this.textEmpty() ?? 'Nada selecionado');\n });\n\n readonly hostClasses = computed(() => this.isOpenedOptions() ? 'opened' : '');\n\n ngOnDestroy() {\n this._dispose();\n }\n\n ngAfterViewInit() {\n this.checkScreenSize();\n }\n\n onChange(valueOfK: string | number | null): string | number | string[] | number[] {\n if (valueOfK == null) return '';\n\n let optionChanged = this.options?.()?.find(op => String(op.k) === String(valueOfK));\n let newKeys = valueOfK;\n let newValues = optionChanged?.v ?? newKeys;\n\n if (this.multiple() !== true) {\n if (this.canUnselect() === true && this.value() === newKeys) {\n newKeys = '';\n newValues = '';\n }\n this.changed.emit({ optionChanged, keys: newKeys, values: newValues });\n return newKeys;\n }\n\n let currentKeys = this.value() ?? [] as any[];\n let currentValues = [];\n if (!Array.isArray(currentKeys)) {\n currentKeys = [];\n }\n\n if (currentKeys.indexOf(newKeys) === -1) {\n currentKeys = [...currentKeys, newKeys];\n } else {\n currentKeys = currentKeys.filter(v => v !== newKeys);\n }\n\n currentValues = currentKeys.map(k => this.options?.()?.find(op => op.k === k)?.v ?? k);\n this.changed.emit({ optionChanged, keys: currentKeys, values: currentValues });\n return currentKeys;\n }\n\n onOpenOrCloseOptions() {\n if (!this.disabled()) {\n if (this.isOpenedOptions()) {\n this.closeOverlay();\n } else {\n this.openOverlay();\n }\n }\n }\n\n protected closeOverlay() {\n this._dispose();\n this.isOpenedOptions.set(false);\n this.textoFiltrado.set(\"\");\n this.markedOptionKey.set(null);\n this.focusToDisplayText();\n }\n\n protected openOverlay() {\n if (this.overlayRef) return;\n\n const trigger = this.triggerElement();\n if (!trigger) return;\n\n const triggerEl = trigger.nativeElement as HTMLElement;\n const minWidth = this.isSmallScreen() ? undefined : triggerEl.offsetWidth;\n\n this.overlayRef = criarOverlayConectado({\n overlay: this.overlay,\n trigger: trigger,\n positions: toConnectedPositions('bottom-start', 2),\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n minWidth,\n panelClass: this.isSmallScreen() ? ['e-select-overlay-panel', 'smallScreen'] : 'e-select-overlay-panel',\n });\n\n const tpl = this.optionsTemplate();\n if (tpl) {\n this.overlayRef.attach(new TemplatePortal(tpl, this.vcr));\n }\n\n this.isOpenedOptions.set(true);\n setTimeout(() => this.focusToSearchInput(), 10);\n\n this.outsideSub = this.overlayRef.outsidePointerEvents().subscribe(() => {\n if (this.isOpenedOptions()) this.closeOverlay();\n });\n }\n\n onSelectOption(option?: IKV) {\n if (!option || option.k == null) {\n LOG(1, `❌ (SelectOption) Chave nula! (${option?.k}, classof: '${LibUtil.classof(option?.k)}'). Valor corresponde ${option?.v}`);\n return;\n }\n this.value.set(this.onChange(option.k));\n if (this.multiple() !== true) {\n this.closeOverlay();\n } else {\n this.focusToSearchInput();\n }\n }\n\n onInputSearch(text: string) {\n this.textoFiltrado.set(text);\n this.markedOptionKey.set(null);\n }\n\n onClearSearch() {\n this.textoFiltrado.set(\"\");\n this.focusToSearchInput();\n }\n\n focusToSearchInput() {\n const input = this.overlayRef?.overlayElement?.querySelector<HTMLElement>('[name=\"e-select-search-input\"]');\n input?.focus();\n }\n\n focusToDisplayText() {\n this.displayText()?.nativeElement?.focus();\n }\n\n markKey(event: KeyboardEvent) {\n const options = this.optionsFiltered();\n if (options.length === 0) return;\n let currentIndex = options.findIndex(op => op.k === this.markedOptionKey());\n let currentKV = options.find(op => op.k === this.markedOptionKey());\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n currentIndex = (currentIndex + 1) % options.length;\n this.markedOptionKey.set(options[currentIndex].k);\n this.moveScrollToMarkedOption();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n currentIndex = (currentIndex - 1 + options.length) % options.length;\n this.markedOptionKey.set(options[currentIndex].k);\n this.moveScrollToMarkedOption();\n } else if (event.key === 'Escape' || event.key === 'Tab') {\n event.preventDefault();\n this.closeOverlay();\n } else if (event.key === 'Enter') {\n event.preventDefault();\n if (this.markedOptionKey() != null) {\n this.onSelectOption(currentKV);\n }\n this.closeOverlay();\n }\n }\n\n onChangeMediaQuery(e: MediaQueryListEvent | MediaQueryList) {\n this.isSmallScreen.set(e.matches);\n const eTrigger = this.triggerElement()?.nativeElement as HTMLElement;\n if (eTrigger) {\n this.optionMinWidth.set(this.isSmallScreen() ? 0 : eTrigger.offsetWidth - 4);\n }\n }\n\n checkScreenSize() {\n const mediaQuery = window.matchMedia('(max-width: 500px)');\n this.onChangeMediaQuery(mediaQuery);\n mediaQuery.addEventListener('change', this.onChangeMediaQuery.bind(this));\n }\n\n private moveScrollToMarkedOption() {\n setTimeout(() => {\n const container = this.overlayRef?.overlayElement?.querySelector<HTMLElement>('.e-select-options-list');\n const markedOption = container?.querySelector<HTMLElement>('.e-select-option.choosing');\n if (container && markedOption) {\n const containerTop = container.scrollTop;\n const containerBottom = containerTop + container.clientHeight;\n const optionTop = markedOption.offsetTop;\n const optionBottom = optionTop + markedOption.offsetHeight;\n if (optionTop < containerTop) {\n container.scrollTop = optionTop - 40;\n } else if (optionBottom > containerBottom) {\n container.scrollTop = optionBottom - container.clientHeight;\n }\n }\n }, 1);\n }\n\n private _dispose() {\n this.outsideSub?.unsubscribe();\n this.outsideSub = null;\n this.overlayRef?.dispose();\n this.overlayRef = null;\n }\n}\n","<div #triggerElement class=\"e-select-container\" (click)=\"onOpenOrCloseOptions()\" (keyup.Enter)=\"onOpenOrCloseOptions()\"\n\t(keyup.ArrowDown)=\"onOpenOrCloseOptions()\" (keyup.ArrowUp)=\"onOpenOrCloseOptions()\">\n\t<div class=\"e-select\">\n\t\t<input #displayText type=\"text\" [name]=\"'select_'+(name() ?? '')\" [value]=\"textoExibindo()\" readonly\n\t\t\t[placeholder]=\"placeholder() ?? ''\" [disabled]=\"disabled()\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t</div>\n\t<div class=\"e-select-arrow-area\">\n\t\t<div class=\"e-select-arrow\" [class.open]=\"isOpenedOptions()\"></div>\n\t</div>\n</div>\n\n<ng-template #optionsTemplate>\n\t<div class=\"e-select-options-container\" [class.smallScreen]=\"isSmallScreen()\">\n\t\t<div class=\"e-select-search-area\" [style.minWidth.px]=\"optionMinWidth()\">\n\t\t\t<input type=\"text\" name=\"e-select-search-input\" class=\"e-select-search\"\n\t\t\t\t(keyup)=\"markKey($event)\" placeholder=\"Procurar...\" [value]=\"textoFiltrado()\" (keydown.Escape)=\"closeOverlay()\"\n\t\t\t\tsize=\"8\" (keydown.Tab)=\"closeOverlay()\" (input)=\"onInputSearch($event.target.value)\" />\n\t\t\t@if(textoFiltrado().length > 0) {\n\t\t\t<ui-button tipo=\"icon\" tema=\"error\" class=\"e-select-search-clearicon\" (click)=\"onClearSearch()\"\n\t\t\t\ticoneNome=\"x\"></ui-button>\n\t\t\t}\n\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"e-select-search-icon\" (click)=\"focusToSearchInput()\"\n\t\t\t\ticoneNome=\"search\"></ui-button>\n\t\t</div>\n\t\t<div class=\"e-select-options-list\">\n\t\t\t@for(option of optionsFiltered(); track $index) {\n\t\t\t<div class=\"e-select-option\" [class.selected]=\"option.selected\" [style.minWidth.px]=\"optionMinWidth()\"\n\t\t\t\t[title]=\"option.v\" (click)=\"onSelectOption(option)\" (keyup.Enter)=\"onSelectOption(option)\" tabindex=\"-1\"\n\t\t\t\t[class.choosing]=\"option.choosing\">\n\t\t\t\t<div class=\"e-select-option-check\"></div>\n\t\t\t\t<div class=\"e-select-option-text\" [innerHTML]=\"option.html\"></div>\n\t\t\t</div>\n\t\t\t}@empty {\n\t\t\t<div class=\"e-select-option empty\">\n\t\t\t\tNenhuma opção disponível\n\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t</div>\n</ng-template>\n","import { Component, computed, ElementRef, input, model, output, signal, viewChild } from '@angular/core';\nimport { UiButton } from \"../ui-button/ui-button\";\n\n@Component({\n selector: 'ui-procurar',\n templateUrl: './ui-procurar.html',\n styleUrl: './ui-procurar.css',\n host: { '[class.focused]': 'focused()' },\n imports: [UiButton],\n})\nexport class UiProcurar {\n\n readonly searchInput = viewChild<ElementRef>('searchInput');\n\n inputed = output<string>();\n changed = output<string>();\n value = model<string>('');\n colapsed = model<boolean | undefined>(false);\n autoColapse = model<boolean | undefined>(false);\n\n computedColapsed = computed(() => {\n if (this.focused() || this.value().length > 0) {\n return false;\n }\n if (this.autoColapse()) {\n return this.value().length === 0;\n }\n return this.colapsed() ?? false;\n });\n\n name = input<string | number | undefined>();\n placeholder = input<string>();\n disabled = input<boolean>();\n\n focused = signal<boolean | undefined>(false);\n\n onInput(value: string) {\n this.value.set(value);\n this.inputed.emit(value);\n }\n\n // Limpa o filtro de opções\n onClearSearch() {\n this.value.set('');\n this.focusSearchInput();\n this.onInputed();\n this.onChange();\n }\n\n focusSearchInput() {\n this.searchInput()?.nativeElement?.focus();\n }\n\n onClickSearchIcon() {\n this.focusSearchInput();\n this.onInputed();\n this.onChange();\n }\n\n onSearch() {\n this.onInputed();\n this.onChange();\n }\n\n onInputed() {\n this.inputed.emit(this.value());\n }\n\n onChange() {\n this.changed.emit(this.value());\n }\n\n\n onFocus(ev: FocusEvent) {\n this.focused.set(true);\n }\n\n onBlur(ev: FocusEvent) {\n this.focused.set(false);\n }\n\n}\n","<ui-button tipo=\"icon\" tema=\"primary\" class=\"e-procurar-icone-search\" (clicked)=\"onClickSearchIcon()\" tabindex=\"-1\">\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" class=\"stroke-icone\" viewBox=\"0 0 16 16\">\n\t\t<path\n\t\t\td=\"M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001q.044.06.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1 1 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0\" />\n\t</svg>\n</ui-button>\n<div class=\"e-procurar-input-container\" [class.colapsed]=\"computedColapsed()\">\n\t<input #searchInput type=\"text\" class=\"e-procurar-input\" [value]=\"value()\" (input)=\"onInput($event.target.value)\"\n\t\t[name]=\"'procurar_'+(name() ?? '')\" (change)=\"onChange()\" [placeholder]=\"placeholder() ?? 'Procurar...'\"\n\t\t[disabled]=\"disabled()\" (keyup.Enter)=\"onSearch()\" (keyup.Escape)=\"onClearSearch()\" (focus)=\"onFocus($event)\"\n\t\t(blur)=\"onBlur($event)\" />\n</div>\n@if(value().length > 0) {\n<ui-button tipo=\"icon\" tema=\"error\" class=\"e-procurar-botao-clear\" (clicked)=\"onClearSearch()\" title=\"Limpar\"\n\ticoneNome=\"x\">\n</ui-button>\n}","import { Component, input } from '@angular/core';\nimport { IUiProgressMode } from '../../interfaces/interfaces';\n\n@Component({\n selector: 'ui-progress',\n templateUrl: './ui-progress.html',\n styleUrl: './ui-progress.css',\n})\nexport class UiProgress {\n\n value = input<number | undefined>(0);\n bufferValue = input<number | undefined>(0);\n mode = input<IUiProgressMode | undefined>('indeterminate');\n\n}\n","@switch (mode()) {\n@case ('determinate'){\n<div class=\"bar-progress determinate\">\n\t<div class=\"bar-progress-filled\" [style.width.%]=\"value() ?? 0\"></div>\n</div>\n}\n\n@case ('indeterminate'){\n<div class=\"bar-progress indeterminate\">\n\t<div class=\"bar-progress-filled\"></div>\n</div>\n}\n\n@case ('buffer'){\n<div class=\"bar-progress buffer\">\n\t<div class=\"bar-progress-buffer\" [style.width.%]=\"bufferValue() ?? 0\"></div>\n\t<div class=\"bar-progress-filled\" [style.width.%]=\"value() ?? 0\"></div>\n</div>\n}\n\n@case ('query'){\n<div class=\"bar-progress query\">\n\t<div class=\"bar-progress-filled\"></div>\n</div>\n}\n\n@default {\n<div class=\"bar-progress indeterminate\">\n\t<div class=\"bar-progress-filled\"></div>\n</div>\n}\n\n}","import { AfterViewInit, Component, computed, effect, ElementRef, input, model, output, signal, viewChild } from '@angular/core';\n\n@Component({\n selector: 'ui-slide',\n templateUrl: './ui-slide.html',\n styleUrl: './ui-slide.css',\n host: { '[class.focused]': 'focused()' }\n})\nexport class UiSlide implements AfterViewInit {\n\n sliderbox = viewChild('sliderbox', { read: ElementRef });\n\n value = model<boolean>(false);\n disabled = input<boolean>();\n focused = model<boolean>(false);\n focus = input<boolean>(false);\n changed = output<boolean>();\n\n hasInteracted = signal<boolean>(false);\n\n ativo = computed(() => {\n const val = (this.value() as any);\n return val === true || val === 'true' || val === 1 || val === '1';\n });\n\n constructor() {\n effect(() => {\n if (this.focus()) {\n this.sliderbox()?.nativeElement.focus();\n }\n });\n }\n\n ngAfterViewInit(): void {\n this.sliderbox()?.nativeElement.addEventListener('keydown', (event: KeyboardEvent) => {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.onClickSlide();\n }\n });\n // Ativa transições apenas após o render inicial, evitando animação no mount\n setTimeout(() => this.hasInteracted.set(true));\n }\n\n onClickSlide() {\n if (this.disabled()) return;\n\n const currentValue = (this.value() as any);\n const newValue = !(currentValue === true || currentValue === 'true' || currentValue === 1 || currentValue === '1');\n this.value.set(newValue);\n this.changed.emit(newValue);\n }\n\n onFocus(ev: FocusEvent) {\n if (this.disabled()) return;\n\n this.focused.set(true);\n }\n\n onBlur(ev: FocusEvent) {\n this.focused.set(false);\n }\n\n\n}\n","<div #sliderbox class=\"sliderbox\" tabindex=\"0\" (click)=\"onClickSlide()\" [class.ativo]=\"ativo()\"\n\t[class.disabled]=\"disabled()\" (focus)=\"onFocus($event)\" (blur)=\"onBlur($event)\" [class.can-animate]=\"hasInteracted()\">\n\t<div class=\"slidercircle\">\n\t\t<div class=\"checkmark\" [class.ativo]=\"ativo()\"></div>\n\t</div>\n</div>","import { AfterViewInit, Component, computed, effect, ElementRef, input, model, output, signal, viewChild } from '@angular/core';\n\n@Component({\n selector: 'ui-check-box',\n templateUrl: './ui-check-box.html',\n styleUrl: './ui-check-box.css',\n host: {\n '[class.focused]': 'focused()',\n }\n})\nexport class UiCheckBox implements AfterViewInit {\n\n marcabox = viewChild('marcabox', { read: ElementRef });\n\n value = model<boolean>(false);\n disabled = input<boolean>();\n focused = model<boolean>(false);\n focus = input<boolean>(false);\n changed = output<boolean>();\n single = input<boolean>(false);\n hasDash = input<boolean>(false);\n\n hasInteracted = signal<boolean>(false);\n\n ativo = computed(() => {\n const val = (this.value() as any);\n return val === true || val === 'true' || val === 1 || val === '1';\n });\n\n constructor() {\n effect(() => {\n if (this.focus()) {\n this.marcabox()?.nativeElement.focus();\n }\n });\n }\n\n ngAfterViewInit(): void {\n this.marcabox()?.nativeElement.addEventListener('keydown', (event: KeyboardEvent) => {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.onClickMarcador();\n }\n });\n // Ativa transições apenas após o render inicial, evitando animação no mount\n setTimeout(() => this.hasInteracted.set(true));\n }\n\n onClickMarcador() {\n if (this.disabled()) return;\n\n const currentValue = (this.value() as any);\n const newValue = !(currentValue === true || currentValue === 'true' || currentValue === 1 || currentValue === '1');\n this.value.set(newValue);\n this.changed.emit(newValue);\n }\n\n onFocus(ev: FocusEvent) {\n if (this.disabled()) return;\n\n this.focused.set(true);\n }\n\n onBlur(ev: FocusEvent) {\n this.focused.set(false);\n }\n\n\n}\n","<div #marcabox class=\"marcador-area\" tabindex=\"0\" (click)=\"onClickMarcador()\" [class.ativo]=\"ativo()\"\n\t[class.multiple]=\"!single()\" (focus)=\"onFocus($event)\" (blur)=\"onBlur($event)\" [class.disabled]=\"disabled()\"\n\t[class.can-animate]=\"hasInteracted()\">\n\t<div class=\"checkmark {{ single() ? 'simples' : 'multiple' }}\" [class.hasDash]=\"hasDash()\" [class.ativo]=\"ativo()\">\n\t</div>\n</div>\n<ng-content></ng-content>","import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'ui-list-errors',\n templateUrl: './ui-list-errors.html',\n styleUrl: './ui-list-errors.css',\n})\nexport class UiListErrors {\n\n show = input.required<boolean | undefined>();\n\n errors = input.required<(string | undefined)[] | undefined>();\n dica = input.required<string | undefined>();\n}\n","@if(show()){\n<div class=\"erroArea\" [class.hide]=\"(!errors() || errors()?.length === 0) && (!dica())\">\n\t@for (erro of errors(); track $index) {\n\t<span class=\"erroText\">{{ erro ?? 'Erro desconhecido' }}</span>\n\t}\n\t@if(dica()){\n\t<span class=\"dicaText\">{{ dica() ?? '' }}</span>\n\t}\n</div>\n}","import { Component, computed, input } from '@angular/core';\nimport { IUiProgressMode } from '../../interfaces/interfaces';\n\n@Component({\n selector: 'ui-loading',\n templateUrl: './ui-loading.html',\n styleUrl: './ui-loading.css',\n})\nexport class UiLoading {\n\n value = input<number | undefined>(0);\n bufferValue = input<number | undefined>(0);\n mode = input<IUiProgressMode | undefined>('indeterminate');\n\n readonly circunferencia = 2 * Math.PI * 20; // ≈ 125.664\n\n offset = computed(() => this.calcOffset(this.value() ?? 0));\n offsetBuffer = computed(() => this.calcOffset(this.bufferValue() ?? 0));\n\n calcOffset(valor: number): number {\n return this.circunferencia * (1 - valor / 100);\n }\n\n}\n","@switch (mode()) {\n\n@case ('determinate') {\n<svg class=\"circle-progress determinate\" viewBox=\"0 0 44 44\">\n\t<circle class=\"track\" cx=\"22\" cy=\"22\" r=\"20\" />\n\t<circle class=\"fill\" cx=\"22\" cy=\"22\" r=\"20\" [style.stroke-dashoffset]=\"offset()\" />\n</svg>\n}\n\n@case ('indeterminate') {\n<svg class=\"circle-progress indeterminate\" viewBox=\"0 0 44 44\">\n\t<circle class=\"fill\" cx=\"22\" cy=\"22\" r=\"20\" />\n</svg>\n}\n\n@case ('buffer') {\n<svg class=\"circle-progress determinate\" viewBox=\"0 0 44 44\">\n\t<circle class=\"track\" cx=\"22\" cy=\"22\" r=\"20\" />\n\t<circle class=\"fill buffer\" cx=\"22\" cy=\"22\" r=\"20\" [style.stroke-dashoffset]=\"offsetBuffer()\" />\n\t<circle class=\"fill\" cx=\"22\" cy=\"22\" r=\"20\" [style.stroke-dashoffset]=\"offset()\" />\n</svg>\n}\n\n@case ('query') {\n<svg class=\"circle-progress query\" viewBox=\"0 0 44 44\">\n\t<circle class=\"fill\" cx=\"22\" cy=\"22\" r=\"20\" />\n</svg>\n}\n\n@default {\n<svg class=\"circle-progress indeterminate\" viewBox=\"0 0 44 44\">\n\t<circle class=\"fill\" cx=\"22\" cy=\"22\" r=\"20\" />\n</svg>\n}\n\n}","import {\n AfterViewInit, Component, ElementRef, inject, input, model,\n OnDestroy, OnInit, signal, TemplateRef, viewChild, ViewContainerRef\n} from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Subscription } from 'rxjs';\nimport { UiButton } from \"../ui-button/ui-button\";\nimport { LibUtil } from '../../util/util';\nimport { IPosicoesFloating } from '../../interfaces/interfaces';\nimport { criarOverlayConectado } from '../overlay/overlay.util';\nimport { toConnectedPositions } from '../overlay/overlay-position.util';\n\n@Component({\n selector: 'ui-menu',\n templateUrl: './ui-menu.html',\n styleUrl: './ui-menu.css',\n imports: [UiButton],\n host: { '[class.opened]': 'isOpened()' }\n})\nexport class UiMenu implements OnDestroy, OnInit, AfterViewInit {\n\n elementRef: ElementRef = inject(ElementRef);\n private overlay = inject(Overlay);\n private vcr = inject(ViewContainerRef);\n\n readonly disabled = input<boolean>();\n readonly icone = input<string | undefined | null>();\n autoCloseInCascade = model<boolean>(true);\n\n posicao = model<IPosicoesFloating & string>('right-start');\n isOpened = model(false);\n id = signal(LibUtil.uuid().split('-')[0]);\n isSmallScreen = signal(window.innerWidth < 500);\n optionMinWidth = signal<number>(0);\n\n private overlayRef: OverlayRef | null = null;\n private outsideSub: Subscription | null = null;\n\n readonly menuTrigger = viewChild<ElementRef>('menuTrigger');\n readonly menuTemplate = viewChild<TemplateRef<unknown>>('menuTemplate');\n\n ngOnInit() { }\n\n ngOnDestroy() {\n if (this.isOpened()) this.closeOverlay();\n }\n\n ngAfterViewInit() {\n this.checkScreenSize();\n }\n\n onOpenOrCloseOptions() {\n if (!this.disabled()) {\n if (this.isOpened()) {\n this.closeOverlay();\n } else {\n this.openOverlay();\n }\n this.menuTrigger()?.nativeElement.focus();\n }\n }\n\n onClickSlotBotao(event: Event) {\n if (!this.disabled()) {\n this.openOverlay();\n this.menuTrigger()?.nativeElement.focus();\n }\n }\n\n onClickContainer(event: Event) {\n event.stopPropagation();\n\n const target = event.target as HTMLElement;\n const closestTrigger = target.closest('.e-menu-trigger[id]') as HTMLElement | null;\n const isOwnTrigger = closestTrigger === this.menuTrigger()?.nativeElement;\n\n if (closestTrigger && !isOwnTrigger) {\n // Um trigger de submenu filho foi clicado — não fechar ainda, aguardar o filho fechar\n if (this.autoCloseInCascade()) {\n closestTrigger.addEventListener('menu-closed', () => this.closeOverlay(), { once: true });\n }\n } else {\n // Item folha clicado — fechar este menu\n this.closeOverlay();\n }\n }\n\n protected closeOverlay(fromCascade: boolean = false) {\n if (fromCascade && !this.autoCloseInCascade()) return;\n\n this.outsideSub?.unsubscribe();\n this.outsideSub = null;\n this.overlayRef?.dispose();\n this.overlayRef = null;\n this.isOpened.set(false);\n\n // Notifica o menu pai (se houver) que este menu fechou\n this.menuTrigger()?.nativeElement?.dispatchEvent(\n new CustomEvent('menu-closed', { bubbles: false })\n );\n }\n\n protected openOverlay() {\n if (this.overlayRef) return;\n\n const trigger = this.menuTrigger();\n if (!trigger) return;\n\n this.overlayRef = criarOverlayConectado({\n overlay: this.overlay,\n trigger: trigger,\n positions: toConnectedPositions(this.posicao(), 2),\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n panelClass: 'e-menu-overlay-panel',\n });\n\n const tpl = this.menuTemplate();\n if (tpl) {\n this.overlayRef.attach(new TemplatePortal(tpl, this.vcr));\n }\n\n // Anima a entrada do container após o attach\n requestAnimationFrame(() => {\n this.overlayRef?.overlayElement?.querySelector<HTMLElement>('.e-menu-container')\n ?.classList.add('open');\n });\n\n this.isOpened.set(true);\n\n this.outsideSub = this.overlayRef.outsidePointerEvents().subscribe((event) => {\n const target = event.target as HTMLElement;\n // Não fechar se o clique foi dentro de um overlay CDK filho (submenu)\n const emPaineCDK = target.closest('.cdk-overlay-pane');\n if (emPaineCDK && emPaineCDK !== this.overlayRef?.overlayElement) return;\n this.closeOverlay();\n });\n }\n\n onArrowUp(event: Event) { event.preventDefault(); }\n onArrowDown(event: Event) { event.preventDefault(); }\n\n onChangeMediaQuery(e: MediaQueryListEvent | MediaQueryList) {\n this.isSmallScreen.set(e.matches);\n const eTrigger = this.menuTrigger()?.nativeElement as HTMLElement;\n if (eTrigger) {\n this.optionMinWidth.set(this.isSmallScreen() ? 0 : eTrigger.offsetWidth - 4);\n }\n }\n\n checkScreenSize() {\n const mediaQuery = window.matchMedia('(max-width: 500px)');\n this.onChangeMediaQuery(mediaQuery);\n mediaQuery.addEventListener('change', this.onChangeMediaQuery.bind(this));\n }\n}\n","<div #menuTrigger class=\"e-menu-trigger\" (click)=\"onClickSlotBotao($event)\" (keyup.Enter)=\"onOpenOrCloseOptions()\"\n\t(keydown.ArrowDown)=\"onArrowDown($event)\" (keyup.ArrowUp)=\"onArrowUp($event)\" (keyup.Escape)=\"closeOverlay()\"\n\t[id]=\"'tr'+id()\" [class.open]=\"isOpened()\">\n\t<ng-content select=\"[slot='botao']\">\n\t\t@if(icone()) {\n\t\t<ui-button tipo=\"icon\" tema=\"primary\" [icone]=\"icone()\"></ui-button>\n\t\t} @else {\n\t\t<ui-button tipo=\"icon\" tema=\"primary\">\n\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\"\n\t\t\t\taria-hidden=\"true\">\n\t\t\t\t<circle cx=\"12\" cy=\"5\" r=\"2\" />\n\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"2\" />\n\t\t\t\t<circle cx=\"12\" cy=\"19\" r=\"2\" />\n\t\t\t</svg>\n\t\t</ui-button>\n\t\t}\n\t</ng-content>\n</div>\n\n<ng-template #menuTemplate>\n\t<div #menuContainer class=\"e-menu-container\" [class.smallScreen]=\"isSmallScreen()\"\n\t\t(click)=\"onClickContainer($event)\">\n\t\t<div [style.minWidth.px]=\"optionMinWidth()\" class=\"e-menu-area\">\n\t\t\t<ng-content></ng-content>\n\t\t</div>\n\t</div>\n</ng-template>\n","import { Component, input } from '@angular/core';\n\n@Component({\n\tselector: 'ui-divider',\n\ttemplateUrl: './ui-divider.html',\n\tstyleUrl: './ui-divider.css',\n\thost: {\n\t\t'[class.vertical]': 'vertical()',\n\t\t'[attr.data-espaco]': 'espaco()',\n\t}\n})\nexport class UiDivider {\n\tvertical = input<boolean>(false);\n\tespaco = input<'none' | 'sm' | 'md' | 'lg'>('md');\n}\n","<hr class=\"divider-line\" />","import { Component, computed, input } from '@angular/core';\nimport { ITiposTema } from '../../interfaces/interfaces';\n\n@Component({\n\tselector: 'ui-badge',\n\ttemplateUrl: './ui-badge.html',\n\tstyleUrl: './ui-badge.css',\n\thost: {\n\t\t'[attr.data-tema]': 'tema()',\n\t\t'[class.hidden]': '!visivel()',\n\t}\n})\nexport class UiBadge {\n\tvalor = input<number | string | undefined>();\n\tmax = input<number>(99);\n\ttema = input<ITiposTema>('error');\n\tvisivel = input<boolean>(true);\n\n\tdisplay = computed<string>(() => {\n\t\tconst v = this.valor();\n\t\tif (v === undefined || v === null || v === '') return '';\n\t\tif (typeof v === 'number') {\n\t\t\treturn v > this.max() ? `${this.max()}+` : `${v}`;\n\t\t}\n\t\treturn `${v}`;\n\t});\n}\n","<span class=\"badge-host\">\n\t<ng-content />\n\t<span class=\"badge-bubble\">{{ display() }}</span>\n</span>","import { Component, input, output } from '@angular/core';\nimport { ITiposTema } from '../../interfaces/interfaces';\n\n@Component({\n\tselector: 'ui-card',\n\ttemplateUrl: './ui-card.html',\n\tstyleUrl: './ui-card.css',\n\thost: {\n\t\t'[attr.data-elevacao]': 'elevacao()',\n\t\t'[attr.data-tema]': 'tema() || null',\n\t\t'[class.clicavel]': 'clicavel()',\n\t}\n})\nexport class UiCard {\n\televacao = input<0 | 1 | 2 | 3>(1);\n\tclicavel = input<boolean>(false);\n\ttema = input<ITiposTema | undefined>();\n\n\tclicked = output<MouseEvent>();\n}\n","<div class=\"card\" (click)=\"clicked.emit($event)\">\n\t<ng-content select=\"[slot=media]\" />\n\t<ng-content select=\"[slot=header]\" />\n\t<div class=\"card-content\">\n\t\t<ng-content select=\"[slot=content]\" />\n\t\t<ng-content />\n\t</div>\n\t<ng-content select=\"[slot=footer]\" />\n</div>","import { Component, computed, input } from '@angular/core';\nimport { ITiposTema } from '../../interfaces/interfaces';\n\n@Component({\n\tselector: 'ui-avatar',\n\ttemplateUrl: './ui-avatar.html',\n\tstyleUrl: './ui-avatar.css',\n\thost: {\n\t\t'[attr.data-tamanho]': 'tamanho()',\n\t\t'[attr.data-formato]': 'formato()',\n\t\t'[attr.data-tema]': 'tema() || null',\n\t}\n})\nexport class UiAvatar {\n\tsrc = input<string | undefined>();\n\tnome = input<string | undefined>();\n\ttamanho = input<'xs' | 'sm' | 'md' | 'lg' | 'xl'>('md');\n\tformato = input<'circle' | 'square'>('circle');\n\ttema = input<ITiposTema | undefined>('primary');\n\n\tiniciais = computed<string>(() => {\n\t\tconst n = this.nome();\n\t\tif (!n) return '?';\n\t\tconst partes = n.trim().split(/\\s+/);\n\t\tif (partes.length === 1) return partes[0].charAt(0).toUpperCase();\n\t\treturn (partes[0].charAt(0) + partes[partes.length - 1].charAt(0)).toUpperCase();\n\t});\n}\n","@if(src()) {\n<img class=\"avatar-img\" [src]=\"src()\" [alt]=\"nome() ?? 'avatar'\" />\n} @else {\n<span class=\"avatar-iniciais\">{{ iniciais() }}</span>\n}","import { Component, input, output } from '@angular/core';\nimport { ITiposTema } from '../../interfaces/interfaces';\nimport { UiIcon } from '../ui-icon/ui-icon';\n\n@Component({\n\tselector: 'ui-tag',\n\ttemplateUrl: './ui-tag.html',\n\tstyleUrl: './ui-tag.css',\n\thost: {\n\t\t'[attr.data-tema]': 'tema() || null',\n\t},\n\timports: [UiIcon],\n})\nexport class UiTag {\n\tlabel = input<string>('');\n\ticone = input<string | undefined>();\n\ttema = input<ITiposTema | undefined>('primary');\n\tremovivel = input<boolean>(false);\n\n\tremoved = output<void>();\n}\n","<span class=\"tag\">\n\t@if(icone()) { <i class=\"tag-icone\" [class]=\"icone()\"></i> }\n\t<span class=\"tag-label\">{{ label() }}</span>\n\t@if(removivel()) {\n\t<button class=\"tag-remove\" type=\"button\" (click)=\"removed.emit()\" aria-label=\"Remover\">\n\t\t<ui-icon name=\"x\"></ui-icon>\n\t</button>\n\t}\n</span>","import { Component, input } from '@angular/core';\nimport { UiIcon } from '../ui-icon/ui-icon';\n\n@Component({\n\tselector: 'ui-empty-state',\n\ttemplateUrl: './ui-empty-state.html',\n\tstyleUrl: './ui-empty-state.css',\n\timports: [UiIcon],\n})\nexport class UiEmptyState {\n\ttitulo = input<string>('Nenhum resultado encontrado');\n\tdescricao = input<string | undefined>();\n\ticone = input<string | undefined>(undefined);\n\ticoneNome = input<string>('inbox');\n}\n","<div class=\"empty-state\">\n\t<div class=\"empty-icone\">\n\t\t@if(icone()) { <i [class]=\"icone()\"></i> }\n\t\t@else { <ui-icon [name]=\"iconeNome()\"></ui-icon> }\n\t</div>\n\t<p class=\"empty-titulo\">{{ titulo() }}</p>\n\t@if(descricao()) {\n\t<p class=\"empty-descricao\">{{ descricao() }}</p>\n\t}\n\t<div class=\"empty-acao\">\n\t\t<ng-content select=\"[slot=acao]\" />\n\t</div>\n</div>","import { Component, input, model, output } from '@angular/core';\nimport { IKV } from '../../interfaces/interfaces';\n\n@Component({\n\tselector: 'ui-tabs',\n\ttemplateUrl: './ui-tabs.html',\n\tstyleUrl: './ui-tabs.css',\n\thost: {\n\t\t'[attr.data-tipo]': 'tipo()',\n\t}\n})\nexport class UiTabs {\n\tabas = input<IKV[]>([]);\n\tativa = model<string | number | null | undefined>(null);\n\ttipo = input<'line' | 'fill' | 'pill'>('fill');\n\n\tchanged = output<IKV>();\n\n\tselecionar(aba: IKV): void {\n\t\tthis.ativa.set(aba.k);\n\t\tthis.changed.emit(aba);\n\t}\n}\n","<div class=\"tabs-bar\">\n\t@for(aba of abas(); track aba.k) {\n\t<button class=\"tab-item\" type=\"button\" [class.ativo]=\"ativa() === aba.k\" (click)=\"selecionar(aba)\">\n\t\t@if(aba.html) {\n\t\t<span [innerHTML]=\"aba.html\"></span>\n\t\t} @else {\n\t\t{{ aba.v ?? aba.k }}\n\t\t}\n\t</button>\n\t}\n</div>\n<div class=\"tabs-conteudo\">\n\t<ng-content />\n</div>","import { ChangeDetectionStrategy, Component, input, signal } from '@angular/core';\nimport type { UiAccordionItem } from './ui-accordion-item/ui-accordion-item';\n\n@Component({\n\tselector: 'ui-accordion',\n\ttemplateUrl: './ui-accordion.html',\n\tstyleUrl: './ui-accordion.css',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UiAccordion {\n\tmultiplo = input<boolean>(false);\n\n\tprivate abertos = signal<Set<UiAccordionItem>>(new Set());\n\n\ttoggle(item: UiAccordionItem): void {\n\t\tif (item.desabilitado()) return;\n\t\tconst set = new Set(this.abertos());\n\t\tif (set.has(item)) {\n\t\t\tset.delete(item);\n\t\t} else {\n\t\t\tif (!this.multiplo()) set.clear();\n\t\t\tset.add(item);\n\t\t}\n\t\tthis.abertos.set(set);\n\t}\n\n\testaAberto(item: UiAccordionItem): boolean {\n\t\treturn this.abertos().has(item);\n\t}\n}\n","<div class=\"accordion\">\n\t<ng-content />\n</div>\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tTemplateRef,\n\tcomputed,\n\tcontentChild,\n\tinject,\n\tinput,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { UiAccordion } from '../ui-accordion';\nimport { UiIcon } from '../../ui-icon/ui-icon';\n\n@Component({\n\tselector: 'ui-accordion-item',\n\ttemplateUrl: './ui-accordion-item.html',\n\tstyleUrl: './ui-accordion-item.css',\n\timports: [NgTemplateOutlet, UiIcon],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\t'[class.aberto]': 'aberto()',\n\t\t'[class.desabilitado]': 'desabilitado()',\n\t},\n})\nexport class UiAccordionItem {\n\ttitulo = input.required<string>();\n\ticone = input<string>();\n\tdesabilitado = input<boolean>(false);\n\n\tprivate accordion = inject(UiAccordion);\n\n\tconteudo = contentChild(TemplateRef);\n\n\taberto = computed(() => this.accordion.estaAberto(this));\n\n\ttoggle(): void {\n\t\tif (this.desabilitado()) return;\n\t\tthis.accordion.toggle(this);\n\t}\n}\n","<button class=\"accordion-header\" type=\"button\" (click)=\"toggle()\">\n\t@if (icone()) { <i [class]=\"icone()\"></i> }\n\t<span class=\"accordion-titulo\">{{ titulo() }}</span>\n\t<ui-icon name=\"chevron-down\" class=\"accordion-seta\"></ui-icon>\n</button>\n<div class=\"accordion-body\">\n\t<div class=\"accordion-body-inner\">\n\t\t@if (aberto()) {\n\t\t\t@if (conteudo(); as tpl) {\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"tpl\" />\n\t\t\t} @else {\n\t\t\t\t<ng-content />\n\t\t\t}\n\t\t}\n\t</div>\n</div>\n","import { Component, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { IBreadcrumbItem } from '../../interfaces/interfaces';\n\n@Component({\n\tselector: 'ui-breadcrumb',\n\ttemplateUrl: './ui-breadcrumb.html',\n\tstyleUrl: './ui-breadcrumb.css',\n\timports: [RouterLink],\n})\nexport class UiBreadcrumb {\n\titens = input<IBreadcrumbItem[]>([]);\n\tseparador = input<string>('/');\n}\n","<nav class=\"breadcrumb\" aria-label=\"Breadcrumb\">\n\t<ol class=\"breadcrumb-list\">\n\t\t@for(item of itens(); track $index; let last = $last) {\n\t\t<li class=\"breadcrumb-item\" [class.ativo]=\"last\">\n\t\t\t@if(!last && item.route) {\n\t\t\t<a class=\"breadcrumb-link\" [routerLink]=\"item.route\">{{ item.label }}</a>\n\t\t\t} @else if(!last) {\n\t\t\t<span class=\"breadcrumb-link\">{{ item.label }}</span>\n\t\t\t} @else {\n\t\t\t<span class=\"breadcrumb-atual\" aria-current=\"page\">{{ item.label }}</span>\n\t\t\t}\n\t\t\t@if(!last) {\n\t\t\t<span class=\"breadcrumb-sep\" aria-hidden=\"true\">{{ separador() }}</span>\n\t\t\t}\n\t\t</li>\n\t\t}\n\t</ol>\n</nav>","import { Component, computed, input, model, output } from '@angular/core';\nimport { IStepperStep } from '../../interfaces/interfaces';\nimport { UiIcon } from '../ui-icon/ui-icon';\n\n@Component({\n\tselector: 'ui-stepper',\n\ttemplateUrl: './ui-stepper.html',\n\tstyleUrl: './ui-stepper.css',\n\thost: {\n\t\t'[attr.data-orientacao]': 'orientacao()',\n\t},\n\timports: [UiIcon],\n})\nexport class UiStepper {\n\tpassos = input<IStepperStep[]>([]);\n\tativo = model<number>(0);\n\torientacao = input<'horizontal' | 'vertical'>('horizontal');\n\n\tchanged = output<number>();\n\tfinalizado = output<void>();\n\n\tpodeAvancar = computed(() => this.ativo() < this.passos().length - 1);\n\tpodeFinalizar = computed(() => this.ativo() === this.passos().length - 1);\n\n\tirPara(index: number): void {\n\t\tif (index < 0 || index >= this.passos().length) return;\n\t\tthis.ativo.set(index);\n\t\tthis.changed.emit(index);\n\t}\n\n\tproximo(): void {\n\t\tif (this.podeAvancar()) this.irPara(this.ativo() + 1);\n\t\telse if (this.podeFinalizar()) this.finalizado.emit();\n\t}\n\n\tanterior(): void {\n\t\tif (this.ativo() > 0) this.irPara(this.ativo() - 1);\n\t}\n}\n","<div class=\"stepper\">\n\t<div class=\"stepper-header\">\n\t\t@for(passo of passos(); track $index; let last = $last) {\n\t\t<div class=\"stepper-passo\" [class.ativo]=\"ativo() === $index\" [class.concluido]=\"ativo() > $index\"\n\t\t\t(click)=\"ativo() > $index && irPara($index)\">\n\t\t\t<div class=\"passo-circulo\">\n\t\t\t\t@if(ativo() > $index) {\n\t\t\t\t<ui-icon name=\"check\"></ui-icon>\n\t\t\t\t} @else {\n\t\t\t\t<span>{{ $index + 1 }}</span>\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<div class=\"passo-info\">\n\t\t\t\t<span class=\"passo-label\">{{ passo.label }}</span>\n\t\t\t\t@if(passo.opcional) { <span class=\"passo-opcional\">Opcional</span> }\n\t\t\t</div>\n\t\t</div>\n\t\t@if(!last) {\n\t\t<div class=\"passo-conector\" [class.concluido]=\"ativo() > $index\"></div>\n\t\t}\n\t\t}\n\t</div>\n\n\t<div class=\"stepper-conteudo\">\n\t\t<ng-content />\n\t</div>\n</div>","import { Component, computed, input, model, output } from '@angular/core';\nimport { UiIcon } from '../ui-icon/ui-icon';\n\nexport interface IPageChangeEvent {\n\tpagina: number;\n\ttamanhoPagina: number;\n}\n\n@Component({\n\tselector: 'ui-pagination',\n\ttemplateUrl: './ui-pagination.html',\n\tstyleUrl: './ui-pagination.css',\n\timports: [UiIcon],\n})\nexport class UiPagination {\n\ttotal = input<number>(0);\n\tpagina = model<number>(1);\n\ttamanhoPagina = model<number>(10);\n\topcoesTamanho = input<number[]>([5, 10, 25, 50, 100]);\n\n\tpageChanged = output<IPageChangeEvent>();\n\n\ttotalPaginas = computed(() => Math.max(1, Math.ceil(this.total() / this.tamanhoPagina())));\n\n\tpaginasVisiveis = computed<(number | '...')[]>(() => {\n\t\tconst total = this.totalPaginas();\n\t\tconst atual = this.pagina();\n\t\tif (total <= 7) return Array.from({ length: total }, (_, i) => i + 1);\n\t\tconst pages: (number | '...')[] = [1];\n\t\tif (atual > 3) pages.push('...');\n\t\tfor (let i = Math.max(2, atual - 1); i <= Math.min(total - 1, atual + 1); i++) pages.push(i);\n\t\tif (atual < total - 2) pages.push('...');\n\t\tpages.push(total);\n\t\treturn pages;\n\t});\n\n\tirPara(p: number): void {\n\t\tif (p < 1 || p > this.totalPaginas() || p === this.pagina()) return;\n\t\tthis.pagina.set(p);\n\t\tthis.pageChanged.emit({ pagina: p, tamanhoPagina: this.tamanhoPagina() });\n\t}\n\n\tmudarTamanho(event: Event): void {\n\t\tconst val = parseInt((event.target as HTMLSelectElement).value, 10);\n\t\tthis.tamanhoPagina.set(val);\n\t\tthis.pagina.set(1);\n\t\tthis.pageChanged.emit({ pagina: 1, tamanhoPagina: val });\n\t}\n}\n","<div class=\"pagination\">\n\t<div class=\"pagination-info\">\n\t\t<select class=\"pg-tamanho\" (change)=\"mudarTamanho($event)\">\n\t\t\t@for(op of opcoesTamanho(); track op) {\n\t\t\t<option [value]=\"op\" [selected]=\"op === tamanhoPagina()\">{{ op }} / pág.</option>\n\t\t\t}\n\t\t</select>\n\t\t<span class=\"pg-total\">{{ total() }} itens</span>\n\t</div>\n\n\t<div class=\"pagination-controles\">\n\t\t<button class=\"pg-btn\" type=\"button\" (click)=\"irPara(1)\" [disabled]=\"pagina() === 1\" title=\"Primeira\">\n\t\t\t<ui-icon name=\"chevron-double-left\"></ui-icon>\n\t\t</button>\n\t\t<button class=\"pg-btn\" type=\"button\" (click)=\"irPara(pagina() - 1)\" [disabled]=\"pagina() === 1\" title=\"Anterior\">\n\t\t\t<ui-icon name=\"chevron-left\"></ui-icon>\n\t\t</button>\n\n\t\t@for(p of paginasVisiveis(); track $index) {\n\t\t@if(p === '...') {\n\t\t<span class=\"pg-ellipsis\">…</span>\n\t\t} @else {\n\t\t<button class=\"pg-btn pg-num\" type=\"button\" [class.ativo]=\"pagina() === p\" (click)=\"irPara(+p)\">{{ p }}</button>\n\t\t}\n\t\t}\n\n\t\t<button class=\"pg-btn\" type=\"button\" (click)=\"irPara(pagina() + 1)\" [disabled]=\"pagina() === totalPaginas()\"\n\t\t\ttitle=\"Próxima\">\n\t\t\t<ui-icon name=\"chevron-right\"></ui-icon>\n\t\t</button>\n\t\t<button class=\"pg-btn\" type=\"button\" (click)=\"irPara(totalPaginas())\" [disabled]=\"pagina() === totalPaginas()\"\n\t\t\ttitle=\"Última\">\n\t\t\t<ui-icon name=\"chevron-double-right\"></ui-icon>\n\t\t</button>\n\t</div>\n</div>","import { Directive, ElementRef, HostListener, inject, input, OnDestroy } from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { DomPortal } from '@angular/cdk/portal';\nimport { IPosicoesFloating } from '../../interfaces/interfaces';\nimport { criarOverlayConectado } from '../overlay/overlay.util';\nimport { toConnectedPositions } from '../overlay/overlay-position.util';\n\n@Directive({\n\tselector: '[uiTooltip]',\n\texportAs: 'uiTooltip',\n})\nexport class UiTooltip implements OnDestroy {\n\tuiTooltip = input<string>('');\n\tuiTooltipPos = input<IPosicoesFloating>('top');\n\n\tprivate el = inject(ElementRef);\n\tprivate overlay = inject(Overlay);\n\tprivate overlayRef: OverlayRef | null = null;\n\n\t@HostListener('mouseenter') onEnter() { this.show(); }\n\t@HostListener('focusin') onFocus() { this.show(); }\n\t@HostListener('mouseleave') onLeave() { this.hide(); }\n\t@HostListener('focusout') onBlur() { this.hide(); }\n\n\tprivate show(): void {\n\t\tif (!this.uiTooltip() || this.overlayRef) return;\n\n\t\tthis.overlayRef = criarOverlayConectado({\n\t\t\toverlay: this.overlay,\n\t\t\ttrigger: this.el,\n\t\t\tpositions: toConnectedPositions(this.uiTooltipPos(), 8),\n\t\t\tscrollStrategy: this.overlay.scrollStrategies.reposition(),\n\t\t\tpanelClass: 'ui-tooltip-panel',\n\t\t});\n\n\t\tconst tooltipEl = document.createElement('div');\n\t\ttooltipEl.className = 'ui-tooltip-bubble';\n\t\ttooltipEl.textContent = this.uiTooltip();\n\t\tdocument.body.appendChild(tooltipEl);\n\n\t\tthis.overlayRef.attach(new DomPortal(tooltipEl));\n\t\trequestAnimationFrame(() => tooltipEl.classList.add('visible'));\n\t}\n\n\tprivate hide(): void {\n\t\tthis.overlayRef?.dispose();\n\t\tthis.overlayRef = null;\n\t}\n\n\tngOnDestroy(): void { this.hide(); }\n}\n","import { Injectable, signal } from '@angular/core';\nimport { IToastConfig, IToastTipo } from '../../interfaces/interfaces';\nimport { LibUtil } from '../../util/util';\n\n@Injectable({ providedIn: 'root' })\nexport class UiToastService {\n\treadonly toasts = signal<IToastConfig[]>([]);\n\n\tshow(config: Omit<IToastConfig, 'id'>): string {\n\t\tconst id = LibUtil.uuid();\n\t\tconst duracao = config.duracao ?? 4000;\n\t\tconst toast: IToastConfig = { ...config, id };\n\t\tthis.toasts.update(t => [...t, toast]);\n\t\tif (duracao > 0) {\n\t\t\tsetTimeout(() => this.remove(id), duracao);\n\t\t}\n\t\treturn id;\n\t}\n\n\tsuccess(mensagem: string, titulo?: string, duracao = 4000): string {\n\t\treturn this.show({ mensagem, titulo, tipo: 'success', duracao });\n\t}\n\n\terror(mensagem: string, titulo?: string, duracao = 6000): string {\n\t\treturn this.show({ mensagem, titulo, tipo: 'error', duracao });\n\t}\n\n\twarning(mensagem: string, titulo?: string, duracao = 5000): string {\n\t\treturn this.show({ mensagem, titulo, tipo: 'warning', duracao });\n\t}\n\n\tinfo(mensagem: string, titulo?: string, duracao = 4000): string {\n\t\treturn this.show({ mensagem, titulo, tipo: 'info', duracao });\n\t}\n\n\tremove(id: string): void {\n\t\tthis.toasts.update(ts => ts.filter(t => t.id !== id));\n\t}\n\n\tclear(): void {\n\t\tthis.toasts.set([]);\n\t}\n}\n","import { Component, inject } from '@angular/core';\nimport { UiToastService } from './ui-toast.service';\nimport { UiIcon } from '../ui-icon/ui-icon';\n\n@Component({\n\tselector: 'ui-toast-container',\n\ttemplateUrl: './ui-toast-container.html',\n\tstyleUrl: './ui-toast-container.css',\n\timports: [UiIcon],\n})\nexport class UiToastContainer {\n\treadonly toastService = inject(UiToastService);\n}\n","<div class=\"toast-stack\">\n\t@for(toast of toastService.toasts(); track toast.id) {\n\t<div class=\"toast\" [attr.data-tipo]=\"toast.tipo\" role=\"alert\">\n\t\t<div class=\"toast-icone\">\n\t\t\t@switch(toast.tipo) {\n\t\t\t@case('success') { <ui-icon name=\"check-circle\"></ui-icon> }\n\t\t\t@case('error') { <ui-icon name=\"x-circle\"></ui-icon> }\n\t\t\t@case('warning') { <ui-icon name=\"exclamation-triangle\"></ui-icon> }\n\t\t\t@case('info') { <ui-icon name=\"info-circle\"></ui-icon> }\n\t\t\t}\n\t\t</div>\n\t\t<div class=\"toast-body\">\n\t\t\t@if(toast.titulo) { <strong class=\"toast-titulo\">{{ toast.titulo }}</strong> }\n\t\t\t<span class=\"toast-mensagem\">{{ toast.mensagem }}</span>\n\t\t</div>\n\t\t<button class=\"toast-fechar\" type=\"button\" (click)=\"toastService.remove(toast.id)\" aria-label=\"Fechar\">\n\t\t\t<ui-icon name=\"x\"></ui-icon>\n\t\t</button>\n\t</div>\n\t}\n</div>","import {\n AfterViewInit, Component, ElementRef, inject, InjectionToken,\n OnDestroy, TemplateRef, Type\n} from '@angular/core';\nimport { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport { ConfigurableFocusTrapFactory, FocusTrap } from '@angular/cdk/a11y';\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { IModalConfig } from '../../interfaces/interfaces';\nimport { UiButton } from '../ui-button/ui-button';\nimport { UiIcon } from '../ui-icon/ui-icon';\n\nexport interface IModalBoxData {\n config: IModalConfig;\n overlayRef: OverlayRef;\n close: () => void;\n}\n\nexport const MODAL_BOX_DATA = new InjectionToken<IModalBoxData>('MODAL_BOX_DATA');\n\n/** Token para injetar dados customizados no componente de conteúdo do modal */\nexport const MODAL_DADOS = new InjectionToken<unknown>('MODAL_DADOS');\n\n@Component({\n selector: 'ui-modal-box',\n templateUrl: './ui-modal-box.html',\n styleUrl: './ui-modal-outlet.css',\n imports: [UiButton, UiIcon, NgComponentOutlet, NgTemplateOutlet],\n host: {\n 'role': 'dialog',\n 'aria-modal': 'true',\n }\n})\nexport class UiModalBox implements AfterViewInit, OnDestroy {\n readonly data = inject(MODAL_BOX_DATA);\n private el = inject(ElementRef);\n private focusTrapFactory = inject(ConfigurableFocusTrapFactory);\n private focusTrap: FocusTrap | null = null;\n\n get config() { return this.data.config; }\n\n get conteudoComponent(): Type<unknown> | null {\n return this.config.conteudo instanceof TemplateRef ? null : (this.config.conteudo as Type<unknown>) ?? null;\n }\n\n get conteudoTemplate(): TemplateRef<unknown> | null {\n return this.config.conteudo instanceof TemplateRef ? this.config.conteudo : null;\n }\n\n ngAfterViewInit() {\n this.focusTrap = this.focusTrapFactory.create(this.el.nativeElement);\n this.focusTrap.focusInitialElementWhenReady();\n }\n\n ngOnDestroy() {\n this.focusTrap?.destroy();\n }\n\n fechar() {\n this.data.close();\n }\n}\n","<div class=\"modal-box\" [attr.data-tamanho]=\"config.tamanho ?? 'md'\">\n\n\t@if(config.titulo || config.closeable !== false) {\n\t<div class=\"modal-header\">\n\t\t@if(config.titulo) { <h2 class=\"modal-titulo\">{{ config.titulo }}</h2> }\n\t\t@if(config.closeable !== false) {\n\t\t<button class=\"modal-close\" type=\"button\" (click)=\"fechar()\" aria-label=\"Fechar\">\n\t\t\t<ui-icon name=\"x-lg\"></ui-icon>\n\t\t</button>\n\t\t}\n\t</div>\n\t}\n\n\t@if(config.mensagem) {\n\t<div class=\"modal-body\">\n\t\t<p>{{ config.mensagem }}</p>\n\t</div>\n\t}\n\n\t@if(conteudoComponent) {\n\t<div class=\"modal-body\">\n\t\t<ng-container *ngComponentOutlet=\"conteudoComponent\"></ng-container>\n\t</div>\n\t}\n\n\t@if(conteudoTemplate) {\n\t<div class=\"modal-body\">\n\t\t<ng-container *ngTemplateOutlet=\"conteudoTemplate\"></ng-container>\n\t</div>\n\t}\n\n\t@if(config.acoes && config.acoes.length > 0) {\n\t<div class=\"modal-footer\">\n\t\t@for(acao of config.acoes; track $index) {\n\t\t<ui-button [tema]=\"acao.tema\" tipo=\"fill\"\n\t\t\t(clicked)=\"acao.callback && acao.callback(); fechar()\">\n\t\t\t{{ acao.label }}\n\t\t</ui-button>\n\t\t}\n\t</div>\n\t}\n\n</div>\n","import { inject, Injectable, Injector, signal } from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { IModalConfig } from '../../interfaces/interfaces';\nimport { LibUtil } from '../../util/util';\nimport { MODAL_BOX_DATA, MODAL_DADOS, UiModalBox } from './ui-modal-box';\n\n@Injectable({ providedIn: 'root' })\nexport class UiModalService {\n private overlay = inject(Overlay);\n private injector = inject(Injector);\n\n /** Sinal com os configs dos modais abertos */\n readonly modais = signal<IModalConfig[]>([]);\n\n private _refs = new Map<string, OverlayRef>();\n\n open(config: Omit<IModalConfig, 'id'>): string {\n const id = LibUtil.uuid();\n const fullConfig: IModalConfig = { ...config, id };\n\n const overlayRef = this.overlay.create({\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-dark-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.block(),\n positionStrategy: this.overlay.position().global()\n .centerHorizontally()\n .centerVertically(),\n panelClass: 'ui-modal-panel',\n });\n\n const close = () => this.close(id);\n\n if (config.closeable !== false) {\n overlayRef.backdropClick().subscribe(() => close());\n }\n\n const childInjector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: MODAL_BOX_DATA, useValue: { config: fullConfig, overlayRef, close } },\n ...(config.dados != null ? [{ provide: MODAL_DADOS, useValue: config.dados }] : []),\n ],\n });\n\n overlayRef.attach(new ComponentPortal(UiModalBox, null, childInjector));\n\n this._refs.set(id, overlayRef);\n this.modais.update(m => [...m, fullConfig]);\n return id;\n }\n\n close(id: string): void {\n const ref = this._refs.get(id);\n if (ref) {\n ref.dispose();\n this._refs.delete(id);\n }\n this.modais.update(m => m.filter(modal => modal.id !== id));\n }\n\n closeAll(): void {\n this._refs.forEach(ref => ref.dispose());\n this._refs.clear();\n this.modais.set([]);\n }\n}\n","import { Component, HostListener, inject } from '@angular/core';\nimport { UiModalService } from './ui-modal.service';\n\n/**\n * Inclua <ui-modal-outlet> no shell do app para habilitar o controle de Esc nos modais.\n * A renderização dos modais é gerenciada pelo CDK Overlay (não requer marcação adicional).\n */\n@Component({\n selector: 'ui-modal-outlet',\n template: '',\n styles: [':host { display: none; }'],\n})\nexport class UiModalOutlet {\n readonly modalService = inject(UiModalService);\n\n @HostListener('document:keydown.escape')\n onEscape(): void {\n const modais = this.modalService.modais();\n const last = modais[modais.length - 1];\n if (last && last.closeable !== false) {\n this.modalService.close(last.id);\n }\n }\n}\n","import { Component, input, model, output } from '@angular/core';\n\n@Component({\n\tselector: 'ui-drawer',\n\ttemplateUrl: './ui-drawer.html',\n\tstyleUrl: './ui-drawer.css',\n\thost: {\n\t\t'[attr.data-posicao]': 'posicao()',\n\t\t'[class.aberto]': 'aberto()',\n\t}\n})\nexport class UiDrawer {\n\taberto = model<boolean>(false);\n\tposicao = input<'left' | 'right' | 'top' | 'bottom'>('right');\n\tlargura = input<string>('320px');\n\tfecharAoClicarFora = input<boolean>(true);\n\n\tfechado = output<void>();\n\n\tfechar(): void {\n\t\tthis.aberto.set(false);\n\t\tthis.fechado.emit();\n\t}\n\n\tonOverlayClick(): void {\n\t\tif (this.fecharAoClicarFora()) this.fechar();\n\t}\n}\n","@if(aberto()) {\n<div class=\"drawer-overlay\" (click)=\"onOverlayClick()\"></div>\n}\n<div class=\"drawer-panel\" [style.--drawer-largura]=\"largura()\" [style.--drawer-altura]=\"largura()\">\n\t<ng-content />\n</div>","import { Component, computed, input, model, output, signal } from '@angular/core';\nimport { UiIcon } from '../ui-icon/ui-icon';\n\n@Component({\n\tselector: 'ui-rating',\n\ttemplateUrl: './ui-rating.html',\n\tstyleUrl: './ui-rating.css',\n\thost: {\n\t\t'[class.readonly]': 'readonly()',\n\t},\n\timports: [UiIcon],\n})\nexport class UiRating {\n\tvalor = model<number>(0);\n\tmax = input<number>(5);\n\treadonly = input<boolean>(false);\n\tmeiaPasso = input<boolean>(false);\n\n\tchanged = output<number>();\n\n\thover = signal<number>(-1);\n\n\testrelas = computed<number[]>(() => Array.from({ length: this.max() }, (_, i) => i + 1));\n\n\texibido = computed<number>(() => this.hover() >= 0 ? this.hover() : this.valor());\n\n\tpontuacaoEstrela(index: number): 'full' | 'half' | 'empty' {\n\t\tconst val = this.exibido();\n\t\tif (val >= index) return 'full';\n\t\tif (this.meiaPasso() && val >= index - 0.5) return 'half';\n\t\treturn 'empty';\n\t}\n\n\tonMouseMove(event: MouseEvent, index: number): void {\n\t\tif (this.readonly()) return;\n\t\tif (this.meiaPasso()) {\n\t\t\tconst el = event.currentTarget as HTMLElement;\n\t\t\tconst meioX = el.getBoundingClientRect().width / 2;\n\t\t\tthis.hover.set(event.offsetX < meioX ? index - 0.5 : index);\n\t\t} else {\n\t\t\tthis.hover.set(index);\n\t\t}\n\t}\n\n\tonMouseLeave(): void { this.hover.set(-1); }\n\n\tselecionar(index: number, event: MouseEvent): void {\n\t\tif (this.readonly()) return;\n\t\tlet val = index;\n\t\tif (this.meiaPasso()) {\n\t\t\tconst el = event.currentTarget as HTMLElement;\n\t\t\tconst meioX = el.getBoundingClientRect().width / 2;\n\t\t\tval = event.offsetX < meioX ? index - 0.5 : index;\n\t\t}\n\t\tthis.valor.set(val);\n\t\tthis.changed.emit(val);\n\t}\n}\n","<div class=\"rating\" (mouseleave)=\"onMouseLeave()\">\n\t@for(i of estrelas(); track i) {\n\t<button class=\"estrela\" type=\"button\" [class.full]=\"pontuacaoEstrela(i) === 'full'\"\n\t\t[class.half]=\"pontuacaoEstrela(i) === 'half'\" [disabled]=\"readonly()\" (mousemove)=\"onMouseMove($event, i)\"\n\t\t(click)=\"selecionar(i, $event)\" [attr.aria-label]=\"'Avaliar ' + i + ' de ' + max()\">\n\t\t<ui-icon name=\"star-fill\" class=\"icone-fundo\"></ui-icon>\n\t\t<ui-icon name=\"star-fill\" class=\"icone-frente\"></ui-icon>\n\t</button>\n\t}\n</div>","import { Component, input, model, output, signal } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ITreeNode } from '../../interfaces/interfaces';\nimport { UiIcon } from '../ui-icon/ui-icon';\n\n@Component({\n\tselector: 'ui-tree',\n\ttemplateUrl: './ui-tree.html',\n\tstyleUrl: './ui-tree.css',\n\timports: [NgTemplateOutlet, UiIcon],\n})\nexport class UiTree {\n\tnos = input<ITreeNode[]>([]);\n\tmultiplo = input<boolean>(false);\n\n\tselecionado = model<(string | number)[]>([]);\n\texpandidos = signal<Set<string | number>>(new Set());\n\n\tcarregarFilhos = output<ITreeNode>();\n\n\ttoggleExpandir(no: ITreeNode): void {\n\t\tconst set = new Set(this.expandidos());\n\t\tif (set.has(no.id)) {\n\t\t\tset.delete(no.id);\n\t\t} else {\n\t\t\tset.add(no.id);\n\t\t\tif (!no.filhos || no.filhos.length === 0) this.carregarFilhos.emit(no);\n\t\t}\n\t\tthis.expandidos.set(set);\n\t}\n\n\tisExpandido(id: string | number): boolean {\n\t\treturn this.expandidos().has(id);\n\t}\n\n\ttoggleSelecionar(no: ITreeNode): void {\n\t\tif (no.desabilitado) return;\n\t\tconst atual = this.selecionado();\n\t\tif (this.multiplo()) {\n\t\t\tif (atual.includes(no.id)) {\n\t\t\t\tthis.selecionado.set(atual.filter(id => id !== no.id));\n\t\t\t} else {\n\t\t\t\tthis.selecionado.set([...atual, no.id]);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.selecionado.set(atual.includes(no.id) ? [] : [no.id]);\n\t\t}\n\t}\n\n\tisSelecionado(id: string | number): boolean {\n\t\treturn this.selecionado().includes(id);\n\t}\n}\n","<ul class=\"tree-list\">\n\t@for(no of nos(); track no.id) {\n\t<ng-container *ngTemplateOutlet=\"noTemplate; context: { $implicit: no, nivel: 0 }\" />\n\t}\n</ul>\n\n<ng-template #noTemplate let-no let-nivel=\"nivel\">\n\t<li class=\"tree-no\" [class.desabilitado]=\"no.desabilitado\" [style.--nivel]=\"nivel\">\n\t\t<div class=\"tree-row\" [class.selecionado]=\"isSelecionado(no.id)\" (click)=\"toggleSelecionar(no)\">\n\t\t\t<span class=\"tree-indent\"></span>\n\t\t\t@if(no.filhos !== undefined) {\n\t\t\t<button class=\"tree-toggle\" type=\"button\" (click)=\"$event.stopPropagation(); toggleExpandir(no)\"\n\t\t\t\t[attr.aria-expanded]=\"isExpandido(no.id)\">\n\t\t\t\t<ui-icon [name]=\"isExpandido(no.id) ? 'chevron-down' : 'chevron-right'\"></ui-icon>\n\t\t\t</button>\n\t\t\t} @else {\n\t\t\t<span class=\"tree-toggle-space\"></span>\n\t\t\t}\n\t\t\t@if(no.icone) { <i class=\"tree-icone\" [class]=\"no.icone\"></i> }\n\t\t\t<span class=\"tree-label\">{{ no.label }}</span>\n\t\t</div>\n\n\t\t@if(no.filhos && isExpandido(no.id)) {\n\t\t<ul class=\"tree-list tree-filhos\">\n\t\t\t@for(filho of no.filhos; track filho.id) {\n\t\t\t<ng-container *ngTemplateOutlet=\"noTemplate; context: { $implicit: filho, nivel: nivel + 1 }\" />\n\t\t\t}\n\t\t</ul>\n\t\t}\n\t</li>\n</ng-template>","import { Component, input } from '@angular/core';\nimport { ITimelineItem } from '../../interfaces/interfaces';\n\n@Component({\n\tselector: 'ui-timeline',\n\ttemplateUrl: './ui-timeline.html',\n\tstyleUrl: './ui-timeline.css',\n})\nexport class UiTimeline {\n\titens = input<ITimelineItem[]>([]);\n}\n","<div class=\"timeline\">\n\t@for(item of itens(); track $index; let last = $last) {\n\t<div class=\"timeline-item\" [attr.data-tema]=\"item.tema ?? null\">\n\t\t<div class=\"timeline-left\">\n\t\t\t<div class=\"timeline-ponto\">\n\t\t\t\t@if(item.icone) {\n\t\t\t\t<i [class]=\"item.icone\"></i>\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t@if(!last) { <div class=\"timeline-linha\"></div> }\n\t\t</div>\n\t\t<div class=\"timeline-conteudo\">\n\t\t\t<div class=\"timeline-header\">\n\t\t\t\t<strong class=\"timeline-titulo\">{{ item.titulo }}</strong>\n\t\t\t\t@if(item.data) { <span class=\"timeline-data\">{{ item.data }}</span> }\n\t\t\t</div>\n\t\t\t@if(item.descricao) {\n\t\t\t<p class=\"timeline-descricao\">{{ item.descricao }}</p>\n\t\t\t}\n\t\t</div>\n\t</div>\n\t}\n</div>","import {\n Component, computed, effect, ElementRef, inject, OnDestroy,\n signal, TemplateRef, viewChild, ViewContainerRef\n} from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Subscription } from 'rxjs';\nimport { LibUtil } from '../../util/util';\nimport { LOG } from '../../util/log';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { IKV } from '../../interfaces/interfaces';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\nimport { criarOverlayConectado } from '../../elements/overlay/overlay.util';\nimport { toConnectedPositions } from '../../elements/overlay/overlay-position.util';\n\nexport interface IKVAutoCompletador extends IKV {\n selected: boolean;\n choosing: boolean;\n}\n\n@Component({\n selector: 'fields-autocomplete',\n templateUrl: './autocomplete.html',\n styleUrls: ['../fields.css', './autocomplete.css'],\n imports: [UiListErrors],\n})\nexport class FieldsAutocomplete extends BaseFieldsForm implements OnDestroy {\n\n elementRef: ElementRef = inject(ElementRef);\n private overlay = inject(Overlay);\n private vcr = inject(ViewContainerRef);\n\n isOpenedOptions = signal(false);\n markedOptionKey = signal<string | number | null | undefined>(null);\n\n options = computed<IKVAutoCompletador[]>(() => {\n const options = this.campo()?.options?.() || [];\n return options.filter((op: IKV) => op.v != null && op.v !== '').map((op: IKV) => ({\n ...op,\n selected: op.k === this.value(),\n choosing: op.k === this.markedOptionKey()\n }));\n });\n\n optionsFiltered = computed<IKVAutoCompletador[]>(() => {\n let words = this.value()?.toString().trim().split(\" \").filter((t: string) => t != \"\");\n const options = (this.options() || []).map(o => ({ ...o, html: o.v || `⚠️ Chave: ${o.k}` }));\n if (words.length === 0) return options;\n\n return options.filter(op => {\n for (const w of words) {\n let encontrado = false;\n if (op.v != null && LibUtil.contem(op.v, w)) {\n encontrado = true;\n }\n if (!encontrado) return false;\n }\n return true;\n }).map(op => {\n let data = op.v?.toString() || '';\n if (words.length > 0) {\n for (let word of words) {\n let w = word.toLowerCase();\n let preparedData = LibUtil.removeAcentos(data).toLowerCase();\n if (w != \"\" && preparedData.includes(w)) {\n if (new RegExp(`<[^>]*${w}[^>]*>`, 'i').test(preparedData.toString())) continue;\n let pos = preparedData.indexOf(w);\n data = data.slice(0, pos)\n + \"<mark>\"\n + data.slice(pos, pos + w.length)\n + \"</mark>\"\n + data.slice(pos + w.length);\n data = data.replaceAll(\"</mark><mark>\", \"\");\n }\n };\n }\n return { ...op, html: data };\n });\n });\n\n readonly triggerElement = viewChild<ElementRef>('triggerElement');\n readonly optionsTemplate = viewChild<TemplateRef<unknown>>('optionsTemplate');\n offsetWidth = signal<number>(0);\n\n private overlayRef: OverlayRef | null = null;\n private outsideSub: Subscription | null = null;\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n\n effect(() => {\n const el = this.triggerElement()?.nativeElement as HTMLElement;\n if (!el) return;\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n this.offsetWidth.set(entry.target.clientWidth - 4);\n }\n });\n resizeObserver.observe(el);\n return () => resizeObserver.disconnect();\n });\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this._dispose();\n }\n\n onInput(newValue: string) {\n if (newValue != \"\") {\n this.openOverlay();\n } else {\n this.closeOverlay();\n }\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n if (this.campo()?.onMatchOption) {\n let option = this.campo()?.options?.()?.find((op: IKV) => op.v === newValue);\n try {\n this.campo()?.onMatchOption?.(this.form(), option);\n } catch (err) {\n LOG(1, `❌ Erro ao executar onMatchOption do campo '${this.name.toString()}'`, err);\n }\n }\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n override onClickLabel() {\n super.onClickLabel();\n this.closeOverlay();\n }\n\n protected closeOverlay() {\n this._dispose();\n this.isOpenedOptions.set(false);\n this.markedOptionKey.set(null);\n }\n\n protected openOverlay() {\n if (this.overlayRef) return;\n\n const trigger = this.triggerElement();\n if (!trigger) return;\n\n this.overlayRef = criarOverlayConectado({\n overlay: this.overlay,\n trigger: trigger,\n positions: toConnectedPositions('bottom-start', 2),\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n minWidth: (trigger.nativeElement as HTMLElement).offsetWidth,\n panelClass: 'e-autocomplete-overlay-panel',\n });\n\n const tpl = this.optionsTemplate();\n if (tpl) {\n this.overlayRef.attach(new TemplatePortal(tpl, this.vcr));\n }\n\n this.isOpenedOptions.set(true);\n\n this.outsideSub = this.overlayRef.outsidePointerEvents().subscribe(() => {\n if (this.isOpenedOptions()) this.closeOverlay();\n });\n }\n\n onSelectOption(option?: IKV) {\n if (!option || option.k == null) {\n LOG(1, `❌ Chave nula (${option?.k}, classof: '${LibUtil.classof(option?.k)}'). Valor corresponde ${option?.v}`);\n return;\n }\n this.onInput(option.v?.toString() ?? '');\n this.closeOverlay();\n }\n\n markKey(event: KeyboardEvent) {\n const options = this.optionsFiltered();\n if (options.length === 0) return;\n let currentIndex = options.findIndex(op => op.k === this.markedOptionKey());\n let currentKV = options.find(op => op.k === this.markedOptionKey());\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n this.openOverlay();\n currentIndex = (currentIndex + 1) % options.length;\n this.markedOptionKey.set(options[currentIndex].k);\n this.moveScrollToMarkedOption();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n this.openOverlay();\n currentIndex = (currentIndex - 1 + options.length) % options.length;\n this.markedOptionKey.set(options[currentIndex].k);\n this.moveScrollToMarkedOption();\n } else if (event.key === 'Enter') {\n event.preventDefault();\n if (this.markedOptionKey() != null) {\n this.onSelectOption(currentKV);\n }\n this.closeOverlay();\n }\n }\n\n private moveScrollToMarkedOption() {\n setTimeout(() => {\n const container = this.overlayRef?.overlayElement?.querySelector<HTMLElement>('.options-list');\n const markedOption = container?.querySelector<HTMLElement>('.option-item.choosing');\n if (container && markedOption) {\n const containerTop = container.scrollTop;\n const containerBottom = containerTop + container.clientHeight;\n const optionTop = markedOption.offsetTop;\n const optionBottom = optionTop + markedOption.offsetHeight;\n if (optionTop < containerTop) {\n container.scrollTop = optionTop - 40;\n } else if (optionBottom > containerBottom) {\n container.scrollTop = optionBottom - container.clientHeight;\n }\n }\n }, 1);\n }\n\n private _dispose() {\n this.outsideSub?.unsubscribe();\n this.outsideSub = null;\n this.overlayRef?.dispose();\n this.overlayRef = null;\n }\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div #triggerElement class=\"fieldField FieldAutoComplete\">\n\t\t\t\t<div [class]=\"campo()?.classe\" [style]=\"campo()?.style\">\n\t\t\t\t\t<input type=\"text\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t\t[style]=\"campo()?.style\" (keyup)=\"markKey($event)\" (keydown.tab)=\"closeOverlay()\" [class.outlined]=\"true\"\n\t\t\t\t\t\t[class.input]=\"true\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>\n\n<ng-template #optionsTemplate>\n\t<div class=\"select-options-container\">\n\t\t<div class=\"options-list\">\n\t\t\t@for(option of optionsFiltered(); track option.k) {\n\t\t\t<div class=\"option-item\" [class.selected]=\"option.selected\" [style.width.px]=\"offsetWidth()\" [title]=\"option.v\"\n\t\t\t\t(click)=\"onSelectOption(option)\" (keyup.Enter)=\"onSelectOption(option)\" tabindex=\"-1\"\n\t\t\t\t[class.choosing]=\"option.choosing\">\n\t\t\t\t<div class=\"option-item-check\"></div>\n\t\t\t\t<div class=\"option-item-text\" [innerHTML]=\"option.html\"></div>\n\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t</div>\n</ng-template>\n","import { Component, effect } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\nimport { LOG } from '../../util/log';\n\n@Component({\n selector: 'fields-button',\n templateUrl: './button.html',\n styleUrls: ['../fields.css', './button.css'],\n imports: [UiButton, UiListErrors]\n})\nexport class FieldsButton extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onClickButton(ev: Event) {\n this.tocarCampo();\n if (this.campo()?.onClick) {\n try {\n this.campo()?.onClick?.(this.form());\n } catch (err) {\n LOG(1, '❌ Erro ao executar onClick do botão:', err);\n }\n }\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo ?? '&nbsp;' }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldButton\">\n\t\t\t\t<ui-button [tipo]=\"campo()?.tipoBotao\" [tema]=\"campo()?.tema\" [style]=\"campo()?.style\"\n\t\t\t\t\t(click)=\"onClickButton($event)\" [disabled]=\"campo()?.disabled\" [icone]=\"campo()?.icone\">\n\t\t\t\t\t<div [innerHTML]=\"campo()?.tituloClicavel\"></div>\n\t\t\t\t</ui-button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect, signal } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiCheckBox } from \"../../elements/ui-check-box/ui-check-box\";\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-checkbox',\n templateUrl: './checkbox.html',\n styleUrls: ['../fields.css', './checkbox.css'],\n imports: [UiCheckBox, UiListErrors],\n})\nexport class FieldsCheckbox extends BaseFieldsForm {\n\n signalFocus = signal<boolean>(false);\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onChange(newValue: boolean) {\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n ngAfterViewInit(): void {\n let val = this.value();\n this.updateValue(val === true || val === 'true' || val === 1 || val === '1', false);\n }\n\n toogleAtivo() {\n this.onChange(!this.value());\n this.signalFocus.set(true);\n setTimeout(() => {\n this.signalFocus.set(false);\n }, 1)\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldCheckbox microPos4\">\n\t\t\t\t<ui-check-box [value]=\"value()\" (changed)=\"onChange($event)\" [focus]=\"signalFocus()\"></ui-check-box>\n\t\t\t\t<div class=\"tituloClicavel\" (click)=\"toogleAtivo()\">\n\t\t\t\t\t{{ value() ? (campo()?.textoAtivo ?? campo()?.tituloClicavel ) : (campo()?.textoInativo ??\n\t\t\t\t\tcampo()?.tituloClicavel) }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, computed, input } from '@angular/core';\nimport { LibUtil } from '../../../util/util';\nimport { UiIcon } from '../../../elements/ui-icon/ui-icon';\n\n@Component({\n selector: 'field-color-circulocolorido',\n templateUrl: './circulocolorido.html',\n styleUrls: ['./circulocolorido.css'],\n imports: [UiIcon],\n})\nexport class CirculoColorido {\n\n valor = input<string | number | null>(null);\n\n angle = computed<number | null>(() => {\n let angle = this.valor();\n if (!angle) return null;\n if (LibUtil.classof(angle) === 'string') {\n let num = Number(angle);\n if (isNaN(num)) return 0;\n angle = num;\n }\n return angle as number | null;\n });\n\n}\n","<div class=\"container\" [style.--atualColor]=\"angle()\">\n\t<div class=\"circulo {{ angle() != null ? 'show' : 'hide' }}\"></div>\n\t@if(angle() != null){\n\t<div class=\"arrow\" [style.--arrowAngle]=\"(angle()! - 47) + 'deg'\">\n\t\t<ui-icon name=\"cursor-fill\"></ui-icon>\n\t</div>\n\t}\n</div>","import { Component, effect, OnInit } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { CirculoColorido } from './CirculoColorido/circulocolorido';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-color',\n templateUrl: './color.html',\n styleUrls: ['../fields.css', './color.css'],\n imports: [CirculoColorido, UiListErrors],\n})\nexport class FieldsColor extends BaseFieldsForm implements OnInit {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '' || val === 0;\n // if (val && LibUtil.classof(val) === 'number' && (val < 0 || val > 360)) {\n // errors = [...errors, Valide.msg.apenasEntre(0, 360)];\n // }\n this.updateCampo({ empty });\n });\n }\n\n override ngOnInit() {\n super.ngOnInit();\n this.onInput(this.value(), false);\n }\n\n onInput(newValue: string, touch: boolean = true) {\n let num = Number(newValue);\n if (isNaN(num)) num = 0;\n this.updateValue(num, touch);\n this.campo()?.onInput?.(this.form());\n }\n\n onInputRange(event: any) {\n let num = Number(event.target.value);\n if (isNaN(num)) num = 0;\n if (num < 0) num = 0;\n if (num > 360) num = 360;\n this.updateValue(num);\n this.campo()?.onInput?.(this.form());\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<field-color-circulocolorido [valor]=\"value()\"></field-color-circulocolorido>\n\t\t<div class=\"fieldComRange\">\n\t\t\t<div class=\"fieldEffect\">\n\t\t\t\t<div class=\"fieldField FieldColor\">\n\t\t\t\t\t<input type=\"number\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t\t[style]=\"campo()?.style\" min=\"0\" max=\"360\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<input type=\"range\" [value]=\"value() ?? 0\" (input)=\"onInputRange($event)\" min=\"0\" max=\"360\"\n\t\t\t\t[disabled]=\"campo()?.disabled\" (change)=\"onChangeEmit()\" />\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-date',\n templateUrl: './date.html',\n styleUrls: ['../fields.css'],\n imports: [UiListErrors],\n})\nexport class FieldsDate extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldDate\">\n\t\t\t\t<input type=\"date\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-datetime',\n templateUrl: './datetime.html',\n styleUrls: ['../fields.css'],\n imports: [UiListErrors],\n})\nexport class FieldsDatetime extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldDate\">\n\t\t\t\t<input type=\"datetime-local\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Pipe, PipeTransform } from '@angular/core';\nimport { LibUtil } from './util';\n\n@Pipe({ name: 'jsonColorido' })\nexport class JsonColoridoPipe implements PipeTransform {\n\n\ttransform(value: any, args?: any): string {\n\t\treturn LibUtil.formatJson(value, true);\n\t}\n\n}\n","import { Component, computed, effect, inject, OnInit } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\nimport { JsonColoridoPipe } from '../../util/JsonColorido.pipe';\n\n@Component({\n selector: 'fields-display',\n templateUrl: './display.html',\n styleUrls: ['../fields.css', './display.css'],\n imports: [UiListErrors, JsonColoridoPipe],\n})\nexport class FieldsDisplay extends BaseFieldsForm {\n\n sanitizer = inject(DomSanitizer);\n\n // Importante:\n // - Este campo não é editável, então não tem onChange ou onInput.\n // - Este campo não deve entrar no estado Pendente. A exibição foi removida e o fundo foi deixado transparente.\n\n readonly displayValue = computed<SafeHtml>(() => {\n let value = this.value();\n if (this.campo()?.mask) value = LibUtil.mascarar(value, this.campo()?.mask) ?? '';\n if (LibUtil.classof(value) === 'boolean') {\n value = value ? 'Sim' : 'Não';\n }\n if (value == null) {\n value = '';\n }\n return this.sanitizer.bypassSecurityTrustHtml(value.toString());\n });\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isEmpty]=\"campo()?.empty\" (click)=\"onClickEmit()\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldDisplay\">\n\t\t\t\t@if(campo()?.classe == 'displayJson') {\n\t\t\t\t<pre class=\"p-2\" [innerHTML]=\"value() | jsonColorido\"></pre>\n\t\t\t\t}@else {\n\t\t\t\t<div [class]=\"campo()?.classe\" [style]=\"campo()?.style\" [innerHTML]=\"displayValue()\"></div>\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, computed, effect, ElementRef, inject, OnInit, viewChild } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\nimport { LibUtil } from '../../util/util';\nimport { LOG } from '../../util/log';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-editor',\n templateUrl: './editor.html',\n styleUrls: ['../fields.css', './editor.css'],\n imports: [UiButton, UiListErrors],\n})\nexport class FieldsEditor extends BaseFieldsForm implements OnInit {\n\n sanitizer = inject(DomSanitizer);\n editavel = viewChild('editavel', { read: ElementRef });\n\n iconeJustifyLeft = 'align-left';\n iconeJustifyCenter = 'align-center';\n iconeJustifyRight = 'align-right';\n iconeJustify = 'align-justify';\n iconeNegrito = 'bold';\n iconeItalico = 'italic';\n iconeUnderline = 'underline';\n iconeClearFormat = 'eraser';\n\n isNegrito: boolean = false;\n isItalico: boolean = false;\n isSublinhado: boolean = false;\n currentJustify: 'left' | 'center' | 'right' | null = null;\n\n safeValue = computed<SafeHtml>(() => {\n let value = this.value();\n if (value == null) {\n value = '';\n }\n return this.sanitizer.bypassSecurityTrustHtml(value.toString());\n });\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n override ngOnInit() {\n super.ngOnInit();\n this.inicializarEstados();\n }\n\n onInput(ev?: Event, cursorPosition?: { start: number; end: number, plus: number } | null) {\n if (this.campo()?.disabled) return;\n let eEditavel = this.editavel()?.nativeElement as HTMLDivElement;\n if (!eEditavel) return;\n let texto = eEditavel.innerHTML;\n if (!texto) return;\n\n // Salva a posição do cursor apenas quando o usuário está digitando\n if (cursorPosition === undefined) {\n cursorPosition = ev ? LibUtil.saveCursorPosition(eEditavel) : null;\n }\n\n // Converte <br> em [br]s para preservar quebras de linha\n texto = texto.replace(/<br>/g, '[br]');\n\n // Ao ocorrer mudança aqui, deve-se retirar todas as tags de hipertexto e depois aplicar apenas as que estão ativas.\n texto = LibUtil.removeHtmlTags(texto);\n\n // Restaura as quebras de linha\n texto = texto.replace(/\\[br\\]/g, '<br>');\n if (texto === \"<br>\") {\n texto = \"\";\n }\n\n if (this.isNegrito) {\n texto = `<b>${texto}</b>`;\n }\n if (this.isItalico) {\n texto = `<i>${texto}</i>`;\n }\n if (this.isSublinhado) {\n texto = `<u>${texto}</u>`;\n }\n if (this.currentJustify) {\n texto = `<div style=\"text-align: ${this.currentJustify};\">${texto}</div>`;\n }\n eEditavel.innerHTML = texto;\n\n if (cursorPosition) {\n LibUtil.restoreCursorPosition(eEditavel, cursorPosition);\n }\n\n this.campo()?.onInput?.(this.form());\n }\n\n onChange() {\n if (this.campo()?.disabled) return;\n let eEditavel = this.editavel()?.nativeElement as HTMLDivElement;\n if (!eEditavel) return;\n\n let texto = eEditavel.innerHTML;\n this.updateValue(texto);\n\n this.onChangeEmit();\n }\n\n onDragEvent(dragEvent: DragEvent) {\n if (this.campo()?.disabled) return;\n const dataTransfer = dragEvent.dataTransfer;\n if (!dataTransfer) return;\n\n // Drag and Drop não é suportado.\n dragEvent.preventDefault();\n dragEvent.stopPropagation();\n const text = dataTransfer.getData('text/plain');\n LOG(1, \"Drag and Drop Text: \", text, dragEvent);\n }\n\n onNegrito() {\n if (this.campo()?.disabled) return;\n this.isNegrito = !this.isNegrito;\n this.onInput();\n this.onChange();\n }\n onItalico() {\n if (this.campo()?.disabled) return;\n this.isItalico = !this.isItalico;\n this.onInput();\n this.onChange();\n }\n onSublinhado() {\n if (this.campo()?.disabled) return;\n this.isSublinhado = !this.isSublinhado;\n this.onInput();\n this.onChange();\n }\n onJustify(direction: 'left' | 'center' | 'right') {\n if (this.campo()?.disabled) return;\n if (this.currentJustify === direction) {\n this.currentJustify = null;\n this.onInput();\n this.onChange();\n return;\n }\n this.currentJustify = direction;\n this.onInput();\n this.onChange();\n }\n\n\n onClearFormat() {\n if (this.campo()?.disabled) return;\n let eEditavel = this.editavel()?.nativeElement as HTMLDivElement;\n if (!eEditavel) return;\n let texto = eEditavel.innerHTML;\n if (!texto) return;\n\n this.currentJustify = null;\n this.isNegrito = false;\n this.isItalico = false;\n this.isSublinhado = false;\n\n texto = LibUtil.removeHtmlTags(texto);\n eEditavel.innerHTML = texto;\n this.onChange();\n }\n\n onKeyDown(event: KeyboardEvent) {\n if (this.campo()?.disabled) return;\n if (event.key === 'Enter') {\n event.preventDefault();\n\n const eEditavel = this.editavel()?.nativeElement as HTMLDivElement;\n if (!eEditavel) return;\n\n // Salva a posição do cursor\n const cursorPosition = LibUtil.saveCursorPosition(eEditavel, 1);\n\n // Insere uma quebra de linha (<br>) na posição do cursor\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n range.deleteContents();\n\n const br = document.createElement('br');\n range.insertNode(br);\n\n // Move o cursor para depois do <br>\n range.setStartAfter(br);\n range.setEndAfter(br);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n\n this.onInput(undefined, cursorPosition);\n }\n }\n\n inicializarEstados() {\n let valor = this.value();\n if (typeof valor !== 'string' || !valor) return;\n valor = valor.toLowerCase();\n\n this.isNegrito = valor.includes('<b>') && valor.includes('</b>');\n this.isItalico = valor.includes('<i>') && valor.includes('</i>');\n this.isSublinhado = valor.includes('<u>') && valor.includes('</u>');\n if (valor.includes('text-align: left')) {\n this.currentJustify = 'left';\n } else if (valor.includes('text-align: center')) {\n this.currentJustify = 'center';\n } else if (valor.includes('text-align: right')) {\n this.currentJustify = 'right';\n }\n }\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField fieldEditor\">\n\t\t\t\t@if(campo()?.showToolbar !== false) {\n\t\t\t\t<div class=\"toolbar\">\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [class.ativo]=\"isNegrito\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t\t(click)=\"onNegrito()\" [iconeNome]=\"iconeNegrito\"></ui-button>\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [class.ativo]=\"isItalico\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t\t(click)=\"onItalico()\" [iconeNome]=\"iconeItalico\"></ui-button>\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [class.ativo]=\"isSublinhado\"\n\t\t\t\t\t\t[disabled]=\"campo()?.disabled\" (click)=\"onSublinhado()\" [iconeNome]=\"iconeUnderline\"></ui-button>\n\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone espaco\" [class.ativo]=\"currentJustify === 'left'\"\n\t\t\t\t\t\t[disabled]=\"campo()?.disabled\" (click)=\"onJustify('left')\" [iconeNome]=\"iconeJustifyLeft\"></ui-button>\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [class.ativo]=\"currentJustify === 'center'\"\n\t\t\t\t\t\t[disabled]=\"campo()?.disabled\" (click)=\"onJustify('center')\" [iconeNome]=\"iconeJustifyCenter\"></ui-button>\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [class.ativo]=\"currentJustify === 'right'\"\n\t\t\t\t\t\t[disabled]=\"campo()?.disabled\" (click)=\"onJustify('right')\" [iconeNome]=\"iconeJustifyRight\"></ui-button>\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [disabled]=\"campo()?.disabled\" (click)=\"onClearFormat()\"\n\t\t\t\t\t\t[iconeNome]=\"iconeClearFormat\"></ui-button>\n\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t<div #editavel [class.corpo]=\"true\" [contentEditable]=\"!campo()?.disabled && !campo()?.readonly\"\n\t\t\t\t\t[class]=\"campo()?.classe\" [style]=\"campo()?.style\" (input)=\"onInput($event)\" [innerHTML]=\"safeValue()\"\n\t\t\t\t\t(blur)=\"onChange()\" (drop)=\"onDragEvent($event)\" (keydown)=\"onKeyDown($event)\"></div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-email',\n templateUrl: './email.html',\n styleUrls: ['../fields.css'],\n imports: [UiListErrors],\n})\nexport class FieldsEmail extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldEmail\">\n\t\t\t\t<input type=\"email\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\n\n@Component({\n selector: 'fields-hidden',\n templateUrl: './hidden.html',\n styles: `.fieldHidden{display: none;}`\n})\nexport class FieldsHidden extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n}\n","<div class=\"fieldHidden\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\"></div>","import { Component, effect } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-icon',\n templateUrl: './icon.html',\n styleUrls: ['../fields.css', './icon.css'],\n imports: [UiButton, UiListErrors]\n})\nexport class FieldsIcon extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<ui-button tipo=\"raised\" tema=\"secondary\" (clicked)=\"onClickEmit()\" [disabled]=\"campo()?.disabled\"\n\t\t\t[style.width.px]=\"100\">\n\t\t\t@if(value()){\n\t\t\t<i [class]=\"value()\" [style.fontSize]=\"'25px'\"></i>\n\t\t\t}@else {\n\t\t\t<div class=\"noIcon\">ICO</div>\n\t\t\t}\n\t\t</ui-button>\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldIconType\">\n\t\t\t\t<input type=\"text\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { AfterViewInit, Component, effect, ElementRef, viewChild } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { LOG } from '../../util/log';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\ninterface ICode {\n [key: string]: string;\n}\n\n@Component({\n selector: 'fields-multifactor',\n templateUrl: './multifactor.html',\n styleUrls: ['../fields.css', './multifactor.css'],\n imports: [UiListErrors],\n})\nexport class FieldsMultifactor extends BaseFieldsForm implements AfterViewInit {\n\n code: ICode = {};\n controle = viewChild('controle', { read: ElementRef });\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n if (this.campo()?.autofocus && this.controle()?.nativeElement) {\n this.controle()?.nativeElement.focus();\n }\n }, 100);\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n\n onInputChar(ev: Event) {\n let e = (ev.target as HTMLInputElement);\n let v = e.value;\n let name = e.name;\n let order = \"abcdef\";\n let nextInputName: String = \"b\";\n let isLast = false;\n\n if (v && v != \"\" && \"0123456789\".includes(v)) {\n // Só seta no objeto se for válido\n this.code[name] = v;\n // Identificar próximo campo\n nextInputName = order.charAt(order.indexOf(name) + 1);\n // Tentativa de focar próximo elemento\n let nextE = (document.querySelector(`.fieldSingleInput[name='${nextInputName}']`) as HTMLInputElement | null);\n if (nextE) {\n nextE.focus();\n } else {\n isLast = true;\n }\n } else {\n e.value = \"\";\n delete this.code[name];\n }\n\n // Seta valor do campo de forma ordenada\n let novoValor = Object.values(Object.fromEntries(Object.entries(this.code).sort())).join(\"\");\n this.updateValue(novoValor);\n\n // Verifica se completou\n if (this.campo()?.onComplete && novoValor.length == 6 && isLast) {\n try {\n this.campo()?.onComplete?.(this.form(), novoValor);\n this.onChangeEmit();\n } catch (err) {\n LOG(1, `❌ Erro ao executar onMatch do campo '${this.name.toString()}'`, err);\n }\n }\n }\n\n onKeyUp(ev: KeyboardEvent) {\n let key = ev.key;\n let e = (ev.target as HTMLInputElement);\n let v = e.value;\n if (e && v == \"\" && key == \"Backspace\") {\n let order = \"abcdef\";\n let indexOf = order.indexOf(e.name);\n let nextInputName: String = order.charAt(indexOf - 1);\n // Tentativa de focar próximo elemento\n let nextE = (document.querySelector(`.fieldSingleInput[name='${nextInputName}']`) as HTMLInputElement | null);\n if (nextE) {\n if (nextE.value != \"\") {\n nextE.focus();\n }\n }\n }\n }\n\n onFocus(ev: Event) {\n (ev.target as HTMLInputElement)?.select();\n }\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldMultifactor\">\n\t\t\t\t<input type=\"text\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" [name]=\"campo()?.prop\"\n\t\t\t\t\t[disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [hidden]=\"true\" [readOnly]=\"true\" />\n\n\t\t\t\t<div class=\"gridFactor\">\n\t\t\t\t\t<input #controle class=\"fieldSingleInput\" name=\"a\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\n\t\t\t\t\t<input class=\"fieldSingleInput\" name=\"b\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\n\t\t\t\t\t<input class=\"fieldSingleInput\" name=\"c\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\n\t\t\t\t\t<input class=\"fieldSingleInput\" name=\"d\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\n\t\t\t\t\t<input class=\"fieldSingleInput\" name=\"e\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\n\t\t\t\t\t<input class=\"fieldSingleInput\" name=\"f\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect, OnInit } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-multitext',\n templateUrl: './multitext.html',\n styleUrls: ['../fields.css', './multitext.css'],\n imports: [UiButton, UiListErrors],\n})\nexport class FieldsMultiText extends BaseFieldsForm implements OnInit {\n\n items: string[] | null = [];\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n if (val && Array.isArray(val) && val.length <= 0) empty = true;\n // if (!Array.isArray(val)) errors = [...errors, Valide.msg.apenasLista];\n this.updateCampo({ empty });\n });\n }\n\n override ngOnInit() {\n super.ngOnInit();\n let value = this.value();\n if (value && Array.isArray(value)) this.items = value ?? [];\n else this.items = [];\n }\n\n ngAfterViewInit(): void {\n this.updateValue(this.items ?? [], false);\n }\n\n onInput(newValue: string) {\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n onClickAddItem() {\n let value = \"\";\n if (!this.items) this.items = [];\n this.items = [...this.items, value];\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n\n setTimeout(() => {\n let allInputs = (document.querySelectorAll(`.FieldMultiText .input`) as NodeListOf<HTMLInputElement> | null);\n if (allInputs && allInputs.length > 0) {\n allInputs[allInputs.length - 1].focus();\n }\n }, 1);\n }\n\n onClickDelItem(index: number) {\n this.items = this.items?.filter((v, i) => i != index) ?? [];\n if (this.items && this.items?.length <= 0) this.items = [];\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n _onLocalInput(value: string, index: number) {\n if (this.items) this.items[index] = value;\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldMultiText\">\n\t\t\t\t@if(campo()?.showHeader){\n\t\t\t\t<div>Itens</div>\n\t\t\t\t<div class=\"action\"></div>\n\t\t\t\t}\n\t\t\t\t@for (item of items; track $index) {\n\t\t\t\t<div>\n\t\t\t\t\t<input type=\"text\" [value]=\"item\" [name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t\t[placeholder]=\"campo()?.placeholder ?? ''\" [class]=\"campo()?.classe\" [style]=\"campo()?.style\"\n\t\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class.input]=\"true\"\n\t\t\t\t\t\t[class.outlined]=\"true\" (input)=\"_onLocalInput($event.target.value, $index)\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"action\">\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"error\" title=\"Remover Linha\" (click)=\"onClickDelItem($index)\"\n\t\t\t\t\t\ticoneNome=\"trash\">\n\t\t\t\t\t</ui-button>\n\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t<div class=\"add\">\n\t\t\t\t\t<ui-button tipo=\"nofill\" tema=\"primary\" title=\"Adicionar Linha\" (click)=\"onClickAddItem()\"\n\t\t\t\t\t\ticoneNome=\"plus-circle\">\n\t\t\t\t\t\tAdicionar Linha\n\t\t\t\t\t</ui-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-number',\n templateUrl: './number.html',\n styleUrls: ['../fields.css'],\n imports: [UiListErrors],\n})\nexport class FieldsNumber extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '' || val === 0;\n this.updateCampo({ empty });\n });\n }\n\n ngAfterViewInit(): void {\n this.onInput(this.value(), false);\n }\n\n onInput(newValue: string, touch: boolean = true) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n let num = parseFloat(newValue);\n if (isNaN(num)) num = 0;\n this.updateValue(num, touch);\n this.campo()?.onInput?.(this.form());\n }\n\n}","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldText\">\n\t\t\t\t<input type=\"number\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [readOnly]=\"campo()?.readonly ?? false\" [class.outlined]=\"true\"\n\t\t\t\t\t[class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect, signal } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\nimport { UiIcon } from '../../elements/ui-icon/ui-icon';\n\n@Component({\n selector: 'fields-password',\n templateUrl: './password.html',\n styleUrls: ['../fields.css'],\n imports: [UiButton, UiListErrors, UiIcon],\n})\nexport class FieldsPassword extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n // Exibir e Ocultar Senha\n hide = signal(true);\n _aoClicarVerSenha(event: MouseEvent) {\n this.hide.set(!this.hide());\n event.stopPropagation();\n }\n}\n\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldPassword\">\n\t\t\t\t<input [type]=\"hide() ? 'password' : 'text'\" [value]=\"value()\" (input)=\"onInput($event.target.value)\"\n\t\t\t\t\t(change)=\"onChangeEmit()\" [name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t[placeholder]=\"campo()?.placeholder ?? ''\" [class]=\"campo()?.classe\" [style]=\"campo()?.style\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class.outlined]=\"true\"\n\t\t\t\t\t[class.input]=\"true\" />\n\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" (click)=\"_aoClicarVerSenha($event)\" aria-label=\"Oculta ou Exibe Senha\"\n\t\t\t\t\ttitle=\"Oculta ou Exibe Senha\" [aria-pressed]=\"hide()\">\n\t\t\t\t\t<ui-icon [name]=\"hide() ? 'eye-slash' : 'eye'\"></ui-icon>\n\t\t\t\t</ui-button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, computed, effect, ElementRef, viewChild } from '@angular/core';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\nimport { UiProcurar } from \"../../elements/ui-procurar/ui-procurar\";\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\n\n@Component({\n selector: 'fields-search',\n templateUrl: './search.html',\n styleUrls: ['../fields.css', './search.css'],\n imports: [UiListErrors, UiProcurar],\n})\nexport class FieldsSearch extends BaseFieldsForm {\n\n readonly searchInput = viewChild<ElementRef>('searchInput');\n\n isCollapsed = computed(() => this.campo()?.isCollapsed?.() ?? false);\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n // Limpa o filtro de opções\n onClearSearch() {\n this.updateValue(\"\");\n this.focusSearchInput();\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n focusSearchInput() {\n this.searchInput()?.nativeElement?.focus();\n }\n\n onClickSearchIcon() {\n this.focusSearchInput();\n this.onChangeEmit();\n }\n\n onSearch() {\n this.onChangeEmit();\n }\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\"\n\t[class.isCollapsed]=\"isCollapsed()\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldSearch\">\n\t\t\t\t<ui-procurar [value]=\"value()\" [name]=\"campo()?.prop\" (inputed)=\"onInput($event)\" (changed)=\"onChangeEmit()\"\n\t\t\t\t\t[colapsed]=\"isCollapsed()\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t[placeholder]=\"campo()?.placeholder ?? 'Procurar...'\"></ui-procurar>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, computed, effect, OnInit, signal } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiSelect } from '../../elements/ui-select/ui-select';\nimport { IOptionValue } from '../../elements/ui-select/ui-select';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\nimport { LOG } from '../../util/log';\n\n\n@Component({\n selector: 'fields-select',\n templateUrl: './select.html',\n styleUrls: ['../fields.css', './select.css'],\n imports: [UiSelect, UiListErrors],\n})\nexport class FieldsSelect extends BaseFieldsForm {\n\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n // Um Refill pode estar em andamento enquanto este componente é iniciado.\n // Utilize o campo.mapear ou campo.refill para alterar o comportamento do refill inicial.\n\n\n fieldOptions = computed(() => {\n return this.campo()?.options?.() ?? [];\n });\n\n\n // Manipula mudança de valor (valueOfK não chegará nulo ou undefined)\n onChange(optionValue: IOptionValue) {\n let newValue: any = optionValue.keys;\n\n if (this.campo()?.onMatchOption && optionValue.optionChanged) {\n try {\n this.campo()?.onMatchOption?.(this.form(), optionValue.optionChanged);\n } catch (err) {\n LOG(1, `❌ Erro ao executar onMatchOption do campo '${this.name()}'`, err);\n }\n }\n\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n}","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldSelect\">\n\t\t\t\t<ui-select [value]=\"this.value()\" [options]=\"fieldOptions()\" (changed)=\"onChange($event)\"\n\t\t\t\t\t[multiple]=\"this.campo()?.multiple ?? false\" [name]=\"this.campo()?.prop\" [textEmpty]=\"this.campo()?.textEmpty\"\n\t\t\t\t\t[canUnselect]=\"campo()?.canUnselect\"></ui-select>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { AfterViewInit, Component, effect, signal } from '@angular/core';\nimport { UiSlide } from '../../elements/ui-slide/ui-slide';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-slide',\n templateUrl: './slide.html',\n styleUrls: ['../fields.css', './slide.css'],\n imports: [UiSlide, UiListErrors],\n})\nexport class FieldsSlide extends BaseFieldsForm implements AfterViewInit {\n\n signalFocus = signal<boolean>(false);\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onChange(newValue: boolean) {\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n ngAfterViewInit(): void {\n let val = this.value();\n this.updateValue(val === true || val === 'true' || val === 1 || val === '1', false);\n }\n\n toogleAtivo() {\n this.onChange(!this.value());\n this.signalFocus.set(true);\n setTimeout(() => {\n this.signalFocus.set(false);\n }, 1)\n }\n\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldSlide microPos4\">\n\t\t\t\t<ui-slide [value]=\"value()\" (changed)=\"onChange($event)\" [focus]=\"signalFocus()\"></ui-slide>\n\t\t\t\t<div class=\"tituloClicavel\" (click)=\"toogleAtivo()\">\n\t\t\t\t\t{{ value() ? (campo()?.textoAtivo ?? campo()?.tituloClicavel ) : (campo()?.textoInativo ??\n\t\t\t\t\tcampo()?.tituloClicavel) }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { LibUtil } from '../../util/util';\nimport { UiListErrors } from '../../elements/ui-list-errors/ui-list-errors';\n\n@Component({\n selector: 'fields-text',\n templateUrl: './text.html',\n styleUrls: ['../fields.css'],\n imports: [UiListErrors]\n})\nexport class FieldsText extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldText\">\n\t\t\t\t<input type=\"text\" [value]=\"value() ?? ''\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, computed, effect, ElementRef, OnInit, signal, viewChild } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { LibUtil } from '../../util/util';\nimport { LOG } from '../../util/log';\nimport { UiDropZone } from '../../elements/ui-drop-zone/ui-drop-zone';\nimport { IDropOutput, IFileMetadata } from '../../interfaces/interfaces';\nimport { UiFileList } from '../../elements/ui-file-list/ui-file-list';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\nimport { UiIcon } from '../../elements/ui-icon/ui-icon';\n\n@Component({\n selector: 'fields-upload',\n templateUrl: './upload.html',\n styleUrls: ['../fields.css', './upload.css'],\n imports: [UiDropZone, UiFileList, UiListErrors, UiIcon],\n})\nexport class FieldsUpload extends BaseFieldsForm implements OnInit {\n\n multiple: boolean = false;\n inputFile = viewChild('inputFile', { read: ElementRef })\n acceptFormats: string = \"\";\n sobrepondo = signal<boolean>(true);\n\n acceptFormatsShow = computed<string>(() => {\n return this.acceptFormats.split(',').map(ext => ext.trim().toUpperCase().slice(1)).join(', ');\n });\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n this.sobrepondo.set(empty);\n });\n }\n override ngOnInit() {\n super.ngOnInit();\n this.multiple = this.campo()?.multiple ?? false;\n this.acceptFormats = this.campo()?.accept ?? \"\";\n }\n\n onChange(newValue: IFileMetadata[]) {\n let campo = this.campo();\n if (!campo) return;\n if (campo.disabled) return;\n // Filtra apenas os arquivos válidos\n newValue = newValue.filter(file => this.validarImagem(file));\n // Atualiza o valor do campo\n let valueToUpdate: any = this.multiple ? newValue : newValue[newValue.length - 1];\n this.updateValue(valueToUpdate);\n\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n filesList = computed<IFileMetadata[]>(() => {\n let val = (this.value() as IFileMetadata[] | IFileMetadata | string | undefined);\n if (this.multiple) {\n // Quando é multiplo, ja vem um array.\n return val as IFileMetadata[];\n } else {\n // Quando não é multiplo, vem um objeto, mas precisa ser tratado como array.\n if (val && val !== '') {\n return [val as IFileMetadata];\n } else {\n return [];\n }\n }\n });\n\n // Adiciona arquivos recebidos do DropZone\n onDropped(content: IDropOutput) {\n if (this.campo()?.disabled) return;\n if (content.tipo !== \"file\" || !content.data || !(content.data instanceof Array)) return;\n let dataFiles: IFileMetadata[] = content.data;\n this.onAddFile(dataFiles);\n }\n\n // Remove arquivo da lista\n onRemove(file: IFileMetadata) {\n if (this.campo()?.disabled) return;\n let currentFiles = this.filesList();\n const index = currentFiles.findIndex(f => f.size === file.size);\n if (index > -1) {\n currentFiles.splice(index, 1);\n this.onChange(currentFiles);\n }\n }\n\n onAddFile(newFiles: IFileMetadata[]) {\n if (this.campo()?.disabled) return;\n let newValues: IFileMetadata[] = [];\n if (this.multiple) {\n newValues = [\n ...this.filesList() ?? [],\n ...newFiles,\n ];\n } else {\n newValues = newFiles.slice(-1);\n }\n this.onChange(newValues);\n }\n\n async onChangedInputFile(ev: Event) {\n if (this.campo()?.disabled) return;\n const inputElement = ev.target as HTMLInputElement;\n if (inputElement.files && inputElement.files.length > 0) {\n for await (let newFile of inputElement.files) {\n let lastIndexOf = newFile.name.lastIndexOf(\".\");\n let extension = newFile.name.slice(lastIndexOf);\n let base64: string | null = await LibUtil.fileReader(newFile);\n if (!base64) { LOG(1, `❌ Ocorreu um erro com o arquivo ${newFile.name}.`); continue; }\n this.onAddFile([{\n base64,\n name: newFile.name,\n size: newFile.size,\n extension, // inclui o \".\"\n type: newFile.type,\n lastModifiedIso: new Date(newFile.lastModified).toISOString(),\n }]);\n }\n inputElement.value = '';\n }\n }\n\n validarImagem(file: IFileMetadata): boolean {\n if (!file.extension) return false;\n const validExtensions = this.acceptFormats.split(',').map(ext => ext.trim().toLowerCase());\n return validExtensions.includes(file.extension.toLowerCase());\n }\n\n onClickUpload() {\n // Se o alvo do click for mesmo o elemento dropzone (CSS ignora alguns elementos)\n if (this.inputFile() && this.inputFile()?.nativeElement) {\n this.inputFile()?.nativeElement.click();\n }\n }\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldUpload\">\n\n\t\t\t\t<ui-drop-zone (changed)=\"onDropped($event)\" [disabled]=\"campo()?.disabled\" (clicked)=\"onClickUpload()\"\n\t\t\t\t\t[sobrepor]=\"sobrepondo()\">\n\t\t\t\t\t@if(filesList().length > 0) {\n\n\t\t\t\t\t<ui-file-list [filesList]=\"filesList()\" (remove)=\"onRemove($event)\"\n\t\t\t\t\t\t[disabled]=\"campo()?.disabled\"></ui-file-list>\n\n\t\t\t\t\t} @else {\n\n\t\t\t\t\t<div class=\"fieldDidplayUpload\">\n\t\t\t\t\t\t<ui-icon name=\"cloud-upload\"></ui-icon>\n\t\t\t\t\t\t<div class=\"f-s-16\"><span class=\"text-primary\">Solte</span> seu arquivo aqui</div>\n\t\t\t\t\t\t<div class=\"f-s-14\"><span class=\"text-primary\">ou clique</span> para procurar</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t}\n\t\t\t\t</ui-drop-zone>\n\n\t\t\t\t<div [style.display]=\"'none'\">\n\t\t\t\t\t<input #inputFile type=\"file\" [accept]=\"acceptFormats\" [multiple]=\"campo()?.multiple\"\n\t\t\t\t\t\t(change)=\"onChangedInputFile($event)\" [disabled]=\"campo()?.disabled\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t@if(acceptFormats){\n\t<div class=\"dica\">Formatos: {{ acceptFormatsShow() }}</div>\n\t}\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-time',\n templateUrl: './time.html',\n styleUrls: ['../fields.css'],\n imports: [UiListErrors],\n})\nexport class FieldsTime extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldTime\">\n\t\t\t\t<input type=\"time\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { LibUtil } from '../../util/util';\nimport { UiListErrors } from '../../elements/ui-list-errors/ui-list-errors';\n\n@Component({\n selector: 'fields-textarea',\n templateUrl: './textarea.html',\n styleUrls: ['../fields.css', './textarea.css'],\n imports: [UiListErrors]\n})\nexport class FieldsTextarea extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(event: Event) {\n let newValue = (event.target as HTMLTextAreaElement).value;\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldTextArea\">\n\t\t\t\t<textarea [value]=\"value()\" (input)=\"onInput($event)\" (change)=\"onChangeEmit()\" [name]=\"campo()?.prop\"\n\t\t\t\t\t[disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\" [attr.maxLength]=\"campo()?.maxl\"\n\t\t\t\t\t[attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\" [style]=\"campo()?.style\" [class.outlined]=\"true\"\n\t\t\t\t\t[rows]=\"campo()?.rows ?? 5\" [cols]=\"campo()?.cols\" [attr.readonly]=\"campo()?.readonly ? true : null\"\n\t\t\t\t\t[class.input]=\"true\"></textarea>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect, OnInit } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\nimport { IKV } from '../../interfaces/interfaces';\n\n@Component({\n selector: 'fields-multikv',\n templateUrl: './multikv.html',\n styleUrls: ['../fields.css', './multikv.css'],\n imports: [UiButton, UiListErrors],\n})\nexport class FieldsMultiKV extends BaseFieldsForm implements OnInit {\n\n // Componente para adicionar ou retirar itens em forma KV (Como usado nos seletores)\n items: IKV[] | null = [];\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n if (val && Array.isArray(val) && val.length <= 0) empty = true;\n // if (!Array.isArray(val)) errors = [...errors, Valide.msg.apenasLista];\n this.updateCampo({ empty });\n });\n }\n\n override ngOnInit() {\n super.ngOnInit();\n let value = this.value();\n if (value && Array.isArray(value)) this.items = value ?? [];\n else this.items = [];\n }\n\n ngAfterViewInit(): void {\n this.updateValue(this.items ?? [], false);\n }\n\n onClickAddItem() {\n let value: IKV = this.campo()?.value ?? { k: \"\", v: \"\" };\n if (!this.items) this.items = [];\n this.items = [...this.items, value];\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n\n setTimeout(() => {\n let allInputs = (document.querySelectorAll(`.FieldMultiText .input`) as NodeListOf<HTMLInputElement> | null);\n if (allInputs && allInputs.length > 0) {\n allInputs[allInputs.length - 1].focus();\n }\n }, 1);\n }\n\n onClickDelItem(index: number) {\n this.items = this.items?.filter((v, i) => i != index) ?? [];\n if (this.items && this.items?.length <= 0) this.items = [];\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n _onLocalInputK(key: string, index: number) {\n if (this.items) this.items[index].k = key;\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n }\n\n _onLocalInputV(value: string, index: number) {\n if (this.items) this.items[index].v = value;\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n }\n\n _onLocalChangeK(key: string, index: number) {\n if (this.items) this.items[index].k = key;\n this.updateValue(this.items);\n this.onChangeEmit();\n }\n\n _onLocalChangeV(value: string, index: number) {\n if (this.items) this.items[index].v = value;\n this.updateValue(this.items);\n this.onChangeEmit();\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldMultiKv\">\n\t\t\t\t@if(campo()?.showHeader != false){\n\t\t\t\t<div class=\"header\">{{ campo()?.tituloChave ?? 'Chaves'}}</div>\n\t\t\t\t<div class=\"header\">{{ campo()?.tituloValor ?? 'Valores'}}</div>\n\t\t\t\t<div class=\"header action\"></div>\n\t\t\t\t}\n\t\t\t\t@for (item of items; track $index) {\n\t\t\t\t<div>\n\t\t\t\t\t<input type=\"text\" [value]=\"item.k\" [name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t\t[placeholder]=\"campo()?.placeholder ?? ''\" [class]=\"campo()?.classe\" [style]=\"campo()?.style\"\n\t\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class.input]=\"true\"\n\t\t\t\t\t\t[class.outlined]=\"true\" (input)=\"_onLocalInputK($event.target.value, $index)\"\n\t\t\t\t\t\t(change)=\"_onLocalChangeK($event.target.value, $index)\" />\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<input type=\"text\" [value]=\"item.v\" [name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t\t[placeholder]=\"campo()?.placeholder ?? ''\" [class]=\"campo()?.classe\" [style]=\"campo()?.style\"\n\t\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class.input]=\"true\"\n\t\t\t\t\t\t[class.outlined]=\"true\" (input)=\"_onLocalInputV($event.target.value, $index)\"\n\t\t\t\t\t\t(change)=\"_onLocalChangeV($event.target.value, $index)\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"action\">\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"error\" title=\"Remover Linha\" (click)=\"onClickDelItem($index)\"\n\t\t\t\t\t\ticoneNome=\"trash\">\n\t\t\t\t\t</ui-button>\n\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t<div class=\"add\">\n\t\t\t\t\t<ui-button tipo=\"nofill\" tema=\"primary\" title=\"Adicionar Linha\" (click)=\"onClickAddItem()\"\n\t\t\t\t\t\ticoneNome=\"plus-circle\">\n\t\t\t\t\t\tAdicionar Linha\n\t\t\t\t\t</ui-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { NgComponentOutlet } from '@angular/common';\nimport { Component, computed } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\n\nimport { FieldsAutocomplete } from '../autocomplete/autocomplete';\nimport { FieldsButton } from \"../button/button\";\nimport { FieldsCheckbox } from '../checkbox/checkbox';\nimport { FieldsColor } from '../color/color';\nimport { FieldsDate } from '../date/date';\nimport { FieldsDatetime } from '../datetime/datetime';\nimport { FieldsDisplay } from '../display/display';\nimport { FieldsEditor } from '../editor/editor';\nimport { FieldsEmail } from '../email/email';\nimport { FieldsHidden } from '../hidden/hidden';\nimport { FieldsIcon } from '../icon/icon';\nimport { FieldsMultifactor } from '../multifactor/multifactor';\nimport { FieldsMultiText } from '../multitext/multitext';\nimport { FieldsNumber } from '../number/number';\nimport { FieldsPassword } from '../password/password';\nimport { FieldsSearch } from '../search/search';\nimport { FieldsSelect } from '../select/select';\nimport { FieldsSlide } from '../slide/slide';\nimport { FieldsText } from '../text/text';\nimport { FieldsUpload } from '../upload/upload';\nimport { FieldsTime } from '../time/time';\nimport { FieldsTextarea } from '../textarea/textarea';\nimport { IField } from '../Formulario/Formulario';\nimport { FieldsMultiKV } from '../multikv/multikv';\n\n@Component({\n selector: 'fields-g',\n templateUrl: './generic.html',\n // styles: `:host.hidden {\n // display: none;\n // }`,\n imports: [NgComponentOutlet],\n})\nexport class FieldsGeneric extends BaseFieldsForm {\n\n readonly campos = computed(() => this.form().campos());\n\n // @HostBinding('class.hidden')\n // isHidden = false;\n\n // Mapeamento de tipos para componentes\n getComponentForType(tipo?: IField): any {\n // Tipo Hidden não exibe componente e coloca o host como hidden\n // if (tipo == IField.Hidden) {\n // this.isHidden = true;\n // return null;\n // }\n\n /************************************************\\\\\n // MAPA: Tipo de Campo - Componente Responsável \\\\\n //*************************************************/\n // Comente o campo caso haja algum problema de dependência circular ou outro...\n\n const FIELDS_MAP: Partial<Record<IField, any>> = {\n [IField.AutoComplete]: FieldsAutocomplete,\n [IField.Button]: FieldsButton,\n [IField.Checkbox]: FieldsCheckbox,\n [IField.Color]: FieldsColor,\n [IField.Date]: FieldsDate,\n [IField.DateTime]: FieldsDatetime,\n [IField.Display]: FieldsDisplay,\n [IField.Editor]: FieldsEditor,\n [IField.Email]: FieldsEmail,\n [IField.Hidden]: FieldsHidden,\n [IField.Icon]: FieldsIcon,\n [IField.MultiFactor]: FieldsMultifactor,\n [IField.MultiKV]: FieldsMultiKV,\n [IField.MultiText]: FieldsMultiText,\n [IField.Number]: FieldsNumber,\n [IField.Password]: FieldsPassword,\n [IField.Referencia]: FieldsDisplay,\n [IField.Search]: FieldsSearch,\n [IField.Select]: FieldsSelect,\n [IField.Slide]: FieldsSlide,\n [IField.Text]: FieldsText,\n [IField.Textarea]: FieldsTextarea,\n [IField.Time]: FieldsTime,\n [IField.Upload]: FieldsUpload,\n\n [IField.Custom]: this.campo()?.componente,\n }\n if (tipo) return FIELDS_MAP[tipo] || null;\n return null;\n }\n\n}\n\n","@if (getComponentForType(campo() ? campo()?.tipo : undefined); as component) {\n<ng-container [ngComponentOutlet]=\"component\" [ngComponentOutletInputs]=\"{ form: this.form(), name: name() }\" />\n}","import { Pipe, PipeTransform } from '@angular/core';\nimport { LibUtil } from './util';\n\n@Pipe({ name: 'classOf' })\nexport class ClassOfPipe implements PipeTransform {\n\n transform(value: any, args?: any): any {\n return LibUtil.classof(value);\n }\n\n}\n","import { Component, computed, input, model, signal } from '@angular/core';\nimport { UiButton } from \"../../../elements/ui-button/ui-button\";\nimport { UiIcon } from \"../../../elements/ui-icon/ui-icon\";\nimport { Formulario } from '../Formulario';\nimport { JsonColoridoPipe } from '../../../util/JsonColorido.pipe';\nimport { ClassOfPipe } from '../../../util/ClassOf.pipe';\nimport { LibUtil } from '../../../util/util';\n\n@Component({\n selector: 'ui-form-controls',\n templateUrl: './form-controls.html',\n styleUrls: ['./form-controls.css'],\n imports: [UiButton, UiIcon, JsonColoridoPipe, ClassOfPipe],\n})\nexport class FormControls {\n\n form = input.required<Formulario>();\n recebido = input<any>({});\n hasOutline = model<boolean>(false);\n faseIndex = input<number>(0);\n totalFases = input<number>(0);\n\n colapsed = signal(true);\n\n valoresOrdenados = computed(() => {\n let jsonValues: any = {};\n let formValues = this.form().values();\n if (LibUtil.classof(formValues) !== 'object') {\n return formValues;\n }\n let keys = Object.keys(formValues);\n keys.sort();\n for (let key of keys) {\n jsonValues[key] = formValues[key];\n }\n return jsonValues;\n });\n\n // CONTROLES\n copiar() {\n let values = LibUtil.formatJson(this.valoresOrdenados(), true)\n LibUtil.copy(values);\n }\n\n\n fullDisabled = signal(false);\n desativados() {\n this.fullDisabled.set(!this.fullDisabled());\n this.form().setDisabledAll(this.fullDisabled());\n }\n\n fullRequired = signal(false);\n obrigatorio() {\n this.fullRequired.set(!this.fullRequired());\n this.form().campos.update(c => {\n for (const key of Object.keys(c)) {\n c[key].need = this.fullRequired();\n }\n return c;\n });\n }\n\n fullPending = signal(false);\n pendentes() {\n this.fullPending.set(!this.fullPending());\n this.form().campos.update(c => {\n for (const key of Object.keys(c)) {\n c[key].pending = this.fullPending();\n }\n return c;\n });\n }\n\n fullTouched = signal(false);\n tocados() {\n this.fullTouched.set(!this.fullTouched());\n this.form().setTouchedAll(this.fullTouched());\n }\n\n forcarVazio() {\n this.form().setAllValuesTo('');\n }\n\n setarValInicio() {\n this.form().resetToStartValues();\n }\n\n setarValRecebido() {\n this.form().updateValues(this.recebido());\n }\n\n setOutline() {\n this.hasOutline.set(!this.hasOutline());\n this.form().showTouched.update(v => !v);\n }\n\n sanitizar() {\n this.form().sanitizar();\n }\n\n onlyAvailable() {\n this.form().onlyAvailable();\n }\n\n async validar() {\n await this.form().validar();\n }\n\n showingErrors = signal(false);\n changePreview() {\n this.showingErrors.set(!this.showingErrors());\n }\n\n errorsSetted = signal(false);\n setErrorAll() {\n this.errorsSetted.set(!this.errorsSetted());\n if (this.errorsSetted()) {\n this.form().setAllCamposPartial({ errors: ['Erro exemplo'] });\n } else {\n this.form().setAllCamposPartial({ errors: [] });\n }\n }\n}\n","<div class=\"areaFormControl\" [class.collapsed]=\"colapsed()\">\n\t<div class=\"areaValues barStatus\">\n\t\t<div class=\"f-s-e status\">\n\t\t\t<div class=\"statusItem f-s-12 f-t-b\" [title]=\"'Fases. Atual: ' + faseIndex() + '. Total: ' + totalFases()\"\n\t\t\t\t[class.ativo]=\"totalFases() > 1\" [class.inativo]=\"faseIndex() < 0 || faseIndex() > totalFases()\">\n\t\t\t\t@if(totalFases() > 1){\n\t\t\t\t<div class=\"f-s-e\">\n\t\t\t\t\t<div>A</div>\n\t\t\t\t\t<div>{{ faseIndex() }}</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"f-s-e\">\n\t\t\t\t\t<div>U</div>\n\t\t\t\t\t<div>{{ totalFases() - 1 }}</div>\n\t\t\t\t</div>\n\t\t\t\t} @else {\n\t\t\t\t<ui-icon name=\"list-check\" class=\"f-s-18\"></ui-icon>\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<div class=\"statusItem\" [class.ativo]=\"form().algumTocado()\" [class.inativo]=\"!form().algumTocado()\"\n\t\t\t\ttitle=\"Algum campo tocado\">\n\t\t\t\t<ui-icon name=\"handshake\" class=\"f-s-20\"></ui-icon>\n\t\t\t</div>\n\t\t\t<div class=\"statusItem\" [class.ativo]=\"form().valido()\" [class.inativo]=\"!form().valido()\"\n\t\t\t\ttitle=\"Todos campos Válidos\">\n\t\t\t\t<ui-icon name=\"check2-all\" class=\"f-s-20\"></ui-icon>\n\t\t\t</div>\n\t\t\t<div class=\"statusItem\" [class.ativo]=\"form().isEnviado\" [class.inativo]=\"!form().isEnviado\"\n\t\t\t\ttitle=\"Estado de Enviado\">\n\t\t\t\t<ui-icon name=\"send-check\" class=\"f-s-18\"></ui-icon>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"divider barIcoCollapse\" (click)=\"colapsed.set(!colapsed())\">\n\t\t\t<ui-icon name=\"caret-down\"></ui-icon>\n\t\t</div>\n\t\t<div class=\"f-s-e status\">\n\t\t\t<ui-button tipo=\"icon\" tema=\"success\" class=\"dados\" (click)=\"copiar()\" iconeNome=\"copy\"\n\t\t\t\ttitle=\"Copiar o JSON de valores\"></ui-button>\n\t\t\t<ui-button tipo=\"icon\" tema=\"success\" class=\"estado\" (click)=\"setOutline()\" [class.ativo]=\"hasOutline()\"\n\t\t\t\ticoneNome=\"border\" [title]=\"(hasOutline() ? 'Com' : 'Sem') +' Outline'\"></ui-button>\n\t\t\t<ui-button tipo=\"icon\" tema=\"info\" class=\"estado\" (click)=\"changePreview()\" [class.ativo]=\"showingErrors()\"\n\t\t\t\ticoneNome=\"exclamation-triangle\" [title]=\"showingErrors() ? 'Errors' : 'Values'\"></ui-button>\n\t\t\t<ui-button tipo=\"icon\" tema=\"info\" class=\"estado\" (click)=\"obrigatorio()\" [class.ativo]=\"fullRequired()\"\n\t\t\t\ticoneNome=\"file-exclamation\" [title]=\"fullRequired() ? 'Obrigatório' : 'Liberado'\"></ui-button>\n\n\t\t\t<ui-button tipo=\"icon\" tema=\"info\" class=\"estado\" (click)=\"desativados()\" [class.ativo]=\"fullDisabled()\"\n\t\t\t\ticoneNome=\"person-lock\" [title]=\"fullDisabled() ? 'Desativado' : 'Ativo'\"></ui-button>\n\t\t\t<ui-button tipo=\"icon\" tema=\"info\" class=\"estado\" (click)=\"pendentes()\" [class.ativo]=\"fullPending()\"\n\t\t\t\ticoneNome=\"clock\" [title]=\"fullPending() ? 'Pendente' : 'Sincronizado'\"></ui-button>\n\n\t\t</div>\n\t</div>\n\t@if(!colapsed()){\n\t<div class=\"formColtrols\">\n\t\t<div class=\"areaValues jsonArea\">\n\t\t\t@if(showingErrors()){\n\t\t\t<div>Erros do Formulário (Tipo: {{ form().listaErrors() | classOf }})</div>\n\t\t\t<pre class=\"p-2\" [innerHTML]=\"form().listaErrors() | jsonColorido\"></pre>\n\t\t\t} @else {\n\t\t\t<div>Valor do Formulário (Tipo: {{ form().values() | classOf }})</div>\n\t\t\t<pre class=\"p-2\" [innerHTML]=\"valoresOrdenados() | jsonColorido\"></pre>\n\t\t\t}\n\t\t</div>\n\t\t<div class=\"areaValues controls\">\n\n\t\t\t<ui-button tipo=\"outlined\" tema=\"success\" class=\"dados\" (click)=\"sanitizar()\" iconeNome=\"broom\"\n\t\t\t\ttitle=\"Filtra e mantém apenas os valores dos campos que estão definidos para este formulário.\">\n\t\t\t\tSanitizar\n\t\t\t</ui-button>\n\t\t\t<ui-button tipo=\"outlined\" tema=\"success\" class=\"dados\" (click)=\"onlyAvailable()\" iconeNome=\"power\"\n\t\t\t\ttitle=\"Filtra e mantém apenas os valores dos campos que estão disponíveis para este formulário.\">\n\t\t\t\tDisponíveis\n\t\t\t</ui-button>\n\t\t\t<ui-button tipo=\"outlined\" tema=\"success\" class=\"dados\" (click)=\"validar()\" iconeNome=\"ui-checks\"\n\t\t\t\ttitle=\"Valida o formulário e seus campos.\">\n\t\t\t\tValidar\n\t\t\t</ui-button>\n\t\t\t<ui-button tipo=\"outlined\" tema=\"warning\" class=\"dados\" (click)=\"setarValRecebido()\"\n\t\t\t\ticoneNome=\"clock-rotate\" title=\"Seta os valores que foram recebidos no formulário.\">\n\t\t\t\tRecebido\n\t\t\t</ui-button>\n\t\t\t<ui-button tipo=\"outlined\" tema=\"error\" class=\"dados\" (click)=\"forcarVazio()\" iconeNome=\"eraser\"\n\t\t\t\ttitle=\"Limpa todos os valores do formulário.\">\n\t\t\t\tLimpar\n\t\t\t</ui-button>\n\t\t\t<ui-button tipo=\"outlined\" tema=\"error\" class=\"dados\" (click)=\"setarValInicio()\" iconeNome=\"skip-backward\"\n\t\t\t\ttitle=\"Reseta os valores do formulário para os valores iniciais.\">\n\t\t\t\tReset\n\t\t\t</ui-button>\n\t\t\t<ui-button tipo=\"outlined\" tema=\"info\" class=\"dados\" (click)=\"tocados()\"\n\t\t\t\t[iconeNome]=\"fullTouched() ? 'handshake' : 'handshake-slash'\"\n\t\t\t\ttitle=\"Marca todos os campos como tocados ou não tocados.\">\n\t\t\t\t{{ fullTouched() ? 'Tocados' : 'Tocar Todos' }}\n\t\t\t</ui-button>\n\n\t\t\t<ui-button tipo=\"outlined\" tema=\"error\" class=\"estado\" (click)=\"setErrorAll()\"\n\t\t\t\t[class.ativo]=\"form().listaErrors().length > 0\"\n\t\t\t\t[iconeNome]=\"form().listaErrors().length > 0 ? 'exclamation-triangle' : 'circle'\"\n\t\t\t\t[title]=\"form().listaErrors().length > 0 ? 'Erros adicionados' : 'Erros removidos'\">\n\t\t\t\t{{ form().listaErrors().length > 0 ? 'Erros Forçados' : 'Erros removidos' }}\n\t\t\t</ui-button>\n\n\t\t</div>\n\t</div>\n\t}\n</div>","import { Component, computed, input, model, output } from '@angular/core';\nimport { UiButton } from \"../../../elements/ui-button/ui-button\";\nimport { BaseFieldsValues } from '../../Base/BaseFieldsValues/BaseFieldsValues';\nimport { FieldsGeneric } from '../../generic/generic';\nimport { LibUtil } from '../../../util/util';\nimport { IKV } from '../../../interfaces/interfaces';\nimport { FormControls } from \"../form-controls/form-controls\";\nimport { IField, IFields } from '../Formulario';\n\n@Component({\n selector: 'fields-form-filter',\n templateUrl: './form-filter.html',\n styleUrls: ['./form-filter.css', '../form-fields.css'],\n imports: [UiButton, FieldsGeneric, FormControls],\n})\nexport class FormFilter<T> extends BaseFieldsValues<T> {\n\n async onSave() {\n // Não faz nada. \n return;\n }\n\n hasOutline = model<boolean>(false);\n filtrar = output<any>();\n actionTitle = input<string>('Aplicar Filtro');\n\n onFiltrar() {\n let valores = LibUtil.clonar(this.form.values());\n valores = LibUtil.limparObject(valores);\n this.filtrar.emit(valores);\n }\n\n kvPreenchido = computed(() => {\n let propriedades: IKV[] = [];\n let valores = this.values() as any;\n if (!valores) return propriedades;\n let campos = this.campos();\n for (const key of Object.keys(campos)) {\n let campo = campos[key];\n if (campo.tipo === IField.Hidden) continue;\n if (valores?.[key] != null && valores?.[key] !== '' && !(Array.isArray(valores?.[key]) && valores?.[key].length === 0)) {\n propriedades.push({ k: campo.prop, v: campo.titulo ?? String(campo.prop) });\n }\n }\n return propriedades;\n });\n\n onDeletePropriedade(k: string | number | null | undefined) {\n if (k == null) return;\n this.form.updateValues({ [k as keyof IFields<T>]: '' });\n this.onFiltrar();\n }\n}\n","<div class=\"filtrosAtivos\">\n\t@for ( item of kvPreenchido(); track $index) {\n\t<div>\n\t\t{{ item.v }}\n\t\t<ui-button tipo=\"icon\" tema=\"error\" iconeNome=\"x\" (click)=\"onDeletePropriedade(item.k)\">\n\t\t</ui-button>\n\t</div>\n\t}\n</div>\n<div class=\"g-fields\" [style.--g-fields-min]=\"gmin()\" [style.--g-fields-max]=\"gmax()\">\n\n\t@for (campo of form.listaCampos(); track $index) {\n\t<fields-g [form]=\"form\" [name]=\"campo.prop\" [class]=\"campo.tipo == 'hidden' ? 'fieldHidden' : ''\"></fields-g>\n\t}\n\n</div>\n<div class=\"buttonsGap\">\n\t<ui-button tipo=\"fill\" tema=\"primary\" iconeNome=\"funnel\" (click)=\"onFiltrar()\">{{ actionTitle() }}</ui-button>\n\t<ng-content></ng-content>\n</div>\n\n@if(showFormControls()){\n<ui-form-controls [form]=\"form\" [recebido]=\"this.values()\" [(hasOutline)]=\"hasOutline\" [faseIndex]=\"faseIndex()\"\n\t[totalFases]=\"listaFase().length\"></ui-form-controls>\n}","import { Component, computed, effect, input, model, OnInit, signal } from '@angular/core';\nimport { UiButton } from \"../../../elements/ui-button/ui-button\";\nimport { IFaseCampos, IFases, IFieldComponent } from '../Formulario';\nimport { LOG } from '../../../util/log';\n\n@Component({\n selector: 'ui-form-fase',\n templateUrl: './form-fase.html',\n styleUrls: ['./form-fase.css'],\n imports: [UiButton],\n})\nexport class FormFase implements OnInit {\n\n fases = model<IFases<any>>();\n campos = input<IFieldComponent<any>[]>();\n\n isDisabledVoltar = signal(true);\n isDisabledAvancar = signal(true);\n isFaseado = computed(() => {\n let fases = this.fases()?.fases;\n return fases !== undefined && fases.length > 1; // 1 é faseado mas não tem navegação, mais de 1 é faseado com navegação\n });\n fasesList = computed(() => {\n return this.fases()?.fases ?? [];\n });\n faseIndex = model<number>(0);\n fase_historico = signal<number[]>([0]);\n isLinear = computed(() => this.fases()?.isLinear ?? false);\n\n constructor() {\n effect(() => {\n let fases = this.fases()?.fases;\n if (fases == null) {\n this.isDisabledAvancar.set(true);\n this.isDisabledVoltar.set(true);\n return;\n }\n this.isDisabledVoltar.set(this.faseIndex() <= 0);\n this.isDisabledAvancar.set(this.faseIndex() >= (fases.length - 1));\n });\n }\n ngOnInit(): void {\n let campos = this.campos();\n let fases = this.fases();\n\n if (campos == null || fases == null) return;\n let semFase = this.checkCamposInFase(campos, fases);\n if (semFase.length > 0) {\n semFase.forEach(prop => {\n this.fases.update(f => {\n if (f) {\n // Adiciona os campos sem fase a primeira fase, se ela existir.\n if (f.fases.length > 0) {\n let primeiraFase = f.fases[0];\n if (!primeiraFase.campos.includes(prop)) {\n primeiraFase.campos.push(prop);\n }\n } else {\n // Se não houver fase, cria uma nova fase e adiciona os campos sem fase nela.\n f.fases.push({\n nome: \"Geral\",\n campos: [prop],\n } as IFaseCampos<any>);\n }\n }\n return f;\n });\n });\n }\n // LOG(1, \"Fases configuradas:\", this.fases());\n }\n\n faseAvancar(faseIndex?: number): void {\n let fases = this.fases()?.fases;\n if (fases == null) return;\n\n if (faseIndex != null) {\n let proximaFaseIndex = fases.indexOf(fases[faseIndex]);\n if (proximaFaseIndex !== -1) {\n if (proximaFaseIndex !== this.faseIndex()) {\n this.faseIndex.set(faseIndex);\n this.fase_historico.update(h => { h = [...h, faseIndex]; return h; });\n }\n } else {\n LOG(1, \"Fase informada não existe.\");\n }\n } else {\n let proximaFaseIndex = fases.indexOf(fases[this.faseIndex() + 1]);\n if (proximaFaseIndex !== -1) {\n if (proximaFaseIndex !== this.faseIndex()) {\n this.faseIndex.set(proximaFaseIndex);\n this.fase_historico.update(h => { h = [...h, proximaFaseIndex]; return h; });\n }\n } else {\n LOG(1, \"Não há próxima fase para avançar.\");\n }\n }\n }\n faseVoltar(): void {\n let fases = this.fases()?.fases;\n if (fases == null) return;\n\n if (this.faseIndex() > 0) {\n this.fase_historico.update(h => { h.pop(); return h; });\n let ultimaFaseDoHistorico = this.fase_historico()[this.fase_historico().length - 1];\n if (ultimaFaseDoHistorico != null) {\n this.faseIndex.set(ultimaFaseDoHistorico);\n } else {\n LOG(1, \"Não para onde voltar.\");\n }\n } else {\n this.faseIndex.set(0);\n this.fase_historico.set([0]);\n LOG(1, \"Já está na primeira fase possível.\")\n }\n }\n\n\n\n checkCamposInFase(campos: IFieldComponent<any>[], fases: IFases<any>): string[] {\n // Verifica e informa no console se todos os campos recebidos estão presentes em alguma fase\n let camposNomes = campos.map(c => c.prop);\n let camposEmFases: string[] = [];\n let camposNaoEmFases: string[] = [];\n for (let campoNome of camposNomes) {\n let encontrado = false;\n for (let fase of fases.fases) {\n for (let campoOrGrupo of fase.campos) {\n if (typeof campoOrGrupo === 'string') {\n if (campoOrGrupo === campoNome) {\n encontrado = true;\n break;\n }\n } else {\n if (campoOrGrupo.campos.includes(campoNome)) {\n encontrado = true;\n break;\n }\n }\n }\n if (encontrado) break;\n }\n if (encontrado) {\n camposEmFases.push(campoNome);\n } else {\n camposNaoEmFases.push(campoNome);\n }\n }\n // if (camposNaoEmFases.length > 0) {\n // LOG(1, \"⚠️ Campos sem fase:\", camposNaoEmFases);\n // } else {\n // LOG(1, \"✔️ Todos os campos estão presentes em alguma fase.\");\n // }\n return camposNaoEmFases;\n\n }\n}\n","@if(isFaseado()){\n<div class=\"faseButtons\">\n\t<ui-button tipo=\"icon\" tema=\"primary\" (clicked)=\"faseVoltar()\" class=\"todosBotoes\" [disabled]=\"isDisabledVoltar()\"\n\t\ticoneNome=\"arrow-left\" title=\"Voltar\" [radiusTabFormat]=\"!isLinear()\"></ui-button>\n\t<div class=\"faseButtons faseHeader\" [class.hasGap]=\"isLinear()\">\n\t\t@if(isLinear()){\n\t\t<div class=\"fase-linha-entre-botoes\">\n\t\t\t<div class=\"fase-linha-central\"></div>\n\t\t</div>\n\t\t}\n\t\t@for (fase of fasesList(); track $index) {\n\t\t<ui-button tipo=\"nofill\" tema=\"primary\" class=\"todosBotoes faseBotao\" (clicked)=\"faseAvancar($index)\"\n\t\t\t[class.ativo]=\"faseIndex() == $index\" [disabled]=\"fase.disabled\" [icone]=\"fase.icone\" [title]=\"fase.nome\"\n\t\t\t[radiusTabFormat]=\"!isLinear()\">\n\t\t\t<div class=\"faseHeaderText\" [innerHTML]=\"fase.nome\"></div>\n\t\t</ui-button>\n\t\t}\n\t</div>\n\t<ui-button tipo=\"nofill\" tema=\"primary\" (clicked)=\"faseAvancar()\" class=\"todosBotoes\" [disabled]=\"isDisabledAvancar()\"\n\t\ticoneNome=\"arrow-right\" [iconeAntes]=\"false\" [iconeDepois]=\"true\" title=\"Proximo\"\n\t\t[radiusTabFormat]=\"!isLinear()\"></ui-button>\n</div>\n<div class=\"faseUnderline\" [class.underline-linear]=\"isLinear()\"></div>\n}","import { Component, input, model, OnInit, output, signal } from '@angular/core';\nimport { UiButton } from \"../../../elements/ui-button/ui-button\";\nimport { UiIcon } from \"../../../elements/ui-icon/ui-icon\";\nimport { LibUtil } from '../../../util/util';\nimport { BaseFieldsValues } from '../../Base/BaseFieldsValues/BaseFieldsValues';\nimport { FieldsGeneric } from '../../generic/generic';\nimport { FormControls } from \"../form-controls/form-controls\";\nimport { FormFase } from \"../form-fase/form-fase\";\nimport { UiLoading } from \"../../../elements/ui-loading/ui-loading\";\n\nexport interface ISaveTasks {\n title: string;\n icone?: string;\n iconeNome?: string;\n task: () => Promise<{ s: boolean, m: string }>;\n done?: boolean;\n success?: boolean;\n message?: string;\n}\n\nexport interface IActionsDone {\n values: any;\n result: any;\n tasks: ISaveTasks[];\n ok: boolean; // Booleano que indica se todas tarefas inseridas foram concluídas com sucesso.\n}\n\n@Component({\n selector: 'fields-form-action',\n templateUrl: './form-action.html',\n styleUrls: ['./form-action.css', '../form-fields.css'],\n imports: [UiButton, UiIcon, FieldsGeneric, FormControls, FormFase, UiLoading],\n})\nexport class FormAction<T> extends BaseFieldsValues<T> implements OnInit {\n\n hasOutline = model<boolean>(false);\n\n actionTitle = input<string | undefined>();\n sendValues = input<((values: any) => Promise<any>) | undefined>();\n sending = output<boolean>();\n done = output<IActionsDone>();\n\n // Permite customizar tarefas.\n taskTocar = input<boolean>(true);\n taskSanitizar = input<boolean>(true);\n taskDisponiveis = input<boolean>(true);\n taskValidar = input<boolean>(true);\n taskEnviar = input<boolean>(true);\n tasksToSave = signal<ISaveTasks[]>([]);\n\n result: any = null;\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.updateDisabledAction();\n\n // Incrementa tarefa TOCAR\n if (this.taskTocar()) {\n this.tasksToSave.update(tasks => [...tasks, {\n title: 'Tocando campos',\n iconeNome: 'handshake',\n task: async () => {\n this.form.setTouchedAll(true);\n return { s: true, m: 'Tocando campos concluído' };\n }\n }]);\n }\n\n // Incrementa tarefa Sanitizando\n if (this.taskSanitizar()) {\n this.tasksToSave.update(tasks => [...tasks, {\n title: 'Sanitizando',\n iconeNome: 'broom',\n task: async () => {\n this.form.sanitizar();\n return { s: true, m: 'Sanitizando concluído' };\n }\n }]);\n }\n\n // Tarefa para filtrar apenas os campos disponíveis para envio (ex: campos desabilitados, etc).\n if (this.taskDisponiveis()) {\n this.tasksToSave.update(tasks => [...tasks, {\n title: 'Disponíveis para envio',\n iconeNome: 'power',\n task: async () => {\n this.form.onlyAvailable();\n return { s: true, m: 'Disponíveis para envio concluído' };\n }\n }]);\n }\n\n // Incrementa tarefa VALIDAR\n if (this.taskValidar()) {\n this.tasksToSave.update(tasks => [...tasks, {\n title: 'Validando',\n iconeNome: 'ui-checks',\n task: async () => {\n try {\n await this.form.validar();\n return { s: true, m: 'Validação concluída' };\n } catch (e) {\n return { s: false, m: 'Erro na validação' };\n }\n }\n }]);\n }\n\n // Incrementa tarefa SENDVALUES\n if (this.taskEnviar() && this.sendValues()) {\n this.tasksToSave.update(tasks => [...tasks, {\n title: 'Ação de enviar',\n iconeNome: 'paper-plane',\n task: async () => {\n // Para enviar, o form deve estar válido.\n if (!this.form.valido()) return { s: false, m: 'Formulário inválido' };\n\n // Para enviar, deve existir a função de envio.\n let fnEnviar = this.sendValues();\n if (!fnEnviar) return { s: false, m: 'Função de envio não definida' };\n\n // Reinicia o resultado anterior, se houver.\n this.result = null;\n\n // Obtem os valores do formulário.\n let valores = LibUtil.clonar(this.form.values());\n\n let errorMessage = \"\";\n\n // Inicia o envio.\n try {\n this.form.isEnviando = true;\n this.sending.emit(true);\n this.result = await fnEnviar(valores);\n this.form.isEnviando = false;\n this.sending.emit(false);\n if (this.result != null) {\n // Indica que a tarefa de envio foi concluída com sucesso.\n return { s: true, m: 'Envio concluído' };\n }\n } catch (e) {\n console.error(\"❌ ERRO ao Enviar Valores. \", e);\n errorMessage = e instanceof Error ? e.message : String(e);\n }\n\n // Qualquer outro caso, indica falha.\n return { s: false, m: `Erro ao enviar valores: ${errorMessage}` };\n }\n }]);\n }\n\n // Neste componente, há sempre uma ação e sempre emite tasksDone.\n this.tasksToSave.update(tasks => [\n ...tasks,\n {\n title: 'Ações concluídas',\n iconeNome: 'flag-checkered',\n task: async () => {\n let ok = this.tasksToSave().filter(task => task.title !== 'Ações concluídas').every(task => task.success);\n let values = LibUtil.clonar(this.form.values());\n let actionsDone: IActionsDone = {\n values,\n result: this.result,\n tasks: this.tasksToSave(),\n ok\n }\n this.done.emit(actionsDone);\n if (ok) this.form.isEnviado = true;\n return { s: ok, m: ok ? 'Ações concluídas com sucesso' : 'Erro nas ações' };\n }\n }\n ]);\n\n }\n\n async onSave() {\n this.tasksToSave.update(tasks => tasks.map(t => ({ ...t, done: false })));\n this.updateDisabledAction(true);\n this.isLoadingActive.set(true);\n\n for await (const task of this.tasksToSave()) {\n // await LibUtil.wait(1000);\n let r = task.task();\n r.then(s => {\n task.success = s.s;\n task.message = s.m;\n }).catch(f => {\n task.success = false;\n task.message = `Erro na execução da tarefa: ${f instanceof Error ? f.message : String(f)}`;\n });\n await r;\n task.done = true;\n }\n\n this.isLoadingActive.set(false);\n this.updateDisabledAction();\n }\n\n}\n","<ui-form-fase [fases]=\"fases()\" [campos]=\"form.listaCampos()\" [(faseIndex)]=\"faseIndex\"></ui-form-fase>\n@if(isFaseado()){\n<div class=\"containerFases\" [class.showOutlineFields]=\"hasOutline()\">\n\t@for (fase of listaFase(); track $index;let fIndex = $index) {\n\t<div class=\"areaFase g-fields\" [style.--fase]=\"faseIndex()\" [class.ativo]=\"faseIndex() == fIndex\"\n\t\t[style.--g-fields-min]=\"fase.gridMin\" [style.--g-fields-max]=\"fase.gridMax\"\n\t\t[class.showOutlineFields]=\"hasOutline()\">\n\t\t@for (faseGrupo of faseGrupo(); track $index) {\n\t\t@if(faseGrupo.faseIndex == fIndex){\n\n\t\t@if(faseGrupo.tipo == 'campo' && faseGrupo.campo){\n\n\t\t<fields-g [form]=\"form\" [name]=\"faseGrupo.campo.prop\"\n\t\t\t[class]=\"faseGrupo.campo.tipo == 'hidden' ? 'fieldHidden' : ''\"></fields-g>\n\n\t\t} @else if (faseGrupo.tipo == 'grupo' && faseGrupo.grupo) {\n\n\t\t<div class=\"field-group\" [style.grid-area]=\"faseGrupo.grupo.area ?? 'auto / auto / auto / span 2'\">\n\t\t\t@if(faseGrupo.grupo.titulo){ <div class=\"group-title\"\n\t\t\t\t[style.grid-area]=\"faseGrupo.grupo.tituloArea ?? 'auto / auto / auto / span 2'\">{{\n\t\t\t\tfaseGrupo.grupo!.titulo }}</div> }\n\t\t\t@for(campo of faseGrupo.grupo!.campos; track $index){\n\t\t\t<fields-g [form]=\"form\" [name]=\"campo\"\n\t\t\t\t[class]=\"form.campos()[campo]?.tipo == 'hidden' ? 'fieldHidden' : ''\"></fields-g>\n\t\t\t}\n\t\t</div>\n\n\t\t}@else{\n\n\t\t<div class=\"card bg-danger\"> ❌ Falha tipo {{ faseGrupo.tipo }}.<br> Campo {{ faseGrupo.nome }} não encontrado!</div>\n\t\t}\n\n\t\t}\n\t\t}\n\t</div>\n\t}\n</div>\n\n}@else {\n<div class=\"g-fields\" [style.--g-fields-min]=\"gmin()\" [style.--g-fields-max]=\"gmax()\"\n\t[class.showOutlineFields]=\"hasOutline()\">\n\n\t@for (campo of form.listaCampos(); track $index) {\n\t<fields-g [form]=\"form\" [name]=\"campo.prop\" [class]=\"campo.tipo == 'hidden' ? 'fieldHidden' : ''\"></fields-g>\n\t}\n\n</div>\n}\n\n<div class=\"buttonsGap\">\n\t<ui-button tipo=\"fill\" tema=\"primary\" (clicked)=\"onSave()\" [disabled]=\"isDisabledAction()\" class=\"botaoAcaoSave\">\n\t\t@if(showFormControls()){\n\t\t<div class=\"icons\">\n\t\t\t@for (task of tasksToSave(); track $index) {\n\t\t\t@if(task.iconeNome) {\n\t\t\t<ui-icon [name]=\"task.iconeNome\" [class.done]=\"task.done\" [class.success]=\"task.success == true\"\n\t\t\t\t[class.fail]=\"task.success == false\"></ui-icon>\n\t\t\t} @else if(task.icone) {\n\t\t\t<i [class]=\"task.icone\" [class.done]=\"task.done\" [class.success]=\"task.success == true\"\n\t\t\t\t[class.fail]=\"task.success == false\"></i>\n\t\t\t}\n\t\t\t}\n\t\t</div>\n\t\t}\n\t\t<div class=\"f-1\">\n\t\t\t{{ actionTitle() ?? 'Salvar' }}\n\t\t</div>\n\t\t@if(isLoadingActive()){\n\t\t<div class=\"loadingSubmit\">\n\t\t\t<ui-loading></ui-loading>\n\t\t</div>\n\t\t}\n\t</ui-button>\n\t<ng-content></ng-content>\n</div>\n\n@if(showFormControls()){\n<ui-form-controls [form]=\"form\" [recebido]=\"this.values()\" [(hasOutline)]=\"hasOutline\" [faseIndex]=\"faseIndex()\"\n\t[totalFases]=\"listaFase().length\"></ui-form-controls>\n}","import { Component, model } from '@angular/core';\nimport { FieldsGeneric } from '../../generic/generic';\nimport { BaseFieldsValues } from '../../Base/BaseFieldsValues/BaseFieldsValues';\nimport { FormControls } from \"../form-controls/form-controls\";\n\n@Component({\n selector: 'fields-form-no-action',\n templateUrl: './form-no-action.html',\n styleUrls: ['./form-no-action.css', '../form-fields.css'],\n imports: [FieldsGeneric, FormControls],\n})\nexport class FormNoAction<T> extends BaseFieldsValues<T> {\n\n async onSave() {\n // Não faz nada. \n return;\n }\n\n hasOutline = model<boolean>(false);\n\n}\n","<div class=\"g-fields\" [style.--g-fields-min]=\"gmin()\" [style.--g-fields-max]=\"gmax()\">\n\n\t@for (campo of form.listaCampos(); track $index) {\n\t<fields-g [form]=\"form\" [name]=\"campo.prop\" [class]=\"campo.tipo == 'hidden' ? 'fieldHidden' : ''\"></fields-g>\n\t}\n\n</div>\n\n@if(showFormControls()){\n<ui-form-controls [form]=\"form\" [recebido]=\"this.values()\" [(hasOutline)]=\"hasOutline\" [faseIndex]=\"faseIndex()\"\n\t[totalFases]=\"listaFase().length\"></ui-form-controls>\n}","import { Component, computed, input, model } from '@angular/core';\nimport { LibUtil } from '../../../util/util';\nimport { IField, IFieldComponent } from '../Formulario';\nimport { LOG } from '../../../util/log';\n\nexport type IModeShowEntidade = \"centro\" | \"cantos\" | \"esquerda\" | \"grid\" | \"wrap\";\n\n@Component({\n selector: 'ui-formated-values',\n templateUrl: './formated-values.html',\n styleUrls: ['./formated-values.css'],\n imports: [],\n})\nexport class FormatedValues {\n\n campos = input<IFieldComponent<any>[] | undefined>();\n dados = input<any>();\n modo = model<IModeShowEntidade>(\"centro\");\n especialKeys = input<string[] | undefined>();\n ignoreKeys = input<string[] | undefined>([]);\n\n camposFormatados = computed(() => {\n let campos = this.campos();\n let especialKeys = (this.especialKeys() ?? []).map(k => k.toLowerCase());\n\n let listaDados = campos?.map(campo => {\n let inputs: any = {};\n // let isInner: boolean = this.getIsInner(campo, inputs);\n let titulo = campo.titulo ?? campo.prop ?? \"\";\n return {\n ...campo,\n label: titulo + ':',\n value: this.getFormattedValue(campo) ?? \"\",\n // isInner,\n inputs,\n isEspecial: especialKeys.includes(campo.prop?.toLowerCase()),\n };\n }).filter(campo => !this.ignoreKeys()?.includes(campo.prop));\n\n // Ordena a lista colocando os isEspecial no final\n listaDados = listaDados?.sort((a, b) => {\n if (a.isEspecial && !b.isEspecial) return 1;\n if (!a.isEspecial && b.isEspecial) return -1;\n return 0;\n });\n\n // Retorna\n return listaDados;\n });\n\n // changeModoTo(modo: IModeShowEntidade) {\n // this.modo.set(modo);\n // }\n\n // getIsInner(campo: IFieldComponent<any>, inputs: any): boolean {\n // switch (campo.tipo) {\n\n // case IField.Upload:\n // inputs[\"file\"] = this.dados()?.[campo.prop];\n // inputs[\"tipo\"] = IMGTYPE.Generic;\n // inputs[\"h\"] = 45;\n // return false;\n\n // default:\n // return true;\n\n // }\n // }\n\n getFormattedValue(campo: IFieldComponent<any>) {\n let value = this.dados()?.[campo.prop];\n if (value == null || value == undefined) return \"\";\n\n switch (campo.tipo) {\n\n case IField.AutoComplete:\n // A implementar...\n break;\n\n\n case IField.Button:\n // A implementar...\n break;\n\n case IField.Checkbox:\n value = value === true ? \"Sim\" : \"Não\";\n break;\n\n case IField.Color:\n // A implementar...\n break;\n\n case IField.Custom:\n LOG(1, \"ShowEntidade: A exibição do custom não deve ser alterada por aqui. (Remover o aviso quando for implementar o custom)\");\n break;\n\n case IField.Date:\n value = LibUtil.stringToDataBR(value)?.split(\" \")[0];\n break;\n\n case IField.DateTime:\n value = LibUtil.stringToDataBR(value);\n break;\n\n case IField.Display:\n // A implementar...\n break;\n\n case IField.Editor:\n // A implementar...\n break;\n\n case IField.Email:\n // A implementar...\n break;\n\n case IField.Hidden:\n // A implementar...\n break;\n\n case IField.Icon:\n value = `<i class=\"${value}\"></i>&nbsp; ${value}`;\n break;\n\n case IField.MultiFactor:\n // A implementar...\n break;\n\n case IField.MultiText:\n // A implementar...\n break;\n\n case IField.Number:\n // A implementar...\n break;\n\n case IField.Password:\n value = \"••••••••\";\n break;\n\n case IField.Referencia:\n if (campo.getDisplay) value = campo.getDisplay(value);\n break;\n\n case IField.Search:\n // A implementar...\n break;\n\n case IField.Select:\n let options = campo.options?.();\n let optionValue = options?.find(o => o.k == value)?.v\n optionValue ? value = `${optionValue}` : value = `${value}`;\n break;\n\n case IField.Slide:\n value = value == true ? \"Sim\" : \"Não\";\n break;\n\n case IField.Text:\n // A implementar...\n break;\n\n case IField.Upload:\n // A implementar...\n break;\n\n }\n\n // Estes abaixo só se aplicariam se o ShowEntidade fosse mais genérico.\n // switch (Util.classof(value)) {\n // case \"boolean\":\n // if (value === true) value = \"Sim\";\n // if (value === false) value = \"Não\";\n // break;\n // case \"array\":\n // if (value.length && value.length > 0) {\n // if (Util.classof(value[0]) == \"object\") {\n // value = `Lista com ${value.length} registros`\n // } else {\n // value = value.join(\", \");\n // }\n // }\n // break;\n // }\n return value;\n }\n}\n","<div [class]=\"modo()\" [class.showEntidade]=\"true\">\n\n\n\t@for (field of camposFormatados(); track $index) {\n\t<div class=\"linhaDado\" [class.isEspecial]=\"field.isEspecial\">\n\t\t<div class=\"titulo\" [innerHTML]=\"field.label\"></div>\n\t\t<!-- @if(field.isInner){ -->\n\t\t<div class=\"conteudo\" [innerHTML]=\"field.value\"></div>\n\t\t<!-- }@else {\n\t\t<build-component [componente]=\"field.value\" [inputs]=\"field.inputs\"></build-component>\n\t\t} -->\n\t</div>\n\t}\n\n</div>","import { Component, computed, input, model } from '@angular/core';\nimport { LibUtil } from '../../../util/util';\nimport { IModeShowEntidade } from '../formated-values/formated-values';\n\n@Component({\n selector: 'ui-single-values',\n templateUrl: './single-values.html',\n styleUrls: ['./single-values.css'],\n imports: [],\n})\nexport class SingleValues {\n\n dados = input<any>();\n modo = model<IModeShowEntidade>(\"centro\");\n especialKeys = input<string[] | undefined>();\n\n dadosAExibir = computed(() => {\n let dados = this.dados();\n let keys = Object.keys(dados ?? {}).sort();\n let especialKeys = (this.especialKeys() ?? []).map(k => k.toLowerCase());\n\n let listaDados = keys?.map(chave => {\n return {\n label: LibUtil.pascalCase(chave) + ':',\n value: this.getNormalizedValue(dados[chave]) ?? \"\",\n isEspecial: especialKeys.includes(chave.toLowerCase()),\n };\n });\n\n // Ordena a lista colocando os isEspecial no final\n listaDados = listaDados?.sort((a, b) => {\n if (a.isEspecial && !b.isEspecial) return 1;\n if (!a.isEspecial && b.isEspecial) return -1;\n return 0;\n });\n\n // Retorna\n return listaDados;\n });\n\n getNormalizedValue(value: any) {\n if (value == null || value == undefined) return \"\";\n\n let classofValue = LibUtil.classof(value);\n\n switch (classofValue) {\n\n case \"object\":\n value = `{ ... Objeto com ${Object.keys(value).length} itens }`\n break;\n\n case \"array\":\n if (value.length && value.length > 0) {\n if (LibUtil.classof(value[0]) == \"object\") {\n value = `[ ... Lista com ${value.length} registros ]`\n } else {\n value = value.join(\", \");\n }\n }\n break;\n\n }\n return value;\n }\n}\n","<div [class]=\"modo()\" [class.showEntidade]=\"true\">\n\n\n\t@for (dado of dadosAExibir(); track $index) {\n\t<div class=\"linhaDado\" [class.isEspecial]=\"dado.isEspecial\">\n\t\t<div class=\"titulo\" [innerHTML]=\"dado.label\"></div>\n\t\t<div class=\"conteudo\" [innerHTML]=\"dado.value\"></div>\n\t</div>\n\t}\n\n</div>","import { InjectionToken, Signal, Type, WritableSignal } from \"@angular/core\";\nimport { IKV, ITiposTema } from \"../interfaces/interfaces\";\n\n\n// ─── ScreenMode (definido localmente — sem dependência do LayoutCoreService) ──────\nexport enum ScreenMode {\n\tMobile = \"Mobile\",\n\tDesktop = \"Desktop\",\n\tTablet = \"Tablet\",\n}\n\n// ─── Serviço de célula (interface para quebrar dependência circular) ──────────────\nexport interface IMkCellService {\n\tgridParams: Signal<IGridParam<any> | undefined>;\n\tupdateGridParams(params: IGridParam<any>): void;\n}\n\nexport const GRID_PARAMS_TOKEN = new InjectionToken<IGridParam<any>>('GRID_PARAMS');\n\nexport interface IGridCellComponentConfig {\n\tcomponent: Type<unknown>,\n\tinput: any,\n}\n\n// ─── Coluna ────────────────────────────────────────────────────────────────────────\nexport interface IColuna<T> {\n\tprop: keyof T & string | (keyof T & string)[],\n\ttitulo: string,\n\ttituloReduzido?: string,\n\twidth?: string,\n\tminWidth?: string,\n\tmaxWidth?: string,\n\n\tvisivel?: boolean,\n\tclasseFull?: string,\n\tclasseCell?: string,\n\tclasseHeader?: string,\n\tsortable?: boolean,\n\tstyleCell?: string,\n\tstyleHeader?: string,\n\tcellRenderer?: (p: IGridParam<T>) => string,\n\tcellRendererParams?: any,\n\tcellComponent?: IGridCellComponentConfig,\n\tcapitalize?: boolean,\n\tmask?: string | ((value: any) => string),\n\ttextVertical?: boolean,\n\tiniciaAgrupado?: boolean,\n\tcurrency?: string,\n\toverflow?: string,\n\ttextOverflow?: string,\n}\n\nexport type IColunaImage = \"\"\n\nexport enum IGridFilterType {\n\tExato = 'exact',\n\tComo = 'like',\n\tMaiorQue = 'bigger',\n\tMenorQue = 'smaller',\n\tEntre = 'between',\n\tColumn = 'column',\n}\n\nexport interface IGridFilter<T> {\n\tpropriedade: keyof T,\n\tpropriedade2?: keyof T,\n\ttipo: IGridFilterType,\n\tvalues: string[] | number[] | boolean[],\n}\n\nexport interface IGridEventAPI<T> {\n\tid: string | undefined,\n\tlinha: T,\n\taction: IGridConfigActions,\n}\n\nexport const PAGINATION_OPTIONS: IKV[] = [\n\t{ k: 5, v: \"5\" },\n\t{ k: 10, v: \"10\" },\n\t{ k: 25, v: \"25\" },\n\t{ k: 50, v: \"50\" },\n\t{ k: 100, v: \"100\" },\n\t{ k: 1000, v: \"1000\" },\n]\n\nexport interface IOrdenacao {\n\tcoluna: string | string[];\n\tdirecao: 'asc' | 'desc';\n}\n\nexport interface IPaginacao {\n\tpaginaAtual: number;\n\ttotalItens: number;\n\ttotalAgrupado: number;\n}\n\nexport interface IGridConfigActions {\n\tinmenu?: boolean,\n\tdisplay?: string,\n\tname: string,\n\ttema?: ITiposTema,\n\ticon?: string,\n\tshowIcon?: boolean,\n\taction?: (p: IGridEventAPI<any>) => void,\n\tshowAction: boolean,\n\tshowLineAction?: (linha: any) => boolean,\n\tactions?: IGridConfigActions[],\n}\n\nexport interface IDisplayValue {\n\tdisplay: string,\n\tvalue: string | number | boolean,\n}\n\nexport interface IGridBaseActions {\n\tmenuDisplay: string,\n\tmenuIcon: string,\n\tshowMenuIcon: boolean,\n\twidth: string,\n\twidthMax: string,\n\twidthMin: string,\n\taloneAlwaysOutside: boolean,\n}\n\nexport interface IActionsLineConfig extends IGridBaseActions {\n\theaderDisplayMore: string,\n\theaderClasse?: string,\n}\n\nexport interface IGridConfig<T> {\n\t// ─── Obrigatório ─────────────────────────────────────────────────────────────\n\tcolunas: IColuna<T>[],\n\n\t// ─── Identificação ───────────────────────────────────────────────────────────\n\tprimarykey?: string,\n\tnameEntity?: string,\n\n\t// ─── Actions de linha ────────────────────────────────────────────────────────\n\tactionsLine?: IGridConfigActions[],\n\tactionsLineConfig?: Partial<IActionsLineConfig>,\n\tshowActionsLine?: boolean,\n\n\t// ─── Actions de topo ─────────────────────────────────────────────────────────\n\tactionsTop?: IGridConfigActions[],\n\tactionsTopConfig?: Partial<IGridBaseActions>,\n\tshowActionsTop?: boolean,\n\n\t// ─── Regras de linha ─────────────────────────────────────────────────────────\n\tInativeRule?: (linha: any) => boolean,\n\tSelectionDisabledRule?: (linha: any) => boolean,\n\tbackgroundHue?: (linha: any) => number,\n\n\t// ─── Filtro / pesquisa ───────────────────────────────────────────────────────\n\tfilterSearchIcon?: string,\n\tfilterBarStartCollapsed?: boolean,\n\n\t// ─── Paginação ───────────────────────────────────────────────────────────────\n\tpaginations?: IKV[],\n\tpaginationSize?: number,\n\n\t// ─── Visibilidade de seções ──────────────────────────────────────────────────\n\tshowControlBar?: boolean,\n\tshowSearch?: boolean,\n\tshowFilterBar?: boolean,\n\tshowGridMenu?: boolean,\n\tshowInfoBar?: boolean,\n\tshowMenuIcon?: boolean,\n\tshowPagination?: boolean,\n\n\t// ─── Aparência ───────────────────────────────────────────────────────────────\n\thasVerticalLine?: boolean,\n\thasSeletor?: boolean,\n\thasGrid?: boolean,\n\tminLineHeight?: string,\n\tisCompacted?: boolean,\n\n\t// ─── Seleção ─────────────────────────────────────────────────────────────────\n\tselectionMode?: 'single' | 'multiple' | 'none',\n\tstartSelected?: any[],\n\tonSelected?: (linha: any, selecionados: any[]) => Promise<void> | void,\n\tonUnselected?: (linha: any, selecionados: any[]) => Promise<void> | void,\n\tonSelectionChanged?: (linha: any, selecionados: any[]) => Promise<void> | void,\n\n\t// ─── Estado ──────────────────────────────────────────────────────────────────\n\thasError?: boolean,\n\tisLoaded?: boolean,\n\ttimeRequest?: string,\n\tlastGridEventAPI?: IGridEventAPI<T>,\n}\n\nexport const GRID_CONFIG_DEFAULTS = {\n\tprimarykey: 'id',\n\tnameEntity: undefined as string | undefined,\n\tactionsTop: [] as IGridConfigActions[],\n\tactionsTopConfig: {\n\t\tmenuDisplay: '',\n\t\tmenuIcon: '',\n\t\tshowMenuIcon: true,\n\t\twidth: 'auto',\n\t\twidthMax: 'auto',\n\t\twidthMin: 'auto',\n\t\taloneAlwaysOutside: false,\n\t} as IGridBaseActions,\n\tactionsLine: [] as IGridConfigActions[],\n\tactionsLineConfig: {\n\t\theaderDisplayMore: 'Ações',\n\t\tmenuDisplay: '',\n\t\tmenuIcon: '',\n\t\tshowMenuIcon: true,\n\t\twidth: 'auto',\n\t\twidthMax: 'auto',\n\t\twidthMin: '125px',\n\t\taloneAlwaysOutside: true,\n\t} as IActionsLineConfig,\n\tInativeRule: (_: any) => false,\n\tfilterSearchIcon: '',\n\tfilterBarStartCollapsed: true,\n\tpaginations: PAGINATION_OPTIONS,\n\tpaginationSize: 10,\n\tshowControlBar: true,\n\tshowSearch: true,\n\tshowFilterBar: true,\n\tshowGridMenu: true,\n\tshowInfoBar: true,\n\tshowMenuIcon: true,\n\tshowActionsLine: true,\n\tshowActionsTop: false,\n\tshowPagination: true,\n\tselectionMode: 'single' as 'single' | 'multiple' | 'none',\n\thasError: false,\n\thasVerticalLine: false,\n\thasSeletor: true,\n\thasGrid: false,\n\tminLineHeight: '20px',\n\tisCompacted: false,\n\tisLoaded: false,\n};\n\nexport interface IGridParam<T> {\n\tcoluna: IColuna<T>,\n\tcolunas: IColuna<T>[],\n\tdata: T,\n\tlista?: T[],\n\tparams: any,\n\tvalue: any,\n\tservicoParams: IMkCellService,\n}\n\nexport interface IFilterFields {\n\tpropriedade: string,\n\tpropriedade2?: string,\n\ttipo: IGridFilterType,\n\tvalues: string[] | number[] | boolean[],\n}\n\nexport interface IDadosDaLinha {\n\tid: string,\n\tdados: any,\n\thue: number | undefined,\n\tinativo: boolean,\n\tselecionado: boolean,\n\tgroupName: string,\n\tisSelectionDisabled?: boolean,\n\tisColapsed?: boolean,\n\tisGroup?: boolean,\n\tisFullLine?: {\n\t\tvisible: boolean,\n\t\tcolapsed: boolean,\n\t\tcolapsedCount?: number,\n\t\tshowIco?: boolean,\n\t},\n\tordem: number,\n\tactions?: IGridConfigActions[],\n\thasActionMenu?: boolean,\n}\n\nexport interface IActionClickEvent {\n\taction?: IGridConfigActions,\n\tdadosDaLinha?: IDadosDaLinha,\n}\n","import { Injectable, signal } from '@angular/core';\nimport { IGridParam, IMkCellService } from '../mk-grid.types';\n\n@Injectable()\nexport class GridCellService implements IMkCellService {\n\n\tpublic gridParams = signal<IGridParam<any> | undefined>(undefined);\n\n\tupdateGridParams(params: IGridParam<any>): void {\n\t\tthis.gridParams.set(params);\n\t}\n\n}\n","import { ChangeDetectionStrategy, Component, ComponentRef, inject, Injector, input, OnDestroy, OnInit, signal, SimpleChanges, viewChild, ViewContainerRef } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { GRID_PARAMS_TOKEN, IColuna, IGridConfig, IGridParam } from '../mk-grid.types';\nimport { GridCellService } from '../grid-cell/grid-cell.service';\n\nconst PROP_CONTROLE_ATIVO = 'is_ativo';\n\n@Component({\n selector: 'lib-grid-cell-handler',\n templateUrl: './grid-cell-handler.html',\n styleUrls: ['./grid-cell-handler.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [GridCellService],\n host: {\n '[class.table-inativo]': '!ativo()'\n }\n})\nexport class GridCellHandler<T> implements OnInit, OnDestroy {\n\n\n private parentInjector = inject(Injector);\n private sanitizer = inject(DomSanitizer);\n private servico = inject(GridCellService);\n\n lista = input.required<T[]>();\n linha = input.required<T>();\n config = input.required<IGridConfig<T>>();\n localColuna = input.required<IColuna<T>>();\n localColunas = input.required<IColuna<T>[]>();\n inputSearchText = input.required<string>();\n\n ativo = signal<boolean>(true);\n\n gridParams?: IGridParam<any>;\n\n vcr = viewChild('cellComponent', { read: ViewContainerRef });\n private componenteRef?: ComponentRef<any>;\n\n valueToRender: SafeHtml = \"\";\n\n ngOnInit() {\n this.gridParams = this.getGridParams();\n if (!this.localColuna().cellComponent) {\n this.valueToRender = this.getRenderer();\n }\n }\n ngOnDestroy() {\n if (this.componenteRef) {\n this.componenteRef.destroy();\n this.componenteRef = undefined;\n }\n }\n ngAfterViewInit() {\n this.createComponente()\n }\n ngOnChanges(changes: SimpleChanges): void {\n this.valueToRender = this.getRenderer();\n this.gridParams = this.getGridParams();\n if (changes['linha'] && this.servico) {\n this.servico.updateGridParams(this.gridParams);\n }\n }\n\n getRenderer(): SafeHtml | string {\n let data = \"\";\n let prop: string | string[] = this.localColuna().prop;\n if (LibUtil.classof(prop) == \"string\" && (prop as string).includes(\".\")) {\n const props = (prop as string).split(\".\");\n const lastObj = LibUtil.getV(props.slice(0, -1).join(\".\"), this.linha());\n this.ativo.set(!!lastObj?.[PROP_CONTROLE_ATIVO]);\n }\n\n if (this.localColuna().prop) data = LibUtil.getV(this.localColuna().prop, this.linha());\n\n if (this.localColuna().mask) {\n data = LibUtil.mascarar(data, this.localColuna().mask) ?? data;\n }\n\n if (this.localColuna().capitalize) {\n data = LibUtil.capitalize(data);\n }\n\n if (this.localColuna().cellRenderer) {\n const html = this.localColuna().cellRenderer!(this.getGridParams())\n ?? data\n ?? '';\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n\n data = data?.toString() ?? '';\n\n let words = this.inputSearchText().trim().split(\" \").filter(t => t != \"\").map(p => LibUtil.removeEspecias(p).toLowerCase());\n if (words.length > 0) {\n for (let w of words) {\n let preparedData = LibUtil.removeAcentos(data).toLowerCase();\n if (w != \"\" && preparedData.includes(w)) {\n let regexTag = new RegExp(`<[^>]*${w}[^>]*>`, 'i');\n if (regexTag.test(preparedData.toString())) {\n continue;\n }\n let pos = preparedData.toString().toLowerCase().indexOf(w.toLowerCase());\n data = data.slice(0, pos)\n + \"<mark>\"\n + data.slice(pos, pos + w.length)\n + \"</mark>\"\n + data.slice(pos + w.length);\n data = data.replaceAll(\"</mark><mark>\", \"\");\n }\n };\n }\n\n return data ?? '';\n }\n\n private createComponente() {\n if (this.localColuna().cellComponent) {\n this.vcr()?.clear();\n this.componenteRef = this.vcr()?.createComponent(this.localColuna().cellComponent!.component, {\n injector: Injector.create({\n parent: this.parentInjector,\n providers: [\n { provide: GRID_PARAMS_TOKEN, useValue: this.gridParams },\n { provide: 'GRID_PARAMS', useValue: this.gridParams }\n ]\n })\n });\n }\n }\n\n getGridParams(): IGridParam<T> {\n let value = \"\"\n if (this.localColuna().prop) value = LibUtil.getV(this.localColuna().prop, this.linha());\n return {\n coluna: this.localColuna(),\n colunas: this.localColunas(),\n data: this.linha(),\n lista: this.lista(),\n params: this.localColuna().cellComponent?.input ?? this.localColuna().cellRendererParams,\n servicoParams: this.servico,\n value,\n }\n }\n}\n\n","@if(localColuna().cellComponent){\n<div class=\"d-none\" #cellComponent></div>\n} @else {\n<div [innerHTML]=\"valueToRender\"></div>\n}","import { Component, input, output } from '@angular/core';\nimport { IActionClickEvent, IDadosDaLinha, IGridConfig, IGridConfigActions } from '../mk-grid.types';\nimport { UiButton } from '../../elements/ui-button/ui-button';\nimport { UiMenu } from '../../elements/ui-menu/ui-menu';\n\n@Component({\n selector: 'lib-grid-cell-actions',\n imports: [UiButton, UiMenu],\n templateUrl: './grid-cell-actions.html',\n styleUrls: ['./grid-cell-actions.css'],\n})\nexport class GridCellActions {\n\n config = input.required<IGridConfig<any>>();\n dadosDaLinha = input.required<IDadosDaLinha>();\n mobileHeader = input<boolean | undefined>(false);\n compact = input<boolean | undefined>(false);\n\n action = output<IActionClickEvent>();\n\n protected onClickAction(action?: IGridConfigActions, dadosDaLinha?: IDadosDaLinha) {\n if (action?.action) {\n this.action.emit({ action, dadosDaLinha });\n }\n return;\n }\n\n}\n","@if(!compact()){\n@for (action of dadosDaLinha().actions; track $index;) {\n@if(action.showAction && action.inmenu !== true){\n<ui-button [tipo]=\"mobileHeader() ? 'fill' : 'icon'\" [tema]=\"action?.tema ?? 'primary'\" [title]=\"action.display\"\n\t(click)=\"onClickAction(action, dadosDaLinha())\" [icone]=\"action.icon\"\n\t[style.--ui-height]=\"compact() ? '20px' : '40px'\"></ui-button>\n}\n}\n}\n\n@if(dadosDaLinha().hasActionMenu || compact()){\n<ui-menu>\n\t<ui-button slot=\"botao\" tipo=\"icon\" tema=\"primary\" [title]=\"config().actionsLineConfig?.menuDisplay\"\n\t\t[iconeNome]=\"config().actionsLineConfig?.showMenuIcon ? 'three-dots-vertical' : undefined\">\n\t\t{{ config().actionsLineConfig?.menuDisplay }}\n\t</ui-button>\n\n\t@for (action of dadosDaLinha().actions; track $index;let last = $last) {\n\t@if(action.showAction && (action.inmenu !== false || compact())){\n\t<ui-button tipo=\"menu-item\" [tema]=\"action?.tema ?? 'primary'\" (click)=\"onClickAction(action, dadosDaLinha())\"\n\t\t[icone]=\"action?.showIcon ? action?.icon : null\"\n\t[iconeNome]=\"!action?.showIcon ? 'dot' : undefined\" [style.--ui-padding]=\"'0 16px'\">\n\t\t{{ action?.display ?? '' }}\n\t</ui-button>\n\t}\n\t}\n\n</ui-menu>\n}","import { Component, input, output } from '@angular/core';\nimport { IActionClickEvent, IColuna, IDadosDaLinha, IGridConfig } from '../mk-grid.types';\nimport { UiCheckBox } from \"../../public-api\";\nimport { GridCellHandler } from \"../grid-cell-handler/grid-cell-handler\";\nimport { GridCellActions } from \"../grid-cell-actions/grid-cell-actions\";\n\nexport interface IColunaComLargura extends IColuna<any> {\n widthNum: number;\n ordem: number;\n}\n\n@Component({\n selector: 'lib-grid-row-renderer',\n imports: [UiCheckBox, GridCellHandler, GridCellActions],\n templateUrl: './grid-row-renderer.html',\n styleUrls: ['../mk-grid.shared.css', './grid-row-renderer.css'],\n})\nexport class GridRowRenderer {\n dadosLinha = input.required<IDadosDaLinha>();\n config = input.required<IGridConfig<any>>();\n colunas = input.required<IColunaComLargura[]>();\n colunasOrdenadas = input.required<IColunaComLargura[]>();\n lista = input.required<any[]>();\n inputSearchText = input.required<string>();\n hasSeletor = input<boolean>(false);\n hasVerticalLine = input<boolean>(false);\n isCompacted = input<boolean>(false);\n hasGrid = input<boolean>(false);\n rowIndex = input<number>(0);\n lastRow = input<boolean>(false);\n\n actionTriggered = output<IActionClickEvent>();\n rowClicked = output<IDadosDaLinha>();\n\n protected onRowAction(event: IActionClickEvent): void {\n this.actionTriggered.emit(event);\n }\n\n protected onRowClick(): void {\n this.rowClicked.emit(this.dadosLinha());\n }\n}\n\n","@if(hasVerticalLine()) {\n<div class=\"table-header table-formated table-vertical-line\">{{ dadosLinha().ordem }}</div>\n}\n\n@if(hasSeletor() && config().selectionMode != 'none') {\n<div class=\"table-item table-formated table-item-seletor\" [class.table-bg-error]=\"dadosLinha().inativo\"\n\t[class.odd]=\"rowIndex() % 2 !== 0\" [class.even]=\"rowIndex() % 2 === 0\" [class.hashue]=\"dadosLinha().hue !== undefined\"\n\t[class.table-border-left]=\"hasGrid()\" [style.--bghue]=\"dadosLinha().hue != 0 ? dadosLinha().hue : null\"\n\t(click)=\"onRowClick()\">\n\t<ui-check-box [(value)]=\"dadosLinha().selecionado\" [single]=\"config().selectionMode == 'single'\"\n\t\t[style.--ui-size]=\"isCompacted() ? '15px' : undefined\" [disabled]=\"dadosLinha().isSelectionDisabled\"></ui-check-box>\n</div>\n}\n\n@for (coluna of colunas(); track $index; let j = $index) {\n@if (coluna.visivel !== false) {\n<lib-grid-cell-handler class=\"table-item table-dados {{ coluna.classeCell }}\" [class.odd]=\"rowIndex() % 2 !== 0\"\n\t[class.even]=\"rowIndex() % 2 === 0\" [class.table-first-col]=\"j === 0\" [class.hashue]=\"dadosLinha().hue !== undefined\"\n\t[style.--bghue]=\"dadosLinha().hue != 0 ? dadosLinha().hue : null\" [style.overflow]=\"coluna.overflow ?? 'hidden'\"\n\t[style.textOverflow]=\"coluna.textOverflow ?? 'ellipsis'\" [linha]=\"dadosLinha().dados\" [localColuna]=\"coluna\"\n\t[lista]=\"lista()\" [config]=\"config()\" [localColunas]=\"colunasOrdenadas()\"\n\t[class.table-bg-error]=\"dadosLinha().inativo\" (click)=\"onRowClick()\" [inputSearchText]=\"inputSearchText()\"\n\t[class.table-border-left]=\"hasGrid()\" [class.table-border-right]=\"$last && hasGrid() && !config().showActionsLine\"\n\t[attr.ordem]=\"coluna.ordem\"></lib-grid-cell-handler>\n}\n}\n\n@if(config().showActionsLine) {\n<lib-grid-cell-actions class=\"table-item table-formated table-item-action\" [class.odd]=\"rowIndex() % 2 !== 0\"\n\t[class.even]=\"rowIndex() % 2 === 0\" [class.hashue]=\"dadosLinha().hue !== undefined\"\n\t[style.--bghue]=\"dadosLinha().hue != 0 ? dadosLinha().hue : null\" [config]=\"config()\" [dadosDaLinha]=\"dadosLinha()\"\n\t[class.table-border-right-error]=\"dadosLinha().inativo\" [class.table-bg-error]=\"dadosLinha().inativo\"\n\t(action)=\"onRowAction($event)\" [compact]=\"isCompacted()\" [class.table-border-left]=\"hasGrid()\"\n\t[class.table-border-right]=\"hasGrid()\" [class.last-row]=\"lastRow()\"></lib-grid-cell-actions>\n}","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { IColuna, IGridConfig, IOrdenacao } from '../mk-grid.types';\nimport { UiCheckBox } from '../../elements/ui-check-box/ui-check-box';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { UiIcon } from '../../elements/ui-icon/ui-icon';\n\nexport interface IColunaComLargura extends IColuna<any> {\n\twidthNum: number;\n\tordem: number;\n}\n\nexport interface IHeaderResizeEvent {\n\tevent: MouseEvent;\n\tcoluna: IColunaComLargura;\n}\n\nexport interface IHeaderResizeDoubleClickEvent {\n\tevent: Event;\n\tcoluna: IColunaComLargura;\n}\n\n@Component({\n\tselector: 'lib-grid-header-row',\n\ttemplateUrl: './grid-header-row.html',\n\tstyleUrls: ['../mk-grid.shared.css', './grid-header-row.css'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: { style: 'display: contents' },\n\timports: [UiCheckBox, DragDropModule, UiIcon],\n})\nexport class GridHeaderRow {\n\n\tcolunas = input.required<IColunaComLargura[]>();\n\tordenacoes = input.required<IOrdenacao[]>();\n\ttodosSelecionados = input.required<boolean>();\n\tconfig = input.required<IGridConfig<any>>();\n\thasSeletor = input<boolean>(false);\n\thasVerticalLine = input<boolean>(false);\n\thasGrid = input<boolean>(false);\n\tisCompacted = input<boolean>(false);\n\tisSelectingAll = input<boolean>(false);\n\n\tcolumnSort = output<string | string[]>();\n\tselectAll = output<boolean>();\n\tcolumnResizeStart = output<IHeaderResizeEvent>();\n\tcolumnResizeDoubleClick = output<IHeaderResizeDoubleClickEvent>();\n\n\tprotected getOrdenacaoDirecao(coluna: string | string[]): 'asc' | 'desc' | null {\n\t\tconst ordenacao = this.ordenacoes().find(o => o.coluna === coluna);\n\t\treturn ordenacao ? ordenacao.direcao : null;\n\t}\n\n\tprotected onColumnSort(coluna: string | string[]): void {\n\t\tthis.columnSort.emit(coluna);\n\t}\n\n\tprotected onSelectAll(value: boolean): void {\n\t\tthis.selectAll.emit(value);\n\t}\n\n\tprotected onResizeStart(event: MouseEvent, coluna: IColunaComLargura): void {\n\t\tthis.columnResizeStart.emit({ event, coluna });\n\t}\n\n\tprotected onResizeDoubleClick(event: Event, coluna: IColunaComLargura): void {\n\t\tthis.columnResizeDoubleClick.emit({ event, coluna });\n\t}\n}\n\n","@if(hasVerticalLine()) {\n<div class=\"table-header table-vertical-line\"></div>\n}\n\n@if(hasSeletor()) {\n<div class=\"table-header table-header-seletor\">\n\t@if(config().selectionMode == 'multiple') {\n\t<ui-check-box [single]=\"false\" [value]=\"todosSelecionados()\" (changed)=\"onSelectAll($event)\"\n\t\t[style.--ui-color]=\"'var(--sys-on-primary)'\" [style.--ui-outline]=\"'var(--sys-on-primary)'\"\n\t\t[disabled]=\"isSelectingAll()\" [style.--ui-size]=\"isCompacted() ? '15px' : undefined\"\n\t\t[hasDash]=\"true\"></ui-check-box>\n\t}\n</div>\n}\n\n@for (coluna of colunas(); track $index) {\n@if (coluna.visivel !== false) {\n<div class=\"table-header\" [class.table-border-left-darker]=\"hasGrid() && $index === 0\"\n\t[class.header-last-col]=\"$last && !config().showActionsLine\" [class.table-border-right-darker]=\"hasGrid()\"\n\t[class.sortable]=\"coluna.sortable !== false\" [class.sorted-asc]=\"getOrdenacaoDirecao(coluna.prop) === 'asc'\"\n\t[class.sorted-desc]=\"getOrdenacaoDirecao(coluna.prop) === 'desc'\" [class.textVertical]=\"coluna.textVertical\">\n\t<div cdkDrag [cdkDragData]=\"coluna\" cdkDragLockAxis=\"x\"\n\t\tclass=\"table-header-text table-drag-container drop-option {{ coluna.classeHeader }}\" [title]=\"coluna.titulo\"\n\t\t[innerHTML]=\"coluna.tituloReduzido ?? coluna.titulo\" [attr.ordem]=\"coluna.ordem\"\n\t\t(click)=\"coluna.sortable !== false && onColumnSort(coluna.prop)\">\n\t</div>\n\t<div class=\"table-header-controls\" (dblclick)=\"onResizeDoubleClick($event, coluna)\"\n\t\t(mousedown)=\"onResizeStart($event, coluna)\">\n\t\t@if (coluna.sortable !== false) {\n\t\t<span class=\"table-ico-sort\">\n\t\t\t@if (getOrdenacaoDirecao(coluna.prop) === 'asc') {\n\t\t\t<ui-icon name=\"sort-up\" class=\"asc\"></ui-icon>\n\t\t\t} @else if (getOrdenacaoDirecao(coluna.prop) === 'desc') {\n\t\t\t<ui-icon name=\"sort-down\" class=\"desc\"></ui-icon>\n\t\t\t}\n\t\t</span>\n\t\t}\n\t</div>\n</div>\n}\n}\n\n@if(config().showActionsLine) {\n<div class=\"table-header table-action-line header-last-col\" [class.table-border-right-darker]=\"hasGrid()\"\n\t[innerHTML]=\"!isCompacted() ? config().actionsLineConfig?.headerDisplayMore : ''\"></div>\n}","import { ChangeDetectionStrategy, Component, input, model, output } from '@angular/core';\nimport { IPaginacao, PAGINATION_OPTIONS } from '../mk-grid.types';\nimport { UiButton } from '../../elements/ui-button/ui-button';\nimport { IKV, IOptionValue, UiSelect } from \"../../public-api\";\n\n@Component({\n selector: 'lib-grid-pagination',\n imports: [UiButton, UiSelect],\n templateUrl: './grid-pagination.html',\n styleUrls: ['./grid-pagination.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GridPagination {\n\n paginacao = input.required<IPaginacao>();\n totalPaginas = input.required<number>();\n performance = input.required<string>();\n pageSizeOptions = input<IKV[] | undefined>(PAGINATION_OPTIONS);\n paginationSize = model<number | undefined>(10);\n\n pageChange = output<number>();\n\n onPreviousPage(): void {\n const atual = this.paginacao().paginaAtual;\n if (atual > 1) {\n this.pageChange.emit(atual - 1);\n }\n }\n\n onNextPage(): void {\n const atual = this.paginacao().paginaAtual;\n if (atual < this.totalPaginas()) {\n this.pageChange.emit(atual + 1);\n }\n }\n\n onFirstPage(): void {\n this.pageChange.emit(1);\n }\n\n onLastPage(): void {\n this.pageChange.emit(this.totalPaginas());\n }\n\n onChangePageSize(optionValue: IOptionValue): void {\n // const newSize = Number(optionValue.optionChanged?.k ?? 10);\n // this.paginationSize.set(newSize);\n this.pageChange.emit(1); // Volta para a primeira página ao mudar o tamanho da página\n }\n}","@if(paginacao()) {\n<div class=\"table-pagination\">\n\n\t<!-- Area dos Totais -->\n\t<div class=\"pagination-info\">\n\t\t<span>Total {{ paginacao().totalItens }} registros</span>\n\t\t@if(performance()){\n\t\t<span class=\"table-performance\">\n\t\t\t{{ performance() }}\n\t\t</span>\n\t\t}\n\t</div>\n\n\t<!-- Area dos Controles -->\n\t<div class=\"pagination-controls\">\n\t\t<ui-button tipo=\"icon\" tema=\"primary\" (click)=\"onFirstPage()\" [disabled]=\"paginacao().paginaAtual === 1\"\n\t\t\ttitle=\"Primeira Página\">\n\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 16 16\">\n\t\t\t\t<path fill-rule=\"evenodd\" class=\"stroke-icone opacidade80\"\n\t\t\t\t\td=\"M11.854 3.646a.5.5 0 0 1 0 .708L8.207 8l3.647 3.646a.5.5 0 0 1-.708.708l-4-4a.5.5 0 0 1 0-.708l4-4a.5.5 0 0 1 .708 0M4.5 1a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 1 0v-13a.5.5 0 0 0-.5-.5\" />\n\t\t\t</svg>\n\t\t</ui-button>\n\t\t<ui-button tipo=\"icon\" tema=\"primary\" (click)=\"onPreviousPage()\" [disabled]=\"paginacao().paginaAtual === 1\"\n\t\t\ttitle=\"Página Anterior\">\n\t\t\t<svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"pagination-icon\">\n\t\t\t\t<path d=\"M16 19L9 12L16 5\" class=\"stroke-icone\" stroke-width=\"2\" stroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\" />\n\t\t\t</svg>\n\t\t</ui-button>\n\n\t\t<span class=\"pagination-current\">{{ paginacao().paginaAtual }} de {{ totalPaginas() }}</span>\n\n\t\t<ui-button tipo=\"icon\" tema=\"primary\" (click)=\"onNextPage()\" [disabled]=\"paginacao().paginaAtual >= totalPaginas()\"\n\t\t\ttitle=\"Próxima Página\">\n\t\t\t<svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"pagination-icon\">\n\t\t\t\t<path d=\"M9 19L16 12L9 5\" class=\"stroke-icone\" stroke-width=\"2\" stroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\" />\n\t\t\t</svg>\n\t\t</ui-button>\n\t\t<ui-button tipo=\"icon\" tema=\"primary\" (click)=\"onLastPage()\" [disabled]=\"paginacao().paginaAtual >= totalPaginas()\"\n\t\t\ttitle=\"Última Página\">\n\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 16 16\">\n\t\t\t\t<path fill-rule=\"evenodd\" class=\"stroke-icone opacidade80\"\n\t\t\t\t\td=\"M4.146 3.646a.5.5 0 0 0 0 .708L7.793 8l-3.647 3.646a.5.5 0 0 0 .708.708l4-4a.5.5 0 0 0 0-.708l-4-4a.5.5 0 0 0-.708 0M11.5 1a.5.5 0 0 1 .5.5v13a.5.5 0 0 1-1 0v-13a.5.5 0 0 1 .5-.5\" />\n\t\t\t</svg>\n\t\t</ui-button>\n\t</div>\n\n\t<!-- Area do seletor de Total por página -->\n\t<div class=\"pagination-page-size\">\n\t\t<span>Por página:</span>\n\t\t<ui-select class=\"pagination-page-selector\" [canUnselect]=\"false\" [options]=\"pageSizeOptions()\"\n\t\t\t[(value)]=\"paginationSize\" (changed)=\"onChangePageSize($event)\">\n\t\t</ui-select>\n\t</div>\n</div>\n}","import { Component, computed, input, output } from '@angular/core';\nimport { IColuna, IGridConfig, IGridConfigActions } from '../mk-grid.types';\nimport { UiButton } from '../../elements/ui-button/ui-button';\nimport { UiMenu } from '../../elements/ui-menu/ui-menu';\nimport { UiProcurar } from '../../elements/ui-procurar/ui-procurar';\n\n@Component({\n selector: 'lib-grid-filter-bar',\n imports: [UiButton, UiMenu, UiProcurar],\n templateUrl: './grid-filter-bar.html',\n styleUrls: ['../mk-grid.shared.css', './grid-filter-bar.css'],\n})\nexport class GridFilterBar {\n\n config = input.required<IGridConfig<any>>();\n colunasDefinidas = input.required<IColuna<any>[]>();\n colAgrupadoAtual = input.required<IColuna<any> | null>();\n isAgrupado = input.required<boolean>();\n filterCollapsed = input<boolean>(false);\n\n searchInput = output<string>();\n actionTriggered = output<IGridConfigActions>();\n filterToggle = output<void>();\n groupByColumn = output<IColuna<any>>();\n clearGroups = output<void>();\n collapseGroups = output<void>();\n expandGroups = output<void>();\n clickOpcoesListagem = output<void>();\n\n outsideMenuActionsTop = computed(() => {\n return (this.config().actionsTop ?? []).filter(a => a.inmenu == false && a.showAction);\n });\n\n menuActionsTop = computed(() => {\n return (this.config().actionsTop ?? []).filter(a => a.inmenu != false && a.showAction);\n });\n\n protected Math = Math;\n\n onInputSearch(text: string): void {\n this.searchInput.emit(text);\n }\n\n onClickOpenCloseFilterZone(): void {\n this.filterToggle.emit();\n }\n\n onClickAction(action?: IGridConfigActions): void {\n if (action) {\n this.actionTriggered.emit(action);\n }\n }\n\n onAgruparPor(coluna: IColuna<any>): void {\n this.groupByColumn.emit(coluna);\n }\n\n onClearGroups(): void {\n this.clearGroups.emit();\n }\n\n onRecolherGroups(): void {\n this.collapseGroups.emit();\n }\n\n onExpandirGroups(): void {\n this.expandGroups.emit();\n }\n}\n\n","@if(config().showControlBar) {\n<div class=\"table-topo-container table-styles\">\n\n\t@if(config().showActionsTop) {\n\t<div class=\"table-actions-outside\">\n\t\t@for (action of outsideMenuActionsTop(); track $index;) {\n\t\t<ui-button tipo=\"fill\" tema=\"primary\" [title]=\"action.display\" (click)=\"onClickAction(action)\"\n\t\t\t[icone]=\"action.icon\">\n\t\t\t{{ action?.display ?? '' }}\n\t\t</ui-button>\n\t\t}\n\t</div>\n\t}\n\n\t<div class=\"table-top-right-container table-conjunto-actions\">\n\t\t@if(config().showSearch) {\n\t\t<div class=\"table-conjunto-actions-item table-pesquisar\">\n\t\t\t<ui-procurar (inputed)=\"onInputSearch($event)\" [autoColapse]=\"true\"></ui-procurar>\n\t\t</div>\n\t\t}\n\n\t\t@if(config().showFilterBar) {\n\t\t<div class=\"table-conjunto-actions-item\">\n\t\t\t<ui-button tipo=\"nofill\" tema=\"primary\" (click)=\"onClickOpenCloseFilterZone()\" [style.--ui-border-radius]=\"'0px'\">\n\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" class=\"stroke-icone\" viewBox=\"0 0 16 16\">\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M1.5 1.5A.5.5 0 0 1 2 1h12a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.128.334L10 8.692V13.5a.5.5 0 0 1-.342.474l-3 1A.5.5 0 0 1 6 14.5V8.692L1.628 3.834A.5.5 0 0 1 1.5 3.5zm1 .5v1.308l4.372 4.858A.5.5 0 0 1 7 8.5v5.306l2-.666V8.5a.5.5 0 0 1 .128-.334L13.5 3.308V2z\" />\n\t\t\t\t</svg>\n\t\t\t\t<span class=\"table-collapse-ico\" [class.ativo]=\"!filterCollapsed()\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" class=\"stroke-icone\" viewBox=\"0 0 16 16\">\n\t\t\t\t\t\t<path\n\t\t\t\t\t\t\td=\"M7.247 11.14 2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z\" />\n\t\t\t\t\t</svg>\n\t\t\t\t</span>\n\t\t\t</ui-button>\n\t\t</div>\n\t\t}\n\n\t\t@if(config().showGridMenu != false) {\n\t\t<div class=\"table-conjunto-actions-item\">\n\t\t\t<ui-menu [autoCloseInCascade]=\"false\">\n\t\t\t\t<ui-button slot=\"botao\" tipo=\"nofill\" tema=\"primary\" class=\"filtro-menu\"\n\t\t\t\t\t[title]=\"config().actionsTopConfig?.menuDisplay\" [style.--ui-border-radius]=\"'0px'\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"stroke-icone\">\n\t\t\t\t\t\t<path\n\t\t\t\t\t\t\td=\"M9.5 13a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0\" />\n\t\t\t\t\t</svg>\n\t\t\t\t\t{{ config().actionsTopConfig?.menuDisplay }}\n\t\t\t\t</ui-button>\n\t\t\t\t<div class=\"menu-title\" (click)=\"clickOpcoesListagem.emit()\">\n\t\t\t\t\tOpções da Listagem\n\t\t\t\t</div>\n\n\t\t\t\t@for (action of menuActionsTop(); track $index;) {\n\t\t\t\t@if(action.actions != null) {\n\t\t\t\t<ui-menu [autoCloseInCascade]=\"false\">\n\t\t\t\t\t<ui-button slot=\"botao\" tipo=\"menu-item-category\" tema=\"primary\" [title]=\"action.display\"\n\t\t\t\t\t\t[style.--ui-border-radius]=\"'0px'\" [icone]=\"action.icon\">\n\t\t\t\t\t\t{{ action?.display ?? '' }}\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t<div class=\"menu-title\">\n\t\t\t\t\t\t{{ action?.display ?? '' }}\n\t\t\t\t\t</div>\n\t\t\t\t\t@for(subAction of action.actions; track $index) {\n\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onClickAction(subAction)\"\n\t\t\t\t\t\t[icone]=\"subAction?.showIcon ? subAction?.icon : null\"\n\t\t\t\t\t\t[iconeNome]=\"subAction?.showIcon && !subAction?.icon ? 'dot' : undefined\">\n\t\t\t\t\t\t{{ subAction?.display ?? '' }}\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t}\n\t\t\t\t</ui-menu>\n\t\t\t\t} @else {\n\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onClickAction(action)\"\n\t\t\t\t\t[icone]=\"action?.showIcon ? action?.icon : null\"\n\t\t\t\t\t[iconeNome]=\"action?.showIcon && !action?.icon ? 'dot' : undefined\">\n\t\t\t\t\t{{ action?.display ?? '' }}\n\t\t\t\t</ui-button>\n\t\t\t\t}\n\t\t\t\t}@empty {\n\t\t\t\t<div class=\"p-2 text-center text-muted\">\n\t\t\t\t\tNenhuma ação disponível.\n\t\t\t\t</div>\n\t\t\t\t}\n\n\t\t\t\t<ui-menu [autoCloseInCascade]=\"false\">\n\t\t\t\t\t<ui-button slot=\"botao\" tipo=\"menu-item-category\" tema=\"primary\" iconeNome=\"object-group\">\n\t\t\t\t\t\tAgrupamento\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t<div class=\"menu-title\">\n\t\t\t\t\t\tAgrupamento\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<ui-menu [autoCloseInCascade]=\"false\">\n\t\t\t\t\t\t<ui-button slot=\"botao\" tipo=\"menu-item-category\" tema=\"primary\">\n\t\t\t\t\t\t\tAgrupar Por\n\t\t\t\t\t\t</ui-button>\n\t\t\t\t\t\t<div class=\"menu-sub-title\">\n\t\t\t\t\t\t\tAgrupar por\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t@for (coluna of colunasDefinidas(); track $index) {\n\t\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onAgruparPor(coluna)\"\n\t\t\t\t\t\t\t[iconeNome]=\"isAgrupado() && colAgrupadoAtual()?.prop === coluna.prop ? 'check2-square' : 'square'\">\n\t\t\t\t\t\t\t{{ coluna.titulo }}\n\t\t\t\t\t\t</ui-button>\n\t\t\t\t\t\t}\n\t\t\t\t\t</ui-menu>\n\n\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onClearGroups()\" iconeNome=\"object-ungroup\"\n\t\t\t\t\t\t[disabled]=\"!isAgrupado()\">\n\t\t\t\t\t\tDesagrupar\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onRecolherGroups()\" iconeNome=\"arrows-collapse\">\n\t\t\t\t\t\tRecolher Todos\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onExpandirGroups()\" iconeNome=\"arrows-expand\">\n\t\t\t\t\t\tExpandir Todos\n\t\t\t\t\t</ui-button>\n\t\t\t\t</ui-menu>\n\t\t\t</ui-menu>\n\t\t</div>\n\t\t}\n\t</div>\n\n</div>\n}","import { Component } from '@angular/core';\nimport { UiIcon } from '../../elements/ui-icon/ui-icon';\n\n@Component({\n selector: 'lib-grid-empty-list',\n imports: [UiIcon],\n templateUrl: './grid-empty-list.html',\n styleUrl: './grid-empty-list.css',\n})\nexport class GridEmptyList {}\n","<div class=\"flex gap-2 f-s-16 text-center nenhumRegistro\">\n\t<ui-icon name=\"database-check\"></ui-icon>\n\tNenhum registro a exibir no filtro aplicado.\n</div>","import { Component } from '@angular/core';\n\n@Component({\n\tselector: 'lib-grid-loading',\n\timports: [],\n\ttemplateUrl: './grid-loading.html',\n\tstyleUrl: './grid-loading.css',\n})\nexport class GridLoading { }\n","<div class=\"flex gap-2 f-s-16 text-center gridLoading\">\n\t<span class=\"gridLoading-spinner\"></span>\n\tCarregando...\n</div>","import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, model, signal, viewChild } from '@angular/core';\nimport { CdkDragDrop, DragDropModule } from '@angular/cdk/drag-drop';\nimport { GridRowRenderer } from './grid-row-renderer/grid-row-renderer';\nimport { GridHeaderRow } from './grid-header-row/grid-header-row';\nimport { GridPagination } from './grid-pagination/grid-pagination';\nimport { GridFilterBar } from './grid-filter-bar/grid-filter-bar';\nimport { GridEmptyList } from './grid-empty-list/grid-empty-list';\nimport { GridLoading } from './grid-loading/grid-loading';\nimport { IActionClickEvent, IActionsLineConfig, IColuna, IDadosDaLinha, IGridBaseActions, IGridConfig, IGridConfigActions, IGridEventAPI, IOrdenacao, IPaginacao, GRID_CONFIG_DEFAULTS } from './mk-grid.types';\nimport { UiButton } from '../elements/ui-button/ui-button';\nimport { UiIcon } from '../elements/ui-icon/ui-icon';\nimport { IOptionValue, UiSelect } from '../elements/ui-select/ui-select';\nimport { UiCheckBox } from '../elements/ui-check-box/ui-check-box';\nimport { LibUtil } from '../util/util';\nimport { IKV } from '../interfaces/interfaces';\nimport { GridCellHandler } from \"./grid-cell-handler/grid-cell-handler\";\nimport { GridCellActions } from \"./grid-cell-actions/grid-cell-actions\";\n\nconst PROP_CONTROLE_ATIVO = 'is_ativo';\n\ninterface IColunaComLargura extends IColuna<any> {\n widthNum: number;\n ordem: number;\n}\n\n\n@Component({\n selector: 'lib-mk-grid',\n imports: [\n GridEmptyList,\n GridLoading,\n UiButton,\n UiSelect,\n UiCheckBox,\n DragDropModule,\n GridFilterBar,\n GridPagination,\n GridHeaderRow,\n GridRowRenderer,\n GridCellHandler,\n GridCellActions,\n UiIcon\n ],\n templateUrl: './mk-grid.html',\n styleUrls: ['./mk-grid.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MkGrid {\n\n lista = input.required<any[] | undefined>();\n config = input.required<IGridConfig<any>>();\n filtro = input<any | undefined>();\n\n colunasDefinidas = signal<IColunaComLargura[]>([]);\n colunasFiltradas = signal<IColunaComLargura[]>([]);\n colunasOrdenadas = signal<IColunaComLargura[]>([]);\n colunasExibir = signal<IColunaComLargura[]>([]);\n gridTemplateColumns = signal('auto');\n inputSearchText = signal<string>('');\n selectedPrimaryKeys = signal<string[]>([]);\n gruposColapsed = signal<string[]>([]);\n isAgrupado = signal(false);\n isAgrupadoLimpo = signal(false);\n filterHeight = signal(1000);\n gruposEncontrados = {\n itens: new Set<string>()\n };\n numOrdemPrimeiroExibido = signal<number>(1);\n numOrdemUltimoExibido = signal<number>(1);\n pxVerticalLine = signal('');\n pxSelector = signal('');\n pxColunas = signal('');\n pxActions = signal('');\n totalColsVisivel = signal(0);\n colAgrupadoAtual = signal<IColuna<any> | null>(null);\n colMovingX = 0;\n\n minLineHeight = model('20px');\n isCompacted = model(false);\n hasGrid = model(false);\n hasVerticalLine = model(false);\n hasSeletor = model(false);\n todosSelecionados = signal(false);\n isSelectingAll = signal(false);\n pageSizeOptions = signal<IKV[] | undefined>(undefined);\n private windowWidth = signal<number>(window.innerWidth);\n private _resizeListener = () => this.windowWidth.set(window.innerWidth);\n currentDevice = computed(() => {\n return this.windowWidth() <= 768 ? 'Mobile' : 'Desktop';\n });\n\n devMode = false;\n\n maxActionsInLine = 0;\n\n eHost = inject(ElementRef);\n gridSize = viewChild('gridSize', { read: ElementRef });\n gridfiltro = viewChild('gridfiltro', { read: ElementRef });\n\n protected Math = Math;\n protected filtroCollapsed = signal(true);\n protected gridId: string = LibUtil.uuid();\n\n protected ordenacoesSignal = signal<IOrdenacao[]>([]);\n protected paginacaoSignal = signal<IPaginacao>({\n paginaAtual: 1,\n totalItens: 0,\n totalAgrupado: 0,\n });\n\n protected cfg = computed(() => {\n const c = this.config();\n return {\n ...GRID_CONFIG_DEFAULTS,\n ...c,\n actionsTopConfig: { ...GRID_CONFIG_DEFAULTS.actionsTopConfig, ...c.actionsTopConfig } as IGridBaseActions,\n actionsLineConfig: { ...GRID_CONFIG_DEFAULTS.actionsLineConfig, ...c.actionsLineConfig } as IActionsLineConfig,\n } as typeof GRID_CONFIG_DEFAULTS & IGridConfig<any>;\n });\n\n startSelected = computed(() => {\n const ss = this.config().startSelected;\n if (!ss || ss.length === 0) return null;\n return ss.map(s => s?.toString() ?? '');\n }, {\n equal: (a, b) => {\n if (a === null && b === null) return true;\n if (a === null || b === null) return false;\n if (a.length !== b.length) return false;\n return a.every((v, i) => v === b[i]);\n }\n });\n\n constructor() {\n effect(() => {\n this.iniciarSelectedRows(this.lista());\n });\n effect(() => {\n const totalItens = this.listaOrdenada().length;\n const totalAgrupado = this.listaAgrupada().length;\n this.paginacaoSignal.update(pag => ({ ...pag, totalItens, totalAgrupado }));\n });\n effect(() => {\n const agrupada = this.listaAgrupada();\n const isAgrupado = this.isAgrupado();\n if (this.gruposEncontrados.itens.size > 1) {\n this.isAgrupado.set(true);\n } else {\n this.isAgrupado.set(false);\n }\n });\n effect(() => {\n const _ = this.filtro();\n this.irParaPagina(1);\n });\n effect(() => {\n const el = this.filterContainer()?.nativeElement as HTMLElement;\n if (!el) return;\n const resizeObserver = new ResizeObserver((entries) => {\n for (let entry of entries) {\n if (entry.target === el) {\n this.filterHeight.set(entry.contentRect.height);\n }\n }\n });\n resizeObserver.observe(el);\n return () => resizeObserver.disconnect();\n });\n effect(() => {\n let listaExibindo = this.listaExibir();\n\n let numeroPrimeiro = listaExibindo?.reduce((min, item) => Math.min(min, item.ordem ?? Infinity), Infinity);\n let numeroUltimo = listaExibindo?.reduce((max, item) => Math.max(max, item.ordem ?? -Infinity), -Infinity);\n if (numeroPrimeiro == Infinity) numeroPrimeiro = 0;\n if (numeroUltimo == -Infinity) numeroUltimo = 0;\n this.numOrdemPrimeiroExibido.set(numeroPrimeiro);\n this.numOrdemUltimoExibido.set(numeroUltimo);\n });\n }\n\n paginationSize = model<number | undefined>(10);\n paginationComputedSize = computed<number>(() => {\n return this.paginationSize() ?? 10;\n });\n\n ngOnInit() {\n window.addEventListener('resize', this._resizeListener);\n this.filtroCollapsed.set(this.cfg().filterBarStartCollapsed);\n this.hasVerticalLine.set(this.cfg().hasVerticalLine);\n this.hasSeletor.set(this.cfg().hasSeletor);\n this.hasGrid.set(this.cfg().hasGrid);\n this.isCompacted.set(this.cfg().isCompacted);\n this.minLineHeight.set(this.cfg().minLineHeight);\n this.pageSizeOptions.set(this.cfg().paginations);\n this.paginationSize.set(this.cfg().paginationSize);\n\n this.definirColunas();\n this.atualizarColunas();\n }\n\n ngOnDestroy(): void {\n window.removeEventListener('resize', this._resizeListener);\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.calcularAltura();\n this.calcularColunasExibir();\n this.observerResize();\n }, 0);\n }\n\n iniciarSelectedRows(lista: any[] | undefined) {\n const startSelected = this.startSelected();\n\n // startSelected não configurado: não interferir nas seleções existentes\n if (startSelected === null) {\n if (!lista) this.clearSelections();\n return;\n }\n\n if (!lista) { this.clearSelections(); return; }\n\n const startSelectedAsStrings = startSelected.map(v => v?.toString() ?? '');\n\n let idSelecionados = lista\n .map(item => LibUtil.getV(this.cfg().primarykey, item)?.toString() ?? '')\n .filter(id => id != '')\n .filter(id => startSelectedAsStrings.includes(id));\n\n if (idSelecionados.length === 0) {\n this.todosSelecionados.set(false);\n } else if (lista.length > 0 && idSelecionados.length === lista.length) {\n this.todosSelecionados.set(true);\n } else {\n this.todosSelecionados.set(false);\n }\n\n this.selectedPrimaryKeys.set(idSelecionados);\n }\n\n definirColunas() {\n let colunasInicialConfig = this.cfg().colunas.map((col, index) => {\n return {\n ...col,\n widthNum: col.width ? parseInt(col.width.replaceAll('px', '').replaceAll('auto', '50')) : 50,\n tituloReduzido: col.titulo,\n ordem: index,\n };\n });\n\n let primeiraPropAgrupadaInicial = colunasInicialConfig.find(c => c.iniciaAgrupado)?.prop;\n let colunasAgrupada = colunasInicialConfig.find(c => c.prop === primeiraPropAgrupadaInicial);\n if (colunasAgrupada) {\n this.colAgrupadoAtual.set(colunasAgrupada);\n } else {\n this.colAgrupadoAtual.set(null);\n }\n\n this.colunasDefinidas.set(colunasInicialConfig);\n }\n\n filtrarColunas() {\n let agrupada = this.colAgrupadoAtual();\n let colunasFiltradas = this.colunasDefinidas().filter(c => {\n return (c.visivel !== false) && (agrupada?.prop !== c.prop);\n });\n this.colunasFiltradas.set(colunasFiltradas);\n }\n\n ordenarColunas() {\n this.colunasOrdenadas.set(this.colunasFiltradas().sort((a, b) => a.ordem - b.ordem));\n }\n\n colunasKVDefinidas = computed<IKV[]>(() => {\n return this.colunasDefinidas().map(c => ({ k: LibUtil.classof(c.prop) == 'string' ? c.prop as string : c.prop[0], v: c.titulo }));\n });\n\n outsideMenuActionsTop = computed(() => {\n return this.cfg().actionsTop.filter(a => a.inmenu == false && a.showAction);\n });\n\n menuActionsTop = computed(() => {\n return this.cfg().actionsTop.filter(a => a.inmenu != false && a.showAction);\n });\n\n filterContainer = viewChild('filterContainer', { read: ElementRef });\n\n protected listaOrdenada = computed(() => {\n const listaDefinida = this.lista() ?? [];\n if (LibUtil.classof(listaDefinida) !== 'array') {\n this.config().hasError = true;\n return [];\n }\n let words = this.inputSearchText().trim().split(\" \").filter(t => t != \"\");\n let agrupadaAtual = this.colAgrupadoAtual();\n let propriedadeAgrupada = agrupadaAtual?.prop;\n\n let listaFiltrada = listaDefinida.map((o, i) => {\n let id = LibUtil.getV(this.cfg().primarykey, o)?.toString() ?? String(i);\n\n let dadosDaLinha: IDadosDaLinha = {\n id,\n dados: o,\n inativo: this.cfg().InativeRule(o),\n isSelectionDisabled: this.cfg().SelectionDisabledRule ? this.cfg().SelectionDisabledRule!(o) : false,\n groupName: propriedadeAgrupada ? LibUtil.getV(propriedadeAgrupada, o) : '',\n selecionado: this.selectedPrimaryKeys().includes(id),\n hue: this.cfg().backgroundHue ? this.cfg().backgroundHue?.(o) : undefined,\n actions: this.cfg().actionsLine.map(a => {\n if (a.showAction == true) return { ...a, showAction: a.showLineAction ? a.showLineAction(o) : true };\n else return { ...a, showAction: false };\n }),\n ordem: i + 1,\n }\n dadosDaLinha.hasActionMenu = dadosDaLinha.actions?.some(a => a.showAction == true && a.inmenu == true) ?? false;\n this.maxActionsInLine = Math.max(this.maxActionsInLine, dadosDaLinha.actions?.filter(a => a.showAction == true && a.inmenu == false).length ?? 0);\n return (dadosDaLinha as IDadosDaLinha);\n }).filter(dadosLinha => {\n if (words.length === 0) return true;\n\n for (const w of words) {\n let encontrado = false;\n for (const coluna of this.cfg().colunas) {\n const valorColuna = LibUtil.getV(coluna.prop, dadosLinha.dados);\n if (valorColuna != null && LibUtil.contem(valorColuna, w)) {\n encontrado = true;\n }\n }\n if (!encontrado) return false;\n }\n\n return true;\n });\n\n const ordenacoes = this.ordenacoesSignal();\n if (!ordenacoes.length) return listaFiltrada;\n\n let ordenado = [...listaFiltrada].sort((a, b) => {\n for (const ordenacao of ordenacoes) {\n if (Array.isArray(ordenacao.coluna)) {\n for (const prop of ordenacao.coluna) {\n const resultado = this.compararValores(\n LibUtil.getV(prop, a.dados),\n LibUtil.getV(prop, b.dados),\n ordenacao.direcao\n );\n if (resultado !== 0) return resultado;\n }\n } else {\n const resultado = this.compararValores(\n LibUtil.getV(ordenacao.coluna, a.dados),\n LibUtil.getV(ordenacao.coluna, b.dados),\n ordenacao.direcao\n );\n if (resultado !== 0) return resultado;\n }\n }\n return 0;\n });\n return ordenado.map((item, index) => ({ ...item, ordem: index + 1 }));\n });\n\n protected listaAgrupada = computed(() => {\n const listaOrdenada = this.listaOrdenada();\n\n if (this.isAgrupado() == false) {\n if (this.isAgrupadoLimpo() == false) {\n listaOrdenada.forEach(item => {\n this.gruposEncontrados.itens.add(item.groupName);\n });\n }\n return listaOrdenada;\n }\n\n let listaComGrupos: IDadosDaLinha[] = [];\n let c = 1;\n let colAgrupadaAtual = this.colAgrupadoAtual()?.prop ?? '';\n for (const grupo of Array.from(this.gruposEncontrados.itens)) {\n let firstFound = listaOrdenada.filter(i => i.groupName === grupo)[0];\n let inativo = listaOrdenada.filter(i => i.groupName === grupo).some(i => this.getObjetoInativo(colAgrupadaAtual, i.dados));\n listaComGrupos.push({\n dados: firstFound?.dados,\n inativo: inativo,\n groupName: grupo,\n selecionado: false,\n isGroup: true,\n isFullLine: {\n visible: true,\n colapsed: this.gruposColapsed().includes(grupo),\n colapsedCount: listaOrdenada.filter(i => i.groupName === grupo).length,\n showIco: true,\n },\n isColapsed: false,\n } as IDadosDaLinha);\n\n listaOrdenada.map(item => {\n if (item.groupName === grupo) {\n listaComGrupos.push({\n ...item,\n ordem: c++,\n isColapsed: this.gruposColapsed().includes(grupo)\n });\n }\n });\n };\n\n return listaComGrupos.filter(i => !i.isColapsed);\n });\n\n protected listaExibir = computed(() => {\n const listaOrdenada = this.listaAgrupada();\n\n const paginacao = this.paginacaoSignal();\n const inicio = (paginacao.paginaAtual - 1) * this.paginationComputedSize();\n const fim = inicio + this.paginationComputedSize();\n const listaExibindo = listaOrdenada.slice(inicio, fim);\n return listaExibindo;\n });\n\n numeroPrimeiroItemExibido = computed(() => {\n return (this.paginacaoSignal().paginaAtual - 1) * this.paginationComputedSize() + 1;\n });\n\n numeroUltimoItemExibido = computed(() => {\n const paginacao = this.paginacaoSignal();\n return Math.min(paginacao.paginaAtual * this.paginationComputedSize(), paginacao.totalItens);\n });\n\n onDropColuna(ev: CdkDragDrop<IColunaComLargura[]>) {\n let colunaOrigem = ev.item.data;\n\n let colTarget = (ev.event.target as any).closest('.table-header-text');\n let cellTarget = (ev.event.target as any).closest('.table-item');\n let novaOrdem: number | null = null;\n if (colTarget) {\n novaOrdem = colTarget.getAttribute('ordem')\n }\n if (cellTarget) {\n novaOrdem = cellTarget.getAttribute('ordem')\n }\n\n if (novaOrdem && colunaOrigem) {\n this.colunasOrdenadas.update(cols => {\n const semColuna = cols.filter(c => c.ordem !== colunaOrigem.ordem);\n semColuna.splice(novaOrdem, 0, colunaOrigem);\n return semColuna.map((col, index) => ({ ...col, ordem: index }));\n })\n this.calcularColunasExibir();\n }\n }\n\n getObjetoInativo(nomeColuna: string | string[], linha: any): boolean {\n if (LibUtil.classof(nomeColuna) == \"string\" && (nomeColuna as string).includes(\".\")) {\n const props = (nomeColuna as string).split(\".\");\n const lastObj = LibUtil.getV(props.slice(0, -1).join(\".\"), linha);\n return lastObj?.[PROP_CONTROLE_ATIVO] == false;\n }\n return false;\n }\n\n observerResize() {\n const el = this.eHost?.nativeElement;\n if (!el) return;\n const resizeObserver = new ResizeObserver((entries) => {\n this.calcularColunasExibir();\n });\n resizeObserver.observe(el);\n return () => resizeObserver.disconnect();\n }\n\n calcularColunasExibir() {\n let colunasAExibir = this.colunasOrdenadas().map(c => ({ ...c }));\n\n let compacted = this.isCompacted();\n let wVerticalLine = this.hasVerticalLine() ? (compacted ? 30 : 40) : 0;\n let wSelector = this.hasSeletor() ? (compacted ? 30 : 40) : 0;\n let wActions = this.cfg().showActionsLine ? (compacted ? 42 : 130) : 0;\n let wDisponivel = this.gridSize()?.nativeElement?.offsetWidth - (wVerticalLine + wSelector + wActions);\n\n let totalFixo = (wVerticalLine > 0 ? 1 : 0) + (wSelector > 0 ? 1 : 0) + (wActions > 0 ? 1 : 0);\n let wFixo = wVerticalLine + wSelector + wActions;\n\n while (colunasAExibir.length > 0) {\n let wColunas = colunasAExibir.reduce((a, b) => a + b.widthNum, 0);\n let somado = wFixo + wColunas;\n if (somado <= wDisponivel) break;\n colunasAExibir.pop();\n }\n this.colunasExibir.set(colunasAExibir);\n this.totalColsVisivel.set(colunasAExibir.length + totalFixo);\n\n let wColsCentrais = '';\n for (let col of colunasAExibir) {\n col.width = col.width ?? 'auto';\n wColsCentrais += `${col.width} `;\n }\n\n this.pxVerticalLine.set(wVerticalLine > 0 ? (`${wVerticalLine}px `) : '');\n this.pxSelector.set(wSelector > 0 ? (`${wSelector}px `) : '');\n this.pxActions.set(wActions > 0 ? (`${wActions}px `) : '');\n this.pxColunas.set(wColsCentrais);\n }\n\n calcularAltura() {\n const elementoConteiner = this.filterContainer();\n if (!elementoConteiner) return;\n\n const firstChild = elementoConteiner.nativeElement.firstElementChild;\n if (!firstChild) return;\n\n const height = firstChild.scrollHeight;\n this.filterHeight.set(height);\n }\n\n getState(): any {\n return {\n colunaAgrupadaAtual: this.colAgrupadoAtual(),\n colunas: this.colunasDefinidas() ?? [],\n colunasExibir: this.colunasExibir() ?? [],\n config: this.config(),\n filtros: this.filtro() ?? {},\n gruposColapsed: this.gruposColapsed(),\n gruposEncontrados: this.gruposEncontrados,\n isAgrupado: this.isAgrupado(),\n isAgrupadoLimpo: this.isAgrupadoLimpo(),\n listaExibindo: this.listaExibir(),\n listaOrdenada: this.listaOrdenada(),\n ordenacoes: this.ordenacoesSignal(),\n paginacao: {\n paginas: this.totalPaginas(),\n paginaAtual: this.paginacaoSignal().paginaAtual,\n itensPorPagina: this.paginationComputedSize(),\n },\n startSelected: this.startSelected(),\n selecionados: this.selectedPrimaryKeys(),\n tempoRequisicao: this.cfg().timeRequest,\n totais: {\n totalDefinida: this.lista()?.length ?? 0,\n totalOrdenada: this.listaOrdenada().length,\n totalExibindo: this.listaExibir().length,\n },\n ultimaAcao: this.config().lastGridEventAPI,\n };\n }\n\n protected totalPaginas = computed(() => {\n const paginacao = this.paginacaoSignal();\n return Math.ceil(paginacao.totalAgrupado / this.paginationComputedSize());\n });\n\n protected alternarOrdenacao(coluna: string | string[]): void {\n const ordenacoes = this.ordenacoesSignal();\n const index = ordenacoes.findIndex(o => o.coluna === coluna);\n\n if (index >= 0) {\n const novaDirecao = ordenacoes[index].direcao === 'asc' ? 'desc' : 'asc';\n if (novaDirecao == \"asc\") {\n const novasOrdenacoes = [...ordenacoes.filter(o => o.coluna != coluna)];\n this.ordenacoesSignal.set(novasOrdenacoes);\n } else {\n const novasOrdenacoes = [...ordenacoes];\n novasOrdenacoes[index] = { coluna, direcao: novaDirecao };\n this.ordenacoesSignal.set(novasOrdenacoes);\n }\n } else {\n this.ordenacoesSignal.set([...ordenacoes, { coluna, direcao: 'asc' }]);\n }\n }\n\n protected obterDirecaoOrdenacao(coluna: string | string[]): 'asc' | 'desc' | null {\n const ordenacao = this.ordenacoesSignal().find(o => o.coluna === coluna);\n return ordenacao ? ordenacao.direcao : null;\n }\n\n protected irParaPagina(pagina: number): void {\n if (pagina >= 1 && pagina <= this.totalPaginas()) {\n this.paginacaoSignal.update(pag => ({ ...pag, paginaAtual: pagina }));\n }\n }\n\n protected proximaPagina(): void {\n const atual = this.paginacaoSignal().paginaAtual;\n this.irParaPagina(atual + 1);\n }\n\n protected paginaAnterior(): void {\n const atual = this.paginacaoSignal().paginaAtual;\n this.irParaPagina(atual - 1);\n }\n\n public limparOrdenacao(): void {\n this.ordenacoesSignal.set([]);\n }\n\n async onOrdenarPor(coluna: IColunaComLargura | null) {\n if (!coluna) return;\n if (coluna.ordem == null) return;\n this.alternarOrdenacao(coluna.prop);\n }\n\n getColDisplay(nomeCampo: string | string[]): string {\n return this.colunasDefinidas()?.find(o => o.prop == nomeCampo)?.titulo ?? '???';\n }\n\n protected getOrdenacaoTexto(): string {\n const ordenacoes = this.ordenacoesSignal();\n if (!ordenacoes.length) return '';\n return ordenacoes.map(o => `${this.getColDisplay(o.coluna)} (${o.direcao})`).join(', ');\n }\n\n protected onClickClearInfo() {\n this.limparOrdenacao();\n }\n\n protected atualizarColunas() {\n this.filtrarColunas();\n this.ordenarColunas();\n this.calcularColunasExibir();\n }\n\n protected onClickCellAction(evento: IActionClickEvent) {\n if (evento.action?.action) {\n evento.action.action(this._getGridEvent(evento.action, evento.dadosDaLinha?.dados));\n }\n }\n\n protected onClickAction(action?: IGridConfigActions, linha?: any) {\n if (action?.action) {\n return action.action(this._getGridEvent(action, linha));\n }\n return;\n }\n\n private _getGridEvent(action: IGridConfigActions, linha?: any): IGridEventAPI<any> {\n let pk = this.cfg().primarykey;\n let id = undefined;\n if (pk != null && linha != null) {\n id = linha[pk];\n }\n let evento: IGridEventAPI<any> = { id, linha, action }\n this.config().lastGridEventAPI = evento;\n return evento;\n }\n\n private compararValores(a: any, b: any, direcao: 'asc' | 'desc'): number {\n let resultado = 0;\n\n if (a === null || a === undefined) a = '';\n if (b === null || b === undefined) b = '';\n\n if (typeof a === 'number' && typeof b === 'number') {\n resultado = a - b;\n } else if (a instanceof Date && b instanceof Date) {\n resultado = a.getTime() - b.getTime();\n } else {\n resultado = String(a).localeCompare(String(b));\n }\n\n return direcao === 'asc' ? resultado : -resultado;\n }\n\n protected onClickGridMenu(action?: IGridConfigActions) {\n if (action?.action) {\n return action.action(this._getGridEvent(action));\n }\n }\n\n protected onInputSearch(text: string): void {\n this.inputSearchText.set(text);\n }\n\n protected onClickOpenCloseFilterZone(): void {\n this.filtroCollapsed.update(v => !v);\n }\n\n async onChangeTodosSelecionados(todosSelecionados: boolean) {\n this.isSelectingAll.set(true);\n let listaOrdenada = this.listaOrdenada();\n\n if (!todosSelecionados) {\n for (const linha of listaOrdenada) {\n if (this.selectedPrimaryKeys().includes(linha.id)) {\n await this.desselecionarLinha(linha.id, linha.dados);\n }\n }\n } else {\n for (const linha of listaOrdenada) {\n await this.selecionarLinha(linha.id, linha.dados);\n }\n }\n\n await LibUtil.wait(100);\n this.isSelectingAll.set(false);\n }\n\n async onClickRow(linha: IDadosDaLinha) {\n if (!linha) return;\n if (!linha.dados) return;\n\n if (this.selectedPrimaryKeys().includes(linha.id)) {\n await this.desselecionarLinha(linha.id, linha.dados);\n } else {\n await this.selecionarLinha(linha.id, linha.dados);\n }\n }\n\n clearSelections() {\n this.selectedPrimaryKeys.set([]);\n }\n\n async selecionarLinha(id: string, dados?: any) {\n if (this.selectedPrimaryKeys().includes(id)) return;\n\n if (this.cfg().selectionMode == 'single') {\n this.selectedPrimaryKeys.set([id])\n } else {\n this.selectedPrimaryKeys.set([...this.selectedPrimaryKeys(), id]);\n }\n await this.cfg().onSelected?.(dados, this.selectedPrimaryKeys());\n await this.cfg().onSelectionChanged?.(dados, this.selectedPrimaryKeys());\n }\n\n async desselecionarLinha(id: string, dados?: any) {\n if (!this.selectedPrimaryKeys().includes(id)) return;\n\n if (this.cfg().selectionMode == 'single') {\n this.selectedPrimaryKeys.set([]);\n } else {\n this.selectedPrimaryKeys.set(this.selectedPrimaryKeys().filter(i => i !== id));\n }\n await this.cfg().onUnselected?.(dados, this.selectedPrimaryKeys());\n await this.cfg().onSelectionChanged?.(dados, this.selectedPrimaryKeys());\n }\n\n onClickGroup(dadosDaLinha: IDadosDaLinha) {\n this.gruposColapsed.update(g => {\n if (g.includes(dadosDaLinha.groupName)) {\n return g.filter(grupo => grupo != dadosDaLinha.groupName);\n } else {\n return [...g, dadosDaLinha.groupName];\n }\n });\n }\n\n onRecolherGroups() {\n this.gruposColapsed.set(Array.from(this.gruposEncontrados.itens));\n }\n\n onExpandirGroups() {\n this.gruposColapsed.set([]);\n }\n\n async onAgruparPor(coluna: IColunaComLargura | null) {\n this.colAgrupadoAtual.set(null);\n this.gruposEncontrados.itens.clear();\n this.isAgrupadoLimpo.set(false);\n\n this.colAgrupadoAtual.set(coluna);\n this.atualizarColunas();\n }\n\n async onChangedAgrupamento(event: IOptionValue) {\n let propAgrupamento = event.optionChanged?.k;\n let colAgrupada = this.colunasDefinidas().find(c => c.prop === propAgrupamento) ?? null;\n this.onAgruparPor(colAgrupada)\n }\n\n protected onClearGroups() {\n this.isAgrupadoLimpo.set(true);\n this.gruposEncontrados.itens.clear();\n this.isAgrupado.set(false);\n this.colAgrupadoAtual.set(null);\n this.atualizarColunas();\n }\n\n onChangeLineNumber() {\n this.hasVerticalLine.update(v => !v);\n this.calcularColunasExibir();\n }\n\n onChangeSeletor() {\n this.hasSeletor.update(v => !v);\n this.calcularColunasExibir();\n }\n\n onChangeCompacted() {\n this.isCompacted.update(v => !v);\n }\n\n onChangeHasGrid() {\n this.hasGrid.update(v => !v);\n }\n\n onResizeStart(event: MouseEvent, coluna: IColunaComLargura) {\n this.colMovingX = event.clientX;\n event.preventDefault();\n let eColuna = (event.target as HTMLElement).closest('.table-header') as HTMLElement;\n let computedWidth = parseInt(window.getComputedStyle(eColuna).width.replaceAll('px', ''), 10);\n\n const onMouseMove = (moveEvent: MouseEvent) => {\n const delta = moveEvent.clientX - this.colMovingX;\n let widthNum = Math.max(30, (computedWidth + delta));\n this.colunasOrdenadas.update(cols => {\n return cols.map(c => {\n if (c.ordem === coluna.ordem) {\n return { ...c, widthNum, width: `${widthNum}px` };\n }\n return c;\n });\n });\n };\n\n const onMouseUp = () => {\n this.calcularColunasExibir();\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n };\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n }\n\n onDoubleClickControls(event: Event, coluna: IColunaComLargura) {\n let getColunaDefinina = this.colunasDefinidas().find(c => c.ordem === coluna.ordem);\n let getWidth = getColunaDefinina?.width ? getColunaDefinina.width : 'auto';\n this.colunasOrdenadas.update(cols => {\n return cols.map(c => {\n if (c.ordem === coluna.ordem) {\n return { ...c, width: getWidth };\n }\n return c;\n });\n });\n this.calcularColunasExibir();\n }\n\n onClickOpcoesListagem() {\n console.log('Listagem', this);\n console.log('CFG', this.cfg());\n console.log('Config Inputado', this.config());\n console.log('Lista', this.lista());\n console.log('Filtro', this.filtro());\n this.getState();\n }\n}\n\n","<lib-grid-filter-bar [config]=\"cfg()\" [colunasDefinidas]=\"$any(colunasDefinidas())\"\n\t[colAgrupadoAtual]=\"colAgrupadoAtual()\" [isAgrupado]=\"isAgrupado()\" [filterCollapsed]=\"filtroCollapsed()\"\n\t(searchInput)=\"onInputSearch($event)\" (filterToggle)=\"onClickOpenCloseFilterZone()\"\n\t(actionTriggered)=\"onClickAction($event)\" (groupByColumn)=\"onAgruparPor($any($event))\" (clearGroups)=\"onClearGroups()\"\n\t(collapseGroups)=\"onRecolherGroups()\" (expandGroups)=\"onExpandirGroups()\"\n\t(clickOpcoesListagem)=\"onClickOpcoesListagem()\">\n</lib-grid-filter-bar>\n\n@if(cfg().showFilterBar) {\n<div class=\"table-filter-container table-styles\" [style.--filter-height.px]=\"filterHeight()\">\n\t<div #filterContainer class=\"table-filter-content\" [class.table-filter-hide]=\"filtroCollapsed()\">\n\t\t<ng-content></ng-content>\n\t</div>\n</div>\n}\n\n@if(currentDevice() == \"Mobile\"){\n<!-- MOBILE INICIO -->\n\n@for (dadosLinha of listaExibir(); track $index;let i = $index) {\n@if( dadosLinha.isColapsed !== true){\n\n@if(dadosLinha.isFullLine?.visible){\n<!-- MOBILE GRUPO LINHA PRÓPRIA -->\n<div class=\"table-row-mobile table-formated table-group table-styles\" (click)=\"onClickGroup(dadosLinha)\">\n\t<div>{{ dadosLinha.groupName }}</div>\n\t<div class=\"table-group-items-area\" [class.table-group-collapse]=\"dadosLinha.isFullLine.colapsed === true\">\n\t\t{{ dadosLinha.isFullLine.colapsedCount ?? 0 }} item(s)\n\t\t<div class=\"table-group-items-ico\">\n\t\t\t<ui-icon name=\"caret-down\"></ui-icon>\n\t\t</div>\n\t</div>\n</div>\n} @else {\n\n<div class=\"table-overflow mobile\" [style.--table-min-height]=\"isCompacted() ? '20px' : minLineHeight()\">\n\t<div class=\"table-table-mobile\" [class.selected]=\"dadosLinha.selecionado\">\n\n\t\t<!-- MOBILE DADOS -->\n\t\t@if(cfg().showActionsLine){\n\t\t<div class=\"table-header-mobile\" [style.gridArea]=\"'auto / auto / auto / span 2'\">\n\t\t\t@if(hasVerticalLine()){\n\t\t\t<!-- MOBILE VERTICAL DIV -->\n\t\t\t<div class=\"table-header-mobile table-formated table-vertical-line\" (click)=\"onClickRow(dadosLinha)\">\n\t\t\t\t{{ dadosLinha.ordem }}\n\t\t\t</div>\n\t\t\t}\n\t\t\t@if(hasSeletor()){\n\t\t\t<!-- MOBILE SELECTOR DIV -->\n\t\t\t<div class=\"table-header-mobile table-formated table-item-seletor\" (click)=\"onClickRow(dadosLinha)\">\n\t\t\t\t<ui-check-box [(value)]=\"dadosLinha.selecionado\" [style.--ui-color]=\"'var(--sys-on-primary)'\"\n\t\t\t\t\t[style.--ui-outline]=\"'var(--sys-on-primary)'\" [single]=\"this.cfg().selectionMode == 'single'\"\n\t\t\t\t\t[style.--ui-size]=\"isCompacted() ? '15px' : undefined\"></ui-check-box>\n\t\t\t</div>\n\t\t\t}\n\t\t\t<div class=\"table-header-mobile-space\" (click)=\"onClickRow(dadosLinha)\"></div>\n\t\t\t<lib-grid-cell-actions [config]=\"cfg()\" [dadosDaLinha]=\"dadosLinha\" [mobileHeader]=\"true\"\n\t\t\t\t(action)=\"onClickCellAction($event)\" [compact]=\"isCompacted()\"></lib-grid-cell-actions>\n\t\t</div>\n\t\t}\n\n\t\t<!-- MOBILE LINHA -->\n\t\t@for (localColuna of colunasOrdenadas(); track $index;) {\n\t\t<div class=\"table-header-mobile\" [class.sortable]=\"localColuna.sortable !== false\"\n\t\t\t[class.sorted-asc]=\"obterDirecaoOrdenacao(localColuna.prop) === 'asc'\"\n\t\t\t[class.sorted-desc]=\"obterDirecaoOrdenacao(localColuna.prop) === 'desc'\"\n\t\t\t(click)=\"localColuna.sortable !== false && alternarOrdenacao(localColuna.prop)\" [style]=\"localColuna.styleHeader\">\n\t\t\t<div class=\"table-header-mobile-text\" [title]=\"localColuna.titulo\"\n\t\t\t\t[innerHTML]=\"localColuna.tituloReduzido ?? localColuna.titulo\">\n\t\t\t</div>\n\t\t\t<div class=\"table-header-controls\">\n\t\t\t\t@if (localColuna.sortable !== false) {\n\t\t\t\t<span class=\"table-ico-sort\">\n\t\t\t\t\t@if (obterDirecaoOrdenacao(localColuna.prop) === 'asc') {\n\t\t\t\t\t<ui-icon name=\"sort-up\" class=\"asc\"></ui-icon>\n\t\t\t\t\t} @else if (obterDirecaoOrdenacao(localColuna.prop) === 'desc') {\n\t\t\t\t\t<ui-icon name=\"sort-down\" class=\"desc\"></ui-icon>\n\t\t\t\t\t}\n\t\t\t\t</span>\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t\t<lib-grid-cell-handler class=\"table-item-mobile table-formated\" [class.odd]=\"i % 2 !== 0\" [class.even]=\"i % 2 === 0\"\n\t\t\t[linha]=\"dadosLinha.dados\" [localColuna]=\"localColuna\" [lista]=\"lista()!\" [config]=\"cfg()\"\n\t\t\t[localColunas]=\"colunasOrdenadas()\" [inputSearchText]=\"inputSearchText()\"></lib-grid-cell-handler>\n\t\t}\n\t</div>\n</div>\n}\n}\n} @empty {\n<!-- LINHA DE SEM DADOS -->\n<div class=\"table-styles\"><lib-grid-empty-list></lib-grid-empty-list></div>\n}\n<!-- MOBILE FIM -->\n\n\n} @else {\n<!-- DESKTOP INICIO -->\n<div #gridSize class=\"table-overflow\" [class.compacted]=\"isCompacted()\"\n\t[style.--table-min-height]=\"isCompacted() ? '40px' : minLineHeight()\">\n\t<div class=\"table-table\" [class.table-has-vertical-line]=\"hasVerticalLine()\" [class.table-has-seletor]=\"hasSeletor()\"\n\t\tcdkDropList (cdkDropListDropped)=\"onDropColuna($event)\" [cdkDropListData]=\"colunasExibir()\"\n\t\t[style.gridTemplateColumns]=\"`${this.pxVerticalLine()}${this.pxSelector()}` + this.pxColunas() + this.pxActions()\">\n\t\t<!-- DESKTOP HEADER -->\n\t\t<lib-grid-header-row [colunas]=\"colunasExibir()\" [ordenacoes]=\"ordenacoesSignal()\"\n\t\t\t[todosSelecionados]=\"todosSelecionados()\" [config]=\"cfg()\" [hasSeletor]=\"hasSeletor()\"\n\t\t\t[hasVerticalLine]=\"hasVerticalLine()\" [hasGrid]=\"hasGrid()\" [isCompacted]=\"isCompacted()\"\n\t\t\t[isSelectingAll]=\"isSelectingAll()\" (columnSort)=\"alternarOrdenacao($event)\"\n\t\t\t(selectAll)=\"onChangeTodosSelecionados($event)\"\n\t\t\t(columnResizeStart)=\"onResizeStart($event.event, $any($event.coluna))\"\n\t\t\t(columnResizeDoubleClick)=\"onDoubleClickControls($event.event, $any($event.coluna))\">\n\t\t</lib-grid-header-row>\n\n\t\t<!-- DESKTOP LINHAS DE DADOS -->\n\t\t@for (dadosLinha of listaExibir(); track $index; let i = $index) {@if( dadosLinha.isColapsed !== true){\n\n\t\t@if(dadosLinha.isFullLine?.visible){\n\n\t\t<!-- DESKTOP FULL LINE (COLSPAN HORIZONTAL) -->\n\t\t@if(hasVerticalLine()){\n\t\t<!-- DESKTOP HEADER VERTICAL FULL LINE -->\n\t\t<div class=\"table-header table-formated table-vertical-line\">\n\t\t\t{{ dadosLinha.ordem }}\n\t\t</div>\n\t\t}\n\t\t<!-- DESKTOP GRUPO: ROW -->\n\t\t@if(dadosLinha.isGroup){\n\n\t\t<div class=\"table-row table-formated table-group table-border-bottom-card\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\t<div class=\"table-group-name\" [class.table-inativo]=\"dadosLinha.inativo\">\n\t\t\t\t<lib-grid-cell-handler class=\"table-item table-dados {{ colAgrupadoAtual()?.classeCell }}\"\n\t\t\t\t\t[linha]=\"dadosLinha.dados\" [localColuna]=\"colAgrupadoAtual()!\" [lista]=\"lista()!\" [config]=\"cfg()\"\n\t\t\t\t\t[localColunas]=\"colunasDefinidas()\" [inputSearchText]=\"inputSearchText()\"></lib-grid-cell-handler>\n\t\t\t</div>\n\t\t\t<ui-button tipo=\"nofill\" (click)=\"onClickGroup(dadosLinha)\">\n\t\t\t\t<div class=\"table-group-items-area\" [class.table-group-collapse]=\"dadosLinha.isFullLine.colapsed === true\">\n\t\t\t\t\t{{ dadosLinha.isFullLine.colapsedCount ?? 0 }} item(s)\n\t\t\t\t\t<div class=\"table-group-items-ico\">\n\t\t\t\t\t\t<ui-icon [name]=\"dadosLinha.isFullLine.colapsed ? 'caret-down-fill' : 'caret-down'\"></ui-icon>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</ui-button>\n\t\t</div>\n\n\t\t} @else {\n\t\t<div class=\"table-row table-formated table-others\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\tNada a exibir nesta linha\n\t\t</div>\n\t\t}\n\n\t\t} @else {\n\n\t\t<!-- LINHA NORMAL via GridRowRenderer -->\n\t\t<lib-grid-row-renderer [dadosLinha]=\"dadosLinha\" [config]=\"cfg()\" [colunas]=\"colunasExibir()\"\n\t\t\t[colunasOrdenadas]=\"colunasOrdenadas()\" [lista]=\"lista()!\" [inputSearchText]=\"inputSearchText()\"\n\t\t\t[hasSeletor]=\"hasSeletor()\" [hasVerticalLine]=\"hasVerticalLine()\" [isCompacted]=\"isCompacted()\"\n\t\t\t[hasGrid]=\"hasGrid()\" [rowIndex]=\"i\" (actionTriggered)=\"onClickCellAction($event)\"\n\t\t\t(rowClicked)=\"onClickRow($event)\" [lastRow]=\"$last\">\n\t\t</lib-grid-row-renderer>\n\n\t\t}}\n\n\t\t<!-- POSSIBILIDADES SEM DADOS -->\n\t\t} @empty {\n\n\t\t<!-- ERRO -->\n\t\t@if(cfg().hasError) {\n\t\t<div class=\"table-row table-formated table-errors\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\t<ng-content select=\"[mkGridError]\"></ng-content>\n\t\t</div>\n\n\t\t<!-- LOADING -->\n\t\t} @else if(!cfg().isLoaded) {\n\t\t<div class=\"table-row table-row-centered\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\t<ng-content select=\"[mkGridLoading]\">\n\t\t\t\t<lib-grid-loading></lib-grid-loading>\n\t\t\t</ng-content>\n\t\t</div>\n\n\t\t} @else {\n\n\t\t<div class=\"table-row table-row-centered\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\t<ng-content select=\"[mkGridEmpty]\">\n\t\t\t\t<lib-grid-empty-list></lib-grid-empty-list>\n\t\t\t</ng-content>\n\t\t</div>\n\t\t}\n\n\t\t}\n\n\t\t<!-- FIM DA LINHA NORMAL -->\n\n\n\t</div>\n</div>\n<!-- DESKTOP FIM -->\n}\n\n\n@if(cfg().showPagination){\n<lib-grid-pagination [paginacao]=\"paginacaoSignal()\" [totalPaginas]=\"totalPaginas()\"\n\t[performance]=\"cfg().timeRequest ?? ''\" [pageSizeOptions]=\"pageSizeOptions()\" [(paginationSize)]=\"paginationSize\"\n\t(pageChange)=\"irParaPagina($event)\">\n</lib-grid-pagination>\n}\n\n\n\n\n@if(cfg().showInfoBar){\n<!-- Informações de Ordenação -->\n@if (ordenacoesSignal().length > 0) {\n<div class=\"table-info-row table-styles\">\n\t@if (ordenacoesSignal().length > 0) {\n\t<div>Ordenado por: {{ getOrdenacaoTexto() }}</div>\n\t}\n\t<div class=\"f-1\"></div>\n\t<ui-button tipo=\"outlined\" tema=\"primary\" (click)=\"onClickClearInfo()\" iconeNome=\"x-lg\"></ui-button>\n</div>\n}\n<!-- Informações de Agrupamento -->\n@if (this.isAgrupado()) {\n<div class=\"table-info-row table-styles\">\n\t<ui-icon name=\"object-group\"></ui-icon>\n\t<div class=\"flex flex-wrap gap-1 f-t-b\">\n\t\tAgrupado por {{ colAgrupadoAtual()?.titulo }} (há {{ gruposEncontrados.itens.size }} grupos)\n\t\t<div class=\"campoSemForm\">\n\t\t\t<ui-select [value]=\"colAgrupadoAtual()?.prop\" [options]=\"this.colunasKVDefinidas()\"\n\t\t\t\t(changed)=\"onChangedAgrupamento($event)\"></ui-select>\n\t\t</div>\n\n\t</div>\n\t<div class=\"f-1\"></div>\n\t<ui-button tipo=\"nofill\" tema=\"primary\" (click)=\"onRecolherGroups()\" iconeNome=\"arrows-collapse\"\n\t\ttitle=\"Recolher Todos\"></ui-button>\n\t<ui-button tipo=\"nofill\" tema=\"primary\" (click)=\"onExpandirGroups()\" iconeNome=\"arrows-expand\"\n\t\ttitle=\"Expandir Todos\"></ui-button>\n\t<ui-button tipo=\"outlined\" tema=\"primary\" (click)=\"onClearGroups()\" iconeNome=\"object-ungroup\"\n\t\ttitle=\"Desagrupar\"></ui-button>\n</div>\n}\n}\n\n\n@if(devMode){\n<!-- MODO DESENVOLVIMENTO -->\n<div class=\"table-info-row table-styles\">\n\t<ui-icon name=\"microscope\"></ui-icon>\n\t<div>Funções extras</div>\n\t<div class=\"f-1\"></div>\n\t<ui-button tipo=\"icon\" tema=\"primary\" [ativo]=\"hasGrid()\" (click)=\"onChangeHasGrid()\" iconeNome=\"grid-3x3\"\n\t\ttitle=\"Grid\"></ui-button>\n\t<ui-button tipo=\"icon\" tema=\"primary\" [ativo]=\"isCompacted()\" (click)=\"onChangeCompacted()\"\n\t\ticoneNome=\"arrows-to-circle\" title=\"Compactar\"></ui-button>\n\t<ui-button tipo=\"icon\" tema=\"primary\" [ativo]=\"hasVerticalLine()\" (click)=\"onChangeLineNumber()\"\n\t\ticoneNome=\"layout-sidebar\" title=\"Linha Vertical\"></ui-button>\n\t<ui-button tipo=\"icon\" tema=\"primary\" [ativo]=\"hasSeletor()\" (click)=\"onChangeSeletor()\" iconeNome=\"check-double\"\n\t\ttitle=\"Seletor\"></ui-button>\n</div>\n}","import { Component, effect, Inject, Optional, signal, WritableSignal } from '@angular/core';\nimport { GRID_PARAMS_TOKEN, IGridParam, IMkCellService } from '../mk-grid.types';\n\n@Component({\n selector: 'lib-grid-cell',\n template: '',\n})\nexport class GridCell {\n\n protected params: WritableSignal<IGridParam<any> | undefined>;\n _masterCellService?: IMkCellService;\n\n constructor(\n @Optional() @Inject(GRID_PARAMS_TOKEN) inputToken: IGridParam<any> | null,\n @Optional() @Inject('GRID_PARAMS') legacyInput: IGridParam<any> | null\n ) {\n const input = inputToken ?? legacyInput ?? undefined;\n this.params = signal<IGridParam<any> | undefined>(input);\n this._masterCellService = input?.servicoParams;\n if (this._masterCellService) {\n effect(() => { this.params.set(this._masterCellService?.gridParams() ?? input) });\n }\n }\n}\n","// Exportar primeiro os tipos\nexport type {\n\tIKV, IKV_ext, IFileMetadata, ITipoBotao, ITiposTema,\n\tIDropZoneEvent, IDropType, IDropOutput, IUiProgressMode,\n\tIBreadcrumbItem, IStepperStep, ITreeNode, ITimelineItem,\n\tIToastConfig, IToastTipo, IModalConfig, IModalAcao, IModalTamanho,\n} from './interfaces/interfaces';\n\n// Tipos mais específicos, enuns, interfaces e funções uteis.\nexport * from './util/util';\nexport * from './fields/Formulario/Formulario';\n\n// Exportar as base\nexport * from './fields/Base/BaseFieldsValues/BaseFieldsValues';\nexport * from './fields/Base/BaseFieldsForm/BaseFieldsForm.component';\n\n// Exportar componentes individuais (elementos)\nexport * from './elements/ui-button/ui-button';\nexport * from './elements/ui-chip/ui-chip';\nexport * from './elements/ui-drop-zone/ui-drop-zone';\nexport * from './elements/ui-file-list/ui-file-list';\nexport * from './elements/ui-micro-gallery/ui-file-preview/ui-file-preview';\nexport * from './elements/ui-micro-gallery/ui-micro-gallery';\nexport * from './elements/ui-arquivos/ui-arquivos';\nexport * from './elements/ui-select/ui-select';\nexport * from './elements/ui-procurar/ui-procurar';\nexport * from './elements/ui-progress/ui-progress';\nexport * from './elements/ui-slide/ui-slide';\nexport * from './elements/ui-check-box/ui-check-box';\nexport * from './elements/ui-list-errors/ui-list-errors';\nexport * from './elements/ui-loading/ui-loading';\nexport * from './elements/ui-menu/ui-menu';\nexport * from './elements/ui-divider/ui-divider';\nexport * from './elements/ui-badge/ui-badge';\nexport * from './elements/ui-card/ui-card';\nexport * from './elements/ui-avatar/ui-avatar';\nexport * from './elements/ui-tag/ui-tag';\nexport * from './elements/ui-empty-state/ui-empty-state';\nexport * from './elements/ui-tabs/ui-tabs';\nexport * from './elements/ui-accordion/ui-accordion';\nexport * from './elements/ui-accordion/ui-accordion-item/ui-accordion-item';\nexport * from './elements/ui-breadcrumb/ui-breadcrumb';\nexport * from './elements/ui-stepper/ui-stepper';\nexport * from './elements/ui-pagination/ui-pagination';\nexport * from './elements/ui-tooltip/ui-tooltip';\nexport * from './elements/ui-toast/ui-toast.service';\nexport * from './elements/ui-toast/ui-toast-container';\nexport * from './elements/ui-modal/ui-modal.service';\nexport * from './elements/ui-modal/ui-modal-outlet';\nexport * from './elements/ui-drawer/ui-drawer';\nexport * from './elements/ui-rating/ui-rating';\nexport * from './elements/ui-tree/ui-tree';\nexport * from './elements/ui-timeline/ui-timeline';\n\n\n\n// Os componente de campo não são exportados. Utilize FormAction, ou similar, com os campos pré configurados.\n\n// Exportar componentes de formulário\nexport * from './fields/Formulario/form-filter/form-filter';\nexport * from './fields/Formulario/form-action/form-action';\nexport * from './fields/Formulario/form-no-action/form-no-action';\nexport * from './fields/Formulario/formated-values/formated-values';\nexport * from './fields/Formulario/single-values/single-values';\n\n// Exportar generic por último (depende de todos os outros)\nexport * from './fields/generic/generic';\n\n\n// GRID (exportar por último por depender de outros componentes)\nexport * from './mk-grid/mk-grid.types';\nexport * from './mk-grid/mk-grid';\nexport * from './mk-grid/grid-cell/grid-cell'; // Permite extender classe com signal de params","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["PROP_CONTROLE_ATIVO"],"mappings":";;;;;;;;;;;AACA;AACA;AACA;AACA;AAEA,IAAI,QAAQ,GAAG,CAAC;AAET,MAAM,WAAW,GAAG,CAAC,KAAa,KAAI;IAC5C,QAAQ,GAAG,KAAK;AACjB,CAAC;AAEM,MAAM,GAAG,GAAG,CAAC,KAAa,EAAE,GAAG,IAAS,KAAI;IAClD,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,KAAK,EAAE;AAC7B,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAC5B;AACD,CAAC;AAED;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEO,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,GAAG,IAAS,KAAI;IACtD,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,KAAK,EAAE;AAC7B,QAAA,OAAO,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;IACvC;AACD,CAAC;AAEM,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,GAAG,IAAS,KAAI;IAC3D,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,KAAK,EAAE;AAC7B,QAAA,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAC9B;AACD,CAAC;AAEM,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,GAAG,IAAS,KAAI;IACpD,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,KAAK,EAAE;AAC7B,QAAA,OAAO,OAAO,CAAC,QAAQ,EAAE;IAC1B;AACD,CAAC;AAED;AACO,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,GAAG,IAAS,KAAI;AAClE,IAAA,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;AACrB,IAAA,GAAG,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC;IACnB,KAAK,CAAC,KAAK,CAAC;AACb,CAAC;;MCjDY,OAAO,CAAA;AAElB,IAAA,OAAO,WAAW,GAAkC,EAAE;AAEtD,IAAA,OAAO,OAAO,GAAG,CAAC,CAAM,KAAc;QACpC,IAAI,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AAC7E,QAAA,IAAI,UAAU,IAAI,QAAQ,EAAE;AAC1B,YAAA,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,KAAK,EAAE;gBACzB,UAAU,GAAG,KAAK;YACpB;QACF;AACA,QAAA,OAAO,UAAsB;AAC/B,IAAA,CAAC;AAED,IAAA,OAAO,IAAI,GAAG,CAAC,EAAU,KAAI;;AAE3B,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5C,IAAA,CAAC;AAED,IAAA,OAAO,MAAM,GAAG,CAAC,CAAM,KAAI;;;QAGzB,IAAI,MAAM,GAAG,IAAI;AACjB,QAAA,IAAI;YACF,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACnC,IAAI,WAAW,IAAI,IAAI;AAAE,gBAAA,OAAO,IAAI;YACpC,IAAI,WAAW,IAAI,EAAE;AAAE,gBAAA,OAAO,EAAE;AAChC,YAAA,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;YAChC,IAAI,MAAM,IAAI,IAAI;AAAE,gBAAA,OAAO,IAAI;QACjC;QAAE,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,MAAM;AACf,IAAA,CAAC;AAED,IAAA,OAAO,YAAY,GAAG,CAAC,CAAM,KAAI;;QAE/B,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE;AAClC,YAAA,KAAK,IAAI,QAAQ,IAAI,CAAC,EAAE;AACtB,gBAAA,IACE,CAAC,CAAC,QAA0B,CAAC,KAAK,IAAI;AACtC,oBAAA,CAAC,CAAC,QAA0B,CAAC,KAAK,SAAS;AAC3C,oBAAA,CAAC,CAAC,QAA0B,CAAC,KAAK,EAAE;AACpC,oBAAA,CAAC,CAAC,QAA0B,CAAC,KAAK,WAAW,EAC7C;AACA,oBAAA,OAAO,CAAC,CAAC,QAA0B,CAAC;gBACtC;YACF;QACF;AACA,QAAA,OAAO,CAAC;AACV,IAAA,CAAC;IAED,OAAO,QAAQ,GAAG,CAAC,KAAU,EAAE,OAAY,KAAwB;;;QAGjE,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,QAAQ,EAAE;;YAExC,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,UAAU,EAAE;AAC1C,gBAAA,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YAC3B;QACF;QACA,IAAI,OAAO,EAAE;YACX,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,QAAQ;AAAE,oBAAA,KAAK,GAAG,KAAK,EAAE,QAAQ,EAAE;AACjE,gBAAA,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,QAAQ;AAAE,oBAAA,OAAO,GAAG,OAAO,EAAE,QAAQ,EAAE,CAAC;gBACxE,IAAI,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACrC,IAAI,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;;gBAEnC,IAAI,EAAE,GAAQ,EAAE;gBAChB,IAAI,EAAE,GAAG,CAAC;AACV,gBAAA,EAAE,CAAC,OAAO,CAAC,CAAC,IAAG;oBACb,IAAI,CAAC,GAAG,IAAI;AACZ,oBAAA,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;wBACnB,CAAC,GAAG,GAAG;oBACT;AAAO,yBAAA,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;wBAC7B,CAAC,GAAG,GAAG;oBACT;yBAAO;wBACL,CAAC,GAAG,GAAG;oBACT;AACA,oBAAA,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACV,oBAAA,EAAE,EAAE;AACN,gBAAA,CAAC,CAAC;;;gBAGF,IAAI,CAAC,GAAQ,EAAE;AACf,gBAAA,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AACzE,oBAAA,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;4BACvD,EAAE,CAAC,EAAE,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE;;wBAE3D,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBAChB;yBAAO;;wBAEL,IAAI,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE;4BACrB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;wBAChB;6BAAO;;;4BAGL,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE;gCACnD,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACd,gCAAA,EAAE,EAAE;4BACN;iCAAO;AACL,gCAAA,EAAE,EAAE;4BACN;wBACF;oBACF;gBACF;AACA,gBAAA,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB;QACF;aAAO;YACL,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,CAAC;QAC1E;AACA,QAAA,OAAO,SAAS;AAClB,IAAA,CAAC;IAED,OAAO,YAAY,CAAC,GAAQ,EAAA;AAC1B,QAAA,IAAI;AACF,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QACxB;QAAE,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,IAAI;QACb;IACF;IAEA,OAAO,MAAM,GAAG,CAAC,QAAgB,EAAE,QAAgB,KAAa;;QAE9D,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE;QACxD,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE;QACxD,QAAQ,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACrC,IAAA,CAAC;AAED,IAAA,OAAO,aAAa,GAAG,CAAC,CAAS,KAAY;QAC3C,IAAI,CAAC,IAAI,IAAI;AAAE,YAAA,OAAO,EAAE;;AAExB,QAAA,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;QAChB,IAAI,CAAC,GAAG,EAAE;QACV,IAAI,EAAE,GAAG,gDAAgD;QACzD,IAAI,EAAE,GAAG,gDAAgD;AACzD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjC,YAAA,IAAI,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,YAAA,IAAI,GAAG,IAAI,CAAC,CAAC,EAAE;gBACb,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACtB;iBAAO;AACL,gBAAA,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YAClB;QACF;AACA,QAAA,OAAO,CAAC;AACV,IAAA,CAAC;IAED,OAAO,UAAU,GAAG,OAAO,OAAa,EAAE,OAAkB,KAA4B;AACtF,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,KAAI;AACvB,YAAA,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE;AAC7B,YAAA,IAAI,QAAQ,GAAG,CAAC,KAAU,KAAI;AAC5B,gBAAA,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,EAAE;oBACzB,CAAC,CAAC,IAAI,CAAC;gBACT;AACK,qBAAA,IAAI,KAAK,CAAC,IAAI,IAAI,SAAS,EAAE;;AAEhC,oBAAA,IAAI,MAAM,GAAG,MAAM,CAAC,MAAgB;oBACpC,CAAC,CAAC,MAAM,CAAC;gBACX;AACA,gBAAA,IAAI,OAAO;oBACT,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;AAClE,YAAA,CAAC;YACD,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE;AACtB,oBAAA,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC;AAC9C,oBAAA,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC;AAC7C,oBAAA,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC1C,oBAAA,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC1C,oBAAA,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC;AACzC,oBAAA,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC;AAC5C,oBAAA,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC;gBAC/B;qBACK;oBACH,GAAG,CAAC,CAAC,EAAE,gDAAgD,EAAE,OAAO,CAAC,IAAI,CAAC;oBACtE,CAAC,CAAC,IAAI,CAAC;gBACT;YACF;iBAAO;AACL,gBAAA,GAAG,CAAC,CAAC,EAAE,kCAAkC,EAAE,OAAO,CAAC;gBACnD,CAAC,CAAC,IAAI,CAAC;YACT;AACF,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;IAED,OAAO,cAAc,CAAC,KAAa,EAAA;QACjC,OAAO,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;IAC7C;;AAGA,IAAA,OAAO,kBAAkB,CAAC,OAAY,EAAE,OAAe,CAAC,EAAA;AACtD,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE;AACvC,QAAA,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,UAAU,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI;QACzD,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;AACrC,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,EAAE;AACxC,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI;AACzB,QAAA,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC;QACzC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,WAAW,CAAC;QAC7D,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC,MAAM;QAC7C,OAAO;AACL,YAAA,KAAK,EAAE,KAAK;YACZ,GAAG,EAAE,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM;YACpC;SACD;IACH;;AAGA,IAAA,OAAO,qBAAqB,CAAC,OAAY,EAAE,QAAsD,EAAA;AAC/F,QAAA,IAAI,CAAC,OAAO;YAAE;AACd,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE;AACvC,QAAA,IAAI,CAAC,SAAS;YAAE;QAChB,IAAI,SAAS,GAAG,CAAC;AACjB,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE;AACpC,QAAA,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;AAC1B,QAAA,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AACpB,QAAA,MAAM,YAAY,GAAG,CAAC,IAAU,KAAa;YAC3C,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;gBACpC,MAAM,QAAQ,GAAG,IAAY;gBAC7B,MAAM,aAAa,GAAG,SAAS,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;AACxD,gBAAA,IAAI,QAAQ,CAAC,KAAK,IAAI,SAAS,IAAI,QAAQ,CAAC,KAAK,IAAI,aAAa,EAAE;oBAClE,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC;oBACpD,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC;AAClD,oBAAA,OAAO,IAAI;gBACb;gBACA,SAAS,GAAG,aAAa;YAC3B;iBAAO;AACL,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC/C,IAAI,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;AACpC,wBAAA,OAAO,IAAI;oBACb;gBACF;YACF;AACA,YAAA,OAAO,KAAK;AACd,QAAA,CAAC;QACD,YAAY,CAAC,OAAO,CAAC;QACrB,SAAS,CAAC,eAAe,EAAE;AAC3B,QAAA,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC3B;AAEA,IAAA,OAAO,UAAU,CAAC,KAAa,EAAE,UAAmB,KAAK,EAAA;QACvD,IAAI,OAAO,GAAG,EAAE;AAChB,QAAA,IAAI;YACF,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C;QAAE,OAAO,CAAC,EAAE;AACV,YAAA,GAAG,CAAC,CAAC,EAAE,qDAAqD,CAAC;AAC7D,YAAA,OAAO,KAAK;QACd;QACA,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,KAAK,CAAC;AAC5D,YAAA,OAAO,KAAK;QACd;QAAC;QAED,IAAI,OAAO,EAAE;YACX,IAAI,YAAY,GAAW,yBAAyB;YACpD,IAAI,SAAS,GAAW,0BAA0B;YAClD,IAAI,WAAW,GAAW,4BAA4B;YACtD,IAAI,YAAY,GAAW,6BAA6B;YACxD,IAAI,WAAW,GAAW,4BAA4B;YACtD,IAAI,OAAO,GAAW,SAAS;;YAE/B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;YACpF,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,wGAAwG,EAAE,UAAU,KAAK,EAAA;gBACjJ,IAAI,GAAG,GAAG,SAAS;AACnB,gBAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACpB,oBAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;wBACpB,GAAG,GAAG,YAAY;oBACpB;yBAAO;wBACL,GAAG,GAAG,WAAW;oBACnB;gBACF;AAAO,qBAAA,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;oBACnC,GAAG,GAAG,YAAY;gBACpB;AAAO,qBAAA,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;oBAC7B,GAAG,GAAG,SAAS;gBACjB;AAAO,qBAAA,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;oBAClC,GAAG,GAAG,SAAS;gBACjB;qBAAO;oBACL,GAAG,GAAG,WAAW;gBACnB;AACA,gBAAA,OAAO,GAAG,GAAG,KAAK,GAAG,OAAO;AAC9B,YAAA,CAAC,CAAC;QACJ;;QAGA,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC;AAEtD,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,aAAa,IAAI,CAAC,OAAe,EAAA;AAC/B,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC9B;QAAE,OAAO,IAAI,EAAE;YACb,GAAG,CAAC,CAAC,EAAE,yDAAyD,EAAE,YAAY,EAAE,IAAI,CAAC;AACrF,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;QAC7B;IACF;IAEQ,OAAO,aAAa,CAAC,IAAY,EAAA;QACvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC;AACnD,QAAA,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;AACjC,QAAA,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG;AAC5B,QAAA,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK;AACjC,QAAA,QAAQ,CAAC,KAAK,GAAG,IAAI;AACrB,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;QACnC,QAAQ,CAAC,MAAM,EAAE;AACjB,QAAA,QAAQ,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC;QACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,GAAG,CAAC,CAAC,EAAE,oCAAoC,CAAC;QAC9C;AACA,QAAA,GAAG,CAAC,CAAC,EAAE,6BAA6B,EAAE,IAAI,CAAC;QAC3C,QAAQ,CAAC,MAAM,EAAE;IACnB;AAEQ,IAAA,aAAa,QAAQ,CAAC,IAAa,EAAA;QACzC,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,GAAG,EAAE;AACT,YAAA,GAAG,CAAC,CAAC,EAAE,8BAA8B,EAAE,YAAY,CAAC;YACpD;QACF;AACA,QAAA,IAAI;;YAEF,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YAC1C,IAAI,SAAS,CAAC,SAAS,IAAI,MAAM,CAAC,eAAe,EAAE;AACjD,gBAAA,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC;AACtC,oBAAA,YAAY,EAAE,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;AAC3D,oBAAA,WAAW,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;AACpD,iBAAA,CAAC;gBACF,MAAM,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC;AAChD,gBAAA,OAAO,CAAC,cAAc,CAAC,2CAA2C,EAAE,mBAAmB,CAAC;AACxF,gBAAA,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC;gBACjB,OAAO,CAAC,QAAQ,EAAE;gBAClB;YACF;;YAGA,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC9C,YAAA,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;AACjC,YAAA,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG;AAC5B,YAAA,QAAQ,CAAC,SAAS,GAAG,IAAI;AACzB,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAEnC,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE;AACpC,YAAA,KAAK,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AAClC,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE;YACvC,SAAS,EAAE,eAAe,EAAE;AAC5B,YAAA,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC;AAE1B,YAAA,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC;AAC5B,YAAA,OAAO,CAAC,cAAc,CAAC,0DAA0D,EAAE,kBAAkB,CAAC;AACtG,YAAA,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC;YACjB,OAAO,CAAC,QAAQ,EAAE;YAClB,QAAQ,CAAC,MAAM,EAAE;QACnB;QAAE,OAAO,IAAI,EAAE;AACb,YAAA,GAAG,CAAC,CAAC,EAAE,mBAAmB,EAAE,IAAI,CAAC;AACjC,YAAA,MAAM,IAAI;QACZ;IACF;IAEQ,OAAO,aAAa,CAAC,IAAY,EAAA;;QAEvC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC1C,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;;AAErB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC;QAC7D,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE;IACjD;AAEA,IAAA,OAAO,aAAa,GAAG,CAAC,CAAA,GAAqB,EAAE,KAAY;QACzD,IAAI,CAAC,IAAI,IAAI;AAAE,YAAA,OAAO,EAAE;;QAExB,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;AAChD,IAAA,CAAC;AAED,IAAA,OAAO,UAAU,GAAG,CAAC,KAAU,KAAS;;;QAGtC,IAAI,CAAC,GAAQ,EAAE;AACf,QAAA,KAAK,IAAI,CAAC,IAAI,KAAK,EAAE;YACnB,IAAI,CAAC,GAAG,CAAC;AACT,YAAA,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,QAAQ;AAAE,gBAAA,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5B;AACA,QAAA,OAAO,CAAC;AACV,IAAA,CAAC;IAED,OAAO,OAAO,GAAoB;AAChC,QAAA,GAAG,EAAE;AACH,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,KAAK,EAAE,4CAA4C;AACnD,YAAA,QAAQ,EAAE,CAAC,GAAQ,KAAI;gBACrB,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACrC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACzC,IAAI,CAAC,GAAG,EAAE;AAAE,oBAAA,OAAO,KAAK;gBAAE;AAC1B,gBAAA,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC;AAChC,gBAAA,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE;AAAE,oBAAA,OAAO,KAAK;gBAAE;gBACtC,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC1B,IAAI,CAAC,GAAG,CAAC;AACT,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAAE,oBAAA,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAAE;AACnE,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;AACd,gBAAA,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;AAC5B,gBAAA,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE;gBACpB,CAAC,GAAG,CAAC;AACL,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAAE,oBAAA,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAAE;AACpE,gBAAA,CAAC,GAAG,CAAC,GAAG,EAAE;AACV,gBAAA,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;AAC5B,gBAAA,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;AAClC,oBAAA,OAAO,KAAK;gBACd;gBAAC;gBACD,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;gBACzB,IAAI,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AAC7C,gBAAA,IAAI,QAAQ,IAAI,EAAE,EAAE;AAClB,oBAAA,OAAO,KAAK;gBACd;AACA,gBAAA,OAAO,IAAI;YACb;AACD,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,IAAI,EAAE,oBAAoB;AAC1B,YAAA,KAAK,EAAE,yDAAyD;AAChE,YAAA,QAAQ,EAAE,CAAC,IAAS,KAAI;gBACtB,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC7C,gBAAA,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAChD,IAAI,CAAC,IAAI,EAAE;AAAE,oBAAA,OAAO,KAAK;gBAAE;AAC3B,gBAAA,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC;AAClC,gBAAA,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE;AAAE,oBAAA,OAAO,KAAK;gBAAE;gBACvC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC5B,IAAI,CAAC,GAAG,CAAC;AACT,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAAE,oBAAA,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAAE;AACpE,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,gBAAA,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;AAC5B,gBAAA,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE;gBACpB,CAAC,GAAG,CAAC;AACL,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAAE,oBAAA,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAAE;AACpE,gBAAA,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACZ,gBAAA,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;gBAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;YACxC;AACD,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAE,CAAC,GAAW,KAAI;gBACpB,IAAI,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE;AAC3C,oBAAA,OAAO,gBAAgB;gBACzB;qBAAO;AACL,oBAAA,OAAO,oBAAoB;gBAC7B;gBAAC;YACH,CAAC;AACD,YAAA,KAAK,EAAE,kGAAkG;AACzG,YAAA,QAAQ,EAAE,CAAC,QAAa,KAAI;gBAC1B,IAAI,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE;AAChD,oBAAA,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,KAAK;gBAC1D;qBAAO;AACL,oBAAA,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,KAAK;gBAC3D;gBAAC;YACH;AACD,SAAA;AACD,QAAA,GAAG,EAAE;AACH,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,KAAK,EAAE,eAAe;AACtB,YAAA,QAAQ,EAAE,CAAC,GAAQ,KAAI;gBACrB,IAAI,CAAC,GAAG,EAAE;AAAE,oBAAA,OAAO,KAAK;gBAAE;AAC1B,gBAAA,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC;AAChC,gBAAA,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE;AAAE,oBAAA,OAAO,KAAK;gBAAE;AACtC,gBAAA,OAAO,IAAI;YACb,CAAC;AACF,SAAA;AACD,QAAA,GAAG,EAAE;AACH,YAAA,IAAI,EAAE,gBAAgB;AACtB,YAAA,KAAK,EAAE,oDAAoD;AAC3D,YAAA,QAAQ,EAAE,CAAC,GAAQ,KAAI;gBACrB,IAAI,CAAC,GAAG,EAAE;AAAE,oBAAA,OAAO,KAAK;gBAAE;AAC1B,gBAAA,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC;AAChC,gBAAA,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE;AAAE,oBAAA,OAAO,KAAK;gBAAE;AACtC,gBAAA,OAAO,IAAI;YACb,CAAC;AACF,SAAA;AACD,QAAA,GAAG,EAAE;AACH,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,oCAAoC;AAC3C,YAAA,QAAQ,EAAE,CAAC,GAAQ,KAAI;gBACrB,IAAI,CAAC,GAAG,EAAE;AAAE,oBAAA,OAAO,KAAK;gBAAE;AAC1B,gBAAA,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC;AAChC,gBAAA,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC;AACxB,gBAAA,OAAO,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,EAAE;YACpC,CAAC;AACF,SAAA;AACD,QAAA,GAAG,EAAE;AACH,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,mBAAmB;AAC1B,YAAA,QAAQ,EAAE,CAAC,GAAQ,KAAI;gBACrB,IAAI,CAAC,GAAG,EAAE;AAAE,oBAAA,OAAO,KAAK;gBAAE;AAC1B,gBAAA,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC;AAChC,gBAAA,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC;AACxB,gBAAA,OAAO,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,EAAE;YACpC,CAAC;AACF,SAAA;AACD,QAAA,GAAG,EAAE;AACH,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,KAAK,EAAE,sBAAsB;AAC7B,YAAA,QAAQ,EAAE,CAAC,GAAQ,KAAI;gBACrB,IAAI,CAAC,GAAG,EAAE;AAAE,oBAAA,OAAO,KAAK;gBAAE;AAC1B,gBAAA,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC;AAChC,gBAAA,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC;AACxB,gBAAA,OAAO,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI;YACzC,CAAC;AACF,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,KAAK,EAAE,gDAAgD;AACvD,YAAA,QAAQ,EAAE,CAAC,UAAe,KAAI;gBAC5B,IAAI,CAAC,UAAU,EAAE;AAAE,oBAAA,OAAO,KAAK;gBAAE;AACjC,gBAAA,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC;AAC9C,gBAAA,IAAI,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,gBAAA,OAAO,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI;YACzC,CAAC;AACF,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,KAAK,EAAE,4BAA4B;AACnC,YAAA,QAAQ,EAAE,CAAC,IAAS,KAAI;gBACtB,IAAI,CAAC,IAAI,EAAE;AAAE,oBAAA,OAAO,KAAK;gBAAE;AAC3B,gBAAA,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC;AAClC,gBAAA,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1D,CAAC;AACF,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,0BAA0B;AAChC,YAAA,KAAK,EAAE,8DAA8D;AACrE,YAAA,QAAQ,EAAE,CAAC,OAAY,KAAI;gBACzB,IAAI,CAAC,OAAO,EAAE;AAAE,oBAAA,OAAO,KAAK;gBAAE;AAC9B,gBAAA,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC;AACxC,gBAAA,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;YAChE,CAAC;AACF,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,QAAQ,EAAE,CAAC,MAAW,KAAI;gBACxB,IAAI,CAAC,MAAM,EAAE;AAAE,oBAAA,OAAO,KAAK;gBAAE;AAC7B,gBAAA,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC;AACtC,gBAAA,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC;YAC1B,CAAC;AACF,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,QAAQ,EAAE,CAAC,OAAY,KAAI;gBACzB,IAAI,CAAC,OAAO,EAAE;AAAE,oBAAA,OAAO,KAAK;gBAAE;AAC9B,gBAAA,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;YAChE,CAAC;AACF,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,IAAI,EAAE,GAAG;AACT,YAAA,KAAK,EAAE,aAAa;AACpB,YAAA,QAAQ,EAAE,CAAC,KAAU,KAAI;gBACvB,IAAI,CAAC,KAAK,EAAE;AAAE,oBAAA,OAAO,KAAK;gBAAE;AAC5B,gBAAA,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;YAC5D,CAAC;AACF,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,IAAI,EAAE,GAAG;AACT,YAAA,KAAK,EAAE,gBAAgB;AACvB,YAAA,QAAQ,EAAE,CAAC,YAAiB,KAAI;gBAC9B,IAAI,CAAC,YAAY,EAAE;AAAE,oBAAA,OAAO,KAAK;gBAAE;AACnC,gBAAA,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;YAC1E;AACD,SAAA;AACD,QAAA,EAAE,EAAE;AACF,YAAA,IAAI,EAAE,iBAAiB;AACvB,YAAA,KAAK,EAAE,iDAAiD;AACxD,YAAA,QAAQ,EAAE,CAAC,EAAO,KAAI;gBACpB,IAAI,CAAC,EAAE,EAAE;AAAE,oBAAA,OAAO,KAAK;gBAAE;AACzB,gBAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC;gBAClD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AAAE,oBAAA,OAAO,KAAK;gBAAE;AACrC,gBAAA,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AACvC,gBAAA,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAY,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC;YAChE;AACD,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,IAAI,EAAE,GAAG;AACT,YAAA,KAAK,EAAE,0DAA0D;AACjE,YAAA,QAAQ,EAAE,CAAC,KAAU,KAAI;gBACvB,IAAI,CAAC,KAAK,EAAE;AAAE,oBAAA,OAAO,KAAK;gBAAE;AAC5B,gBAAA,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;YAC5D;AACD,SAAA;AACD,QAAA,GAAG,EAAE;AACH,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,KAAK,EAAE,0BAA0B;AACjC,YAAA,QAAQ,EAAE,CAAC,GAAQ,KAAI;gBACrB,IAAI,CAAC,GAAG,EAAE;AAAE,oBAAA,OAAO,KAAK;gBAAE;AAC1B,gBAAA,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC;AAChC,gBAAA,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YACxD;AACD;KACF;AAED,IAAA,OAAO,cAAc,GAAG,CAAC,IAA+B,KAAmB;QACzE,IAAI,SAAS,GAAG,IAAI;AACpB,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE;AAC3E,YAAA,OAAO,IAAI;QACb;aAAO,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE;;YAE5C,IAAI,IAAI,MAAM,CAAC,0CAA0C,CAAC,CAAC,IAAI,CAAC,IAAK,CAAC,EAAE;gBACtE,IAAI,IAAI,GAAG;YACb;;AAEA,YAAA,SAAS,GAAG,IAAI,IAAI,CAAC,IAAK,CAAC,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;;AAG7D,YAAA,IAAI,SAAS,CAAC,WAAW,EAAE,IAAI,cAAc,EAAE;AAC7C,gBAAA,SAAS,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;;AAGpE,gBAAA,IAAI,SAAS,CAAC,WAAW,EAAE,IAAI,cAAc,EAAE;;oBAE7C,IAAI,IAAI,MAAM,CAAC,0CAA0C,CAAC,CAAC,IAAI,CAAC,IAAK,CAAC,EAAE;wBACtE,SAAS,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAK,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;oBACtF;gBACF;YACF;QACF;aAAO;AACL,YAAA,GAAG,CAAC,CAAC,EAAE,yDAAyD,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChG;AACA,QAAA,OAAO,SAAS;AAClB,IAAA,CAAC;;AAGD,IAAA,OAAO,aAAa,GAAG,CAAC,IAAY,KAAY;;QAE9C,IAAI,IAAI,MAAM,CAAC,0CAA0C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAEvE;QACA,IAAI,IAAI,MAAM,CAAC,0CAA0C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACrE,YAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAClF,YAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC;AACvC,YAAA,IAAI,KAAK,IAAI,EAAE,IAAI,IAAI,MAAM,CAAC,oCAAoC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAC/E,QAAQ,IAAI,KAAK;YACnB;AACA,YAAA,OAAO,QAAQ;QACjB;QACA,OAAO,IAAI,CAAC;AACd,IAAA,CAAC;;;AAwBD,IAAA,OAAO,QAAQ,CAAI,KAAsC,EAAE,IAAgB,EAAA;AACzE,QAAA,KAAK,CAAC,MAAM,CAAC,CAAC,IAAG;AACf,YAAA,IAAI,CAAC,CAAC;AAAE,gBAAA,OAAO,IAAI;AACnB,YAAA,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE;AAC1B,QAAA,CAAC,CAAC;IACJ;;AAGA,IAAA,OAAO,WAAW,CAAI,KAAwC,EAAE,IAAO,EAAA;AACrE,QAAA,KAAK,CAAC,MAAM,CAAC,CAAC,IAAG;AACf,YAAA,IAAI,CAAC,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC;AACrB,YAAA,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;AACrB,QAAA,CAAC,CAAC;IACJ;;IAGA,OAAO,WAAW,CAAI,KAAwC,EAAE,IAAgB,EAAE,CAAS,EAAE,CAAU,EAAA;AACrG,QAAA,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE;AACrB,YAAA,KAAK,CAAC,MAAM,CAAC,CAAC,IAAG;AACf,gBAAA,IAAI,CAAC,CAAC;AAAE,oBAAA,OAAO,CAAC;AAChB,gBAAA,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAI,KAAK,CAAC,CAAC,CAAY,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;AACvE,YAAA,CAAC,CAAC;QACJ;aAAO;AACL,YAAA,IAAI,CAAC,IAAI,IAAI,EAAE;;AAEb,gBAAA,IAAI,KAAK,GAAG,IAAI,CAAC,CAAY,CAAC;AAC9B,gBAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,oBAAA,KAAK,CAAC,MAAM,CAAC,CAAC,IAAG;AACf,wBAAA,IAAI,CAAC,CAAC;AAAE,4BAAA,OAAO,CAAC;AAChB,wBAAA,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAI,KAAK,CAAC,CAAC,CAAY,CAAC,KAAK,KAAK,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;AAC3E,oBAAA,CAAC,CAAC;gBACJ;qBAAO;AACL,oBAAA,GAAG,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAAA,iDAAA,CAAmD,CAAC;gBACzF;YACF;iBAAO;AACL,gBAAA,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA,yBAAA,CAA2B,CAAC;YAChD;QACF;IACF;;AAGA,IAAA,OAAO,WAAW,CAAI,KAAwC,EAAE,CAAS,EAAE,CAAU,EAAA;AACnF,QAAA,IAAI,CAAC,IAAI,IAAI,EAAE;AACb,YAAA,KAAK,CAAC,MAAM,CAAC,CAAC,IAAG;AACf,gBAAA,IAAI,CAAC,CAAC;AAAE,oBAAA,OAAO,CAAC;AAChB,gBAAA,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAI,KAAK,CAAC,CAAC,CAAY,CAAC,KAAK,CAAC,CAAC;AAClD,YAAA,CAAC,CAAC;QACJ;aAAO;AACL,YAAA,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA,yBAAA,CAA2B,CAAC;QAClD;IACF;;IAGA,OAAO,UAAU,CAAI,KAAwC,EAAA;AAC3D,QAAA,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;IACtB;;AAGA,IAAA,OAAO,WAAW,CAAI,KAAwC,EAAE,CAA2B,EAAE,CAAS,EAAA;AACpG,QAAA,IAAI,CAAC,IAAI,IAAI,EAAE;AACb,YAAA,MAAM,KAAK,GAAG,KAAK,EAAE;AACrB,YAAA,IAAI,CAAC,KAAK;AAAE,gBAAA,OAAO,KAAK;AACxB,YAAA,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACzC;aAAO;AACL,YAAA,OAAO,KAAK;QACd;IACF;;AAIA,IAAA,OAAO,WAAW,CAAI,KAAwC,EAAE,CAA2B,EAAE,CAAS,EAAA;AACpG,QAAA,IAAI,CAAC,IAAI,IAAI,EAAE;AACb,YAAA,KAAK,CAAC,MAAM,CAAC,CAAC,IAAG;AACf,gBAAA,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;AAAE,oBAAA,OAAO,CAAC;AACjC,gBAAA,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC/C,IAAI,KAAK,IAAI,CAAC;oBAAE,OAAO,CAAC,CAAC;AAEzB,gBAAA,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;gBACvB,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC/E,gBAAA,OAAO,QAAQ;AACjB,YAAA,CAAC,CAAC;QACJ;aAAO;AACL,YAAA,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA,yBAAA,CAA2B,CAAC;QAClD;IACF;;AAGA,IAAA,OAAO,aAAa,CAAI,KAAwC,EAAE,CAA2B,EAAE,CAAS,EAAA;AACtG,QAAA,IAAI,CAAC,IAAI,IAAI,EAAE;AACb,YAAA,KAAK,CAAC,MAAM,CAAC,CAAC,IAAG;AACf,gBAAA,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;AAAE,oBAAA,OAAO,CAAC;AAEjC,gBAAA,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC/C,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;oBAAE,OAAO,CAAC,CAAC;AAEjD,gBAAA,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;gBACvB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/E,gBAAA,OAAO,QAAQ;AACjB,YAAA,CAAC,CAAC;QACJ;aAAO;AACL,YAAA,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA,2BAAA,CAA6B,CAAC;QACpD;IACF;;IAGA,OAAO,gBAAgB,CAAI,KAAwC,EAAE,CAA2B,EAAE,CAAS,EAAE,WAAmB,EAAA;AAC9H,QAAA,IAAI,CAAC,IAAI,IAAI,EAAE;AACb,YAAA,KAAK,CAAC,MAAM,CAAC,CAAC,IAAG;AACf,gBAAA,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;AAAE,oBAAA,OAAO,CAAC;AACjC,gBAAA,MAAM,YAAY,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACtD,gBAAA,IAAI,YAAY,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,IAAI,WAAW,IAAI,CAAC,CAAC,MAAM,IAAI,YAAY,KAAK,WAAW,EAAE;oBAClG,OAAO,CAAC,CAAC;gBACX;AACA,gBAAA,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;AACvB,gBAAA,MAAM,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;gBACpD,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,SAAS,CAAC;AAC1C,gBAAA,OAAO,QAAQ;AACjB,YAAA,CAAC,CAAC;QACJ;aAAO;AACL,YAAA,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA,8BAAA,CAAgC,CAAC;QACvD;IACF;AAEA,IAAA,OAAO,aAAa,CAAI,KAAU,EAAE,YAAqB,EAAA;AACvD,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO;AAAE,YAAA,OAAO,EAAE;QAEhD,IAAI,SAAS,GAAQ,EAAE;AACvB,QAAA,KAAK,CAAC,GAAG,CAAC,MAAM,IAAG;AACjB,YAAA,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,QAAQ;gBAAE;YACzC,IAAI,UAAU,GAAM,EAAO;AAC3B,YAAA,KAAK,IAAI,IAAI,IAAI,MAAM,EAAE;gBACvB,IAAI,IAAI,IAAI,YAAY;oBAAE,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;YAC3D;AACA,YAAA,SAAS,GAAG,CAAC,GAAG,SAAS,EAAE,UAAU,CAAC;AACtC,YAAA,IAAI,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAQ;AAC1C,YAAA,IAAI,QAAQ,IAAI,IAAI,EAAE;AACpB,gBAAA,SAAS,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YAC9E;AACF,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,SAAS;IAClB;;;;IAMA,OAAO,oBAAoB,CAAI,KAAwC,EAAE,IAAO,EAAE,YAAqB,EAAE,MAAgC,EAAE,QAAiB,EAAA;AAC1J,QAAA,KAAK,CAAC,MAAM,CAAC,CAAC,IAAG;AACf,YAAA,IAAI,CAAC,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC;AACrB,YAAA,IAAI,QAAQ,IAAI,IAAI,EAAE;AACpB,gBAAA,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAI,KAAI;AACpB,oBAAA,OAAO,OAAO,CAAC,gBAAgB,CAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC;AAC7E,gBAAA,CAAC,CAAC;YACJ;iBAAO;;AAEL,gBAAA,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;YACrB;AACF,QAAA,CAAC,CAAC;IACJ;;IAGA,OAAO,gBAAgB,CAAI,KAAQ,EAAE,IAAO,EAAE,YAAqB,EAAE,MAAgC,EAAE,QAAgB,EAAA;AACrH,QAAA,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE;;AAE9B,YAAA,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE;AAC9B,gBAAA,KAAK,CAAC,YAAY,CAAS,GAAG,CAAC,IAAI,CAAC;YACvC;iBAAO;AACJ,gBAAA,KAAK,CAAC,YAAY,CAAS,GAAG,CAAC,GAAI,KAAK,CAAC,YAAY,CAAS,EAAE,IAAI,CAAC;YACxE;AACA,YAAA,OAAO,KAAK;QACd;AACA,QAAA,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,IAAI,IAAK,KAAK,CAAC,YAAY,CAAS,EAAE,MAAM,IAAI,CAAC;AAAE,YAAA,OAAO,KAAK;QACzF,KAAK,CAAC,YAAY,CAAS,GAAG;YAC7B,GAAI,KAAK,CAAC,YAAY,CAAS,CAAC,GAAG,CAAC,KAAK,IAAG;AAC1C,gBAAA,OAAO,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC;AAC9E,YAAA,CAAC;SACF;AACD,QAAA,OAAO,KAAK;IACd;;;IAIA,OAAO,oBAAoB,CAAI,KAAwC,EAAE,IAAgB,EAAE,YAAqB,EAAE,CAA2B,EAAE,CAAS,EAAA;AACtJ,QAAA,IAAI,CAAC,IAAI,IAAI,EAAE;AACb,YAAA,KAAK,CAAC,MAAM,CAAC,CAAC,IAAG;AACf,gBAAA,IAAI,CAAC,CAAC;AAAE,oBAAA,OAAO,CAAC;AAChB,gBAAA,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAI,KAAI;AACpB,oBAAA,OAAO,OAAO,CAAC,gBAAgB,CAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;AACjE,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;QACJ;aAAO;AACL,YAAA,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA,mCAAA,CAAqC,CAAC;QAC5D;IACF;;IAGA,OAAO,gBAAgB,CAAI,KAAQ,EAAE,IAAgB,EAAE,YAAqB,EAAE,CAA2B,EAAE,CAAS,EAAA;AAClH,QAAA,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAClB,YAAA,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,EAAE,CAAC;AACxC,YAAA,OAAO,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,EAAE;QAC9B;AACA,QAAA,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,IAAI,IAAK,KAAK,CAAC,YAAY,CAAS,EAAE,MAAM,IAAI,CAAC;AAAE,YAAA,OAAO,KAAK;QACzF,KAAK,CAAC,YAAY,CAAS,GAAG;YAC7B,GAAI,KAAK,CAAC,YAAY,CAAS,CAAC,GAAG,CAAC,KAAK,IAAG;AAC1C,gBAAA,OAAO,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;AAClE,YAAA,CAAC;SACF;AACD,QAAA,OAAO,KAAK;IACd;;;IAIA,OAAO,oBAAoB,CAAI,KAAwC,EAAE,YAAqB,EAAE,CAA2B,EAAE,CAAS,EAAA;AACpI,QAAA,IAAI,CAAC,IAAI,IAAI,EAAE;AACb,YAAA,KAAK,CAAC,MAAM,CAAC,CAAC,IAAG;AACf,gBAAA,IAAI,CAAC,CAAC;AAAE,oBAAA,OAAO,CAAC;;AAEhB,gBAAA,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;;gBAEnD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;AACpC,oBAAA,OAAO,YAAY;gBACrB;;AAEA,gBAAA,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAI,KAAI;AACpB,oBAAA,OAAO,OAAO,CAAC,gBAAgB,CAAI,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3D,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;QACJ;aAAO;AACL,YAAA,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA,mCAAA,CAAqC,CAAC;QAC5D;IACF;;IAEA,OAAO,gBAAgB,CAAI,KAAQ,EAAE,YAAqB,EAAE,CAA2B,EAAE,CAAS,EAAA;;AAEhG,QAAA,IAAI,KAAK,CAAC,YAAY,CAAC,IAAK,KAAK,CAAC,YAAY,CAAS,EAAE,MAAM,GAAG,CAAC,EAAE;AACnE,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAQ;;YAE3C,MAAM,gBAAgB,GAAG;iBACtB,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9B,iBAAA,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACpE,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,YAAY,GAAG,gBAAgB,EAAE;QACvD;AACA,QAAA,OAAO,KAAK;IACd;;IAGA,OAAO,oBAAoB,CAAI,KAAwC,EAAE,YAAqB,EAAE,CAA2B,EAAE,CAAS,EAAA;AACpI,QAAA,IAAI,CAAC,IAAI,IAAI,EAAE;AACb,YAAA,MAAM,KAAK,GAAG,KAAK,EAAE;AACrB,YAAA,IAAI,CAAC,KAAK;AAAE,gBAAA,OAAO,KAAK;AACxB,YAAA,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAI,KAAI;AACzB,gBAAA,OAAO,OAAO,CAAC,gBAAgB,CAAI,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3D,YAAA,CAAC,CAAC;QACJ;aAAO;AACL,YAAA,OAAO,KAAK;QACd;IACF;;IAGA,OAAO,gBAAgB,CAAI,KAAQ,EAAE,YAAqB,EAAE,CAA2B,EAAE,CAAS,EAAA;;AAEhG,QAAA,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI;;AAE/B,QAAA,IAAI,KAAK,CAAC,YAAY,CAAC,IAAK,KAAK,CAAC,YAAY,CAAS,EAAE,MAAM,GAAG,CAAC,EAAE;AACnE,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAQ;YAC3C,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACpF;AACA,QAAA,OAAO,KAAK;IACd;;;IAIA,OAAO,oBAAoB,CAAI,KAAwC,EAAE,YAAqB,EAAE,CAA2B,EAAE,CAAS,EAAA;AACpI,QAAA,IAAI,CAAC,IAAI,IAAI,EAAE;AACb,YAAA,KAAK,CAAC,MAAM,CAAC,CAAC,IAAG;AACf,gBAAA,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;AAAE,oBAAA,OAAO,CAAC;;AAEjC,gBAAA,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACnD,gBAAA,IAAI,SAAS,GAAG,CAAC,EAAE;AACjB,oBAAA,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;oBACvB,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;AAC/F,oBAAA,OAAO,QAAQ;gBACjB;;AAEA,gBAAA,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAI,KAAI;AACpB,oBAAA,OAAO,OAAO,CAAC,gBAAgB,CAAI,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3D,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;QACJ;aAAO;AACL,YAAA,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA,mCAAA,CAAqC,CAAC;QAC5D;IACF;;IAGA,OAAO,gBAAgB,CAAI,KAAQ,EAAE,YAAqB,EAAE,CAA2B,EAAE,CAAS,EAAA;;AAEhG,QAAA,IAAI,KAAK,CAAC,YAAY,CAAC,IAAK,KAAK,CAAC,YAAY,CAAS,EAAE,MAAM,GAAG,CAAC,EAAE;AACnE,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAQ;;AAE3C,YAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC/D,YAAA,IAAI,WAAW,GAAG,CAAC,EAAE;AACnB,gBAAA,MAAM,WAAW,GAAG,CAAC,GAAG,QAAQ,CAAC;gBACjC,CAAC,WAAW,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;gBACnH,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,YAAY,GAAG,WAAW,EAAE;YAClD;;YAEA,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,IAC1C,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CACpD;YACD,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,YAAY,GAAG,iBAAiB,EAAE;QACxD;AACA,QAAA,OAAO,KAAK;IACd;;;IAIA,OAAO,sBAAsB,CAAI,KAAwC,EAAE,YAAqB,EAAE,CAA2B,EAAE,CAAS,EAAA;AACtI,QAAA,IAAI,CAAC,IAAI,IAAI,EAAE;AACb,YAAA,KAAK,CAAC,MAAM,CAAC,CAAC,IAAG;AACf,gBAAA,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;AAAE,oBAAA,OAAO,CAAC;;AAEjC,gBAAA,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACnD,gBAAA,IAAI,SAAS,IAAI,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9C,oBAAA,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;oBACvB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC/F,oBAAA,OAAO,QAAQ;gBACjB;;AAEA,gBAAA,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAI,KAAI;AACpB,oBAAA,OAAO,OAAO,CAAC,kBAAkB,CAAI,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;AAC7D,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;QACJ;aAAO;AACL,YAAA,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA,qCAAA,CAAuC,CAAC;QAC9D;IACF;;IAGA,OAAO,kBAAkB,CAAI,KAAQ,EAAE,YAAqB,EAAE,CAA2B,EAAE,CAAS,EAAA;AAClG,QAAA,IAAI,KAAK,CAAC,YAAY,CAAC,IAAK,KAAK,CAAC,YAAY,CAAS,EAAE,MAAM,GAAG,CAAC,EAAE;AACnE,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAQ;;AAE3C,YAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC/D,YAAA,IAAI,WAAW,IAAI,CAAC,IAAI,WAAW,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACzD,gBAAA,MAAM,WAAW,GAAG,CAAC,GAAG,QAAQ,CAAC;gBACjC,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;gBACnH,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,YAAY,GAAG,WAAW,EAAE;YAClD;;YAEA,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,IAC1C,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CACtD;YACD,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,YAAY,GAAG,iBAAiB,EAAE;QACxD;AACA,QAAA,OAAO,KAAK;IACd;IAEA,OAAO,sBAAsB,CAAI,KAAwC,EAAE,YAAqB,EAAE,CAA2B,EAAE,SAAkB,EAAA;AAC/I,QAAA,KAAK,CAAC,MAAM,CAAC,CAAC,IAAG;AACf,YAAA,IAAI,CAAC,CAAC;AAAE,gBAAA,OAAO,CAAC;YAChB,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAI,EAAE,CAAC,KAAI;AACvB,gBAAA,OAAO,OAAO,CAAC,kBAAkB,CAAI,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;AACxE,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,OAAO,kBAAkB,CAAI,KAAQ,EAAE,YAAqB,EAAE,CAA2B,EAAE,SAAkB,EAAE,KAAa,EAAA;QAC1H,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,SAAS,GAAG,KAAK,EAAE;AACxC,QAAA,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,IAAI,IAAK,KAAK,CAAC,YAAY,CAAS,EAAE,MAAM,IAAI,CAAC;AAAE,YAAA,OAAO,KAAK;QACzF,KAAK,CAAC,YAAY,CAAS,GAAG;AAC7B,YAAA,GAAI,KAAK,CAAC,YAAY,CAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAI;AAC/C,gBAAA,OAAO,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;AACzE,YAAA,CAAC;SACF;AACD,QAAA,OAAO,KAAK;IACd;;AAIA,IAAA,OAAO,CAAC,GAAG,CAAC,KAAU,KAAI;;AAExB,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,QAAQ;AAAE,YAAA,OAAO,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC5E,QAAA,OAAO,KAAK;AACd,IAAA,CAAC;AAED,IAAA,OAAO,IAAI,GAAG,CAAC,KAAU,KAAW;;QAElC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,QAAQ,EAAE;;YAEtC,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACrD;AAAO,aAAA,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;;YAErD,OAAO,CAAC,KAAK,CAAC;QAChB;aAAO,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,EAAE;;AAE5C,YAAA,OAAO,KAAK;QACd;aAAO;AACL,YAAA,GAAG,CAAC,CAAC,EAAE,yDAAyD,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC;AAC5G,YAAA,OAAO,EAAE;QACX;AACF,IAAA,CAAC;AAED,IAAA,OAAO,OAAO,GAAG,CAAC,KAAA,GAA+C,MAAM,KAAW;;;QAGhF,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAM,KAAI;AAC7C,YAAA,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC5B,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AAED,IAAA,OAAO,MAAM,GAAG,CAAC,KAAA,GAA+C,MAAM,KAAI;;;QAGxE,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAM,KAAI;AAC7C,YAAA,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC/B,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AAED,IAAA,OAAO,SAAS,GAAG,CAAC,IAAA,GAAsB,IAAI,KAAY;;AAExD,QAAA,IAAI,IAAI,IAAI,IAAI,EAAE;AAChB,YAAA,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE;;gBAEpB,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YAClC;iBAAO;gBACL,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;gBACjC,IAAI,IAAI,GAAW,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACzC,IAAI,IAAI,GAAW,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC7C,IAAI,IAAI,GAAW,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACzC,gBAAA,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE;YAC7C;QACF;;AAAO,YAAA,OAAO,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;AACpC,IAAA,CAAC;IAED,OAAO,gBAAgB,GAAG,CAAC,GAAW,EAAE,OAAA,GAAmB,KAAK,KAAI;QAClE,IAAI,OAAO,EAAE;YACX,OAAO,GAAG,GAAG,IAAI;QACnB;QACA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;AAChC,IAAA,CAAC;IAED,OAAO,YAAY,GAAG,CAAC,GAAW,EAAE,OAAA,GAAmB,KAAK,KAAI;;;;;QAK9D,IAAI,OAAO,EAAE;YACX,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC;QACnC;QACA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC;AACnC,IAAA,CAAC;IAED,OAAO,wBAAwB,GAAG,CAAC,IAAY,EAAE,KAAA,GAAuB,IAAI,KAAY;;QAEtF,IAAI,KAAK,IAAI,IAAI;AAAE,YAAA,KAAK,GAAG,OAAO,CAAC,SAAS,EAAE;QAC9C,OAAO,OAAO,CAAC,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC;AAC/C,IAAA,CAAC;IAED,OAAO,oBAAoB,GAAG,CAAC,IAAY,EAAE,KAAA,GAAuB,IAAI,KAAY;;QAElF,IAAI,KAAK,IAAI,IAAI;AAAE,YAAA,KAAK,GAAG,OAAO,CAAC,SAAS,EAAE;QAC9C,OAAO,OAAO,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC;AAC3C,IAAA,CAAC;IAED,OAAO,sBAAsB,GAAG,CAAC,IAAqB,EAAE,KAAA,GAAgC,IAAI,KAAI;AAC9F,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,QAAQ;AAAE,YAAA,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,IAAc,CAAC;AAC/E,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,QAAQ;AAAE,YAAA,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,KAAe,CAAC;QAClF,IAAI,IAAI,GAAG,OAAO,CAAC,oBAAoB,CAAC,IAAc,EAAE,KAAsB,CAAC;AAC/E,QAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AACZ,YAAA,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;QAClB;QACA,IAAI,QAAQ,GAAG,EAAE;AACjB,QAAA,IAAI,IAAI,GAAG,EAAE,EAAE;AACb,YAAA,IAAI,IAAI,GAAG,EAAE,EAAE;gBACb,QAAQ,GAAG,OAAO;YACpB;iBAAO;AACL,gBAAA,IAAI,IAAI,GAAG,GAAG,EAAE;oBACd,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;AACjC,oBAAA,IAAI,YAAY,GAAG,IAAI,GAAG,GAAG;AAC7B,oBAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AACZ,wBAAA,QAAQ,IAAI,IAAI,GAAG,OAAO;oBAC5B;yBAAO;AACL,wBAAA,QAAQ,IAAI,IAAI,GAAG,QAAQ;oBAC7B;AACA,oBAAA,IAAI,YAAY,GAAG,EAAE,EAAE;AACrB,wBAAA,IAAI,YAAY,GAAG,EAAE,EAAE;4BACrB,QAAQ,IAAI,OAAO;wBACrB;6BAAO;4BACL,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,GAAG,QAAQ;wBACtD;oBACF;gBACF;qBAAO;oBACL,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,QAAQ;gBAC7C;YACF;QACF;aAAO;AACL,YAAA,IAAI,IAAI,GAAG,CAAC,EAAE;gBACZ,IAAI,QAAQ,GAAG,OAAO,CAAC,wBAAwB,CAAC,IAAc,EAAE,KAAe,CAAC;AAChF,gBAAA,IAAI,QAAQ,GAAG,IAAI,EAAE;oBACnB,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,QAAQ;gBACnD;qBAAO;AACL,oBAAA,IAAI,QAAQ,GAAG,IAAI,EAAE;wBACnB,QAAQ,GAAG,QAAQ;oBACrB;yBAAO;AACL,wBAAA,IAAI,QAAQ,GAAG,GAAG,EAAE;4BAClB,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,GAAG,UAAU;wBACnD;6BAAO;AACL,4BAAA,IAAI,QAAQ,GAAG,EAAE,EAAE;gCACjB,QAAQ,GAAG,UAAU;4BACvB;iCAAO;gCACL,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,WAAW;4BAC/C;wBACF;oBACF;gBACF;YACF;AAAO,iBAAA;AACL,gBAAA,QAAQ,GAAG,IAAI,GAAG,OAAO;YAC3B;QACF;AACA,QAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE;AACvC,QAAA,OAAO,QAAQ;AACjB,IAAA,CAAC;IAED,OAAO,cAAc,GAAG,CAAC,IAAY,EAAE,MAAc,EAAE,MAAe,KAAY;QAChF,IAAI,MAAM,IAAI,IAAI;YAAE,MAAM,GAAG,EAAE;;AAC1B,YAAA,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC;QAC3C,IAAI,IAAI,IAAI,IAAI;YAAE,IAAI,GAAG,EAAE;;YACtB,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC;AAC9C,QAAA,IAAI,MAAM,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE;AAAE,YAAA,OAAO,EAAE;QACzC,IAAI,WAAW,GAAG,IAAI;QACtB,IAAI,aAAa,GAAG,MAAM;QAC1B,IAAI,WAAW,GAAG,EAAE;AACpB,QAAA,IAAI,MAAM,IAAI,EAAE,IAAI,WAAW,IAAI,EAAE;YAAE,WAAW,GAAG,KAAK;AAC1D,QAAA,IAAI,WAAW,IAAI,KAAK,EAAE;YACxB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7B,aAAa,GAAG,MAAM;YACtB,IAAI,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AACvC,YAAA,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,EAAE;gBAC7B,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7E;AACA,YAAA,aAAa,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,aAAa;QACjE;AACA,QAAA,IAAI,MAAM,IAAI,IAAI,EAAE;AAClB,YAAA,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC;QAC3C;AACA,QAAA,OAAO,CAAA,EAAG,WAAW,CAAA,aAAA,EAAgB,IAAI,IAAI,EAAE,CAAA,EAAG,MAAM,IAAI,EAAE,CAAA,EAAA,EAAK,WAAW,CAAA,CAAA,EAAI,aAAa,MAAM;AACvG,IAAA,CAAC;AAED,IAAA,OAAO,WAAW,GAAG,CAAC,IAAY,KAAY;AAC5C,QAAA,IAAI,IAAI,IAAI,IAAI,EAAE;YAChB,OAAO,CAAA,6CAAA,EAAgD,IAAI,IAAI,aAAa,cAAc,IAAI,IAAI,aAAa,CAAA,oCAAA,CAAsC;QACvJ;AACA,QAAA,OAAO,EAAE;AACX,IAAA,CAAC;IAED,OAAO,OAAO,CAAC,IAAY,EAAA;;QAEzB,IAAI,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC;AACvE,QAAA,OAAO,OAAO,GAAG,CAAC,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAClF;;IAGA,OAAO,QAAQ,GAAG,CAAC,KAAU,EAAE,KAAA,GAAgB,CAAC,KAAY;;;AAG1D,QAAA,IAAI,KAAK,IAAI,IAAI,EAAE;YACjB,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,QAAQ,EAAE;;AAEtC,gBAAA,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC3F,IAAI,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;AACpC,gBAAA,IAAI,QAAQ,IAAI,CAAC,EAAE;oBACjB,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC;oBAChC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC;AAC5D,oBAAA,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AACvG,oBAAA,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AACvG,oBAAA,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;gBACrB;qBAAO;oBACL,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;oBAChI,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;AAClC,oBAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;gBACnF;YACF;iBAAO,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,QAAQ,EAAE;gBAC7C,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC/B;iBAAO;AACL,gBAAA,GAAG,CAAC,CAAC,EAAE,sDAAsD,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACxF;AACA,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB;QACA,OAAO,CAAC,CAAC;AACX,IAAA,CAAC;;IAGD,OAAO,CAAC,GAAQ;QACd,GAAG,EAAE,KAAK;QACV,QAAQ,EAAE,qBAAqB;QAC/B,GAAG,EAAE,KAAK;QACV,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;AAChB,QAAA,MAAM,EAAE,yGAAyG;AACjH,QAAA,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,EAAS;QACjB,KAAK,EAAE,IAAkB;KAC1B;AAED,IAAA,OAAO,KAAK,GAAG,IAAI,GAAG,CAAC;QACrB,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3B,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3B,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC1B,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3B,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3B,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC,EAAE,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC,EAAE,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAChC,KAAA,CAAC;;AAIF,IAAA,OAAO,MAAM,GAAG,CAAC,CAAM,KAAa;AAClC,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACf;QAAE,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,KAAK;QACd;AACA,QAAA,OAAO,IAAI;AACb,IAAA,CAAC;AAED,IAAA,OAAO,SAAS,GAAG,CAAC,CAAM,KAAY;;AAEpC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;cACnB,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE;cACjC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE;cACjC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE;cACjC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE;AACnC,cAAE,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;AACxC,IAAA,CAAC;AAED,IAAA,OAAO,SAAS,GAAG,CAAC,CAAM,KAAI;;QAE5B,IAAI,CAAC,KAAK,EAAE;AAAE,YAAA,OAAO,EAAE;QACvB,IAAI,SAAS,GAAG,IAAI;AACpB,QAAA,IAAI;AACF,YAAA,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3B;QAAE,OAAO,CAAC,EAAE;AACV,YAAA,GAAG,CAAC,CAAC,EAAE,qDAAqD,CAAC;AAC7D,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,SAAS;AAClB,IAAA,CAAC;;AAGD,IAAA,OAAO,gBAAgB,GAAG,CAAC,KAAa,KAAmB;QACzD,IAAI,cAAc,GAAG,EAAE;AACvB,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/C;AACA,QAAA,OAAO,cAAc;AACvB,IAAA,CAAC;;AAGD,IAAA,OAAO,cAAc,GAAG,CAAC,YAA2B,KAAY;AAC9D,QAAA,OAAO,MAAM,CAAC,aAAa,CAAC,GAAG,YAAY,CAAC;AAC9C,IAAA,CAAC;;AAGD,IAAA,OAAO,eAAe,GAAG,CAAC,aAAqB,KAAY;QACzD,OAAO,MAAM,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E,IAAA,CAAC;IAED,OAAO,aAAa,GAAG,CAAC,KAAU,EAAE,EAAY,KAAW;;QAEzD,IAAI,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACnC,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,CAAM,KAAI;YAC3B,EAAE,CAAC,CAAC,CAAC;AACP,QAAA,CAAC,CAAC;;AAEF,QAAA,OAAO,SAAS;AAClB,IAAA,CAAC;;AAGD,IAAA,OAAO,mBAAmB,GAAG,CAAC,EAAO,EAAE,MAAA,GAA0B,IAAI,EAAE,MAAA,GAAiB,QAAQ,KAAI;QAClG,IAAI,CAAC,GAAG,CAAC;AACT,QAAA,KAAK,IAAI,CAAC,IAAI,EAAE,EAAE;AAChB,YAAA,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE;gBACpC,IAAI,MAAM,EAAE;oBACV,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtB;YACF;AACA,YAAA,CAAC,EAAE;;AAEH,YAAA,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE;AACtC,gBAAA,CAAC,IAAI,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC;YACzD;;AAEA,YAAA,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE;AACrC,gBAAA,CAAC,IAAI,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC;YACzD;QACF;AACA,QAAA,OAAO,CAAC;AACV,IAAA,CAAC;IAED,OAAO,WAAW,GAAG,CAAC,CAAA,GAAY,EAAE,EAAE,cAAA,GAAyB,OAAO,KAAY;QAChF,IAAI,CAAC,IAAI,IAAI;AAAE,YAAA,OAAO,EAAE;QACxB,IAAI,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,cAAc,GAAG,KAAK,CAAC;QACvD,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AACxC,IAAA,CAAC;IAED,OAAO,IAAI,GAAG,CAAC,IAAuB,EAAE,MAAW,KAAS;;;QAG1D,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,QAAQ,EAAE;YACvC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE;AACrC,gBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;;oBAEtB,IAAI,EAAE,GAAc,IAAe,CAAC,KAAK,CAAC,GAAG,CAAC;oBAC9C,IAAI,OAAO,GAAG,MAAM;oBACpB,IAAI,KAAK,GAAG,EAAE;;AAEd,oBAAA,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACf,wBAAA,IAAI,OAAO,EAAE;AACX,4BAAA,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;AAClB,4BAAA,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE;gCAC5B,OAAO,GAAG,KAAK;4BACjB;iCAAO;gCACL,OAAO,GAAG,IAAI;4BAChB;wBACF;AACF,oBAAA,CAAC,CAAC;AACF,oBAAA,OAAO,KAAK;gBACd;qBAAO;;AAEL,oBAAA,OAAO,MAAM,CAAE,IAAe,CAAC;gBACjC;YACF;iBAAO,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,EAAE;;gBAE3C,IAAI,KAAK,GAAG,IAAI;AAChB,gBAAA,KAAK,IAAI,CAAC,IAAK,IAAiB,EAAE;oBAChC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC;AAC/B,oBAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,wBAAA,OAAO,KAAK;oBACd;gBACF;YACF;iBAAO;AACL,gBAAA,GAAG,CAAC,CAAC,EAAE,yDAAyD,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC;YACxG;QACF;aAAO;YACL,GAAG,CAAC,CAAC,EAAE,qEAAqE,GAAG,OAAO,MAAM,GAAG,GAAG,CAAC;QACrG;AACA,QAAA,OAAO,IAAI;AACb,IAAA,CAAC;IAED,OAAO,IAAI,GAAG,CAAC,IAAY,EAAE,KAAU,EAAE,MAAW,KAAI;;;AAGtD,QAAA,IAAI,OAAO,MAAM,IAAI,QAAQ,EAAE;YAC7B,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE;AACrC,gBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;;oBAEtB,IAAI,EAAE,GAAa,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;oBAClC,IAAI,OAAO,GAAG,MAAM;;AAEpB,oBAAA,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACf,wBAAA,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;;AAEpC,4BAAA,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK;wBACpB;6BAAO;AACL,4BAAA,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE;AAC3C,gCAAA,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE;4BACjB;wBACF;AACA,wBAAA,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;AACtB,oBAAA,CAAC,CAAC;AACF,oBAAA,OAAO,MAAM;gBACf;qBAAO;;AAEL,oBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK;AACpB,oBAAA,OAAO,MAAM;gBACf;YACF;iBAAO;AACL,gBAAA,GAAG,CAAC,CAAC,EAAE,yDAAyD,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC;YACxG;QACF;aAAO;YACL,GAAG,CAAC,CAAC,EAAE,gDAAgD,GAAG,OAAO,MAAM,GAAG,GAAG,CAAC;QAChF;AACA,QAAA,OAAO,IAAI;AACb,IAAA,CAAC;AAED,IAAA,OAAO,WAAW,GAAG,CAAC,IAAS,KAAI;;QAEjC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE;;AAErC,YAAA,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QACxB;;QAEA,IAAI,OAAO,GAAQ,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;aACrD,GAAG,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAA,CAAC,CAAC;aACzC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI,EAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC1D,IAAI,IAAI,EAAE;AAER,YAAA,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;AAC3B,gBAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACnB,oBAAA,OAAO,OAAO,CAAC,CAAC,CAAC;gBACnB;YACF;AACA,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAM,KAAI;;AAE7D,gBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC;AACxC,YAAA,CAAC,CAAC;;AAEF,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAM,KAAI;;AAErE,gBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC;AACxC,YAAA,CAAC,CAAC;QACJ;AACA,QAAA,OAAO,OAAO;AAChB,IAAA,CAAC;AAED,IAAA,OAAO,gBAAgB,GAAG,IAAI,GAAG,EAAoB;AACrD,IAAA,OAAO,OAAO,GAAG,MAAK;QACpB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAY,KAAI,EAAG,IAAI,EAAE,IAAI,IAAI;AAAE,YAAA,EAAE,EAAE,CAAA,CAAC,CAAC,CAAC;QAC7F,UAAU,CAAC,MAAK;YACd,OAAO,CAAC,OAAO,EAAE;QACnB,CAAC,EAAE,IAAI,CAAC;AACV,IAAA,CAAC;IAED,OAAO,YAAY,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,KAAU,KAAI;QACjE,IAAI,SAAS,GAAQ,EAAE;AACvB,QAAA,IAAI;AACF,YAAA,SAAS,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3D;QAAE,OAAO,CAAC,EAAE;AACV,YAAA,GAAG,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAC7B,YAAA,OAAO,GAAG;QACZ;AACA,QAAA,IAAI,CAAC,CAAC,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;YAAE,KAAK,GAAG,CAAC;QACxD,OAAO,CAAA,EAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA,CAAE;AAChD,IAAA,CAAC;AAED,IAAA,OAAO,IAAI,GAAG,MAAK;;QAEjB,OAAO,sCAAsC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAM,KAAI;AACzE,YAAA,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;AACtF,QAAA,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE;AAC7B,IAAA,CAAC;;AAGD,IAAA,OAAO,OAAO,GAAG,CAAC,SAAiB,KAAI;AACrC,QAAA,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC7D,IAAA,CAAC;AAED,IAAA,OAAO,kBAAkB,CAAC,KAAY,EAAE,YAAsB,EAAA;;AAE5D,QAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;AAAE,YAAA,OAAO,IAAI;AAClC,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC;AACzB,QAAA,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,IAAG;AAC1B,YAAA,OAAO,YAAY,CAAC,KAAK,CAAC,WAAW,IAAG;;AAEtC,gBAAA,IAAI,EAAE,WAAW,IAAI,MAAM,CAAC,IAAI,EAAE,WAAW,IAAI,QAAQ,CAAC,EAAE;AAC1D,oBAAA,GAAG,CAAC,CAAC,EAAE,mBAAmB,WAAW,CAAA,gCAAA,CAAkC,CAAC;oBACxE,OAAO,KAAK,CAAC;gBACf;gBACA,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,WAAW,CAAC;AACtD,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,OAAO,kBAAkB,CAAC,KAAY,EAAE,WAAmB,EAAA;;QAEzD,IAAI,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI,EAAG,OAAO,CAAC,CAAC,WAAW,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC;AAClE,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;YACrB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE;gBAC/B,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;AAC9B,gBAAA,OAAO,CAAC;YACV;;AAAO,gBAAA,OAAO,IAAI;QACpB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;IACnB;AAEA,IAAA,OAAO,WAAW,CAAC,KAAY,EAAE,YAAsB,EAAA;;AAErD,QAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;AAAE,YAAA,OAAO,KAAK;AACnC,QAAA,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,IAAG;AAC1B,YAAA,OAAO,YAAY,CAAC,KAAK,CAAC,WAAW,IAAG;AACtC,gBAAA,IAAI,EAAE,WAAW,IAAI,MAAM,CAAC,EAAE;AAC5B,oBAAA,OAAO,IAAI;gBACb;AACA,gBAAA,OAAO,KAAK;AACd,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,OAAO,aAAa,CAAC,KAAY,EAAE,WAAmB,EAAA;;QAEpD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAW,EAAE,GAAQ,KAAI;AAC5C,YAAA,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,QAAQ,EAAE;AACjD,gBAAA,OAAO,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC;YAC/B;AACA,YAAA,OAAO,GAAG;QACZ,CAAC,EAAE,CAAC,CAAC;IACP;AAEA,IAAA,OAAO,UAAU,GAAG,CAAC,KAAqB,KAAY;QACpD,IAAI,UAAU,GAAG,KAAK,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;AAC7C,QAAA,OAAO,UAAU,EAAE,GAAG,CAAC,GAAG,IAAG;AAC3B,YAAA,IAAI,OAAO,GAAG,GAAG,CAAC,WAAW,EAAE;AAC/B,YAAA,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC3D,gBAAA,OAAO,OAAO;YAChB;iBAAO;AACL,gBAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3D;QACF,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;AACpB,IAAA,CAAC;IAED,OAAO,QAAQ,GAAG,CAAC,IAAA,GAAsB,IAAI,EAAE,GAAA,GAAqB,IAAI,KAAI;;AAE1E,QAAA,IAAI,CAAC,GAAG;AAAE,YAAA,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE;AAC5C,QAAA,IAAI,IAAI,IAAI,IAAI,EAAE;AAChB,YAAA,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;QAC5C;aAAO;YACL,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE;QAC7C;AACF,IAAA,CAAC;AAED,IAAA,OAAO,cAAc,GAAG,CAAC,GAAY,KAAI;AACvC,QAAA,IAAI,CAAC,GAAG;AAAE,YAAA,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE;QAC5C,OAAO,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,GAAQ,EAAE,GAAW,KAAI;AACtE,YAAA,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AACnC,YAAA,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AAChB,YAAA,OAAO,GAAG;QACZ,CAAC,EAAE,EAAE,CAAC;AACR,IAAA,CAAC;AAED,IAAA,OAAO,aAAa,CAAC,GAAS,EAAE,WAAmB,EAAE,EAAA;QACnD,IAAI,GAAG,EAAE;;AAEP,YAAA,IAAI,GAAG,IAAI,IAAI,EAAE;gBACf,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC3B,oBAAA,QAAQ,GAAG,QAAQ,GAAG,GAAG,CAAC;gBAC5B;gBACA,IAAI,YAAY,GAAG,EAAE;gBACrB,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE;AACpC,oBAAA,KAAK,IAAI,WAAW,IAAI,GAAG,EAAE;AAC3B,wBAAA,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,QAAQ,EAAE;4BACjD,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC/C,4BAAA,YAAY,IAAI,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,EAAI,QAAQ,EAAE;4BAC7C,GAAG,CAAC,CAAC,EAAE,CAAA,+CAAA,EAAkD,WAAW,CAAA,oBAAA,CAAsB,EAAE,QAAQ,CAAC;wBACvG;6BAAO;AACL,4BAAA,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE;gCAC5B,YAAY,IAAI,IAAI,WAAW,CAAA,CAAA,EAAI,GAAG,CAAC,WAAW,CAAC,CAAA,CAAE;4BACvD;wBACF;oBACF;gBACF;qBAAO;AACL,oBAAA,GAAG,CAAC,CAAC,EAAE,uDAAuD,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACvF;AACA,gBAAA,QAAQ,GAAG,QAAQ,GAAG,YAAY;YACpC;QACF;AACA,QAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;AAAE,YAAA,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;AACzC,QAAA,OAAO,QAAQ;IACjB;AAEA;;;AAGG;AACH,IAAA,OAAO,cAAc,CACnB,cAAiB,EACjB,UAAkC,EAAA;QAElC,MAAM,eAAe,GAAQ,EAAE;AAC/B,QAAA,UAAU,CAAC,OAAO,CAAC,IAAI,IAAG;YACxB,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;AACrC,YAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,gBAAA,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YACrD;iBAAO;AACL,gBAAA,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI;YACnC;AACF,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,eAAoB;IAE7B;AAEA;;AAEG;IACH,OAAO,MAAM,CAAC,QAAiB,EAAA;AAC7B,QAAA,IAAI,GAAG;QACP,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI;AACF,gBAAA,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC;YACzB;YAAE,OAAO,CAAC,EAAE;AACV,gBAAA,GAAG,CAAC,CAAC,EAAE,kBAAkB,EAAE,QAAQ,CAAC;YACtC;QACF;AACA,QAAA,OAAO,GAAG;IACZ;IAEA,OAAO,YAAY,CAAC,KAAa,EAAA;QAC/B,MAAM,KAAK,GAAG,yBAAyB;AACvC,QAAA,IAAI,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;QACpI,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC3D;AAEA,IAAA,OAAO,IAAI,CAAuB,KAAU,EAAE,WAAc,EAAA;AAC1D,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzE;IAEA,OAAO,iBAAiB,CAAC,KAAa,EAAA;QACpC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;IACrC;IAEA,OAAO,WAAW,CAAC,KAAa,EAAA;QAC9B,MAAM,KAAK,GAAG,oBAAoB;AAClC,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1B;AAGA;;;;;;AAMG;AACH,IAAA,OAAO,KAAK,CAAC,MAAa,EAAE,MAAa,EAAE,WAAoB,EAAA;QAC7D,IAAI,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,KAAK;AACpC,YAAA,GAAG,MAAM;YACT,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,WAA6B,CAAC,EAAE,QAAQ,EAAE,IAAI,MAAM,CAAC,WAAkC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;AACjI,SAAA,CAAC,CAAC;AACH,QAAA,OAAO,CAAC,CAAC,EAAE,kBAAkB,CAAC;AAC9B,QAAA,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC;AAC1B,QAAA,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC;AAC1B,QAAA,GAAG,CAAC,CAAC,EAAE,aAAa,EAAE,SAAS,CAAC;QAChC,KAAK,CAAC,CAAC,CAAC;AACR,QAAA,OAAO,SAAS;IAClB;AAEA;;;AAGG;AACH,IAAA,OAAO,cAAc,CAAC,KAAa,EAAE,UAAkB,CAAC,EAAA;QACtD,IAAI,IAAI,GAAG,CAAC;AACZ,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,YAAA,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AACjD,YAAA,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACrB;;AAEA,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC;IAC1D;AAEA,IAAA,OAAO,kBAAkB,CAAC,WAAmB,EAAE,OAAe,EAAA;QAC5D,OAAO,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,GAAG,GAAG,OAAO;IAC5D;AAGA,IAAA,OAAO,mBAAmB,GAAG,CAAC,CAAA,GAAY,EAAE,KAAY;QACtD,IAAI,CAAC,IAAI,IAAI;AAAE,YAAA,OAAO,EAAE;;QAExB,OAAO,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;AAC3C,IAAA,CAAC;AAED,IAAA,OAAO,cAAc,GAAG,CAAC,CAAS,KAAY;QAC5C,IAAI,CAAC,IAAI,IAAI;AAAE,YAAA,OAAO,EAAE;;AAExB,QAAA,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;QAChB,OAAO,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC9D,IAAA,CAAC;AAED,IAAA,OAAO,QAAQ,GAAG,OAAO,KAAK,GAAG,qBAAqB,EAAE,OAAO,GAAG,CAAC,KAAI;AACrE,QAAA,IAAI,MAAM,GAAG,MAAM,CAAC,eAAe;QACnC,IAAI,UAAU,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC;AAChF,QAAA,IAAI,iBAAiB,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI;AACpE,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,KAAI;AACvB,YAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;AACnB,gBAAA,GAAG,CAAC,CAAC,EAAE,+CAA+C,CAAC;gBACvD;YACF;AACA,YAAA,IAAI,KAAK,IAAI,EAAE,EAAE;AACf,gBAAA,MAAM,GAAG,GAAG,IAAI,wBAAwB,CAAC,KAAK,CAAC;AAC/C,gBAAA,GAAG,CAAC,IAAI,GAAG,OAAO;AAClB,gBAAA,GAAG,CAAC,KAAK,GAAG,iBAAiB;AAC7B,gBAAA,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;AACd,gBAAA,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC;AACf,gBAAA,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,KAAI,EAAG,CAAC,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC;gBAC/B,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,KAAI,EAAG,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC;gBAChE,MAAM,CAAC,MAAM,EAAE;AACf,gBAAA,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;YACnB;AACF,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;AAED,IAAA,aAAa,kBAAkB,CAAC,QAAkB,EAAA;AAChD,QAAA,IAAI,MAAM,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;YAC/C,QAAQ,CAAC,KAAK,EAAE;QAClB;AACA,QAAA,OAAO,QAAQ;IACjB;AAEA,IAAA,OAAO,mBAAmB,GAAA;AACxB,QAAA,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE;IACjC;AAEA,IAAA,OAAO,kBAAkB,CAAC,GAAW,EAAE,GAAW,EAAA;AAChD,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG;IAC1D;IAEA,OAAO,WAAW,CAAC,CAAmB,EAAA;;AAEpC,QAAA,IAAI,MAAM,CAAC,YAAY,EAAE;AACvB,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE;AACvC,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE;AACpC,YAAA,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC3B,SAAS,EAAE,eAAe,EAAE;AAC5B,YAAA,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC;QAC5B;IACF;AAEA,IAAA,OAAO,kBAAkB,CAAC,IAAS,EAAE,UAAkB,EAAA;AACrD,QAAA,IAAI,IAAI,IAAI,IAAI,EAAE;AAChB,YAAA,GAAG,CAAC,CAAC,EAAE,8EAA8E,CAAC;AACtF,YAAA,OAAO,IAAI;QACb;QAEA,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE;AACrC,YAAA,GAAG,CAAC,CAAC,EAAE,8DAA8D,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7F,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE;YAC5B,GAAG,CAAC,CAAC,EAAE,4DAA4D,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACtF,YAAA,OAAO,IAAI;QACb;QAEA,IAAI,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE;AACjC,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,OAAO,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAA;;QAE7C,CAAC,IAAI,GAAG;QACR,CAAC,IAAI,GAAG;AAER,QAAA,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EACnC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAC1C,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EACb,CAAC,GAAG,CAAC,EACL,CAAC,GAAG,CAAC,EACL,CAAC,GAAG,CAAC;QAEP,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE;YACpB,CAAC,GAAG,CAAC;YACL,CAAC,GAAG,CAAC;YACL,CAAC,GAAG,CAAC;QACP;aAAO,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;YAC7B,CAAC,GAAG,CAAC;YACL,CAAC,GAAG,CAAC;YACL,CAAC,GAAG,CAAC;QACP;aAAO,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;YAC9B,CAAC,GAAG,CAAC;YACL,CAAC,GAAG,CAAC;YACL,CAAC,GAAG,CAAC;QACP;aAAO,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;YAC9B,CAAC,GAAG,CAAC;YACL,CAAC,GAAG,CAAC;YACL,CAAC,GAAG,CAAC;QACP;aAAO,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;YAC9B,CAAC,GAAG,CAAC;YACL,CAAC,GAAG,CAAC;YACL,CAAC,GAAG,CAAC;QACP;aAAO,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;YAC9B,CAAC,GAAG,CAAC;YACL,CAAC,GAAG,CAAC;YACL,CAAC,GAAG,CAAC;QACP;;AAGA,QAAA,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;AAC7B,QAAA,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;AAC7B,QAAA,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;;AAG7B,QAAA,MAAM,KAAK,GAAG,CAAC,CAAM,KAAI;YACvB,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC1B,YAAA,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AAC3C,QAAA,CAAC;AAED,QAAA,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;IAC7C;IAEA,OAAO,QAAQ,CAAC,KAAU,EAAA;QACxB,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,EAAE;YACrC,IAAK,KAAoB,CAAC,MAAM,IAAK,KAAoB,CAAC,MAAM,GAAG,CAAC,EAAE;AACpE,gBAAA,OAAO,IAAI;YACb;QACF;AACA,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,OAAO,OAAO,CAAC,KAAa,EAAE,KAAsB,EAAA;QAClD,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,YAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE;AACvD,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;IAClD;;IAGA,OAAO,eAAe,CAAC,UAAoB,EAAA;AACzC,QAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;AAAE,YAAA,OAAO,CAAC;QAEnC,MAAM,MAAM,GAAG,EAAE;AACjB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,YAAA,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD;AAEA,QAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;AAAE,YAAA,OAAO,CAAC;QAC/B,IAAI,qBAAqB,GAAG,CAAC;AAE7B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtC,YAAA,qBAAqB,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9D;QAEA,OAAO,qBAAqB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACpD;;AAGA,IAAA,OAAO,cAAc,GAAG,CAAC,MAAkB,KAAc;AACvD,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE;AAClC,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAC5B,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CACzC;AACH,IAAA,CAAC;;AAGD,IAAA,OAAO,iBAAiB,GAAG,CAAC,MAAkB,KAAc;AAC1D,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE;QAClC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1D,IAAA,CAAC;;IAGD,OAAO,YAAY,GAAG,CAAC,IAAU,EAAE,WAAmB,KAAI;QACxD,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;QACrC,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AACrC,QAAA,CAAC,CAAC,IAAI,GAAG,GAAG;AACZ,QAAA,CAAC,CAAC,QAAQ,GAAG,WAAW;AACxB,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5B,CAAC,CAAC,KAAK,EAAE;AACT,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AAC5B,QAAA,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC;AAC1B,IAAA,CAAC;IAED,OAAO,gBAAgB,CAAC,KAAa,EAAA;;AAEnC,QAAA,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS;AACzB,aAAA,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KACf,KAAK,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAClE,CAAC,IAAI,CAAC,EAAE,CAAC;IACd;IAEA,OAAO,SAAS,CAAC,KAAa,EAAA;AAC5B,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD;IAEA,OAAO,UAAU,CAAC,KAAa,EAAA;AAC7B,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD;IAEA,OAAO,UAAU,CAAC,KAAa,EAAA;;QAE7B,OAAO,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE;IAChE;IAEA,OAAO,eAAe,CAAC,KAAa,EAAA;;;QAGlC,IAAI,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;AAC7D,QAAA,OAAO,aAAa;IACtB;;IAGA,OAAO,UAAU,CAAC,KAAa,EAAA;AAC7B,QAAA,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/D;IAEA,OAAO,kBAAkB,CAAC,CAAoB,EAAA;;QAE5C,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE;YACjC,OAAQ,CAAc,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACxF;QACA,IAAI,KAAK,GAAI,CAAY;AACzB,QAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACxB,YAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACpC;AACA,QAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACzB,YAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACrC;QACA,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,EAAE;AAC/F,YAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACrC;QACA,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAC9E,YAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QACtC;AAEA,QAAA,OAAO,KAAK;IACd;IAEA,OAAO,QAAQ,CAAC,IAAuB,EAAA;;QAErC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,EAAE;YACpC,OAAQ,IAAiB,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACjF;QAEA,IAAI,KAAK,GAAI,IAAe;AAC5B,QAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACxB,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK;QACnC;AAAO,aAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAChC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK;QACnC;aAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC5E,OAAO,KAAK,GAAG,IAAI;QACrB;AAAO,aAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC9B,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI;QAClC;AAAO,aAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC9B,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI;QAClC;aAAO;YACL,OAAO,KAAK,GAAG,GAAG;QACpB;IACF;IAEA,OAAO,cAAc,CAAC,OAAsC,EAAA;AAC1D,QAAA,OAAO,CAAC,WAAW,GAAG,OAAO;IAC/B;IAEA,OAAO,aAAa,CAAC,KAAa,EAAA;AAChC,QAAA,IAAI,SAAS,GAAG,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9F,QAAA,OAAO,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC;IAC7C;IAEA,OAAO,mBAAmB,CAAC,KAAa,EAAA;AACtC,QAAA,IAAI,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC3D,QAAA,OAAO,MAAM;IACf;;IAGA,OAAO,iBAAiB,CAAC,KAAa,EAAA;AACpC,QAAA,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;YAC3B,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;QACrC;QACA,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAC5C,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC;QAC1C,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC;QAC9C,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAC5C,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAC5C,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,YAAY,EAAE,YAAY,CAAC;QACpD,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,YAAY,EAAE,YAAY,CAAC;QACpD,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC;QAC1C,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAC5C,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAC5C,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC;QAC1C,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC;QAC1C,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC;QAC9C,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC;QAChD,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAC5C,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC;QAC9C,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC;QAChD,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC;QAC9C,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC;QAChD,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,aAAa,CAAC;QACtD,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC;QAC9C,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC;QAC9C,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC;QAC9C,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,WAAW,CAAC;QAClD,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,aAAa,CAAC;QACtD,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC;QAC9C,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC;QACxC,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,eAAe,EAAE,eAAe,CAAC;QAC1D,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC;QAChD,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC;QAC9C,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAE5C,QAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC;AACpE,QAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;AAC/D,QAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC;AACpE,QAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;AAC/D,QAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC1E,QAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC;AACrE,QAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC1E,QAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC;AACrE,QAAA,OAAO,KAAK;IACd;;;MCvgEW,UAAU,CAAA;IAErB,MAAM,GAAG,MAAM,CAAe,EAAE;+EAAC;AACjC,IAAA,WAAW,GAAG,QAAQ,CAAyB,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oFAAC;AAClF,IAAA,WAAW,GAAG,QAAQ,CAAW,MAAK;QACpC,IAAI,MAAM,GAAa,EAAE;AACzB,QAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;AAC5C,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,MAAM;YAC/C,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvC,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA,EAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC,CAAC;YACtE;QACF;AACA,QAAA,OAAO,MAAM;IACf,CAAC;oFAAC;IACF,MAAM,GAAG,MAAM,CAAM,EAAE;+EAAC;IACxB,eAAe,GAAG,MAAM,CAAuC,EAAE;wFAAC;IAElE,WAAW,GAAG,MAAM,CAAU,KAAK;oFAAC;IACpC,SAAS,GAAY,KAAK;IAC1B,UAAU,GAAY,KAAK;IAC3B,QAAQ,GAAQ,IAAI;AAEpB,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AACrB,QAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;YAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC;AAChC,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;YAC3B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,gBAAA,OAAO,KAAK;YACd;QACF;AACA,QAAA,OAAO,IAAI;IACb,CAAC;+EAAC;AACF,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC1B,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC;IACxD,CAAC;oFAAC;AAEF,IAAA,WAAA,CAAY,MAAoB,EAAE,WAAA,GAAmB,EAAE,EAAE,WAAgB,IAAI,EAAA;AAC3E,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;QACxB,IAAI,MAAM,GAAQ,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC;QACxD,IAAI,aAAa,GAAiB,EAAE;QACpC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACrC,aAAa,CAAC,GAAG,CAAC,GAAG;gBACnB,GAAG,MAAM,CAAC,GAAG,CAAC;AACd,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,EAAE;gBACV,GAAG,OAAO,CAAC,WAAW;aACvB;QACH;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC;AAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QACvB,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,YAAY,CAAC,SAAc,EAAA;QACzB,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,QAAQ,EAAE;AAC3C,YAAA,GAAG,CAAC,CAAC,EAAE,mDAAmD,CAAC;QAC7D;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAG;AACrB,YAAA,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,SAAS,EAAE;AAC/B,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,IAAwB,EAAA;AAClC,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAG;AACrB,YAAA,IAAI,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;AAC1B,gBAAA,OAAO,CAAC,CAAC,IAAI,CAAC;YAChB;iBAAO;gBACL,GAAG,CAAC,CAAC,EAAE,CAAA,uCAAA,EAA0C,MAAM,CAAC,IAAI,CAAC,CAAA,yBAAA,CAA2B,CAAC;YAC3F;AACA,YAAA,OAAO,EAAE,GAAG,CAAC,EAAE;AACjB,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,CAAC,IAAwB,EAAE,YAA2C,EAAA;AAC/E,QAAA,IAAI,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AACzC,YAAA,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAChF;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAG;AACrB,YAAA,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACX,gBAAA,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,YAAY,EAAE;YAC3C;iBAAO;gBACL,GAAG,CAAC,CAAC,EAAE,CAAA,iCAAA,EAAoC,MAAM,CAAC,IAAI,CAAC,CAAA,aAAA,CAAe,CAAC;YACzE;AACA,YAAA,OAAO,EAAE,GAAG,CAAC,EAAE;AACjB,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,mBAAmB,CAAC,YAA2C,EAAA;AAC7D,QAAA,IAAI,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AACzC,YAAA,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAChF;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAG;YACrB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAChC,gBAAA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,YAAY,EAAE;YACzC;AACA,YAAA,OAAO,EAAE,GAAG,CAAC,EAAE;AACjB,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,cAAc,CAAC,KAAU,EAAA;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAG;YACrB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAChC,gBAAA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;YAChB;AACA,YAAA,OAAO,EAAE,GAAG,CAAC,EAAE;AACjB,QAAA,CAAC,CAAC;IACJ;IAEA,kBAAkB,GAAA;AAChB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AAC7C,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;IAC9B;AAEQ,IAAA,YAAY,CAAC,MAAoB,EAAE,WAAA,GAAmB,EAAE,EAAA;QAC9D,IAAI,MAAM,GAAQ,EAAE;QACpB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACrC,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;QACvC;QACA,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,WAAW,EAAE;AACtC,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,cAAc,CAAC,QAAiB,EAAA;AAC9B,QAAA,IAAI,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,CAAC;IACxC;AAEA,IAAA,aAAa,CAAC,OAAgB,EAAA;AAC5B,QAAA,IAAI,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,CAAC;IACvC;AAEA,IAAA,MAAM,OAAO,GAAA;QACX,IAAI,cAAc,GAAa,EAAE;QACjC,IAAI,eAAe,GAAa,EAAE;;AAGlC,QAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE;YACrD,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC;YAClD,IAAI,cAAc,IAAI,OAAO,cAAc,CAAC,kBAAkB,KAAK,UAAU,EAAE;AAC7E,gBAAA,IAAI;AACF,oBAAA,MAAM,cAAc,CAAC,kBAAkB,EAAE;gBAC3C;gBAAE,OAAO,KAAK,EAAE;oBACd,GAAG,CAAC,CAAC,EAAE,CAAA,2BAAA,EAA8B,GAAG,CAAA,EAAA,CAAI,EAAE,KAAK,CAAC;gBACtD;YACF;QACF;;AAGA,QAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;YAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC;AAChC,YAAA,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3C,GAAG,CAAC,CAAC,EAAE,CAAA,8BAAA,EAAiC,GAAG,CAAA,EAAA,CAAI,EAAE,KAAK,CAAC,MAAM,CAAC;AAC9D,gBAAA,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;YAC1B;AACA,YAAA,IAAI,KAAK,CAAC,OAAO,EAAE;AACjB,gBAAA,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,CAAA,sBAAA,CAAwB,CAAC;AAC/C,gBAAA,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;YAC3B;QACF;;AAGA,QAAA,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,YAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAA,EAAG,eAAe,CAAC,MAAM,CAAA,mBAAA,EAAsB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;QACpG;AACA,QAAA,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,YAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAA,EAAG,cAAc,CAAC,MAAM,CAAA,+BAAA,EAAkC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;QAC9G;AACA,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE;IACtB;AAEQ,IAAA,MAAM,WAAW,GAAA;AACvB,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QAC1B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACrC,YAAA,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;;AAEvB,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAAE;AACrE,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;;AAGhD,YAAA,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;AAAE,gBAAA,KAAK,CAAC,OAAO,GAAG,MAAM,CAAQ,EAAE;4FAAC;;AAGlE,YAAA,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,IAAI;;AAGtC,YAAA,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;gBAAE;;AAG7C,YAAA,IAAI,KAAK,CAAC,MAAM,EAAE;gBAChB,GAAG,CAAC,CAAC,EAAE,CAAA,cAAA,EAAiB,GAAG,CAAA,mBAAA,CAAqB,EAAE,YAAY,CAAC;AAC/D,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC/C,IAAI,OAAO,GAAiB,IAAI;AAChC,gBAAA,IAAI;oBACF,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;;AAGlC,oBAAA,IAAI,KAAK,CAAC,MAAM,EAAE;wBAChB,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;oBACvC;;AAEA,oBAAA,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,EAAE;wBAC5D,OAAO,GAAG,EAAE;oBACd;;AAGA,oBAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;;AAEtB,wBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;wBAC1D,GAAG,CAAC,CAAC,EAAE,CAAA,cAAA,EAAiB,GAAG,CAAA,YAAA,CAAc,EAAE,OAAO,CAAC;oBACrD;gBACF;gBAAE,OAAO,KAAK,EAAE;oBACd,GAAG,CAAC,CAAC,EAAE,CAAA,qCAAA,EAAwC,GAAG,CAAA,EAAA,CAAI,EAAE,KAAK,CAAC;gBAChE;AACA,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;;AAGhD,gBAAA,IAAI,KAAK,CAAC,mBAAmB,EAAE;oBAC7B,MAAM,WAAW,GAAG,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7E,oBAAA,IAAI,KAAK,CAAC,aAAa,IAAI,WAAW,EAAE;AACtC,wBAAA,IAAI;4BACF,KAAK,CAAC,aAAa,GAAG,IAAI,EAAE,WAAW,CAAC;wBAC1C;wBAAE,OAAO,GAAG,EAAE;4BACZ,GAAG,CAAC,CAAC,EAAE,CAAA,2CAAA,EAA8C,GAAG,CAAA,CAAA,CAAG,EAAE,GAAG,CAAC;wBACnE;oBACF;gBACF;;AAGA,gBAAA,IAAI,KAAK,CAAC,WAAW,EAAE;oBACrB,MAAM,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC;gBACxC;YACF;QACF;IACF;;IAGA,SAAS,GAAA;AACP,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE;QACnC,MAAM,YAAY,GAAQ,EAAE;QAC5B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACrC,YAAA,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ;gBAAE;AAC1B,YAAA,IAAI,GAAG,IAAI,aAAa,EAAE;gBACxB,YAAY,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC;YACxC;QACF;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;IAC/B;;IAGA,aAAa,GAAA;QACX,MAAM,YAAY,GAAQ,EAAE;AAC5B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE;AACnC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QAC5B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;YACzC,IAAI,KAAK,CAAC,IAAI,IAAI,aAAa,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AAClD,gBAAA,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC;YACtD;QACF;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;IAC/B;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE;AAC/D,YAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;QACxB;aAAO;AACL,YAAA,GAAG,CAAC,CAAC,EAAE,8CAA8C,CAAC;QACxD;IACF;AAED;AAYD;;AAEoD;IAExC;AAAZ,CAAA,UAAY,MAAM,EAAA;AAChB,IAAA,MAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,MAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,MAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,MAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,MAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,MAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,MAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,MAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,MAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,MAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,MAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,MAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,MAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,MAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,MAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,MAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,MAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,MAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,MAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,MAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,MAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,MAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,MAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,MAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,MAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AAEnB,CAAC,EA3BW,MAAM,KAAN,MAAM,GAAA,EAAA,CAAA,CAAA;AA6HlB;;AAEoD;MAEvC,OAAO,CAAA;AAElB,IAAA,OAAO,YAAY,CAAI,IAAsB,EAAE,MAAe,EAAE,MAAoC,EAAA;QAClG,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,YAAY;YACzB,IAAI;YACJ,MAAM;AACN,YAAA,GAAG,MAAM;SACV;IACH;IAEA,OAAO,MAAM,CAAI,IAAS,EAAE,cAAsB,EAAE,KAAiC,EAAE,MAAoC,EAAA;QACzH,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,IAAI;YACJ,cAAc;YACd,QAAQ,EAAE,IAAI;AACd,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,GAAG,MAAM;SACV;IACH;AAEA,IAAA,OAAO,QAAQ,CAAI,IAAsB,EAAE,MAAe,EAAE,MAAoC,EAAA;QAC9F,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,QAAQ;YACrB,IAAI;YACJ,MAAM;AACN,YAAA,GAAG,MAAM;SACV;IACH;AAEA,IAAA,OAAO,KAAK,CAAI,IAAsB,EAAE,MAAe,EAAE,MAAoC,EAAA;QAC3F,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,KAAK;YAClB,IAAI;YACJ,MAAM;AACN,YAAA,GAAG,MAAM;SACV;IACH;AAEA,IAAA,OAAO,GAAG,CAAI,IAAsB,EAAE,MAAe,EAAE,MAAoC,EAAA;QACzF,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI;YACJ,MAAM;AACN,YAAA,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI;AAC9B,YAAA,WAAW,EAAE,gBAAgB;AAC7B,YAAA,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AACrB,YAAA,GAAG,MAAM;SACV;IACH;AAEA,IAAA,OAAO,IAAI,CAAI,IAAsB,EAAE,MAAe,EAAE,MAAoC,EAAA;QAC1F,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI;YACJ,MAAM;AACN,YAAA,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI;AAC/B,YAAA,WAAW,EAAE,oBAAoB;AACjC,YAAA,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,YAAA,GAAG,MAAM;SACV;IACH;AAEA,IAAA,OAAO,OAAO,CAAI,IAAsB,EAAE,MAAe,EAAE,MAAoC,EAAA;QAC7F,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI;YACJ,MAAM;AACN,YAAA,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI;AACnC,YAAA,WAAW,EAAE,sCAAsC;AACnD,YAAA,IAAI,EAAE,EAAE;;AAER,YAAA,GAAG,MAAM;SACV;IACH;IAEA,OAAO,MAAM,CAAI,IAAsB,EAAE,UAAqB,EAAE,MAAe,EAAE,MAAoC,EAAA;QACnH,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,IAAI;YACJ,MAAM;YACN,UAAU;AACV,YAAA,GAAG,MAAM;SACV;IACH;AAEA,IAAA,OAAO,IAAI,CAAI,IAAsB,EAAE,MAAe,EAAE,MAAoC,EAAA;QAC1F,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI;YACJ,MAAM;AACN,YAAA,GAAG,MAAM;SACV;IACH;AAEA,IAAA,OAAO,QAAQ,CAAI,IAAsB,EAAE,MAAe,EAAE,MAAoC,EAAA;QAC9F,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,QAAQ;YACrB,IAAI;YACJ,MAAM;AACN,YAAA,GAAG,MAAM;SACV;IACH;AAEA,IAAA,OAAO,OAAO,CAAI,IAAS,EAAE,MAAe,EAAE,MAAoC,EAAA;QAChF,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,OAAO;YACpB,IAAI;YACJ,MAAM;AACN,YAAA,GAAG,MAAM;SACV;IACH;AAEA,IAAA,OAAO,MAAM,CAAI,IAAsB,EAAE,MAAe,EAAE,MAAoC,EAAA;QAC5F,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,QAAQ;YACrB,IAAI;YACJ,MAAM;AACN,YAAA,IAAI,EAAE,6BAA6B;AACnC,YAAA,GAAG,MAAM;SACV;IACH;AAEA,IAAA,OAAO,KAAK,CAAI,IAAsB,EAAE,MAAe,EAAE,MAAoC,EAAA;QAC3F,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,KAAK;YAClB,IAAI;YACJ,MAAM;AACN,YAAA,GAAG,MAAM;SACV;IACH;AAEA,IAAA,OAAO,MAAM,CAAI,IAAsB,EAAE,MAAe,EAAE,MAAoC,EAAA;QAC5F,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,MAAM;AACnB,YAAA,IAAI,EAAE,KAAK;YACX,IAAI;YACJ,MAAM;AACN,YAAA,GAAG,MAAM;SACV;IACH;AAEA,IAAA,OAAO,IAAI,CAAI,IAAsB,EAAE,MAAe,EAAE,MAAoC,EAAA;QAC1F,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI;YACJ,MAAM;AACN,YAAA,GAAG,MAAM;SACV;IACH;AAEA,IAAA,OAAO,WAAW,CAAI,IAAsB,EAAE,MAAe,EAAE,MAAoC,EAAA;QACjG,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,WAAW;YACxB,IAAI;YACJ,MAAM;AACN,YAAA,GAAG,MAAM;SACV;IACH;AAEA,IAAA,OAAO,OAAO,CAAI,IAAsB,EAAE,MAAe,EAAE,MAAoC,EAAA;QAC7F,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,OAAO;YACpB,IAAI;YACJ,MAAM;AACN,YAAA,GAAG,MAAM;SACV;IACH;AAEA,IAAA,OAAO,SAAS,CAAI,IAAsB,EAAE,MAAe,EAAE,MAAoC,EAAA;QAC/F,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,SAAS;YACtB,IAAI;YACJ,MAAM;AACN,YAAA,GAAG,MAAM;SACV;IACH;AAEA,IAAA,OAAO,MAAM,CAAI,IAAsB,EAAE,MAAe,EAAE,MAAoC,EAAA;QAC5F,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,IAAI;YACJ,MAAM;AACN,YAAA,GAAG,MAAM;SACV;IACH;AAEA,IAAA,OAAO,QAAQ,CAAI,IAAsB,EAAE,MAAe,EAAE,MAAoC,EAAA;QAC9F,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,QAAQ;YACrB,IAAI;YACJ,MAAM;AACN,YAAA,GAAG,MAAM;SACV;IACH;AAEA,IAAA,OAAO,UAAU,CAAI,IAAsB,EAAE,MAAe,EAAE,MAAoC,EAAA;QAChG,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,UAAU;YACvB,IAAI;YACJ,MAAM;AACN,YAAA,GAAG,MAAM;SACV;IACH;AAEA,IAAA,OAAO,MAAM,CAAI,IAAsB,EAAE,MAAe,EAAE,MAAoC,EAAA;QAC5F,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,IAAI;YACJ,MAAM;AACN,YAAA,GAAG,MAAM;SACV;IACH;AAEA,IAAA,OAAO,MAAM,CAAI,IAAsB,EAAE,MAAe,EAAE,MAAoC,EAAA;QAC5F,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,IAAI;YACJ,MAAM;AACN,YAAA,GAAG,MAAM;SACV;IACH;AAEA,IAAA,OAAO,KAAK,CAAI,IAAsB,EAAE,MAAe,EAAE,MAAoC,EAAA;QAC3F,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,KAAK;YAClB,IAAI;YACJ,MAAM;AACN,YAAA,GAAG,MAAM;SACV;IACH;AAEA,IAAA,OAAO,MAAM,CAAI,IAAsB,EAAE,MAAe,EAAE,MAAoC,EAAA;QAC5F,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,IAAI;YACJ,MAAM;AACN,YAAA,GAAG,MAAM;SACV;IACH;AAEA,IAAA,OAAO,IAAI,CAAI,IAAsB,EAAE,MAAe,EAAE,MAAoC,EAAA;QAC1F,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI;YACJ,MAAM;AACN,YAAA,GAAG,MAAM;SACV;IACH;AAEA,IAAA,OAAO,QAAQ,CAAI,IAAsB,EAAE,MAAe,EAAE,MAAoC,EAAA;QAC9F,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,QAAQ;YACrB,IAAI;YACJ,MAAM;AACN,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,GAAG,MAAM;SACV;IACH;AAEA,IAAA,OAAO,IAAI,CAAI,IAAsB,EAAE,MAAe,EAAE,MAAoC,EAAA;QAC1F,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI;YACJ,MAAM;AACN,YAAA,GAAG,MAAM;SACV;IACH;AAEA,IAAA,OAAO,WAAW,CAAI,IAAsB,EAAE,MAAe,EAAE,MAAoC,EAAA;QACjG,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,IAAI;YACJ,MAAM;AACN,YAAA,MAAM,EAAE,2BAA2B;AACnC,YAAA,GAAG,MAAM;SACV;IACH;AAED;AAED;;AAEoD;MAEvC,QAAQ,CAAA;AAEnB,IAAA,OAAO,OAAO,CAAI,IAA8B,EAAE,MAAe,EAAE,MAAoC,EAAA;QACrG,OAAO;AACL,YAAA,GAAG,OAAO,CAAC,MAAM,CAAK,IAAY,EAAE,MAAM,EAAE;AAC1C,gBAAA,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;aAC3F,CAAC;AACF,YAAA,GAAG,MAAM;SACV;IACH;;AAEA,IAAA,OAAO,MAAM,CAAI,IAA8B,EAAE,MAAe,EAAE,MAAoC,EAAA;QACpG,OAAO,OAAO,CAAC,MAAM,CAAK,IAAY,EAAE,MAAM,EAAE,MAAM,CAAC;IACzD;;;AAGA,IAAA,OAAO,IAAI,CAAI,IAA8B,EAAE,MAAe,EAAE,MAAoC,EAAA;QAClG,OAAO,OAAO,CAAC,IAAI,CAAK,IAAY,EAAE,MAAM,EAAE,MAAM,CAAC;IACvD;;AAEA,IAAA,OAAO,MAAM,CAAI,IAA8B,EAAE,MAAe,EAAE,MAAoC,EAAA;QACpG,OAAO;AACL,YAAA,GAAG,OAAO,CAAC,MAAM,CAAK,IAAY,EAAE,MAAM,CAAC;AAC3C,YAAA,GAAG,MAAM;SACV;IACH;;AAEA,IAAA,OAAO,IAAI,CAAI,IAA8B,EAAE,MAAe,EAAE,MAAoC,EAAA;QAClG,OAAO;AACL,YAAA,GAAG,OAAO,CAAC,IAAI,CAAK,IAAY,EAAE,MAAM,CAAC;AACzC,YAAA,GAAG,MAAM;SACV;IACH;;AAED;AAED;;AAEoD;IAExC;AAAZ,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,eAAA,CAAA,GAAA,eAA+B;AACjC,CAAC,EAFW,UAAU,KAAV,UAAU,GAAA,EAAA,CAAA,CAAA;MAUT,KAAK,CAAA;AAEhB,IAAA,OAAO,aAAa,GAAA;QAClB,OAAO;YACL,IAAI,EAAE,UAAU,CAAC,aAAa;AAC9B,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa;AACvC,YAAA,OAAO,EAAE,CAAC,KAAU,KAAa;gBAC/B,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;AACxC,gBAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;YAClC;SACD;IACH;AAEA,IAAA,OAAO,WAAW,GAAA;QAChB,OAAO;AACL,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW;AACrC,YAAA,OAAO,EAAE,CAAC,KAAU,KAAa;AAC/B,gBAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAC7B;SACD;IACH;AAEA,IAAA,OAAO,oBAAoB,GAAA;QACzB,OAAO;AACL,YAAA,IAAI,EAAE,sBAAsB;AAC5B,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,oBAAoB;AAC9C,YAAA,OAAO,EAAE,CAAC,KAAU,KAAa;AAC/B,gBAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAAE,oBAAA,OAAO,KAAK;AACvC,gBAAA,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;AACtB,oBAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;AAAE,wBAAA,OAAO,KAAK;gBAC7D;AACA,gBAAA,OAAO,IAAI;YACb;SACD;IACH;AAEA,IAAA,OAAO,YAAY,CAAC,GAAW,EAAE,GAAW,EAAA;QAC1C,OAAO;AACL,YAAA,IAAI,EAAE,aAAa;YACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC;AAC/C,YAAA,OAAO,EAAE,CAAC,KAAU,KAAa;gBAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,oBAAA,OAAO,KAAK;AAC3C,gBAAA,OAAO,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG;YACrC;SACD;IACH;IAEA,OAAO,aAAa,CAAC,aAAqB,EAAA;QACxC,OAAO;AACL,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU;AACpC,YAAA,OAAO,EAAE,CAAC,KAAU,KAAa;AAC/B,gBAAA,IAAI,CAAC,KAAK;AAAE,oBAAA,OAAO,KAAK;AACxB,gBAAA,OAAO,KAAK,CAAC,MAAM,IAAI,aAAa;YACtC;SACD;IACH;IAEA,OAAO,aAAa,CAAC,aAAqB,EAAA;QACxC,OAAO;AACL,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU;AACpC,YAAA,OAAO,EAAE,CAAC,KAAU,KAAa;AAC/B,gBAAA,IAAI,CAAC,KAAK;AAAE,oBAAA,OAAO,IAAI;AACvB,gBAAA,OAAO,KAAK,CAAC,MAAM,IAAI,aAAa;YACtC;SACD;IACH;AAEA,IAAA,OAAO,YAAY,GAAA;QACjB,OAAO;AACL,YAAA,IAAI,EAAE,iBAAiB;AACvB,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe;AACzC,YAAA,OAAO,EAAE,CAAC,KAAU,KAAa;AAC/B,gBAAA,IAAI,CAAC,KAAK;AAAE,oBAAA,OAAO,IAAI;gBACvB,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;AAC3C,gBAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;YAClC;SACD;IACH;AAEA,IAAA,OAAO,oBAAoB,GAAA;QACzB,OAAO;AACL,YAAA,IAAI,EAAE,yBAAyB;AAC/B,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,uBAAuB;AACjD,YAAA,OAAO,EAAE,CAAC,KAAU,KAAa;AAC/B,gBAAA,IAAI,CAAC,KAAK;AAAE,oBAAA,OAAO,IAAI;gBACvB,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;AAC9C,gBAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;YAClC;SACD;IACH;AAEA,IAAA,OAAO,YAAY,GAAA;QACjB,OAAO;AACL,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,YAAY;AACtC,YAAA,OAAO,EAAE,CAAC,KAAU,KAAa;AAC/B,gBAAA,IAAI,CAAC,KAAK;AAAE,oBAAA,OAAO,IAAI;AACvB,gBAAA,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAC5B;SACD;IACH;AAEA,IAAA,OAAO,YAAY,GAAA;QACjB,OAAO;AACL,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,YAAY;AACtC,YAAA,OAAO,EAAE,CAAC,KAAU,KAAa;AAC/B,gBAAA,IAAI,CAAC,KAAK;AAAE,oBAAA,OAAO,IAAI;AACvB,gBAAA,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAC5B;SACD;IACH;AAEA,IAAA,OAAO,SAAS,GAAA;QACd,OAAO;AACL,YAAA,IAAI,EAAE,WAAW;AACjB,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS;AACnC,YAAA,OAAO,EAAE,CAAC,KAAU,KAAa;AAC/B,gBAAA,IAAI,CAAC,KAAK;AAAE,oBAAA,OAAO,IAAI;AACvB,gBAAA,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAC5B;SACD;IACH;AAEA,IAAA,OAAO,WAAW,GAAA;QAChB,OAAO;AACL,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW;AACrC,YAAA,OAAO,EAAE,CAAC,KAAU,KAAa;AAC/B,gBAAA,IAAI,CAAC,KAAK;AAAE,oBAAA,OAAO,IAAI;AACvB,gBAAA,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;YACvC;SACD;IACH;AAEA,IAAA,OAAO,KAAK,GAAA;QACV,OAAO;AACL,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO;AACjC,YAAA,OAAO,EAAE,CAAC,KAAU,KAAa;AAC/B,gBAAA,IAAI,CAAC,KAAK;AAAE,oBAAA,OAAO,IAAI;gBACvB,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC9C;SACD;IACH;AAEA,IAAA,OAAO,IAAI,CAAC,YAAiB,EAAE,QAAiB,EAAA;QAC9C,OAAO;AACL,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,QAAQ,EAAE,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM;AAC5C,YAAA,OAAO,EAAE,CAAC,KAAU,KAAa;gBAC/B,OAAO,KAAK,KAAK,YAAY;YAC/B;SACD;IACH;AAEA,IAAA,OAAO,UAAU,GAAA;QACf,OAAO;AACL,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU;AACpC,YAAA,OAAO,EAAE,CAAC,KAAU,KAAa;AAC/B,gBAAA,IAAI,CAAC,KAAK;AAAE,oBAAA,OAAO,IAAI;gBACvB,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;gBACrC,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;gBACxC,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;gBACxC,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;AAElD,gBAAA,OAAO,SAAS,IAAI,YAAY,IAAI,YAAY,IAAI,WAAW;YACjE;SACD;IACH;IAEA,OAAO,MAAM,CAAC,aAA+C,EAAA;QAC3D,OAAO;AACL,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ;AAClC,YAAA,OAAO,EAAE,OAAO,KAAU,KAAsB;AAC9C,gBAAA,OAAO,MAAM,aAAa,CAAC,KAAK,CAAC;YACnC;SACD;IACH;AAEA,IAAA,OAAO,KAAK,GAAA;QACV,OAAO;AACL,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO;AACjC,YAAA,OAAO,EAAE,CAAC,KAAU,KAAa;AAC/B,gBAAA,IAAI,CAAC,KAAK;AAAE,oBAAA,OAAO,IAAI;AACvB,gBAAA,OAAO,uCAAuC,CAAC,IAAI,CAAC,KAAK,CAAC;YAC5D;SACD;IACH;AAEA,IAAA,OAAO,GAAG,GAAA;QACR,OAAO;AACL,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK;AAC/B,YAAA,OAAO,EAAE,CAAC,KAAU,KAAa;AAC/B,gBAAA,IAAI,CAAC,KAAK;AAAE,oBAAA,OAAO,IAAI;gBACvB,IAAI,CAAC,GAAG,CAAC;gBACT,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACrC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACzC,IAAI,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC;AACtC,gBAAA,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE;AAAE,oBAAA,OAAO,KAAK;gBAAE;gBACtC,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1B,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAAE,oBAAA,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAAE;AACnE,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;AACd,gBAAA,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;AAC5B,gBAAA,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE;gBACpB,CAAC,GAAG,CAAC;AACL,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAAE,oBAAA,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAAE;AACpE,gBAAA,CAAC,GAAG,CAAC,GAAG,EAAE;AACV,gBAAA,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;gBAC5B,OAAO,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;YACvC;SACD;IACH;AAEA,IAAA,OAAO,IAAI,GAAA;QACT,OAAO;AACL,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM;AAChC,YAAA,OAAO,EAAE,CAAC,KAAU,KAAa;AAC/B,gBAAA,IAAI,CAAC,KAAK;AAAE,oBAAA,OAAO,IAAI;AACvB,gBAAA,IAAI,SAAS,GAAG,CAAC,IAAY,KAAI;oBAC/B,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC7C,oBAAA,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBAChD,IAAI,CAAC,IAAI,EAAE;AAAE,wBAAA,OAAO,KAAK;oBAAE;AAC3B,oBAAA,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC;AAClC,oBAAA,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE;AAAE,wBAAA,OAAO,KAAK;oBAAE;oBACvC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;oBAC5B,IAAI,CAAC,GAAG,CAAC;AACT,oBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAAE,wBAAA,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;oBAAE;AACpE,oBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAChB,oBAAA,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;AAC5B,oBAAA,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE;oBACpB,CAAC,GAAG,CAAC;AACL,oBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AAAE,wBAAA,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;oBAAE;AACpE,oBAAA,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACZ,oBAAA,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;oBAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;AACxC,gBAAA,CAAC;AACD,gBAAA,OAAO,SAAS,CAAC,KAAK,CAAC;YACzB;SACD;IACH;AAEA,IAAA,OAAO,aAAa,GAAA;QAClB,OAAO;AACL,YAAA,IAAI,EAAE,eAAe;AACrB,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,aAAa;AACvC,YAAA,OAAO,EAAE,CAAC,KAAU,KAAa;gBAC/B,OAAO,KAAK,KAAK,IAAI;YACvB;SACD;IACH;AAEA,IAAA,OAAO,WAAW,GAAA;QAChB,OAAO;AACL,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW;AACrC,YAAA,OAAO,EAAE,CAAC,KAAU,KAAa;AAC/B,gBAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;AAAE,oBAAA,OAAO,KAAK;gBACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;AAAE,oBAAA,OAAO,KAAK;gBAClE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AAAE,oBAAA,OAAO,KAAK;AAC5D,gBAAA,OAAO,IAAI;YACb;SACD;IACH;IAEA,OAAO,SAAS,GAAG;AACjB,QAAA,WAAW,EAAE,oBAAoB;AACjC,QAAA,aAAa,EAAE,iBAAiB;AAChC,QAAA,WAAW,EAAE,6BAA6B;AAC1C,QAAA,oBAAoB,EAAE,wCAAwC;AAC9D,QAAA,WAAW,EAAE,CAAC,GAAW,EAAE,GAAW,KAAK,CAAA,yBAAA,EAA4B,GAAG,CAAA,GAAA,EAAM,GAAG,CAAA,CAAA,CAAG;AACtF,QAAA,UAAU,EAAE,iBAAiB;AAC7B,QAAA,UAAU,EAAE,mBAAmB;AAC/B,QAAA,gBAAgB,EAAE,iBAAiB;AACnC,QAAA,eAAe,EAAE,gBAAgB;AACjC,QAAA,uBAAuB,EAAE,0BAA0B;AACnD,QAAA,YAAY,EAAE,mBAAmB;AACjC,QAAA,YAAY,EAAE,mBAAmB;AACjC,QAAA,SAAS,EAAE,gBAAgB;AAC3B,QAAA,WAAW,EAAE,2BAA2B;AACxC,QAAA,OAAO,EAAE,iBAAiB;AAC1B,QAAA,MAAM,EAAE,qBAAqB;AAC7B,QAAA,UAAU,EAAE,cAAc;AAC1B,QAAA,QAAQ,EAAE,iBAAiB;AAC3B,QAAA,OAAO,EAAE,yBAAyB;AAClC,QAAA,KAAK,EAAE,eAAe;AACtB,QAAA,MAAM,EAAE,gBAAgB;AACxB,QAAA,aAAa,EAAE,oBAAoB;KACpC;;;MC/gCmB,gBAAgB,CAAA;AAIpC,IAAA,IAAI;AAEJ,IAAA,MAAM,GAAG,KAAK;0FAAc;IAC5B,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAc;AACrC,IAAA,KAAK,GAAG,KAAK;yFAAa;AAE1B,IAAA,IAAI,GAAG,KAAK;wFAAsB;AAClC,IAAA,IAAI,GAAG,KAAK;wFAAsB;IAClC,gBAAgB,GAAG,KAAK,CAAU,KAAK;yFAAC;AACxC,IAAA,oBAAoB,GAAG,IAAI,GAAG,EAAU;AACxC,IAAA,oBAAoB,GAAG,IAAI,GAAG,EAAU;IAExC,UAAU,GAAG,MAAM,EAAc;AAEjC,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;QACxB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK;QAC/B,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;IAChD,CAAC;kFAAC;IACF,gBAAgB,GAAG,MAAM,CAAU,IAAI;yFAAC;IACxC,eAAe,GAAG,MAAM,CAAU,KAAK;wFAAC;IACxC,SAAS,GAAG,MAAM,CAAS,CAAC;kFAAC;AAE7B,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;QACxB,OAAO,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,IAAI,EAAE;IAClC,CAAC;kFAAC;AACF,IAAA,SAAS,GAAG,QAAQ,CAAoB,MAAK;AAC3C,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;QAChC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AACxC,YAAA,OAAO,EAAE;QACX;QACA,IAAI,SAAS,GAAsB,EAAE;AACrC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,KAAK,IAAI,YAAY,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AAC5C,gBAAA,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;oBACpC,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC;oBAC5C,IAAI,CAAC,KAAK,EAAE;AACV,wBAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC;oBAC7C;oBACA,SAAS,GAAG,CAAC,GAAG,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;gBACjH;qBAAO;AACL,oBAAA,IAAI,YAAY,CAAC,IAAI,KAAK,SAAS,EAAE;;wBAEnC,IAAI,cAAc,GAAG,SAAS;AAC9B,wBAAA,KAAK,IAAI,SAAS,IAAI,YAAY,CAAC,MAAM,EAAE;4BACzC,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC;AACzC,4BAAA,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE;AACvB,gCAAA,cAAc,GAAG,KAAK,CAAC,IAAI;gCAC3B;4BACF;wBACF;AACA,wBAAA,YAAY,CAAC,IAAI,GAAG,cAAc;oBACpC;oBACA,IAAI,CAAC,YAAY,EAAE;AACjB,wBAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC;oBAC7C;oBACA,SAAS,GAAG,CAAC,GAAG,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;gBACpG;YACF;QACF;AACA,QAAA,OAAO,SAAS;IAClB,CAAC;kFAAC;AAEF,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;YAChC,IAAI,CAAC,oBAAoB,EAAE;AAC7B,QAAA,CAAC,CAAC;IACJ;IACA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC;QAC9D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;QAG/B,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,GAAG,CAAC;AAAE,gBAAA,GAAG,CAAC,CAAC,EAAE,qCAAqC,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAC5H,YAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,GAAG,CAAC;AAAE,gBAAA,GAAG,CAAC,CAAC,EAAE,qCAAqC,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC9H,CAAC,EAAE,CAAC,CAAC;IACP;IAEA,oBAAoB,CAAC,iBAA0B,KAAK,EAAA;AAClD,QAAA,IAAI,cAAc;YAAE,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;AAE1D,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAChC,QAAA,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;QAEvD,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,IAAI,KAAK;AAC9C,QAAA,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;AAEtD,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QACpE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;IAC1C;uGA9FoB,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,QAAA,EAAA,IAAA,EAAA,gBAAgB,g5BAF1B,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAEQ,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,QAAQ,EAAE,EAAE;AACb,iBAAA;;;MCTY,cAAc,CAAA;IAEhB,IAAI,GAAG,KAAK,CAAC,QAAQ;6EAAc;IACnC,IAAI,GAAG,KAAK,CAAC,QAAQ;6EAAsB;IACpD,MAAM,GAAG,MAAM,EAAU;AAEhB,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;8EAAC;AACzD,IAAA,KAAK,GAA6C,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;8EAAC;IAE5G,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,KAAK,EAAE,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IAC9E;IACA,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,IAAG;AACvC,YAAA,MAAM,OAAO,GAAG,EAAE,GAAG,GAAG,EAAE;AAC1B,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC3B,YAAA,OAAO,OAAO;AAChB,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,YAA2C,EAAA;AACrD,QAAA,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC;IACpD;AAEA,IAAA,WAAW,CAAC,QAAa,EAAE,KAAA,GAAiB,IAAI,EAAA;AAC9C,QAAA,IAAI,KAAK;YAAE,IAAI,CAAC,UAAU,EAAE;AAC5B,QAAA,IAAI,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,QAAQ,EAAE,CAAC;IACvD;IAEA,UAAU,GAAA;QACR,IAAI,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACrC;IAEA,YAAY,GAAA;QACV,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AAC/B,QAAA,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAClD,QAAA,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,IAAI,CAAC;IAC/C;AAEA,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,IAAI,MAAM;IACrC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtC;;AAGA,IAAA,MAAM,YAAY,GAAA;QAChB,UAAU,CAAC,YAAW;AACpB,YAAA,MAAM,IAAI,CAAC,kBAAkB,EAAE;AAC/B,YAAA,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChC,CAAC,EAAE,CAAC,CAAC;IACP;AAEA,IAAA,MAAM,kBAAkB,GAAA;;QAEtB,IAAI,CAAC,eAAe,EAAE;;AAEtB,QAAA,MAAM,IAAI,CAAC,oBAAoB,EAAE;IAEnC;IAEA,eAAe,GAAA;QACb,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK;QACjC,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,IAAI,OAAO,EAAE;AACjC,YAAA,GAAG,CAAC,CAAC,EAAE,CAAA,OAAA,EAAU,IAAI,CAAC,IAAI,EAAE,CAAA,6BAAA,CAA+B,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;YAC1E,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC;QAChD;aAAO;YACL,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC;QAC/C;IACF;AAEA,IAAA,MAAM,oBAAoB,GAAA;QACxB,IAAI,eAAe,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,IAAI,EAAE;QAChD,IAAI,CAAC,eAAe,CAAC,MAAM;YAAE;AAC7B,QAAA,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE;YACnC,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC/C,IAAI,CAAC,OAAO,EAAE;AACZ,oBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC;gBACnC;qBAAO;AACL,oBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAClC;YACF;iBAAO;gBACL,OAAO,CAAC,IAAI,CAAC,CAAA,gDAAA,EAAmD,IAAI,CAAC,IAAI,EAAE,CAAA,EAAA,CAAI,CAAC;YAClF;QACF;IACF;AAEA,IAAA,YAAY,CAAC,QAAgB,EAAA;QAC3B,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,IAAI,EAAE;QAC5C,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACnC,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC1D;IACF;AAEA,IAAA,WAAW,CAAC,WAAmB,EAAA;QAC7B,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,IAAI,EAAE;AAC5C,QAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YACrC,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC,EAAE,CAAC;QAC1E;IACF;uGAzGW,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,QAAA,EAAA,IAAA,EAAA,cAAc,+ZAD4B,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAC5C,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,oBAAoB,EAAE,QAAQ,EAAE,EAAE,EAAE;;sBAyCxD,WAAW;uBAAC,iBAAiB;;;AC1ChC,MAAM,CAAC,GAA4B;;IAEjC,YAAY,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,8IAA8I,CAAC,EAAE;IAC3L,aAAa,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,8IAA8I,CAAC,EAAE;IAC5L,cAAc,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,uHAAuH,CAAC,EAAE;IACtK,eAAe,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,uHAAuH,CAAC,EAAE;IACvK,cAAc,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,sHAAsH,CAAC,EAAE;AACrK,IAAA,qBAAqB,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,qHAAqH,EAAE,sHAAsH,CAAC,EAAE;AACnS,IAAA,sBAAsB,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,sHAAsH,EAAE,uHAAuH,CAAC,EAAE;;IAEtS,YAAY,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,sIAAsI,CAAC,EAAE;IACnL,iBAAiB,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,gHAAgH,CAAC,EAAE;IAClK,SAAS,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,mHAAmH,CAAC,EAAE;IAC7J,WAAW,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,gHAAgH,CAAC,EAAE;;IAE5J,GAAG,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,gMAAgM,CAAC,EAAE;IACpO,MAAM,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,sKAAsK,CAAC,EAAE;;IAE7M,OAAO,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,gIAAgI,CAAC,EAAE;IACxK,YAAY,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,oPAAoP,CAAC,EAAE;IACjS,eAAe,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,mSAAmS,CAAC,EAAE;IACnV,QAAQ,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,4IAA4I,CAAC,EAAE;IACrL,cAAc,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,iOAAiO,CAAC,EAAE;IAChR,QAAQ,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,qEAAqE,CAAC,EAAE;;IAE9G,cAAc,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,wLAAwL,CAAC,EAAE;IACvO,UAAU,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,wMAAwM,CAAC,EAAE;IACnP,sBAAsB,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,0OAA0O,CAAC,EAAE;IACjS,aAAa,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,iRAAiR,CAAC,EAAE;;IAE/T,QAAQ,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,2KAA2K,CAAC,EAAE;IACpN,QAAQ,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,6PAA6P,CAAC,EAAE;;IAEtS,qBAAqB,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,6HAA6H,CAAC,EAAE;IACnL,KAAK,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,4CAA4C,CAAC,EAAE;;IAElF,WAAW,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,4PAA4P,CAAC,EAAE;IACxS,aAAa,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,kJAAkJ,CAAC,EAAE;;IAEhM,cAAc,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,mLAAmL,CAAC,EAAE;IAClO,mBAAmB,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,sIAAsI,CAAC,EAAE;IAC1L,kBAAkB,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,iRAAiR,CAAC,EAAE;;AAEpU,IAAA,cAAc,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,6dAA6d,EAAE,8HAA8H,CAAC,EAAE;;AAE5oB,IAAA,gBAAgB,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,qKAAqK,EAAE,gZAAgZ,EAAE,0RAA0R,CAAC,EAAE;;AAEp4B,IAAA,KAAK,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,6CAA6C,EAAE,2FAA2F,CAAC,EAAE;AAChL,IAAA,WAAW,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,qNAAqN,EAAE,+JAA+J,EAAE,4PAA4P,CAAC,EAAE;;IAEhqB,aAAa,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,6VAA6V,CAAC,EAAE;AAC3Y,IAAA,WAAW,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,kCAAkC,EAAE,2WAA2W,EAAE,6SAA6S,CAAC,EAAE;AAC1uB,IAAA,iBAAiB,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,kUAAkU,EAAE,gOAAgO,CAAC,EAAE;;AAEtlB,IAAA,OAAO,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,gFAAgF,EAAE,qEAAqE,CAAC,EAAE;AAC/L,IAAA,cAAc,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,+DAA+D,EAAE,oGAAoG,CAAC,EAAE;;AAEpN,IAAA,MAAM,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,uJAAuJ,EAAE,wNAAwN,CAAC,EAAE;IACxZ,QAAQ,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,8UAA8U,CAAC,EAAE;AACvX,IAAA,OAAO,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,6JAA6J,EAAE,kOAAkO,CAAC,EAAE;AACza,IAAA,aAAa,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,qEAAqE,EAAE,sGAAsG,CAAC,EAAE;AAC3N,IAAA,OAAO,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,eAAe,EAAE,0FAA0F,CAAC,EAAE;AACnJ,IAAA,OAAO,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,qHAAqH,EAAE,+LAA+L,CAAC,EAAE;IAC9V,MAAM,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,wNAAwN,CAAC,EAAE;AAC/P,IAAA,YAAY,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,sPAAsP,EAAE,0LAA0L,CAAC,EAAE;IAC/d,eAAe,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,gSAAgS,CAAC,EAAE;IAChV,OAAO,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,8QAA8Q,CAAC,EAAE;IACtT,MAAM,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,yfAAyf,CAAC,EAAE;;IAEhiB,iBAAiB,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,mVAAmV,CAAC,EAAE;IACrY,eAAe,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,2SAA2S,CAAC,EAAE;IAC3V,UAAU,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,0RAA0R,CAAC,EAAE;IACrU,gBAAgB,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,uJAAuJ,CAAC,EAAE;AACxM,IAAA,kBAAkB,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,oEAAoE,EAAE,wJAAwJ,CAAC,EAAE;;IAEjR,cAAc,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,kWAAkW,CAAC,EAAE;IACjZ,gBAAgB,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,uPAAuP,CAAC,EAAE;;IAExS,WAAW,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,ujBAAujB,CAAC,EAAE;IACnmB,YAAY,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,qhBAAqhB,CAAC,EAAE;AAClkB,IAAA,QAAQ,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,6aAA6a,EAAE,0FAA0F,CAAC,EAAE;;IAEljB,YAAY,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,6bAA6b,CAAC,EAAE;;IAE1e,YAAY,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,iPAAiP,CAAC,EAAE;IAC9R,cAAc,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,mPAAmP,CAAC,EAAE;IAClS,aAAa,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,mPAAmP,CAAC,EAAE;IACjS,eAAe,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,qPAAqP,CAAC,EAAE;IACrS,MAAM,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,kTAAkT,CAAC,EAAE;IACzV,QAAQ,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,0MAA0M,CAAC,EAAE;IACnP,WAAW,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,8YAA8Y,CAAC,EAAE;CAC3b;MAmBY,MAAM,CAAA;IACjB,IAAI,GAAG,KAAK,CAAC,QAAQ;6EAAU;AAC/B,IAAA,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI;4EAAC;uGAFjC,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAN,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAM,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAfP;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,mHAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAOU,MAAM,EAAA,UAAA,EAAA,CAAA;kBAjBlB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAAA,QAAA,EACT;;;;;;;;GAQT,EAAA,eAAA,EAKgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,mHAAA,CAAA,EAAA;;;MCtGpC,QAAQ,CAAA;IAEnB,KAAK,GAAG,SAAS,CAAC,OAAO,6EAAI,IAAI,EAAE,UAAU,EAAA,CAAG;IAChD,YAAY,GAAG,SAAS,CAAC,cAAc,oFAAI,IAAI,EAAE,UAAU,EAAA,CAAG;IAC9D,MAAM,GAAG,SAAS,CAAC,QAAQ,8EAAI,IAAI,EAAE,UAAU,EAAA,CAAG;IAElD,KAAK,GAAG,KAAK,CAA4B,IAAI;8EAAC;AAC9C,IAAA,SAAS,GAAG,KAAK;6FAA6B;IAC9C,UAAU,GAAG,KAAK,CAAU,IAAI;mFAAC;IACjC,WAAW,GAAG,KAAK,CAAU,KAAK;oFAAC;IACnC,aAAa,GAAG,KAAK,CAAS,EAAE;sFAAC;IACjC,cAAc,GAAG,sIAAsI;IAEvJ,OAAO,GAAG,MAAM,EAAgB;AAEhC,IAAA,QAAQ,GAAG,KAAK;4FAAW;IAC3B,gBAAgB,GAAG,KAAK,CAAU,KAAK;yFAAC;IACxC,eAAe,GAAG,KAAK,CAAU,KAAK;wFAAC;AACvC,IAAA,QAAQ,GAAG,KAAK;4FAAmB;IACnC,IAAI,GAAG,KAAK,CAAyB,MAAM;6EAAC;IAC5C,IAAI,GAAG,KAAK,CAAyB,EAAE;6EAAC;IACxC,OAAO,GAAG,KAAK,CAAS,EAAE;gFAAC;IAC3B,KAAK,GAAG,KAAK,CAAU,KAAK;8EAAC;AAE7B,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,oBAAoB,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,uBAAuB;mFAAC;AAC5G,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC5B,QAAA,OAAO,CAAA,KAAA,EAAQ,IAAI,CAAC,IAAI,EAAE,IAAI,MAAM,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,EAAE,EAAE;IAC1D,CAAC;sFAAC;IAEF,QAAQ,GAAG,MAAM,CAAqB,SAAS;iFAAC;IAChD,SAAS,GAAG,MAAM,CAAqB,SAAS;kFAAC;AAEjD,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;YACtB,QAAQ,IAAI;AACV,gBAAA,KAAK,SAAS;AACZ,oBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA,kBAAA,CAAoB,CAAC;AACvC,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA,qBAAA,CAAuB,CAAC;oBAC3C;AACF,gBAAA,KAAK,WAAW;AACd,oBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA,oBAAA,CAAsB,CAAC;AACzC,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA,uBAAA,CAAyB,CAAC;oBAC7C;AACF,gBAAA,KAAK,MAAM;AACT,oBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA,eAAA,CAAiB,CAAC;AACpC,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA,kBAAA,CAAoB,CAAC;oBACxC;AACF,gBAAA,KAAK,SAAS;AACZ,oBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA,kBAAA,CAAoB,CAAC;AACvC,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA,qBAAA,CAAuB,CAAC;oBAC3C;AACF,gBAAA,KAAK,SAAS;AACZ,oBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA,kBAAA,CAAoB,CAAC;AACvC,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA,qBAAA,CAAuB,CAAC;oBAC3C;AACF,gBAAA,KAAK,OAAO;AACV,oBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA,gBAAA,CAAkB,CAAC;AACrC,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA,mBAAA,CAAqB,CAAC;oBACzC;AACF,gBAAA,KAAK,MAAM;AACT,oBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA,eAAA,CAAiB,CAAC;AACpC,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA,kBAAA,CAAoB,CAAC;oBACxC;AACF,gBAAA,KAAK,OAAO;AACV,oBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA,gBAAA,CAAkB,CAAC;AACrC,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA,mBAAA,CAAqB,CAAC;oBACzC;AACF,gBAAA,KAAK,OAAO;AACV,oBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA,gBAAA,CAAkB,CAAC;AACrC,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA,mBAAA,CAAqB,CAAC;oBACzC;AACF,gBAAA,KAAK,MAAM;AACT,oBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA,eAAA,CAAiB,CAAC;AACpC,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA,kBAAA,CAAoB,CAAC;oBACxC;gBACF,KAAK,EAAE,CAAC;AACR,gBAAA;AACE,oBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;AAC5B,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;oBAC7B;;AAEN,QAAA,CAAC,CAAC;IACJ;AAGA,IAAA,YAAY,CAAC,EAAS,EAAA;AACpB,QAAA,IAAI,CAAC,eAAe,CAAC,EAAS,CAAC;IACjC;AAEA,IAAA,eAAe,CAAC,EAAgB,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,EAAE,CAAC,cAAc,EAAE;AACnB,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;gBAC3B,EAAE,CAAC,eAAe,EAAE;YACtB;YACA;QACF;QACA,IAAI,CAAC,KAAK,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE;AACnC,QAAA,IAAI,EAAE,YAAY,YAAY,EAAE;AAC9B,YAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QACvB;AACA,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;AACrB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;YAC3B,EAAE,CAAC,eAAe,EAAE;QACtB;IACF;AAEA,IAAA,YAAY,CAAC,CAAe,EAAA;AAC1B,QAAA,MAAM,YAAY,GAAG,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa;AAC1E,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,SAAS,CAAC,IAAI,CAAgB;AAC1E,QAAA,MAAM,IAAI,GAAG,YAAY,CAAC,qBAAqB,EAAE;;QAEjD,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;QAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG;;AAE9B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AAClD,QAAA,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI;AACtD,QAAA,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI;AACzC,QAAA,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI;AACxC,QAAA,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC9B,QAAA,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC;AAChC,QAAA,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,MAAK;YAC3C,MAAM,CAAC,MAAM,EAAE;AACjB,QAAA,CAAC,CAAC;IACJ;uGA7HW,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAEgB,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACI,UAAU,2GACtB,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdjD,6yCA8BS,EAAA,MAAA,EAAA,CAAA,m4IAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDtBG,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEL,QAAQ,EAAA,UAAA,EAAA,CAAA;kBANpB,SAAS;+BACE,WAAW,EAAA,OAAA,EAGZ,CAAC,MAAM,CAAC,EAAA,QAAA,EAAA,6yCAAA,EAAA,MAAA,EAAA,CAAA,m4IAAA,CAAA,EAAA;6FAIC,OAAO,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CACtB,cAAc,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAC1C,QAAQ,OAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MENtC,MAAM,CAAA;;AAGjB,IAAA,GAAG,GAAG,KAAK;uFAA6B;AAExC,IAAA,GAAG,GAAG,QAAQ,CAAgB,MAAK;AACjC,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QACpB,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE;AACpC,YAAA,IAAI,GAAI,GAAG,CAAC,EAAE;AAAE,gBAAA,OAAO,CAAC;YAAE;YAAC;AAC3B,YAAA,IAAI,GAAI,GAAG,GAAG,EAAE;AAAE,gBAAA,OAAO,GAAG;YAAE;YAAC;AAC/B,YAAA,OAAO,GAAI;QACb;AACA,QAAA,OAAO,IAAI;IACb,CAAC;4EAAC;uGAbS,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAN,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAM,iMCRnB,uIAEO,EAAA,MAAA,EAAA,CAAA,kqBAAA,CAAA,EAAA,CAAA;;2FDMM,MAAM,EAAA,UAAA,EAAA,CAAA;kBALlB,SAAS;+BACE,SAAS,EAAA,QAAA,EAAA,uIAAA,EAAA,MAAA,EAAA,CAAA,kqBAAA,CAAA,EAAA;;;MEOR,UAAU,CAAA;AAErB,IAAA,KAAK,GAAG,KAAK;yFAAe;AAC5B,IAAA,QAAQ,GAAG,KAAK;4FAAW;AAC3B,IAAA,QAAQ,GAAG,KAAK;4FAAW;IAC3B,OAAO,GAAG,MAAM,EAAS;IACzB,OAAO,GAAG,MAAM,EAAe;IAE/B,YAAY,GAAG,SAAS,CAAC,cAAc,oFAAI,IAAI,EAAE,UAAU,EAAA,CAAG;IAC9D,MAAM,GAAG,SAAS,CAAC,QAAQ,8EAAI,IAAI,EAAE,UAAU,EAAA,CAAG;IAClD,UAAU,GAAG,MAAM,CAAC,KAAK;mFAAC;AAE1B,IAAA,MAAM,UAAU,CAAC,IAAoB,EAAE,EAAS,EAAA;QAC9C,EAAE,CAAC,cAAc,EAAE;QACnB,EAAE,CAAC,eAAe,EAAE;QACpB,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAErB,QAAA,IAAI,MAAM,GAAK,EAAY,CAAC,MAAyB;QACrD,IAAI,IAAI,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;QACtE,IAAI,IAAI,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAAE,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AACvE,QAAA,IAAI,IAAI,IAAI,OAAO,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;AACvE,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB;IACF;IAEA,MAAM,MAAM,CAAC,EAAa,EAAA;QACxB,EAAE,CAAC,cAAc,EAAE;QACnB,EAAE,CAAC,eAAe,EAAE;AACpB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;QAC1B,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAErB,QAAA,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY;QACpC,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,IAAI,CAAC,YAAY,CAAC,EAAe,EAAE,KAAK,CAAC;YACzC;QACF;AACA,QAAA,IAAI,CAAC,YAAY,CAAC,EAAe,CAAC;AAElC,QAAA,MAAM,MAAM,GAAgB;AAC1B,YAAA,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,KAAK,EAAG,YAAY,CAAC,KAAa;AAClC,YAAA,IAAI,EAAE,SAAS;SAChB;;AAGD,QAAA,IAAI,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAEvD,YAAA,MAAM,CAAC,IAAI,GAAI,EAAsB;AACrC,YAAA,MAAM,CAAC,IAAI,GAAG,MAAM;YAEpB,WAAW,IAAI,IAAI,IAAI,YAAY,CAAC,KAAK,EAAE;gBACzC,IAAI,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AAC5C,gBAAA,IAAI,WAAW,GAAG,CAAC,EAAE;oBACnB,GAAG,CAAC,CAAC,EAAE,CAAA,YAAA,EAAe,IAAI,CAAC,IAAI,CAAA,uBAAA,CAAyB,CAAC;oBACzD;gBACF;gBACA,IAAI,MAAM,GAAkB,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;gBAC1D,IAAI,CAAC,MAAM,EAAE;oBACX,GAAG,CAAC,CAAC,EAAE,CAAA,gCAAA,EAAmC,IAAI,CAAC,IAAI,CAAA,CAAA,CAAG,CAAC;oBACvD;gBACF;AAEC,gBAAA,MAAM,CAAC,IAAwB,CAAC,IAAI,CAAC;AACpC,oBAAA,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;oBACvC,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,eAAe,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE;AAC3D,iBAAA,CAAC;YACJ;QAEF;;QAGA,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC;QAC/C,IAAI,IAAI,EAAE;AACR,YAAA,MAAM,CAAC,IAAI,GAAG,IAAI;AAClB,YAAA,MAAM,CAAC,IAAI,GAAG,MAAM;QACtB;;QAGA,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC;QAC9C,IAAI,IAAI,EAAE;AACR,YAAA,MAAM,CAAC,IAAI,GAAG,IAAI;AAClB,YAAA,MAAM,CAAC,IAAI,GAAG,MAAM;QACtB;;QAGA,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC;QACjD,IAAI,GAAG,EAAE;AACP,YAAA,MAAM,CAAC,IAAI,GAAG,GAAG;AACjB,YAAA,MAAM,CAAC,IAAI,GAAG,KAAK;QACrB;;AAGA,QAAA,IAAI;YACF,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,kBAAkB,CAAC;YACrD,IAAI,IAAI,EAAE;gBACR,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAC9B,gBAAA,MAAM,CAAC,IAAI,GAAG,MAAM;YACtB;QACF;QAAE,OAAO,CAAC,EAAE;;QAEZ;;AAGA,QAAA,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AAChC,YAAA,IAAI,CAAC,CAAC,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBAC7F,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC;gBACvC,IAAI,IAAI,EAAE;AACR,oBAAA,MAAM,CAAC,IAAI,GAAG,IAAI;AAClB,oBAAA,MAAM,CAAC,IAAI,GAAG,SAAS;gBACzB;YACF;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;IAC3B;AAEA,IAAA,YAAY,CAAC,EAAa,EAAE,UAAA,GAAqB,EAAE,EAAA;AACjD,QAAA,MAAM,YAAY,GAAG,EAAE,CAAC,aAAa,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa;AAC3E,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,SAAS,CAAC,IAAI,CAAgB;AAC1E,QAAA,MAAM,IAAI,GAAG,YAAY,CAAC,qBAAqB,EAAE;;QAEjD,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;QAChC,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG;;AAE/B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AAClD,QAAA,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI;AACtD,QAAA,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI;AACzC,QAAA,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI;AACxC,QAAA,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC9B,IAAI,UAAU,EAAE;AACd,YAAA,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;QAClC;AACA,QAAA,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC;AAChC,QAAA,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,MAAK;YAC3C,MAAM,CAAC,MAAM,EAAE;AACjB,QAAA,CAAC,CAAC;IACJ;uGA7IW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAQ4B,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACtB,UAAU,6CCpBjD,6iBASM,EAAA,MAAA,EAAA,CAAA,65CAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDEO,UAAU,EAAA,UAAA,EAAA,CAAA;kBANtB,SAAS;+BACE,cAAc,EAAA,eAAA,EAGP,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6iBAAA,EAAA,MAAA,EAAA,CAAA,65CAAA,CAAA,EAAA;AAUtB,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,cAAc,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAC1C,QAAQ,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;METtC,UAAU,CAAA;AAErB,IAAA,QAAQ,GAAG,KAAK;4FAAW;AAC3B,IAAA,SAAS,GAAG,KAAK;6FAAmB;IACpC,MAAM,GAAG,MAAM,EAAiB;AAEhC,IAAA,QAAQ,CAAC,IAAmB,EAAA;QAC1B,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AACrB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB;uGATW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXvB,wmBAgBM,EAAA,MAAA,EAAA,CAAA,ijBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDPM,QAAQ,0VAAE,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEf,UAAU,EAAA,UAAA,EAAA,CAAA;kBANtB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,OAAA,EAGf,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAA,QAAA,EAAA,wmBAAA,EAAA,MAAA,EAAA,CAAA,ijBAAA,CAAA,EAAA;;;MEEhB,aAAa,CAAA;IAExB,OAAO,GAAG,KAAK,CAAC,QAAQ;gFAAiB;IACzC,SAAS,GAAG,KAAK,CAAU,KAAK;kFAAC;IACjC,OAAO,GAAG,MAAM,EAAiB;AAEjC,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC1B,QAAA,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE;AACtD,QAAA,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,IAAI,EAAE,EAAE,WAAW,EAAE;QAC1D,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,KAAK,MAAM;AAAE,YAAA,OAAO,KAAK;QAC9D,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO;AAAE,YAAA,OAAO,KAAK;QAChH,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,KAAK,MAAM;AAAE,YAAA,OAAO,KAAK;QAC9D,IAAI,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,KAAK,MAAM;AAAE,YAAA,OAAO,KAAK;AACpE,QAAA,OAAO,OAAO;IAChB,CAAC;oFAAC;AAEF,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;AACtB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE;QAC5B,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,KAAK;IAClD,CAAC;gFAAC;IAEF,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK;8EAAC;IAEpD,SAAS,GAAA;QACP,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACnC;uGAzBW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX1B,4nBAiBA,EAAA,MAAA,EAAA,CAAA,wnCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDTY,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAGL,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,WAGlB,CAAC,MAAM,CAAC,EAAA,eAAA,EACA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4nBAAA,EAAA,MAAA,EAAA,CAAA,wnCAAA,CAAA,EAAA;;;MEEpC,cAAc,CAAA;IAEzB,QAAQ,GAAG,KAAK,CAAkB,EAAE;iFAAC;IACrC,OAAO,GAAG,MAAM,EAAiB;AAEjC,IAAA,SAAS,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;IAC5B;uGAPW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX3B,wNAMA,EAAA,MAAA,EAAA,CAAA,uLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDEY,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAGZ,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,WAGnB,CAAC,aAAa,CAAC,EAAA,eAAA,EACP,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,wNAAA,EAAA,MAAA,EAAA,CAAA,uLAAA,CAAA,EAAA;;;MEKpC,UAAU,CAAA;IAErB,QAAQ,GAAG,KAAK,CAAkB,EAAE;iFAAC;IACrC,QAAQ,GAAG,KAAK,CAAU,KAAK;iFAAC;IAChC,MAAM,GAAG,KAAK,CAAS,EAAE;+EAAC;IAC1B,QAAQ,GAAG,KAAK,CAAU,IAAI;iFAAC;IAC/B,OAAO,GAAG,MAAM,EAAmB;IAEnC,SAAS,GAAG,SAAS,CAA+B,WAAW;kFAAC;AAEhE,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC;oFAAC;AAExD,IAAA,aAAa,CAAC,UAAuB,EAAA;AACnC,QAAA,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YAChE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAuB,CAAC;YACrD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC;IACF;IAEA,aAAa,GAAA;QACX,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE;IACzC;IAEA,MAAM,iBAAiB,CAAC,KAAY,EAAA;AAClC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;QAC9C,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE;QAE9C,MAAM,QAAQ,GAAoB,EAAE;QACpC,WAAW,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;YACpC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AAC9C,YAAA,IAAI,WAAW,GAAG,CAAC,EAAE;gBACnB,GAAG,CAAC,CAAC,EAAE,CAAA,YAAA,EAAe,IAAI,CAAC,IAAI,CAAA,uBAAA,CAAyB,CAAC;gBACzD;YACF;YACA,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;YAC7C,IAAI,CAAC,MAAM,EAAE;gBACX,GAAG,CAAC,CAAC,EAAE,CAAA,gCAAA,EAAmC,IAAI,CAAC,IAAI,CAAA,CAAA,CAAG,CAAC;gBACvD;YACF;YACA,QAAQ,CAAC,IAAI,CAAC;gBACZ,MAAM;gBACN,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;gBACvC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,eAAe,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE;AAC3D,aAAA,CAAC;QACJ;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAClC,QAAA,KAAK,CAAC,KAAK,GAAG,EAAE;IAClB;AAEA,IAAA,SAAS,CAAC,OAAsB,EAAA;QAC9B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IACpC;uGAzDW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdvB,ieAWA,EAAA,MAAA,EAAA,CAAA,0IAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDAY,UAAU,oJAAE,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAGzB,UAAU,EAAA,UAAA,EAAA,CAAA;kBAPtB,SAAS;+BACE,aAAa,EAAA,OAAA,EAGd,CAAC,UAAU,EAAE,cAAc,CAAC,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,ieAAA,EAAA,MAAA,EAAA,CAAA,0IAAA,CAAA,EAAA;qiBAUK,WAAW,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AERjE;;;AAGG;AACG,SAAU,qBAAqB,CAAC,GAA4B,EAAA;IACjE,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,YAAY,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,GAAG,GAAG,CAAC,OAAO;AAE5F,IAAA,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC3B,SAAA,QAAQ;SACR,mBAAmB,CAAC,QAAQ;AAC5B,SAAA,aAAa,CAAC,GAAG,CAAC,SAAS;SAC3B,QAAQ,CAAC,IAAI;SACb,sBAAsB,CAAC,KAAK,CAAC;AAE/B,IAAA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC;QAChC,gBAAgB;AAChB,QAAA,cAAc,EAAE,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;QAC/E,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;AACtB,KAAA,CAAC;IAEF,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AAClC;;AChCA,MAAM,SAAS,GAA+C;AAC7D,IAAA,cAAc,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC;AACtD,IAAA,YAAY,EAAI,CAAC,SAAS,EAAE,cAAc,EAAE,WAAW,CAAC;AACxD,IAAA,QAAQ,EAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,CAAC;AACpD,IAAA,WAAW,EAAK,CAAC,cAAc,EAAE,SAAS,EAAE,YAAY,CAAC;AACzD,IAAA,SAAS,EAAO,CAAC,YAAY,EAAE,WAAW,EAAE,cAAc,CAAC;AAC3D,IAAA,KAAK,EAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,cAAc,CAAC;IACvD,aAAa,EAAG,CAAC,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC;AACpF,IAAA,WAAW,EAAK,CAAC,UAAU,EAAE,YAAY,EAAE,SAAS,CAAC;AACrD,IAAA,OAAO,EAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC;AACzC,IAAA,YAAY,EAAI,CAAC,aAAa,EAAE,cAAc,EAAE,WAAW,CAAC;AAC5D,IAAA,UAAU,EAAM,CAAC,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC;AACtD,IAAA,MAAM,EAAU,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC;CAC1C;AAED,SAAS,cAAc,CAAC,GAAoB,EAAE,WAAmB,CAAC,EAAA;AACjE,IAAA,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAiC;AAEpE,IAAA,MAAM,OAAO,GAAG,IAAI,KAAK,KAAK,GAAG,KAAK,GAAG,IAAI,KAAK,QAAQ,GAAG,QAAQ,GAAG,KAAK,KAAK,KAAK,GAAG,QAAQ,GAAG,KAAK;AAC1G,IAAA,MAAM,QAAQ,GAAG,IAAI,KAAK,QAAQ,GAAG,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,QAAQ,GAAG,KAAK,KAAK,KAAK,GAAG,QAAQ,GAAG,KAAK;AAE3G,IAAA,MAAM,OAAO,GAAG,IAAI,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI,KAAK,OAAO,GAAG,KAAK,GAAG,KAAK,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK,KAAK,OAAO,GAAG,OAAO,GAAG,QAAQ;AACvI,IAAA,MAAM,QAAQ,GAAG,IAAI,KAAK,OAAO,GAAG,OAAO,GAAG,IAAI,KAAK,MAAM,GAAG,KAAK,GAAG,KAAK,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK,KAAK,OAAO,GAAG,OAAO,GAAG,QAAQ;IAExI,MAAM,UAAU,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,QAAQ;IACtD,MAAM,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,CAAC;IACzC,MAAM,OAAO,GAAG,UAAU,GAAG,CAAC,GAAG,QAAQ;AAEzC,IAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAuB;AACvF;AAEA;;;;;;AAMG;SACa,oBAAoB,CAAC,GAAoB,EAAE,WAAmB,CAAC,EAAA;IAC9E,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC;IAC7C,MAAM,SAAS,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AAChF,IAAA,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC;AAC/B;;MCfa,QAAQ,CAAA;AAEnB,IAAA,UAAU,GAAe,MAAM,CAAC,UAAU,CAAC;AACnC,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,IAAA,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEtC,IAAA,KAAK,GAAG,KAAK;yFAAqD;AAClE,IAAA,OAAO,GAAG,KAAK;2FAA4B;AAE3C,IAAA,IAAI,GAAG,KAAK;wFAA+B;AAC3C,IAAA,WAAW,GAAG,KAAK;+FAAU;AAC7B,IAAA,QAAQ,GAAG,KAAK;4FAAW;IAC3B,QAAQ,GAAG,KAAK,CAAU,KAAK;iFAAC;IAChC,WAAW,GAAG,KAAK,CAAsB,KAAK;oFAAC;IAC/C,SAAS,GAAG,KAAK,CAAqB,kBAAkB;kFAAC;IAEzD,OAAO,GAAG,MAAM,EAAgB;IAEhC,eAAe,GAAG,MAAM,CAAC,KAAK;wFAAC;IAC/B,eAAe,GAAG,MAAM,CAAqC,IAAI;wFAAC;AAClE,IAAA,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG;sFAAC;IAC/C,cAAc,GAAG,MAAM,CAAS,CAAC;uFAAC;IAClC,aAAa,GAAG,MAAM,CAAS,EAAE;sFAAC;IAE1B,UAAU,GAAsB,IAAI;IACpC,UAAU,GAAwB,IAAI;IAErC,eAAe,GAAG,SAAS,CAAuB,iBAAiB;wFAAC;IACpE,WAAW,GAAG,SAAS,CAAa,aAAa;oFAAC;IAClD,cAAc,GAAG,SAAS,CAAa,gBAAgB;uFAAC;AAExD,IAAA,WAAW,GAAG,QAAQ,CAAe,MAAK;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;AACtC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;AAC5B,YAAA,IAAI,KAAK,GAAI,IAAI,CAAC,KAAK,EAAkC;YACzD,OAAO,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK;AACxB,gBAAA,GAAG,EAAE;gBACL,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC;gBACvC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe;AACvC,aAAA,CAAC,CAAC;QACL;aAAO;AACL,YAAA,IAAI,KAAK,GAAI,IAAI,CAAC,KAAK,EAAsC;YAC7D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzB,KAAK,GAAG,EAAE;YACZ;YACA,OAAO,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK;AACxB,gBAAA,GAAG,EAAE;AACL,gBAAA,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;gBAC3E,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe;AACvC,aAAA,CAAC,CAAC;QACL;IACF,CAAC;oFAAC;AAEO,IAAA,eAAe,GAAG,QAAQ,CAAe,MAAK;QACrD,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACvE,QAAA,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA,UAAA,EAAa,CAAC,CAAC,CAAC,CAAA,CAAE,EAAE,CAAC,CAAC;AAChG,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,OAAO;AACtC,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,IAAG;AACzB,YAAA,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;gBACrB,IAAI,UAAU,GAAG,KAAK;AACtB,gBAAA,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;oBAC3C,UAAU,GAAG,IAAI;gBACnB;AACA,gBAAA,IAAI,CAAC,UAAU;AAAE,oBAAA,OAAO,KAAK;YAC/B;AACA,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAG;YACV,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;AACjC,YAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,gBAAA,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;AACtB,oBAAA,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE;oBAC1B,IAAI,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;oBAC5D,IAAI,CAAC,IAAI,EAAE,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AACvC,wBAAA,IAAI,IAAI,MAAM,CAAC,CAAA,MAAA,EAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;4BAAE;wBACvE,IAAI,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;wBACjC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG;8BACpB;8BACA,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,MAAM;8BAC9B;8BACA,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;wBAC9B,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;oBAC7C;gBACF;gBAAC;YACH;YACA,OAAO,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;AAC9B,QAAA,CAAC,CAAC;IACJ,CAAC;wFAAC;AAEO,IAAA,aAAa,GAAG,QAAQ,CAAS,MAAK;AAC7C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC5B,IAAI,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/E,YAAA,OAAO,cAAc,EAAE,CAAC,KAAK,cAAc,EAAE,CAAC,GAAG,CAAA,UAAA,EAAa,cAAc,EAAE,CAAC,CAAA,CAAE,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,kBAAkB,CAAC,CAAC;QAC/H;AAEA,QAAA,IAAI,KAAK,GAAI,IAAI,CAAC,KAAK,EAAsC;AAC7D,QAAA,IAAI,KAAK,IAAI,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC/C,KAAK,GAAG,EAAE;QACZ;AACA,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW;aACxC,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aACvD,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAClB,QAAA,OAAO,kBAAkB,CAAC,MAAM,GAAG,CAAC,GAAG,CAAA,CAAA,EAAI,kBAAkB,CAAC,MAAM,KAAK,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,kBAAkB,CAAC;IACrJ,CAAC;sFAAC;AAEO,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,GAAG,QAAQ,GAAG,EAAE;oFAAC;IAE7E,WAAW,GAAA;QACT,IAAI,CAAC,QAAQ,EAAE;IACjB;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,eAAe,EAAE;IACxB;AAEA,IAAA,QAAQ,CAAC,QAAgC,EAAA;QACvC,IAAI,QAAQ,IAAI,IAAI;AAAE,YAAA,OAAO,EAAE;QAE/B,IAAI,aAAa,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnF,IAAI,OAAO,GAAG,QAAQ;AACtB,QAAA,IAAI,SAAS,GAAG,aAAa,EAAE,CAAC,IAAI,OAAO;AAE3C,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;AAC5B,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,OAAO,EAAE;gBAC3D,OAAO,GAAG,EAAE;gBACZ,SAAS,GAAG,EAAE;YAChB;AACA,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AACtE,YAAA,OAAO,OAAO;QAChB;QAEA,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,EAAW;QAC7C,IAAI,aAAa,GAAG,EAAE;QACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YAC/B,WAAW,GAAG,EAAE;QAClB;QAEA,IAAI,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;AACvC,YAAA,WAAW,GAAG,CAAC,GAAG,WAAW,EAAE,OAAO,CAAC;QACzC;aAAO;AACL,YAAA,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC;QACtD;AAEA,QAAA,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACtF,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;AAC9E,QAAA,OAAO,WAAW;IACpB;IAEA,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;gBAC1B,IAAI,CAAC,YAAY,EAAE;YACrB;iBAAO;gBACL,IAAI,CAAC,WAAW,EAAE;YACpB;QACF;IACF;IAEU,YAAY,GAAA;QACpB,IAAI,CAAC,QAAQ,EAAE;AACf,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;AAC/B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;QAC9B,IAAI,CAAC,kBAAkB,EAAE;IAC3B;IAEU,WAAW,GAAA;QACnB,IAAI,IAAI,CAAC,UAAU;YAAE;AAErB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE;AACrC,QAAA,IAAI,CAAC,OAAO;YAAE;AAEd,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,aAA4B;AACtD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,SAAS,GAAG,SAAS,CAAC,WAAW;AAEzE,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC;YACtC,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,SAAS,EAAE,oBAAoB,CAAC,cAAc,EAAE,CAAC,CAAC;YAClD,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;YAC1D,QAAQ;AACR,YAAA,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,wBAAwB,EAAE,aAAa,CAAC,GAAG,wBAAwB;AACxG,SAAA,CAAC;AAEF,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE;QAClC,IAAI,GAAG,EAAE;AACP,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3D;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;QAC9B,UAAU,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,EAAE,EAAE,CAAC;AAE/C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,SAAS,CAAC,MAAK;YACtE,IAAI,IAAI,CAAC,eAAe,EAAE;gBAAE,IAAI,CAAC,YAAY,EAAE;AACjD,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,cAAc,CAAC,MAAY,EAAA;QACzB,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,EAAE;YAC/B,GAAG,CAAC,CAAC,EAAE,CAAA,8BAAA,EAAiC,MAAM,EAAE,CAAC,CAAA,YAAA,EAAe,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA,sBAAA,EAAyB,MAAM,EAAE,CAAC,CAAA,CAAE,CAAC;YAC/H;QACF;AACA,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACvC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC5B,IAAI,CAAC,YAAY,EAAE;QACrB;aAAO;YACL,IAAI,CAAC,kBAAkB,EAAE;QAC3B;IACF;AAEA,IAAA,aAAa,CAAC,IAAY,EAAA;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;IAChC;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC,kBAAkB,EAAE;IAC3B;IAEA,kBAAkB,GAAA;AAChB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,aAAa,CAAc,gCAAgC,CAAC;QAC3G,KAAK,EAAE,KAAK,EAAE;IAChB;IAEA,kBAAkB,GAAA;QAChB,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;IAC5C;AAEA,IAAA,OAAO,CAAC,KAAoB,EAAA;AAC1B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE;AACtC,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE;AAC1B,QAAA,IAAI,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3E,QAAA,IAAI,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;AAEnE,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;YAC7B,KAAK,CAAC,cAAc,EAAE;YACtB,YAAY,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM;AAClD,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,wBAAwB,EAAE;QACjC;AAAO,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;YAClC,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,YAAY,GAAG,CAAC,YAAY,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM;AACnE,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,wBAAwB,EAAE;QACjC;AAAO,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;YACxD,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,YAAY,EAAE;QACrB;AAAO,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YAChC,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,EAAE;AAClC,gBAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;YAChC;YACA,IAAI,CAAC,YAAY,EAAE;QACrB;IACF;AAEA,IAAA,kBAAkB,CAAC,CAAuC,EAAA;QACxD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,aAA4B;QACpE,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC;QAC9E;IACF;IAEA,eAAe,GAAA;QACb,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC;AAC1D,QAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;AACnC,QAAA,UAAU,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3E;IAEQ,wBAAwB,GAAA;QAC9B,UAAU,CAAC,MAAK;AACd,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,aAAa,CAAc,wBAAwB,CAAC;YACvG,MAAM,YAAY,GAAG,SAAS,EAAE,aAAa,CAAc,2BAA2B,CAAC;AACvF,YAAA,IAAI,SAAS,IAAI,YAAY,EAAE;AAC7B,gBAAA,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS;AACxC,gBAAA,MAAM,eAAe,GAAG,YAAY,GAAG,SAAS,CAAC,YAAY;AAC7D,gBAAA,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS;AACxC,gBAAA,MAAM,YAAY,GAAG,SAAS,GAAG,YAAY,CAAC,YAAY;AAC1D,gBAAA,IAAI,SAAS,GAAG,YAAY,EAAE;AAC5B,oBAAA,SAAS,CAAC,SAAS,GAAG,SAAS,GAAG,EAAE;gBACtC;AAAO,qBAAA,IAAI,YAAY,GAAG,eAAe,EAAE;oBACzC,SAAS,CAAC,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC,YAAY;gBAC7D;YACF;QACF,CAAC,EAAE,CAAC,CAAC;IACP;IAEQ,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;IACxB;uGAtSW,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChCrB,2qEAwCA,EAAA,MAAA,EAAA,CAAA,0hHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDVY,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEP,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAPpB,SAAS;+BACE,WAAW,EAAA,IAAA,EAGf,EAAE,SAAS,EAAE,eAAe,EAAE,EAAA,OAAA,EAC3B,CAAC,QAAQ,CAAC,EAAA,QAAA,EAAA,2qEAAA,EAAA,MAAA,EAAA,CAAA,0hHAAA,CAAA,EAAA;06BA6BwC,iBAAiB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAC/B,aAAa,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CACV,gBAAgB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEnDrD,UAAU,CAAA;IAEZ,WAAW,GAAG,SAAS,CAAa,aAAa;oFAAC;IAE3D,OAAO,GAAG,MAAM,EAAU;IAC1B,OAAO,GAAG,MAAM,EAAU;IAC1B,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;IACzB,QAAQ,GAAG,KAAK,CAAsB,KAAK;iFAAC;IAC5C,WAAW,GAAG,KAAK,CAAsB,KAAK;oFAAC;AAE/C,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAC/B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,YAAA,OAAO,KAAK;QACd;AACA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YACtB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,KAAK,CAAC;QAClC;AACA,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK;IACjC,CAAC;yFAAC;AAEF,IAAA,IAAI,GAAG,KAAK;wFAA+B;AAC3C,IAAA,WAAW,GAAG,KAAK;+FAAU;AAC7B,IAAA,QAAQ,GAAG,KAAK;4FAAW;IAE3B,OAAO,GAAG,MAAM,CAAsB,KAAK;gFAAC;AAE5C,IAAA,OAAO,CAAC,KAAa,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1B;;IAGA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,QAAQ,EAAE;IACjB;IAEA,gBAAgB,GAAA;QACd,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;IAC5C;IAEA,iBAAiB,GAAA;QACf,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,QAAQ,EAAE;IACjB;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,QAAQ,EAAE;IACjB;IAEA,SAAS,GAAA;QACP,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACjC;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACjC;AAGA,IAAA,OAAO,CAAC,EAAc,EAAA;AACpB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;AAEA,IAAA,MAAM,CAAC,EAAc,EAAA;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;IACzB;uGArEW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,WAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVvB,snCAgBC,EAAA,MAAA,EAAA,CAAA,46BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDRW,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAPtB,SAAS;+BACE,aAAa,EAAA,IAAA,EAGjB,EAAE,iBAAiB,EAAE,WAAW,EAAE,EAAA,OAAA,EAC/B,CAAC,QAAQ,CAAC,EAAA,QAAA,EAAA,snCAAA,EAAA,MAAA,EAAA,CAAA,46BAAA,CAAA,EAAA;yEAI0B,aAAa,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEJ/C,UAAU,CAAA;IAErB,KAAK,GAAG,KAAK,CAAqB,CAAC;8EAAC;IACpC,WAAW,GAAG,KAAK,CAAqB,CAAC;oFAAC;IAC1C,IAAI,GAAG,KAAK,CAA8B,eAAe;6EAAC;uGAJ/C,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,0cCRvB,6vBAgCC,EAAA,MAAA,EAAA,CAAA,4vBAAA,CAAA,EAAA,CAAA;;2FDxBY,UAAU,EAAA,UAAA,EAAA,CAAA;kBALtB,SAAS;+BACE,aAAa,EAAA,QAAA,EAAA,6vBAAA,EAAA,MAAA,EAAA,CAAA,4vBAAA,CAAA,EAAA;;;MEIZ,OAAO,CAAA;IAElB,SAAS,GAAG,SAAS,CAAC,WAAW,iFAAI,IAAI,EAAE,UAAU,EAAA,CAAG;IAExD,KAAK,GAAG,KAAK,CAAU,KAAK;8EAAC;AAC7B,IAAA,QAAQ,GAAG,KAAK;4FAAW;IAC3B,OAAO,GAAG,KAAK,CAAU,KAAK;gFAAC;IAC/B,KAAK,GAAG,KAAK,CAAU,KAAK;8EAAC;IAC7B,OAAO,GAAG,MAAM,EAAW;IAE3B,aAAa,GAAG,MAAM,CAAU,KAAK;sFAAC;AAEtC,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AACpB,QAAA,MAAM,GAAG,GAAI,IAAI,CAAC,KAAK,EAAU;AACjC,QAAA,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG;IACnE,CAAC;8EAAC;AAEF,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;gBAChB,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE;YACzC;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAoB,KAAI;AACnF,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;gBAC9C,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,YAAY,EAAE;YACrB;AACF,QAAA,CAAC,CAAC;;AAEF,QAAA,UAAU,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChD;IAEA,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAErB,QAAA,MAAM,YAAY,GAAI,IAAI,CAAC,KAAK,EAAU;QAC1C,MAAM,QAAQ,GAAG,EAAE,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,MAAM,IAAI,YAAY,KAAK,CAAC,IAAI,YAAY,KAAK,GAAG,CAAC;AAClH,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC7B;AAEA,IAAA,OAAO,CAAC,EAAc,EAAA;QACpB,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAErB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;AAEA,IAAA,MAAM,CAAC,EAAc,EAAA;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;IACzB;uGArDW,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,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,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,KAAA,EAAA,aAAA,EAAA,OAAA,EAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,WAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAEyB,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVvD,4VAKM,EAAA,MAAA,EAAA,CAAA,yxCAAA,CAAA,EAAA,CAAA;;2FDGO,OAAO,EAAA,UAAA,EAAA,CAAA;kBANnB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAAA,IAAA,EAGd,EAAE,iBAAiB,EAAE,WAAW,EAAE,EAAA,QAAA,EAAA,4VAAA,EAAA,MAAA,EAAA,CAAA,yxCAAA,CAAA,EAAA;AAIlB,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,WAAW,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEA5C,UAAU,CAAA;IAErB,QAAQ,GAAG,SAAS,CAAC,UAAU,gFAAI,IAAI,EAAE,UAAU,EAAA,CAAG;IAEtD,KAAK,GAAG,KAAK,CAAU,KAAK;8EAAC;AAC7B,IAAA,QAAQ,GAAG,KAAK;4FAAW;IAC3B,OAAO,GAAG,KAAK,CAAU,KAAK;gFAAC;IAC/B,KAAK,GAAG,KAAK,CAAU,KAAK;8EAAC;IAC7B,OAAO,GAAG,MAAM,EAAW;IAC3B,MAAM,GAAG,KAAK,CAAU,KAAK;+EAAC;IAC9B,OAAO,GAAG,KAAK,CAAU,KAAK;gFAAC;IAE/B,aAAa,GAAG,MAAM,CAAU,KAAK;sFAAC;AAEtC,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AACpB,QAAA,MAAM,GAAG,GAAI,IAAI,CAAC,KAAK,EAAU;AACjC,QAAA,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG;IACnE,CAAC;8EAAC;AAEF,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;gBAChB,IAAI,CAAC,QAAQ,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE;YACxC;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,QAAQ,EAAE,EAAE,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAoB,KAAI;AAClF,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;gBAC9C,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,eAAe,EAAE;YACxB;AACF,QAAA,CAAC,CAAC;;AAEF,QAAA,UAAU,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChD;IAEA,eAAe,GAAA;QACb,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAErB,QAAA,MAAM,YAAY,GAAI,IAAI,CAAC,KAAK,EAAU;QAC1C,MAAM,QAAQ,GAAG,EAAE,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,MAAM,IAAI,YAAY,KAAK,CAAC,IAAI,YAAY,KAAK,GAAG,CAAC;AAClH,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC7B;AAEA,IAAA,OAAO,CAAC,EAAc,EAAA;QACpB,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AAErB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxB;AAEA,IAAA,MAAM,CAAC,EAAc,EAAA;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;IACzB;uGAvDW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,OAAA,EAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,WAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAEoB,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZrD,6bAMyB,EAAA,MAAA,EAAA,CAAA,4yDAAA,CAAA,EAAA,CAAA;;2FDIZ,UAAU,EAAA,UAAA,EAAA,CAAA;kBARtB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,IAAA,EAGlB;AACJ,wBAAA,iBAAiB,EAAE,WAAW;AAC/B,qBAAA,EAAA,QAAA,EAAA,6bAAA,EAAA,MAAA,EAAA,CAAA,4yDAAA,CAAA,EAAA;AAIoB,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,UAAU,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEL1C,YAAY,CAAA;IAEvB,IAAI,GAAG,KAAK,CAAC,QAAQ;6EAAuB;IAE5C,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAsC;IAC7D,IAAI,GAAG,KAAK,CAAC,QAAQ;6EAAsB;uGALhC,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,wbCPzB,uTASC,EAAA,MAAA,EAAA,CAAA,mVAAA,CAAA,EAAA,CAAA;;2FDFY,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,uTAAA,EAAA,MAAA,EAAA,CAAA,mVAAA,CAAA,EAAA;;;MEKf,SAAS,CAAA;IAEpB,KAAK,GAAG,KAAK,CAAqB,CAAC;8EAAC;IACpC,WAAW,GAAG,KAAK,CAAqB,CAAC;oFAAC;IAC1C,IAAI,GAAG,KAAK,CAA8B,eAAe;6EAAC;IAEjD,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AAE3C,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;+EAAC;AAC3D,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;qFAAC;AAEvE,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,OAAO,IAAI,CAAC,cAAc,IAAI,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC;IAChD;uGAbW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,ycCRtB,kmCAmCC,EAAA,MAAA,EAAA,CAAA,ouCAAA,CAAA,EAAA,CAAA;;2FD3BY,SAAS,EAAA,UAAA,EAAA,CAAA;kBALrB,SAAS;+BACE,YAAY,EAAA,QAAA,EAAA,kmCAAA,EAAA,MAAA,EAAA,CAAA,ouCAAA,CAAA,EAAA;;;MEgBX,MAAM,CAAA;AAEjB,IAAA,UAAU,GAAe,MAAM,CAAC,UAAU,CAAC;AACnC,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,IAAA,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAE7B,IAAA,QAAQ,GAAG,KAAK;4FAAW;AAC3B,IAAA,KAAK,GAAG,KAAK;yFAA6B;IACnD,kBAAkB,GAAG,KAAK,CAAU,IAAI;2FAAC;IAEzC,OAAO,GAAG,KAAK,CAA6B,aAAa;gFAAC;IAC1D,QAAQ,GAAG,KAAK,CAAC,KAAK;iFAAC;AACvB,IAAA,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;2EAAC;AACzC,IAAA,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG;sFAAC;IAC/C,cAAc,GAAG,MAAM,CAAS,CAAC;uFAAC;IAE1B,UAAU,GAAsB,IAAI;IACpC,UAAU,GAAwB,IAAI;IAErC,WAAW,GAAG,SAAS,CAAa,aAAa;oFAAC;IAClD,YAAY,GAAG,SAAS,CAAuB,cAAc;qFAAC;AAEvE,IAAA,QAAQ,KAAK;IAEb,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE,IAAI,CAAC,YAAY,EAAE;IAC1C;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,eAAe,EAAE;IACxB;IAEA,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AACpB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;gBACnB,IAAI,CAAC,YAAY,EAAE;YACrB;iBAAO;gBACL,IAAI,CAAC,WAAW,EAAE;YACpB;YACA,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE;QAC3C;IACF;AAEA,IAAA,gBAAgB,CAAC,KAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YACpB,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE;QAC3C;IACF;AAEA,IAAA,gBAAgB,CAAC,KAAY,EAAA;QAC3B,KAAK,CAAC,eAAe,EAAE;AAEvB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;QAC1C,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAuB;QAClF,MAAM,YAAY,GAAG,cAAc,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa;AAEzE,QAAA,IAAI,cAAc,IAAI,CAAC,YAAY,EAAE;;AAEnC,YAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;AAC7B,gBAAA,cAAc,CAAC,gBAAgB,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAC3F;QACF;aAAO;;YAEL,IAAI,CAAC,YAAY,EAAE;QACrB;IACF;IAEU,YAAY,CAAC,cAAuB,KAAK,EAAA;AACjD,QAAA,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAAE;AAE/C,QAAA,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;;QAGxB,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,aAAa,CAC9C,IAAI,WAAW,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CACnD;IACH;IAEU,WAAW,GAAA;QACnB,IAAI,IAAI,CAAC,UAAU;YAAE;AAErB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;AAClC,QAAA,IAAI,CAAC,OAAO;YAAE;AAEd,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC;YACtC,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,YAAA,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAClD,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAC1D,YAAA,UAAU,EAAE,sBAAsB;AACnC,SAAA,CAAC;AAEF,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE;QAC/B,IAAI,GAAG,EAAE;AACP,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3D;;QAGA,qBAAqB,CAAC,MAAK;YACzB,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,aAAa,CAAc,mBAAmB;AAC7E,kBAAE,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;AAC3B,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AAEvB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC3E,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;;YAE1C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC;YACtD,IAAI,UAAU,IAAI,UAAU,KAAK,IAAI,CAAC,UAAU,EAAE,cAAc;gBAAE;YAClE,IAAI,CAAC,YAAY,EAAE;AACrB,QAAA,CAAC,CAAC;IACJ;IAEA,SAAS,CAAC,KAAY,EAAA,EAAI,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;IAClD,WAAW,CAAC,KAAY,EAAA,EAAI,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;AAEpD,IAAA,kBAAkB,CAAC,CAAuC,EAAA;QACxD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,aAA4B;QACjE,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC;QAC9E;IACF;IAEA,eAAe,GAAA;QACb,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC;AAC1D,QAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;AACnC,QAAA,UAAU,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3E;uGAtIW,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAN,MAAM,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,kBAAA,EAAA,0BAAA,EAAA,OAAA,EAAA,eAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,YAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpBnB,8oCA2BA,EAAA,MAAA,EAAA,CAAA,osBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDVY,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGP,MAAM,EAAA,UAAA,EAAA,CAAA;kBAPlB,SAAS;+BACE,SAAS,EAAA,OAAA,EAGV,CAAC,QAAQ,CAAC,QACb,EAAE,gBAAgB,EAAE,YAAY,EAAE,EAAA,QAAA,EAAA,8oCAAA,EAAA,MAAA,EAAA,CAAA,osBAAA,CAAA,EAAA;AAqBK,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,aAAa,sEACF,cAAc,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ME7B3D,SAAS,CAAA;IACrB,QAAQ,GAAG,KAAK,CAAU,KAAK;iFAAC;IAChC,MAAM,GAAG,KAAK,CAA8B,IAAI;+EAAC;uGAFrC,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,waCXtB,+BAA2B,EAAA,MAAA,EAAA,CAAA,kxBAAA,CAAA,EAAA,CAAA;;2FDWd,SAAS,EAAA,UAAA,EAAA,CAAA;kBATrB,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,IAAA,EAGhB;AACL,wBAAA,kBAAkB,EAAE,YAAY;AAChC,wBAAA,oBAAoB,EAAE,UAAU;AAChC,qBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,kxBAAA,CAAA,EAAA;;;MEGW,OAAO,CAAA;AACnB,IAAA,KAAK,GAAG,KAAK;yFAA+B;IAC5C,GAAG,GAAG,KAAK,CAAS,EAAE;4EAAC;IACvB,IAAI,GAAG,KAAK,CAAa,OAAO;6EAAC;IACjC,OAAO,GAAG,KAAK,CAAU,IAAI;gFAAC;AAE9B,IAAA,OAAO,GAAG,QAAQ,CAAS,MAAK;AAC/B,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE;QACtB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;AAAE,YAAA,OAAO,EAAE;AACxD,QAAA,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;YAC1B,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAA,EAAG,IAAI,CAAC,GAAG,EAAE,CAAA,CAAA,CAAG,GAAG,CAAA,EAAG,CAAC,CAAA,CAAE;QAClD;QACA,OAAO,CAAA,EAAG,CAAC,CAAA,CAAE;IACd,CAAC;gFAAC;uGAbU,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAP,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,OAAO,ioBCZpB,+GAGO,EAAA,MAAA,EAAA,CAAA,8nCAAA,CAAA,EAAA,CAAA;;2FDSM,OAAO,EAAA,UAAA,EAAA,CAAA;kBATnB,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAAA,IAAA,EAGd;AACL,wBAAA,kBAAkB,EAAE,QAAQ;AAC5B,wBAAA,gBAAgB,EAAE,YAAY;AAC9B,qBAAA,EAAA,QAAA,EAAA,+GAAA,EAAA,MAAA,EAAA,CAAA,8nCAAA,CAAA,EAAA;;;MEGW,MAAM,CAAA;IAClB,QAAQ,GAAG,KAAK,CAAgB,CAAC;iFAAC;IAClC,QAAQ,GAAG,KAAK,CAAU,KAAK;iFAAC;AAChC,IAAA,IAAI,GAAG,KAAK;wFAA0B;IAEtC,OAAO,GAAG,MAAM,EAAc;uGALlB,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAN,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAM,ymBCbnB,2SAQM,EAAA,MAAA,EAAA,CAAA,02CAAA,CAAA,EAAA,CAAA;;2FDKO,MAAM,EAAA,UAAA,EAAA,CAAA;kBAVlB,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAAA,IAAA,EAGb;AACL,wBAAA,sBAAsB,EAAE,YAAY;AACpC,wBAAA,kBAAkB,EAAE,gBAAgB;AACpC,wBAAA,kBAAkB,EAAE,YAAY;AAChC,qBAAA,EAAA,QAAA,EAAA,2SAAA,EAAA,MAAA,EAAA,CAAA,02CAAA,CAAA,EAAA;;;MEEW,QAAQ,CAAA;AACpB,IAAA,GAAG,GAAG,KAAK;uFAAsB;AACjC,IAAA,IAAI,GAAG,KAAK;wFAAsB;IAClC,OAAO,GAAG,KAAK,CAAmC,IAAI;gFAAC;IACvD,OAAO,GAAG,KAAK,CAAsB,QAAQ;gFAAC;IAC9C,IAAI,GAAG,KAAK,CAAyB,SAAS;6EAAC;AAE/C,IAAA,QAAQ,GAAG,QAAQ,CAAS,MAAK;AAChC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE;AACrB,QAAA,IAAI,CAAC,CAAC;AAAE,YAAA,OAAO,GAAG;QAClB,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;AACpC,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;AACjE,QAAA,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE;IACjF,CAAC;iFAAC;uGAbU,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,2yBCbrB,gKAIC,EAAA,MAAA,EAAA,CAAA,y5CAAA,CAAA,EAAA,CAAA;;2FDSY,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAVpB,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,IAAA,EAGf;AACL,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,kBAAkB,EAAE,gBAAgB;AACpC,qBAAA,EAAA,QAAA,EAAA,gKAAA,EAAA,MAAA,EAAA,CAAA,y5CAAA,CAAA,EAAA;;;MEEW,KAAK,CAAA;IACjB,KAAK,GAAG,KAAK,CAAS,EAAE;8EAAC;AACzB,IAAA,KAAK,GAAG,KAAK;yFAAsB;IACnC,IAAI,GAAG,KAAK,CAAyB,SAAS;6EAAC;IAC/C,SAAS,GAAG,KAAK,CAAU,KAAK;kFAAC;IAEjC,OAAO,GAAG,MAAM,EAAQ;uGANZ,KAAK,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAL,KAAK,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECblB,oUAQO,EAAA,MAAA,EAAA,CAAA,8zCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDGI,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEJ,KAAK,EAAA,UAAA,EAAA,CAAA;kBATjB,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAQ,EAAA,IAAA,EAGZ;AACL,wBAAA,kBAAkB,EAAE,gBAAgB;qBACpC,EAAA,OAAA,EACQ,CAAC,MAAM,CAAC,EAAA,QAAA,EAAA,oUAAA,EAAA,MAAA,EAAA,CAAA,8zCAAA,CAAA,EAAA;;;MEFL,YAAY,CAAA;IACxB,MAAM,GAAG,KAAK,CAAS,6BAA6B;+EAAC;AACrD,IAAA,SAAS,GAAG,KAAK;6FAAsB;IACvC,KAAK,GAAG,KAAK,CAAqB,SAAS;8EAAC;IAC5C,SAAS,GAAG,KAAK,CAAS,OAAO;kFAAC;uGAJtB,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECTzB,8YAYM,EAAA,MAAA,EAAA,CAAA,uYAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDLK,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEJ,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;+BACC,gBAAgB,EAAA,OAAA,EAGjB,CAAC,MAAM,CAAC,EAAA,QAAA,EAAA,8YAAA,EAAA,MAAA,EAAA,CAAA,uYAAA,CAAA,EAAA;;;MEIL,MAAM,CAAA;IAClB,IAAI,GAAG,KAAK,CAAQ,EAAE;6EAAC;IACvB,KAAK,GAAG,KAAK,CAAqC,IAAI;8EAAC;IACvD,IAAI,GAAG,KAAK,CAA2B,MAAM;6EAAC;IAE9C,OAAO,GAAG,MAAM,EAAO;AAEvB,IAAA,UAAU,CAAC,GAAQ,EAAA;QAClB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IACvB;uGAVY,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAN,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAM,8hBCXnB,mXAaM,EAAA,MAAA,EAAA,CAAA,iiDAAA,CAAA,EAAA,CAAA;;2FDFO,MAAM,EAAA,UAAA,EAAA,CAAA;kBARlB,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAAA,IAAA,EAGb;AACL,wBAAA,kBAAkB,EAAE,QAAQ;AAC5B,qBAAA,EAAA,QAAA,EAAA,mXAAA,EAAA,MAAA,EAAA,CAAA,iiDAAA,CAAA,EAAA;;;MEAW,WAAW,CAAA;IACvB,QAAQ,GAAG,KAAK,CAAU,KAAK;iFAAC;AAExB,IAAA,OAAO,GAAG,MAAM,CAAuB,IAAI,GAAG,EAAE;gFAAC;AAEzD,IAAA,MAAM,CAAC,IAAqB,EAAA;QAC3B,IAAI,IAAI,CAAC,YAAY,EAAE;YAAE;QACzB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACnC,QAAA,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAClB,YAAA,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QACjB;aAAO;AACN,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAAE,GAAG,CAAC,KAAK,EAAE;AACjC,YAAA,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;QACd;AACA,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;IACtB;AAEA,IAAA,UAAU,CAAC,IAAqB,EAAA;QAC/B,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;IAChC;uGAnBY,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,qNCTxB,uDAGA,EAAA,MAAA,EAAA,CAAA,4IAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDMa,WAAW,EAAA,UAAA,EAAA,CAAA;kBANvB,SAAS;+BACC,cAAc,EAAA,eAAA,EAGP,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,uDAAA,EAAA,MAAA,EAAA,CAAA,4IAAA,CAAA,EAAA;;;MEiBnC,eAAe,CAAA;IAC3B,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAU;AACjC,IAAA,KAAK,GAAG,KAAK;yFAAU;IACvB,YAAY,GAAG,KAAK,CAAU,KAAK;qFAAC;AAE5B,IAAA,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC;IAEvC,QAAQ,GAAG,YAAY,CAAC,WAAW;iFAAC;AAEpC,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;+EAAC;IAExD,MAAM,GAAA;QACL,IAAI,IAAI,CAAC,YAAY,EAAE;YAAE;AACzB,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;IAC5B;uGAdY,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,QAAA,EAAA,IAAA,EAAA,eAAe,4lBAOH,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/BpC,wgBAgBA,EAAA,MAAA,EAAA,CAAA,86BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDCW,gBAAgB,oJAAE,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAOtB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAX3B,SAAS;+BACC,mBAAmB,EAAA,OAAA,EAGpB,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAAA,eAAA,EAClB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACL,wBAAA,gBAAgB,EAAE,UAAU;AAC5B,wBAAA,sBAAsB,EAAE,gBAAgB;AACxC,qBAAA,EAAA,QAAA,EAAA,wgBAAA,EAAA,MAAA,EAAA,CAAA,86BAAA,CAAA,EAAA;0XASuB,WAAW,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MErBvB,YAAY,CAAA;IACxB,KAAK,GAAG,KAAK,CAAoB,EAAE;8EAAC;IACpC,SAAS,GAAG,KAAK,CAAS,GAAG;kFAAC;uGAFlB,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVzB,qqBAiBM,EAAA,MAAA,EAAA,CAAA,2aAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDTK,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAER,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;+BACC,eAAe,EAAA,OAAA,EAGhB,CAAC,UAAU,CAAC,EAAA,QAAA,EAAA,qqBAAA,EAAA,MAAA,EAAA,CAAA,2aAAA,CAAA,EAAA;;;MEKT,SAAS,CAAA;IACrB,MAAM,GAAG,KAAK,CAAiB,EAAE;+EAAC;IAClC,KAAK,GAAG,KAAK,CAAS,CAAC;8EAAC;IACxB,UAAU,GAAG,KAAK,CAA4B,YAAY;mFAAC;IAE3D,OAAO,GAAG,MAAM,EAAU;IAC1B,UAAU,GAAG,MAAM,EAAQ;AAE3B,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC;oFAAC;AACrE,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,CAAC;sFAAC;AAEzE,IAAA,MAAM,CAAC,KAAa,EAAA;QACnB,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM;YAAE;AAChD,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IACzB;IAEA,OAAO,GAAA;QACN,IAAI,IAAI,CAAC,WAAW,EAAE;YAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;aAChD,IAAI,IAAI,CAAC,aAAa,EAAE;AAAE,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;IACtD;IAEA,QAAQ,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;YAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACpD;uGAxBY,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbtB,q3BA0BM,EAAA,MAAA,EAAA,CAAA,w6CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDfK,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEJ,SAAS,EAAA,UAAA,EAAA,CAAA;kBATrB,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,IAAA,EAGhB;AACL,wBAAA,wBAAwB,EAAE,cAAc;qBACxC,EAAA,OAAA,EACQ,CAAC,MAAM,CAAC,EAAA,QAAA,EAAA,q3BAAA,EAAA,MAAA,EAAA,CAAA,w6CAAA,CAAA,EAAA;;;MEGL,YAAY,CAAA;IACxB,KAAK,GAAG,KAAK,CAAS,CAAC;8EAAC;IACxB,MAAM,GAAG,KAAK,CAAS,CAAC;+EAAC;IACzB,aAAa,GAAG,KAAK,CAAS,EAAE;sFAAC;AACjC,IAAA,aAAa,GAAG,KAAK,CAAW,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;sFAAC;IAErD,WAAW,GAAG,MAAM,EAAoB;IAExC,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;qFAAC;AAE1F,IAAA,eAAe,GAAG,QAAQ,CAAqB,MAAK;AACnD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;AACjC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE;QAC3B,IAAI,KAAK,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACrE,QAAA,MAAM,KAAK,GAAuB,CAAC,CAAC,CAAC;QACrC,IAAI,KAAK,GAAG,CAAC;AAAE,YAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE;AAAE,YAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5F,QAAA,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC;AAAE,YAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AACxC,QAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AACjB,QAAA,OAAO,KAAK;IACb,CAAC;wFAAC;AAEF,IAAA,MAAM,CAAC,CAAS,EAAA;AACf,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;YAAE;AAC7D,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAClB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;IAC1E;AAEA,IAAA,YAAY,CAAC,KAAY,EAAA;AACxB,QAAA,MAAM,GAAG,GAAG,QAAQ,CAAE,KAAK,CAAC,MAA4B,CAAC,KAAK,EAAE,EAAE,CAAC;AACnE,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAClB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC;IACzD;uGAjCY,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,cAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdzB,8/CAmCM,EAAA,MAAA,EAAA,CAAA,8pCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDvBK,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEJ,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;+BACC,eAAe,EAAA,OAAA,EAGhB,CAAC,MAAM,CAAC,EAAA,QAAA,EAAA,8/CAAA,EAAA,MAAA,EAAA,CAAA,8pCAAA,CAAA,EAAA;;;MEDL,SAAS,CAAA;IACrB,SAAS,GAAG,KAAK,CAAS,EAAE;kFAAC;IAC7B,YAAY,GAAG,KAAK,CAAoB,KAAK;qFAAC;AAEtC,IAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AACvB,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IACzB,UAAU,GAAsB,IAAI;AAEhB,IAAA,OAAO,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5B,IAAA,OAAO,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACtB,IAAA,OAAO,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3B,IAAA,MAAM,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAE1C,IAAI,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,UAAU;YAAE;AAE1C,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC;YACvC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,EAAE;YAChB,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YACvD,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAC1D,YAAA,UAAU,EAAE,kBAAkB;AAC9B,SAAA,CAAC;QAEF,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC/C,QAAA,SAAS,CAAC,SAAS,GAAG,mBAAmB;AACzC,QAAA,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE;AACxC,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;QAEpC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;AAChD,QAAA,qBAAqB,CAAC,MAAM,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAChE;IAEQ,IAAI,GAAA;AACX,QAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;IACvB;AAEA,IAAA,WAAW,KAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;uGAtCvB,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBAJrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE,WAAW;AACrB,iBAAA;;sBASC,YAAY;uBAAC,YAAY;;sBACzB,YAAY;uBAAC,SAAS;;sBACtB,YAAY;uBAAC,YAAY;;sBACzB,YAAY;uBAAC,UAAU;;;MCjBZ,cAAc,CAAA;IACjB,MAAM,GAAG,MAAM,CAAiB,EAAE;+EAAC;AAE5C,IAAA,IAAI,CAAC,MAAgC,EAAA;AACpC,QAAA,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE;AACzB,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI;QACtC,MAAM,KAAK,GAAiB,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE;AAC7C,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;AACtC,QAAA,IAAI,OAAO,GAAG,CAAC,EAAE;AAChB,YAAA,UAAU,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;QAC3C;AACA,QAAA,OAAO,EAAE;IACV;AAEA,IAAA,OAAO,CAAC,QAAgB,EAAE,MAAe,EAAE,OAAO,GAAG,IAAI,EAAA;AACxD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;IACjE;AAEA,IAAA,KAAK,CAAC,QAAgB,EAAE,MAAe,EAAE,OAAO,GAAG,IAAI,EAAA;AACtD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAC/D;AAEA,IAAA,OAAO,CAAC,QAAgB,EAAE,MAAe,EAAE,OAAO,GAAG,IAAI,EAAA;AACxD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;IACjE;AAEA,IAAA,IAAI,CAAC,QAAgB,EAAE,MAAe,EAAE,OAAO,GAAG,IAAI,EAAA;AACrD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC9D;AAEA,IAAA,MAAM,CAAC,EAAU,EAAA;QAChB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD;IAEA,KAAK,GAAA;AACJ,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACpB;uGApCY,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,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADD,MAAM,EAAA,CAAA;;2FACnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCMrB,gBAAgB,CAAA;AACnB,IAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;uGADlC,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECV7B,+4BAoBM,EAAA,MAAA,EAAA,CAAA,y5CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDZK,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEJ,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;+BACC,oBAAoB,EAAA,OAAA,EAGrB,CAAC,MAAM,CAAC,EAAA,QAAA,EAAA,+4BAAA,EAAA,MAAA,EAAA,CAAA,y5CAAA,CAAA,EAAA;;;AESX,MAAM,cAAc,GAAG,IAAI,cAAc,CAAgB,gBAAgB,CAAC;AAEjF;AACO,MAAM,WAAW,GAAG,IAAI,cAAc,CAAU,aAAa,CAAC;MAYxD,UAAU,CAAA;AACZ,IAAA,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC;AAC9B,IAAA,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;AACvB,IAAA,gBAAgB,GAAG,MAAM,CAAC,4BAA4B,CAAC;IACvD,SAAS,GAAqB,IAAI;IAE1C,IAAI,MAAM,GAAA,EAAK,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAExC,IAAA,IAAI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,YAAY,WAAW,GAAG,IAAI,GAAI,IAAI,CAAC,MAAM,CAAC,QAA0B,IAAI,IAAI;IAC7G;AAEA,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,YAAY,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI;IAClF;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;AACpE,QAAA,IAAI,CAAC,SAAS,CAAC,4BAA4B,EAAE;IAC/C;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE;IAC3B;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;IACnB;uGA3BW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChCvB,gqCA2CA,EAAA,MAAA,EAAA,CAAA,42CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjBY,QAAQ,0VAAE,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,sCAAA,EAAA,0BAAA,EAAA,2BAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAMpD,UAAU,EAAA,UAAA,EAAA,CAAA;kBAVtB,SAAS;+BACE,cAAc,EAAA,OAAA,EAGf,CAAC,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,EAAA,IAAA,EAC1D;AACJ,wBAAA,MAAM,EAAE,QAAQ;AAChB,wBAAA,YAAY,EAAE,MAAM;AACrB,qBAAA,EAAA,QAAA,EAAA,gqCAAA,EAAA,MAAA,EAAA,CAAA,42CAAA,CAAA,EAAA;;;MEtBU,cAAc,CAAA;AACjB,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;;IAG1B,MAAM,GAAG,MAAM,CAAiB,EAAE;+EAAC;AAEpC,IAAA,KAAK,GAAG,IAAI,GAAG,EAAsB;AAE7C,IAAA,IAAI,CAAC,MAAgC,EAAA;AACnC,QAAA,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE;QACzB,MAAM,UAAU,GAAiB,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE;AAElD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACrC,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,aAAa,EAAE,2BAA2B;YAC1C,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE;YACrD,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM;AAC7C,iBAAA,kBAAkB;AAClB,iBAAA,gBAAgB,EAAE;AACrB,YAAA,UAAU,EAAE,gBAAgB;AAC7B,SAAA,CAAC;QAEF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;AAElC,QAAA,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,EAAE;AAC9B,YAAA,UAAU,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,MAAM,KAAK,EAAE,CAAC;QACrD;AAEA,QAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC;YACpC,MAAM,EAAE,IAAI,CAAC,QAAQ;AACrB,YAAA,SAAS,EAAE;AACT,gBAAA,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE;gBAChF,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC;AACpF,aAAA;AACF,SAAA,CAAC;AAEF,QAAA,UAAU,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,UAAU,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAEvE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC;AAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;AAC3C,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,KAAK,CAAC,EAAU,EAAA;QACd,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,IAAI,GAAG,EAAE;YACP,GAAG,CAAC,OAAO,EAAE;AACb,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB;QACA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7D;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;AACxC,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACrB;uGAzDW,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,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADD,MAAM,EAAA,CAAA;;2FACnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACJlC;;;AAGG;MAMU,aAAa,CAAA;AACf,IAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;IAG9C,QAAQ,GAAA;QACN,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;QACzC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACtC,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;YACpC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC;IACF;uGAVW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,6IAHd,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,CAAA;;2FAGD,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,YACjB,EAAE,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA;;sBAMX,YAAY;uBAAC,yBAAyB;;;MCJ5B,QAAQ,CAAA;IACpB,MAAM,GAAG,KAAK,CAAU,KAAK;+EAAC;IAC9B,OAAO,GAAG,KAAK,CAAsC,OAAO;gFAAC;IAC7D,OAAO,GAAG,KAAK,CAAS,OAAO;gFAAC;IAChC,kBAAkB,GAAG,KAAK,CAAU,IAAI;2FAAC;IAEzC,OAAO,GAAG,MAAM,EAAQ;IAExB,MAAM,GAAA;AACL,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACpB;IAEA,cAAc,GAAA;QACb,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAAE,IAAI,CAAC,MAAM,EAAE;IAC7C;uGAfY,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,wvBCXrB,4NAKM,EAAA,MAAA,EAAA,CAAA,6pCAAA,CAAA,EAAA,CAAA;;2FDMO,QAAQ,EAAA,UAAA,EAAA,CAAA;kBATpB,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,IAAA,EAGf;AACL,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,gBAAgB,EAAE,UAAU;AAC5B,qBAAA,EAAA,QAAA,EAAA,4NAAA,EAAA,MAAA,EAAA,CAAA,6pCAAA,CAAA,EAAA;;;MEGW,QAAQ,CAAA;IACpB,KAAK,GAAG,KAAK,CAAS,CAAC;8EAAC;IACxB,GAAG,GAAG,KAAK,CAAS,CAAC;4EAAC;IACtB,QAAQ,GAAG,KAAK,CAAU,KAAK;iFAAC;IAChC,SAAS,GAAG,KAAK,CAAU,KAAK;kFAAC;IAEjC,OAAO,GAAG,MAAM,EAAU;AAE1B,IAAA,KAAK,GAAG,MAAM,CAAS,CAAC,CAAC;8EAAC;AAE1B,IAAA,QAAQ,GAAG,QAAQ,CAAW,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;iFAAC;IAExF,OAAO,GAAG,QAAQ,CAAS,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE;gFAAC;AAEjF,IAAA,gBAAgB,CAAC,KAAa,EAAA;AAC7B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;QAC1B,IAAI,GAAG,IAAI,KAAK;AAAE,YAAA,OAAO,MAAM;QAC/B,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,KAAK,GAAG,GAAG;AAAE,YAAA,OAAO,MAAM;AACzD,QAAA,OAAO,OAAO;IACf;IAEA,WAAW,CAAC,KAAiB,EAAE,KAAa,EAAA;QAC3C,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AACrB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACrB,YAAA,MAAM,EAAE,GAAG,KAAK,CAAC,aAA4B;YAC7C,MAAM,KAAK,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,CAAC;YAClD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;QAC5D;aAAO;AACN,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB;IACD;AAEA,IAAA,YAAY,GAAA,EAAW,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3C,UAAU,CAAC,KAAa,EAAE,KAAiB,EAAA;QAC1C,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;QACrB,IAAI,GAAG,GAAG,KAAK;AACf,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACrB,YAAA,MAAM,EAAE,GAAG,KAAK,CAAC,aAA4B;YAC7C,MAAM,KAAK,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,CAAC;AAClD,YAAA,GAAG,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK;QAClD;AACA,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACnB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;IACvB;uGA5CY,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,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,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZrB,4iBASM,EAAA,MAAA,EAAA,CAAA,0iBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDCK,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEJ,QAAQ,EAAA,UAAA,EAAA,CAAA;kBATpB,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,IAAA,EAGf;AACL,wBAAA,kBAAkB,EAAE,YAAY;qBAChC,EAAA,OAAA,EACQ,CAAC,MAAM,CAAC,EAAA,QAAA,EAAA,4iBAAA,EAAA,MAAA,EAAA,CAAA,0iBAAA,CAAA,EAAA;;;MECL,MAAM,CAAA;IAClB,GAAG,GAAG,KAAK,CAAc,EAAE;4EAAC;IAC5B,QAAQ,GAAG,KAAK,CAAU,KAAK;iFAAC;IAEhC,WAAW,GAAG,KAAK,CAAsB,EAAE;oFAAC;AAC5C,IAAA,UAAU,GAAG,MAAM,CAAuB,IAAI,GAAG,EAAE;mFAAC;IAEpD,cAAc,GAAG,MAAM,EAAa;AAEpC,IAAA,cAAc,CAAC,EAAa,EAAA;QAC3B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACtC,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACnB,YAAA,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;QAClB;aAAO;AACN,YAAA,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACd,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;AAAE,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACvE;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;IACzB;AAEA,IAAA,WAAW,CAAC,EAAmB,EAAA;QAC9B,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IACjC;AAEA,IAAA,gBAAgB,CAAC,EAAa,EAAA;QAC7B,IAAI,EAAE,CAAC,YAAY;YAAE;AACrB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAChC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACpB,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;gBAC1B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACvD;iBAAO;AACN,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACxC;QACD;aAAO;YACN,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3D;IACD;AAEA,IAAA,aAAa,CAAC,EAAmB,EAAA;QAChC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;IACvC;uGAxCY,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAN,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAM,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXnB,4wCA8Bc,EAAA,MAAA,EAAA,CAAA,i7BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDrBH,gBAAgB,oJAAE,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEtB,MAAM,EAAA,UAAA,EAAA,CAAA;kBANlB,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAAA,OAAA,EAGV,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAAA,QAAA,EAAA,4wCAAA,EAAA,MAAA,EAAA,CAAA,i7BAAA,CAAA,EAAA;;;MEDvB,UAAU,CAAA;IACtB,KAAK,GAAG,KAAK,CAAkB,EAAE;8EAAC;uGADtB,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,2MCRvB,qwBAsBM,EAAA,MAAA,EAAA,CAAA,0zCAAA,CAAA,EAAA,CAAA;;2FDdO,UAAU,EAAA,UAAA,EAAA,CAAA;kBALtB,SAAS;+BACC,aAAa,EAAA,QAAA,EAAA,qwBAAA,EAAA,MAAA,EAAA,CAAA,0zCAAA,CAAA,EAAA;;;AEsBlB,MAAO,kBAAmB,SAAQ,cAAc,CAAA;AAEpD,IAAA,UAAU,GAAe,MAAM,CAAC,UAAU,CAAC;AACnC,IAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,IAAA,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAEtC,eAAe,GAAG,MAAM,CAAC,KAAK;wFAAC;IAC/B,eAAe,GAAG,MAAM,CAAqC,IAAI;wFAAC;AAElE,IAAA,OAAO,GAAG,QAAQ,CAAuB,MAAK;AAC5C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,IAAI,IAAI,EAAE;AAC/C,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAO,KAAK,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAO,MAAM;AAChF,YAAA,GAAG,EAAE;YACL,QAAQ,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;YAC/B,QAAQ,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,eAAe;AACxC,SAAA,CAAC,CAAC;IACL,CAAC;gFAAC;AAEF,IAAA,eAAe,GAAG,QAAQ,CAAuB,MAAK;AACpD,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAS,KAAK,CAAC,IAAI,EAAE,CAAC;AACrF,QAAA,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA,UAAA,EAAa,CAAC,CAAC,CAAC,CAAA,CAAE,EAAE,CAAC,CAAC;AAC5F,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,OAAO;AAEtC,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,IAAG;AACzB,YAAA,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;gBACrB,IAAI,UAAU,GAAG,KAAK;AACtB,gBAAA,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;oBAC3C,UAAU,GAAG,IAAI;gBACnB;AACA,gBAAA,IAAI,CAAC,UAAU;AAAE,oBAAA,OAAO,KAAK;YAC/B;AACA,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAG;YACV,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;AACjC,YAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,gBAAA,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;AACtB,oBAAA,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE;oBAC1B,IAAI,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;oBAC5D,IAAI,CAAC,IAAI,EAAE,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AACvC,wBAAA,IAAI,IAAI,MAAM,CAAC,CAAA,MAAA,EAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;4BAAE;wBACvE,IAAI,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;wBACjC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG;8BACpB;8BACA,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,MAAM;8BAC9B;8BACA,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;wBAC9B,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;oBAC7C;gBACF;gBAAC;YACH;YACA,OAAO,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;AAC9B,QAAA,CAAC,CAAC;IACJ,CAAC;wFAAC;IAEO,cAAc,GAAG,SAAS,CAAa,gBAAgB;uFAAC;IACxD,eAAe,GAAG,SAAS,CAAuB,iBAAiB;wFAAC;IAC7E,WAAW,GAAG,MAAM,CAAS,CAAC;oFAAC;IAEvB,UAAU,GAAsB,IAAI;IACpC,UAAU,GAAwB,IAAI;AAE9C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;AAC3D,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7B,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,aAA4B;AAC9D,YAAA,IAAI,CAAC,EAAE;gBAAE;YACT,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,KAAI;AACpD,gBAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AAC3B,oBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;gBACpD;AACF,YAAA,CAAC,CAAC;AACF,YAAA,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;AAC1B,YAAA,OAAO,MAAM,cAAc,CAAC,UAAU,EAAE;AAC1C,QAAA,CAAC,CAAC;IACJ;IAES,WAAW,GAAA;QAClB,KAAK,CAAC,WAAW,EAAE;QACnB,IAAI,CAAC,QAAQ,EAAE;IACjB;AAEA,IAAA,OAAO,CAAC,QAAgB,EAAA;AACtB,QAAA,IAAI,QAAQ,IAAI,EAAE,EAAE;YAClB,IAAI,CAAC,WAAW,EAAE;QACpB;aAAO;YACL,IAAI,CAAC,YAAY,EAAE;QACrB;AACA,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI;AAAE,YAAA,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE;AACvF,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,aAAa,EAAE;YAC/B,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,IAAI,EAAE,IAAI,CAAC,CAAC,EAAO,KAAK,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC;AAC5E,YAAA,IAAI;AACF,gBAAA,IAAI,CAAC,KAAK,EAAE,EAAE,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC;YACpD;YAAE,OAAO,GAAG,EAAE;AACZ,gBAAA,GAAG,CAAC,CAAC,EAAE,CAAA,2CAAA,EAA8C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA,CAAA,CAAG,EAAE,GAAG,CAAC;YACpF;QACF;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtC;IAES,YAAY,GAAA;QACnB,KAAK,CAAC,YAAY,EAAE;QACpB,IAAI,CAAC,YAAY,EAAE;IACrB;IAEU,YAAY,GAAA;QACpB,IAAI,CAAC,QAAQ,EAAE;AACf,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;IAChC;IAEU,WAAW,GAAA;QACnB,IAAI,IAAI,CAAC,UAAU;YAAE;AAErB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE;AACrC,QAAA,IAAI,CAAC,OAAO;YAAE;AAEd,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC;YACtC,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,SAAS,EAAE,oBAAoB,CAAC,cAAc,EAAE,CAAC,CAAC;YAClD,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAC1D,YAAA,QAAQ,EAAG,OAAO,CAAC,aAA6B,CAAC,WAAW;AAC5D,YAAA,UAAU,EAAE,8BAA8B;AAC3C,SAAA,CAAC;AAEF,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE;QAClC,IAAI,GAAG,EAAE;AACP,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3D;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AAE9B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,SAAS,CAAC,MAAK;YACtE,IAAI,IAAI,CAAC,eAAe,EAAE;gBAAE,IAAI,CAAC,YAAY,EAAE;AACjD,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,cAAc,CAAC,MAAY,EAAA;QACzB,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,IAAI,IAAI,EAAE;YAC/B,GAAG,CAAC,CAAC,EAAE,CAAA,cAAA,EAAiB,MAAM,EAAE,CAAC,CAAA,YAAA,EAAe,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA,sBAAA,EAAyB,MAAM,EAAE,CAAC,CAAA,CAAE,CAAC;YAC/G;QACF;AACA,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,YAAY,EAAE;IACrB;AAEA,IAAA,OAAO,CAAC,KAAoB,EAAA;AAC1B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE;AACtC,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE;AAC1B,QAAA,IAAI,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;AAC3E,QAAA,IAAI,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;AACnE,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;YAC7B,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,WAAW,EAAE;YAClB,YAAY,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM;AAClD,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,wBAAwB,EAAE;QACjC;AAAO,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;YAClC,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,YAAY,GAAG,CAAC,YAAY,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM;AACnE,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,wBAAwB,EAAE;QACjC;AAAO,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YAChC,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,EAAE;AAClC,gBAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;YAChC;YACA,IAAI,CAAC,YAAY,EAAE;QACrB;IACF;IAEQ,wBAAwB,GAAA;QAC9B,UAAU,CAAC,MAAK;AACd,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,aAAa,CAAc,eAAe,CAAC;YAC9F,MAAM,YAAY,GAAG,SAAS,EAAE,aAAa,CAAc,uBAAuB,CAAC;AACnF,YAAA,IAAI,SAAS,IAAI,YAAY,EAAE;AAC7B,gBAAA,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS;AACxC,gBAAA,MAAM,eAAe,GAAG,YAAY,GAAG,SAAS,CAAC,YAAY;AAC7D,gBAAA,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS;AACxC,gBAAA,MAAM,YAAY,GAAG,SAAS,GAAG,YAAY,CAAC,YAAY;AAC1D,gBAAA,IAAI,SAAS,GAAG,YAAY,EAAE;AAC5B,oBAAA,SAAS,CAAC,SAAS,GAAG,SAAS,GAAG,EAAE;gBACtC;AAAO,qBAAA,IAAI,YAAY,GAAG,eAAe,EAAE;oBACzC,SAAS,CAAC,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC,YAAY;gBAC7D;YACF;QACF,CAAC,EAAE,CAAC,CAAC;IACP;IAEQ,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;IACxB;uGA1MW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1B/B,qkEAqCA,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,2tDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDbY,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;+BACE,qBAAqB,EAAA,OAAA,EAGtB,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,qkEAAA,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,2tDAAA,CAAA,EAAA;AAwDyB,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,gBAAgB,yEACL,iBAAiB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AErExE,MAAO,YAAa,SAAQ,cAAc,CAAA;AAE9C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;AAC3D,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7B,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,aAAa,CAAC,EAAS,EAAA;QACrB,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE;AACzB,YAAA,IAAI;AACF,gBAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACtC;YAAE,OAAO,GAAG,EAAE;AACZ,gBAAA,GAAG,CAAC,CAAC,EAAE,sCAAsC,EAAE,GAAG,CAAC;YACrD;QACF;AACA,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,YAAY,EAAE;IACrB;uGAtBW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZzB,8oCAkBM,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,0EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDRM,QAAQ,0VAAE,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAErB,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,OAAA,EAGhB,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,8oCAAA,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,0EAAA,CAAA,EAAA;;;AEC7B,MAAO,cAAe,SAAQ,cAAc,CAAA;IAEhD,WAAW,GAAG,MAAM,CAAU,KAAK;oFAAC;AAEpC,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;AAC3D,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7B,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,QAAQ,CAAC,QAAiB,EAAA;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,YAAY,EAAE;IACrB;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;QACtB,IAAI,CAAC,WAAW,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG,EAAE,KAAK,CAAC;IACrF;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1B,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;QAC7B,CAAC,EAAE,CAAC,CAAC;IACP;uGA9BW,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,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX3B,4rCAmBM,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,qcAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDVM,UAAU,uLAAE,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEvB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,OAAA,EAGlB,CAAC,UAAU,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,4rCAAA,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,qcAAA,CAAA,EAAA;;;MECxB,eAAe,CAAA;IAE1B,KAAK,GAAG,KAAK,CAAyB,IAAI;8EAAC;AAE3C,IAAA,KAAK,GAAG,QAAQ,CAAgB,MAAK;AACnC,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;QACvB,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE;AACvC,YAAA,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;YACvB,IAAI,KAAK,CAAC,GAAG,CAAC;AAAE,gBAAA,OAAO,CAAC;YACxB,KAAK,GAAG,GAAG;QACb;AACA,QAAA,OAAO,KAAsB;IAC/B,CAAC;8EAAC;uGAbS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECV5B,6SAOM,EAAA,MAAA,EAAA,CAAA,+9BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDCM,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEL,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;+BACE,6BAA6B,EAAA,OAAA,EAG9B,CAAC,MAAM,CAAC,EAAA,QAAA,EAAA,6SAAA,EAAA,MAAA,EAAA,CAAA,+9BAAA,CAAA,EAAA;;;AEGb,MAAO,WAAY,SAAQ,cAAc,CAAA;AAE7C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,CAAC;;;;AAIxE,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7B,QAAA,CAAC,CAAC;IACJ;IAES,QAAQ,GAAA;QACf,KAAK,CAAC,QAAQ,EAAE;QAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC;IACnC;AAEA,IAAA,OAAO,CAAC,QAAgB,EAAE,KAAA,GAAiB,IAAI,EAAA;AAC7C,QAAA,IAAI,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC1B,IAAI,KAAK,CAAC,GAAG,CAAC;YAAE,GAAG,GAAG,CAAC;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtC;AAEA,IAAA,YAAY,CAAC,KAAU,EAAA;QACrB,IAAI,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QACpC,IAAI,KAAK,CAAC,GAAG,CAAC;YAAE,GAAG,GAAG,CAAC;QACvB,IAAI,GAAG,GAAG,CAAC;YAAE,GAAG,GAAG,CAAC;QACpB,IAAI,GAAG,GAAG,GAAG;YAAE,GAAG,GAAG,GAAG;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtC;uGAjCW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXxB,8mDAuBM,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,iKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDdM,eAAe,2FAAE,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAE5B,WAAW,EAAA,UAAA,EAAA,CAAA;kBANvB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,OAAA,EAGf,CAAC,eAAe,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,8mDAAA,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,iKAAA,CAAA,EAAA;;;AEEpC,MAAO,UAAW,SAAQ,cAAc,CAAA;AAE5C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;AAC3D,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7B,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,OAAO,CAAC,QAAgB,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI;AAAE,YAAA,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE;AACvF,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtC;uGAfW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXvB,2wCAkBM,EAAA,MAAA,EAAA,CAAA,+hFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDTM,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEX,UAAU,EAAA,UAAA,EAAA,CAAA;kBANtB,SAAS;+BACE,aAAa,EAAA,OAAA,EAGd,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,2wCAAA,EAAA,MAAA,EAAA,CAAA,+hFAAA,CAAA,EAAA;;;AEEnB,MAAO,cAAe,SAAQ,cAAc,CAAA;AAEhD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;AAC3D,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7B,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,OAAO,CAAC,QAAgB,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI;AAAE,YAAA,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE;AACvF,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtC;uGAfW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX3B,qxCAkBM,EAAA,MAAA,EAAA,CAAA,+hFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDTM,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEX,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;+BACE,iBAAiB,EAAA,OAAA,EAGlB,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,qxCAAA,EAAA,MAAA,EAAA,CAAA,+hFAAA,CAAA,EAAA;;;MELZ,gBAAgB,CAAA;IAE5B,SAAS,CAAC,KAAU,EAAE,IAAU,EAAA;QAC/B,OAAO,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;IACvC;uGAJY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,IAAI;mBAAC,EAAE,IAAI,EAAE,cAAc,EAAE;;;ACUxB,MAAO,aAAc,SAAQ,cAAc,CAAA;AAE/C,IAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;;;;AAMvB,IAAA,YAAY,GAAG,QAAQ,CAAW,MAAK;AAC9C,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI;AAAE,YAAA,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE;QACjF,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE;YACxC,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK;QAC/B;AACA,QAAA,IAAI,KAAK,IAAI,IAAI,EAAE;YACjB,KAAK,GAAG,EAAE;QACZ;QACA,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IACjE,CAAC;qFAAC;AAEF,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;AAC3D,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7B,QAAA,CAAC,CAAC;IACJ;uGA3BW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb1B,olCAmBM,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,2HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDRM,YAAY,0FAAE,gBAAgB,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,CAAA;;2FAE7B,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,OAAA,EAGjB,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,olCAAA,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,2HAAA,CAAA,EAAA;;;AEGrC,MAAO,YAAa,SAAQ,cAAc,CAAA;AAE9C,IAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;IAChC,QAAQ,GAAG,SAAS,CAAC,UAAU,gFAAI,IAAI,EAAE,UAAU,EAAA,CAAG;IAEtD,gBAAgB,GAAG,YAAY;IAC/B,kBAAkB,GAAG,cAAc;IACnC,iBAAiB,GAAG,aAAa;IACjC,YAAY,GAAG,eAAe;IAC9B,YAAY,GAAG,MAAM;IACrB,YAAY,GAAG,QAAQ;IACvB,cAAc,GAAG,WAAW;IAC5B,gBAAgB,GAAG,QAAQ;IAE3B,SAAS,GAAY,KAAK;IAC1B,SAAS,GAAY,KAAK;IAC1B,YAAY,GAAY,KAAK;IAC7B,cAAc,GAAuC,IAAI;AAEzD,IAAA,SAAS,GAAG,QAAQ,CAAW,MAAK;AAClC,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,IAAI,KAAK,IAAI,IAAI,EAAE;YACjB,KAAK,GAAG,EAAE;QACZ;QACA,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IACjE,CAAC;kFAAC;AAEF,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;AAC3D,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7B,QAAA,CAAC,CAAC;IACJ;IACS,QAAQ,GAAA;QACf,KAAK,CAAC,QAAQ,EAAE;QAChB,IAAI,CAAC,kBAAkB,EAAE;IAC3B;IAEA,OAAO,CAAC,EAAU,EAAE,cAAoE,EAAA;AACtF,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ;YAAE;QAC5B,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,aAA+B;AAChE,QAAA,IAAI,CAAC,SAAS;YAAE;AAChB,QAAA,IAAI,KAAK,GAAG,SAAS,CAAC,SAAS;AAC/B,QAAA,IAAI,CAAC,KAAK;YAAE;;AAGZ,QAAA,IAAI,cAAc,KAAK,SAAS,EAAE;AAChC,YAAA,cAAc,GAAG,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAAG,IAAI;QACpE;;QAGA,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;;AAGtC,QAAA,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC;;QAGrC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;AACxC,QAAA,IAAI,KAAK,KAAK,MAAM,EAAE;YACpB,KAAK,GAAG,EAAE;QACZ;AAEA,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,KAAK,GAAG,CAAA,GAAA,EAAM,KAAK,CAAA,IAAA,CAAM;QAC3B;AACA,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,KAAK,GAAG,CAAA,GAAA,EAAM,KAAK,CAAA,IAAA,CAAM;QAC3B;AACA,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,KAAK,GAAG,CAAA,GAAA,EAAM,KAAK,CAAA,IAAA,CAAM;QAC3B;AACA,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,KAAK,GAAG,2BAA2B,IAAI,CAAC,cAAc,CAAA,GAAA,EAAM,KAAK,QAAQ;QAC3E;AACA,QAAA,SAAS,CAAC,SAAS,GAAG,KAAK;QAE3B,IAAI,cAAc,EAAE;AAClB,YAAA,OAAO,CAAC,qBAAqB,CAAC,SAAS,EAAE,cAAc,CAAC;QAC1D;AAEA,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtC;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ;YAAE;QAC5B,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,aAA+B;AAChE,QAAA,IAAI,CAAC,SAAS;YAAE;AAEhB,QAAA,IAAI,KAAK,GAAG,SAAS,CAAC,SAAS;AAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAEvB,IAAI,CAAC,YAAY,EAAE;IACrB;AAEA,IAAA,WAAW,CAAC,SAAoB,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ;YAAE;AAC5B,QAAA,MAAM,YAAY,GAAG,SAAS,CAAC,YAAY;AAC3C,QAAA,IAAI,CAAC,YAAY;YAAE;;QAGnB,SAAS,CAAC,cAAc,EAAE;QAC1B,SAAS,CAAC,eAAe,EAAE;QAC3B,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC;QAC/C,GAAG,CAAC,CAAC,EAAE,sBAAsB,EAAE,IAAI,EAAE,SAAS,CAAC;IACjD;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ;YAAE;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS;QAChC,IAAI,CAAC,OAAO,EAAE;QACd,IAAI,CAAC,QAAQ,EAAE;IACjB;IACA,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ;YAAE;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS;QAChC,IAAI,CAAC,OAAO,EAAE;QACd,IAAI,CAAC,QAAQ,EAAE;IACjB;IACA,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ;YAAE;AAC5B,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY;QACtC,IAAI,CAAC,OAAO,EAAE;QACd,IAAI,CAAC,QAAQ,EAAE;IACjB;AACA,IAAA,SAAS,CAAC,SAAsC,EAAA;AAC9C,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ;YAAE;AAC5B,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE;AACrC,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;YAC1B,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,QAAQ,EAAE;YACf;QACF;AACA,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS;QAC/B,IAAI,CAAC,OAAO,EAAE;QACd,IAAI,CAAC,QAAQ,EAAE;IACjB;IAGA,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ;YAAE;QAC5B,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,aAA+B;AAChE,QAAA,IAAI,CAAC,SAAS;YAAE;AAChB,QAAA,IAAI,KAAK,GAAG,SAAS,CAAC,SAAS;AAC/B,QAAA,IAAI,CAAC,KAAK;YAAE;AAEZ,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AAEzB,QAAA,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC;AACrC,QAAA,SAAS,CAAC,SAAS,GAAG,KAAK;QAC3B,IAAI,CAAC,QAAQ,EAAE;IACjB;AAEA,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ;YAAE;AAC5B,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YACzB,KAAK,CAAC,cAAc,EAAE;YAEtB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,aAA+B;AAClE,YAAA,IAAI,CAAC,SAAS;gBAAE;;YAGhB,MAAM,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC,CAAC;;AAG/D,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE;YACvC,IAAI,SAAS,IAAI,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE;gBACzC,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;gBACrC,KAAK,CAAC,cAAc,EAAE;gBAEtB,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;AACvC,gBAAA,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;;AAGpB,gBAAA,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;AACvB,gBAAA,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;gBACrB,SAAS,CAAC,eAAe,EAAE;AAC3B,gBAAA,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC3B;AAEA,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC;QACzC;IACF;IAEA,kBAAkB,GAAA;AAChB,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK;YAAE;AACzC,QAAA,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE;AAE3B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChE,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChE,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;AACnE,QAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,cAAc,GAAG,MAAM;QAC9B;AAAO,aAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE;AAC/C,YAAA,IAAI,CAAC,cAAc,GAAG,QAAQ;QAChC;AAAO,aAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE;AAC9C,YAAA,IAAI,CAAC,cAAc,GAAG,OAAO;QAC/B;IACF;uGA3MW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,0JAGkB,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjBrD,kyFAoCM,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,wyBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDxBM,QAAQ,0VAAE,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAErB,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,OAAA,EAGhB,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,kyFAAA,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,wyBAAA,CAAA,EAAA;AAKZ,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,UAAU,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AENjD,MAAO,WAAY,SAAQ,cAAc,CAAA;AAE7C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;AAC3D,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7B,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,OAAO,CAAC,QAAgB,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI;AAAE,YAAA,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE;AACvF,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtC;uGAfW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXxB,6wCAkBM,EAAA,MAAA,EAAA,CAAA,+hFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDTM,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEX,WAAW,EAAA,UAAA,EAAA,CAAA;kBANvB,SAAS;+BACE,cAAc,EAAA,OAAA,EAGf,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,6wCAAA,EAAA,MAAA,EAAA,CAAA,+hFAAA,CAAA,EAAA;;;AEDnB,MAAO,YAAa,SAAQ,cAAc,CAAA;AAE9C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;AAC3D,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7B,QAAA,CAAC,CAAC;IACJ;uGATW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,gGCRzB,iWAE4G,EAAA,MAAA,EAAA,CAAA,8BAAA,CAAA,EAAA,CAAA;;2FDM/F,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,iWAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,CAAA,EAAA;;;AEQrB,MAAO,UAAW,SAAQ,cAAc,CAAA;AAE5C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;AAC3D,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7B,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,OAAO,CAAC,QAAgB,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI;AAAE,YAAA,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE;AACvF,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtC;uGAfW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZvB,skDA0BM,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,sYAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhBM,QAAQ,0VAAE,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAErB,UAAU,EAAA,UAAA,EAAA,CAAA;kBANtB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,OAAA,EAGd,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,skDAAA,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,sYAAA,CAAA,EAAA;;;AEM7B,MAAO,iBAAkB,SAAQ,cAAc,CAAA;IAEnD,IAAI,GAAU,EAAE;IAChB,QAAQ,GAAG,SAAS,CAAC,UAAU,gFAAI,IAAI,EAAE,UAAU,EAAA,CAAG;AAEtD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;AAC3D,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7B,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;QACb,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE;gBAC7D,IAAI,CAAC,QAAQ,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE;YACxC;QACF,CAAC,EAAE,GAAG,CAAC;IACT;AAEA,IAAA,OAAO,CAAC,QAAgB,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI;AAAE,YAAA,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE;AACvF,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtC;AAGA,IAAA,WAAW,CAAC,EAAS,EAAA;AACnB,QAAA,IAAI,CAAC,GAAI,EAAE,CAAC,MAA2B;AACvC,QAAA,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK;AACf,QAAA,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI;QACjB,IAAI,KAAK,GAAG,QAAQ;QACpB,IAAI,aAAa,GAAW,GAAG;QAC/B,IAAI,MAAM,GAAG,KAAK;AAElB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;;AAE5C,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;;AAEnB,YAAA,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;YAErD,IAAI,KAAK,GAAI,QAAQ,CAAC,aAAa,CAAC,CAAA,wBAAA,EAA2B,aAAa,CAAA,EAAA,CAAI,CAA6B;YAC7G,IAAI,KAAK,EAAE;gBACT,KAAK,CAAC,KAAK,EAAE;YACf;iBAAO;gBACL,MAAM,GAAG,IAAI;YACf;QACF;aAAO;AACL,YAAA,CAAC,CAAC,KAAK,GAAG,EAAE;AACZ,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACxB;;AAGA,QAAA,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5F,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;;AAG3B,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,UAAU,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,EAAE;AAC/D,YAAA,IAAI;AACF,gBAAA,IAAI,CAAC,KAAK,EAAE,EAAE,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC;gBAClD,IAAI,CAAC,YAAY,EAAE;YACrB;YAAE,OAAO,GAAG,EAAE;AACZ,gBAAA,GAAG,CAAC,CAAC,EAAE,CAAA,qCAAA,EAAwC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA,CAAA,CAAG,EAAE,GAAG,CAAC;YAC9E;QACF;IACF;AAEA,IAAA,OAAO,CAAC,EAAiB,EAAA;AACvB,QAAA,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG;AAChB,QAAA,IAAI,CAAC,GAAI,EAAE,CAAC,MAA2B;AACvC,QAAA,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK;QACf,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,WAAW,EAAE;YACtC,IAAI,KAAK,GAAG,QAAQ;YACpB,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;YACnC,IAAI,aAAa,GAAW,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;;YAErD,IAAI,KAAK,GAAI,QAAQ,CAAC,aAAa,CAAC,CAAA,wBAAA,EAA2B,aAAa,CAAA,EAAA,CAAI,CAA6B;YAC7G,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE;oBACrB,KAAK,CAAC,KAAK,EAAE;gBACf;YACF;QACF;IACF;AAEA,IAAA,OAAO,CAAC,EAAS,EAAA;AACd,QAAA,EAAE,CAAC,MAA2B,EAAE,MAAM,EAAE;IAC3C;uGAzFW,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,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAGa,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBrD,o/FAsCM,25FDxBM,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;+BACE,oBAAoB,EAAA,OAAA,EAGrB,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,o/FAAA,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,kUAAA,CAAA,EAAA;AAKF,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,UAAU,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AERjD,MAAO,eAAgB,SAAQ,cAAc,CAAA;IAEjD,KAAK,GAAoB,EAAE;AAE3B,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;AAC3D,YAAA,IAAI,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC;gBAAE,KAAK,GAAG,IAAI;;AAE9D,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7B,QAAA,CAAC,CAAC;IACJ;IAES,QAAQ,GAAA;QACf,KAAK,CAAC,QAAQ,EAAE;AAChB,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAAE,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE;;AACtD,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;IACtB;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,KAAK,CAAC;IAC3C;AAEA,IAAA,OAAO,CAAC,QAAgB,EAAA;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,YAAY,EAAE;IACrB;IAEA,cAAc,GAAA;QACZ,IAAI,KAAK,GAAG,EAAE;QACd,IAAI,CAAC,IAAI,CAAC,KAAK;AAAE,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;QAChC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,YAAY,EAAE;QAEnB,UAAU,CAAC,MAAK;YACd,IAAI,SAAS,GAAI,QAAQ,CAAC,gBAAgB,CAAC,CAAA,sBAAA,CAAwB,CAAyC;YAC5G,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE;YACzC;QACF,CAAC,EAAE,CAAC,CAAC;IACP;AAEA,IAAA,cAAc,CAAC,KAAa,EAAA;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE;QAC3D,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;AAAE,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AAC1D,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,YAAY,EAAE;IACrB;IAEA,aAAa,CAAC,KAAa,EAAE,KAAa,EAAA;QACxC,IAAI,IAAI,CAAC,KAAK;AAAE,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK;AACzC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,YAAY,EAAE;IACrB;uGA7DW,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,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX5B,65DAqCM,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,8bAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED5BM,QAAQ,0VAAE,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAErB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,OAAA,EAGnB,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,65DAAA,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,8bAAA,CAAA,EAAA;;;AEE7B,MAAO,YAAa,SAAQ,cAAc,CAAA;AAE9C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,CAAC;AACxE,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7B,QAAA,CAAC,CAAC;IACJ;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC;IACnC;AAEA,IAAA,OAAO,CAAC,QAAgB,EAAE,KAAA,GAAiB,IAAI,EAAA;AAC7C,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI;AAAE,YAAA,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE;AACvF,QAAA,IAAI,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC;QAC9B,IAAI,KAAK,CAAC,GAAG,CAAC;YAAE,GAAG,GAAG,CAAC;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtC;uGArBW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXzB,k0CAmBM,EAAA,MAAA,EAAA,CAAA,+hFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDVM,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEX,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;+BACE,eAAe,EAAA,OAAA,EAGhB,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,k0CAAA,EAAA,MAAA,EAAA,CAAA,+hFAAA,CAAA,EAAA;;;AEInB,MAAO,cAAe,SAAQ,cAAc,CAAA;AAEhD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;AAC3D,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7B,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,OAAO,CAAC,QAAgB,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI;AAAE,YAAA,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE;AACvF,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtC;;IAGA,IAAI,GAAG,MAAM,CAAC,IAAI;6EAAC;AACnB,IAAA,iBAAiB,CAAC,KAAiB,EAAA;QACjC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3B,KAAK,CAAC,eAAe,EAAE;IACzB;uGAtBW,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,QAAA,EAAA,IAAA,EAAA,cAAc,kGCb3B,qlDAuBM,EAAA,MAAA,EAAA,CAAA,+hFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDZM,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,+FAAE,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAE7B,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,WAGlB,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,EAAA,QAAA,EAAA,qlDAAA,EAAA,MAAA,EAAA,CAAA,+hFAAA,CAAA,EAAA;;;AECrC,MAAO,YAAa,SAAQ,cAAc,CAAA;IAErC,WAAW,GAAG,SAAS,CAAa,aAAa;oFAAC;AAE3D,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,WAAW,IAAI,IAAI,KAAK;oFAAC;AAEpE,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;AAC3D,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7B,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,OAAO,CAAC,QAAgB,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI;AAAE,YAAA,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE;AACvF,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtC;;IAGA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QACpB,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,YAAY,EAAE;IACrB;IAEA,gBAAgB,GAAA;QACd,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;IAC5C;IAEA,iBAAiB,GAAA;QACf,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,YAAY,EAAE;IACrB;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,EAAE;IACrB;uGAxCW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZzB,+pCAkBM,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDRM,YAAY,+FAAE,UAAU,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEvB,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,OAAA,EAGhB,CAAC,YAAY,EAAE,UAAU,CAAC,EAAA,QAAA,EAAA,+pCAAA,EAAA,MAAA,EAAA,CAAA,+hFAAA,CAAA,EAAA;mGAIU,aAAa,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEAtD,MAAO,YAAa,SAAQ,cAAc,CAAA;AAG9C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;AAC3D,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7B,QAAA,CAAC,CAAC;IACJ;;;AAKA,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;QAC3B,OAAO,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,IAAI,IAAI,EAAE;IACxC,CAAC;qFAAC;;AAIF,IAAA,QAAQ,CAAC,WAAyB,EAAA;AAChC,QAAA,IAAI,QAAQ,GAAQ,WAAW,CAAC,IAAI;QAEpC,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,aAAa,IAAI,WAAW,CAAC,aAAa,EAAE;AAC5D,YAAA,IAAI;AACF,gBAAA,IAAI,CAAC,KAAK,EAAE,EAAE,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,WAAW,CAAC,aAAa,CAAC;YACvE;YAAE,OAAO,GAAG,EAAE;AACZ,gBAAA,GAAG,CAAC,CAAC,EAAE,CAAA,2CAAA,EAA8C,IAAI,CAAC,IAAI,EAAE,CAAA,CAAA,CAAG,EAAE,GAAG,CAAC;YAC3E;QACF;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,YAAY,EAAE;IACrB;uGAnCW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdzB,qoCAiBM,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,6MAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDLM,QAAQ,oMAAE,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAErB,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,OAAA,EAGhB,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,qoCAAA,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,6MAAA,CAAA,EAAA;;;AED7B,MAAO,WAAY,SAAQ,cAAc,CAAA;IAE7C,WAAW,GAAG,MAAM,CAAU,KAAK;oFAAC;AAEpC,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;AAC3D,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7B,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,QAAQ,CAAC,QAAiB,EAAA;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,YAAY,EAAE;IACrB;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;QACtB,IAAI,CAAC,WAAW,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG,EAAE,KAAK,CAAC;IACrF;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1B,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;QAC7B,CAAC,EAAE,CAAC,CAAC;IACP;uGA9BW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXxB,irCAmBM,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,wbAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDVM,OAAO,8JAAE,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEpB,WAAW,EAAA,UAAA,EAAA,CAAA;kBANvB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,OAAA,EAGf,CAAC,OAAO,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,irCAAA,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,wbAAA,CAAA,EAAA;;;AEE5B,MAAO,UAAW,SAAQ,cAAc,CAAA;AAE5C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;AAC3D,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7B,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,OAAO,CAAC,QAAgB,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI;AAAE,YAAA,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE;AACvF,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAEtC;uGAhBW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXvB,ixCAkBM,EAAA,MAAA,EAAA,CAAA,+hFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDTM,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEX,UAAU,EAAA,UAAA,EAAA,CAAA;kBANtB,SAAS;+BACE,aAAa,EAAA,OAAA,EAGd,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,ixCAAA,EAAA,MAAA,EAAA,CAAA,+hFAAA,CAAA,EAAA;;;AEOnB,MAAO,YAAa,SAAQ,cAAc,CAAA;IAE9C,QAAQ,GAAY,KAAK;IACzB,SAAS,GAAG,SAAS,CAAC,WAAW,iFAAI,IAAI,EAAE,UAAU,EAAA,CAAG;IACxD,aAAa,GAAW,EAAE;IAC1B,UAAU,GAAG,MAAM,CAAU,IAAI;mFAAC;AAElC,IAAA,iBAAiB,GAAG,QAAQ,CAAS,MAAK;AACxC,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IAC/F,CAAC;0FAAC;AAEF,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;AAC3D,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;AAC3B,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,QAAA,CAAC,CAAC;IACJ;IACS,QAAQ,GAAA;QACf,KAAK,CAAC,QAAQ,EAAE;QAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,IAAI,KAAK;QAC/C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,IAAI,EAAE;IACjD;AAEA,IAAA,QAAQ,CAAC,QAAyB,EAAA;AAChC,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,IAAI,CAAC,KAAK;YAAE;QACZ,IAAI,KAAK,CAAC,QAAQ;YAAE;;AAEpB,QAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;;QAE5D,IAAI,aAAa,GAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AACjF,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AAE/B,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,YAAY,EAAE;IACrB;AAEA,IAAA,SAAS,GAAG,QAAQ,CAAkB,MAAK;AACzC,QAAA,IAAI,GAAG,GAAI,IAAI,CAAC,KAAK,EAA2D;AAChF,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;;AAEjB,YAAA,OAAO,GAAsB;QAC/B;aAAO;;AAEL,YAAA,IAAI,GAAG,IAAI,GAAG,KAAK,EAAE,EAAE;gBACrB,OAAO,CAAC,GAAoB,CAAC;YAC/B;iBAAO;AACL,gBAAA,OAAO,EAAE;YACX;QACF;IACF,CAAC;kFAAC;;AAGF,IAAA,SAAS,CAAC,OAAoB,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ;YAAE;AAC5B,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,OAAO,CAAC,IAAI,YAAY,KAAK,CAAC;YAAE;AAClF,QAAA,IAAI,SAAS,GAAoB,OAAO,CAAC,IAAI;AAC7C,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;IAC3B;;AAGA,IAAA,QAAQ,CAAC,IAAmB,EAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ;YAAE;AAC5B,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE;AACnC,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;AAC/D,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACd,YAAA,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7B,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC7B;IACF;AAEA,IAAA,SAAS,CAAC,QAAyB,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ;YAAE;QAC5B,IAAI,SAAS,GAAoB,EAAE;AACnC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,SAAS,GAAG;AACV,gBAAA,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE;AACzB,gBAAA,GAAG,QAAQ;aACZ;QACH;aAAO;YACL,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChC;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;IAC1B;IAEA,MAAM,kBAAkB,CAAC,EAAS,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ;YAAE;AAC5B,QAAA,MAAM,YAAY,GAAG,EAAE,CAAC,MAA0B;AAClD,QAAA,IAAI,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACvD,WAAW,IAAI,OAAO,IAAI,YAAY,CAAC,KAAK,EAAE;gBAC5C,IAAI,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;gBAC/C,IAAI,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;gBAC/C,IAAI,MAAM,GAAkB,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC7D,IAAI,CAAC,MAAM,EAAE;oBAAE,GAAG,CAAC,CAAC,EAAE,CAAA,gCAAA,EAAmC,OAAO,CAAC,IAAI,CAAA,CAAA,CAAG,CAAC;oBAAE;gBAAU;gBACrF,IAAI,CAAC,SAAS,CAAC,CAAC;wBACd,MAAM;wBACN,IAAI,EAAE,OAAO,CAAC,IAAI;wBAClB,IAAI,EAAE,OAAO,CAAC,IAAI;AAClB,wBAAA,SAAS;wBACT,IAAI,EAAE,OAAO,CAAC,IAAI;wBAClB,eAAe,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE;AAC9D,qBAAA,CAAC,CAAC;YACL;AACA,YAAA,YAAY,CAAC,KAAK,GAAG,EAAE;QACzB;IACF;AAEA,IAAA,aAAa,CAAC,IAAmB,EAAA;QAC/B,IAAI,CAAC,IAAI,CAAC,SAAS;AAAE,YAAA,OAAO,KAAK;QACjC,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC1F,OAAO,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IAC/D;IAEA,aAAa,GAAA;;AAEX,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE;YACvD,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE;QACzC;IACF;uGAzHW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAGoB,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnBvD,m5DAwCM,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,qRAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED1BM,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAE3C,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;+BACE,eAAe,EAAA,OAAA,EAGhB,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,CAAC,EAAA,QAAA,EAAA,m5DAAA,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,qRAAA,CAAA,EAAA;AAKjC,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,WAAW,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AERnD,MAAO,UAAW,SAAQ,cAAc,CAAA;AAE5C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;AAC3D,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7B,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,OAAO,CAAC,QAAgB,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI;AAAE,YAAA,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE;AACvF,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtC;uGAfW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXvB,2wCAkBM,EAAA,MAAA,EAAA,CAAA,+hFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDTM,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEX,UAAU,EAAA,UAAA,EAAA,CAAA;kBANtB,SAAS;+BACE,aAAa,EAAA,OAAA,EAGd,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,2wCAAA,EAAA,MAAA,EAAA,CAAA,+hFAAA,CAAA,EAAA;;;AEEnB,MAAO,cAAe,SAAQ,cAAc,CAAA;AAEhD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;AAC3D,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7B,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,OAAO,CAAC,KAAY,EAAA;AAClB,QAAA,IAAI,QAAQ,GAAI,KAAK,CAAC,MAA8B,CAAC,KAAK;AAC1D,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI;AAAE,YAAA,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE;AACvF,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAEtC;uGAjBW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX3B,s3CAmBM,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,oDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDVM,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEX,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;+BACE,iBAAiB,EAAA,OAAA,EAGlB,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,s3CAAA,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,oDAAA,CAAA,EAAA;;;AEGnB,MAAO,aAAc,SAAQ,cAAc,CAAA;;IAG/C,KAAK,GAAiB,EAAE;AAExB,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;QACP,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,YAAA,IAAI,KAAK,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;AAC3D,YAAA,IAAI,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC;gBAAE,KAAK,GAAG,IAAI;;AAE9D,YAAA,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;AAC7B,QAAA,CAAC,CAAC;IACJ;IAES,QAAQ,GAAA;QACf,KAAK,CAAC,QAAQ,EAAE;AAChB,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAAE,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE;;AACtD,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;IACtB;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,KAAK,CAAC;IAC3C;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,KAAK,GAAQ,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE;QACxD,IAAI,CAAC,IAAI,CAAC,KAAK;AAAE,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;QAChC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,YAAY,EAAE;QAEnB,UAAU,CAAC,MAAK;YACd,IAAI,SAAS,GAAI,QAAQ,CAAC,gBAAgB,CAAC,CAAA,sBAAA,CAAwB,CAAyC;YAC5G,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE;YACzC;QACF,CAAC,EAAE,CAAC,CAAC;IACP;AAEA,IAAA,cAAc,CAAC,KAAa,EAAA;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE;QAC3D,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;AAAE,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AAC1D,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,YAAY,EAAE;IACrB;IAEA,cAAc,CAAC,GAAW,EAAE,KAAa,EAAA;QACvC,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG;AACzC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtC;IAEA,cAAc,CAAC,KAAa,EAAE,KAAa,EAAA;QACzC,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK;AAC3C,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtC;IAEA,eAAe,CAAC,GAAW,EAAE,KAAa,EAAA;QACxC,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG;AACzC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,YAAY,EAAE;IACrB;IAEA,eAAe,CAAC,KAAa,EAAE,KAAa,EAAA;QAC1C,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK;AAC3C,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,YAAY,EAAE;IACrB;uGAzEW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ1B,koFA8CM,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,ggBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDpCM,QAAQ,0VAAE,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAErB,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,OAAA,EAGjB,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,koFAAA,EAAA,MAAA,EAAA,CAAA,+hFAAA,EAAA,ggBAAA,CAAA,EAAA;;;AE2B7B,MAAO,aAAc,SAAQ,cAAc,CAAA;AAEtC,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;+EAAC;;;;AAMtD,IAAA,mBAAmB,CAAC,IAAa,EAAA;;;;;;AAO/B;;AAEoD;;AAGpD,QAAA,MAAM,UAAU,GAAiC;AAC/C,YAAA,CAAC,MAAM,CAAC,YAAY,GAAG,kBAAkB;AACzC,YAAA,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY;AAC7B,YAAA,CAAC,MAAM,CAAC,QAAQ,GAAG,cAAc;AACjC,YAAA,CAAC,MAAM,CAAC,KAAK,GAAG,WAAW;AAC3B,YAAA,CAAC,MAAM,CAAC,IAAI,GAAG,UAAU;AACzB,YAAA,CAAC,MAAM,CAAC,QAAQ,GAAG,cAAc;AACjC,YAAA,CAAC,MAAM,CAAC,OAAO,GAAG,aAAa;AAC/B,YAAA,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY;AAC7B,YAAA,CAAC,MAAM,CAAC,KAAK,GAAG,WAAW;AAC3B,YAAA,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY;AAC7B,YAAA,CAAC,MAAM,CAAC,IAAI,GAAG,UAAU;AACzB,YAAA,CAAC,MAAM,CAAC,WAAW,GAAG,iBAAiB;AACvC,YAAA,CAAC,MAAM,CAAC,OAAO,GAAG,aAAa;AAC/B,YAAA,CAAC,MAAM,CAAC,SAAS,GAAG,eAAe;AACnC,YAAA,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY;AAC7B,YAAA,CAAC,MAAM,CAAC,QAAQ,GAAG,cAAc;AACjC,YAAA,CAAC,MAAM,CAAC,UAAU,GAAG,aAAa;AAClC,YAAA,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY;AAC7B,YAAA,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY;AAC7B,YAAA,CAAC,MAAM,CAAC,KAAK,GAAG,WAAW;AAC3B,YAAA,CAAC,MAAM,CAAC,IAAI,GAAG,UAAU;AACzB,YAAA,CAAC,MAAM,CAAC,QAAQ,GAAG,cAAc;AACjC,YAAA,CAAC,MAAM,CAAC,IAAI,GAAG,UAAU;AACzB,YAAA,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY;YAE7B,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,UAAU;SAC1C;AACD,QAAA,IAAI,IAAI;AAAE,YAAA,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI;AACzC,QAAA,OAAO,IAAI;IACb;uGAlDW,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrC1B,yMAEC,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDiCW,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,sCAAA,EAAA,0BAAA,EAAA,2BAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEhB,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,SAAS;+BACE,UAAU,EAAA,OAAA,EAKX,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAAA,yMAAA,EAAA;;;ME/BjB,WAAW,CAAA;IAEtB,SAAS,CAAC,KAAU,EAAE,IAAU,EAAA;AAC9B,QAAA,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;IAC/B;uGAJW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,IAAI;mBAAC,EAAE,IAAI,EAAE,SAAS,EAAE;;;MCWZ,YAAY,CAAA;IAEvB,IAAI,GAAG,KAAK,CAAC,QAAQ;6EAAc;IACnC,QAAQ,GAAG,KAAK,CAAM,EAAE;iFAAC;IACzB,UAAU,GAAG,KAAK,CAAU,KAAK;mFAAC;IAClC,SAAS,GAAG,KAAK,CAAS,CAAC;kFAAC;IAC5B,UAAU,GAAG,KAAK,CAAS,CAAC;mFAAC;IAE7B,QAAQ,GAAG,MAAM,CAAC,IAAI;iFAAC;AAEvB,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;QAC/B,IAAI,UAAU,GAAQ,EAAE;QACxB,IAAI,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;QACrC,IAAI,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,QAAQ,EAAE;AAC5C,YAAA,OAAO,UAAU;QACnB;QACA,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,IAAI,EAAE;AACX,QAAA,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YACpB,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC;QACnC;AACA,QAAA,OAAO,UAAU;IACnB,CAAC;yFAAC;;IAGF,MAAM,GAAA;AACJ,QAAA,IAAI,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,CAAC;AAC9D,QAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;IACtB;IAGA,YAAY,GAAG,MAAM,CAAC,KAAK;qFAAC;IAC5B,WAAW,GAAA;QACT,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QAC3C,IAAI,CAAC,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IACjD;IAEA,YAAY,GAAG,MAAM,CAAC,KAAK;qFAAC;IAC5B,WAAW,GAAA;QACT,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QAC3C,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAG;YAC5B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;gBAChC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;YACnC;AACA,YAAA,OAAO,CAAC;AACV,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAG,MAAM,CAAC,KAAK;oFAAC;IAC3B,SAAS,GAAA;QACP,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAG;YAC5B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;gBAChC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;YACrC;AACA,YAAA,OAAO,CAAC;AACV,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAG,MAAM,CAAC,KAAK;oFAAC;IAC3B,OAAO,GAAA;QACL,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC/C;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;IAChC;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,EAAE,CAAC,kBAAkB,EAAE;IAClC;IAEA,gBAAgB,GAAA;QACd,IAAI,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3C;IAEA,UAAU,GAAA;QACR,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE;IACzB;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE;IAC7B;AAEA,IAAA,MAAM,OAAO,GAAA;AACX,QAAA,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE;IAC7B;IAEA,aAAa,GAAG,MAAM,CAAC,KAAK;sFAAC;IAC7B,aAAa,GAAA;QACX,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;IAC/C;IAEA,YAAY,GAAG,MAAM,CAAC,KAAK;qFAAC;IAC5B,WAAW,GAAA;QACT,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AAC3C,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACvB,YAAA,IAAI,CAAC,IAAI,EAAE,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC;QAC/D;aAAO;AACL,YAAA,IAAI,CAAC,IAAI,EAAE,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACjD;IACF;uGA3GW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,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,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,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdzB,qnLAwGM,EAAA,MAAA,EAAA,CAAA,m9CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED5FM,QAAQ,0VAAE,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,IAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,WAAW,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,EAAA,CAAA;;2FAE9C,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;+BACE,kBAAkB,EAAA,OAAA,EAGnB,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,WAAW,CAAC,EAAA,QAAA,EAAA,qnLAAA,EAAA,MAAA,EAAA,CAAA,m9CAAA,CAAA,EAAA;;;AEGtD,MAAO,UAAc,SAAQ,gBAAmB,CAAA;AAEpD,IAAA,MAAM,MAAM,GAAA;;QAEV;IACF;IAEA,UAAU,GAAG,KAAK,CAAU,KAAK;mFAAC;IAClC,OAAO,GAAG,MAAM,EAAO;IACvB,WAAW,GAAG,KAAK,CAAS,gBAAgB;oFAAC;IAE7C,SAAS,GAAA;AACP,QAAA,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AAChD,QAAA,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC;AACvC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;IAC5B;AAEA,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;QAC3B,IAAI,YAAY,GAAU,EAAE;AAC5B,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,EAAS;AAClC,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,YAAY;AACjC,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QAC1B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACrC,YAAA,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;AACvB,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM;gBAAE;AAClC,YAAA,IAAI,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,IAAI,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,IAAI,OAAO,GAAG,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;gBACtH,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7E;QACF;AACA,QAAA,OAAO,YAAY;IACrB,CAAC;qFAAC;AAEF,IAAA,mBAAmB,CAAC,CAAqC,EAAA;QACvD,IAAI,CAAC,IAAI,IAAI;YAAE;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAqB,GAAG,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC,SAAS,EAAE;IAClB;uGApCW,UAAU,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,mcCfvB,s6BAwBC,EAAA,MAAA,EAAA,CAAA,8yBAAA,EAAA,0PAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDXW,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,qDAAE,YAAY,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEpC,UAAU,EAAA,UAAA,EAAA,CAAA;kBANtB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,WAGrB,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,s6BAAA,EAAA,MAAA,EAAA,CAAA,8yBAAA,EAAA,0PAAA,CAAA,EAAA;;;MEFrC,QAAQ,CAAA;AAEnB,IAAA,KAAK,GAAG,KAAK;yFAAe;AAC5B,IAAA,MAAM,GAAG,KAAK;0FAA0B;IAExC,gBAAgB,GAAG,MAAM,CAAC,IAAI;yFAAC;IAC/B,iBAAiB,GAAG,MAAM,CAAC,IAAI;0FAAC;AAChC,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;QACxB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK;QAC/B,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACjD,CAAC;kFAAC;AACF,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;QACxB,OAAO,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,IAAI,EAAE;IAClC,CAAC;kFAAC;IACF,SAAS,GAAG,KAAK,CAAS,CAAC;kFAAC;AAC5B,IAAA,cAAc,GAAG,MAAM,CAAW,CAAC,CAAC,CAAC;uFAAC;AACtC,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,IAAI,KAAK;iFAAC;AAE1D,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK;AAC/B,YAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;AAChC,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC/B;YACF;AACA,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAChD,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpE,QAAA,CAAC,CAAC;IACJ;IACA,QAAQ,GAAA;AACN,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC1B,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAExB,QAAA,IAAI,MAAM,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI;YAAE;QACrC,IAAI,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC;AACnD,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACtB,YAAA,OAAO,CAAC,OAAO,CAAC,IAAI,IAAG;AACrB,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAG;oBACpB,IAAI,CAAC,EAAE;;wBAEL,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;4BACtB,IAAI,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;4BAC7B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACvC,gCAAA,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;4BAChC;wBACF;6BAAO;;AAEL,4BAAA,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;AACX,gCAAA,IAAI,EAAE,OAAO;gCACb,MAAM,EAAE,CAAC,IAAI,CAAC;AACK,6BAAA,CAAC;wBACxB;oBACF;AACA,oBAAA,OAAO,CAAC;AACV,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;QACJ;;IAEF;AAEA,IAAA,WAAW,CAAC,SAAkB,EAAA;QAC5B,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK;QAC/B,IAAI,KAAK,IAAI,IAAI;YAAE;AAEnB,QAAA,IAAI,SAAS,IAAI,IAAI,EAAE;YACrB,IAAI,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACtD,YAAA,IAAI,gBAAgB,KAAK,CAAC,CAAC,EAAE;AAC3B,gBAAA,IAAI,gBAAgB,KAAK,IAAI,CAAC,SAAS,EAAE,EAAE;AACzC,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;oBAC7B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAG,EAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvE;YACF;iBAAO;AACL,gBAAA,GAAG,CAAC,CAAC,EAAE,4BAA4B,CAAC;YACtC;QACF;aAAO;AACL,YAAA,IAAI,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;AACjE,YAAA,IAAI,gBAAgB,KAAK,CAAC,CAAC,EAAE;AAC3B,gBAAA,IAAI,gBAAgB,KAAK,IAAI,CAAC,SAAS,EAAE,EAAE;AACzC,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC;oBACpC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAG,EAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9E;YACF;iBAAO;AACL,gBAAA,GAAG,CAAC,CAAC,EAAE,mCAAmC,CAAC;YAC7C;QACF;IACF;IACA,UAAU,GAAA;QACR,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK;QAC/B,IAAI,KAAK,IAAI,IAAI;YAAE;AAEnB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE;YACxB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAG,EAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,YAAA,IAAI,qBAAqB,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACnF,YAAA,IAAI,qBAAqB,IAAI,IAAI,EAAE;AACjC,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC;YAC3C;iBAAO;AACL,gBAAA,GAAG,CAAC,CAAC,EAAE,uBAAuB,CAAC;YACjC;QACF;aAAO;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAA,GAAG,CAAC,CAAC,EAAE,oCAAoC,CAAC;QAC9C;IACF;IAIA,iBAAiB,CAAC,MAA8B,EAAE,KAAkB,EAAA;;AAElE,QAAA,IAAI,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QACzC,IAAI,aAAa,GAAa,EAAE;QAChC,IAAI,gBAAgB,GAAa,EAAE;AACnC,QAAA,KAAK,IAAI,SAAS,IAAI,WAAW,EAAE;YACjC,IAAI,UAAU,GAAG,KAAK;AACtB,YAAA,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,gBAAA,KAAK,IAAI,YAAY,IAAI,IAAI,CAAC,MAAM,EAAE;AACpC,oBAAA,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;AACpC,wBAAA,IAAI,YAAY,KAAK,SAAS,EAAE;4BAC9B,UAAU,GAAG,IAAI;4BACjB;wBACF;oBACF;yBAAO;wBACL,IAAI,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;4BAC3C,UAAU,GAAG,IAAI;4BACjB;wBACF;oBACF;gBACF;AACA,gBAAA,IAAI,UAAU;oBAAE;YAClB;YACA,IAAI,UAAU,EAAE;AACd,gBAAA,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;YAC/B;iBAAO;AACL,gBAAA,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;YAClC;QACF;;;;;;AAMA,QAAA,OAAO,gBAAgB;IAEzB;uGAhJW,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXrB,0vCAuBC,EAAA,MAAA,EAAA,CAAA,unCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDdW,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEP,QAAQ,EAAA,UAAA,EAAA,CAAA;kBANpB,SAAS;+BACE,cAAc,EAAA,OAAA,EAGf,CAAC,QAAQ,CAAC,EAAA,QAAA,EAAA,0vCAAA,EAAA,MAAA,EAAA,CAAA,unCAAA,CAAA,EAAA;;;AEwBf,MAAO,UAAc,SAAQ,gBAAmB,CAAA;IAEpD,UAAU,GAAG,KAAK,CAAU,KAAK;mFAAC;AAElC,IAAA,WAAW,GAAG,KAAK;+FAAsB;AACzC,IAAA,UAAU,GAAG,KAAK;8FAA+C;IACjE,OAAO,GAAG,MAAM,EAAW;IAC3B,IAAI,GAAG,MAAM,EAAgB;;IAG7B,SAAS,GAAG,KAAK,CAAU,IAAI;kFAAC;IAChC,aAAa,GAAG,KAAK,CAAU,IAAI;sFAAC;IACpC,eAAe,GAAG,KAAK,CAAU,IAAI;wFAAC;IACtC,WAAW,GAAG,KAAK,CAAU,IAAI;oFAAC;IAClC,UAAU,GAAG,KAAK,CAAU,IAAI;mFAAC;IACjC,WAAW,GAAG,MAAM,CAAe,EAAE;oFAAC;IAEtC,MAAM,GAAQ,IAAI;IAET,QAAQ,GAAA;QACf,KAAK,CAAC,QAAQ,EAAE;QAChB,IAAI,CAAC,oBAAoB,EAAE;;AAG3B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE;AAC1C,oBAAA,KAAK,EAAE,gBAAgB;AACvB,oBAAA,SAAS,EAAE,WAAW;oBACtB,IAAI,EAAE,YAAW;AACf,wBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;wBAC7B,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,0BAA0B,EAAE;oBACnD;AACD,iBAAA,CAAC,CAAC;QACL;;AAGA,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AACxB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE;AAC1C,oBAAA,KAAK,EAAE,aAAa;AACpB,oBAAA,SAAS,EAAE,OAAO;oBAClB,IAAI,EAAE,YAAW;AACf,wBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;wBACrB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,uBAAuB,EAAE;oBAChD;AACD,iBAAA,CAAC,CAAC;QACL;;AAGA,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AAC1B,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE;AAC1C,oBAAA,KAAK,EAAE,wBAAwB;AAC/B,oBAAA,SAAS,EAAE,OAAO;oBAClB,IAAI,EAAE,YAAW;AACf,wBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;wBACzB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,kCAAkC,EAAE;oBAC3D;AACD,iBAAA,CAAC,CAAC;QACL;;AAGA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE;AAC1C,oBAAA,KAAK,EAAE,WAAW;AAClB,oBAAA,SAAS,EAAE,WAAW;oBACtB,IAAI,EAAE,YAAW;AACf,wBAAA,IAAI;AACF,4BAAA,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;4BACzB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,qBAAqB,EAAE;wBAC9C;wBAAE,OAAO,CAAC,EAAE;4BACV,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,mBAAmB,EAAE;wBAC7C;oBACF;AACD,iBAAA,CAAC,CAAC;QACL;;QAGA,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AAC1C,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE;AAC1C,oBAAA,KAAK,EAAE,gBAAgB;AACvB,oBAAA,SAAS,EAAE,aAAa;oBACxB,IAAI,EAAE,YAAW;;AAEf,wBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;4BAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,qBAAqB,EAAE;;AAGtE,wBAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE;AAChC,wBAAA,IAAI,CAAC,QAAQ;4BAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,8BAA8B,EAAE;;AAGrE,wBAAA,IAAI,CAAC,MAAM,GAAG,IAAI;;AAGlB,wBAAA,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;wBAEhD,IAAI,YAAY,GAAG,EAAE;;AAGrB,wBAAA,IAAI;AACF,4BAAA,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI;AAC3B,4BAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;4BACvB,IAAI,CAAC,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;AACrC,4BAAA,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK;AAC5B,4BAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACxB,4BAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;;gCAEvB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,iBAAiB,EAAE;4BAC1C;wBACF;wBAAE,OAAO,CAAC,EAAE;AACV,4BAAA,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,CAAC,CAAC;AAC9C,4BAAA,YAAY,GAAG,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;wBAC3D;;wBAGA,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAA,wBAAA,EAA2B,YAAY,CAAA,CAAE,EAAE;oBACnE;AACD,iBAAA,CAAC,CAAC;QACL;;QAGA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI;AAC/B,YAAA,GAAG,KAAK;AACR,YAAA;AACE,gBAAA,KAAK,EAAE,kBAAkB;AACzB,gBAAA,SAAS,EAAE,gBAAgB;gBAC3B,IAAI,EAAE,YAAW;AACf,oBAAA,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,kBAAkB,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC;AACzG,oBAAA,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AAC/C,oBAAA,IAAI,WAAW,GAAiB;wBAC9B,MAAM;wBACN,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,wBAAA,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE;wBACzB;qBACD;AACD,oBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AAC3B,oBAAA,IAAI,EAAE;AAAE,wBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI;AAClC,oBAAA,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,8BAA8B,GAAG,gBAAgB,EAAE;gBAC7E;AACD;AACF,SAAA,CAAC;IAEJ;AAEA,IAAA,MAAM,MAAM,GAAA;AACV,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;QAE9B,WAAW,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;;AAE3C,YAAA,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE;AACnB,YAAA,CAAC,CAAC,IAAI,CAAC,CAAC,IAAG;AACT,gBAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AAClB,gBAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AACpB,YAAA,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAG;AACX,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;gBACpB,IAAI,CAAC,OAAO,GAAG,CAAA,4BAAA,EAA+B,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA,CAAE;AAC5F,YAAA,CAAC,CAAC;AACF,YAAA,MAAM,CAAC;AACP,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;QAClB;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;QAC/B,IAAI,CAAC,oBAAoB,EAAE;IAC7B;uGAnKW,UAAU,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAV,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,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,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjCvB,giGA+EC,EAAA,MAAA,EAAA,CAAA,kpCAAA,EAAA,0PAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhDW,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,QAAQ,gJAAE,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAEjE,UAAU,EAAA,UAAA,EAAA,CAAA;kBANtB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EAGrB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAA,QAAA,EAAA,giGAAA,EAAA,MAAA,EAAA,CAAA,kpCAAA,EAAA,0PAAA,CAAA,EAAA;;;AEpBzE,MAAO,YAAgB,SAAQ,gBAAmB,CAAA;AAEtD,IAAA,MAAM,MAAM,GAAA;;QAEV;IACF;IAEA,UAAU,GAAG,KAAK,CAAU,KAAK;mFAAC;uGAPvB,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,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,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXzB,gfAWC,EAAA,MAAA,EAAA,CAAA,0hBAAA,EAAA,0PAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDFW,aAAa,qDAAE,YAAY,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAE1B,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,OAAA,EAGxB,CAAC,aAAa,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,gfAAA,EAAA,MAAA,EAAA,CAAA,0hBAAA,EAAA,0PAAA,CAAA,EAAA;;;MEI3B,cAAc,CAAA;AAEzB,IAAA,MAAM,GAAG,KAAK;0FAAsC;AACpD,IAAA,KAAK,GAAG,KAAK;yFAAO;IACpB,IAAI,GAAG,KAAK,CAAoB,QAAQ;6EAAC;AACzC,IAAA,YAAY,GAAG,KAAK;gGAAwB;IAC5C,UAAU,GAAG,KAAK,CAAuB,EAAE;mFAAC;AAE5C,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAC/B,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QAC1B,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAExE,IAAI,UAAU,GAAG,MAAM,EAAE,GAAG,CAAC,KAAK,IAAG;YACnC,IAAI,MAAM,GAAQ,EAAE;;YAEpB,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,EAAE;YAC7C,OAAO;AACL,gBAAA,GAAG,KAAK;gBACR,KAAK,EAAE,MAAM,GAAG,GAAG;gBACnB,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE;;gBAE1C,MAAM;gBACN,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;aAC7D;QACH,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;;QAG5D,UAAU,GAAG,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACrC,YAAA,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,UAAU;AAAE,gBAAA,OAAO,CAAC;AAC3C,YAAA,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU;gBAAE,OAAO,CAAC,CAAC;AAC5C,YAAA,OAAO,CAAC;AACV,QAAA,CAAC,CAAC;;AAGF,QAAA,OAAO,UAAU;IACnB,CAAC;yFAAC;;;;;;;;;;;;;;;AAqBF,IAAA,iBAAiB,CAAC,KAA2B,EAAA;AAC3C,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;AACtC,QAAA,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,SAAS;AAAE,YAAA,OAAO,EAAE;AAElD,QAAA,QAAQ,KAAK,CAAC,IAAI;YAEhB,KAAK,MAAM,CAAC,YAAY;;gBAEtB;YAGF,KAAK,MAAM,CAAC,MAAM;;gBAEhB;YAEF,KAAK,MAAM,CAAC,QAAQ;AAClB,gBAAA,KAAK,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,GAAG,KAAK;gBACtC;YAEF,KAAK,MAAM,CAAC,KAAK;;gBAEf;YAEF,KAAK,MAAM,CAAC,MAAM;AAChB,gBAAA,GAAG,CAAC,CAAC,EAAE,sHAAsH,CAAC;gBAC9H;YAEF,KAAK,MAAM,CAAC,IAAI;AACd,gBAAA,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACpD;YAEF,KAAK,MAAM,CAAC,QAAQ;AAClB,gBAAA,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC;gBACrC;YAEF,KAAK,MAAM,CAAC,OAAO;;gBAEjB;YAEF,KAAK,MAAM,CAAC,MAAM;;gBAEhB;YAEF,KAAK,MAAM,CAAC,KAAK;;gBAEf;YAEF,KAAK,MAAM,CAAC,MAAM;;gBAEhB;YAEF,KAAK,MAAM,CAAC,IAAI;AACd,gBAAA,KAAK,GAAG,CAAA,UAAA,EAAa,KAAK,CAAA,aAAA,EAAgB,KAAK,EAAE;gBACjD;YAEF,KAAK,MAAM,CAAC,WAAW;;gBAErB;YAEF,KAAK,MAAM,CAAC,SAAS;;gBAEnB;YAEF,KAAK,MAAM,CAAC,MAAM;;gBAEhB;YAEF,KAAK,MAAM,CAAC,QAAQ;gBAClB,KAAK,GAAG,UAAU;gBAClB;YAEF,KAAK,MAAM,CAAC,UAAU;gBACpB,IAAI,KAAK,CAAC,UAAU;AAAE,oBAAA,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;gBACrD;YAEF,KAAK,MAAM,CAAC,MAAM;;gBAEhB;YAEF,KAAK,MAAM,CAAC,MAAM;AAChB,gBAAA,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI;AAC/B,gBAAA,IAAI,WAAW,GAAG,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;AACrD,gBAAA,WAAW,GAAG,KAAK,GAAG,GAAG,WAAW,CAAA,CAAE,GAAG,KAAK,GAAG,CAAA,EAAG,KAAK,EAAE;gBAC3D;YAEF,KAAK,MAAM,CAAC,KAAK;AACf,gBAAA,KAAK,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,KAAK;gBACrC;YAEF,KAAK,MAAM,CAAC,IAAI;;gBAEd;YAEF,KAAK,MAAM,CAAC,MAAM;;gBAEhB;;;;;;;;;;;;;;;;;;AAoBJ,QAAA,OAAO,KAAK;IACd;uGA5KW,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,QAAA,EAAA,IAAA,EAAA,cAAc,uvBCb3B,8eAcM,EAAA,MAAA,EAAA,CAAA,oxDAAA,CAAA,EAAA,CAAA;;2FDDO,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,WAGrB,EAAE,EAAA,QAAA,EAAA,8eAAA,EAAA,MAAA,EAAA,CAAA,oxDAAA,CAAA,EAAA;;;MEDA,YAAY,CAAA;AAEvB,IAAA,KAAK,GAAG,KAAK;yFAAO;IACpB,IAAI,GAAG,KAAK,CAAoB,QAAQ;6EAAC;AACzC,IAAA,YAAY,GAAG,KAAK;gGAAwB;AAE5C,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC3B,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AACxB,QAAA,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QAC1C,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAExE,IAAI,UAAU,GAAG,IAAI,EAAE,GAAG,CAAC,KAAK,IAAG;YACjC,OAAO;gBACL,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG;gBACtC,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;gBAClD,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;aACvD;AACH,QAAA,CAAC,CAAC;;QAGF,UAAU,GAAG,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACrC,YAAA,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,UAAU;AAAE,gBAAA,OAAO,CAAC;AAC3C,YAAA,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU;gBAAE,OAAO,CAAC,CAAC;AAC5C,YAAA,OAAO,CAAC;AACV,QAAA,CAAC,CAAC;;AAGF,QAAA,OAAO,UAAU;IACnB,CAAC;qFAAC;AAEF,IAAA,kBAAkB,CAAC,KAAU,EAAA;AAC3B,QAAA,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,SAAS;AAAE,YAAA,OAAO,EAAE;QAElD,IAAI,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;QAEzC,QAAQ,YAAY;AAElB,YAAA,KAAK,QAAQ;gBACX,KAAK,GAAG,CAAA,iBAAA,EAAoB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAA,QAAA,CAAU;gBAC/D;AAEF,YAAA,KAAK,OAAO;gBACV,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpC,oBAAA,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE;AACzC,wBAAA,KAAK,GAAG,CAAA,gBAAA,EAAmB,KAAK,CAAC,MAAM,cAAc;oBACvD;yBAAO;AACL,wBAAA,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC1B;gBACF;gBACA;;AAGJ,QAAA,OAAO,KAAK;IACd;uGArDW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,mfCVzB,sUAUM,EAAA,MAAA,EAAA,CAAA,i9CAAA,CAAA,EAAA,CAAA;;2FDAO,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,WAGnB,EAAE,EAAA,QAAA,EAAA,sUAAA,EAAA,MAAA,EAAA,CAAA,i9CAAA,CAAA,EAAA;;;AEJb;IACY;AAAZ,CAAA,UAAY,UAAU,EAAA;AACrB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AAClB,CAAC,EAJW,UAAU,KAAV,UAAU,GAAA,EAAA,CAAA,CAAA;MAYT,iBAAiB,GAAG,IAAI,cAAc,CAAkB,aAAa;IAqCtE;AAAZ,CAAA,UAAY,eAAe,EAAA;AAC1B,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,eAAA,CAAA,UAAA,CAAA,GAAA,QAAmB;AACnB,IAAA,eAAA,CAAA,UAAA,CAAA,GAAA,SAAoB;AACpB,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,SAAiB;AACjB,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AAClB,CAAC,EAPW,eAAe,KAAf,eAAe,GAAA,EAAA,CAAA,CAAA;AAsBpB,MAAM,kBAAkB,GAAU;AACxC,IAAA,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE;AAChB,IAAA,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE;AAClB,IAAA,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE;AAClB,IAAA,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE;AAClB,IAAA,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE;AACpB,IAAA,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE;;AA4GhB,MAAM,oBAAoB,GAAG;AACnC,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,UAAU,EAAE,SAA+B;AAC3C,IAAA,UAAU,EAAE,EAA0B;AACtC,IAAA,gBAAgB,EAAE;AACjB,QAAA,WAAW,EAAE,EAAE;AACf,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,kBAAkB,EAAE,KAAK;AACL,KAAA;AACrB,IAAA,WAAW,EAAE,EAA0B;AACvC,IAAA,iBAAiB,EAAE;AAClB,QAAA,iBAAiB,EAAE,OAAO;AAC1B,QAAA,WAAW,EAAE,EAAE;AACf,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,kBAAkB,EAAE,IAAI;AACF,KAAA;AACvB,IAAA,WAAW,EAAE,CAAC,CAAM,KAAK,KAAK;AAC9B,IAAA,gBAAgB,EAAE,EAAE;AACpB,IAAA,uBAAuB,EAAE,IAAI;AAC7B,IAAA,WAAW,EAAE,kBAAkB;AAC/B,IAAA,cAAc,EAAE,EAAE;AAClB,IAAA,cAAc,EAAE,IAAI;AACpB,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,WAAW,EAAE,IAAI;AACjB,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,eAAe,EAAE,IAAI;AACrB,IAAA,cAAc,EAAE,KAAK;AACrB,IAAA,cAAc,EAAE,IAAI;AACpB,IAAA,aAAa,EAAE,QAA0C;AACzD,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,eAAe,EAAE,KAAK;AACtB,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,aAAa,EAAE,MAAM;AACrB,IAAA,WAAW,EAAE,KAAK;AAClB,IAAA,QAAQ,EAAE,KAAK;;;MCvOH,eAAe,CAAA;IAEpB,UAAU,GAAG,MAAM,CAA8B,SAAS;mFAAC;AAElE,IAAA,gBAAgB,CAAC,MAAuB,EAAA;AACvC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;IAC5B;uGANY,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAf,eAAe,EAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B;;;ACGD,MAAMA,qBAAmB,GAAG,UAAU;MAYzB,eAAe,CAAA;AAGlB,IAAA,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC;AACjC,IAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AAChC,IAAA,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC;IAEzC,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAO;IAC7B,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAK;IAC3B,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAkB;IACzC,WAAW,GAAG,KAAK,CAAC,QAAQ;oFAAc;IAC1C,YAAY,GAAG,KAAK,CAAC,QAAQ;qFAAgB;IAC7C,eAAe,GAAG,KAAK,CAAC,QAAQ;wFAAU;IAE1C,KAAK,GAAG,MAAM,CAAU,IAAI;8EAAC;AAE7B,IAAA,UAAU;IAEV,GAAG,GAAG,SAAS,CAAC,eAAe,2EAAI,IAAI,EAAE,gBAAgB,EAAA,CAAG;AACpD,IAAA,aAAa;IAErB,aAAa,GAAa,EAAE;IAE5B,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;QACtC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,EAAE;AACrC,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE;QACzC;IACF;IACA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;AAC5B,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS;QAChC;IACF;IACA,eAAe,GAAA;QACb,IAAI,CAAC,gBAAgB,EAAE;IACzB;AACA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE;AACvC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;QACtC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YACpC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC;QAChD;IACF;IAEA,WAAW,GAAA;QACT,IAAI,IAAI,GAAG,EAAE;QACb,IAAI,IAAI,GAAsB,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI;AACrD,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,QAAQ,IAAK,IAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACvE,MAAM,KAAK,GAAI,IAAe,CAAC,KAAK,CAAC,GAAG,CAAC;YACzC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AACxE,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAGA,qBAAmB,CAAC,CAAC;QAClD;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI;AAAE,YAAA,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AAEvF,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;AAC3B,YAAA,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI;QAChE;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE;AACjC,YAAA,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;QACjC;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE;AACnC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,YAAa,CAAC,IAAI,CAAC,aAAa,EAAE;mBAC7D;AACA,mBAAA,EAAE;YACP,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC;QACrD;AAEA,QAAA,IAAI,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;AAE7B,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAC3H,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,YAAA,KAAK,IAAI,CAAC,IAAI,KAAK,EAAE;gBACnB,IAAI,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;gBAC5D,IAAI,CAAC,IAAI,EAAE,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;oBACvC,IAAI,QAAQ,GAAG,IAAI,MAAM,CAAC,CAAA,MAAA,EAAS,CAAC,CAAA,MAAA,CAAQ,EAAE,GAAG,CAAC;oBAClD,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,EAAE;wBAC1C;oBACF;AACA,oBAAA,IAAI,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;oBACxE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG;0BACpB;0BACA,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,MAAM;0BAC9B;0BACA,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;oBAC9B,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC;gBAC7C;YACF;YAAC;QACH;QAEA,OAAO,IAAI,IAAI,EAAE;IACnB;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,EAAE;AACpC,YAAA,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE;AACnB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,aAAc,CAAC,SAAS,EAAE;AAC5F,gBAAA,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC;oBACxB,MAAM,EAAE,IAAI,CAAC,cAAc;AAC3B,oBAAA,SAAS,EAAE;wBACT,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE;wBACzD,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU;AACpD;iBACF;AACF,aAAA,CAAC;QACJ;IACF;IAEA,aAAa,GAAA;QACX,IAAI,KAAK,GAAG,EAAE;AACd,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI;AAAE,YAAA,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QACxF,OAAO;AACL,YAAA,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE;AAC1B,YAAA,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE;AAC5B,YAAA,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE;AAClB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,EAAE,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,kBAAkB;YACxF,aAAa,EAAE,IAAI,CAAC,OAAO;YAC3B,KAAK;SACN;IACH;uGA5HW,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,QAAA,EAAA,IAAA,EAAA,eAAe,+5BALf,CAAC,eAAe,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,KAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAuBa,gBAAgB,kECpC3D,yIAIC,EAAA,MAAA,EAAA,CAAA,uGAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDcY,eAAe,EAAA,UAAA,EAAA,CAAA;kBAV3B,SAAS;+BACE,uBAAuB,EAAA,eAAA,EAGhB,uBAAuB,CAAC,MAAM,aACpC,CAAC,eAAe,CAAC,EAAA,IAAA,EACtB;AACJ,wBAAA,uBAAuB,EAAE;AAC1B,qBAAA,EAAA,QAAA,EAAA,yIAAA,EAAA,MAAA,EAAA,CAAA,uGAAA,CAAA,EAAA;AAoBe,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,eAAe,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEzBhD,eAAe,CAAA;IAE1B,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAoB;IAC3C,YAAY,GAAG,KAAK,CAAC,QAAQ;qFAAiB;IAC9C,YAAY,GAAG,KAAK,CAAsB,KAAK;qFAAC;IAChD,OAAO,GAAG,KAAK,CAAsB,KAAK;gFAAC;IAE3C,MAAM,GAAG,MAAM,EAAqB;IAE1B,aAAa,CAAC,MAA2B,EAAE,YAA4B,EAAA;AAC/E,QAAA,IAAI,MAAM,EAAE,MAAM,EAAE;YAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;QAC5C;QACA;IACF;uGAdW,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,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECX5B,gtCA4BC,EAAA,MAAA,EAAA,CAAA,qMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDrBW,QAAQ,0VAAE,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,0BAAA,EAAA,eAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,OAAA,EACxB,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAA,QAAA,EAAA,gtCAAA,EAAA,MAAA,EAAA,CAAA,qMAAA,CAAA,EAAA;;;MEUhB,eAAe,CAAA;IAC1B,UAAU,GAAG,KAAK,CAAC,QAAQ;mFAAiB;IAC5C,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAoB;IAC3C,OAAO,GAAG,KAAK,CAAC,QAAQ;gFAAuB;IAC/C,gBAAgB,GAAG,KAAK,CAAC,QAAQ;yFAAuB;IACxD,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAS;IAC/B,eAAe,GAAG,KAAK,CAAC,QAAQ;wFAAU;IAC1C,UAAU,GAAG,KAAK,CAAU,KAAK;mFAAC;IAClC,eAAe,GAAG,KAAK,CAAU,KAAK;wFAAC;IACvC,WAAW,GAAG,KAAK,CAAU,KAAK;oFAAC;IACnC,OAAO,GAAG,KAAK,CAAU,KAAK;gFAAC;IAC/B,QAAQ,GAAG,KAAK,CAAS,CAAC;iFAAC;IAC3B,OAAO,GAAG,KAAK,CAAU,KAAK;gFAAC;IAE/B,eAAe,GAAG,MAAM,EAAqB;IAC7C,UAAU,GAAG,MAAM,EAAiB;AAE1B,IAAA,WAAW,CAAC,KAAwB,EAAA;AAC5C,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;IAClC;IAEU,UAAU,GAAA;QAClB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IACzC;uGAvBW,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,QAAA,EAAA,IAAA,EAAA,eAAe,6uDCjB5B,+4EAkCC,EAAA,MAAA,EAAA,CAAA,m3ZAAA,EAAA,2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDrBW,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,0JAAE,eAAe,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,EAAA,cAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAI3C,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,WACxB,CAAC,UAAU,EAAE,eAAe,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,+4EAAA,EAAA,MAAA,EAAA,CAAA,m3ZAAA,EAAA,2BAAA,CAAA,EAAA;;;MEgB5C,aAAa,CAAA;IAEzB,OAAO,GAAG,KAAK,CAAC,QAAQ;gFAAuB;IAC/C,UAAU,GAAG,KAAK,CAAC,QAAQ;mFAAgB;IAC3C,iBAAiB,GAAG,KAAK,CAAC,QAAQ;0FAAW;IAC7C,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAoB;IAC3C,UAAU,GAAG,KAAK,CAAU,KAAK;mFAAC;IAClC,eAAe,GAAG,KAAK,CAAU,KAAK;wFAAC;IACvC,OAAO,GAAG,KAAK,CAAU,KAAK;gFAAC;IAC/B,WAAW,GAAG,KAAK,CAAU,KAAK;oFAAC;IACnC,cAAc,GAAG,KAAK,CAAU,KAAK;uFAAC;IAEtC,UAAU,GAAG,MAAM,EAAqB;IACxC,SAAS,GAAG,MAAM,EAAW;IAC7B,iBAAiB,GAAG,MAAM,EAAsB;IAChD,uBAAuB,GAAG,MAAM,EAAiC;AAEvD,IAAA,mBAAmB,CAAC,MAAyB,EAAA;AACtD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;QAClE,OAAO,SAAS,GAAG,SAAS,CAAC,OAAO,GAAG,IAAI;IAC5C;AAEU,IAAA,YAAY,CAAC,MAAyB,EAAA;AAC/C,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;IAC7B;AAEU,IAAA,WAAW,CAAC,KAAc,EAAA;AACnC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3B;IAEU,aAAa,CAAC,KAAiB,EAAE,MAAyB,EAAA;QACnE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC/C;IAEU,mBAAmB,CAAC,KAAY,EAAE,MAAyB,EAAA;QACpE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACrD;uGApCY,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,q/CC7B1B,8oEA6CC,EAAA,MAAA,EAAA,CAAA,m3ZAAA,EAAA,2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDlBU,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,ifAAE,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEhC,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,mBAGd,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC,EAAE,KAAK,EAAE,mBAAmB,EAAE,WAC3B,CAAC,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC,EAAA,QAAA,EAAA,8oEAAA,EAAA,MAAA,EAAA,CAAA,m3ZAAA,EAAA,2BAAA,CAAA,EAAA;;;MEfjC,cAAc,CAAA;IAEzB,SAAS,GAAG,KAAK,CAAC,QAAQ;kFAAc;IACxC,YAAY,GAAG,KAAK,CAAC,QAAQ;qFAAU;IACvC,WAAW,GAAG,KAAK,CAAC,QAAQ;oFAAU;IACtC,eAAe,GAAG,KAAK,CAAoB,kBAAkB;wFAAC;IAC9D,cAAc,GAAG,KAAK,CAAqB,EAAE;uFAAC;IAE9C,UAAU,GAAG,MAAM,EAAU;IAE7B,cAAc,GAAA;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW;AAC1C,QAAA,IAAI,KAAK,GAAG,CAAC,EAAE;YACb,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACjC;IACF;IAEA,UAAU,GAAA;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW;AAC1C,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE;YAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACjC;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACzB;IAEA,UAAU,GAAA;QACR,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IAC3C;AAEA,IAAA,gBAAgB,CAAC,WAAyB,EAAA;;;QAGxC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1B;uGApCW,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,QAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ3B,m0FAwDC,EAAA,MAAA,EAAA,CAAA,q1BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjDW,QAAQ,0VAAE,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKjB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;+BACE,qBAAqB,EAAA,OAAA,EACtB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAA,eAAA,EAGZ,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,m0FAAA,EAAA,MAAA,EAAA,CAAA,q1BAAA,CAAA,EAAA;;;MEEpC,aAAa,CAAA;IAExB,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAoB;IAC3C,gBAAgB,GAAG,KAAK,CAAC,QAAQ;yFAAkB;IACnD,gBAAgB,GAAG,KAAK,CAAC,QAAQ;yFAAuB;IACxD,UAAU,GAAG,KAAK,CAAC,QAAQ;mFAAW;IACtC,eAAe,GAAG,KAAK,CAAU,KAAK;wFAAC;IAEvC,WAAW,GAAG,MAAM,EAAU;IAC9B,eAAe,GAAG,MAAM,EAAsB;IAC9C,YAAY,GAAG,MAAM,EAAQ;IAC7B,aAAa,GAAG,MAAM,EAAgB;IACtC,WAAW,GAAG,MAAM,EAAQ;IAC5B,cAAc,GAAG,MAAM,EAAQ;IAC/B,YAAY,GAAG,MAAM,EAAQ;IAC7B,mBAAmB,GAAG,MAAM,EAAQ;AAEpC,IAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAK;QACpC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,IAAI,CAAC,CAAC,UAAU,CAAC;IACxF,CAAC;8FAAC;AAEF,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;QAC7B,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,IAAI,CAAC,CAAC,UAAU,CAAC;IACxF,CAAC;uFAAC;IAEQ,IAAI,GAAG,IAAI;AAErB,IAAA,aAAa,CAAC,IAAY,EAAA;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;IAC7B;IAEA,0BAA0B,GAAA;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;AAEA,IAAA,aAAa,CAAC,MAA2B,EAAA;QACvC,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;QACnC;IACF;AAEA,IAAA,YAAY,CAAC,MAAoB,EAAA;AAC/B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;IACjC;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;IACzB;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;IAC5B;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;uGAvDW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,ojCCZ1B,o/KA4HC,EAAA,MAAA,EAAA,CAAA,m3ZAAA,EAAA,gHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDpHW,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,MAAM,0MAAE,UAAU,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAI3B,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,WACtB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAA,QAAA,EAAA,o/KAAA,EAAA,MAAA,EAAA,CAAA,m3ZAAA,EAAA,gHAAA,CAAA,EAAA;;;MEC5B,aAAa,CAAA;uGAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECT1B,qKAGM,EAAA,MAAA,EAAA,CAAA,yNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDEM,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIL,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;+BACE,qBAAqB,EAAA,OAAA,EACtB,CAAC,MAAM,CAAC,EAAA,QAAA,EAAA,qKAAA,EAAA,MAAA,EAAA,CAAA,yNAAA,CAAA,EAAA;;;MEGN,WAAW,CAAA;uGAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,4ECRxB,mIAGM,EAAA,MAAA,EAAA,CAAA,ueAAA,CAAA,EAAA,CAAA;;2FDKO,WAAW,EAAA,UAAA,EAAA,CAAA;kBANvB,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,WACnB,EAAE,EAAA,QAAA,EAAA,mIAAA,EAAA,MAAA,EAAA,CAAA,ueAAA,CAAA,EAAA;;;AEcZ,MAAM,mBAAmB,GAAG,UAAU;MA6BzB,MAAM,CAAA;IAEjB,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAqB;IAC3C,MAAM,GAAG,KAAK,CAAC,QAAQ;+EAAoB;AAC3C,IAAA,MAAM,GAAG,KAAK;0FAAmB;IAEjC,gBAAgB,GAAG,MAAM,CAAsB,EAAE;yFAAC;IAClD,gBAAgB,GAAG,MAAM,CAAsB,EAAE;yFAAC;IAClD,gBAAgB,GAAG,MAAM,CAAsB,EAAE;yFAAC;IAClD,aAAa,GAAG,MAAM,CAAsB,EAAE;sFAAC;IAC/C,mBAAmB,GAAG,MAAM,CAAC,MAAM;4FAAC;IACpC,eAAe,GAAG,MAAM,CAAS,EAAE;wFAAC;IACpC,mBAAmB,GAAG,MAAM,CAAW,EAAE;4FAAC;IAC1C,cAAc,GAAG,MAAM,CAAW,EAAE;uFAAC;IACrC,UAAU,GAAG,MAAM,CAAC,KAAK;mFAAC;IAC1B,eAAe,GAAG,MAAM,CAAC,KAAK;wFAAC;IAC/B,YAAY,GAAG,MAAM,CAAC,IAAI;qFAAC;AAC3B,IAAA,iBAAiB,GAAG;QAClB,KAAK,EAAE,IAAI,GAAG;KACf;IACD,uBAAuB,GAAG,MAAM,CAAS,CAAC;gGAAC;IAC3C,qBAAqB,GAAG,MAAM,CAAS,CAAC;8FAAC;IACzC,cAAc,GAAG,MAAM,CAAC,EAAE;uFAAC;IAC3B,UAAU,GAAG,MAAM,CAAC,EAAE;mFAAC;IACvB,SAAS,GAAG,MAAM,CAAC,EAAE;kFAAC;IACtB,SAAS,GAAG,MAAM,CAAC,EAAE;kFAAC;IACtB,gBAAgB,GAAG,MAAM,CAAC,CAAC;yFAAC;IAC5B,gBAAgB,GAAG,MAAM,CAAsB,IAAI;yFAAC;IACpD,UAAU,GAAG,CAAC;IAEd,aAAa,GAAG,KAAK,CAAC,MAAM;sFAAC;IAC7B,WAAW,GAAG,KAAK,CAAC,KAAK;oFAAC;IAC1B,OAAO,GAAG,KAAK,CAAC,KAAK;gFAAC;IACtB,eAAe,GAAG,KAAK,CAAC,KAAK;wFAAC;IAC9B,UAAU,GAAG,KAAK,CAAC,KAAK;mFAAC;IACzB,iBAAiB,GAAG,MAAM,CAAC,KAAK;0FAAC;IACjC,cAAc,GAAG,MAAM,CAAC,KAAK;uFAAC;IAC9B,eAAe,GAAG,MAAM,CAAoB,SAAS;wFAAC;AAC9C,IAAA,WAAW,GAAG,MAAM,CAAS,MAAM,CAAC,UAAU;oFAAC;AAC/C,IAAA,eAAe,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;AACvE,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC5B,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,GAAG,QAAQ,GAAG,SAAS;IACzD,CAAC;sFAAC;IAEF,OAAO,GAAG,KAAK;IAEf,gBAAgB,GAAG,CAAC;AAEpB,IAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;IAC1B,QAAQ,GAAG,SAAS,CAAC,UAAU,gFAAI,IAAI,EAAE,UAAU,EAAA,CAAG;IACtD,UAAU,GAAG,SAAS,CAAC,YAAY,kFAAI,IAAI,EAAE,UAAU,EAAA,CAAG;IAEhD,IAAI,GAAG,IAAI;IACX,eAAe,GAAG,MAAM,CAAC,IAAI;wFAAC;AAC9B,IAAA,MAAM,GAAW,OAAO,CAAC,IAAI,EAAE;IAE/B,gBAAgB,GAAG,MAAM,CAAe,EAAE;yFAAC;IAC3C,eAAe,GAAG,MAAM,CAAa;AAC7C,QAAA,WAAW,EAAE,CAAC;AACd,QAAA,UAAU,EAAE,CAAC;AACb,QAAA,aAAa,EAAE,CAAC;AACjB,KAAA;wFAAC;AAEQ,IAAA,GAAG,GAAG,QAAQ,CAAC,MAAK;AAC5B,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;QACvB,OAAO;AACL,YAAA,GAAG,oBAAoB;AACvB,YAAA,GAAG,CAAC;YACJ,gBAAgB,EAAE,EAAE,GAAG,oBAAoB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,gBAAgB,EAAsB;YACzG,iBAAiB,EAAE,EAAE,GAAG,oBAAoB,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,iBAAiB,EAAwB;SAC7D;IACrD,CAAC;4EAAC;AAEF,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;QAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,aAAa;AACtC,QAAA,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI;AACvC,QAAA,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACzC,CAAC,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,eAAA,EAAA,8BAAA,EAAA,CAAA,EACC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,KAAI;AACd,YAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI;AAAE,gBAAA,OAAO,IAAI;AACzC,YAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI;AAAE,gBAAA,OAAO,KAAK;AAC1C,YAAA,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;AAAE,gBAAA,OAAO,KAAK;AACvC,YAAA,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,QAAA,CAAC,GACD;AAEF,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACxC,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;YACV,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM;YAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM;YACjD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,KAAK,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;AAC7E,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE;AACrC,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;YACpC,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE;AACzC,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;YAC3B;iBAAO;AACL,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;YAC5B;AACF,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;AACvB,YAAA,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;AACtB,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;YACV,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE,aAA4B;AAC/D,YAAA,IAAI,CAAC,EAAE;gBAAE;YACT,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,KAAI;AACpD,gBAAA,KAAK,IAAI,KAAK,IAAI,OAAO,EAAE;AACzB,oBAAA,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE;wBACvB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;oBACjD;gBACF;AACF,YAAA,CAAC,CAAC;AACF,YAAA,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;AAC1B,YAAA,OAAO,MAAM,cAAc,CAAC,UAAU,EAAE;AAC1C,QAAA,CAAC,CAAC;QACF,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE;AAEtC,YAAA,IAAI,cAAc,GAAG,aAAa,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,EAAE,QAAQ,CAAC;AAC1G,YAAA,IAAI,YAAY,GAAG,aAAa,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC;YAC1G,IAAI,cAAc,IAAI,QAAQ;gBAAE,cAAc,GAAG,CAAC;YAClD,IAAI,YAAY,IAAI,CAAC,QAAQ;gBAAE,YAAY,GAAG,CAAC;AAC/C,YAAA,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,cAAc,CAAC;AAChD,YAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,YAAY,CAAC;AAC9C,QAAA,CAAC,CAAC;IACJ;IAEA,cAAc,GAAG,KAAK,CAAqB,EAAE;uFAAC;AAC9C,IAAA,sBAAsB,GAAG,QAAQ,CAAS,MAAK;AAC7C,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE;IACpC,CAAC;+FAAC;IAEF,QAAQ,GAAA;QACN,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC;AACvD,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC;AAC5D,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC;AACpD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC;AAC1C,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;AACpC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC;AAC5C,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC;AAChD,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC;AAChD,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC;QAElD,IAAI,CAAC,cAAc,EAAE;QACrB,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEA,WAAW,GAAA;QACT,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC;IAC5D;IAEA,eAAe,GAAA;QACb,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,cAAc,EAAE;QACvB,CAAC,EAAE,CAAC,CAAC;IACP;AAEA,IAAA,mBAAmB,CAAC,KAAwB,EAAA;AAC1C,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;;AAG1C,QAAA,IAAI,aAAa,KAAK,IAAI,EAAE;AAC1B,YAAA,IAAI,CAAC,KAAK;gBAAE,IAAI,CAAC,eAAe,EAAE;YAClC;QACF;QAEA,IAAI,CAAC,KAAK,EAAE;YAAE,IAAI,CAAC,eAAe,EAAE;YAAE;QAAQ;AAE9C,QAAA,MAAM,sBAAsB,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAE1E,IAAI,cAAc,GAAG;aAClB,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;aACvE,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;AACrB,aAAA,MAAM,CAAC,EAAE,IAAI,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAEpD,QAAA,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC;QACnC;AAAO,aAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE;AACrE,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;QAClC;aAAO;AACL,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC;QACnC;AAEA,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAAC;IAC9C;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,oBAAoB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;YAC/D,OAAO;AACL,gBAAA,GAAG,GAAG;AACN,gBAAA,QAAQ,EAAE,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE;gBAC5F,cAAc,EAAE,GAAG,CAAC,MAAM;AAC1B,gBAAA,KAAK,EAAE,KAAK;aACb;AACH,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,2BAA2B,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,EAAE,IAAI;AACxF,QAAA,IAAI,eAAe,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,2BAA2B,CAAC;QAC5F,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,eAAe,CAAC;QAC5C;aAAO;AACL,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;QACjC;AAEA,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,oBAAoB,CAAC;IACjD;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACtC,IAAI,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC,CAAC,IAAG;AACxD,YAAA,OAAO,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,MAAM,QAAQ,EAAE,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC;AAC7D,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC7C;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACtF;AAEA,IAAA,kBAAkB,GAAG,QAAQ,CAAQ,MAAK;QACxC,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,IAAc,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACnI,CAAC;2FAAC;AAEF,IAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAK;QACpC,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,IAAI,CAAC,CAAC,UAAU,CAAC;IAC7E,CAAC;8FAAC;AAEF,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;QAC7B,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,IAAI,CAAC,CAAC,UAAU,CAAC;IAC7E,CAAC;uFAAC;IAEF,eAAe,GAAG,SAAS,CAAC,iBAAiB,uFAAI,IAAI,EAAE,UAAU,EAAA,CAAG;AAE1D,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;QACtC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;QACxC,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,OAAO,EAAE;AAC9C,YAAA,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,GAAG,IAAI;AAC7B,YAAA,OAAO,EAAE;QACX;QACA,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACzE,QAAA,IAAI,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC3C,QAAA,IAAI,mBAAmB,GAAG,aAAa,EAAE,IAAI;QAE7C,IAAI,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YAC7C,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC;AAExE,YAAA,IAAI,YAAY,GAAkB;gBAChC,EAAE;AACF,gBAAA,KAAK,EAAE,CAAC;gBACR,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;gBAClC,mBAAmB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,qBAAqB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,qBAAsB,CAAC,CAAC,CAAC,GAAG,KAAK;AACpG,gBAAA,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,EAAE;gBAC1E,WAAW,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpD,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,SAAS;AACzE,gBAAA,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAG;AACtC,oBAAA,IAAI,CAAC,CAAC,UAAU,IAAI,IAAI;wBAAE,OAAO,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE;;wBAC/F,OAAO,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE;AACzC,gBAAA,CAAC,CAAC;gBACF,KAAK,EAAE,CAAC,GAAG,CAAC;aACb;YACD,YAAY,CAAC,aAAa,GAAG,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK;AAC/G,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;AACjJ,YAAA,OAAQ,YAA8B;AACxC,QAAA,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,IAAG;AACrB,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AAAE,gBAAA,OAAO,IAAI;AAEnC,YAAA,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;gBACrB,IAAI,UAAU,GAAG,KAAK;gBACtB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE;AACvC,oBAAA,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC;AAC/D,oBAAA,IAAI,WAAW,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE;wBACzD,UAAU,GAAG,IAAI;oBACnB;gBACF;AACA,gBAAA,IAAI,CAAC,UAAU;AAAE,oBAAA,OAAO,KAAK;YAC/B;AAEA,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE;QAC1C,IAAI,CAAC,UAAU,CAAC,MAAM;AAAE,YAAA,OAAO,aAAa;AAE5C,QAAA,IAAI,QAAQ,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAC9C,YAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;gBAClC,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;AACnC,oBAAA,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,MAAM,EAAE;AACnC,wBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CACpC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,EAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,EAC3B,SAAS,CAAC,OAAO,CAClB;wBACD,IAAI,SAAS,KAAK,CAAC;AAAE,4BAAA,OAAO,SAAS;oBACvC;gBACF;qBAAO;AACL,oBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CACpC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,EACvC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,EACvC,SAAS,CAAC,OAAO,CAClB;oBACD,IAAI,SAAS,KAAK,CAAC;AAAE,wBAAA,OAAO,SAAS;gBACvC;YACF;AACA,YAAA,OAAO,CAAC;AACV,QAAA,CAAC,CAAC;QACF,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;sFAAC;AAEQ,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;AAE1C,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,EAAE;AAC9B,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,KAAK,EAAE;AACnC,gBAAA,aAAa,CAAC,OAAO,CAAC,IAAI,IAAG;oBAC3B,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;AAClD,gBAAA,CAAC,CAAC;YACJ;AACA,YAAA,OAAO,aAAa;QACtB;QAEA,IAAI,cAAc,GAAoB,EAAE;QACxC,IAAI,CAAC,GAAG,CAAC;QACT,IAAI,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,IAAI,EAAE;AAC1D,QAAA,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;AAC5D,YAAA,IAAI,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC;AACpE,YAAA,IAAI,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;YAC1H,cAAc,CAAC,IAAI,CAAC;gBAClB,KAAK,EAAE,UAAU,EAAE,KAAK;AACxB,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,SAAS,EAAE,KAAK;AAChB,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,UAAU,EAAE;AACV,oBAAA,OAAO,EAAE,IAAI;oBACb,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC/C,oBAAA,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,MAAM;AACtE,oBAAA,OAAO,EAAE,IAAI;AACd,iBAAA;AACD,gBAAA,UAAU,EAAE,KAAK;AACD,aAAA,CAAC;AAEnB,YAAA,aAAa,CAAC,GAAG,CAAC,IAAI,IAAG;AACvB,gBAAA,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;oBAC5B,cAAc,CAAC,IAAI,CAAC;AAClB,wBAAA,GAAG,IAAI;wBACP,KAAK,EAAE,CAAC,EAAE;wBACV,UAAU,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,KAAK;AACjD,qBAAA,CAAC;gBACJ;AACF,YAAA,CAAC,CAAC;QACJ;QAAC;AAED,QAAA,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;IAClD,CAAC;sFAAC;AAEQ,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;AAE1C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE;AACxC,QAAA,MAAM,MAAM,GAAG,CAAC,SAAS,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,sBAAsB,EAAE;QAC1E,MAAM,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC,sBAAsB,EAAE;QAClD,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC;AACtD,QAAA,OAAO,aAAa;IACtB,CAAC;oFAAC;AAEF,IAAA,yBAAyB,GAAG,QAAQ,CAAC,MAAK;AACxC,QAAA,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,sBAAsB,EAAE,GAAG,CAAC;IACrF,CAAC;kGAAC;AAEF,IAAA,uBAAuB,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE;AACxC,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,sBAAsB,EAAE,EAAE,SAAS,CAAC,UAAU,CAAC;IAC9F,CAAC;gGAAC;AAEF,IAAA,YAAY,CAAC,EAAoC,EAAA;AAC/C,QAAA,IAAI,YAAY,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI;AAE/B,QAAA,IAAI,SAAS,GAAI,EAAE,CAAC,KAAK,CAAC,MAAc,CAAC,OAAO,CAAC,oBAAoB,CAAC;AACtE,QAAA,IAAI,UAAU,GAAI,EAAE,CAAC,KAAK,CAAC,MAAc,CAAC,OAAO,CAAC,aAAa,CAAC;QAChE,IAAI,SAAS,GAAkB,IAAI;QACnC,IAAI,SAAS,EAAE;AACb,YAAA,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC;QAC7C;QACA,IAAI,UAAU,EAAE;AACd,YAAA,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC;QAC9C;AAEA,QAAA,IAAI,SAAS,IAAI,YAAY,EAAE;AAC7B,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,IAAG;AAClC,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,CAAC;gBAClE,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,YAAY,CAAC;gBAC5C,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,MAAM,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAClE,YAAA,CAAC,CAAC;YACF,IAAI,CAAC,qBAAqB,EAAE;QAC9B;IACF;IAEA,gBAAgB,CAAC,UAA6B,EAAE,KAAU,EAAA;AACxD,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,QAAQ,IAAK,UAAqB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACnF,MAAM,KAAK,GAAI,UAAqB,CAAC,KAAK,CAAC,GAAG,CAAC;YAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;AACjE,YAAA,OAAO,OAAO,GAAG,mBAAmB,CAAC,IAAI,KAAK;QAChD;AACA,QAAA,OAAO,KAAK;IACd;IAEA,cAAc,GAAA;AACZ,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,aAAa;AACpC,QAAA,IAAI,CAAC,EAAE;YAAE;QACT,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,KAAI;YACpD,IAAI,CAAC,qBAAqB,EAAE;AAC9B,QAAA,CAAC,CAAC;AACF,QAAA,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;AAC1B,QAAA,OAAO,MAAM,cAAc,CAAC,UAAU,EAAE;IAC1C;IAEA,qBAAqB,GAAA;QACnB,IAAI,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AAEjE,QAAA,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE;QAClC,IAAI,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,SAAS,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;QACtE,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,SAAS,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;QAC7D,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,eAAe,IAAI,SAAS,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;AACtE,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,WAAW,IAAI,aAAa,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEtG,QAAA,IAAI,SAAS,GAAG,CAAC,aAAa,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9F,QAAA,IAAI,KAAK,GAAG,aAAa,GAAG,SAAS,GAAG,QAAQ;AAEhD,QAAA,OAAO,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAChC,IAAI,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjE,YAAA,IAAI,MAAM,GAAG,KAAK,GAAG,QAAQ;YAC7B,IAAI,MAAM,IAAI,WAAW;gBAAE;YAC3B,cAAc,CAAC,GAAG,EAAE;QACtB;AACA,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC;QACtC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,SAAS,CAAC;QAE5D,IAAI,aAAa,GAAG,EAAE;AACtB,QAAA,KAAK,IAAI,GAAG,IAAI,cAAc,EAAE;YAC9B,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,MAAM;AAC/B,YAAA,aAAa,IAAI,CAAA,EAAG,GAAG,CAAC,KAAK,GAAG;QAClC;QAEA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,IAAI,CAAA,EAAG,aAAa,CAAA,GAAA,CAAK,IAAI,EAAE,CAAC;QACzE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,IAAI,CAAA,EAAG,SAAS,CAAA,GAAA,CAAK,IAAI,EAAE,CAAC;QAC7D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAA,EAAG,QAAQ,CAAA,GAAA,CAAK,IAAI,EAAE,CAAC;AAC1D,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC;IACnC;IAEA,cAAc,GAAA;AACZ,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,EAAE;AAChD,QAAA,IAAI,CAAC,iBAAiB;YAAE;AAExB,QAAA,MAAM,UAAU,GAAG,iBAAiB,CAAC,aAAa,CAAC,iBAAiB;AACpE,QAAA,IAAI,CAAC,UAAU;YAAE;AAEjB,QAAA,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY;AACtC,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;IAC/B;IAEA,QAAQ,GAAA;QACN,OAAO;AACL,YAAA,mBAAmB,EAAE,IAAI,CAAC,gBAAgB,EAAE;AAC5C,YAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE;AACtC,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE;AACzC,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACrB,YAAA,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE;AAC5B,YAAA,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE;YACrC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;AACzC,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;AACvC,YAAA,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE;AACjC,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;AACnC,YAAA,UAAU,EAAE,IAAI,CAAC,gBAAgB,EAAE;AACnC,YAAA,SAAS,EAAE;AACT,gBAAA,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE;AAC5B,gBAAA,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,WAAW;AAC/C,gBAAA,cAAc,EAAE,IAAI,CAAC,sBAAsB,EAAE;AAC9C,aAAA;AACD,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;AACnC,YAAA,YAAY,EAAE,IAAI,CAAC,mBAAmB,EAAE;AACxC,YAAA,eAAe,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW;AACvC,YAAA,MAAM,EAAE;gBACN,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,IAAI,CAAC;AACxC,gBAAA,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM;AAC1C,gBAAA,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM;AACzC,aAAA;AACD,YAAA,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,gBAAgB;SAC3C;IACH;AAEU,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACrC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE;AACxC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAC3E,CAAC;qFAAC;AAEQ,IAAA,iBAAiB,CAAC,MAAyB,EAAA;AACnD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC1C,QAAA,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;AAE5D,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;AACd,YAAA,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,KAAK,GAAG,MAAM,GAAG,KAAK;AACxE,YAAA,IAAI,WAAW,IAAI,KAAK,EAAE;AACxB,gBAAA,MAAM,eAAe,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC;AACvE,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,eAAe,CAAC;YAC5C;iBAAO;AACL,gBAAA,MAAM,eAAe,GAAG,CAAC,GAAG,UAAU,CAAC;gBACvC,eAAe,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE;AACzD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,eAAe,CAAC;YAC5C;QACF;aAAO;AACL,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACxE;IACF;AAEU,IAAA,qBAAqB,CAAC,MAAyB,EAAA;AACvD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;QACxE,OAAO,SAAS,GAAG,SAAS,CAAC,OAAO,GAAG,IAAI;IAC7C;AAEU,IAAA,YAAY,CAAC,MAAc,EAAA;QACnC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YAChD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,KAAK,EAAE,GAAG,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;QACvE;IACF;IAEU,aAAa,GAAA;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,WAAW;AAChD,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC;IAC9B;IAEU,cAAc,GAAA;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,WAAW;AAChD,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC;IAC9B;IAEO,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;IAC/B;IAEA,MAAM,YAAY,CAAC,MAAgC,EAAA;AACjD,QAAA,IAAI,CAAC,MAAM;YAAE;AACb,QAAA,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI;YAAE;AAC1B,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC;IACrC;AAEA,IAAA,aAAa,CAAC,SAA4B,EAAA;QACxC,OAAO,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC,EAAE,MAAM,IAAI,KAAK;IACjF;IAEU,iBAAiB,GAAA;AACzB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE;QAC1C,IAAI,CAAC,UAAU,CAAC,MAAM;AAAE,YAAA,OAAO,EAAE;AACjC,QAAA,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA,EAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA,EAAA,EAAK,CAAC,CAAC,OAAO,CAAA,CAAA,CAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACzF;IAEU,gBAAgB,GAAA;QACxB,IAAI,CAAC,eAAe,EAAE;IACxB;IAEU,gBAAgB,GAAA;QACxB,IAAI,CAAC,cAAc,EAAE;QACrB,IAAI,CAAC,cAAc,EAAE;QACrB,IAAI,CAAC,qBAAqB,EAAE;IAC9B;AAEU,IAAA,iBAAiB,CAAC,MAAyB,EAAA;AACnD,QAAA,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE;YACzB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACrF;IACF;IAEU,aAAa,CAAC,MAA2B,EAAE,KAAW,EAAA;AAC9D,QAAA,IAAI,MAAM,EAAE,MAAM,EAAE;AAClB,YAAA,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACzD;QACA;IACF;IAEQ,aAAa,CAAC,MAA0B,EAAE,KAAW,EAAA;QAC3D,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU;QAC9B,IAAI,EAAE,GAAG,SAAS;QAClB,IAAI,EAAE,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;AAC/B,YAAA,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;QAChB;QACA,IAAI,MAAM,GAAuB,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;AACtD,QAAA,IAAI,CAAC,MAAM,EAAE,CAAC,gBAAgB,GAAG,MAAM;AACvC,QAAA,OAAO,MAAM;IACf;AAEQ,IAAA,eAAe,CAAC,CAAM,EAAE,CAAM,EAAE,OAAuB,EAAA;QAC7D,IAAI,SAAS,GAAG,CAAC;AAEjB,QAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;YAAE,CAAC,GAAG,EAAE;AACzC,QAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;YAAE,CAAC,GAAG,EAAE;QAEzC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AAClD,YAAA,SAAS,GAAG,CAAC,GAAG,CAAC;QACnB;aAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE;YACjD,SAAS,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE;QACvC;aAAO;AACL,YAAA,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAChD;AAEA,QAAA,OAAO,OAAO,KAAK,KAAK,GAAG,SAAS,GAAG,CAAC,SAAS;IACnD;AAEU,IAAA,eAAe,CAAC,MAA2B,EAAA;AACnD,QAAA,IAAI,MAAM,EAAE,MAAM,EAAE;YAClB,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAClD;IACF;AAEU,IAAA,aAAa,CAAC,IAAY,EAAA;AAClC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;IAChC;IAEU,0BAA0B,GAAA;AAClC,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC;IAEA,MAAM,yBAAyB,CAAC,iBAA0B,EAAA;AACxD,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7B,QAAA,IAAI,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;QAExC,IAAI,CAAC,iBAAiB,EAAE;AACtB,YAAA,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE;AACjC,gBAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AACjD,oBAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC;gBACtD;YACF;QACF;aAAO;AACL,YAAA,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE;AACjC,gBAAA,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC;YACnD;QACF;AAEA,QAAA,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AACvB,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;IAChC;IAEA,MAAM,UAAU,CAAC,KAAoB,EAAA;AACnC,QAAA,IAAI,CAAC,KAAK;YAAE;QACZ,IAAI,CAAC,KAAK,CAAC,KAAK;YAAE;AAElB,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AACjD,YAAA,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC;QACtD;aAAO;AACL,YAAA,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC;QACnD;IACF;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;IAClC;AAEA,IAAA,MAAM,eAAe,CAAC,EAAU,EAAE,KAAW,EAAA;QAC3C,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;YAAE;QAE7C,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,aAAa,IAAI,QAAQ,EAAE;YACxC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACpC;aAAO;AACL,YAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,mBAAmB,EAAE,EAAE,EAAE,CAAC,CAAC;QACnE;AACA,QAAA,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,GAAG,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAChE,QAAA,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,kBAAkB,GAAG,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC1E;AAEA,IAAA,MAAM,kBAAkB,CAAC,EAAU,EAAE,KAAW,EAAA;QAC9C,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;YAAE;QAE9C,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,aAAa,IAAI,QAAQ,EAAE;AACxC,YAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC;aAAO;YACL,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAChF;AACA,QAAA,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,YAAY,GAAG,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAClE,QAAA,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,kBAAkB,GAAG,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC1E;AAEA,IAAA,YAAY,CAAC,YAA2B,EAAA;AACtC,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAG;YAC7B,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;AACtC,gBAAA,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,IAAI,YAAY,CAAC,SAAS,CAAC;YAC3D;iBAAO;gBACL,OAAO,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC;YACvC;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACnE;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;IAC7B;IAEA,MAAM,YAAY,CAAC,MAAgC,EAAA;AACjD,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE;AACpC,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;AAE/B,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;QACjC,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEA,MAAM,oBAAoB,CAAC,KAAmB,EAAA;AAC5C,QAAA,IAAI,eAAe,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;QAC5C,IAAI,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI,IAAI;AACvF,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;IAChC;IAEU,aAAa,GAAA;AACrB,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE;AACpC,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEA,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,qBAAqB,EAAE;IAC9B;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,qBAAqB,EAAE;IAC9B;IAEA,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAClC;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9B;IAEA,aAAa,CAAC,KAAiB,EAAE,MAAyB,EAAA;AACxD,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO;QAC/B,KAAK,CAAC,cAAc,EAAE;QACtB,IAAI,OAAO,GAAI,KAAK,CAAC,MAAsB,CAAC,OAAO,CAAC,eAAe,CAAgB;QACnF,IAAI,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;AAE7F,QAAA,MAAM,WAAW,GAAG,CAAC,SAAqB,KAAI;YAC5C,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU;AACjD,YAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,aAAa,GAAG,KAAK,EAAE;AACpD,YAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,IAAG;AAClC,gBAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAG;oBAClB,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,EAAE;AAC5B,wBAAA,OAAO,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA,EAAG,QAAQ,CAAA,EAAA,CAAI,EAAE;oBACnD;AACA,oBAAA,OAAO,CAAC;AACV,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC;QAED,MAAM,SAAS,GAAG,MAAK;YACrB,IAAI,CAAC,qBAAqB,EAAE;AAC5B,YAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC;AACtD,YAAA,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;AACpD,QAAA,CAAC;AACD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC;AACnD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC;IACjD;IAEA,qBAAqB,CAAC,KAAY,EAAE,MAAyB,EAAA;QAC3D,IAAI,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC;AACnF,QAAA,IAAI,QAAQ,GAAG,iBAAiB,EAAE,KAAK,GAAG,iBAAiB,CAAC,KAAK,GAAG,MAAM;AAC1E,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,IAAG;AAClC,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAG;gBAClB,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,EAAE;oBAC5B,OAAO,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;gBAClC;AACA,gBAAA,OAAO,CAAC;AACV,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,qBAAqB,EAAE;IAC9B;IAEA,qBAAqB,GAAA;AACnB,QAAA,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QACpC,IAAI,CAAC,QAAQ,EAAE;IACjB;uGA5xBW,MAAM,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAN,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAM,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,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,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,eAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAiDwB,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACN,UAAU,6HA6LA,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9RnE,yuXAyQC,EAAA,MAAA,EAAA,CAAA,m3ZAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED5OG,aAAa,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,WAAW,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,eAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACV,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,aAAa,mTACb,cAAc,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,aAAa,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,eAAe,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,eAAe,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,QAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,eAAe,sJACf,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAMG,MAAM,EAAA,UAAA,EAAA,CAAA;kBArBlB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,OAAA,EACd;wBACP,aAAa;wBACb,WAAW;wBACX,QAAQ;wBACR,QAAQ;wBACR,UAAU;wBACV,cAAc;wBACd,aAAa;wBACb,cAAc;wBACd,aAAa;wBACb,eAAe;wBACf,eAAe;wBACf,eAAe;wBACf;qBACD,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,yuXAAA,EAAA,MAAA,EAAA,CAAA,m3ZAAA,CAAA,EAAA;2mCAmD1B,UAAU,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAC9B,YAAY,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CA6L7B,iBAAiB,OAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEvRxD,QAAQ,CAAA;AAET,IAAA,MAAM;AAChB,IAAA,kBAAkB;IAElB,WAAA,CACyC,UAAkC,EACtC,WAAmC,EAAA;AAEtE,QAAA,MAAM,KAAK,GAAG,UAAU,IAAI,WAAW,IAAI,SAAS;AACpD,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAA8B,KAAK;mFAAC;AACxD,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,EAAE,aAAa;AAC9C,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,MAAM,CAAC,MAAK,EAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,EAAE,IAAI,KAAK,CAAC,CAAA,CAAC,CAAC,CAAC;QACnF;IACF;uGAfW,QAAQ,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAMG,iBAAiB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EACjB,aAAa,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAPxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,yEAFT,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAED,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAJpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,EAAE;AACb,iBAAA;;0BAOI;;0BAAY,MAAM;2BAAC,iBAAiB;;0BACpC;;0BAAY,MAAM;2BAAC,aAAa;;;ACNrC;;ACRA;;AAEG;;;;"}
1
+ {"version":3,"file":"masterkeymaterial-ui.mjs","sources":["../../../projects/master-key-material/src/util/log.ts","../../../projects/master-key-material/src/util/util.ts","../../../projects/master-key-material/src/fields/Formulario/Formulario.ts","../../../projects/master-key-material/src/fields/Base/BaseFieldsValues/BaseFieldsValues.ts","../../../projects/master-key-material/src/fields/Base/BaseFieldsForm/BaseFieldsForm.component.ts","../../../projects/master-key-material/src/elements/ui-icon/ui-icon.ts","../../../projects/master-key-material/src/elements/ui-button/ui-button.ts","../../../projects/master-key-material/src/elements/ui-button/ui-button.html","../../../projects/master-key-material/src/elements/ui-chip/ui-chip.ts","../../../projects/master-key-material/src/elements/ui-chip/ui-chip.html","../../../projects/master-key-material/src/elements/ui-drop-zone/ui-drop-zone.ts","../../../projects/master-key-material/src/elements/ui-drop-zone/ui-drop-zone.html","../../../projects/master-key-material/src/elements/ui-file-list/ui-file-list.ts","../../../projects/master-key-material/src/elements/ui-file-list/ui-file-list.html","../../../projects/master-key-material/src/elements/ui-micro-gallery/ui-file-preview/ui-file-preview.ts","../../../projects/master-key-material/src/elements/ui-micro-gallery/ui-file-preview/ui-file-preview.html","../../../projects/master-key-material/src/elements/ui-micro-gallery/ui-micro-gallery.ts","../../../projects/master-key-material/src/elements/ui-micro-gallery/ui-micro-gallery.html","../../../projects/master-key-material/src/elements/ui-arquivos/ui-arquivos.ts","../../../projects/master-key-material/src/elements/ui-arquivos/ui-arquivos.html","../../../projects/master-key-material/src/elements/overlay/overlay.util.ts","../../../projects/master-key-material/src/elements/overlay/overlay-position.util.ts","../../../projects/master-key-material/src/elements/ui-select/ui-select.ts","../../../projects/master-key-material/src/elements/ui-select/ui-select.html","../../../projects/master-key-material/src/elements/ui-procurar/ui-procurar.ts","../../../projects/master-key-material/src/elements/ui-procurar/ui-procurar.html","../../../projects/master-key-material/src/elements/ui-progress/ui-progress.ts","../../../projects/master-key-material/src/elements/ui-progress/ui-progress.html","../../../projects/master-key-material/src/elements/ui-slide/ui-slide.ts","../../../projects/master-key-material/src/elements/ui-slide/ui-slide.html","../../../projects/master-key-material/src/elements/ui-check-box/ui-check-box.ts","../../../projects/master-key-material/src/elements/ui-check-box/ui-check-box.html","../../../projects/master-key-material/src/elements/ui-list-errors/ui-list-errors.ts","../../../projects/master-key-material/src/elements/ui-list-errors/ui-list-errors.html","../../../projects/master-key-material/src/elements/ui-loading/ui-loading.ts","../../../projects/master-key-material/src/elements/ui-loading/ui-loading.html","../../../projects/master-key-material/src/elements/ui-menu/ui-menu.ts","../../../projects/master-key-material/src/elements/ui-menu/ui-menu.html","../../../projects/master-key-material/src/elements/ui-divider/ui-divider.ts","../../../projects/master-key-material/src/elements/ui-divider/ui-divider.html","../../../projects/master-key-material/src/elements/ui-badge/ui-badge.ts","../../../projects/master-key-material/src/elements/ui-badge/ui-badge.html","../../../projects/master-key-material/src/elements/ui-card/ui-card.ts","../../../projects/master-key-material/src/elements/ui-card/ui-card.html","../../../projects/master-key-material/src/elements/ui-avatar/ui-avatar.ts","../../../projects/master-key-material/src/elements/ui-avatar/ui-avatar.html","../../../projects/master-key-material/src/elements/ui-tag/ui-tag.ts","../../../projects/master-key-material/src/elements/ui-tag/ui-tag.html","../../../projects/master-key-material/src/elements/ui-empty-state/ui-empty-state.ts","../../../projects/master-key-material/src/elements/ui-empty-state/ui-empty-state.html","../../../projects/master-key-material/src/elements/ui-tabs/ui-tabs.ts","../../../projects/master-key-material/src/elements/ui-tabs/ui-tabs.html","../../../projects/master-key-material/src/elements/ui-accordion/ui-accordion.ts","../../../projects/master-key-material/src/elements/ui-accordion/ui-accordion.html","../../../projects/master-key-material/src/elements/ui-accordion/ui-accordion-item/ui-accordion-item.ts","../../../projects/master-key-material/src/elements/ui-accordion/ui-accordion-item/ui-accordion-item.html","../../../projects/master-key-material/src/elements/ui-breadcrumb/ui-breadcrumb.ts","../../../projects/master-key-material/src/elements/ui-breadcrumb/ui-breadcrumb.html","../../../projects/master-key-material/src/elements/ui-stepper/ui-stepper.ts","../../../projects/master-key-material/src/elements/ui-stepper/ui-stepper.html","../../../projects/master-key-material/src/elements/ui-pagination/ui-pagination.ts","../../../projects/master-key-material/src/elements/ui-pagination/ui-pagination.html","../../../projects/master-key-material/src/elements/ui-tooltip/ui-tooltip-bubble.ts","../../../projects/master-key-material/src/elements/ui-tooltip/ui-tooltip.ts","../../../projects/master-key-material/src/elements/ui-toast/ui-toast.service.ts","../../../projects/master-key-material/src/elements/ui-toast/ui-toast-container.ts","../../../projects/master-key-material/src/elements/ui-toast/ui-toast-container.html","../../../projects/master-key-material/src/elements/ui-modal/ui-modal-box.ts","../../../projects/master-key-material/src/elements/ui-modal/ui-modal-box.html","../../../projects/master-key-material/src/elements/ui-modal/ui-modal.service.ts","../../../projects/master-key-material/src/elements/ui-modal/ui-modal-outlet.ts","../../../projects/master-key-material/src/elements/ui-drawer/ui-drawer.ts","../../../projects/master-key-material/src/elements/ui-drawer/ui-drawer.html","../../../projects/master-key-material/src/elements/ui-rating/ui-rating.ts","../../../projects/master-key-material/src/elements/ui-rating/ui-rating.html","../../../projects/master-key-material/src/elements/ui-tree/ui-tree-ctx.ts","../../../projects/master-key-material/src/elements/ui-tree/ui-tree-no.ts","../../../projects/master-key-material/src/elements/ui-tree/ui-tree-no.html","../../../projects/master-key-material/src/elements/ui-tree/ui-tree.ts","../../../projects/master-key-material/src/elements/ui-tree/ui-tree.html","../../../projects/master-key-material/src/elements/ui-timeline/ui-timeline.ts","../../../projects/master-key-material/src/elements/ui-timeline/ui-timeline.html","../../../projects/master-key-material/src/fields/autocomplete/autocomplete.ts","../../../projects/master-key-material/src/fields/autocomplete/autocomplete.html","../../../projects/master-key-material/src/fields/button/button.ts","../../../projects/master-key-material/src/fields/button/button.html","../../../projects/master-key-material/src/fields/checkbox/checkbox.ts","../../../projects/master-key-material/src/fields/checkbox/checkbox.html","../../../projects/master-key-material/src/fields/color/CirculoColorido/circulocolorido.ts","../../../projects/master-key-material/src/fields/color/CirculoColorido/circulocolorido.html","../../../projects/master-key-material/src/fields/color/color.ts","../../../projects/master-key-material/src/fields/color/color.html","../../../projects/master-key-material/src/fields/date/date.ts","../../../projects/master-key-material/src/fields/date/date.html","../../../projects/master-key-material/src/fields/datetime/datetime.ts","../../../projects/master-key-material/src/fields/datetime/datetime.html","../../../projects/master-key-material/src/util/JsonColorido.pipe.ts","../../../projects/master-key-material/src/fields/display/display.ts","../../../projects/master-key-material/src/fields/display/display.html","../../../projects/master-key-material/src/fields/editor/editor.ts","../../../projects/master-key-material/src/fields/editor/editor.html","../../../projects/master-key-material/src/fields/email/email.ts","../../../projects/master-key-material/src/fields/email/email.html","../../../projects/master-key-material/src/fields/hidden/hidden.ts","../../../projects/master-key-material/src/fields/hidden/hidden.html","../../../projects/master-key-material/src/fields/icon/icon.ts","../../../projects/master-key-material/src/fields/icon/icon.html","../../../projects/master-key-material/src/fields/multifactor/multifactor.ts","../../../projects/master-key-material/src/fields/multifactor/multifactor.html","../../../projects/master-key-material/src/fields/multitext/multitext.ts","../../../projects/master-key-material/src/fields/multitext/multitext.html","../../../projects/master-key-material/src/fields/number/number.ts","../../../projects/master-key-material/src/fields/number/number.html","../../../projects/master-key-material/src/fields/password/password.ts","../../../projects/master-key-material/src/fields/password/password.html","../../../projects/master-key-material/src/fields/search/search.ts","../../../projects/master-key-material/src/fields/search/search.html","../../../projects/master-key-material/src/fields/select/select.ts","../../../projects/master-key-material/src/fields/select/select.html","../../../projects/master-key-material/src/fields/slide/slide.ts","../../../projects/master-key-material/src/fields/slide/slide.html","../../../projects/master-key-material/src/fields/text/text.ts","../../../projects/master-key-material/src/fields/text/text.html","../../../projects/master-key-material/src/fields/upload/upload.ts","../../../projects/master-key-material/src/fields/upload/upload.html","../../../projects/master-key-material/src/fields/time/time.ts","../../../projects/master-key-material/src/fields/time/time.html","../../../projects/master-key-material/src/fields/textarea/textarea.ts","../../../projects/master-key-material/src/fields/textarea/textarea.html","../../../projects/master-key-material/src/fields/multikv/multikv.ts","../../../projects/master-key-material/src/fields/multikv/multikv.html","../../../projects/master-key-material/src/fields/generic/generic.ts","../../../projects/master-key-material/src/fields/generic/generic.html","../../../projects/master-key-material/src/util/ClassOf.pipe.ts","../../../projects/master-key-material/src/fields/Formulario/form-controls/form-controls.ts","../../../projects/master-key-material/src/fields/Formulario/form-controls/form-controls.html","../../../projects/master-key-material/src/fields/Formulario/form-filter/form-filter.ts","../../../projects/master-key-material/src/fields/Formulario/form-filter/form-filter.html","../../../projects/master-key-material/src/fields/Formulario/form-fase/form-fase.ts","../../../projects/master-key-material/src/fields/Formulario/form-fase/form-fase.html","../../../projects/master-key-material/src/fields/Formulario/form-action/form-action.ts","../../../projects/master-key-material/src/fields/Formulario/form-action/form-action.html","../../../projects/master-key-material/src/fields/Formulario/form-no-action/form-no-action.ts","../../../projects/master-key-material/src/fields/Formulario/form-no-action/form-no-action.html","../../../projects/master-key-material/src/fields/Formulario/formated-values/formated-values.ts","../../../projects/master-key-material/src/fields/Formulario/formated-values/formated-values.html","../../../projects/master-key-material/src/fields/Formulario/single-values/single-values.ts","../../../projects/master-key-material/src/fields/Formulario/single-values/single-values.html","../../../projects/master-key-material/src/mk-grid/mk-grid.types.ts","../../../projects/master-key-material/src/mk-grid/grid-cell/grid-cell.service.ts","../../../projects/master-key-material/src/mk-grid/grid-cell-handler/grid-cell-handler.ts","../../../projects/master-key-material/src/mk-grid/grid-cell-handler/grid-cell-handler.html","../../../projects/master-key-material/src/mk-grid/grid-cell-actions/grid-cell-actions.ts","../../../projects/master-key-material/src/mk-grid/grid-cell-actions/grid-cell-actions.html","../../../projects/master-key-material/src/mk-grid/grid-row-renderer/grid-row-renderer.ts","../../../projects/master-key-material/src/mk-grid/grid-row-renderer/grid-row-renderer.html","../../../projects/master-key-material/src/mk-grid/grid-header-row/grid-header-row.ts","../../../projects/master-key-material/src/mk-grid/grid-header-row/grid-header-row.html","../../../projects/master-key-material/src/mk-grid/grid-pagination/grid-pagination.ts","../../../projects/master-key-material/src/mk-grid/grid-pagination/grid-pagination.html","../../../projects/master-key-material/src/mk-grid/grid-filter-bar/grid-filter-bar.ts","../../../projects/master-key-material/src/mk-grid/grid-filter-bar/grid-filter-bar.html","../../../projects/master-key-material/src/mk-grid/grid-empty-list/grid-empty-list.ts","../../../projects/master-key-material/src/mk-grid/grid-empty-list/grid-empty-list.html","../../../projects/master-key-material/src/mk-grid/grid-loading/grid-loading.ts","../../../projects/master-key-material/src/mk-grid/grid-loading/grid-loading.html","../../../projects/master-key-material/src/mk-grid/mk-grid.ts","../../../projects/master-key-material/src/mk-grid/mk-grid.html","../../../projects/master-key-material/src/mk-grid/grid-cell/grid-cell.ts","../../../projects/master-key-material/src/public-api.ts","../../../projects/master-key-material/src/masterkeymaterial-ui.ts"],"sourcesContent":["\n////////////////////////////////////\n// CONSOLES: LOG - WARN - ERR ...\n////////////////////////////////////\n// LibUtil.loglevel: 1,2,3 => Bigger will see more\n\nlet loglevel = 0;\n\nexport const setLogLevel = (level: number) => {\n\tloglevel = level;\n}\n\nexport const LOG = (level: number, ...attr: any) => {\n\tif ((loglevel ?? 0) >= level) {\n\t\treturn console.log(...attr);\n\t}\n}\n\n// export const WARN = (level: number, ...attr: any) => {\n// if ((loglevel ?? 0) >= level) {\n// return console.warn(...attr);\n// }\n// }\n\n// export const ERR = (level: number, ...attr: any) => {\n// if ((loglevel ?? 0) >= level) {\n// return console.error(...attr);\n// }\n// }\n\nexport const G_START = (level: number, ...attr: any) => {\n\tif ((loglevel ?? 0) >= level) {\n\t\treturn console.groupCollapsed(...attr);\n\t}\n}\n\nexport const G_START_OPEN = (level: number, ...attr: any) => {\n\tif ((loglevel ?? 0) >= level) {\n\t\treturn console.group(...attr);\n\t}\n}\n\nexport const G_END = (level: number, ...attr: any) => {\n\tif ((loglevel ?? 0) >= level) {\n\t\treturn console.groupEnd();\n\t}\n}\n\n// LOG COLAPSADO\nexport const LOGC = (level: number, title: string, ...attr: any) => {\n\tG_START(level, title);\n\tLOG(level, ...attr);\n\tG_END(level);\n}","import { WritableSignal } from \"@angular/core\";\nimport { IFieldComponent } from \"../fields/Formulario/Formulario\";\nimport { G_END, G_START, LOG } from \"./log\";\n\nexport class LibUtil {\n\n static formConfigs: Partial<IFieldComponent<any>> = {};\n\n static classof = (o: any): IClassOf => {\n let nomeClasse = Object.prototype.toString.call(o).slice(8, -1).toLowerCase();\n if (nomeClasse == \"number\") {\n if (o.toString() == \"NaN\") {\n nomeClasse = \"nan\";\n }\n }\n return nomeClasse as IClassOf;\n };\n\n static wait = (ms: number) => {\n // Essa mecânica usa um setTimeout. A mecânica do Queue não foi implementada\n return new Promise(r => setTimeout(r, ms))\n };\n\n static clonar = (i: any) => {\n // Clona com a técnica de montar e desmontar string.\n // Não funciona para objetos com serviços (Date, File, Map, Set, etc)\n let parsed = null;\n try {\n let stringified = JSON.stringify(i);\n if (stringified == null) return null;\n if (stringified == \"\") return \"\";\n parsed = JSON.parse(stringified);\n if (parsed == null) return null;\n } catch (e) {\n return null;\n }\n return parsed;\n };\n\n static limparObject = (o: any) => {\n // Converte (Object) Limpar Nulos e Vazios\n if (LibUtil.classof(o) == \"object\") {\n for (let propName in o) {\n if (\n o[propName as keyof typeof o] === null ||\n o[propName as keyof typeof o] === undefined ||\n o[propName as keyof typeof o] === \"\" ||\n o[propName as keyof typeof o] === \"undefined\"\n ) {\n delete o[propName as keyof typeof o];\n }\n }\n }\n return o;\n };\n\n static mascarar = (texto: any, mascara: any): string | undefined => {\n // Informando uma máscara e um texto, retorna dado mascarado.\n // Mascaras: 0=Numero, A=Letra, Outros repete.\n if (LibUtil.classof(mascara) != \"string\") {\n // Se passar uma funcao para a mascara, Executa a função enviando o texto e deve retornar uma string da mascara para esse texto.\n if (LibUtil.classof(mascara) == \"function\") {\n mascara = mascara(texto); // Sobreextreve a mascara a ser executada pelo retorno da função.\n }\n }\n if (mascara) {\n if (texto) {\n if (LibUtil.classof(texto) != \"string\") texto = texto?.toString();\n if (LibUtil.classof(mascara) != \"string\") mascara = mascara?.toString(); // Se a chegar até aqui e ainda não for string\n let ms = [...LibUtil.clonar(mascara)];\n let ss = [...LibUtil.clonar(texto)];\n // this.l(\"ss: \", ss);\n let ts: any = [];\n let pm = 0;\n ss.forEach(s => {\n let t = null;\n if (/[0-9]/.test(s)) {\n t = \"0\";\n } else if (/[a-zA-Z]/.test(s)) {\n t = \"A\";\n } else {\n t = \" \";\n }\n ts.push(t);\n pm++;\n });\n // this.l(\"ts: \", ts);\n // this.l(\"ms: \", ms);\n let r: any = [];\n for (let tp = 0, mp = 0; (tp < ts.length) && (mp < ms.length); tp++, mp++) {\n if (((ms[mp] === \"0\" || ms[mp] === \"A\") && (ms[mp] == ts[tp]))\n || (ms[mp] === \"S\" && (ts[tp] === \"A\" || ts[tp] === \"0\"))) {\n // FORMATO IGUAL.\n r.push(ss[tp]);\n } else {\n // MESMO CARACTER\n if (ss[tp] === ms[mp]) {\n r.push(ss[tp]);\n } else {\n // this.l(\"> \", ss[tp], \" vs \", ms[mp])\n // Mágica: Coloca o especial que o usuário não colocou.\n if (ms[mp] != \"0\" && ms[mp] != \"A\" && ms[mp] != \"S\") {\n r.push(ms[mp]);\n tp--;\n } else {\n mp--;\n }\n }\n }\n }\n return r.join(\"\");\n }\n } else {\n console.log(\"❌ Mascarar Requer Texto: \", texto, \" e Mascara: \", mascara);\n }\n return undefined;\n };\n\n static tryParseJSON(val: any): any[] | null {\n try {\n return JSON.parse(val);\n } catch (e) {\n return null;\n }\n }\n\n static contem = (strMaior: string, strMenor: string): boolean => {\n // Comparardor de string CONTEM\n strMaior = LibUtil.removeAcentos(strMaior).toLowerCase();\n strMenor = LibUtil.removeAcentos(strMenor).toLowerCase();\n return (strMaior.includes(strMenor));\n };\n\n static removeAcentos = (s: string): string => {\n if (s == null) return \"\";\n // Remove acentos e depois chama Apenas Números e Letras.\n s = s.toString();\n let r = \"\";\n let sS = \"áàãâäéèêëíìîïóòõôöúùûüçÁÀÃÂÄÉÈÊËÍÌÎÏÓÒÕÖÔÚÙÛÜÇ\";\n let sN = \"aaaaaeeeeiiiiooooouuuucAAAAAEEEEIIIIOOOOOUUUUC\";\n for (let p = 0; p < s.length; p++) {\n let pSS = sS.indexOf(s.charAt(p)); // <= Procura\n if (pSS != -1) {\n r += sN.charAt(pSS); // Substitui mesma posicao\n } else {\n r += s.charAt(p);\n }\n }\n return r;\n };\n\n static fileReader = async (arquivo: File, eventos?: Function): Promise<string | null> => {\n return new Promise((r) => {\n let leitor = new FileReader();\n let gatilhos = (event: any) => {\n if (event.type == \"error\") {\n r(null);\n }\n else if (event.type == \"loadend\") {\n // Quando terminar, o result já é a string completa.\n let buffer = leitor.result as string;\n r(buffer);\n }\n if (eventos)\n eventos(event, Math.trunc((event.loaded / event.total) * 100));\n }\n if (arquivo) {\n if (arquivo.name != \"\") {\n leitor.addEventListener(\"loadstart\", gatilhos);\n leitor.addEventListener(\"progress\", gatilhos);\n leitor.addEventListener(\"error\", gatilhos);\n leitor.addEventListener(\"abort\", gatilhos);\n leitor.addEventListener(\"load\", gatilhos);\n leitor.addEventListener(\"loadend\", gatilhos);\n leitor.readAsDataURL(arquivo);\n }\n else {\n LOG(1, \"⚠️ fileReader() - Nome do arquivo necessário: \", arquivo.name);\n r(null);\n }\n } else {\n LOG(1, \"⚠️ fileReader() - Arquivo Nulo: \", arquivo);\n r(null);\n }\n });\n };\n\n static removeHtmlTags(texto: string): string {\n return texto.replace(/<\\/?[^>]+(>|$)/g, \"\");\n }\n\n // Salva a posição do cursor\n static saveCursorPosition(element: any, plus: number = 0): { start: number; end: number, plus: number } | null {\n const selection = window.getSelection();\n if (!selection || selection.rangeCount === 0) return null;\n const range = selection.getRangeAt(0);\n const preCaretRange = range.cloneRange();\n if (!element) return null;\n preCaretRange.selectNodeContents(element);\n preCaretRange.setEnd(range.startContainer, range.startOffset);\n const start = preCaretRange.toString().length;\n return {\n start: start,\n end: start + range.toString().length,\n plus\n };\n }\n\n // Restaura a posição do cursor\n static restoreCursorPosition(element: any, position: { start: number; end: number, plus: number }) {\n if (!element) return;\n const selection = window.getSelection();\n if (!selection) return;\n let charIndex = 0;\n const range = document.createRange();\n range.setStart(element, 0);\n range.collapse(true);\n const nodeIterator = (node: Node): boolean => {\n if (node.nodeType === Node.TEXT_NODE) {\n const textNode = node as Text;\n const nextCharIndex = charIndex + (textNode.length || 0);\n if (position.start >= charIndex && position.start <= nextCharIndex) {\n range.setStart(textNode, position.start - charIndex);\n range.setEnd(textNode, position.start - charIndex);\n return true;\n }\n charIndex = nextCharIndex;\n } else {\n for (let i = 0; i < node.childNodes.length; i++) {\n if (nodeIterator(node.childNodes[i])) {\n return true;\n }\n }\n }\n return false;\n };\n nodeIterator(element);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n\n static formatJson(texto: string, colorir: boolean = false): string {\n let retorno = \"\";\n try {\n retorno = JSON.stringify(texto, null, 2);\n } catch (e) {\n LOG(1, \"⚠️ JSON Inválido: Não foi possível formatar o JSON.\");\n return texto;\n }\n if (!retorno) {\n console.log(\"⚠️ JSON Vazio: O JSON é vazio ou nulo.\", texto);\n return texto;\n };\n\n if (colorir) {\n let keyNameStart: string = '<span class=\"json-key\">';\n let nullStart: string = '<span class=\"json-null\">';\n let numberStart: string = '<span class=\"json-number\">';\n let booleanStart: string = '<span class=\"json-boolean\">';\n let stringStart: string = '<span class=\"json-string\">';\n let spanEnd: string = '</span>';\n // Identificar a posição das chaves do json e adicionar as tags de span\n retorno = retorno.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n retorno = retorno.replace(/(\"(\\\\u[a-zA-Z0-9]{4}|\\\\[^u]|[^\\\\\"])*\"(\\s*:)?|\\b(true|false|null)\\b|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)/g, function (match) {\n let cls = nullStart;\n if (/^\"/.test(match)) {\n if (/:$/.test(match)) {\n cls = keyNameStart;\n } else {\n cls = stringStart;\n }\n } else if (/true|false/.test(match)) {\n cls = booleanStart;\n } else if (/null/.test(match)) {\n cls = nullStart;\n } else if (/undefined/.test(match)) {\n cls = nullStart;\n } else {\n cls = numberStart;\n }\n return cls + match + spanEnd;\n });\n }\n\n // Remove aspas duplas das chaves (mantém aspas dos valores string)\n retorno = retorno.replace(/\"([^\"]+)\"(\\s*):/g, '$1$2:');\n\n return retorno;\n }\n\n static async copy(content: string): Promise<void> {\n try {\n await this.copyHtml(content);\n } catch (erro) {\n LOG(1, \"❌ %cFalha ao copiar como HTML, tentando como texto puro\", \"color:red;\", erro);\n this.copyPlainText(content);\n }\n }\n\n private static copyPlainText(text: string) {\n const elemento = document.createElement('textarea');\n elemento.style.position = 'fixed';\n elemento.style.opacity = '0';\n elemento.style.whiteSpace = 'pre';\n elemento.value = text;\n document.body.appendChild(elemento);\n elemento.select();\n elemento.setSelectionRange(0, 99999);\n const result = document.execCommand('copy');\n if (!result) {\n LOG(1, \"❌ Falha ao copiar via execCommand.\");\n }\n LOG(1, \"🫤! Cópia via execCommand: \", text);\n elemento.remove();\n }\n\n private static async copyHtml(html?: string) {\n if (!html) {\n html = \"\";\n LOG(1, \"❌ %cNão foi possível copiar.\", \"color:red;\");\n return;\n }\n try {\n // Remove tags HTML para gerar a versão texto puro\n const plainText = this.stripHtmlTags(html);\n if (navigator.clipboard && window.isSecureContext) {\n const clipboardItem = new ClipboardItem({\n 'text/plain': new Blob([plainText], { type: 'text/plain' }),\n 'text/html': new Blob([html], { type: 'text/html' })\n });\n await navigator.clipboard.write([clipboardItem]);\n console.groupCollapsed(\"✅ %cCopiado para a área de transferência.\", \"color:aquamarine;\");\n LOG(1, plainText);\n console.groupEnd();\n return;\n }\n\n // Fallback: copia HTML usando execCommand\n const elemento = document.createElement('div');\n elemento.style.position = 'fixed';\n elemento.style.opacity = '0';\n elemento.innerHTML = html;\n document.body.appendChild(elemento);\n\n const range = document.createRange();\n range.selectNodeContents(elemento);\n const selection = window.getSelection();\n selection?.removeAllRanges();\n selection?.addRange(range);\n\n document.execCommand('copy');\n console.groupCollapsed(\"➡️ %cCopiado para a área de transferência. (execCommand)\", \"color:lightblue;\");\n LOG(1, plainText);\n console.groupEnd();\n elemento.remove();\n } catch (erro) {\n LOG(1, \"❌ Erro ao copiar:\", erro);\n throw erro;\n }\n }\n\n private static stripHtmlTags(html: string): string {\n // Cria um elemento temporário para extrair texto puro\n const temp = document.createElement('div');\n temp.innerHTML = html;\n // Substitui <br> por quebras de linha antes de extrair o texto\n temp.innerHTML = temp.innerHTML.replace(/<br\\s*\\/?>/gi, '\\n');\n return temp.textContent || temp.innerText || '';\n }\n\n static apenasNumeros = (s: string | number = \"\"): string => {\n if (s == null) return \"\";\n // Ignora qualquer outro caracter além de Numeros\n return s.toString().replace(/(?![0-9])./g, \"\");\n }\n\n static frequencia = (array: any): any => {\n // Retorna o total de encontro na array.\n // Quando é objeto converte pra string pra poder contar\n let f: any = {};\n for (let e of array) {\n let s = e;\n if (LibUtil.classof(e) == \"object\") s = JSON.stringify(e);\n f[s] ? f[s]++ : (f[s] = 1);\n }\n return f;\n }\n\n static formats: IUtilFormatters = {\n cpf: {\n mask: \"000.000.000-00\",\n regex: \"^([0-9]{3}([\\.]?[0-9]{3}){2}[-]?[0-9]{2})$\",\n validate: (cpf: any) => {\n let m1 = [10, 9, 8, 7, 6, 5, 4, 3, 2];\n let m2 = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2];\n if (!cpf) { return false; }\n cpf = LibUtil.apenasNumeros(cpf);\n if (cpf.length != 11) { return false; }\n let temp = cpf.slice(0, 9);\n let c = 0;\n for (let i = 0; i < 9; i++) { c += Number(temp.charAt(i)) * m1[i]; }\n let r = c % 11;\n (r < 2) ? r = 0 : r = 11 - r;\n temp += r.toString();\n c = 0;\n for (let i = 0; i < 10; i++) { c += Number(temp.charAt(i)) * m2[i]; }\n r = c % 11;\n (r < 2) ? r = 0 : r = 11 - r;\n if (cpf.charAt(10) != r.toString()) {\n return false;\n };\n let char0 = cpf.charAt(0);\n let repChar0 = LibUtil.frequencia(cpf)[char0];\n if (repChar0 >= 11) {\n return false;\n }\n return true;\n }\n },\n cnpj: {\n mask: \"00.000.000/0000-00\",\n regex: \"^([0-9]{2}([\\.]?[0-9]{3}){2}[\\/]?[0-9]{4}[-]?[0-9]{2})$\",\n validate: (cnpj: any) => {\n let m1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n let m2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n if (!cnpj) { return false; }\n cnpj = LibUtil.apenasNumeros(cnpj);\n if (cnpj.length != 14) { return false; }\n let temp = cnpj.slice(0, 12);\n let c = 0;\n for (let i = 0; i < 12; i++) { c += Number(temp.charAt(i)) * m1[i]; }\n let r = (c % 11);\n (r < 2) ? r = 0 : r = 11 - r;\n temp += r.toString();\n c = 0;\n for (let i = 0; i < 13; i++) { c += Number(temp.charAt(i)) * m2[i]; }\n r = (c % 11);\n (r < 2) ? r = 0 : r = 11 - r;\n return cnpj.charAt(13) == r.toString();\n }\n },\n cpf_cnpj: {\n mask: (str: string) => {\n if (LibUtil.apenasNumeros(str).length <= 11) {\n return \"000.000.000-00\"\n } else {\n return \"00.000.000/0000-00\"\n };\n },\n regex: \"^([0-9]{2}([\\.]?[0-9]{3}){2}[\\/]?[0-9]{4}[-]?[0-9]{2})|([0-9]{3}([\\.]?[0-9]{3}){2}[-]?[0-9]{2})$\",\n validate: (cpf_cnpj: any) => {\n if (LibUtil.apenasNumeros(cpf_cnpj).length <= 11) {\n return LibUtil.formats.cpf.validate?.(cpf_cnpj) ?? false;\n } else {\n return LibUtil.formats.cnpj.validate?.(cpf_cnpj) ?? false;\n };\n }\n },\n cnh: {\n mask: \"00000000000\",\n regex: \"^([0-9]{11})$\",\n validate: (cnh: any) => {\n if (!cnh) { return false; }\n cnh = LibUtil.apenasNumeros(cnh);\n if (cnh.length != 11) { return false; }\n return true;\n },\n },\n pis: {\n mask: \"000.00000.00-0\",\n regex: \"^([0-9]{3}[\\.]?[0-9]{5}[\\.]?[0-9]{2}[-]?[0-9]{1})$\",\n validate: (pis: any) => {\n if (!pis) { return false; }\n pis = LibUtil.apenasNumeros(pis);\n if (pis.length != 11) { return false; }\n return true;\n },\n },\n dia: {\n mask: \"00\",\n regex: \"^(0[1-9]|[1-9]|[1-2][0-9]|3[0-1])$\",\n validate: (dia: any) => {\n if (!dia) { return false; }\n dia = LibUtil.apenasNumeros(dia);\n let diaNum = Number(dia);\n return diaNum >= 1 && diaNum <= 31;\n },\n },\n mes: {\n mask: \"00\",\n regex: \"^(0[1-9]|1[0-2])$\",\n validate: (mes: any) => {\n if (!mes) { return false; }\n mes = LibUtil.apenasNumeros(mes);\n let mesNum = Number(mes);\n return mesNum >= 1 && mesNum <= 12;\n },\n },\n ano: {\n mask: \"0000\",\n regex: \"^([0-2]?([0-9]){3})$\",\n validate: (ano: any) => {\n if (!ano) { return false; }\n ano = LibUtil.apenasNumeros(ano);\n let anoNum = Number(ano);\n return anoNum >= 1000 && anoNum <= 2999;\n },\n },\n anoRecente: {\n mask: \"0000\",\n regex: \"^(19([0-9]){2})|(20([0-9]){2})|(21([0-9]){2})$\",\n validate: (anoRecente: any) => {\n if (!anoRecente) { return false; }\n anoRecente = LibUtil.apenasNumeros(anoRecente);\n let anoNum = Number(anoRecente);\n return anoNum >= 1900 && anoNum <= 2199;\n },\n },\n data: {\n mask: \"0000-00-00\",\n regex: \"^([0-9]{4}(-[0-9]{2}){2})$\",\n validate: (data: any) => {\n if (!data) { return false; }\n data = LibUtil.apenasNumeros(data);\n return new RegExp(LibUtil.formats.data.regex).test(data);\n },\n },\n dataIso: {\n mask: \"0000-00-00T00:00:00.000Z\",\n regex: \"^([0-9]{4}(-[0-9]{2}){2}T[0-9]{2}(:[0-9]{2}){2}\\.[0-9]{3}Z)$\",\n validate: (dataIso: any) => {\n if (!dataIso) { return false; }\n dataIso = LibUtil.apenasNumeros(dataIso);\n return new RegExp(LibUtil.formats.dataIso.regex).test(dataIso);\n },\n },\n numero: {\n mask: \"#0\",\n regex: \"^[0-9]*$\",\n validate: (numero: any) => {\n if (!numero) { return false; }\n numero = LibUtil.apenasNumeros(numero);\n return numero.length > 0;\n },\n },\n decimal: {\n mask: \"#0,00\",\n regex: \"^[0-9,]*$\",\n validate: (decimal: any) => {\n if (!decimal) { return false; }\n return new RegExp(LibUtil.formats.decimal.regex).test(decimal);\n },\n },\n letra: {\n mask: \"A\",\n regex: \"^[A-Za-z]*$\",\n validate: (letra: any) => {\n if (!letra) { return false; }\n return new RegExp(LibUtil.formats.letra.regex).test(letra);\n },\n },\n numeroELetra: {\n mask: \"S\",\n regex: \"^[A-Za-z0-9]*$\",\n validate: (numeroELetra: any) => {\n if (!numeroELetra) { return false; }\n return new RegExp(LibUtil.formats.numeroELetra.regex).test(numeroELetra);\n }\n },\n ip: {\n mask: \"000.000.000.000\",\n regex: \"^([0-2]?[0-9]?[0-9]([\\.][0-2]?[0-9]?[0-9]){3})$\",\n validate: (ip: any) => {\n if (!ip) { return false; }\n const regex = new RegExp(LibUtil.formats.ip.regex);\n if (!regex.test(ip)) { return false; }\n const parts = ip.split('.').map(Number);\n return parts.every((part: number) => part >= 0 && part <= 255);\n }\n },\n email: {\n mask: \"S\",\n regex: \"^(([a-zA-Z0-9_+-\\.]+)+)@([a-zA-Z0-9_+-\\.]+\\.[a-zA-Z]+)+$\",\n validate: (email: any) => {\n if (!email) { return false; }\n return new RegExp(LibUtil.formats.email.regex).test(email);\n }\n },\n cep: {\n mask: \"00000-000\",\n regex: \"^([0-9]{5}[-]?[0-9]{3})$\",\n validate: (cep: any) => {\n if (!cep) { return false; }\n cep = LibUtil.apenasNumeros(cep);\n return new RegExp(LibUtil.formats.cep.regex).test(cep);\n }\n }\n }\n\n static stringToDataBR = (data: string | null | undefined): string | null => {\n let resultado = null;\n if (LibUtil.classof(data) == \"null\" || LibUtil.classof(data) == \"undefined\") {\n return null;\n } else if (LibUtil.classof(data) == \"string\") {\n // Quando a data é \"YYYY-MM-DD\", ascrescenta 1 espaço para UTC.\n if (new RegExp(\"^[12][0-9]{3}[-][0-1][0-9][-][0-3][0-9]$\").test(data!)) {\n data += \" \";\n }\n // Tentativa Direta:\n resultado = new Date(data!).toLocaleString().replace(\",\", \"\");\n\n // Falhando, tenta converter pra número.\n if (resultado.toUpperCase() == \"INVALID DATE\") {\n resultado = new Date(Number(data)).toLocaleString().replace(\",\", \"\");\n\n // Agora tenta ver se a data inicia no formato br já\n if (resultado.toUpperCase() == \"INVALID DATE\") {\n // DD/MM/YYYY ?\n if (new RegExp(\"^[0-3][0-9][/][0-1][0-9][/][0-2][0-9]{3}\").test(data!)) {\n resultado = new Date(LibUtil.dataToIsoData(data!)).toLocaleString().replace(\",\", \"\");\n }\n }\n }\n } else {\n LOG(1, \"❌ stringToDataBR(): A data precisa ser formato string: \", data, LibUtil.classof(data));\n }\n return resultado;\n }\n\n // ISO 8601 (Padrão Internacional)\n static dataToIsoData = (data: string): string => {\n // Converter de DD/MM/YYYY para YYYY-MM-DD\n if (new RegExp(\"^[0-3][0-9][/][0-1][0-9][/][0-2][0-9]{3}\").test(data)) {\n\n }\n if (new RegExp(\"^[0-3][0-9][/][0-1][0-9][/][0-2][0-9]{3}\").test(data)) {\n let novaData = data.slice(6, 10) + \"-\" + data.slice(3, 5) + \"-\" + data.slice(0, 2);\n let resto = data.slice(10, data.length);\n if (resto != \"\" && new RegExp(\"^ [0-2][0-9]:[0-5][0-9]:[0-5][0-9]\").test(resto)) {\n novaData += resto;\n }\n return novaData;\n }\n return data; // < Se falhar\n };\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // ============================ SIGNALS DIRETO => CRUD E UTEIS ============================ \\\\\n\n // SET (SIGNAL)\n static sinalSet<T>(sinal: WritableSignal<any | undefined>, item: Partial<T>) {\n sinal.update(i => {\n if (!i) return item;\n return { ...i, ...item };\n });\n }\n\n // CREATE (SIGNAL)\n static sinalCreate<T>(sinal: WritableSignal<any[] | undefined>, item: T) {\n sinal.update(i => {\n if (!i) return [item];\n return [...i, item];\n });\n }\n\n // UPDATE (SIGNAL)\n static sinalUpdate<T>(sinal: WritableSignal<any[] | undefined>, item: Partial<T>, k: string, v?: string) {\n if (v != null && item) {\n sinal.update(i => {\n if (!i) return i;\n return i.map((o: T) => o[k as keyof T] === v ? { ...o, ...item } : o);\n });\n } else {\n if (v == null) {\n // PATCH UPDATE\n let value = item[k as keyof T];\n if (value != null) {\n sinal.update(i => {\n if (!i) return i;\n return i.map((o: T) => o[k as keyof T] === value ? { ...o, ...item } : o);\n });\n } else {\n LOG(1, `⚠️ sinalUpdate: A chave ${k} está nula. Passe o V desta chave para atualizar.`);\n }\n } else {\n LOG(1, `❌ Item ${k} chegou nulo para Update.`);\n }\n }\n }\n\n // DELETE (SIGNAL)\n static sinalDelete<T>(sinal: WritableSignal<any[] | undefined>, k: string, v?: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i) return i;\n return i.filter((o: T) => o[k as keyof T] !== v);\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para Delete.`);\n }\n }\n\n // CLEAR (SIGNAL)\n static sinalClear<T>(sinal: WritableSignal<any[] | undefined>) {\n sinal.set(undefined);\n }\n\n // EXISTS (SIGNAL) - Verifica se um item existe na lista\n static sinalExists<T>(sinal: WritableSignal<any[] | undefined>, k: Extract<keyof T, string>, v: string): boolean {\n if (v != null) {\n const items = sinal();\n if (!items) return false;\n return items.some((o: T) => o[k] === v);\n } else {\n return false;\n }\n }\n\n\n // MOVE UP (SIGNAL) - Move um item uma posição para cima\n static sinalMoveUp<T>(sinal: WritableSignal<any[] | undefined>, k: Extract<keyof T, string>, v: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i || i.length <= 1) return i;\n const index = i.findIndex((o: T) => o[k] === v);\n if (index <= 0) return i; // Já está no topo ou não encontrado\n\n const newArray = [...i];\n [newArray[index - 1], newArray[index]] = [newArray[index], newArray[index - 1]];\n return newArray;\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para MoveUp.`);\n }\n }\n\n // MOVE DOWN (SIGNAL) - Move um item uma posição para baixo\n static sinalMoveDown<T>(sinal: WritableSignal<any[] | undefined>, k: Extract<keyof T, string>, v: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i || i.length <= 1) return i;\n\n const index = i.findIndex((o: T) => o[k] === v);\n if (index < 0 || index >= i.length - 1) return i; // Já está no final ou não encontrado\n\n const newArray = [...i];\n [newArray[index], newArray[index + 1]] = [newArray[index + 1], newArray[index]];\n return newArray;\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para MoveDown.`);\n }\n }\n\n // MOVE TO INDEX (SIGNAL) - Move um item para uma posição específica\n static sinalMoveToIndex<T>(sinal: WritableSignal<any[] | undefined>, k: Extract<keyof T, string>, v: string, targetIndex: number) {\n if (v != null) {\n sinal.update(i => {\n if (!i || i.length <= 1) return i;\n const currentIndex = i.findIndex((o: T) => o[k] === v);\n if (currentIndex < 0 || targetIndex < 0 || targetIndex >= i.length || currentIndex === targetIndex) {\n return i; // Item não encontrado, índice inválido ou já está na posição\n }\n const newArray = [...i];\n const [movedItem] = newArray.splice(currentIndex, 1);\n newArray.splice(targetIndex, 0, movedItem);\n return newArray;\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para MoveToIndex.`);\n }\n }\n\n static FlatRecursivo<T>(lista: T[], keyRecursive: keyof T): T[] {\n if (LibUtil.classof(lista) != \"array\") return [];\n\n let novaArray: T[] = [];\n lista.map(objeto => {\n if (LibUtil.classof(objeto) != \"object\") return;\n let novoObjeto: T = {} as T;\n for (let prop in objeto) {\n if (prop != keyRecursive) novoObjeto[prop] = objeto[prop];\n }\n novaArray = [...novaArray, novoObjeto];\n let children = objeto[keyRecursive] as T[];\n if (children != null) {\n novaArray = [...novaArray, ...LibUtil.FlatRecursivo(children, keyRecursive)];\n }\n })\n return novaArray;\n }\n\n // ============================ SIGNALS RECURSIVO => CRUD E UTEIS ============================ \\\\\n\n // Adiciona um novo item em uma estrutura hierárquica baseado na chave pai\n // CREATE RECURSIVE (SIGNAL)\n static sinalCreateRecursive<T>(sinal: WritableSignal<any[] | undefined>, item: T, keyRecursive: keyof T, keyPai: Extract<keyof T, string>, valuePai?: string) {\n sinal.update(i => {\n if (!i) return [item];\n if (valuePai != null) {\n return i.map((o: T) => {\n return LibUtil._recursiveCreate<T>(o, item, keyRecursive, keyPai, valuePai);\n });\n } else {\n // Sem Pai inserir direto na raiz\n return [...i, item];\n }\n });\n }\n\n // Encontra o item pai pela chave e adiciona o novo item no array de filhos\n static _recursiveCreate<T>(atual: T, novo: T, keyRecursive: keyof T, keyPai: Extract<keyof T, string>, valuePai: string): T {\n if (atual[keyPai] === valuePai) {\n // Encontrou o pai, adiciona o item no array recursivo\n if (atual[keyRecursive] == null) {\n (atual[keyRecursive] as T[]) = [novo];\n } else {\n (atual[keyRecursive] as T[]) = [...(atual[keyRecursive] as T[]), novo];\n }\n return atual;\n }\n if (atual[keyRecursive] == null || (atual[keyRecursive] as T[])?.length == 0) return atual;\n (atual[keyRecursive] as T[]) = [\n ...(atual[keyRecursive] as T[]).map(child => {\n return LibUtil._recursiveCreate(child, novo, keyRecursive, keyPai, valuePai);\n })\n ];\n return atual;\n }\n\n // Atualiza um item específico em uma estrutura hierárquica\n // UPDATE RECURSIVE (SIGNAL)\n static sinalUpdateRecursive<T>(sinal: WritableSignal<any[] | undefined>, item: Partial<T>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i) return i;\n return i.map((o: T) => {\n return LibUtil._recursiveUpdate<T>(o, item, keyRecursive, k, v);\n });\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para Update Recursivo.`);\n }\n }\n\n // Encontra o item pela chave e atualiza suas propriedades\n static _recursiveUpdate<T>(atual: T, novo: Partial<T>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): T {\n if (atual[k] === v) {\n LOG(1, \"Editado\", { ...atual, ...novo })\n return { ...atual, ...novo };\n }\n if (atual[keyRecursive] == null || (atual[keyRecursive] as T[])?.length == 0) return atual;\n (atual[keyRecursive] as T[]) = [\n ...(atual[keyRecursive] as T[]).map(child => {\n return LibUtil._recursiveUpdate(child, novo, keyRecursive, k, v);\n })\n ];\n return atual;\n }\n\n // Remove um item específico de uma estrutura hierárquica\n // DELETE RECURSIVE (SIGNAL)\n static sinalDeleteRecursive<T>(sinal: WritableSignal<any[] | undefined>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i) return i;\n // Primeiro verifica se precisa deletar no nível raiz\n const filteredRoot = i.filter((o: T) => o[k] !== v);\n // Se encontrou e removeu no nível raiz, retorna o array filtrado\n if (filteredRoot.length !== i.length) {\n return filteredRoot;\n }\n // Se não encontrou no nível raiz, processa recursivamente\n return i.map((o: T) => {\n return LibUtil._recursiveDelete<T>(o, keyRecursive, k, v);\n });\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para Delete Recursivo.`);\n }\n }\n // Encontra e remove o item pela chave, filtrando do array de filhos\n static _recursiveDelete<T>(atual: T, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): T {\n // Se tem filhos, processa os filhos\n if (atual[keyRecursive] && (atual[keyRecursive] as T[])?.length > 0) {\n const children = atual[keyRecursive] as T[];\n // Remove o item dos filhos se existir e processa recursivamente os filhos restantes\n const filteredChildren = children\n .filter(child => child[k] !== v)\n .map(child => LibUtil._recursiveDelete(child, keyRecursive, k, v));\n return { ...atual, [keyRecursive]: filteredChildren };\n }\n return atual;\n }\n\n // EXISTS RECURSIVE (SIGNAL) - Verifica se um item existe em uma estrutura hierárquica\n static sinalExistsRecursive<T>(sinal: WritableSignal<any[] | undefined>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): boolean {\n if (v != null) {\n const items = sinal();\n if (!items) return false;\n return items.some((o: T) => {\n return LibUtil._recursiveExists<T>(o, keyRecursive, k, v);\n });\n } else {\n return false;\n }\n }\n\n // Função auxiliar para busca recursiva\n static _recursiveExists<T>(atual: T, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): boolean {\n // Verifica se o item atual é o que estamos procurando\n if (atual[k] === v) return true;\n // Se tem filhos, procura recursivamente\n if (atual[keyRecursive] && (atual[keyRecursive] as T[])?.length > 0) {\n const children = atual[keyRecursive] as T[];\n return children.some(child => LibUtil._recursiveExists(child, keyRecursive, k, v));\n }\n return false;\n }\n\n // Move um item uma posição para cima na hierarquia\n // MOVE UP RECURSIVE (SIGNAL) - Para estruturas hierárquicas\n static sinalMoveUpRecursive<T>(sinal: WritableSignal<any[] | undefined>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i || i.length <= 1) return i;\n // Primeiro verifica se precisa mover no nível raiz\n const rootIndex = i.findIndex((o: T) => o[k] === v);\n if (rootIndex > 0) {\n const newArray = [...i];\n [newArray[rootIndex - 1], newArray[rootIndex]] = [newArray[rootIndex], newArray[rootIndex - 1]];\n return newArray;\n }\n // Se não encontrou no nível raiz, processa recursivamente\n return i.map((o: T) => {\n return LibUtil._recursiveMoveUp<T>(o, keyRecursive, k, v);\n });\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para MoveUp Recursivo.`);\n }\n }\n\n // Encontra o item e troca sua posição com o anterior no array\n static _recursiveMoveUp<T>(atual: T, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): T {\n // Se tem filhos, processa os filhos primeiro\n if (atual[keyRecursive] && (atual[keyRecursive] as T[])?.length > 0) {\n const children = atual[keyRecursive] as T[];\n // Verifica se precisa mover dentro dos filhos\n const targetIndex = children.findIndex(child => child[k] === v);\n if (targetIndex > 0) {\n const newChildren = [...children];\n [newChildren[targetIndex - 1], newChildren[targetIndex]] = [newChildren[targetIndex], newChildren[targetIndex - 1]];\n return { ...atual, [keyRecursive]: newChildren };\n }\n // Se não encontrou, processa recursivamente os filhos\n const processedChildren = children.map(child =>\n LibUtil._recursiveMoveUp(child, keyRecursive, k, v)\n );\n return { ...atual, [keyRecursive]: processedChildren };\n }\n return atual;\n }\n\n // Move um item uma posição para baixo na hierarquia\n // MOVE DOWN RECURSIVE (SIGNAL) - Para estruturas hierárquicas\n static sinalMoveDownRecursive<T>(sinal: WritableSignal<any[] | undefined>, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string) {\n if (v != null) {\n sinal.update(i => {\n if (!i || i.length <= 1) return i;\n // Primeiro verifica se precisa mover no nível raiz\n const rootIndex = i.findIndex((o: T) => o[k] === v);\n if (rootIndex >= 0 && rootIndex < i.length - 1) {\n const newArray = [...i];\n [newArray[rootIndex], newArray[rootIndex + 1]] = [newArray[rootIndex + 1], newArray[rootIndex]];\n return newArray;\n }\n // Se não encontrou no nível raiz, processa recursivamente\n return i.map((o: T) => {\n return LibUtil._recursiveMoveDown<T>(o, keyRecursive, k, v);\n });\n });\n } else {\n LOG(1, `⚠️ Chave ${k} chegou nula para MoveDown Recursivo.`);\n }\n }\n\n // Encontra o item e troca sua posição com o próximo no array\n static _recursiveMoveDown<T>(atual: T, keyRecursive: keyof T, k: Extract<keyof T, string>, v: string): T {\n if (atual[keyRecursive] && (atual[keyRecursive] as T[])?.length > 0) {\n const children = atual[keyRecursive] as T[];\n // Verifica se precisa mover dentro dos filhos\n const targetIndex = children.findIndex(child => child[k] === v);\n if (targetIndex >= 0 && targetIndex < children.length - 1) {\n const newChildren = [...children];\n [newChildren[targetIndex], newChildren[targetIndex + 1]] = [newChildren[targetIndex + 1], newChildren[targetIndex]];\n return { ...atual, [keyRecursive]: newChildren };\n }\n // Se não encontrou, processa recursivamente os filhos\n const processedChildren = children.map(child =>\n LibUtil._recursiveMoveDown(child, keyRecursive, k, v)\n );\n return { ...atual, [keyRecursive]: processedChildren };\n }\n return atual;\n }\n\n static sinalSetOrderRecursive<T>(sinal: WritableSignal<any[] | undefined>, keyRecursive: keyof T, k: Extract<keyof T, string>, propOrder: keyof T) {\n sinal.update(i => {\n if (!i) return i;\n return i.map((o: T, i) => {\n return LibUtil._recursiveSetOrder<T>(o, keyRecursive, k, propOrder, i);\n });\n });\n }\n\n static _recursiveSetOrder<T>(atual: T, keyRecursive: keyof T, k: Extract<keyof T, string>, propOrder: keyof T, index: number): T {\n atual = { ...atual, [propOrder]: index };\n if (atual[keyRecursive] == null || (atual[keyRecursive] as T[])?.length == 0) return atual;\n (atual[keyRecursive] as T[]) = [\n ...(atual[keyRecursive] as T[]).map((child, i) => {\n return LibUtil._recursiveSetOrder(child, keyRecursive, k, propOrder, i);\n })\n ];\n return atual;\n }\n\n // ============================ ATALHOS PERSONALIZADOS ============================ \\\\\n\n static Q = (query: any) => {\n // Busca elemento único, podendo buscar ele mesmo. (Bifurcacado)\n if (LibUtil.classof(query) == \"string\") return document.querySelector(query);\n return query;\n };\n\n static QAll = (query: any): any[] => {\n // Sempre retorna uma array de encontrados. Inclusive uma array com um LibUtil.Q\n if (LibUtil.classof(query) == \"string\") {\n // Se buscando uma string, retorna a array do select encontrado\n return Array.from(document.querySelectorAll(query));\n } else if (LibUtil.classof(query).endsWith(\"Element\")) {\n // Quando buscar um único elemento, retorna o elemento em uma lista.\n return [query];\n } else if (LibUtil.classof(query) == \"array\") {\n // Quando buscar uma array, retorna a propria array. (Bifurcado)\n return query;\n } else {\n LOG(1, \"⚠️ QAll() - Requer String / Elemento / Array. ClassOf: \", LibUtil.classof(query), \" Query: \", query);\n return [];\n }\n };\n\n static QverOff = (query: Element | HTMLElement | string | null = \"body\"): any[] => {\n // Adiciona Classe Oculto em todos os elementos do Query\n // Retorna uma array de elementos por causa do QAll\n return LibUtil.aCadaElemento(query, (e: any) => {\n e?.classList.add(\"oculto\");\n });\n };\n\n static QverOn = (query: Element | HTMLElement | string | null = \"body\") => {\n // Remove classe Oculto em todos os elementos do Query\n // Retorna uma array de elementos por causa do QAll\n return LibUtil.aCadaElemento(query, (e: any) => {\n e?.classList.remove(\"oculto\");\n });\n };\n\n static dataGetMs = (data: string | null = null): number => {\n // Retorna Milisegundos da data no formato Javascript\n if (data != null) {\n if (data.length > 10) {\n // Recomendado que os dados cheguem: 'YYYY-MM-DD HH:MM:SS'\n return new Date(data).getTime(); // Recomendado que os dados \n } else {\n let dataCortada = data.split(\"-\");\n let oDia: number = Number(dataCortada[2]);\n let oMes: number = Number(dataCortada[1]) - 1;\n let oAno: number = Number(dataCortada[0]);\n return new Date(oAno, oMes, oDia).getTime();\n }\n } else return new Date().getTime();\n };\n\n static dataMsToSegundos = (num: number, reverse: boolean = false) => {\n if (reverse) {\n return num * 1000;\n }\n return Math.trunc(num / 1000); // 1000 ms == 1s\n }\n\n static dataMsToDias = (num: number, reverse: boolean = false) => {\n // 1000 * 3600 * 24 Considerando todo dia tiver 24 horas (~23h 56m 4.1s)\n // (360º translacao / 86400000) = ~4.1\n // Então o erro de 1 dia ocorre 1x ao ano (Dia represeta 1436min).\n // Por isso, é melhor trabalhar com Dias em vez de outro formato maior.\n if (reverse) {\n return Math.trunc(num * 86400000);\n }\n return Math.trunc(num / 86400000);\n };\n\n static dataGetSegundosDiferenca = (msDe: number, msAte: number | null = null): number => {\n // Retorna a diferença de segundos entre dois MS\n if (msAte == null) msAte = LibUtil.dataGetMs();\n return LibUtil.dataMsToSegundos(msAte - msDe);\n };\n\n static dataGetDiasDiferenca = (msDe: number, msAte: number | null = null): number => {\n // Retorna a diferença de dias entre dois MS\n if (msAte == null) msAte = LibUtil.dataGetMs();\n return LibUtil.dataMsToDias(msAte - msDe);\n };\n\n static dataShowTempoDiferenca = (msDe: number | string, msAte: number | string | null = null) => {\n if (LibUtil.classof(msDe) == \"string\") msDe = LibUtil.dataGetMs(msDe as string);\n if (LibUtil.classof(msAte) == \"string\") msAte = LibUtil.dataGetMs(msAte as string);\n let dias = LibUtil.dataGetDiasDiferenca(msDe as number, msAte as number | null);\n if (dias < 0) {\n dias = dias * -1;\n }\n let strTempo = \"\";\n if (dias > 29) { // Em Meses\n if (dias < 60) {\n strTempo = \"1 mês\";\n } else {\n if (dias > 365) { // Em Anos (+ Meses restantes)\n let anos = Math.floor(dias / 365);\n let diasRestoAno = dias % 365;\n if (anos < 2) {\n strTempo += anos + \" ano \";\n } else {\n strTempo += anos + \" anos \";\n }\n if (diasRestoAno > 30) {\n if (diasRestoAno < 60) {\n strTempo += \"1 mês\";\n } else {\n strTempo += Math.floor(diasRestoAno / 30) + \" meses\";\n }\n }\n } else {\n strTempo = Math.floor(dias / 30) + \" meses\";\n }\n }\n } else {\n if (dias < 1) {\n let segundos = LibUtil.dataGetSegundosDiferenca(msDe as number, msAte as number);\n if (segundos > 7199) { // Em Horas\n strTempo = Math.floor(segundos / 3600) + \" horas\";\n } else {\n if (segundos > 3599) {\n strTempo = \"1 hora\";\n } else {\n if (segundos > 119) { // Em Minutos\n strTempo = Math.floor(segundos / 60) + \" minutos\";\n } else {\n if (segundos > 59) {\n strTempo = \"1 minuto\";\n } else {\n strTempo = Math.floor(segundos) + \" segundos\";\n }\n }\n }\n }\n } else { // Em Dias\n strTempo = dias + \" dias\";\n }\n }\n if (strTempo.includes(\"NaN\")) return \"\";\n return strTempo;\n }\n\n static displayCelular = (area: string, numero: string, isoDDI?: string): string => {\n if (numero == null) numero = \"\"\n else numero = LibUtil.apenasNumeros(numero);\n if (area == null) area = \"\";\n else area = LibUtil.apenasEstes(area, \"0-9\\+\");\n if (numero == \"\" && area == \"\") return \"\";\n let displayArea = area;\n let displayNumero = numero;\n let displayFlag = \"\";\n if (numero != \"\" && displayArea == \"\") displayArea = \"+55\"\n if (displayArea == \"+55\") {\n numero = numero.slice(0, 11); // No brasil o limite é 9.\n displayNumero = numero;\n let apenasCelular = numero.slice(2, 11);\n if (apenasCelular.length == 9) {\n apenasCelular = apenasCelular.slice(0, 5) + \"-\" + apenasCelular.slice(5, 9);\n }\n displayNumero = \"(\" + numero.slice(0, 2) + \") \" + apenasCelular;\n }\n if (isoDDI != null) {\n displayFlag = LibUtil.displayFlag(isoDDI);\n }\n return `${displayFlag}<a href=\"tel:${area || \"\"}${numero || \"\"}\">${displayArea} ${displayNumero}</a>`\n }\n\n static displayFlag = (pais: string): string => {\n if (pais != null) {\n return `<img class=\"flagSizeIco\" src=\"/images/Paises/${pais || \"transparent\"}.svg\" alt=\"${pais || \"transparent\"}\" onerror=\"base_imgonerror(this);\"> `\n }\n return \"\";\n }\n\n static diaEMes(data: string): string {\n //Retorna: 01 de Abril\n let arrData = LibUtil.stringToDataBR(data)?.split(\" \")?.[0]?.split(\"/\");\n return arrData?.[0] + \" de \" + LibUtil.meses.get(Number(arrData?.[1] || 0))?.[0];\n }\n\n // =============== Gerenciamento Monetário / Numérico / Locale =================== \\\\\n static toNumber = (valor: any, casas: number = 2): number => {\n // Informando String/Number, converte para o número de casas c.casas (padrão 2).\n // LibUtil.toNumber(\"R$ 1.222,333\") => 1222.33\n if (valor != null) {\n if (LibUtil.classof(valor) == \"string\") {\n // Possiveis separadores\n let us = [\".\", \",\"].reduce((x, y) => (valor.lastIndexOf(x) > valor.lastIndexOf(y)) ? x : y);\n let posPonto = valor.lastIndexOf(us)\n if (posPonto >= 0) {\n let i = valor.slice(0, posPonto);\n let d = valor.slice(posPonto + 1).slice(0, 2).padEnd(2, \"0\");\n i = [...i.toString()].filter(a => { return new RegExp(LibUtil.formats.numero.regex).test(a) }).join(\"\");\n d = [...d.toString()].filter(a => { return new RegExp(LibUtil.formats.numero.regex).test(a) }).join(\"\");\n valor = i + \".\" + d;\n } else {\n valor = [...valor.toString()].filter(a => { return new RegExp(LibUtil.formats.numero.regex).test(a) }).join(\"\").padStart(3, \"0\")\n valor = valor.padStart(casas, \"0\");\n valor = valor.slice(0, -(casas)) + (casas > 0 ? \".\" : \"\") + valor.slice(-(casas));\n }\n } else if (LibUtil.classof(valor) == \"number\") {\n valor = valor.toFixed(casas); // <= Vira String, mas essa função apenas devolve Number\n } else {\n LOG(1, \"❌ toNumber() - Formato de entrada não implementado: \", LibUtil.classof(valor));\n }\n return Number(valor); // <= OutPut Number\n }\n return 0; // <= OutPut Number\n };\n\n // ============================= ARMAZENADORES ESTÁTICOS ============================ \\\\\n static a: any = {\n ALL: \"*/*\", // ContentType Blob\n FORMDATA: \"multipart/form-data\", // ContentType FORM\n GET: \"GET\", // Api Method GET\n HTML: \"text/html\", // ContentType HTML\n JSON: \"application/json\", // ContentType JSON\n POST: \"POST\", // Api Method POST\n DELETE: \"DELETE\", // Api Method DELETE\n SVGINI: \"<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'>\",\n SVGFIM: \"</svg>\",\n timers: [] as any, // Array para guardar timers em andamento ou finalizados\n wpool: null as any | null, // WorkerPool quando iniciado\n }\n\n static meses = new Map([\n [1, [\"Janeiro\", \"JAN\", \"01\"]],\n [2, [\"Fevereiro\", \"FEV\", \"02\"]],\n [3, [\"Março\", \"MAR\", \"03\"]],\n [4, [\"Abril\", \"ABR\", \"04\"]],\n [5, [\"Maio\", \"MAI\", \"05\"]],\n [6, [\"Junho\", \"JUN\", \"06\"]],\n [7, [\"Julho\", \"JUL\", \"07\"]],\n [8, [\"Agosto\", \"AGO\", \"08\"]],\n [9, [\"Setembro\", \"SET\", \"09\"]],\n [10, [\"Outubro\", \"OUT\", \"10\"]],\n [11, [\"Novembro\", \"NOV\", \"11\"]],\n [12, [\"Dezembro\", \"DEZ\", \"12\"]],\n ]);\n\n // ============================ TOOLS e JS HELPERS ================================ \\\\\n\n static isJson = (s: any): boolean => {\n try {\n JSON.parse(s);\n } catch (e) {\n return false;\n }\n return true;\n };\n\n static stringify = (o: any): string => {\n // Converte o Objeto em String JSON, e aproveita e já remove alguns caracteres de controle.\n return JSON.stringify(o)\n ?.replace(new RegExp(\"\\n\", 'g'), \"\")\n ?.replace(new RegExp(\"\\r\", 'g'), \"\")\n ?.replace(new RegExp(\"\\t\", 'g'), \"\")\n ?.replace(new RegExp(\"\\b\", 'g'), \"\")\n ?.replace(new RegExp(\"\\f\", 'g'), \"\")\n };\n\n static parseJSON = (t: any) => {\n // Se for um JSON válido. Retorna o objeto, se não null.\n if (t === \"\") return \"\";\n let resultado = null;\n try {\n resultado = JSON.parse(t);\n } catch (e) {\n LOG(1, \"❌ JSON Inválido: Não foi possível converter o JSON.\");\n return null;\n }\n return resultado;\n };\n\n // String qualquer em string com números\n static convertToNumeric = (texto: string): Array<number> => {\n let arrayDeNumeros = [];\n for (const char of texto) {\n arrayDeNumeros.push(char.codePointAt(0) || 0);\n }\n return arrayDeNumeros;\n }\n\n // COnversor para Texto.\n static convertToTexto = (arrayNumeros: Array<number>): string => {\n return String.fromCodePoint(...arrayNumeros);\n }\n\n // Conversor para Texto, separado por virgula\n static convertToTexto2 = (stringNumeros: string): string => {\n return String.fromCodePoint(...stringNumeros.split(\",\").map(i => Number(i)));\n }\n\n static aCadaElemento = (query: any, fn: Function): any[] => {\n // A cada elemento encontrado pelo QAll executa a funcao\n let elementos = LibUtil.QAll(query);\n elementos.forEach((e: any) => {\n fn(e);\n });\n // Sempre retorna uma array por caus do QAll\n return elementos;\n };\n\n // Executa a FUNCAO em todas as propriedades deste OA. Inclusive Obj.Obj... (Matriz de Dados)\n static aCadaSubPropriedade = (OA: any, funcao: Function | null = null, exceto: string = \"Object\") => {\n let c = 0;\n for (let a in OA) {\n if (LibUtil.classof(OA[a]) != exceto) {\n if (funcao) {\n funcao(OA[a], a, OA);\n }\n }\n c++;\n // Se o atual é objeto, itera internamente\n if (LibUtil.classof(OA[a]) == \"object\") {\n c += LibUtil.aCadaSubPropriedade(OA[a], funcao, exceto);\n }\n // Se o atual é array, itera internamente\n if (LibUtil.classof(OA[a]) == \"array\") {\n c += LibUtil.aCadaSubPropriedade(OA[a], funcao, exceto);\n }\n }\n return c;\n };\n\n static apenasEstes = (s: string = \"\", regexPossiveis: string = \"0-9\\+\"): string => {\n if (s == null) return \"\";\n let regex = new RegExp(\"(?![\" + regexPossiveis + \"]).\");\n return s.toString().replace(regex, \"\");\n }\n\n static getV = (keys: string | string[], objeto: any): any => {\n // Retorna o valor do chave informada, podendo ser obj.obj.chave\n // LibUtil.getV(\"a.b.c\",{a:{b:{c:\"d\"}}})\n if (LibUtil.classof(objeto) == \"object\") {\n if (LibUtil.classof(keys) == \"string\") {\n if (keys.includes(\".\")) {\n // Multi\n let ks: string[] = (keys as string).split(\".\");\n let lastObj = objeto;\n let lastV = {};\n // Iterar o Keys, Ver Obj atual e Setar Conteudo;\n ks.forEach((k) => {\n if (lastObj) { // Pode ficar nulo durante\n lastV = lastObj[k];\n if (typeof lastV == \"object\") {\n lastObj = lastV;\n } else {\n lastObj = null;\n }\n }\n });\n return lastV;\n } else {\n // Simples\n return objeto[(keys as string)];\n }\n } else if (LibUtil.classof(keys) == \"array\") {\n // Array de Keys. Faz um loop e de forma recursiva tenta pegar o valor. Se o valor não for nulo, interrompe e retorna.\n let lastV = null;\n for (let k of (keys as string[])) {\n lastV = LibUtil.getV(k, objeto);\n if (lastV != null) {\n return lastV;\n }\n }\n } else {\n LOG(1, \"❌ getV() - Nome da propriedade precisa ser em String. (\" + LibUtil.classof(keys) + \"):\", keys);\n }\n } else {\n LOG(1, \"❌ Para ver a chave, o parametro objeto precisa receber um objeto. (\" + typeof objeto + \")\");\n }\n return null;\n };\n\n static setV = (keys: string, value: any, objeto: any) => {\n // Retorna o valor do chave informada, podendo ser obj.obj.chave\n // LibUtil.setV(\"a.b.c\",\"mudei\",{a:{b:{c:\"d\"}}})\n if (typeof objeto == \"object\") {\n if (LibUtil.classof(keys) == \"string\") {\n if (keys.includes(\".\")) {\n // Multi\n let ks: string[] = keys.split(\".\");\n let lastObj = objeto;\n // Iterar o Keys, Ver Obj atual e Setar Conteudo;\n ks.forEach((k) => {\n if (ks.indexOf(k) == (ks.length - 1)) {\n // Último\n lastObj[k] = value;\n } else {\n if (LibUtil.classof(lastObj[k]) != \"object\") {\n lastObj[k] = {};\n }\n }\n lastObj = lastObj[k];\n });\n return objeto;\n } else {\n // Set direto, não tem ponto e é string\n objeto[keys] = value;\n return objeto;\n }\n } else {\n LOG(1, \"❌ setV() - Nome da propriedade precisa ser em string. (\" + LibUtil.classof(keys) + \"):\", keys);\n }\n } else {\n LOG(1, \"❌ setV() - Objeto precisa receber um objeto. (\" + typeof objeto + \")\");\n }\n return null;\n };\n\n static geraObjForm = (form: any) => {\n // Gerar Objeto a partir de um Form Entries\n if (LibUtil.classof(form) != \"object\") {\n // Se vier o Elemento Form / o Query do Form\n form = LibUtil.Q(form);\n }\n // Coleta apenas os campos com value.\n let rObjeto: any = [...form.querySelectorAll(\" *[name]\")]\n .map(o => { return { [o.name]: o.value } })\n .reduce((a, o) => { a = { ...a, ...o }; return a; }, {});\n if (form) {\n\n for (let [k, v] of Object.entries(rObjeto)) {\n LibUtil.setV(k, v, rObjeto);\n if (k.includes(\".\")) {\n delete rObjeto[k];\n }\n }\n Array.from(form.querySelectorAll(\"mk-sel\")).forEach((e: any) => {\n // rObjeto[mk.name] = mk.value;\n LibUtil.setV(e.name, e.value, rObjeto);\n });\n // Aqui apenas coleta os mkBot que foram modificados pelo usuário.\n Array.from(form.querySelectorAll(\"mk-bot.changed\")).forEach((e: any) => {\n // rObjeto[mk.name] = mk.value;\n LibUtil.setV(e.name, e.value, rObjeto);\n });\n }\n return rObjeto;\n }\n\n static funcoesDinamicas = new Map<string, Function>();\n static aCada1s = () => {\n Array.from(LibUtil.funcoesDinamicas.values()).map((fn: Function) => { if (fn != null) fn() });\n setTimeout(() => {\n LibUtil.aCada1s();\n }, 1000);\n };\n\n static cortarString = (linha: string, regex: string, casas: any) => {\n let resultado: any = \"\";\n try {\n resultado = new RegExp(regex).exec(linha)?.groups?.[\"ok\"];\n } catch (e) {\n LOG(1, \"Regex Inválido. \", e);\n return \"0\";\n }\n if ((!casas) || (casas == \"\") || (casas <= 0)) casas = 0;\n return `${LibUtil.toNumber(resultado, casas)}`;\n }\n\n static uuid = () => {\n // Padrão UUIDV4 - Gerador de identificador unico\n return \"10000000-1000-4000-8000-100000000000\".replace(/[018]/g, (c: any) => { // c = String\n return (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16);\n }).toString().toUpperCase();\n }\n\n // mk.isRoute(\"/Pesagem$\") // <= Rota termina com /Pesagem\n static isRoute = (rotaRegex: string) => {\n return new RegExp(rotaRegex).test(window.location.pathname);\n }\n\n static verificarIgualdade(array: any[], propriedades: string[]) {\n // Verifica se várias propriedades estão iguais em todos os objetos de um array.\n if (array.length <= 1) return true;\n const primeiro = array[0];\n return array.every(objeto => {\n return propriedades.every(propriedade => {\n // Verifica se a propriedade existe em ambos os objetos antes da comparação\n if (!(propriedade in objeto) || !(propriedade in primeiro)) {\n LOG(1, `⚠️ Propriedade '${propriedade}' ausente em um ou mais objetos.`);\n return false; // considera falso se a propriedade não existir\n }\n return objeto[propriedade] === primeiro[propriedade];\n });\n });\n }\n\n static individualNoObjeto(array: any[], propriedade: string): any[] {\n // Ignora os Objetos que esta Propriedade se repetir.\n let novoSet = new Set(array.map((o) => { return o[propriedade] }));\n return array.map((o) => {\n if (novoSet.has(o[propriedade])) {\n novoSet.delete(o[propriedade]);\n return o;\n } else return null;\n }).filter(o => o);\n }\n\n static hasFaltante(array: any[], propriedades: string[]) {\n // Verifica as propriedades informadas estão disponíveis em todos os objetos do array.\n if (array.length <= 0) return false;\n return array.every(objeto => {\n return propriedades.every(propriedade => {\n if (!(propriedade in objeto)) {\n return true;\n }\n return false;\n });\n });\n }\n\n static somarEmObjeto(lista: any[], propriedade: string) {\n // Soma uma determinada propriedade em uma lista\n return lista.reduce((acc: number, val: any) => {\n if (LibUtil.classof(val[propriedade]) == \"number\") {\n return acc + val[propriedade];\n }\n return acc;\n }, 0);\n }\n\n static capitalize = (texto?: string | null): string => {\n let arrayTexto = texto?.toString().split(\" \");\n return arrayTexto?.map(str => {\n let str_low = str.toLowerCase();\n if ([\"da\", \"de\", \"do\", \"das\", \"dos\", \"e\"].includes(str_low)) {\n return str_low;\n } else {\n return str_low.charAt(0).toUpperCase() + str_low.slice(1);\n }\n }).join(\" \") || \"\";\n };\n\n static GetParam = (name: string | null = null, url: string | null = null) => {\n // Coleta o valor do parametro da url.\n if (!url) url = document.location.toString();\n if (name != null) {\n return new URL(url).searchParams.get(name);\n } else {\n return new URL(url).searchParams.toString();\n }\n }\n\n static getParamObject = (url?: string) => {\n if (!url) url = document.location.toString();\n return url?.split(\"?\")[1]?.split(\"&\")?.reduce((acc: any, val: string) => {\n const [key, value] = val.split(\"=\");\n acc[key] = value;\n return acc;\n }, {});\n }\n\n static toQueryString(obj?: any, urlAtual: string = \"\"): string {\n if (obj) {\n // Quando é GET, modifica a URL e acrescenta os QUERYSTRING do objeto enviado por parametro.\n if (obj != null) {\n if (!urlAtual.includes(\"?\")) {\n urlAtual = urlAtual + \"?\"; // Cria o divisor entre os dados do query e o endereço destino.\n }\n let queryStrings = \"\";\n if (LibUtil.classof(obj) == \"object\") {\n for (let propriedade in obj) {\n if (LibUtil.classof(obj[propriedade]) == \"object\") {\n let propJson = JSON.stringify(obj[propriedade]);\n queryStrings += `&${propriedade}=${propJson}`;\n LOG(1, `⚠️ toQueryString() - Uma propriedade enviada: '${propriedade}' era um objeto. Url`, urlAtual);\n } else {\n if (obj[propriedade] != null) {\n queryStrings += `&${propriedade}=${obj[propriedade]}`;\n }\n }\n }\n } else {\n LOG(1, \"❌ Dados enviados via GET precisam ser Object. Dados: \", LibUtil.classof(obj));\n }\n urlAtual = urlAtual + queryStrings;\n }\n }\n if (urlAtual.endsWith(\"?\")) urlAtual = urlAtual.slice(0, -1); // Remove o ? final se não tiver nada depois.\n urlAtual = urlAtual.replaceAll(\"?&\", \"?\");\n return urlAtual;\n }\n\n /**\n * Mapeia uma EntidadeA para EntidadeB usando o TRANSFORMA\n * É nescessário informar o DE/PARA/TRANSFORMA de cada propriedade.\n */\n static mapearEntidade<T, U>(\n entidadeOrigem: T,\n mapeamento: MapeamentoItem<T, U>[]\n ): U {\n const entidadeDestino: any = {};\n mapeamento.forEach(item => {\n const valor = entidadeOrigem[item.de];\n if (valor !== undefined) {\n entidadeDestino[item.para] = item.transforma(valor);\n } else {\n entidadeDestino[item.para] = null;\n }\n });\n return entidadeDestino as U;\n\n }\n\n /**\n * Faz uma tentativa de obter uma url, mas se falhar, retorna nulo\n */\n static getURL(urlQuery?: string) {\n let url;\n if (urlQuery) {\n try {\n url = new URL(urlQuery);\n } catch (e) {\n LOG(1, \"❌ URL INVÁLIDA: \", urlQuery);\n }\n }\n return url;\n }\n\n static conversorCSS(texto: string): string[] {\n const regex = /\\.([a-z0-9-]+)\\s*{.*?}/g;\n let arrayTexto = texto.replace(/\\s+/g, ' ').replace(/[\\r\\n]/g, '').replace(regex, (match, group1) => group1 + \",\").trim().split(\",\");\n return arrayTexto.map(i => i.trim()).filter(o => o != \"\");\n }\n\n static sort<T, K extends keyof T>(array: T[], propriedade: K): T[] {\n return array.sort((a, b) => (a[propriedade] < b[propriedade] ? -1 : 1));\n }\n\n static converteEnterEmBr(texto: string): string {\n return texto.replace(/\\n/g, \"<br>\");\n }\n\n static hasHtmlTags(texto: string): boolean {\n const regex = /<\\/?[a-z][\\s\\S]*>/i;\n return regex.test(texto);\n }\n\n\n /**\n * Une duas listas quando elas tem uma propriedade em comum\n * @param listaA Lista a ser sobreescrita ou preenchida\n * @param listaB Lista com os dados para preencher ou sobreescrever\n * @param propEmComum Nome da propriedade que, se estiver em comum nas listas, será populado, do contrário não.\n * @returns Lista Unida por um Filtro.\n */\n static Union(listaA: any[], listaB: any[], propEmComum?: string): any[] {\n let resultado = listaA.map(itensA => ({\n ...itensA,\n ...listaB.filter(o => o[propEmComum as keyof typeof o]?.toString() == itensA[propEmComum as keyof typeof listaA]?.toString())[0],\n }));\n G_START(3, \"Unindo Listas...\")\n LOG(3, \"ListaA: \", listaA);\n LOG(3, \"ListaB: \", listaB);\n LOG(3, \"Resultado: \", resultado);\n G_END(3);\n return resultado;\n }\n\n /**\n * Gera uma string menor que a informada.\n * @returns \n */\n static gerarHashCurto(texto: string, tamanho: number = 8): string {\n let hash = 0;\n for (let i = 0; i < texto.length; i++) {\n hash = ((hash << 5) - hash) + texto.charCodeAt(i);\n hash = hash & hash; // Converte para inteiro de 32 bits\n }\n // Converter para string hexadecimal positiva e pegar os primeiros caracteres\n return Math.abs(hash).toString(16).substring(0, tamanho);\n }\n\n static gerarNomeColection(nomeSistema: string, colecao: string): string {\n return LibUtil.gerarHashCurto(nomeSistema) + \"_\" + colecao;\n }\n\n\n static apenasNumerosLetras = (s: string = \"\"): string => {\n if (s == null) return \"\";\n // Ignora qualquer outro caracter além de Numeros e Letras formato ocidental\n return s.replace(/(?![a-zA-Z0-9])./g, \"\");\n };\n\n static removeEspecias = (s: string): string => {\n if (s == null) return \"\";\n // Remove acentos e depois chama Apenas Números e Letras.\n s = s.toString();\n return LibUtil.apenasNumerosLetras(LibUtil.removeAcentos(s));\n };\n\n static LerTexto = async (texto = \"Teste som: 1, 2, 3.\", locutor = 0) => {\n let lerVoz = window.speechSynthesis;\n let listaVozes = lerVoz.getVoices().filter(o => o.lang.toLowerCase() == \"pt-br\");\n let locutorEncontrado = listaVozes[locutor] || listaVozes[0] || null;\n return new Promise((r) => {\n if (lerVoz.speaking) {\n LOG(1, \">> Ainda está reproduzindo. Tente mais tarde.\");\n return;\n }\n if (texto != \"\") {\n const ssu = new SpeechSynthesisUtterance(texto);\n ssu.lang = \"pt-BR\";\n ssu.voice = locutorEncontrado;\n ssu.pitch = 0; // Tom de voz\n ssu.rate = 1.5; // Velocidade\n ssu.onend = (ev) => { r(true) };\n ssu.onerror = (ev) => { LOG(1, \"❌ Erro: \", ev.error); r(false) };\n lerVoz.cancel();\n lerVoz.speak(ssu);\n }\n });\n }\n\n static async LerProximoERemover(playlist: string[]) {\n if (await LibUtil.LerTexto(playlist[0]) == true) {\n playlist.shift();\n }\n return playlist;\n }\n\n static LeituraInterrompida() {\n window.speechSynthesis.cancel();\n }\n\n static gerarNumeroInteiro(min: number, max: number): any {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n\n static SelectInner(e: HTMLInputElement) {\n // Seleciona texto do elemento\n if (window.getSelection) {\n const selection = window.getSelection();\n const range = document.createRange();\n range.selectNodeContents(e);\n selection?.removeAllRanges();\n selection?.addRange(range);\n }\n }\n\n static generatePrimaryKey(item: any, primarykey: string): any {\n if (item == null) {\n LOG(1, \"❌ Não foi possível gerar uma chave, pois o objeto ainda não está preenchido.\")\n return item;\n }\n\n if (LibUtil.classof(item) != \"object\") {\n LOG(1, \"⚠️ Não foi possível gerar uma chave neste tipo de variável: \", LibUtil.classof(item));\n return item;\n }\n\n if (item[primarykey] != null) {\n LOG(5, \"Chave não gerada no objeto, pois já estava preenchido com:\", item[primarykey]);\n return item;\n }\n\n item[primarykey] = LibUtil.uuid();\n return item;\n }\n\n static hslToHex(h: number, s: number, l: number) {\n // Normalize saturation and lightness to a 0-1 range\n s /= 100;\n l /= 100;\n\n let c = (1 - Math.abs(2 * l - 1)) * s,\n x = c * (1 - Math.abs(((h / 60) % 2) - 1)),\n m = l - c / 2,\n r = 0,\n g = 0,\n b = 0;\n\n if (0 <= h && h < 60) {\n r = c;\n g = x;\n b = 0;\n } else if (60 <= h && h < 120) {\n r = x;\n g = c;\n b = 0;\n } else if (120 <= h && h < 180) {\n r = 0;\n g = c;\n b = x;\n } else if (180 <= h && h < 240) {\n r = 0;\n g = x;\n b = c;\n } else if (240 <= h && h < 300) {\n r = x;\n g = 0;\n b = c;\n } else if (300 <= h && h < 360) {\n r = c;\n g = 0;\n b = x;\n }\n\n // Convert RGB values to 0-255 range\n r = Math.round((r + m) * 255);\n g = Math.round((g + m) * 255);\n b = Math.round((b + m) * 255);\n\n // Convert RGB components to hexadecimal and pad with leading zero if needed\n const toHex = (c: any) => {\n const hex = c.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n };\n\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n }\n\n static isFilled(dados: any): boolean {\n if (LibUtil.classof(dados) == \"array\") {\n if ((dados as Array<any>).length && (dados as Array<any>).length > 0) {\n return true;\n }\n }\n return false;\n }\n\n static replace(regex: string, valor: string | number): string {\n if (typeof valor === \"number\") valor = valor.toString();\n return valor.replace(new RegExp(regex, 'g'), '');\n }\n\n // Mínimo 2 timestamps\n static calculateJitter(timestamps: number[]): number {\n if (timestamps.length < 2) return 0;\n\n const delays = [];\n for (let i = 1; i < timestamps.length; i++) {\n delays.push(timestamps[i] - timestamps[i - 1]);\n }\n\n if (delays.length < 2) return 0;\n let totalJitterDifference = 0;\n\n for (let i = 1; i < delays.length; i++) {\n totalJitterDifference += Math.abs(delays[i] - delays[i - 1]);\n }\n\n return totalJitterDifference / (delays.length - 1);\n }\n\n // Soma os valores dos arrays por índice\n static somarPorIndice = (arrays: number[][]): number[] => {\n if (arrays.length === 0) return [];\n return arrays.reduce((acc, arr) =>\n arr.map((val, i) => (acc[i] || 0) + val)\n );\n }\n\n // Soma os valores dos arrays\n static somarArrayInterna = (arrays: number[][]): number[] => {\n if (arrays.length === 0) return [];\n return arrays.map(a => a.reduce((acc, v) => acc + v, 0));\n }\n\n // Faz o download de um Blob()\n static downloadBlob = (blob: Blob, nomeArquivo: string) => {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = nomeArquivo;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n }\n\n static wordsToCamelCase(texto: string): string {\n // Se houver espaços, traços, undercores, converte para camelCase\n return texto.split(/[\\s-_]+/)\n .map((word, index) =>\n index === 0 ? word : word.charAt(0).toUpperCase() + word.slice(1)\n ).join('');\n }\n\n static camelCase(texto: string): string {\n return texto.charAt(0).toLowerCase() + texto.slice(1);\n }\n\n static pascalCase(texto: string): string {\n return texto.charAt(0).toUpperCase() + texto.slice(1);\n }\n\n static dashedCase(texto: string): string {\n // Converte camelCase ou PascalCase para dashed-case\n return texto.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n }\n\n static separaWordsCase(texto: string): string {\n // Separa as palavras ao trocar de letra minúscula para maiúscula.\n // CodigoIBGE => Codigo IBGE\n let textoSeparado = texto.replace(/([a-z])([A-Z])/g, '$1 $2');\n return textoSeparado;\n }\n\n // Separa as palavras por espaço, traço ou underline, e retorna um array com as palavras.\n static wordsArray(texto: string): string[] {\n return texto.split(/[\\s-_]+/).filter(word => word.length > 0);\n }\n\n static tentaAcentuarTexto(s: string | string[]): string {\n // Utiliza regras de acentuação de português para tentar acentuar a palavra informada.\n if (LibUtil.classof(s) == \"array\") {\n return (s as string[]).map((palavra) => LibUtil.tentaAcentuarTexto(palavra)).join(\" \");\n }\n let texto = (s as string);\n if (texto.endsWith(\"ao\")) {\n texto = texto.slice(0, -2) + \"ão\"; // Ex: mão\n }\n if (texto.endsWith(\"oes\")) {\n texto = texto.slice(0, -3) + \"ões\"; // Ex: permissões\n }\n if (texto.endsWith(\"cao\") || texto.endsWith(\"çao\") || (texto.endsWith(\"cão\") && texto != \"cão\")) {\n texto = texto.slice(0, -3) + \"ção\"; // Ex: ação\n }\n if (texto.endsWith(\"coes\") || texto.endsWith(\"çoes\") || texto.endsWith(\"cões\")) {\n texto = texto.slice(0, -4) + \"ções\"; // Ex: observações\n }\n\n return texto;\n }\n\n static pluralOf(word: string | string[]): string {\n // Retorna o plural da palavra informada em português\n if (LibUtil.classof(word) == \"array\") {\n return (word as string[]).map((palavra) => LibUtil.pluralOf(palavra)).join(\" \");\n }\n\n let texto = (word as string);\n if (texto.endsWith(\"ão\")) {\n return texto.slice(0, -2) + \"ões\";\n } else if (texto.endsWith(\"ões\")) {\n return texto.slice(0, -3) + \"ões\";\n } else if (texto.endsWith(\"r\") || texto.endsWith(\"s\") || texto.endsWith(\"z\")) {\n return texto + \"es\";\n } else if (texto.endsWith(\"m\")) {\n return texto.slice(0, -1) + \"ns\";\n } else if (texto.endsWith(\"l\")) {\n return texto.slice(0, -1) + \"is\";\n } else {\n return texto + \"s\";\n }\n }\n\n static setFormConfigs(configs: Partial<IFieldComponent<any>>): void {\n LibUtil.formConfigs = configs;\n }\n\n static paraPortugues(texto: string): string {\n let acentuado = LibUtil.tentaAcentuarTexto(LibUtil.wordsArray(LibUtil.separaWordsCase(texto)))\n return LibUtil.replaceDicionario(acentuado);\n }\n\n static paraPortuguesPlural(texto: string): string {\n let plural = LibUtil.pluralOf(LibUtil.paraPortugues(texto))\n return plural;\n }\n\n // Dicionário\n static replaceDicionario(texto: string): string {\n if (texto.startsWith(\"Is \")) {\n texto = texto.replace(/^Is /, \"É \");\n }\n texto = texto.replaceAll(\"Codigo\", \"Código\");\n texto = texto.replaceAll(\"Icone\", \"Ícone\");\n texto = texto.replaceAll(\"Enderec\", \"Endereç\");\n texto = texto.replaceAll(\"Balanc\", \"Balanç\");\n texto = texto.replaceAll(\"Usuari\", \"Usuári\");\n texto = texto.replaceAll(\"Lancamento\", \"Lançamento\");\n texto = texto.replaceAll(\"Referencia\", \"Referência\");\n texto = texto.replaceAll(\"Ultim\", \"Últim\");\n texto = texto.replaceAll(\"Numero\", \"Número\");\n texto = texto.replaceAll(\"Inicio\", \"Início\");\n texto = texto.replaceAll(\"Socio\", \"Sócio\");\n texto = texto.replaceAll(\"Socia\", \"Sócia\");\n texto = texto.replaceAll(\"Especie\", \"Espécie\");\n texto = texto.replaceAll(\"Cobranca\", \"Cobrança\");\n texto = texto.replaceAll(\"Modulo\", \"Módulo\");\n texto = texto.replaceAll(\"Servico\", \"Serviço\");\n texto = texto.replaceAll(\"Aliquota\", \"Alíquota\");\n texto = texto.replaceAll(\"Calculo\", \"Cálculo\");\n texto = texto.replaceAll(\"Unitario\", \"Unitário\");\n texto = texto.replaceAll(\"Procedencia\", \"Procedência\");\n texto = texto.replaceAll(\"Mudanca\", \"Mudança\");\n texto = texto.replaceAll(\"Pratica\", \"Prática\");\n texto = texto.replaceAll(\"Propria\", \"Própria\");\n texto = texto.replaceAll(\"Impropria\", \"Imprópria\");\n texto = texto.replaceAll(\"Responsavel\", \"Responsável\");\n texto = texto.replaceAll(\"Conjuge\", \"Cônjuge\");\n texto = texto.replaceAll(\"Cafe\", \"Café\");\n texto = texto.replaceAll(\"Transferencia\", \"Transferência\");\n texto = texto.replaceAll(\"Bancaria\", \"Bancária\");\n texto = texto.replaceAll(\"Agencia\", \"Agência\");\n texto = texto.replaceAll(\"Digito\", \"Dígito\");\n\n if (texto.includes(\"Mes \")) texto = texto.replaceAll(\"Mes \", \"Mês \");\n if (texto.endsWith(\"Mes\")) texto = texto.replace(/Mes$/, \"Mês\");\n if (texto.includes(\"Ate \")) texto = texto.replaceAll(\"Ate \", \"Até \");\n if (texto.endsWith(\"Ate\")) texto = texto.replace(/Ate$/, \"Até\");\n if (texto.includes(\"Socio \")) texto = texto.replaceAll(\"Socio \", \"Sócio \");\n if (texto.endsWith(\"Socio\")) texto = texto.replace(/Socio$/, \"Sócio\");\n if (texto.includes(\"Socia \")) texto = texto.replaceAll(\"Socia \", \"Sócia \");\n if (texto.endsWith(\"Socia\")) texto = texto.replace(/Socia$/, \"Sócia\");\n return texto;\n }\n\n}\n\n\nexport type IClassOf = \"string\" | \"number\" | \"nan\" | \"object\" | \"array\" | \"boolean\" | \"undefined\" | \"null\" | \"function\" | \"date\" | \"regexp\" | \"error\" | \"symbol\" | \"bigint\"\n\nexport interface IFormatter {\n mask: string | ((value: any) => string);\n regex: string;\n validate: (value: any) => boolean;\n}\n\nexport interface IUtilFormatters {\n cpf: IFormatter;\n cnpj: IFormatter;\n cpf_cnpj: IFormatter;\n cnh: IFormatter;\n pis: IFormatter;\n dia: IFormatter;\n mes: IFormatter;\n ano: IFormatter;\n anoRecente: IFormatter;\n data: IFormatter;\n dataIso: IFormatter;\n numero: IFormatter;\n decimal: IFormatter;\n letra: IFormatter;\n numeroELetra: IFormatter;\n ip: IFormatter;\n email: IFormatter;\n cep: IFormatter;\n}\n\nexport interface MapeamentoItem<T, U> {\n de: keyof T;\n para: keyof U;\n transforma: (v: T[keyof T]) => U[keyof U];\n}\n","import { computed, signal, Type, WritableSignal } from \"@angular/core\";\nimport { IKV, IKV_ext, ITipoBotao, ITiposTema } from '../../interfaces/interfaces';\nimport { LibUtil } from \"../../util/util\";\nimport { LOG } from '../../util/log';\n\nexport class Formulario {\n\n campos = signal<IFields<any>>({});\n listaCampos = computed<IFieldComponent<any>[]>(() => Object.values(this.campos()));\n listaErrors = computed<string[]>(() => {\n let errors: string[] = [];\n for (const key of Object.keys(this.campos())) {\n const campoErros = this.campos()?.[key]?.errors;\n if (campoErros && campoErros.length > 0) {\n errors = [...errors, ...campoErros.map(e => `${String(key)}: ${e}`)];\n }\n }\n return errors;\n });\n values = signal<any>({});\n registredFields = signal<{ [key in keyof IFields<any>]: any }>({});\n\n showTouched = signal<boolean>(false);\n isEnviado: boolean = false;\n isEnviando: boolean = false;\n instance: any = null;\n\n valido = computed(() => {\n for (const key of Object.keys(this.campos())) {\n const campo = this.campos()[key];\n const errors = campo.errors;\n if (errors && errors.length > 0) {\n return false;\n }\n }\n return true;\n });\n algumTocado = computed(() => {\n return this.listaCampos().some(campo => campo.touched);\n });\n\n constructor(campos: IFields<any>, startValues: any = {}, instance: any = null) {\n this.instance = instance;\n let values: any = this._startValues(campos, startValues);\n let camposStarted: IFields<any> = {};\n for (const key of Object.keys(campos)) {\n camposStarted[key] = {\n ...campos[key],\n touched: false,\n invalid: false,\n errors: [], // [Valide.msg.naoValidado]\n ...LibUtil.formConfigs,\n };\n }\n this.campos.set(camposStarted);\n this.values.set(values);\n this.obterOpcoes();\n return this;\n }\n\n updateValues(newValues: any) {\n if (LibUtil.classof(newValues) !== 'object') {\n LOG(1, \"❌ Formulario.updateValues deve receber um objeto.\");\n }\n this.values.update(v => {\n return { ...v, ...newValues }\n });\n }\n\n removeValue(prop: keyof IFields<any>) {\n this.values.update(v => {\n if (v.hasOwnProperty(prop)) {\n delete v[prop];\n } else {\n LOG(1, `❌ Formulario.removeValue: Propriedade '${String(prop)}' não existe nos valores.`);\n }\n return { ...v };\n });\n }\n\n updateCampo(prop: keyof IFields<any>, newCampoData: Partial<IFieldComponent<any>>) {\n if (newCampoData.hasOwnProperty('errors')) {\n newCampoData.invalid = (newCampoData.errors && newCampoData.errors.length > 0);\n }\n this.campos.update(c => {\n if (c[prop]) {\n c[prop] = { ...c[prop], ...newCampoData };\n } else {\n LOG(1, `❌ Formulario.updateCampo: Campo '${String(prop)}' não existe.`);\n }\n return { ...c };\n });\n }\n\n setAllCamposPartial(newCampoData: Partial<IFieldComponent<any>>) {\n if (newCampoData.hasOwnProperty('errors')) {\n newCampoData.invalid = (newCampoData.errors && newCampoData.errors.length > 0);\n }\n this.campos.update(c => {\n for (const key of Object.keys(c)) {\n c[key] = { ...c[key], ...newCampoData };\n }\n return { ...c };\n });\n }\n\n setAllValuesTo(value: any) {\n this.values.update(v => {\n for (const key of Object.keys(v)) {\n v[key] = value;\n }\n return { ...v };\n });\n }\n\n resetToStartValues() {\n const campos = this.campos();\n const startValues = this._startValues(campos);\n this.values.set(startValues);\n }\n\n private _startValues(campos: IFields<any>, startValues: any = {}) {\n let values: any = {};\n for (const key of Object.keys(campos)) {\n values[key] = campos[key].value ?? '';\n }\n values = { ...values, ...startValues };\n return values;\n }\n\n setDisabledAll(disabled: boolean) {\n this.setAllCamposPartial({ disabled });\n }\n\n setTouchedAll(touched: boolean) {\n this.setAllCamposPartial({ touched });\n }\n\n async validar(): Promise<any> {\n let camposComErros: string[] = [];\n let camposPendentes: string[] = [];\n\n // Executa validações diretamente nos campos registrados\n for (const key of Object.keys(this.registredFields())) {\n const campoComponent = this.registredFields()[key];\n if (campoComponent && typeof campoComponent.executarValidacoes === 'function') {\n try {\n await campoComponent.executarValidacoes();\n } catch (error) {\n LOG(1, `❌ Erro ao validar o campo '${key}':`, error);\n }\n }\n }\n\n // Verifica cada campo para erros e pendências\n for (const key of Object.keys(this.campos())) {\n const campo = this.campos()[key];\n if (campo.errors && campo.errors.length > 0) {\n LOG(1, `❌ Erro de validação no campo '${key}':`, campo.errors);\n camposComErros.push(key);\n }\n if (campo.pending) {\n LOG(1, `⏳ Campo '${key}' ainda está pendente.`);\n camposPendentes.push(key);\n }\n }\n\n // Se houver campos pendentes ou com erros rejeita a validação\n if (camposPendentes.length > 0) {\n return Promise.reject(`${camposPendentes.length} Campos pendentes: ${camposPendentes.join(', ')}`);\n }\n if (camposComErros.length > 0) {\n return Promise.reject(`${camposComErros.length} Campos com erros (inválidos): ${camposComErros.join(', ')}`);\n }\n return this.values();\n }\n\n private async obterOpcoes() {\n let campos = this.campos();\n for (const key of Object.keys(campos)) {\n let campo = campos[key];\n // Ignora campos que não são de seleção\n if ([IField.AutoComplete, IField.Select].indexOf(campo.tipo) === -1) continue;\n this.updateCampo(campo.prop, { pending: false });\n\n // Inicializa o signal de opções se não existir\n if (campo.options === undefined) campo.options = signal<IKV[]>([]);\n\n // Opções atuais\n const opcoesAtuais = campo.options?.();\n\n // Se já houver opções E não estiverem vazias, não executa o refill neste momento\n if (opcoesAtuais && opcoesAtuais.length > 0) continue;\n\n // Um refill inicial será executado se definido\n if (campo.refill) {\n LOG(4, `🔄 Refill em '${key}'. Opções iniciais:`, opcoesAtuais);\n this.updateCampo(campo.prop, { pending: true });\n let options: IKV[] | null = null;\n try {\n options = await campo.refill(this);\n\n // await LibUtil.wait(1000);\n if (campo.mapear) {\n options = await campo.mapear(options);\n }\n // let opcoesKV: IKV[] = this.conveterEntidadesParaKV(options, campo.servico.configService.propsDisplay);\n if (options === null || LibUtil.classof(options) !== 'array') {\n options = [];\n }\n\n // Só atualiza as opções se houver conteúdo, pois já está iniciado o signal.\n if (options.length > 0) {\n // campo.options.set(options);\n this.updateCampo(campo.prop, { options: signal(options) });\n LOG(3, `🔄 Refill em '${key}'. recebido:`, options);\n }\n } catch (error) {\n LOG(1, `❌ Erro ao obter opções para o campo '${key}':`, error);\n }\n this.updateCampo(campo.prop, { pending: false });\n\n // Se o onMatchOptionOnInit estiver definido, executa o onMatchOption com a opção correspondente ao valor atual do campo.\n if (campo.onMatchOptionOnInit) {\n const optionValue = options?.find(opt => opt.k === this.values()[campo.prop]);\n if (campo.onMatchOption && optionValue) {\n try {\n campo.onMatchOption?.(this, optionValue);\n } catch (err) {\n LOG(1, `❌ Erro ao executar onMatchOption do campo '${key}'`, err);\n }\n }\n }\n\n // Ao concluir o refill executa afterRefill, se definido.\n if (campo.afterRefill) {\n await campo.afterRefill(this, options);\n }\n }\n }\n }\n\n // Remove os valores que não estão nos campos e os tipos campos que não devem ter valor.\n sanitizar() {\n const campos = this.campos();\n const valoresAtuais = this.values();\n const novosValores: any = {};\n for (const key of Object.keys(campos)) {\n if (campos[key].sanitize) continue;\n if (key in valoresAtuais) {\n novosValores[key] = valoresAtuais[key];\n }\n }\n this.values.set(novosValores);\n }\n\n // Remove os valores que não estão nos campos ou que estão em campos desabilitados.\n onlyAvailable() {\n const novosValores: any = {};\n const valoresAtuais = this.values();\n const campos = this.campos();\n for (const campo of Object.values(campos)) {\n if (campo.prop in valoresAtuais && !campo.disabled) {\n novosValores[campo.prop] = valoresAtuais[campo.prop];\n }\n }\n this.values.set(novosValores);\n }\n\n save() {\n if (this.instance && typeof this.instance.onSave === 'function') {\n this.instance.onSave();\n } else {\n LOG(1, \"❌ Formulario.save: instância não encontrada.\");\n }\n }\n\n}\n\n\n\n/************************************************\\\\\n// Modo de uso\t\t\t\t\t\t\t\t\t\t\t\t\t\t \\\\\n//*************************************************/\n\nexport interface IFields<T> {\n [key: string]: IFieldComponent<T>;\n}\n\n/************************************************\\\\\n// Tipos de Campos disponíveis para uso\t \\\\\n//*************************************************/\n\nexport enum IField {\n AutoComplete = 'autocomplete',\n Button = 'button',\n Checkbox = 'checkbox',\n Color = 'color',\n Custom = 'custom',\t\t\t\t\t\t\t\t// <== Componentes customizados para uma determinada área.\n Date = 'date',\n DateTime = 'datetime',\n Display = 'display',\t\t\t\t\t\t\t// Representa um campo apenas para exibição\n Editor = 'editor',\t\t\t\t\t\t\t\t// Texto multilinha e com Editor\n Email = 'email',\n Hidden = 'hidden',\n Icon = 'icon',\t\t\t\t\t\t\t\t\t\t// Combo de um texto que permite selecionar um icone instalado no sistema.\n MultiFactor = 'multifactor',\t\t\t// Combo de 6 campos texto para preenchimento individual por caracter.\n MultiKV = 'multikv', // Permite adicionar ou retirar itens em forma KV (Como usado nos seletores e no Importar)\n MultiText = 'multitext',\t\t\t\t\t// Lista com: Texto em unica linha.\n Number = 'number',\n Password = 'password',\n Referencia = 'referencia',\t\t\t\t// Campo que referencia um registro de outra entidade. Utilizado para exibir objetos recebidos de relacionamento.\n Search = 'search',\n Select = 'select',\n Slide = 'slide',\n Text = 'text',\t\t\t\t\t\t\t\t\t\t// Texto em unica linha.\n Textarea = 'textarea',\t\t\t\t\t\t// Texto multilinha.\n Time = 'time',\t\t\t\t\t\t\t\t\t\t// Campo de hora (HH:MM)\n Upload = 'upload', \t\t\t\t\t\t\t\t// (Padrão 1 Imagem)(Padrao Accept: \".png,.svg,.jpg,.jpeg,.gif\")\n\n}\n\n/************************************************\\\\\n// Propriedades para Campos\t\t\t\t\t\t\t\t \\\\\n//*************************************************/\n\nexport interface IFieldComponent<T> {\n tipo: IField,\t\t\t\t\t\t\t\t\t\t\t// [OBRIGATORIO] Tipo do campo.\n prop: keyof T & string,\t\t\t\t\t\t// [OBRIGATORIO] nome da propriedade a ser enviada e do controle do formulário.\n value?: any,\t\t\t\t\t\t\t\t\t\t\t// Valor do campo.\n titulo?: string,\t\t\t\t\t\t\t\t\t// nome do campo a ser exibido ao usuário (Display)\n area?: string,\t\t\t\t\t\t\t\t\t\t// Posição gridArea. Doc: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-area\n icone?: string,\t\t\t\t\t\t\t\t\t\t// Ícone a ser exibido no campo.\n placeholder?: string,\t\t\t\t\t\t\t// Texto exibido que não representam o valor.\n style?: string,\t\t\t\t\t\t\t\t\t\t// Estilos CSS a serem aplicados no campo.\n classe?: string,\t\t\t\t\t\t\t\t\t// Classes CSS a serem aplicadas no campo.\n hideLabel?: boolean,\t\t\t\t\t\t\t// Controla se o campo deve ocultar o label (titulo).\n filter?: boolean,\t\t\t\t\t\t\t\t\t// Padrão true. Indica se o campo será usado em filtros (em grids, por exemplo).\n autofocus?: boolean,\t\t\t\t\t\t\t// Define se o campo deve receber foco automaticamente ao ser exibido.\n regras?: IRegra[],\t\t\t\t\t\t\t\t// Regras de validação do campo.\t\n maxl?: number,\t\t\t\t\t\t\t\t\t\t// Tamanho máximo do valor.\n minl?: number,\t\t\t\t\t\t\t\t\t\t// Tamanho mínimo do valor.\n errors?: (string | undefined)[],\t// Lista de mensagens de erro para o campo.\n dica?: string,\t\t\t\t\t\t\t\t\t\t// Texto de ajuda para o campo.\n onInput?: (form: Formulario) => any;// Executada a cada alteração simples no campo.\n onChange?: (form: Formulario) => any;// Executada ao fim de uma alteração no campo.\n\n // Indicadores\n readonly?: boolean,\t\t\t\t\t\t\t\t// Indisponibiliza a edição.\n need?: boolean,\t\t\t\t\t\t\t\t\t\t// Valida se o campo está preenchido.\n touched?: boolean,\t\t\t\t\t\t\t\t// Indica se o campo foi tocado/editado.\n disabled?: boolean,\t\t\t\t\t\t\t\t// Indisponibiliza todos os controles.\n invalid?: boolean,\t\t\t\t\t\t\t\t// Indica se o campo está inválido.\n empty?: boolean,\t\t\t\t\t\t\t\t\t// Indica se o campo está vazio.\n pending?: boolean,\t\t\t\t\t\t\t\t// Indica que o campo está em estado de espera (loading).\n\n // Configurações específicas por tipo de campo\n tema?: ITiposTema,\t\t\t\t\t\t\t\t// Tema do botão (para button, etc).\n tituloClicavel?: string,\t\t\t\t\t// Título do botão (para button, slide, etc).\n textoAtivo?: string,\t\t\t\t\t\t\t// Texto quando ativo (para slide).\n textoInativo?: string,\t\t\t\t\t\t// Texto quando inativo (para slide).\n tituloChave?: string,\t\t\t\t\t\t // Titulo para a chave (para multikv).\n tituloValor?: string,\t\t\t\t\t\t // Titulo para o valor (para multikv).\n rows?: number,\t\t\t\t\t\t\t\t\t\t// Número de linhas (para textarea, select).\n cols?: number,\t\t\t\t\t\t\t\t\t\t// Número de colunas (para textarea).\n mask?: string | ((valor?: string) => string),\t// Máscara a ser aplicada ao valor.\n options?: WritableSignal<IKV[]>// Opções para campos que possuem seleção (select, radio, etc).\n multiple?: boolean,\t\t\t\t\t\t\t\t// Permitir múltiplas seleções (para select, upload, etc).\n canUnselect?: boolean,\t\t\t\t\t\t// Permitir desselecionar a opção selecionada (para select, radio, etc).\n componente?: Type<any>;\t\t\t\t\t\t// Componente Angular personalizado para renderizar este campo. (para custom)\n tipoBotao?: ITipoBotao;\t\t\t\t\t\t// Tipo do botão (para button).\n onClick?: (form: Formulario) => any;// Função chamada quando o campo é clicado (para button, etc).\n afterRefill?: (form: Formulario, options: IKV[] | null) => any;// Função chamada após o refill do campo (para select, autocomplete, etc).\n onMatchOption?: (form: Formulario, option?: IKV_ext) => any;\t// Função chamada quando uma opção é selecionada (para autocomplete, select, etc).\n onMatchOptionOnInit?: boolean,\t\t// Indica se deve disparar onMatchOption ao iniciar o componente.\n onComplete?: (form: Formulario, value: any) => any\t// Função chamada quando o campo é completado (para multifactor, etc).\n showHeader?: boolean,\t\t\t\t\t\t\t// Define se o campo deve exibir o cabeçalho (header) com o título e ícone.\n showToolbar?: boolean,\t\t\t\t\t\t// Define se o campo deve exibir a toolbar de formatação (para editor).\n accept?: string,\t\t\t\t\t\t\t\t\t// Define os tipos de arquivos aceitos (para upload, dropzone, etc). \".png,.svg,.jpg,.jpeg,.gif\"\n refill?: (form: Formulario) => Promise<IKV[] | null>;\t// Função que retorna os dados para popular o campo (para select, autocomplete, etc).\n mapear?: (r: any) => Promise<IKV[] | null>;\t// Função que mapeia o valor do campo para o formato esperado na submissão do formulário.\n subFields?: IFields<any>; \t\t\t\t// Define os sub-campos (para multiobject).\n isCollapsed?: () => boolean;\t\t\t// Indica se o campo deve colapsar.\n getDisplay?: (value: any, form?: Formulario) => any;\t// Função para obter o valor a ser exibido no campo, normalmente no campo Referencia.\n textEmpty?: string;\t\t\t\t\t\t\t\t// Texto a ser exibido quando o campo estiver vazio (para select).\n sanitize?: boolean;\t\t\t\t\t\t// Indica se o valor do campo deve ser sanitizado antes de ser enviado (removendo caracteres inválidos, por exemplo).\n}\n\n/************************************************\\\\\n// FASES\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \\\\\n//*************************************************/\n\nexport interface IFases<T> {\n fases: IFaseCampos<T>[],\n isLinear?: boolean,\n orientation?: 'horizontal' | 'vertical',\n}\n\nexport interface IFaseCampos<T> {\n nome: string,\n icone?: string | null,\n completed?: boolean,\n optional?: boolean,\n hasErrors?: boolean,\n errorMessage?: string,\n campos: (IFaseCamposAgrupados<T> | keyof T & string)[],\n disabled?: boolean,\n gridMin?: string,\t// Valor padrão para grid-template-columns mínimo das fases. Ex: \"150px\"\n gridMax?: string,\t// Valor padrão para grid-template-columns máximo das fases. Ex: \"1fr\"\n}\n\nexport interface IFaseCamposAgrupados<T> {\n campos: (keyof T & string)[],\n titulo?: string,\n area?: string,\n tituloArea?: string,\n}\n\n/************************************************\\\\\n// CAMPOS SIMPLIFICADOS\t\t\t\t\t\t\t\t\t\t \\\\\n//*************************************************/\n\nexport class CampoDe {\n\n static AutoComplete<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.AutoComplete,\n prop,\n titulo,\n ...config,\n };\n }\n\n static Button<T>(prop: any, tituloClicavel: string, click: (form: Formulario) => void, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Button,\n prop,\n tituloClicavel,\n sanitize: true, // Button é padrão true.\n onClick: click,\n ...config,\n }\n }\n\n static Checkbox<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Checkbox,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Color<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Color,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Cpf<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Text,\n prop,\n titulo,\n mask: LibUtil.formats.cpf.mask,\n placeholder: \"000.000.000-00\",\n regras: [Regra.CPF()],\n ...config,\n }\n }\n\n static Cnpj<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Text,\n prop,\n titulo,\n mask: LibUtil.formats.cnpj.mask,\n placeholder: \"00.000.000/0000-00\",\n regras: [Regra.CNPJ()],\n ...config,\n }\n }\n\n static CpfCnpj<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Text,\n prop,\n titulo,\n mask: LibUtil.formats.cpf_cnpj.mask,\n placeholder: \"000.000.000-00 ou 00.000.000/0000-00\",\n maxl: 18,\n // regras: [Regra.CPF_CNPJ()],\n ...config,\n }\n }\n\n static Custom<T>(prop: keyof T & string, componente: Type<any>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Custom,\n prop,\n titulo,\n componente,\n ...config,\n }\n }\n\n static Date<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Date,\n prop,\n titulo,\n ...config,\n }\n }\n\n static DateTime<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.DateTime,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Display<T>(prop: any, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Display,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Editor<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Textarea,\n prop,\n titulo,\n area: 'auto / auto / span 2 / auto',\n ...config,\n }\n }\n\n static Email<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Email,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Hidden<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Hidden,\n need: false,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Icon<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Icon,\n prop,\n titulo,\n ...config,\n }\n }\n\n static MultiFactor<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.MultiFactor,\n prop,\n titulo,\n ...config,\n }\n }\n\n static MultiKV<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.MultiKV,\n prop,\n titulo,\n ...config,\n }\n }\n\n static MultiText<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.MultiText,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Number<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Number,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Password<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Password,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Referencia<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Referencia,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Search<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Search,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Select<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Select,\n prop,\n titulo,\n ...config,\n };\n }\n\n static Slide<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Slide,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Upload<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Upload,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Text<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Text,\n prop,\n titulo,\n ...config,\n }\n }\n\n static Textarea<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Textarea,\n prop,\n titulo,\n rows: 15,\n cols: 30,\n ...config,\n }\n }\n\n static Time<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Time,\n prop,\n titulo,\n ...config,\n }\n }\n\n static UploadImage<T>(prop: keyof T & string, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<T> {\n return {\n tipo: IField.Upload,\n prop,\n titulo,\n accept: \".png,.svg,.jpg,.jpeg,.gif\",\n ...config,\n }\n }\n\n}\n\n/************************************************\\\\\n// FILTROS SIMPLIFICADOS\t\t\t\t\t\t\t\t\t \\\\\n//*************************************************/\n\nexport class FiltroDe {\n\n static Boolean<T>(prop: Extract<keyof T, string>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<any> {\n return {\n ...CampoDe.Select<T>((prop as any), titulo, {\n options: signal([{ k: \"\", v: \"Todos\" }, { k: \"true\", v: \"Sim\" }, { k: \"false\", v: \"Não\" }])\n }),\n ...config,\n };\n };\n\n static Hidden<T>(prop: Extract<keyof T, string>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<any> {\n return CampoDe.Hidden<T>((prop as any), titulo, config);\n };\n\n /** Usar este FiltroTexto quando não for Hidden, Select ou Booleano */\n static Text<T>(prop: Extract<keyof T, string>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<any> {\n return CampoDe.Text<T>((prop as any), titulo, config);\n };\n\n static Select<T>(prop: Extract<keyof T, string>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<any> {\n return {\n ...CampoDe.Select<T>((prop as any), titulo),\n ...config,\n };\n };\n\n static Date<T>(prop: Extract<keyof T, string>, titulo?: string, config?: Partial<IFieldComponent<T>>): IFieldComponent<any> {\n return {\n ...CampoDe.Date<T>((prop as any), titulo),\n ...config,\n };\n };\n\n}\n\n/************************************************\\\\\n// VALIDAÇÃO de campos\t\t\t\t\t\t\t\t\t\t \\\\\n//*************************************************/\n\nexport enum IRegraTipo {\n ApenasNumeros = \"apenasNumeros\",\n}\n\nexport interface IRegra {\n nome: string;\n mensagem: string;\n validar: (value: any) => boolean | Promise<boolean>;\n}\n\nexport class Regra {\n\n static ApenasNumeros(): IRegra {\n return {\n nome: IRegraTipo.ApenasNumeros,\n mensagem: Regra.mensagens.apenasNumeros,\n validar: (value: any): boolean => {\n let s = value.replace(/(?![0-9])./g, \"\");\n return value.length === s.length;\n }\n }\n }\n\n static ApenasLista(): IRegra {\n return {\n nome: \"apenasLista\",\n mensagem: Regra.mensagens.apenasLista,\n validar: (value: any): boolean => {\n return Array.isArray(value);\n }\n }\n }\n\n static ApenasListaDeObjetos(): IRegra {\n return {\n nome: \"apenasListaDeObjetos\",\n mensagem: Regra.mensagens.apenasListaDeObjetos,\n validar: (value: any): boolean => {\n if (!Array.isArray(value)) return false;\n for (let item of value) {\n if (typeof item !== 'object' || item === null) return false;\n }\n return true;\n }\n }\n }\n\n static EntreValores(min: number, max: number): IRegra {\n return {\n nome: \"apenasEntre\",\n mensagem: Regra.mensagens.apenasEntre(min, max),\n validar: (value: any): boolean => {\n if (typeof value !== 'number') return false;\n return value >= min && value <= max;\n }\n }\n }\n\n static TamanhoMinimo(qntCaracteres: number): IRegra {\n return {\n nome: \"temSizeMin\",\n mensagem: Regra.mensagens.temSizeMin,\n validar: (value: any): boolean => {\n if (!value) return false;\n return value.length >= qntCaracteres;\n }\n }\n }\n\n static TamanhoMaximo(qntCaracteres: number): IRegra {\n return {\n nome: \"temSizeMax\",\n mensagem: Regra.mensagens.temSizeMax,\n validar: (value: any): boolean => {\n if (!value) return true;\n return value.length <= qntCaracteres;\n }\n }\n }\n\n static ApenasLetras(): IRegra {\n return {\n nome: \"temApenasLetras\",\n mensagem: Regra.mensagens.temApenasLetras,\n validar: (value: any): boolean => {\n if (!value) return true;\n let s = value.replace(/(?![A-Za-z])./g, \"\");\n return value.length === s.length;\n }\n }\n }\n\n static ApenasNumerosELetras(): IRegra {\n return {\n nome: \"temApenasNumerosELetras\",\n mensagem: Regra.mensagens.temApenasNumerosELetras,\n validar: (value: any): boolean => {\n if (!value) return true;\n let s = value.replace(/(?![0-9A-Za-z])./g, \"\");\n return value.length === s.length;\n }\n }\n }\n\n static TemMaiuscula(): IRegra {\n return {\n nome: \"temMaiuscula\",\n mensagem: Regra.mensagens.temMaiuscula,\n validar: (value: any): boolean => {\n if (!value) return true;\n return /[A-Z]/.test(value);\n }\n }\n }\n\n static TemMinuscula(): IRegra {\n return {\n nome: \"temMinuscula\",\n mensagem: Regra.mensagens.temMinuscula,\n validar: (value: any): boolean => {\n if (!value) return true;\n return /[a-z]/.test(value);\n }\n }\n }\n\n static TemNumero(): IRegra {\n return {\n nome: \"temNumero\",\n mensagem: Regra.mensagens.temNumero,\n validar: (value: any): boolean => {\n if (!value) return true;\n return /[0-9]/.test(value);\n }\n }\n }\n\n static TemEspecial(): IRegra {\n return {\n nome: \"temEspecial\",\n mensagem: Regra.mensagens.temEspecial,\n validar: (value: any): boolean => {\n if (!value) return true;\n return /(?![0-9a-zA-Z])./.test(value);\n }\n }\n }\n\n static Email(): IRegra {\n return {\n nome: \"isEmail\",\n mensagem: Regra.mensagens.isEmail,\n validar: (value: any): boolean => {\n if (!value) return true;\n return LibUtil.formats.email.validate(value);\n }\n }\n }\n\n static Same(compareValue: any, mensagem?: string): IRegra {\n return {\n nome: \"isSame\",\n mensagem: mensagem || Regra.mensagens.isSame,\n validar: (value: any): boolean => {\n return value === compareValue;\n }\n }\n }\n\n static SenhaForte(): IRegra {\n return {\n nome: \"senhaForte\",\n mensagem: Regra.mensagens.senhaForte,\n validar: (value: any): boolean => {\n if (!value) return true;\n const hasNumber = /[0-9]/.test(value);\n const hasMaiuscula = /[A-Z]/.test(value);\n const hasMinuscula = /[a-z]/.test(value);\n const hasEspecial = /(?![0-9a-zA-Z])./.test(value);\n\n return hasNumber && hasMaiuscula && hasMinuscula && hasEspecial;\n }\n }\n }\n\n static Unique(asyncValidate: (value: any) => Promise<boolean>): IRegra {\n return {\n nome: \"isUnique\",\n mensagem: Regra.mensagens.isUnique,\n validar: async (value: any): Promise<boolean> => {\n return await asyncValidate(value);\n }\n }\n }\n\n static CepBR(): IRegra {\n return {\n nome: \"isCepBR\",\n mensagem: Regra.mensagens.isCepBR,\n validar: (value: any): boolean => {\n if (!value) return true;\n return /^([0-9]{2}[\\.]?[0-9]{3}[-]?[0-9]{3})$/.test(value);\n }\n }\n }\n\n static CPF(): IRegra {\n return {\n nome: \"isCPF\",\n mensagem: Regra.mensagens.isCPF,\n validar: (value: any): boolean => {\n if (!value) return true;\n let c = 0;\n let m1 = [10, 9, 8, 7, 6, 5, 4, 3, 2];\n let m2 = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2];\n let cpf = LibUtil.apenasNumeros(value);\n if (cpf.length != 11) { return false; }\n let temp = cpf.slice(0, 9);\n for (let i = 0; i < 9; i++) { c += Number(temp.charAt(i)) * m1[i]; }\n let r = c % 11;\n (r < 2) ? r = 0 : r = 11 - r;\n temp += r.toString();\n c = 0;\n for (let i = 0; i < 10; i++) { c += Number(temp.charAt(i)) * m2[i]; }\n r = c % 11;\n (r < 2) ? r = 0 : r = 11 - r;\n return cpf.charAt(10) == r.toString();\n }\n }\n }\n\n static CNPJ(): IRegra {\n return {\n nome: \"isCNPJ\",\n mensagem: Regra.mensagens.isCNPJ,\n validar: (value: any): boolean => {\n if (!value) return true;\n let digitCnpj = (cnpj: string) => {\n let m1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n let m2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\n if (!cnpj) { return false; }\n cnpj = LibUtil.apenasNumeros(cnpj);\n if (cnpj.length != 14) { return false; }\n let temp = cnpj.slice(0, 12);\n let c = 0;\n for (let i = 0; i < 12; i++) { c += Number(temp.charAt(i)) * m1[i]; }\n let r = (c % 11);\n (r < 2) ? r = 0 : r = 11 - r;\n temp += r.toString();\n c = 0;\n for (let i = 0; i < 13; i++) { c += Number(temp.charAt(i)) * m2[i]; }\n r = (c % 11);\n (r < 2) ? r = 0 : r = 11 - r;\n return cnpj.charAt(13) == r.toString();\n }\n return digitCnpj(value);\n }\n }\n }\n\n static ClickRequired(): IRegra {\n return {\n nome: \"clickRequired\",\n mensagem: Regra.mensagens.clickRequired,\n validar: (value: any): boolean => {\n return value === true;\n }\n }\n }\n\n static Obrigatorio(): IRegra {\n return {\n nome: \"obrigatorio\",\n mensagem: Regra.mensagens.obrigatorio,\n validar: (value: any): boolean => {\n if (value === null || value === undefined) return false;\n if (typeof value === 'string' && value.trim() === '') return false;\n if (Array.isArray(value) && value.length === 0) return false;\n return true;\n }\n }\n }\n\n static mensagens = {\n obrigatorio: \"Campo Obrigatório.\",\n apenasNumeros: \"Apenas Números.\",\n apenasLista: \"O valor deve ser uma lista.\",\n apenasListaDeObjetos: \"O valor deve ser uma lista de objetos.\",\n apenasEntre: (min: number, max: number) => `O valor deve estar entre ${min} e ${max}.`,\n temSizeMin: \"Tamanho Mínimo.\",\n temSizeMax: \"Tamanho Excedido.\",\n temApenasNumeros: \"Apenas Números.\",\n temApenasLetras: \"Apenas Letras.\",\n temApenasNumerosELetras: \"Apenas Números e Letras.\",\n temMaiuscula: \"Faltou maiúscula.\",\n temMinuscula: \"Faltou minúscula.\",\n temNumero: \"Faltou numero.\",\n temEspecial: \"Faltou caracter Especial.\",\n isEmail: \"Email inválido.\",\n isSame: \"Valores diferentes.\",\n senhaForte: \"Senha Fraca.\",\n isUnique: \"Já está em uso.\",\n isCepBR: \"CEP inválido no Brasil.\",\n isCPF: \"CPF inválido.\",\n isCNPJ: \"CNPJ inválido.\",\n clickRequired: \"Clique Necessário.\",\n }\n\n\n}\n","import { Component, computed, effect, input, model, OnInit, output, signal } from '@angular/core';\nimport { Formulario, IFaseCamposAgrupados, IFases, IFieldComponent, IFields } from '../../Formulario/Formulario';\nimport { LOG } from '../../../util/log';\n\ninterface IFaseCampoGrupo {\n tipo: 'campo' | 'grupo',\n faseIndex: number,\n nome?: string,\n campo?: IFieldComponent<any>,\n grupo?: IFaseCamposAgrupados<any>,\n}\n\n@Component({\n selector: 'fields-base-fields-values',\n template: '',\n})\nexport abstract class BaseFieldsValues<T> implements OnInit {\n\n abstract onSave(): Promise<any>;\n\n form!: Formulario;\n\n values = model<Partial<T>>();\n campos = input.required<IFields<T>>();\n fases = input<IFases<T>>();\n\n gmin = input<string | undefined>();\n gmax = input<string | undefined>();\n showFormControls = input<boolean>(false);\n camposNaoEncontrados = new Set<string>();\n gruposNaoEncontrados = new Set<string>();\n\n formulario = output<Formulario>();\n\n isFaseado = computed(() => {\n let fases = this.fases()?.fases;\n return fases !== undefined && fases.length > 0;\n });\n isDisabledAction = signal<boolean>(true);\n isLoadingActive = signal<boolean>(false);\n faseIndex = signal<number>(0);\n\n listaFase = computed(() => {\n return this.fases()?.fases ?? [];\n });\n faseGrupo = computed<IFaseCampoGrupo[]>(() => {\n let listaFase = this.listaFase();\n if (!listaFase || listaFase.length === 0) {\n return [];\n }\n let resultado: IFaseCampoGrupo[] = [];\n for (let i = 0; i < listaFase.length; i++) {\n for (let campoOrGrupo of listaFase[i].campos) {\n if (typeof campoOrGrupo === 'string') {\n let campo = this.form.campos()[campoOrGrupo];\n if (!campo) {\n this.camposNaoEncontrados.add(campoOrGrupo);\n }\n resultado = [...resultado, { tipo: 'campo', nome: campoOrGrupo, campo: campo, grupo: undefined, faseIndex: i }];\n } else {\n if (campoOrGrupo.area === undefined) {\n // Para cada campo deste grupo encontrado em this.form.campos(), deve retornar a area de algum dos campos ou undefined\n let areaEncontrada = undefined;\n for (let campoNome of campoOrGrupo.campos) {\n let campo = this.form.campos()[campoNome];\n if (campo && campo.area) {\n areaEncontrada = campo.area;\n break;\n }\n }\n campoOrGrupo.area = areaEncontrada;\n }\n if (!campoOrGrupo) {\n this.gruposNaoEncontrados.add(campoOrGrupo);\n }\n resultado = [...resultado, { tipo: 'grupo', campo: undefined, grupo: campoOrGrupo, faseIndex: i }];\n }\n }\n }\n return resultado;\n });\n\n constructor() {\n effect(() => {\n let faseIndex = this.faseIndex();\n this.updateDisabledAction();\n });\n }\n ngOnInit(): void {\n this.form = new Formulario(this.campos(), this.values(), this);\n this.formulario.emit(this.form);\n\n // Verifica campos e grupos não encontrados após um pequeno delay para garantir que todos os cálculos foram feitos\n setTimeout(() => {\n if (this.camposNaoEncontrados.size > 0) LOG(1, \"❌ Campos não encontrados nas fases:\", Array.from(this.camposNaoEncontrados));\n if (this.gruposNaoEncontrados.size > 0) LOG(1, \"❌ Grupos não encontrados nas fases:\", Array.from(this.gruposNaoEncontrados));\n }, 1)\n }\n\n updateDisabledAction(forcedDisabled: boolean = false) {\n if (forcedDisabled) return this.isDisabledAction.set(true);\n\n let isFaseado = this.isFaseado();\n if (!isFaseado) return this.isDisabledAction.set(false);\n\n let isLinear = this.fases()?.isLinear ?? false;\n if (!isLinear) return this.isDisabledAction.set(false);\n\n let isUltimaFase = this.faseIndex() >= (this.listaFase().length - 1);\n this.isDisabledAction.set(!isUltimaFase);\n }\n}\n","import { Component, computed, HostBinding, input, OnDestroy, OnInit, output, Signal } from '@angular/core';\nimport { LibUtil } from '../../../util/util';\nimport { LOG } from '../../../util/log';\nimport { Formulario, IFieldComponent, IFields, Regra } from '../../Formulario/Formulario';\n\n@Component({ selector: 'app-BaseFieldsForm', template: '' })\nexport class BaseFieldsForm implements OnInit, OnDestroy {\n\n readonly form = input.required<Formulario>()\n readonly name = input.required<keyof IFields<any>>();\n change = output<string>();\n\n readonly value = computed(() => this.form().values()[this.name()]);\n readonly campo: Signal<IFieldComponent<any> | undefined> = computed(() => this.form().campos()[this.name()]);\n\n ngOnInit(): void {\n this.form().registredFields.update(old => ({ ...old, [this.name()]: this }));\n }\n ngOnDestroy(): void {\n this.form().registredFields.update(old => {\n const updated = { ...old };\n delete updated[this.name()];\n return updated;\n });\n }\n\n updateCampo(newCampoData: Partial<IFieldComponent<any>>) {\n this.form().updateCampo(this.name(), newCampoData);\n }\n\n updateValue(newValue: any, touch: boolean = true) {\n if (touch) this.tocarCampo();\n this.form().updateValues({ [this.name()]: newValue })\n }\n\n tocarCampo() {\n this.updateCampo({ touched: true });\n }\n\n onClickLabel() {\n LOG(2, \"Valor:\", this.value());\n LOG(2, \"Campo: \", this.campo());\n LOG(2, \"ClassOf: \", LibUtil.classof(this.value()));\n LOG(2, \"Opcoes: \", this.campo()?.options?.());\n }\n\n @HostBinding('style.grid-area')\n get gridArea() {\n return this.campo()?.area ?? 'auto';\n }\n\n onClickEmit() {\n this.campo()?.onClick?.(this.form());\n }\n\n // Executa o onChange com delay para utilizar o valor após ter executado o effect do empty.\n async onChangeEmit() {\n setTimeout(async () => {\n await this.executarValidacoes();\n this.campo()?.onChange?.(this.form());\n this.change.emit(this.value());\n }, 1)\n }\n\n async executarValidacoes() {\n // Padrão para todos os campos\n this.validarRequired();\n // Validações específicas\n await this.validarRegrasDoCampo();\n\n }\n\n validarRequired() {\n let isEmpty = this.campo()?.empty;\n if (this.campo()?.need && isEmpty) {\n LOG(1, `Campo '${this.name()}' é obrigatório e está vazio.`, this.campo());\n this.adicionaErro(Regra.mensagens.obrigatorio);\n } else {\n this.removerErro(Regra.mensagens.obrigatorio);\n }\n }\n\n async validarRegrasDoCampo() {\n let regrasDefinidas = this.campo()?.regras ?? [];\n if (!regrasDefinidas.length) return;\n for (const regra of regrasDefinidas) {\n if (regra) {\n let isValid = await regra.validar(this.value());\n if (!isValid) {\n this.adicionaErro(regra.mensagem);\n } else {\n this.removerErro(regra.mensagem);\n }\n } else {\n console.warn(`Regra de validação não encontrada para o campo \"${this.name()}\".`);\n }\n }\n }\n\n adicionaErro(erroNovo: string) {\n let errosAtuais = this.campo()?.errors ?? [];\n if (!errosAtuais.includes(erroNovo)) {\n this.updateCampo({ errors: [...errosAtuais, erroNovo] });\n }\n }\n\n removerErro(erroRemover: string) {\n let errosAtuais = this.campo()?.errors ?? [];\n if (errosAtuais.includes(erroRemover)) {\n this.updateCampo({ errors: errosAtuais.filter(e => e !== erroRemover) });\n }\n }\n\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\ninterface IconDef { box: string; paths: string[]; fillRule?: string }\n\nconst R: Record<string, IconDef> = {\n // ── Navigation ─────────────────────────────────────────────────────────\n 'arrow-left': { box: '0 0 16 16', paths: ['M15 8a.5.5 0 0 0-.5-.5H2.707l3.147-3.146a.5.5 0 1 0-.708-.708l-4 4a.5.5 0 0 0 0 .708l4 4a.5.5 0 0 0 .708-.708L2.707 8.5H14.5A.5.5 0 0 0 15 8'] },\n 'arrow-right': { box: '0 0 16 16', paths: ['M1 8a.5.5 0 0 1 .5-.5h11.793l-3.147-3.146a.5.5 0 0 1 .708-.708l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 0 1-.708-.708L13.293 8.5H1.5A.5.5 0 0 1 1 8'] },\n 'chevron-down': { box: '0 0 16 16', paths: ['M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'] },\n 'chevron-right': { box: '0 0 16 16', paths: ['M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'] },\n 'chevron-left': { box: '0 0 16 16', paths: ['M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'] },\n 'chevron-double-left': { box: '0 0 16 16', paths: ['M8.354 1.646a.5.5 0 0 1 0 .708L2.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0', 'M12.354 1.646a.5.5 0 0 1 0 .708L6.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'] },\n 'chevron-double-right': { box: '0 0 16 16', paths: ['M3.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L9.293 8 3.646 2.354a.5.5 0 0 1 0-.708', 'M7.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L13.293 8 7.646 2.354a.5.5 0 0 1 0-.708'] },\n // ── Caret / sort ───────────────────────────────────────────────────────\n 'caret-down': { box: '0 0 16 16', paths: ['M3.204 5h9.592L8 10.481zm-.753.659 4.796 5.48a1 1 0 0 0 1.506 0l4.796-5.48c.566-.647.106-1.659-.753-1.659H3.204a1 1 0 0 0-.753 1.659'] },\n 'caret-down-fill': { box: '0 0 16 16', paths: ['M7.247 11.14 2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z'] },\n 'sort-up': { box: '0 0 16 16', paths: ['M7.247 4.86l-4.796 5.481c-.566.647-.106 1.659.753 1.659h9.592a1 1 0 0 0 .753-1.659l-4.796-5.48a1 1 0 0 0-1.506 0z'] },\n 'sort-down': { box: '0 0 16 16', paths: ['M7.247 11.14 2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z'] },\n // ── Close / X ──────────────────────────────────────────────────────────\n 'x': { box: '0 0 16 16', paths: ['M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708'] },\n 'x-lg': { box: '0 0 16 16', paths: ['M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8z'] },\n // ── Check ──────────────────────────────────────────────────────────────\n 'check': { box: '0 0 16 16', paths: ['M10.97 4.97a.75.75 0 0 1 1.07 1.05l-3.99 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425z'] },\n 'check2-all': { box: '0 0 16 16', paths: ['M1.646 11.354a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0m3-3a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0m.5 6a.5.5 0 0 1-.708 0l-2.5-2.5a.5.5 0 0 1 .708-.708L5 13.293l9.646-9.647a.5.5 0 0 1 .708.708z'] },\n 'check2-square': { box: '0 0 16 16', paths: ['M3 14.5A1.5 1.5 0 0 1 1.5 13V3A1.5 1.5 0 0 1 3 1.5h8a.5.5 0 0 1 0 1H3a.5.5 0 0 0-.5.5v10a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5V8a.5.5 0 0 1 1 0v5a1.5 1.5 0 0 1-1.5 1.5zm9.354-10.354a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708L5 10.793l6.646-6.647a.5.5 0 0 1 .708 0'] },\n 'square': { box: '0 0 16 16', paths: ['M14 1a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zM2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2z'] },\n 'check-double': { box: '0 0 16 16', paths: ['M8.97 4.97a.75.75 0 0 1 1.07 1.05l-3.99 4.99a.75.75 0 0 1-1.08.02L2.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093L8.95 4.992zm-.92 5.14.92.92a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 1 0-1.091-1.028L9.477 9.417l-.485-.486z'] },\n 'circle': { box: '0 0 16 16', paths: ['M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16'] },\n // ── Toast alerts ───────────────────────────────────────────────────────\n 'check-circle': { box: '0 0 16 16', paths: ['M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z'] },\n 'x-circle': { box: '0 0 16 16', paths: ['M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0M5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.646a.5.5 0 0 0 .708.708L8 8.707l2.646 2.647a.5.5 0 0 0 .708-.708L8.707 8l2.647-2.646a.5.5 0 0 0-.708-.708L8 7.293z'] },\n 'exclamation-triangle': { box: '0 0 16 16', paths: ['M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5m.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2'] },\n 'info-circle': { box: '0 0 16 16', paths: ['M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2'] },\n // ── Search / filter ────────────────────────────────────────────────────\n 'search': { box: '0 0 16 16', paths: ['M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001q.044.06.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1 1 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0'] },\n 'funnel': { box: '0 0 16 16', paths: ['M1.5 1.5A.5.5 0 0 1 2 1h12a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.128.334L10 8.692V13.5a.5.5 0 0 1-.342.474l-3 1A.5.5 0 0 1 6 14.5V8.692L1.628 3.834A.5.5 0 0 1 1.5 3.5zm1 .5v1.308l4.372 4.858A.5.5 0 0 1 7 8.5v5.306l2-.666V8.5a.5.5 0 0 1 .128-.334L13.5 3.308V2z'] },\n // ── Menu ───────────────────────────────────────────────────────────────\n 'three-dots-vertical': { box: '0 0 16 16', paths: ['M9.5 13a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0'] },\n 'dot': { box: '0 0 16 16', paths: ['M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3'] },\n // ── Star / decorative ──────────────────────────────────────────────────\n 'star-fill': { box: '0 0 16 16', paths: ['M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z'] },\n 'cursor-fill': { box: '0 0 16 16', paths: ['M14.082 2.182a.5.5 0 0 1 .103.557L8.528 15.467a.5.5 0 0 1-.917-.007L5.57 10.694.803 8.652a.5.5 0 0 1-.006-.916l12.728-5.657a.5.5 0 0 1 .556.103z'] },\n // ── Files ──────────────────────────────────────────────────────────────\n 'file-earmark': { box: '0 0 16 16', paths: ['M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1L14 5.5zM4 1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1z'] },\n 'file-earmark-fill': { box: '0 0 16 16', paths: ['M4 0h5.293A1 1 0 0 1 10 .293L13.707 4a1 1 0 0 1 .293.707V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2m5.5 1.5v2a1 1 0 0 0 1 1h2z'] },\n 'file-exclamation': { box: '0 0 16 16', paths: ['M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1L14 5.5zM4 1a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1zm4 5.5a.5.5 0 0 1 .5.5v3a.5.5 0 0 1-1 0V7a.5.5 0 0 1 .5-.5m0 5.5a.5.5 0 1 1 0-1 .5.5 0 0 1 0 1'] },\n // ── Cloud / upload ─────────────────────────────────────────────────────\n 'cloud-upload': { box: '0 0 16 16', paths: ['M4.406 1.342A5.53 5.53 0 0 1 8 0c2.69 0 4.923 2 5.166 4.579C14.758 4.804 16 6.137 16 7.773 16 9.569 14.502 11 12.687 11H10a.5.5 0 0 1 0-1h2.688C13.979 10 15 8.988 15 7.773c0-1.216-1.02-2.228-2.313-2.228h-.5v-.5C12.188 2.825 10.328 1 8 1a4.53 4.53 0 0 0-2.941 1.1c-.757.652-1.153 1.438-1.153 2.055v.448l-.445.049C2.064 4.805 1 5.952 1 7.318 1 8.785 2.23 10 3.781 10H6a.5.5 0 0 1 0 1H3.781C1.708 11 0 9.366 0 7.318c0-1.763 1.266-3.223 2.942-3.593.143-.863.698-1.723 1.464-2.383', 'M7.646 4.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 5.707V14.5a.5.5 0 0 1-1 0V5.707L5.354 7.854a.5.5 0 1 1-.708-.708z'] },\n // ── Database ───────────────────────────────────────────────────────────\n 'database-check': { box: '0 0 16 16', paths: ['M12.5 16a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7m1.679-4.493-1.335 2.226a.75.75 0 0 1-1.174.144l-.774-.773a.5.5 0 0 1 .708-.708l.547.548 1.17-1.951a.5.5 0 1 1 .858.514', 'M12.096 6.223A5 5 0 0 0 13 6c.5 0 .999.05 1.479.145v-1.29L13 5.5V4l1.479.677A4.97 4.97 0 0 0 16 4V1a1 1 0 0 0-.548-.9l-5-2.5a1 1 0 0 0-.904 0l-5 2.5A1 1 0 0 0 4 1v3a4.97 4.97 0 0 0 2.521.677L8 4v1.5l-1.479.677A4.97 4.97 0 0 0 4 5v1c0 .13.01.26.03.387.2.023.4.064.603.123A3 3 0 0 1 6.636 6.5c.17-.044.344-.075.523-.092A5.02 5.02 0 0 0 8 6.5c.5 0 .999-.05 1.479-.145v.007A4.02 4.02 0 0 1 12.096 6.223', 'M6.528 9.098a4.98 4.98 0 0 0-.033.666c0 .47.063.926.182 1.361A3.007 3.007 0 0 1 6 11c-.5 0-.999-.05-1.479-.145v1.29l1.479.678V14l-1.479-.677A4.97 4.97 0 0 0 2 14v-9c0 .13.01.26.03.387A4.97 4.97 0 0 0 4 6c.5 0 .999-.05 1.479-.145v1.29L4 7.5V9l1.479-.677A5.02 5.02 0 0 0 6.528 9.098'] },\n // ── Eye ────────────────────────────────────────────────────────────────\n 'eye': { box: '0 0 16 16', paths: ['M10.5 8a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0', 'M0 8s3-5.5 8-5.5S16 8 16 8s-3 5.5-8 5.5S0 8 0 8m8 3.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7'] },\n 'eye-slash': { box: '0 0 16 16', paths: ['M13.359 11.238C15.06 9.72 16 8 16 8s-3-5.5-8-5.5a7 7 0 0 0-2.79.588l.77.771A6 6 0 0 1 8 3.5c2.12 0 3.879 1.168 5.168 2.457A13 13 0 0 1 14.828 8q-.086.13-.195.288c-.335.48-.83 1.12-1.465 1.755q-.247.248-.517.486z', 'M11.297 9.176a3.5 3.5 0 0 0-4.474-4.474l.823.823a2.5 2.5 0 0 1 2.829 2.829zm-2.943 1.299.822.822a3.5 3.5 0 0 1-4.474-4.474l.823.823a2.5 2.5 0 0 0 2.829 2.829', 'M3.35 5.47q-.27.24-.518.487A13 13 0 0 0 1.172 8l.195.288c.335.48.83 1.12 1.465 1.755C4.121 11.332 5.881 12.5 8 12.5c.716 0 1.39-.133 2.02-.36l.77.772A7 7 0 0 1 8 13.5C3 13.5 0 8 0 8s.939-1.721 2.641-3.238l.708.709zm10.296 8.884-12-12 .708-.708 12 12z'] },\n // ── Person / user ──────────────────────────────────────────────────────\n 'person-lock': { box: '0 0 16 16', paths: ['M11 5a3 3 0 1 1-6 0 3 3 0 0 1 6 0M8 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4m0 5.996V14H3s-1 0-1-1 1-4 6-4c.564 0 1.077.038 1.544.107a4.5 4.5 0 0 0-.803.918A11 11 0 0 0 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664zM9 13a1 1 0 0 1 1-1v-1a2 2 0 1 1 4 0v1a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-4a1 1 0 0 1-1-1zm3-3a1 1 0 0 0-1 1v1h2v-1a1 1 0 0 0-1-1'] },\n 'handshake': { box: '0 0 16 16', paths: ['M5 8a1 1 0 1 0 0-2 1 1 0 0 0 0 2', 'm3.75 0 .313.156A11.9 11.9 0 0 0 5 3.88V7.5h.5A1.5 1.5 0 0 1 7 9v.5h1.094l1.416-2.83a1 1 0 0 1 1.79.894l-1.94 3.88A3 3 0 0 1 6.683 13H5a3 3 0 0 1-3-3V7.5h-.5A1.5 1.5 0 0 1 0 6V1.5A1.5 1.5 0 0 1 1.5 0h1.88zM1.5 1a.5.5 0 0 0-.5.5V6a.5.5 0 0 0 .5.5H3V1.5H2a1 1 0 0 0-.5-.5zM4 1.5H3V6.5h.5v.5A.5.5 0 0 0 4 7.5H5.5A.5.5 0 0 0 6 7V3.88A10.9 10.9 0 0 1 4.813.94L4 1.5z', 'M12.5 16h2.25A1.25 1.25 0 0 0 16 14.75V7.5h-.5A1.5 1.5 0 0 0 14 9v.5h-1.094l-1.416-2.83a1 1 0 0 0-1.79.894l1.94 3.88A3 3 0 0 0 13.317 13H15a3 3 0 0 0 0-6h-1.25A1.25 1.25 0 0 0 12.5 8.25v.75h1v-.75a.25.25 0 0 1 .25-.25H15a2 2 0 1 1 0 4H13.317a2 2 0 0 1-1.789-1.106l-1.94-3.88a.002.002 0 0 0-.002-.001'] },\n 'handshake-slash': { box: '0 0 16 16', paths: ['M6.964 4.162A2.057 2.057 0 0 0 5.986 4H4V1.5a.5.5 0 0 0-.5-.5h-1A1.5 1.5 0 0 0 1 2.5v4A1.5 1.5 0 0 0 2.5 8H3v1.338c-.396.101-.727.32-.957.605L.854.146.146.854l15 15 .708-.708-3.28-3.28.022-.044 1.394-2.787a1 1 0 0 0-1.79-.894L10.784 11H9.5v-.5a1.5 1.5 0 0 0-1.5-1.5H7.5V7.88A11.94 11.94 0 0 0 8.687.94L8 1.5H6.964v2.662z', 'M4 7V4.5H3V7h1zm8-5.5h-1A1.5 1.5 0 0 0 9.5 3v4H9V3.88a11.94 11.94 0 0 1 1.687 7.78L5.5 6.539V7.5a1.5 1.5 0 0 0 1.5 1.5H8v.5a1.5 1.5 0 0 0 1.5 1.5H10v2a1.5 1.5 0 0 0 1.5 1.5h2A1.5 1.5 0 0 0 15 13.5v-10A1.5 1.5 0 0 0 13.5 2z'] },\n // ── Clock ──────────────────────────────────────────────────────────────\n 'clock': { box: '0 0 16 16', paths: ['M8 3.5a.5.5 0 0 0-1 0V9a.5.5 0 0 0 .252.434l3.5 2a.5.5 0 0 0 .496-.868L8 8.71z', 'M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16m7-8A7 7 0 1 1 1 8a7 7 0 0 1 14 0'] },\n 'clock-rotate': { box: '0 0 16 16', paths: ['M8 3a5 5 0 1 1-4.546 2.914.5.5 0 0 0-.908-.417A6 6 0 1 0 8 2z', 'M8 4.466V.534a.25.25 0 0 0-.41-.192L5.23 2.308a.25.25 0 0 0 0 .384l2.36 1.966A.25.25 0 0 0 8 4.466'] },\n // ── Actions ────────────────────────────────────────────────────────────\n 'copy': { box: '0 0 16 16', paths: ['M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1z', 'M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5zm-3-1A1.5 1.5 0 0 0 5 1.5h-.5A1.5 1.5 0 0 0 3 3v.5a.5.5 0 0 0 .5.5h9a.5.5 0 0 0 .5-.5V3a1.5 1.5 0 0 0-1.5-1.5H11A1.5 1.5 0 0 0 9.5 0z'] },\n 'eraser': { box: '0 0 16 16', paths: ['M8.086 2.207a2 2 0 0 1 2.828 0l3.879 3.879a2 2 0 0 1 0 2.828l-5.5 5.5A2 2 0 0 1 7.879 15H5.12a2 2 0 0 1-1.414-.586l-2.5-2.5a2 2 0 0 1 0-2.828zm2.121.707a1 1 0 0 0-1.414 0L4.16 7.547l5.293 5.293 4.633-4.633a1 1 0 0 0 0-1.414zM8.746 13.547 3.453 8.254 1.914 9.793a1 1 0 0 0 0 1.414l2.5 2.5a1 1 0 0 0 .707.293H7.88a1 1 0 0 0 .707-.293z'] },\n 'trash': { box: '0 0 16 16', paths: ['M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0z', 'M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1zM4.118 4 4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4zM2.5 3h11V2h-11z'] },\n 'plus-circle': { box: '0 0 16 16', paths: ['M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16', 'M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4'] },\n 'power': { box: '0 0 16 16', paths: ['M7.5 1v7h1V1z', 'M3 8.812a5 5 0 0 1 2.578-4.375l-.485-.874A6 6 0 1 0 11 3.616l-.501.865A5 5 0 1 1 3 8.812'] },\n 'broom': { box: '0 0 16 16', paths: ['M1.293 12.707a1 1 0 0 0 1.414 0L7 8.414l.707.707-4.293 4.293a1 1 0 0 1-1.414-1.414L5 8.293l.707.707L2.414 12H1.293z', 'M13 2a1 1 0 0 0-1.414 0L7 6.586l.707.707L12.293 2.7A1 1 0 0 0 13 2M5.707 7.707l4.586-4.586a2 2 0 0 1 2.828 0 2 2 0 0 1 0 2.828L8.535 10.535a2 2 0 0 1-2.47.245L5.707 9.414a2 2 0 0 1 0-2.828z'] },\n 'send': { box: '0 0 16 16', paths: ['M15.854.146a.5.5 0 0 1 .11.54l-5.819 14.547a.75.75 0 0 1-1.329.124l-3.178-4.995L.643 7.184a.75.75 0 0 1 .124-1.33L15.314.037a.5.5 0 0 1 .54.11ZM6.832 11.15 9.245 15l5.019-12.545zm2.933-4.757L15.07 1.188 2.52 6.208z'] },\n 'send-check': { box: '0 0 16 16', paths: ['M15.964.686a.5.5 0 0 0-.65-.65L.767 5.855H.766l-.452.18a.5.5 0 0 0-.082.887l.41.26.001.002 4.995 3.178 1.59 2.498C8 14 8 13 8 12.5a4.5 4.5 0 0 1 5.026-4.47zm-1.833 1.89L6.637 10.07l-.215-.338a.5.5 0 0 0-.154-.154l-.338-.215 7.976-7.979-.073.23z', 'M16 12.5a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0m-1.993-1.679a.5.5 0 0 0-.686.172l-1.17 1.95-.547-.547a.5.5 0 0 0-.708.708l.774.773a.75.75 0 0 0 1.174-.144l1.335-2.226a.5.5 0 0 0-.172-.686'] },\n 'skip-backward': { box: '0 0 16 16', paths: ['M.5 3.5A.5.5 0 0 1 1 4v3.248l6.267-3.636c.52-.302 1.233.043 1.233.696v2.94l6.267-3.636c.52-.302 1.233.043 1.233.696v7.384c0 .653-.713.998-1.233.696L8.5 8.752v2.94c0 .653-.713.998-1.233.696L1 8.752V12a.5.5 0 0 1-1 0V4a.5.5 0 0 1 .5-.5m7 1.133L1.696 8 7.5 11.367zm7.5 0L9.196 8 15 11.367z'] },\n 'inbox': { box: '0 0 16 16', paths: ['M4.98 4h6.04c.434 0 .787.345.787.77v.39H4.193V4.77c0-.425.353-.77.786-.77m-2.787.77V14c0 .554.446 1 .996 1h9.622a1 1 0 0 0 .996-1V4.77A1.769 1.769 0 0 0 11.02 3H4.98A1.769 1.769 0 0 0 2.193 4.77m.5.73h10.615v3H10.5a.5.5 0 0 0-.5.5 2 2 0 0 1-4 0 .5.5 0 0 0-.5-.5H2.693z'] },\n 'flag': { box: '0 0 16 16', paths: ['M14.778.085A.5.5 0 0 1 15 .5V8a.5.5 0 0 1-.314.464L14.5 8l.186.464-.003.001-.006.003-.023.009a12 12 0 0 1-.397.15c-.264.095-.631.223-1.047.35-.816.252-1.879.523-2.71.523-.847 0-1.548-.28-2.158-.525l-.028-.01C7.68 8.71 7.14 8.5 6.5 8.5c-.7 0-1.638.23-2.437.477A20 20 0 0 0 3 9.342V15.5a.5.5 0 0 1-1 0V.5a.5.5 0 0 1 1 0v.282c.226-.079.496-.17.79-.26C4.606.272 5.67 0 6.5 0c.84 0 1.524.277 2.121.519l.043.018C9.286.788 9.828 1 10.5 1c.7 0 1.638-.23 2.437-.477a20 20 0 0 0 1.349-.476l.019-.007.004-.002h.001'] },\n // ── Grid layout ────────────────────────────────────────────────────────\n 'arrows-collapse': { box: '0 0 16 16', paths: ['M1 8a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13A.5.5 0 0 1 1 8m7-8a.5.5 0 0 1 .5.5v3.793l1.146-1.147a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 1 1 .708-.708L7.5 4.293V.5A.5.5 0 0 1 8 0m-.5 16a.5.5 0 0 0 .5-.5v-3.793l1.146 1.147a.5.5 0 0 0 .708-.708l-2-2a.5.5 0 0 0-.708 0l-2 2a.5.5 0 0 0 .708.708L7.5 11.707V15.5a.5.5 0 0 0-.5.5'] },\n 'arrows-expand': { box: '0 0 16 16', paths: ['M1 8a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 0 1h-13A.5.5 0 0 1 1 8M7.646.146a.5.5 0 0 1 .708 0l2 2a.5.5 0 0 1-.708.708L8.5 1.707V5.5a.5.5 0 0 1-1 0V1.707L6.354 2.854a.5.5 0 1 1-.708-.708zM7 9.5a.5.5 0 0 1 1 0v3.793l1.146-1.147a.5.5 0 0 1 .708.708l-2 2a.5.5 0 0 1-.708 0l-2-2a.5.5 0 0 1 .708-.708L7 13.293z'] },\n 'grid-3x3': { box: '0 0 16 16', paths: ['M0 1.5A1.5 1.5 0 0 1 1.5 0h13A1.5 1.5 0 0 1 16 1.5v13a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 14.5zM1.5 1a.5.5 0 0 0-.5.5V5h4V1zM5 6H1v4h4zm1 4h4V6H6zm-1 1H1v3.5a.5.5 0 0 0 .5.5H5zm1 0v4h3v-4zm4 0v4h2.5a.5.5 0 0 0 .5-.5V11zm0-1h4V6h-4zm0-5h4V1.5a.5.5 0 0 0-.5-.5H10zm-1 0V1H6v4z'] },\n 'layout-sidebar': { box: '0 0 16 16', paths: ['M0 3a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2zm5-1v12h9a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1zM4 2H2a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h2z'] },\n 'arrows-to-circle': { box: '0 0 16 16', paths: ['M8 3a5 5 0 1 0 0 10A5 5 0 0 0 8 3M2 8a6 6 0 1 1 12 0A6 6 0 0 1 2 8', 'M5.854 10.854a.5.5 0 0 1-.707-.707l1.5-1.5A.5.5 0 0 1 7 8.5h.5V8a.5.5 0 0 1 .146-.354l1.5-1.5a.5.5 0 0 1 .708.708L8.5 8.207V8.5a.5.5 0 0 1-.5.5h-.293z'] },\n // ── Object group/ungroup ───────────────────────────────────────────────\n 'object-group': { box: '0 0 16 16', paths: ['M7.25 0a.75.75 0 0 0 0 1.5h.5V3H3A2 2 0 0 0 1 5v.5H.25a.75.75 0 0 0 0 1.5H1v3H.25a.75.75 0 0 0 0 1.5H1V12a2 2 0 0 0 2 2h4.75v.5a.75.75 0 0 0 1.5 0V14H13a2 2 0 0 0 2-2v-.5h.75a.75.75 0 0 0 0-1.5H15V7h.75a.75.75 0 0 0 0-1.5H15V5a2 2 0 0 0-2-2H8.75V1.5h.5a.75.75 0 0 0 0-1.5zM2.5 5A.5.5 0 0 1 3 4.5h10a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-.5.5H3a.5.5 0 0 1-.5-.5z'] },\n 'object-ungroup': { box: '0 0 16 16', paths: ['M0 2a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v2h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-2H2a2 2 0 0 1-2-2zm5 10v2a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-2v5a2 2 0 0 1-2 2zM1 2v8a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V2a1 1 0 0 0-1-1H2a1 1 0 0 0-1 1'] },\n // ── Form / UI checks ───────────────────────────────────────────────────\n 'ui-checks': { box: '0 0 16 16', paths: ['M7 2.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zm0 5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zm0 5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5zM1.496 5a.5.5 0 0 1 .496-.5l1.5.001a.5.5 0 0 1 .353.854L2.5 6.2l-.353-.354a.5.5 0 0 1 0-.707zM2 2.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm0 5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5zm0 5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5z'] },\n 'list-check': { box: '0 0 16 16', paths: ['M5 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5M3.854 2.146a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0l-.5-.5a.5.5 0 1 1 .708-.708L2 3.293l1.146-1.147a.5.5 0 0 1 .708 0m0 4a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0l-.5-.5a.5.5 0 1 1 .708-.708L2 7.293l1.146-1.147a.5.5 0 0 1 .708 0m0 4a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0l-.5-.5a.5.5 0 0 1 .708-.708l.146.147 1.146-1.147a.5.5 0 0 1 .708 0'] },\n 'border': { box: '0 0 16 16', paths: ['M0 0h.969v.5H1v.469H.969V1H.5V.969H0zm2.844 1h1.875V0H2.844zm3.75 0h1.875V0H6.594zm3.75 0h1.875V0h-1.875zM15.5 1h-.469V.969H15V.5h-.031V0H15.5zM1 2.844v1.875H0V2.844zm14.5 0v1.875H15V2.844zM1 6.594v1.875H0V6.594zm14.5 0v1.875H15V6.594zM1 10.344v1.875H0v-1.875zm14.5 0v1.875H15v-1.875zM0 15.5v-.469h.031V15h.469v.031H1V15.5zm2.844 0v-1H4.72V15.5zm3.75 0v-1h1.875v1zm3.75 0v-1h1.875v1zM15.5 15.5H15v-.031H14.5V15h.469v-.469H15.5z', 'M14 2a1 1 0 0 1 1 1v2h-1V3H3v10h10v-2h1v2a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1z'] },\n // ── Microscope / inspect ───────────────────────────────────────────────\n 'microscope': { box: '0 0 16 16', paths: ['M8.5 11.956c2.474-.252 4.437-2.333 4.492-4.862a5.5 5.5 0 0 0-4.492 4.862M6 6.402V3.5A2.5 2.5 0 0 1 8.5 1h1a.5.5 0 0 1 0 1h-1A1.5 1.5 0 0 0 7 3.5v2.902A5.5 5.5 0 0 0 2.5 11h.5a.5.5 0 0 0 0 1H2.05a5.5 5.5 0 0 0 5.45 3h1a5.5 5.5 0 0 0 5.45-3H13.5a.5.5 0 0 0 0-1h-.5a5.5 5.5 0 0 0-5-5.491V6.5a.5.5 0 0 1-1 0v-.098zm1 1.094A4.5 4.5 0 0 1 11.5 11 4.5 4.5 0 0 1 7 7.5v-.004zm-1.5 4.5A4.5 4.5 0 0 1 3 7.5H2.5a5 5 0 1 0 10 0H12A4.5 4.5 0 0 1 7.5 12V12z'] },\n // ── Editor formatting ──────────────────────────────────────────────────\n 'align-left': { box: '0 0 16 16', paths: ['M2 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5'] },\n 'align-center': { box: '0 0 16 16', paths: ['M4 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m2-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m-2-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5'] },\n 'align-right': { box: '0 0 16 16', paths: ['M6 12.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m-4-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m4-3a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7a.5.5 0 0 1-.5-.5m-4-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5'] },\n 'align-justify': { box: '0 0 16 16', paths: ['M2 12.5a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5m0-3a.5.5 0 0 1 .5-.5h11a.5.5 0 0 1 0 1h-11a.5.5 0 0 1-.5-.5'] },\n 'bold': { box: '0 0 16 16', paths: ['M8.21 13c2.106 0 3.412-1.087 3.412-2.823 0-1.306-.984-2.283-2.324-2.386v-.055a2.176 2.176 0 0 0 1.852-2.14c0-1.51-1.162-2.46-3.014-2.46H3.843V13zM5.908 4.674h1.696c.963 0 1.517.451 1.517 1.244 0 .834-.629 1.32-1.73 1.32H5.908zm0 6.788V8.598h1.73c1.217 0 1.88.492 1.88 1.415 0 .943-.643 1.449-1.832 1.449z'] },\n 'italic': { box: '0 0 16 16', paths: ['M7.991 11.674 9.53 4.455c.123-.595.246-.71 1.347-.807l.11-.52H7.211l-.11.52c1.06.096 1.128.212 1.005.807L6.57 11.674c-.123.595-.246.71-1.346.806l-.11.52h3.774l.11-.52c-1.06-.095-1.129-.211-1.006-.806z'] },\n 'underline': { box: '0 0 16 16', paths: ['M5.313 3.136h-1.23V9a2.99 2.99 0 0 0 .141.918 3.16 3.16 0 0 0 .267.662 2.48 2.48 0 0 0 .45.576c.51.5 1.2.818 2.059.818.893 0 1.583-.319 2.081-.814.228-.22.403-.485.533-.76q.184-.408.238-.876.052-.465.053-.926V3.137h-1.23v5.336a6 6 0 0 1-.035.63c-.049.394-.165.7-.32.89-.318.386-.78.583-1.32.583-.545 0-1.004-.197-1.32-.592-.156-.19-.27-.496-.319-.89a5 5 0 0 1-.036-.63zm4.32 10.864H6.367v1h3.267z'] },\n};\n\n@Component({\n selector: 'ui-icon',\n template: `\n @if(def(); as d) {\n <svg [attr.viewBox]=\"d.box\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" focusable=\"false\">\n @for(p of d.paths; track $index) {\n <path [attr.d]=\"p\" />\n }\n </svg>\n }\n `,\n styles: [`\n :host { display: inline-flex; align-items: center; justify-content: center; }\n svg { width: 1em; height: 1em; fill: currentColor; }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UiIcon {\n name = input.required<string>();\n def = computed(() => R[this.name()] ?? null);\n}\n","import { Component, computed, effect, ElementRef, input, model, OnInit, output, signal, viewChild } from '@angular/core';\nimport { ITipoBotao, ITiposTema } from '../../interfaces/interfaces';\nimport { UiIcon } from '../ui-icon/ui-icon';\n\n@Component({\n selector: 'ui-button',\n templateUrl: './ui-button.html',\n styleUrl: './ui-button.css',\n imports: [UiIcon],\n})\nexport class UiButton {\n\n botao = viewChild('botao', { read: ElementRef });\n rippleEffect = viewChild('rippleEffect', { read: ElementRef });\n ripple = viewChild('ripple', { read: ElementRef });\n\n icone = model<string | undefined | null>(null);\n iconeNome = input<string | undefined | null>();\n iconeAntes = model<boolean>(true);\n iconeDepois = model<boolean>(false);\n iconeCategory = model<string>('');\n pathCarretDown = \"M3.204 5h9.592L8 10.481zm-.753.659 4.796 5.48a1 1 0 0 0 1.506 0l4.796-5.48c.566-.647.106-1.659-.753-1.659H3.204a1 1 0 0 0-.753 1.659\";\n\n clicked = output<PointerEvent>();\n\n disabled = input<boolean>();\n eventPropagation = input<boolean>(false);\n radiusTabFormat = input<boolean>(false);\n tabindex = input<number | string>();\n tipo = input<ITipoBotao | undefined>(\"fill\");\n tema = model<ITiposTema | undefined>(\"\");\n classes = input<string>(\"\");\n ativo = input<boolean>(false);\n\n isCategory = computed(() => this.tipo() === 'menu-item-category' || this.tipo() === 'sidebar-item-category');\n buttonClasses = computed(() => {\n return `btnr ${this.tipo() || 'fill'} ${this.classes()}`;\n });\n\n corFundo = signal<string | undefined>(undefined);\n corFrente = signal<string | undefined>(undefined);\n\n constructor() {\n effect(() => {\n let tema = this.tema();\n switch (tema) {\n case \"primary\":\n this.corFundo.set(`var(--sys-primary)`);\n this.corFrente.set(`var(--sys-on-primary)`);\n break;\n case \"secondary\":\n this.corFundo.set(`var(--sys-secondary)`);\n this.corFrente.set(`var(--sys-on-secondary)`);\n break;\n case \"high\":\n this.corFundo.set(`var(--sys-high)`);\n this.corFrente.set(`var(--sys-on-high)`);\n break;\n case \"success\":\n this.corFundo.set(`var(--sys-success)`);\n this.corFrente.set(`var(--sys-on-success)`);\n break;\n case \"warning\":\n this.corFundo.set(`var(--sys-warning)`);\n this.corFrente.set(`var(--sys-on-warning)`);\n break;\n case \"error\":\n this.corFundo.set(`var(--sys-error)`);\n this.corFrente.set(`var(--sys-on-error)`);\n break;\n case \"info\":\n this.corFundo.set(`var(--sys-info)`);\n this.corFrente.set(`var(--sys-on-info)`);\n break;\n case \"white\":\n this.corFundo.set(`var(--sys-white)`);\n this.corFrente.set(`var(--sys-on-white)`);\n break;\n case \"black\":\n this.corFundo.set(`var(--sys-black)`);\n this.corFrente.set(`var(--sys-on-black)`);\n break;\n case \"card\":\n this.corFundo.set(`var(--sys-surface)`);\n this.corFrente.set(`var(--sys-on-surface)`);\n break;\n case \"\": // Sem Tema \n default: // Tema Desconhecido\n this.corFundo.set(undefined);\n this.corFrente.set(undefined);\n break;\n }\n });\n }\n\n\n onKeyPressed(ev: Event) {\n this.onClickExpanded(ev as any);\n }\n\n onClickExpanded(ev: PointerEvent) {\n if (this.disabled()) {\n ev.preventDefault();\n if (this.eventPropagation()) {\n ev.stopPropagation();\n }\n return;\n }\n this.botao()?.nativeElement.focus();\n if (ev instanceof PointerEvent) {\n this.createRipple(ev);\n }\n this.clicked.emit(ev);\n if (this.eventPropagation()) {\n ev.stopPropagation();\n }\n }\n\n createRipple(e: PointerEvent) {\n const rippleEffect = e.currentTarget ?? this.rippleEffect()?.nativeElement;\n const ripple = this.ripple()?.nativeElement.cloneNode(true) as HTMLElement;\n const rect = rippleEffect.getBoundingClientRect();\n // Calcula a posição do clique relativa ao botão\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n // Define o tamanho do ripple (maior dimensão do botão * 2)\n const size = Math.max(rect.width, rect.height) * 2;\n ripple.style.width = ripple.style.height = size + 'px';\n ripple.style.left = (x - size / 2) + 'px';\n ripple.style.top = (y - size / 2) + 'px';\n ripple.classList.add('ripple');\n rippleEffect.appendChild(ripple);\n ripple.addEventListener('animationend', () => {\n ripple.remove();\n });\n }\n}\n","<button #botao type=\"button\" [class]=\"buttonClasses()\" [style.--btnr-corFundo]=\"corFundo()\"\n\t[style.--btnr-corFrente]=\"corFrente()\" [disabled]=\"disabled()\" [tabIndex]=\"tabindex()\"\n\t[class.radiusTabFormat]=\"radiusTabFormat()\" [class.disabled]=\"disabled()\" [class.ativo]=\"ativo()\"\n\t(keyup.Enter)=\"onKeyPressed($event)\" [class.category]=\"isCategory()\">\n\t@if((icone() || iconeNome()) && iconeAntes()){\n\t\t<div class=\"icone iconeAntes\">\n\t\t\t@if(icone()) { <i [class]=\"icone()\"></i> } @else { <ui-icon [name]=\"iconeNome()!\" /> }\n\t\t</div>\n\t}\n\t<ng-content />\n\t@if((icone() || iconeNome()) && iconeDepois()){\n\t\t<div class=\"icone iconeDepois\">\n\t\t\t@if(icone()) { <i [class]=\"icone()\"></i> } @else { <ui-icon [name]=\"iconeNome()!\" /> }\n\t\t</div>\n\t}\n\t@if(isCategory()){\n\t<div class=\"icone iconeCategory\">\n\t\t@if(iconeCategory()) {\n\t\t<i [class]=\"iconeCategory()\"></i>\n\t\t} @else {\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\"\n\t\t\tclass=\"carretDown\">\n\t\t\t<path [attr.d]=\"pathCarretDown\" />\n\t\t</svg>\n\t\t}\n\t</div>\n\t}\n\t<span #rippleEffect class=\"expandedClick\" (click)=\"onClickExpanded($event)\">\n\t\t<span #ripple class=\"ripple\"></span>\n\t</span>\n</button>","import { Component, computed, input } from '@angular/core';\nimport { LibUtil } from '../../util/util';\n\n@Component({\n selector: 'ui-chip',\n templateUrl: './ui-chip.html',\n styleUrl: './ui-chip.css',\n})\nexport class UiChip {\n\n // HSL\n cor = input<number | null | undefined>();\n\n hue = computed<number | null>(() => {\n let hue = this.cor();\n if (LibUtil.classof(hue) == 'number') {\n if (hue! < 0) { return 0; };\n if (hue! > 359) { return 359; };\n return hue!;\n }\n return null;\n });\n\n\n}\n","<span class=\"baseChip\" [style.--ChipHue]=\"hue()\" [class.noColor]=\"!cor() || hue() === 0\">\n\t<ng-content></ng-content>\n</span>","import { ChangeDetectionStrategy, Component, ElementRef, input, model, output, signal, viewChild } from '@angular/core';\nimport { IDropOutput, IDropZoneEvent, IFileMetadata } from '../../interfaces/interfaces';\nimport { LibUtil } from '../../util/util';\nimport { LOG } from '../../util/log';\n\n@Component({\n selector: 'ui-drop-zone',\n templateUrl: './ui-drop-zone.html',\n styleUrl: './ui-drop-zone.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UiDropZone {\n\n value = model<IDropOutput>();\n disabled = input<boolean>();\n sobrepor = input<boolean>();\n clicked = output<Event>();\n changed = output<IDropOutput>();\n\n rippleEffect = viewChild('rippleEffect', { read: ElementRef });\n ripple = viewChild('ripple', { read: ElementRef });\n isDragging = signal(false);\n\n async onDropZone(tipo: IDropZoneEvent, ev: Event) {\n ev.preventDefault();\n ev.stopPropagation();\n if (this.disabled()) return;\n\n let target = ((ev as Event).target as HTMLDivElement);\n if (tipo == \"dragenter\" && !this.disabled()) this.isDragging.set(true);\n if (tipo == \"dragleave\" && !this.disabled()) this.isDragging.set(false);\n if (tipo == \"click\" && target && target.classList?.contains(\"dropzone\")) {\n this.clicked.emit(ev);\n }\n }\n\n async onDrop(ev: DragEvent) {\n ev.preventDefault();\n ev.stopPropagation();\n this.isDragging.set(false);\n if (this.disabled()) return;\n\n const dataTransfer = ev.dataTransfer;\n if (!dataTransfer) {\n this.createRipple(ev as DragEvent, \"red\");\n return;\n }\n this.createRipple(ev as DragEvent);\n\n const output: IDropOutput = {\n timestamp: new Date().toISOString(),\n types: (dataTransfer.types as any),\n tipo: \"unknown\",\n };\n\n // 1. Verificar se há arquivos\n if (dataTransfer.files && dataTransfer.files.length > 0) {\n\n output.data = ([] as IFileMetadata[]);\n output.tipo = \"file\";\n\n for await (let file of dataTransfer.files) {\n let lastIndexOf = file.name.lastIndexOf(\".\");\n if (lastIndexOf < 0) {\n LOG(1, `❌ O arquivo ${file.name} está sem uma extensão.`);\n continue;\n }\n let base64: string | null = await LibUtil.fileReader(file);\n if (!base64) {\n LOG(1, `❌ Ocorreu um erro com o arquivo ${file.name}.`);\n continue;\n }\n\n (output.data as IFileMetadata[]).push({\n base64: base64,\n name: file.name,\n size: file.size,\n extension: file.name.slice(lastIndexOf), // inclui o \".\"\n type: file.type,\n lastModifiedIso: new Date(file.lastModified).toISOString(),\n });\n }\n\n }\n\n // 2. Verificar se há texto\n const text = dataTransfer.getData('text/plain');\n if (text) {\n output.data = text;\n output.tipo = \"text\";\n }\n\n // 3. Verificar se há HTML\n const html = dataTransfer.getData('text/html');\n if (html) {\n output.data = html;\n output.tipo = \"html\";\n }\n\n // 4. Verificar se há URL\n const url = dataTransfer.getData('text/uri-list');\n if (url) {\n output.data = url;\n output.tipo = \"url\";\n }\n\n // 5. Verificar se há dados JSON customizados\n try {\n const json = dataTransfer.getData('application/json');\n if (json) {\n output.data = JSON.parse(json);\n output.tipo = \"json\";\n }\n } catch (e) {\n // JSON inválido, ignorar\n }\n\n // 6. Capturar todos os outros tipos de dados disponíveis\n dataTransfer.types.forEach(type => {\n if (!['text/plain', 'text/html', 'text/uri-list', 'application/json', 'Files'].includes(type)) {\n const data = dataTransfer.getData(type);\n if (data) {\n output.data = data;\n output.tipo = \"unknown\";\n }\n }\n });\n\n this.value.set(output);\n this.changed.emit(output);\n }\n\n createRipple(ev: DragEvent, classColor: string = \"\") {\n const rippleEffect = ev.currentTarget ?? this.rippleEffect()?.nativeElement;\n const ripple = this.ripple()?.nativeElement.cloneNode(true) as HTMLElement;\n const rect = rippleEffect.getBoundingClientRect();\n // Calcula a posição do clique relativa ao botão\n const x = ev.clientX - rect.left;\n const y = ev.clientY - rect.top;\n // Define o tamanho do ripple (maior dimensão do botão * 2)\n const size = Math.max(rect.width, rect.height) * 2;\n ripple.style.width = ripple.style.height = size + 'px';\n ripple.style.left = (x - size / 2) + 'px';\n ripple.style.top = (y - size / 2) + 'px';\n ripple.classList.add('ripple');\n if (classColor) {\n ripple.classList.add(classColor);\n }\n rippleEffect.appendChild(ripple);\n ripple.addEventListener('animationend', () => {\n ripple.remove();\n });\n }\n}\n","<div #dropzonearea class=\"dropzone\" [class.naosobrepor]=\"!sobrepor()\" (dragenter)=\"onDropZone('dragenter',$event)\"\n\t(dragleave)=\"onDropZone('dragleave',$event)\" (drop)=\"onDrop($event)\" (dragover)=\"onDropZone('dragover',$event)\"\n\t(click)=\"onDropZone('click',$event)\" [class.disabled]=\"disabled()\" [class.dragging]=\"isDragging()\">\n\t<span #rippleEffect class=\"rippleArea\">\n\t\t<span #ripple class=\"ripple\"></span>\n\t</span>\n\t<ng-content>\n\t\t<span class=\"dropzone-label\">Arraste e solte aqui</span>\n\t</ng-content>\n</div>","import { Component, input, output } from '@angular/core';\nimport { UiButton } from \"../ui-button/ui-button\";\nimport { UiIcon } from '../ui-icon/ui-icon';\nimport { IFileMetadata } from '../../interfaces/interfaces';\n\n@Component({\n selector: 'ui-file-list',\n templateUrl: './ui-file-list.html',\n styleUrl: './ui-file-list.css',\n imports: [UiButton, UiIcon]\n})\nexport class UiFileList {\n\n disabled = input<boolean>();\n filesList = input<IFileMetadata[]>();\n remove = output<IFileMetadata>();\n\n onDelete(file: IFileMetadata) {\n if (this.disabled()) return;\n this.remove.emit(file);\n }\n\n}\n","<div class=\"e-filelist-area\">\n\t@for (file of filesList(); track $index) {\n\t<div class=\"e-filelist-item\">\n\t\t<div class=\"e-filelist-item-icon\">\n\t\t\t<ui-icon name=\"file-earmark-fill\"></ui-icon>\n\t\t\t<div class=\"e-filelist-item-icon-ext\">{{ file.extension.slice(1) }}</div>\n\t\t</div>\n\t\t<div class=\"e-filelist-item-text\">{{ file.name }}</div>\n\t\t<div class=\"e-filelist-action\">\n\t\t\t@if(!disabled()){\n\t\t\t<ui-button tipo=\"icon\" tema=\"error\" [disabled]=\"disabled()\" (click)=\"onDelete(file)\" iconeNome=\"x-lg\">\n\t\t\t</ui-button>\n\t\t\t}\n\t\t</div>\n\t</div>\n\t}\n</div>","import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { IFileMetadata } from '../../../interfaces/interfaces';\nimport { UiIcon } from '../../ui-icon/ui-icon';\n\n@Component({\n selector: 'ui-file-preview',\n templateUrl: './ui-file-preview.html',\n styleUrl: './ui-file-preview.css',\n imports: [UiIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UiFilePreview {\n\n arquivo = input.required<IFileMetadata>();\n removivel = input<boolean>(false);\n remover = output<IFileMetadata>();\n\n private readonly sanitizer = inject(DomSanitizer);\n\n tipoDisplay = computed(() => {\n const type = (this.arquivo().type ?? '').toLowerCase();\n const ext = (this.arquivo().extension ?? '').toLowerCase();\n if (type.includes('image/png') || ext === '.png') return 'png';\n if (type.includes('image/jpeg') || type.includes('image/jpg') || ext === '.jpg' || ext === '.jpeg') return 'jpg';\n if (type.includes('image/svg') || ext === '.svg') return 'svg';\n if (type.includes('application/pdf') || ext === '.pdf') return 'pdf';\n return 'other';\n });\n\n isImage = computed(() => {\n const d = this.tipoDisplay();\n return d === 'png' || d === 'jpg' || d === 'svg';\n });\n\n isPdf = computed(() => this.tipoDisplay() === 'pdf');\n\n // <embed src> usa SecurityContext.RESOURCE_URL — requer SafeResourceUrl explícito\n safePdfUrl = computed<SafeResourceUrl | null>(() => {\n const b64 = this.arquivo().base64;\n if (!b64) return null;\n return this.sanitizer.bypassSecurityTrustResourceUrl(b64);\n });\n\n onRemover() {\n this.remover.emit(this.arquivo());\n }\n}\n","<div class=\"preview-container\">\n\t@if (isImage()) {\n\t\t<img [src]=\"arquivo().base64\" [alt]=\"arquivo().name\" class=\"preview-img\" />\n\t} @else if (isPdf()) {\n\t\t@if (safePdfUrl()) {\n\t\t\t<embed [src]=\"safePdfUrl()\" type=\"application/pdf\" class=\"preview-embed\" />\n\t\t} @else {\n\t\t\t<div class=\"preview-other\">\n\t\t\t\t<ui-icon name=\"file-earmark\"></ui-icon>\n\t\t\t\t<span class=\"preview-ext\">pdf</span>\n\t\t\t</div>\n\t\t}\n\t} @else {\n\t\t<div class=\"preview-other\">\n\t\t\t<ui-icon name=\"file-earmark\"></ui-icon>\n\t\t\t<span class=\"preview-ext\">{{ arquivo().extension.slice(1) }}</span>\n\t\t</div>\n\t}\n\t@if (removivel()) {\n\t\t<button class=\"btn-remover\" (click)=\"onRemover()\" type=\"button\" title=\"Remover\">\n\t\t\t<ui-icon name=\"x\"></ui-icon>\n\t\t</button>\n\t}\n</div>\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { IFileMetadata } from '../../interfaces/interfaces';\nimport { UiFilePreview } from './ui-file-preview/ui-file-preview';\n\n@Component({\n selector: 'ui-micro-gallery',\n templateUrl: './ui-micro-gallery.html',\n styleUrl: './ui-micro-gallery.css',\n imports: [UiFilePreview],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UiMicroGallery {\n\n arquivos = input<IFileMetadata[]>([]);\n remover = output<IFileMetadata>();\n\n onRemover(arquivo: IFileMetadata) {\n this.remover.emit(arquivo);\n }\n}\n","<div class=\"gallery\">\n\t@for (arquivo of arquivos(); track arquivo.name) {\n\t\t<ui-file-preview [arquivo]=\"arquivo\" [removivel]=\"true\" (remover)=\"onRemover($event)\">\n\t\t</ui-file-preview>\n\t}\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, effect, ElementRef, inject, input, model, output, viewChild } from '@angular/core';\nimport { IDropOutput, IFileMetadata } from '../../interfaces/interfaces';\nimport { LibUtil } from '../../util/util';\nimport { LOG } from '../../util/log';\nimport { UiDropZone } from '../ui-drop-zone/ui-drop-zone';\nimport { UiMicroGallery } from '../ui-micro-gallery/ui-micro-gallery';\n\n@Component({\n selector: 'ui-arquivos',\n templateUrl: './ui-arquivos.html',\n styleUrl: './ui-arquivos.css',\n imports: [UiDropZone, UiMicroGallery],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UiArquivos {\n\n arquivos = model<IFileMetadata[]>([]);\n disabled = input<boolean>(false);\n accept = input<string>('');\n multiple = input<boolean>(true);\n changed = output<IFileMetadata[]>();\n\n fileInput = viewChild<ElementRef<HTMLInputElement>>('fileInput');\n\n temArquivos = computed(() => this.arquivos().length > 0);\n\n private readonly _cdr = inject(ChangeDetectorRef);\n\n constructor() {\n // Garante que o OnPush re-renderiza quando arquivos muda (ex.: input inicial do pai)\n effect(() => {\n this.arquivos();\n this._cdr.markForCheck();\n });\n }\n\n onDropChanged(dropOutput: IDropOutput) {\n if (dropOutput.tipo === 'file' && Array.isArray(dropOutput.data)) {\n this.arquivos.set(dropOutput.data as IFileMetadata[]);\n this.changed.emit(this.arquivos());\n }\n }\n\n onDropClicked() {\n this.fileInput()?.nativeElement.click();\n }\n\n async onFileInputChange(event: Event) {\n const input = event.target as HTMLInputElement;\n if (!input.files || input.files.length === 0) return;\n\n const newFiles: IFileMetadata[] = [];\n for await (const file of input.files) {\n const lastIndexOf = file.name.lastIndexOf('.');\n if (lastIndexOf < 0) {\n LOG(1, `❌ O arquivo ${file.name} está sem uma extensão.`);\n continue;\n }\n const base64 = await LibUtil.fileReader(file);\n if (!base64) {\n LOG(1, `❌ Ocorreu um erro com o arquivo ${file.name}.`);\n continue;\n }\n newFiles.push({\n base64,\n name: file.name,\n size: file.size,\n extension: file.name.slice(lastIndexOf),\n type: file.type,\n lastModifiedIso: new Date(file.lastModified).toISOString(),\n });\n }\n\n this.arquivos.set(newFiles);\n this.changed.emit(this.arquivos());\n input.value = '';\n }\n\n onRemover(arquivo: IFileMetadata) {\n this.arquivos.update(list => list.filter(a => a.name !== arquivo.name));\n this.changed.emit(this.arquivos());\n }\n}\n","<input #fileInput type=\"file\" class=\"file-input-hidden\"\n\t[accept]=\"accept()\" [multiple]=\"multiple()\" [disabled]=\"disabled()\"\n\t(change)=\"onFileInputChange($event)\" />\n\n<ui-drop-zone [sobrepor]=\"temArquivos()\" [disabled]=\"disabled()\"\n\t(changed)=\"onDropChanged($event)\" (clicked)=\"onDropClicked()\">\n\t@if (temArquivos()) {\n\t\t<ui-micro-gallery [arquivos]=\"arquivos()\" (remover)=\"onRemover($event)\">\n\t\t</ui-micro-gallery>\n\t}\n</ui-drop-zone>\n","import { ElementRef } from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef, ScrollStrategy } from '@angular/cdk/overlay';\nimport { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport interface IOverlayConnectedConfig {\n\toverlay: Overlay;\n\ttrigger: ElementRef | HTMLElement;\n\tpositions: ConnectedPosition[];\n\tscrollStrategy?: ScrollStrategy;\n\tpanelClass?: string | string[];\n\twidth?: number | string;\n\tminWidth?: number | string;\n}\n\n/**\n * Cria um OverlayRef conectado a um elemento trigger com FlexibleConnectedPositionStrategy.\n * Centraliza a configuração padrão usada pelo tooltip, select, menu e autocomplete.\n */\nexport function criarOverlayConectado(cfg: IOverlayConnectedConfig): OverlayRef {\n\tconst nativeEl = cfg.trigger instanceof ElementRef ? cfg.trigger.nativeElement : cfg.trigger;\n\n\tconst positionStrategy = cfg.overlay\n\t\t.position()\n\t\t.flexibleConnectedTo(nativeEl)\n\t\t.withPositions(cfg.positions)\n\t\t.withPush(true)\n\t\t.withFlexibleDimensions(false);\n\n\tconst config = new OverlayConfig({\n\t\tpositionStrategy,\n\t\tscrollStrategy: cfg.scrollStrategy ?? cfg.overlay.scrollStrategies.reposition(),\n\t\tpanelClass: cfg.panelClass,\n\t\twidth: cfg.width,\n\t\tminWidth: cfg.minWidth,\n\t});\n\n\treturn cfg.overlay.create(config);\n}\n","import { ConnectedPosition } from '@angular/cdk/overlay';\nimport { IPosicoesFloating } from '../../interfaces/interfaces';\n\nexport type IPosicaoOverlay = IPosicoesFloating;\n\nconst FALLBACKS: Record<IPosicaoOverlay, IPosicaoOverlay[]> = {\n\t'bottom-start': ['top-start', 'bottom-end', 'top-end'],\n\t'bottom-end': ['top-end', 'bottom-start', 'top-start'],\n\t'bottom': ['top', 'bottom-start', 'top-start'],\n\t'top-start': ['bottom-start', 'top-end', 'bottom-end'],\n\t'top-end': ['bottom-end', 'top-start', 'bottom-start'],\n\t'top': ['bottom', 'top-start', 'bottom-start'],\n\t'right-start': ['left-start', 'bottom-start', 'top-start', 'bottom-end', 'top-end'],\n\t'right-end': ['left-end', 'bottom-end', 'top-end'],\n\t'right': ['left', 'bottom', 'top'],\n\t'left-start': ['right-start', 'bottom-start', 'top-start'],\n\t'left-end': ['right-end', 'bottom-end', 'top-end'],\n\t'left': ['right', 'bottom', 'top'],\n};\n\nfunction posToConnected(pos: IPosicaoOverlay, offsetPx: number = 2): ConnectedPosition {\n\tconst [side, align] = pos.split('-') as [string, string | undefined];\n\n\tconst originY = side === 'top' ? 'top' : side === 'bottom' ? 'bottom' : align === 'end' ? 'bottom' : 'top';\n\tconst overlayY = side === 'bottom' ? 'top' : side === 'top' ? 'bottom' : align === 'end' ? 'bottom' : 'top';\n\n\tconst originX = side === 'left' ? 'start' : side === 'right' ? 'end' : align === 'end' ? 'end' : align === 'start' ? 'start' : 'center';\n\tconst overlayX = side === 'right' ? 'start' : side === 'left' ? 'end' : align === 'end' ? 'end' : align === 'start' ? 'start' : 'center';\n\n\tconst isVertical = side === 'top' || side === 'bottom';\n\tconst offsetY = isVertical ? offsetPx : 0;\n\tconst offsetX = isVertical ? 0 : offsetPx;\n\n\treturn { originX, originY, overlayX, overlayY, offsetX, offsetY } as ConnectedPosition;\n}\n\n/**\n * Converte um valor de IPosicoesFloating para um array de ConnectedPosition do CDK,\n * incluindo a posição primária e os fallbacks equivalentes ao flip() do floating-ui.\n *\n * @param pos posição solicitada (ex.: 'bottom-start')\n * @param offsetPx distância entre o trigger e o overlay (padrão: 2)\n */\nexport function toConnectedPositions(pos: IPosicaoOverlay, offsetPx: number = 2): ConnectedPosition[] {\n\tconst primary = posToConnected(pos, offsetPx);\n\tconst fallbacks = (FALLBACKS[pos] ?? []).map(fb => posToConnected(fb, offsetPx));\n\treturn [primary, ...fallbacks];\n}\n","import {\n AfterViewInit, Component, computed, ElementRef, inject, input,\n model, OnDestroy, output, signal, TemplateRef, viewChild, ViewContainerRef\n} from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Subscription } from 'rxjs';\nimport { LibUtil } from '../../util/util';\nimport { LOG } from '../../util/log';\nimport { IKV } from '../../interfaces/interfaces';\nimport { UiButton } from \"../ui-button/ui-button\";\nimport { criarOverlayConectado } from '../overlay/overlay.util';\nimport { toConnectedPositions } from '../overlay/overlay-position.util';\n\nexport interface IOptionValue {\n optionChanged?: IKV;\n keys: string | number | string[] | number[];\n values: string | number | string[] | number[];\n}\n\ninterface IKVSeletor extends IKV {\n selected: boolean;\n choosing: boolean;\n}\n\n@Component({\n selector: 'ui-select',\n templateUrl: './ui-select.html',\n styleUrl: './ui-select.css',\n host: { '[class]': 'hostClasses()' },\n imports: [UiButton],\n})\nexport class UiSelect implements OnDestroy, AfterViewInit {\n\n elementRef: ElementRef = inject(ElementRef);\n private overlay = inject(Overlay);\n private vcr = inject(ViewContainerRef);\n\n value = model<string | number | string[] | number[] | undefined>();\n options = input<IKV[] | undefined | null>();\n\n name = input<string | number | undefined>();\n placeholder = input<string>();\n disabled = input<boolean>();\n multiple = input<boolean>(false);\n canUnselect = input<boolean | undefined>(false);\n textEmpty = input<string | undefined>(\"Nada selecionado\");\n\n changed = output<IOptionValue>();\n\n isOpenedOptions = signal(false);\n markedOptionKey = signal<string | number | null | undefined>(null);\n isSmallScreen = signal(window.innerWidth < 500);\n optionMinWidth = signal<number>(0);\n textoFiltrado = signal<string>(\"\");\n\n private overlayRef: OverlayRef | null = null;\n private outsideSub: Subscription | null = null;\n\n readonly optionsTemplate = viewChild<TemplateRef<unknown>>('optionsTemplate');\n readonly displayText = viewChild<ElementRef>('displayText');\n readonly triggerElement = viewChild<ElementRef>('triggerElement');\n\n readonly optionsList = computed<IKVSeletor[]>(() => {\n const options = this.options?.() ?? [];\n if (this.multiple() !== true) {\n let valor = (this.value() as string | number | undefined);\n return options.map(op => ({\n ...op,\n selected: String(op.k) == String(valor),\n choosing: op.k == this.markedOptionKey()\n }));\n } else {\n let valor = (this.value() as string[] | number[] | undefined);\n if (!Array.isArray(valor)) {\n valor = [];\n }\n return options.map(op => ({\n ...op,\n selected: op.k != null ? valor.some(v => String(op.k) == String(v)) : false,\n choosing: op.k == this.markedOptionKey()\n }));\n }\n });\n\n readonly optionsFiltered = computed<IKVSeletor[]>(() => {\n let words = this.textoFiltrado().trim().split(\" \").filter(t => t != \"\");\n const options = (this.optionsList() || []).map(o => ({ ...o, html: o.v || `⚠️ Chave: ${o.k}` }));\n if (words.length === 0) return options;\n return options.filter(op => {\n for (const w of words) {\n let encontrado = false;\n if (op.v != null && LibUtil.contem(op.v, w)) {\n encontrado = true;\n }\n if (!encontrado) return false;\n }\n return true;\n }).map(op => {\n let data = op.v?.toString() || '';\n if (words.length > 0) {\n for (let word of words) {\n let w = word.toLowerCase();\n let preparedData = LibUtil.removeAcentos(data).toLowerCase();\n if (w != \"\" && preparedData.includes(w)) {\n if (new RegExp(`<[^>]*${w}[^>]*>`, 'i').test(preparedData.toString())) continue;\n let pos = preparedData.indexOf(w);\n data = data.slice(0, pos)\n + \"<mark>\"\n + data.slice(pos, pos + w.length)\n + \"</mark>\"\n + data.slice(pos + w.length);\n data = data.replaceAll(\"</mark><mark>\", \"\");\n }\n };\n }\n return { ...op, html: data };\n });\n });\n\n readonly textoExibindo = computed<string>(() => {\n const val = this.value();\n if (this.multiple() !== true) {\n let selectedOption = this.optionsList().find(op => String(op.k) == String(val));\n return selectedOption?.v ?? (selectedOption?.k ? `⚠️ Chave: ${selectedOption?.k}` : (this.textEmpty() ?? 'Nada selecionado'));\n }\n\n let valor = (this.value() as string[] | number[] | undefined);\n if (valor == undefined || !Array.isArray(valor)) {\n valor = [];\n }\n const textosSelecionados = this.optionsList()\n .filter(op => valor.some(v => String(v) == String(op.k)))\n .map(op => op.v);\n return textosSelecionados.length > 0 ? `[${textosSelecionados.length}] ${textosSelecionados.join(\", \")}` : (this.textEmpty() ?? 'Nada selecionado');\n });\n\n readonly hostClasses = computed(() => this.isOpenedOptions() ? 'opened' : '');\n\n ngOnDestroy() {\n this._dispose();\n }\n\n ngAfterViewInit() {\n this.checkScreenSize();\n }\n\n onChange(valueOfK: string | number | null): string | number | string[] | number[] {\n if (valueOfK == null) return '';\n\n let optionChanged = this.options?.()?.find(op => String(op.k) === String(valueOfK));\n let newKeys = valueOfK;\n let newValues = optionChanged?.v ?? newKeys;\n\n if (this.multiple() !== true) {\n if (this.canUnselect() === true && this.value() === newKeys) {\n newKeys = '';\n newValues = '';\n }\n this.changed.emit({ optionChanged, keys: newKeys, values: newValues });\n return newKeys;\n }\n\n let currentKeys = this.value() ?? [] as any[];\n let currentValues = [];\n if (!Array.isArray(currentKeys)) {\n currentKeys = [];\n }\n\n if (currentKeys.indexOf(newKeys) === -1) {\n currentKeys = [...currentKeys, newKeys];\n } else {\n currentKeys = currentKeys.filter(v => v !== newKeys);\n }\n\n currentValues = currentKeys.map(k => this.options?.()?.find(op => op.k === k)?.v ?? k);\n this.changed.emit({ optionChanged, keys: currentKeys, values: currentValues });\n return currentKeys;\n }\n\n onOpenOrCloseOptions() {\n if (!this.disabled()) {\n if (this.isOpenedOptions()) {\n this.closeOverlay();\n } else {\n this.openOverlay();\n }\n }\n }\n\n protected closeOverlay() {\n this._dispose();\n this.isOpenedOptions.set(false);\n this.textoFiltrado.set(\"\");\n this.markedOptionKey.set(null);\n this.focusToDisplayText();\n }\n\n protected openOverlay() {\n if (this.overlayRef) return;\n\n const trigger = this.triggerElement();\n if (!trigger) return;\n\n const triggerEl = trigger.nativeElement as HTMLElement;\n const minWidth = this.isSmallScreen() ? undefined : triggerEl.offsetWidth;\n\n this.overlayRef = criarOverlayConectado({\n overlay: this.overlay,\n trigger: trigger,\n positions: toConnectedPositions('bottom-start', 2),\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n minWidth,\n panelClass: this.isSmallScreen() ? ['e-select-overlay-panel', 'smallScreen'] : 'e-select-overlay-panel',\n });\n\n const tpl = this.optionsTemplate();\n if (tpl) {\n this.overlayRef.attach(new TemplatePortal(tpl, this.vcr));\n }\n\n this.isOpenedOptions.set(true);\n setTimeout(() => this.focusToSearchInput(), 10);\n\n this.outsideSub = this.overlayRef.outsidePointerEvents().subscribe(() => {\n if (this.isOpenedOptions()) this.closeOverlay();\n });\n }\n\n onSelectOption(option?: IKV) {\n if (!option || option.k == null) {\n LOG(1, `❌ (SelectOption) Chave nula! (${option?.k}, classof: '${LibUtil.classof(option?.k)}'). Valor corresponde ${option?.v}`);\n return;\n }\n this.value.set(this.onChange(option.k));\n if (this.multiple() !== true) {\n this.closeOverlay();\n } else {\n this.focusToSearchInput();\n }\n }\n\n onInputSearch(text: string) {\n this.textoFiltrado.set(text);\n this.markedOptionKey.set(null);\n }\n\n onClearSearch() {\n this.textoFiltrado.set(\"\");\n this.focusToSearchInput();\n }\n\n focusToSearchInput() {\n const input = this.overlayRef?.overlayElement?.querySelector<HTMLElement>('[name=\"e-select-search-input\"]');\n input?.focus();\n }\n\n focusToDisplayText() {\n this.displayText()?.nativeElement?.focus();\n }\n\n markKey(event: KeyboardEvent) {\n const options = this.optionsFiltered();\n if (options.length === 0) return;\n let currentIndex = options.findIndex(op => op.k === this.markedOptionKey());\n let currentKV = options.find(op => op.k === this.markedOptionKey());\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n currentIndex = (currentIndex + 1) % options.length;\n this.markedOptionKey.set(options[currentIndex].k);\n this.moveScrollToMarkedOption();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n currentIndex = (currentIndex - 1 + options.length) % options.length;\n this.markedOptionKey.set(options[currentIndex].k);\n this.moveScrollToMarkedOption();\n } else if (event.key === 'Escape' || event.key === 'Tab') {\n event.preventDefault();\n this.closeOverlay();\n } else if (event.key === 'Enter') {\n event.preventDefault();\n if (this.markedOptionKey() != null) {\n this.onSelectOption(currentKV);\n }\n this.closeOverlay();\n }\n }\n\n onChangeMediaQuery(e: MediaQueryListEvent | MediaQueryList) {\n this.isSmallScreen.set(e.matches);\n const eTrigger = this.triggerElement()?.nativeElement as HTMLElement;\n if (eTrigger) {\n this.optionMinWidth.set(this.isSmallScreen() ? 0 : eTrigger.offsetWidth - 4);\n }\n }\n\n checkScreenSize() {\n const mediaQuery = window.matchMedia('(max-width: 500px)');\n this.onChangeMediaQuery(mediaQuery);\n mediaQuery.addEventListener('change', this.onChangeMediaQuery.bind(this));\n }\n\n private moveScrollToMarkedOption() {\n setTimeout(() => {\n const container = this.overlayRef?.overlayElement?.querySelector<HTMLElement>('.e-select-options-list');\n const markedOption = container?.querySelector<HTMLElement>('.e-select-option.choosing');\n if (container && markedOption) {\n const containerTop = container.scrollTop;\n const containerBottom = containerTop + container.clientHeight;\n const optionTop = markedOption.offsetTop;\n const optionBottom = optionTop + markedOption.offsetHeight;\n if (optionTop < containerTop) {\n container.scrollTop = optionTop - 40;\n } else if (optionBottom > containerBottom) {\n container.scrollTop = optionBottom - container.clientHeight;\n }\n }\n }, 1);\n }\n\n private _dispose() {\n this.outsideSub?.unsubscribe();\n this.outsideSub = null;\n this.overlayRef?.dispose();\n this.overlayRef = null;\n }\n}\n","<div #triggerElement class=\"e-select-container\" (click)=\"onOpenOrCloseOptions()\" (keyup.Enter)=\"onOpenOrCloseOptions()\"\n\t(keyup.ArrowDown)=\"onOpenOrCloseOptions()\" (keyup.ArrowUp)=\"onOpenOrCloseOptions()\">\n\t<div class=\"e-select\">\n\t\t<input #displayText type=\"text\" [name]=\"'select_'+(name() ?? '')\" [value]=\"textoExibindo()\" readonly\n\t\t\t[placeholder]=\"placeholder() ?? ''\" [disabled]=\"disabled()\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t</div>\n\t<div class=\"e-select-arrow-area\">\n\t\t<div class=\"e-select-arrow\" [class.open]=\"isOpenedOptions()\"></div>\n\t</div>\n</div>\n\n<ng-template #optionsTemplate>\n\t<div class=\"e-select-options-container\" [class.smallScreen]=\"isSmallScreen()\">\n\t\t<div class=\"e-select-search-area\" [style.minWidth.px]=\"optionMinWidth()\">\n\t\t\t<input type=\"text\" name=\"e-select-search-input\" class=\"e-select-search\"\n\t\t\t\t(keyup)=\"markKey($event)\" placeholder=\"Procurar...\" [value]=\"textoFiltrado()\" (keydown.Escape)=\"closeOverlay()\"\n\t\t\t\tsize=\"8\" (keydown.Tab)=\"closeOverlay()\" (input)=\"onInputSearch($event.target.value)\" />\n\t\t\t@if(textoFiltrado().length > 0) {\n\t\t\t<ui-button tipo=\"icon\" tema=\"error\" class=\"e-select-search-clearicon\" (click)=\"onClearSearch()\"\n\t\t\t\ticoneNome=\"x\"></ui-button>\n\t\t\t}\n\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"e-select-search-icon\" (click)=\"focusToSearchInput()\"\n\t\t\t\ticoneNome=\"search\"></ui-button>\n\t\t</div>\n\t\t<div class=\"e-select-options-list\">\n\t\t\t@for(option of optionsFiltered(); track $index) {\n\t\t\t<div class=\"e-select-option\" [class.selected]=\"option.selected\" [style.minWidth.px]=\"optionMinWidth()\"\n\t\t\t\t[title]=\"option.v\" (click)=\"onSelectOption(option)\" (keyup.Enter)=\"onSelectOption(option)\" tabindex=\"-1\"\n\t\t\t\t[class.choosing]=\"option.choosing\">\n\t\t\t\t<div class=\"e-select-option-check\"></div>\n\t\t\t\t<div class=\"e-select-option-text\" [innerHTML]=\"option.html\"></div>\n\t\t\t</div>\n\t\t\t}@empty {\n\t\t\t<div class=\"e-select-option empty\">\n\t\t\t\tNenhuma opção disponível\n\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t</div>\n</ng-template>\n","import { Component, computed, ElementRef, input, model, output, signal, viewChild } from '@angular/core';\nimport { UiButton } from \"../ui-button/ui-button\";\n\n@Component({\n selector: 'ui-procurar',\n templateUrl: './ui-procurar.html',\n styleUrl: './ui-procurar.css',\n host: { '[class.focused]': 'focused()' },\n imports: [UiButton],\n})\nexport class UiProcurar {\n\n readonly searchInput = viewChild<ElementRef>('searchInput');\n\n inputed = output<string>();\n changed = output<string>();\n value = model<string>('');\n colapsed = model<boolean | undefined>(false);\n autoColapse = model<boolean | undefined>(false);\n\n computedColapsed = computed(() => {\n if (this.focused() || this.value().length > 0) {\n return false;\n }\n if (this.autoColapse()) {\n return this.value().length === 0;\n }\n return this.colapsed() ?? false;\n });\n\n name = input<string | number | undefined>();\n placeholder = input<string>();\n disabled = input<boolean>();\n\n focused = signal<boolean | undefined>(false);\n\n onInput(value: string) {\n this.value.set(value);\n this.inputed.emit(value);\n }\n\n // Limpa o filtro de opções\n onClearSearch() {\n this.value.set('');\n this.focusSearchInput();\n this.onInputed();\n this.onChange();\n }\n\n focusSearchInput() {\n this.searchInput()?.nativeElement?.focus();\n }\n\n onClickSearchIcon() {\n this.focusSearchInput();\n this.onInputed();\n this.onChange();\n }\n\n onSearch() {\n this.onInputed();\n this.onChange();\n }\n\n onInputed() {\n this.inputed.emit(this.value());\n }\n\n onChange() {\n this.changed.emit(this.value());\n }\n\n\n onFocus(ev: FocusEvent) {\n this.focused.set(true);\n }\n\n onBlur(ev: FocusEvent) {\n this.focused.set(false);\n }\n\n}\n","<ui-button tipo=\"icon\" tema=\"primary\" class=\"e-procurar-icone-search\" (clicked)=\"onClickSearchIcon()\" tabindex=\"-1\">\n\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" class=\"stroke-icone\" viewBox=\"0 0 16 16\">\n\t\t<path\n\t\t\td=\"M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001q.044.06.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1 1 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0\" />\n\t</svg>\n</ui-button>\n<div class=\"e-procurar-input-container\" [class.colapsed]=\"computedColapsed()\">\n\t<input #searchInput type=\"text\" class=\"e-procurar-input\" [value]=\"value()\" (input)=\"onInput($event.target.value)\"\n\t\t[name]=\"'procurar_'+(name() ?? '')\" (change)=\"onChange()\" [placeholder]=\"placeholder() ?? 'Procurar...'\"\n\t\t[disabled]=\"disabled()\" (keyup.Enter)=\"onSearch()\" (keyup.Escape)=\"onClearSearch()\" (focus)=\"onFocus($event)\"\n\t\t(blur)=\"onBlur($event)\" />\n</div>\n@if(value().length > 0) {\n<ui-button tipo=\"icon\" tema=\"error\" class=\"e-procurar-botao-clear\" (clicked)=\"onClearSearch()\" title=\"Limpar\"\n\ticoneNome=\"x\">\n</ui-button>\n}","import { Component, input } from '@angular/core';\nimport { IUiProgressMode } from '../../interfaces/interfaces';\n\n@Component({\n selector: 'ui-progress',\n templateUrl: './ui-progress.html',\n styleUrl: './ui-progress.css',\n})\nexport class UiProgress {\n\n value = input<number | undefined>(0);\n bufferValue = input<number | undefined>(0);\n mode = input<IUiProgressMode | undefined>('indeterminate');\n\n}\n","@switch (mode()) {\n@case ('determinate'){\n<div class=\"bar-progress determinate\">\n\t<div class=\"bar-progress-filled\" [style.width.%]=\"value() ?? 0\"></div>\n</div>\n}\n\n@case ('indeterminate'){\n<div class=\"bar-progress indeterminate\">\n\t<div class=\"bar-progress-filled\"></div>\n</div>\n}\n\n@case ('buffer'){\n<div class=\"bar-progress buffer\">\n\t<div class=\"bar-progress-buffer\" [style.width.%]=\"bufferValue() ?? 0\"></div>\n\t<div class=\"bar-progress-filled\" [style.width.%]=\"value() ?? 0\"></div>\n</div>\n}\n\n@case ('query'){\n<div class=\"bar-progress query\">\n\t<div class=\"bar-progress-filled\"></div>\n</div>\n}\n\n@default {\n<div class=\"bar-progress indeterminate\">\n\t<div class=\"bar-progress-filled\"></div>\n</div>\n}\n\n}","import { AfterViewInit, Component, computed, effect, ElementRef, input, model, output, signal, viewChild } from '@angular/core';\n\n@Component({\n selector: 'ui-slide',\n templateUrl: './ui-slide.html',\n styleUrl: './ui-slide.css',\n host: { '[class.focused]': 'focused()' }\n})\nexport class UiSlide implements AfterViewInit {\n\n sliderbox = viewChild('sliderbox', { read: ElementRef });\n\n value = model<boolean>(false);\n disabled = input<boolean>();\n focused = model<boolean>(false);\n focus = input<boolean>(false);\n changed = output<boolean>();\n\n hasInteracted = signal<boolean>(false);\n\n ativo = computed(() => {\n const val = (this.value() as any);\n return val === true || val === 'true' || val === 1 || val === '1';\n });\n\n constructor() {\n effect(() => {\n if (this.focus()) {\n this.sliderbox()?.nativeElement.focus();\n }\n });\n }\n\n ngAfterViewInit(): void {\n this.sliderbox()?.nativeElement.addEventListener('keydown', (event: KeyboardEvent) => {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.onClickSlide();\n }\n });\n // Ativa transições apenas após o render inicial, evitando animação no mount\n setTimeout(() => this.hasInteracted.set(true));\n }\n\n onClickSlide() {\n if (this.disabled()) return;\n\n const currentValue = (this.value() as any);\n const newValue = !(currentValue === true || currentValue === 'true' || currentValue === 1 || currentValue === '1');\n this.value.set(newValue);\n this.changed.emit(newValue);\n }\n\n onFocus(ev: FocusEvent) {\n if (this.disabled()) return;\n\n this.focused.set(true);\n }\n\n onBlur(ev: FocusEvent) {\n this.focused.set(false);\n }\n\n\n}\n","<div #sliderbox class=\"sliderbox\" tabindex=\"0\" (click)=\"onClickSlide()\" [class.ativo]=\"ativo()\"\n\t[class.disabled]=\"disabled()\" (focus)=\"onFocus($event)\" (blur)=\"onBlur($event)\" [class.can-animate]=\"hasInteracted()\">\n\t<div class=\"slidercircle\">\n\t\t<div class=\"checkmark\" [class.ativo]=\"ativo()\"></div>\n\t</div>\n</div>","import { AfterViewInit, Component, computed, effect, ElementRef, input, model, output, signal, viewChild } from '@angular/core';\n\n@Component({\n selector: 'ui-check-box',\n templateUrl: './ui-check-box.html',\n styleUrl: './ui-check-box.css',\n host: {\n '[class.focused]': 'focused()',\n }\n})\nexport class UiCheckBox implements AfterViewInit {\n\n marcabox = viewChild('marcabox', { read: ElementRef });\n\n value = model<boolean>(false);\n disabled = input<boolean>();\n focused = model<boolean>(false);\n focus = input<boolean>(false);\n changed = output<boolean>();\n single = input<boolean>(false);\n hasDash = input<boolean>(false);\n\n hasInteracted = signal<boolean>(false);\n\n ativo = computed(() => {\n const val = (this.value() as any);\n return val === true || val === 'true' || val === 1 || val === '1';\n });\n\n constructor() {\n effect(() => {\n if (this.focus()) {\n this.marcabox()?.nativeElement.focus();\n }\n });\n }\n\n ngAfterViewInit(): void {\n this.marcabox()?.nativeElement.addEventListener('keydown', (event: KeyboardEvent) => {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.onClickMarcador();\n }\n });\n // Ativa transições apenas após o render inicial, evitando animação no mount\n setTimeout(() => this.hasInteracted.set(true));\n }\n\n onClickMarcador() {\n if (this.disabled()) return;\n\n const currentValue = (this.value() as any);\n const newValue = !(currentValue === true || currentValue === 'true' || currentValue === 1 || currentValue === '1');\n this.value.set(newValue);\n this.changed.emit(newValue);\n }\n\n onFocus(ev: FocusEvent) {\n if (this.disabled()) return;\n\n this.focused.set(true);\n }\n\n onBlur(ev: FocusEvent) {\n this.focused.set(false);\n }\n\n\n}\n","<div #marcabox class=\"marcador-area\" tabindex=\"0\" (click)=\"onClickMarcador()\" [class.ativo]=\"ativo()\"\n\t[class.multiple]=\"!single()\" (focus)=\"onFocus($event)\" (blur)=\"onBlur($event)\" [class.disabled]=\"disabled()\"\n\t[class.can-animate]=\"hasInteracted()\">\n\t<div class=\"checkmark {{ single() ? 'simples' : 'multiple' }}\" [class.hasDash]=\"hasDash()\" [class.ativo]=\"ativo()\">\n\t</div>\n</div>\n<ng-content></ng-content>","import { Component, input } from '@angular/core';\n\n@Component({\n selector: 'ui-list-errors',\n templateUrl: './ui-list-errors.html',\n styleUrl: './ui-list-errors.css',\n})\nexport class UiListErrors {\n\n show = input.required<boolean | undefined>();\n\n errors = input.required<(string | undefined)[] | undefined>();\n dica = input.required<string | undefined>();\n}\n","@if(show()){\n<div class=\"erroArea\" [class.hide]=\"(!errors() || errors()?.length === 0) && (!dica())\">\n\t@for (erro of errors(); track $index) {\n\t<span class=\"erroText\">{{ erro ?? 'Erro desconhecido' }}</span>\n\t}\n\t@if(dica()){\n\t<span class=\"dicaText\">{{ dica() ?? '' }}</span>\n\t}\n</div>\n}","import { Component, computed, input } from '@angular/core';\nimport { IUiProgressMode } from '../../interfaces/interfaces';\n\n@Component({\n selector: 'ui-loading',\n templateUrl: './ui-loading.html',\n styleUrl: './ui-loading.css',\n})\nexport class UiLoading {\n\n value = input<number | undefined>(0);\n bufferValue = input<number | undefined>(0);\n mode = input<IUiProgressMode | undefined>('indeterminate');\n\n readonly circunferencia = 2 * Math.PI * 20; // ≈ 125.664\n\n offset = computed(() => this.calcOffset(this.value() ?? 0));\n offsetBuffer = computed(() => this.calcOffset(this.bufferValue() ?? 0));\n\n calcOffset(valor: number): number {\n return this.circunferencia * (1 - valor / 100);\n }\n\n}\n","@switch (mode()) {\n\n@case ('determinate') {\n<svg class=\"circle-progress determinate\" viewBox=\"0 0 44 44\">\n\t<circle class=\"track\" cx=\"22\" cy=\"22\" r=\"20\" />\n\t<circle class=\"fill\" cx=\"22\" cy=\"22\" r=\"20\" [style.stroke-dashoffset]=\"offset()\" />\n</svg>\n}\n\n@case ('indeterminate') {\n<svg class=\"circle-progress indeterminate\" viewBox=\"0 0 44 44\">\n\t<circle class=\"fill\" cx=\"22\" cy=\"22\" r=\"20\" />\n</svg>\n}\n\n@case ('buffer') {\n<svg class=\"circle-progress determinate\" viewBox=\"0 0 44 44\">\n\t<circle class=\"track\" cx=\"22\" cy=\"22\" r=\"20\" />\n\t<circle class=\"fill buffer\" cx=\"22\" cy=\"22\" r=\"20\" [style.stroke-dashoffset]=\"offsetBuffer()\" />\n\t<circle class=\"fill\" cx=\"22\" cy=\"22\" r=\"20\" [style.stroke-dashoffset]=\"offset()\" />\n</svg>\n}\n\n@case ('query') {\n<svg class=\"circle-progress query\" viewBox=\"0 0 44 44\">\n\t<circle class=\"fill\" cx=\"22\" cy=\"22\" r=\"20\" />\n</svg>\n}\n\n@default {\n<svg class=\"circle-progress indeterminate\" viewBox=\"0 0 44 44\">\n\t<circle class=\"fill\" cx=\"22\" cy=\"22\" r=\"20\" />\n</svg>\n}\n\n}","import {\n AfterViewInit, Component, ElementRef, inject, input, model,\n OnDestroy, OnInit, signal, TemplateRef, viewChild, ViewContainerRef\n} from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Subscription } from 'rxjs';\nimport { UiButton } from \"../ui-button/ui-button\";\nimport { LibUtil } from '../../util/util';\nimport { IPosicoesFloating } from '../../interfaces/interfaces';\nimport { criarOverlayConectado } from '../overlay/overlay.util';\nimport { toConnectedPositions } from '../overlay/overlay-position.util';\n\n@Component({\n selector: 'ui-menu',\n templateUrl: './ui-menu.html',\n styleUrl: './ui-menu.css',\n imports: [UiButton],\n host: { '[class.opened]': 'isOpened()' }\n})\nexport class UiMenu implements OnDestroy, OnInit, AfterViewInit {\n\n elementRef: ElementRef = inject(ElementRef);\n private overlay = inject(Overlay);\n private vcr = inject(ViewContainerRef);\n\n readonly disabled = input<boolean>();\n readonly icone = input<string | undefined | null>();\n autoCloseInCascade = model<boolean>(true);\n\n posicao = model<IPosicoesFloating & string>('right-start');\n isOpened = model(false);\n id = signal(LibUtil.uuid().split('-')[0]);\n isSmallScreen = signal(window.innerWidth < 500);\n optionMinWidth = signal<number>(0);\n\n private overlayRef: OverlayRef | null = null;\n private outsideSub: Subscription | null = null;\n\n readonly menuTrigger = viewChild<ElementRef>('menuTrigger');\n readonly menuTemplate = viewChild<TemplateRef<unknown>>('menuTemplate');\n\n ngOnInit() { }\n\n ngOnDestroy() {\n if (this.isOpened()) this.closeOverlay();\n }\n\n ngAfterViewInit() {\n this.checkScreenSize();\n }\n\n onOpenOrCloseOptions() {\n if (!this.disabled()) {\n if (this.isOpened()) {\n this.closeOverlay();\n } else {\n this.openOverlay();\n }\n this.menuTrigger()?.nativeElement.focus();\n }\n }\n\n onClickSlotBotao(event: Event) {\n if (!this.disabled()) {\n this.openOverlay();\n this.menuTrigger()?.nativeElement.focus();\n }\n }\n\n onClickContainer(event: Event) {\n event.stopPropagation();\n\n const target = event.target as HTMLElement;\n const closestTrigger = target.closest('.e-menu-trigger[id]') as HTMLElement | null;\n const isOwnTrigger = closestTrigger === this.menuTrigger()?.nativeElement;\n\n if (closestTrigger && !isOwnTrigger) {\n // Fechar submenus irmãos que estejam abertos antes de abrir o clicado\n const container = event.currentTarget as HTMLElement;\n container.querySelectorAll<HTMLElement>('.e-menu-trigger.open').forEach(openTrigger => {\n if (openTrigger !== closestTrigger) {\n openTrigger.dispatchEvent(new KeyboardEvent('keyup', { key: 'Escape', bubbles: false }));\n }\n });\n\n // Um trigger de submenu filho foi clicado — não fechar ainda, aguardar o filho fechar\n if (this.autoCloseInCascade()) {\n closestTrigger.addEventListener('menu-closed', () => this.closeOverlay(), { once: true });\n }\n } else {\n // Item folha clicado — fechar este menu\n this.closeOverlay();\n }\n }\n\n protected closeOverlay(fromCascade: boolean = false) {\n if (fromCascade && !this.autoCloseInCascade()) return;\n\n this.outsideSub?.unsubscribe();\n this.outsideSub = null;\n this.overlayRef?.dispose();\n this.overlayRef = null;\n this.isOpened.set(false);\n\n // Notifica o menu pai (se houver) que este menu fechou\n this.menuTrigger()?.nativeElement?.dispatchEvent(\n new CustomEvent('menu-closed', { bubbles: false })\n );\n }\n\n protected openOverlay() {\n if (this.overlayRef) return;\n\n const trigger = this.menuTrigger();\n if (!trigger) return;\n\n this.overlayRef = criarOverlayConectado({\n overlay: this.overlay,\n trigger: trigger,\n positions: toConnectedPositions(this.posicao(), 2),\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n panelClass: 'e-menu-overlay-panel',\n });\n\n const tpl = this.menuTemplate();\n if (tpl) {\n this.overlayRef.attach(new TemplatePortal(tpl, this.vcr));\n }\n\n // Anima a entrada do container após o attach\n requestAnimationFrame(() => {\n this.overlayRef?.overlayElement?.querySelector<HTMLElement>('.e-menu-container')\n ?.classList.add('open');\n });\n\n this.isOpened.set(true);\n\n this.outsideSub = this.overlayRef.outsidePointerEvents().subscribe((event) => {\n const target = event.target as HTMLElement;\n // Não fechar se o clique foi dentro de um overlay CDK filho (submenu)\n const emPaineCDK = target.closest('.cdk-overlay-pane');\n if (emPaineCDK && emPaineCDK !== this.overlayRef?.overlayElement) return;\n this.closeOverlay();\n });\n }\n\n onArrowUp(event: Event) { event.preventDefault(); }\n onArrowDown(event: Event) { event.preventDefault(); }\n\n onChangeMediaQuery(e: MediaQueryListEvent | MediaQueryList) {\n this.isSmallScreen.set(e.matches);\n const eTrigger = this.menuTrigger()?.nativeElement as HTMLElement;\n if (eTrigger) {\n this.optionMinWidth.set(this.isSmallScreen() ? 0 : eTrigger.offsetWidth - 4);\n }\n }\n\n checkScreenSize() {\n const mediaQuery = window.matchMedia('(max-width: 500px)');\n this.onChangeMediaQuery(mediaQuery);\n mediaQuery.addEventListener('change', this.onChangeMediaQuery.bind(this));\n }\n}\n","<div #menuTrigger class=\"e-menu-trigger\" (click)=\"onClickSlotBotao($event)\" (keyup.Enter)=\"onOpenOrCloseOptions()\"\n\t(keydown.ArrowDown)=\"onArrowDown($event)\" (keyup.ArrowUp)=\"onArrowUp($event)\" (keyup.Escape)=\"closeOverlay()\"\n\t[id]=\"'tr'+id()\" [class.open]=\"isOpened()\">\n\t<ng-content select=\"[slot='botao']\">\n\t\t@if(icone()) {\n\t\t<ui-button tipo=\"icon\" tema=\"primary\" [icone]=\"icone()\"></ui-button>\n\t\t} @else {\n\t\t<ui-button tipo=\"icon\" tema=\"primary\">\n\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\"\n\t\t\t\taria-hidden=\"true\">\n\t\t\t\t<circle cx=\"12\" cy=\"5\" r=\"2\" />\n\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"2\" />\n\t\t\t\t<circle cx=\"12\" cy=\"19\" r=\"2\" />\n\t\t\t</svg>\n\t\t</ui-button>\n\t\t}\n\t</ng-content>\n</div>\n\n<ng-template #menuTemplate>\n\t<div #menuContainer class=\"e-menu-container\" [class.smallScreen]=\"isSmallScreen()\"\n\t\t(click)=\"onClickContainer($event)\">\n\t\t<div [style.minWidth.px]=\"optionMinWidth()\" class=\"e-menu-area\">\n\t\t\t<ng-content></ng-content>\n\t\t</div>\n\t</div>\n</ng-template>\n","import { Component, input } from '@angular/core';\n\n@Component({\n\tselector: 'ui-divider',\n\ttemplateUrl: './ui-divider.html',\n\tstyleUrl: './ui-divider.css',\n\thost: {\n\t\t'[class.vertical]': 'vertical()',\n\t\t'[attr.data-espaco]': 'espaco()',\n\t}\n})\nexport class UiDivider {\n\tvertical = input<boolean>(false);\n\tespaco = input<'none' | 'sm' | 'md' | 'lg'>('md');\n}\n","<hr class=\"divider-line\" />","import { Component, computed, input } from '@angular/core';\nimport { ITiposTema } from '../../interfaces/interfaces';\n\n@Component({\n\tselector: 'ui-badge',\n\ttemplateUrl: './ui-badge.html',\n\tstyleUrl: './ui-badge.css',\n\thost: {\n\t\t'[attr.data-tema]': 'tema()',\n\t\t'[class.hidden]': '!visivel()',\n\t}\n})\nexport class UiBadge {\n\tvalor = input<number | string | undefined>();\n\tmax = input<number>(99);\n\ttema = input<ITiposTema>('error');\n\tvisivel = input<boolean>(true);\n\n\tdisplay = computed<string>(() => {\n\t\tconst v = this.valor();\n\t\tif (v === undefined || v === null || v === '') return '';\n\t\tif (typeof v === 'number') {\n\t\t\treturn v > this.max() ? `${this.max()}+` : `${v}`;\n\t\t}\n\t\treturn `${v}`;\n\t});\n}\n","<span class=\"badge-host\">\n\t<ng-content />\n\t<span class=\"badge-bubble\">{{ display() }}</span>\n</span>","import { Component, input, output } from '@angular/core';\nimport { ITiposTema } from '../../interfaces/interfaces';\n\n@Component({\n\tselector: 'ui-card',\n\ttemplateUrl: './ui-card.html',\n\tstyleUrl: './ui-card.css',\n\thost: {\n\t\t'[attr.data-elevacao]': 'elevacao()',\n\t\t'[attr.data-tema]': 'tema() || null',\n\t\t'[class.clicavel]': 'clicavel()',\n\t}\n})\nexport class UiCard {\n\televacao = input<0 | 1 | 2 | 3>(1);\n\tclicavel = input<boolean>(false);\n\ttema = input<ITiposTema | undefined>();\n\n\tclicked = output<MouseEvent>();\n}\n","<div class=\"card\" (click)=\"clicked.emit($event)\">\n\t<ng-content select=\"[slot=media]\" />\n\t<ng-content select=\"[slot=header]\" />\n\t<div class=\"card-content\">\n\t\t<ng-content select=\"[slot=content]\" />\n\t\t<ng-content />\n\t</div>\n\t<ng-content select=\"[slot=footer]\" />\n</div>","import { Component, computed, input } from '@angular/core';\nimport { ITiposTema } from '../../interfaces/interfaces';\n\n@Component({\n\tselector: 'ui-avatar',\n\ttemplateUrl: './ui-avatar.html',\n\tstyleUrl: './ui-avatar.css',\n\thost: {\n\t\t'[attr.data-tamanho]': 'tamanho()',\n\t\t'[attr.data-formato]': 'formato()',\n\t\t'[attr.data-tema]': 'tema() || null',\n\t}\n})\nexport class UiAvatar {\n\tsrc = input<string | undefined>();\n\tnome = input<string | undefined>();\n\ttamanho = input<'xs' | 'sm' | 'md' | 'lg' | 'xl'>('md');\n\tformato = input<'circle' | 'square'>('circle');\n\ttema = input<ITiposTema | undefined>('primary');\n\n\tiniciais = computed<string>(() => {\n\t\tconst n = this.nome();\n\t\tif (!n) return '?';\n\t\tconst partes = n.trim().split(/\\s+/);\n\t\tif (partes.length === 1) return partes[0].charAt(0).toUpperCase();\n\t\treturn (partes[0].charAt(0) + partes[partes.length - 1].charAt(0)).toUpperCase();\n\t});\n}\n","@if(src()) {\n<img class=\"avatar-img\" [src]=\"src()\" [alt]=\"nome() ?? 'avatar'\" />\n} @else {\n<span class=\"avatar-iniciais\">{{ iniciais() }}</span>\n}","import { Component, input, output } from '@angular/core';\nimport { ITiposTema } from '../../interfaces/interfaces';\nimport { UiIcon } from '../ui-icon/ui-icon';\n\n@Component({\n\tselector: 'ui-tag',\n\ttemplateUrl: './ui-tag.html',\n\tstyleUrl: './ui-tag.css',\n\thost: {\n\t\t'[attr.data-tema]': 'tema() || null',\n\t},\n\timports: [UiIcon],\n})\nexport class UiTag {\n\tlabel = input<string>('');\n\ticone = input<string | undefined>();\n\ttema = input<ITiposTema | undefined>('primary');\n\tremovivel = input<boolean>(false);\n\n\tremoved = output<void>();\n}\n","<span class=\"tag\">\n\t@if(icone()) { <i class=\"tag-icone\" [class]=\"icone()\"></i> }\n\t<span class=\"tag-label\">{{ label() }}</span>\n\t@if(removivel()) {\n\t<button class=\"tag-remove\" type=\"button\" (click)=\"removed.emit()\" aria-label=\"Remover\">\n\t\t<ui-icon name=\"x\"></ui-icon>\n\t</button>\n\t}\n</span>","import { Component, input } from '@angular/core';\nimport { UiIcon } from '../ui-icon/ui-icon';\n\n@Component({\n\tselector: 'ui-empty-state',\n\ttemplateUrl: './ui-empty-state.html',\n\tstyleUrl: './ui-empty-state.css',\n\timports: [UiIcon],\n})\nexport class UiEmptyState {\n\ttitulo = input<string>('Nenhum resultado encontrado');\n\tdescricao = input<string | undefined>();\n\ticone = input<string | undefined>(undefined);\n\ticoneNome = input<string>('inbox');\n}\n","<div class=\"empty-state\">\n\t<div class=\"empty-icone\">\n\t\t@if(icone()) { <i [class]=\"icone()\"></i> }\n\t\t@else { <ui-icon [name]=\"iconeNome()\"></ui-icon> }\n\t</div>\n\t<p class=\"empty-titulo\">{{ titulo() }}</p>\n\t@if(descricao()) {\n\t<p class=\"empty-descricao\">{{ descricao() }}</p>\n\t}\n\t<div class=\"empty-acao\">\n\t\t<ng-content select=\"[slot=acao]\" />\n\t</div>\n</div>","import { Component, input, model, output } from '@angular/core';\nimport { IKV } from '../../interfaces/interfaces';\n\n@Component({\n\tselector: 'ui-tabs',\n\ttemplateUrl: './ui-tabs.html',\n\tstyleUrl: './ui-tabs.css',\n\thost: {\n\t\t'[attr.data-tipo]': 'tipo()',\n\t}\n})\nexport class UiTabs {\n\tabas = input<IKV[]>([]);\n\tativa = model<string | number | null | undefined>(null);\n\ttipo = input<'line' | 'fill' | 'pill'>('fill');\n\n\tchanged = output<IKV>();\n\n\tselecionar(aba: IKV): void {\n\t\tthis.ativa.set(aba.k);\n\t\tthis.changed.emit(aba);\n\t}\n}\n","<div class=\"tabs-bar\">\n\t@for(aba of abas(); track aba.k) {\n\t<button class=\"tab-item\" type=\"button\" [class.ativo]=\"ativa() === aba.k\" (click)=\"selecionar(aba)\">\n\t\t@if(aba.html) {\n\t\t<span [innerHTML]=\"aba.html\"></span>\n\t\t} @else {\n\t\t{{ aba.v ?? aba.k }}\n\t\t}\n\t</button>\n\t}\n</div>\n<div class=\"tabs-conteudo\">\n\t<ng-content />\n</div>","import { ChangeDetectionStrategy, Component, input, signal } from '@angular/core';\nimport type { UiAccordionItem } from './ui-accordion-item/ui-accordion-item';\n\n@Component({\n\tselector: 'ui-accordion',\n\ttemplateUrl: './ui-accordion.html',\n\tstyleUrl: './ui-accordion.css',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UiAccordion {\n\tmultiplo = input<boolean>(false);\n\n\tprivate abertos = signal<Set<UiAccordionItem>>(new Set());\n\n\ttoggle(item: UiAccordionItem): void {\n\t\tif (item.desabilitado()) return;\n\t\tconst set = new Set(this.abertos());\n\t\tif (set.has(item)) {\n\t\t\tset.delete(item);\n\t\t} else {\n\t\t\tif (!this.multiplo()) set.clear();\n\t\t\tset.add(item);\n\t\t}\n\t\tthis.abertos.set(set);\n\t}\n\n\testaAberto(item: UiAccordionItem): boolean {\n\t\treturn this.abertos().has(item);\n\t}\n}\n","<div class=\"accordion\">\n\t<ng-content />\n</div>\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tTemplateRef,\n\tcomputed,\n\tcontentChild,\n\tinject,\n\tinput,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { UiAccordion } from '../ui-accordion';\nimport { UiIcon } from '../../ui-icon/ui-icon';\n\n@Component({\n\tselector: 'ui-accordion-item',\n\ttemplateUrl: './ui-accordion-item.html',\n\tstyleUrl: './ui-accordion-item.css',\n\timports: [NgTemplateOutlet, UiIcon],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\t'[class.aberto]': 'aberto()',\n\t\t'[class.desabilitado]': 'desabilitado()',\n\t},\n})\nexport class UiAccordionItem {\n\ttitulo = input.required<string>();\n\ticone = input<string>();\n\tdesabilitado = input<boolean>(false);\n\n\tprivate accordion = inject(UiAccordion);\n\n\tconteudo = contentChild(TemplateRef);\n\n\taberto = computed(() => this.accordion.estaAberto(this));\n\n\ttoggle(): void {\n\t\tif (this.desabilitado()) return;\n\t\tthis.accordion.toggle(this);\n\t}\n}\n","<button class=\"accordion-header\" type=\"button\" (click)=\"toggle()\">\n\t@if (icone()) { <i [class]=\"icone()\"></i> }\n\t<span class=\"accordion-titulo\">{{ titulo() }}</span>\n\t<ui-icon name=\"chevron-down\" class=\"accordion-seta\"></ui-icon>\n</button>\n<div class=\"accordion-body\">\n\t<div class=\"accordion-body-inner\">\n\t\t@if (aberto()) {\n\t\t\t@if (conteudo(); as tpl) {\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"tpl\" />\n\t\t\t} @else {\n\t\t\t\t<ng-content />\n\t\t\t}\n\t\t}\n\t</div>\n</div>\n","import { Component, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { IBreadcrumbItem } from '../../interfaces/interfaces';\n\n@Component({\n\tselector: 'ui-breadcrumb',\n\ttemplateUrl: './ui-breadcrumb.html',\n\tstyleUrl: './ui-breadcrumb.css',\n\timports: [RouterLink],\n})\nexport class UiBreadcrumb {\n\titens = input<IBreadcrumbItem[]>([]);\n\tseparador = input<string>('/');\n}\n","<nav class=\"breadcrumb\" aria-label=\"Breadcrumb\">\n\t<ol class=\"breadcrumb-list\">\n\t\t@for(item of itens(); track $index; let last = $last) {\n\t\t<li class=\"breadcrumb-item\" [class.ativo]=\"last\">\n\t\t\t@if(!last && item.route) {\n\t\t\t<a class=\"breadcrumb-link\" [routerLink]=\"item.route\">{{ item.label }}</a>\n\t\t\t} @else if(!last) {\n\t\t\t<span class=\"breadcrumb-link\">{{ item.label }}</span>\n\t\t\t} @else {\n\t\t\t<span class=\"breadcrumb-atual\" aria-current=\"page\">{{ item.label }}</span>\n\t\t\t}\n\t\t\t@if(!last) {\n\t\t\t<span class=\"breadcrumb-sep\" aria-hidden=\"true\">{{ separador() }}</span>\n\t\t\t}\n\t\t</li>\n\t\t}\n\t</ol>\n</nav>","import { Component, computed, input, model, output } from '@angular/core';\nimport { IStepperStep } from '../../interfaces/interfaces';\nimport { UiIcon } from '../ui-icon/ui-icon';\n\n@Component({\n\tselector: 'ui-stepper',\n\ttemplateUrl: './ui-stepper.html',\n\tstyleUrl: './ui-stepper.css',\n\thost: {\n\t\t'[attr.data-orientacao]': 'orientacao()',\n\t},\n\timports: [UiIcon],\n})\nexport class UiStepper {\n\tpassos = input<IStepperStep[]>([]);\n\tativo = model<number>(0);\n\torientacao = input<'horizontal' | 'vertical'>('horizontal');\n\n\tchanged = output<number>();\n\tfinalizado = output<void>();\n\n\tpodeAvancar = computed(() => this.ativo() < this.passos().length - 1);\n\tpodeFinalizar = computed(() => this.ativo() === this.passos().length - 1);\n\n\tirPara(index: number): void {\n\t\tif (index < 0 || index >= this.passos().length) return;\n\t\tthis.ativo.set(index);\n\t\tthis.changed.emit(index);\n\t}\n\n\tproximo(): void {\n\t\tif (this.podeAvancar()) this.irPara(this.ativo() + 1);\n\t\telse if (this.podeFinalizar()) this.finalizado.emit();\n\t}\n\n\tanterior(): void {\n\t\tif (this.ativo() > 0) this.irPara(this.ativo() - 1);\n\t}\n}\n","<div class=\"stepper\">\n\t<div class=\"stepper-header\">\n\t\t@for(passo of passos(); track $index; let last = $last) {\n\t\t<div class=\"stepper-passo\" [class.ativo]=\"ativo() === $index\" [class.concluido]=\"ativo() > $index\"\n\t\t\t(click)=\"ativo() > $index && irPara($index)\">\n\t\t\t<div class=\"passo-circulo\">\n\t\t\t\t@if(ativo() > $index) {\n\t\t\t\t<ui-icon name=\"check\"></ui-icon>\n\t\t\t\t} @else {\n\t\t\t\t<span>{{ $index + 1 }}</span>\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<div class=\"passo-info\">\n\t\t\t\t<span class=\"passo-label\">{{ passo.label }}</span>\n\t\t\t\t@if(passo.opcional) { <span class=\"passo-opcional\">Opcional</span> }\n\t\t\t</div>\n\t\t</div>\n\t\t@if(!last) {\n\t\t<div class=\"passo-conector\" [class.concluido]=\"ativo() > $index\"></div>\n\t\t}\n\t\t}\n\t</div>\n\n\t<div class=\"stepper-conteudo\">\n\t\t<ng-content />\n\t</div>\n</div>","import { Component, computed, input, model, output } from '@angular/core';\nimport { UiIcon } from '../ui-icon/ui-icon';\n\nexport interface IPageChangeEvent {\n\tpagina: number;\n\ttamanhoPagina: number;\n}\n\n@Component({\n\tselector: 'ui-pagination',\n\ttemplateUrl: './ui-pagination.html',\n\tstyleUrl: './ui-pagination.css',\n\timports: [UiIcon],\n})\nexport class UiPagination {\n\ttotal = input<number>(0);\n\tpagina = model<number>(1);\n\ttamanhoPagina = model<number>(10);\n\topcoesTamanho = input<number[]>([5, 10, 25, 50, 100]);\n\n\tpageChanged = output<IPageChangeEvent>();\n\n\ttotalPaginas = computed(() => Math.max(1, Math.ceil(this.total() / this.tamanhoPagina())));\n\n\tpaginasVisiveis = computed<(number | '...')[]>(() => {\n\t\tconst total = this.totalPaginas();\n\t\tconst atual = this.pagina();\n\t\tif (total <= 7) return Array.from({ length: total }, (_, i) => i + 1);\n\t\tconst pages: (number | '...')[] = [1];\n\t\tif (atual > 3) pages.push('...');\n\t\tfor (let i = Math.max(2, atual - 1); i <= Math.min(total - 1, atual + 1); i++) pages.push(i);\n\t\tif (atual < total - 2) pages.push('...');\n\t\tpages.push(total);\n\t\treturn pages;\n\t});\n\n\tirPara(p: number): void {\n\t\tif (p < 1 || p > this.totalPaginas() || p === this.pagina()) return;\n\t\tthis.pagina.set(p);\n\t\tthis.pageChanged.emit({ pagina: p, tamanhoPagina: this.tamanhoPagina() });\n\t}\n\n\tmudarTamanho(event: Event): void {\n\t\tconst val = parseInt((event.target as HTMLSelectElement).value, 10);\n\t\tthis.tamanhoPagina.set(val);\n\t\tthis.pagina.set(1);\n\t\tthis.pageChanged.emit({ pagina: 1, tamanhoPagina: val });\n\t}\n}\n","<div class=\"pagination\">\n\t<div class=\"pagination-info\">\n\t\t<select class=\"pg-tamanho\" (change)=\"mudarTamanho($event)\">\n\t\t\t@for(op of opcoesTamanho(); track op) {\n\t\t\t<option [value]=\"op\" [selected]=\"op === tamanhoPagina()\">{{ op }} / pág.</option>\n\t\t\t}\n\t\t</select>\n\t\t<span class=\"pg-total\">{{ total() }} itens</span>\n\t</div>\n\n\t<div class=\"pagination-controles\">\n\t\t<button class=\"pg-btn\" type=\"button\" (click)=\"irPara(1)\" [disabled]=\"pagina() === 1\" title=\"Primeira\">\n\t\t\t<ui-icon name=\"chevron-double-left\"></ui-icon>\n\t\t</button>\n\t\t<button class=\"pg-btn\" type=\"button\" (click)=\"irPara(pagina() - 1)\" [disabled]=\"pagina() === 1\" title=\"Anterior\">\n\t\t\t<ui-icon name=\"chevron-left\"></ui-icon>\n\t\t</button>\n\n\t\t@for(p of paginasVisiveis(); track $index) {\n\t\t@if(p === '...') {\n\t\t<span class=\"pg-ellipsis\">…</span>\n\t\t} @else {\n\t\t<button class=\"pg-btn pg-num\" type=\"button\" [class.ativo]=\"pagina() === p\" (click)=\"irPara(+p)\">{{ p }}</button>\n\t\t}\n\t\t}\n\n\t\t<button class=\"pg-btn\" type=\"button\" (click)=\"irPara(pagina() + 1)\" [disabled]=\"pagina() === totalPaginas()\"\n\t\t\ttitle=\"Próxima\">\n\t\t\t<ui-icon name=\"chevron-right\"></ui-icon>\n\t\t</button>\n\t\t<button class=\"pg-btn\" type=\"button\" (click)=\"irPara(totalPaginas())\" [disabled]=\"pagina() === totalPaginas()\"\n\t\t\ttitle=\"Última\">\n\t\t\t<ui-icon name=\"chevron-double-right\"></ui-icon>\n\t\t</button>\n\t</div>\n</div>","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\n/** Componente interno — não exportar via public-api.ts */\n@Component({\n\tselector: 'ui-tooltip-bubble',\n\thost: { class: 'ui-tooltip-bubble' },\n\ttemplate: `{{ texto() }}`,\n\tstyles: [`\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\tpointer-events: none;\n\t\t\tbackground: var(--sys-tooltip-bg, rgba(30, 30, 30, 0.9));\n\t\t\tcolor: var(--sys-tooltip-color, #fff);\n\t\t\tfont-size: 12px;\n\t\t\tfont-weight: 500;\n\t\t\tpadding: 5px 10px;\n\t\t\tborder-radius: 5px;\n\t\t\twhite-space: normal;\n\t\t\tmax-width: 260px;\n\t\t\tbox-shadow: 0 2px 8px rgba(0, 0, 0, .2);\n\t\t\topacity: 0;\n\t\t\ttransition: opacity 0.15s ease;\n\t\t}\n\t\t:host.visible {\n\t\t\topacity: 1;\n\t\t}\n\t`],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UiTooltipBubble {\n\ttexto = input<string>('');\n}\n","import { Directive, ElementRef, HostListener, inject, input, OnDestroy } from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { IPosicoesFloating } from '../../interfaces/interfaces';\nimport { criarOverlayConectado } from '../overlay/overlay.util';\nimport { toConnectedPositions } from '../overlay/overlay-position.util';\nimport { UiTooltipBubble } from './ui-tooltip-bubble';\n\n@Directive({\n\tselector: '[uiTooltip]',\n\texportAs: 'uiTooltip',\n})\nexport class UiTooltip implements OnDestroy {\n\tuiTooltip = input<string>('');\n\tuiTooltipPos = input<IPosicoesFloating>('top');\n\n\tprivate el = inject(ElementRef);\n\tprivate overlay = inject(Overlay);\n\tprivate overlayRef: OverlayRef | null = null;\n\n\t@HostListener('mouseenter') onEnter() { this.show(); }\n\t@HostListener('focusin') onFocus() { this.show(); }\n\t@HostListener('mouseleave') onLeave() { this.hide(); }\n\t@HostListener('focusout') onBlur() { this.hide(); }\n\n\tprivate show(): void {\n\t\tif (!this.uiTooltip() || this.overlayRef) return;\n\n\t\tthis.overlayRef = criarOverlayConectado({\n\t\t\toverlay: this.overlay,\n\t\t\ttrigger: this.el,\n\t\t\tpositions: toConnectedPositions(this.uiTooltipPos(), 8),\n\t\t\tscrollStrategy: this.overlay.scrollStrategies.reposition(),\n\t\t\tpanelClass: 'ui-tooltip-panel',\n\t\t});\n\n\t\tconst ref = this.overlayRef.attach(new ComponentPortal(UiTooltipBubble));\n\t\tref.setInput('texto', this.uiTooltip());\n\t\trequestAnimationFrame(() => ref.location.nativeElement.classList.add('visible'));\n\t}\n\n\tprivate hide(): void {\n\t\tthis.overlayRef?.dispose();\n\t\tthis.overlayRef = null;\n\t}\n\n\tngOnDestroy(): void { this.hide(); }\n}\n","import { Injectable, signal } from '@angular/core';\nimport { IToastConfig, IToastTipo } from '../../interfaces/interfaces';\nimport { LibUtil } from '../../util/util';\n\n@Injectable({ providedIn: 'root' })\nexport class UiToastService {\n\treadonly toasts = signal<IToastConfig[]>([]);\n\n\tshow(config: Omit<IToastConfig, 'id'>): string {\n\t\tconst id = LibUtil.uuid();\n\t\tconst duracao = config.duracao ?? 4000;\n\t\tconst toast: IToastConfig = { ...config, id };\n\t\tthis.toasts.update(t => [...t, toast]);\n\t\tif (duracao > 0) {\n\t\t\tsetTimeout(() => this.remove(id), duracao);\n\t\t}\n\t\treturn id;\n\t}\n\n\tsuccess(mensagem: string, titulo?: string, duracao = 4000): string {\n\t\treturn this.show({ mensagem, titulo, tipo: 'success', duracao });\n\t}\n\n\terror(mensagem: string, titulo?: string, duracao = 6000): string {\n\t\treturn this.show({ mensagem, titulo, tipo: 'error', duracao });\n\t}\n\n\twarning(mensagem: string, titulo?: string, duracao = 5000): string {\n\t\treturn this.show({ mensagem, titulo, tipo: 'warning', duracao });\n\t}\n\n\tinfo(mensagem: string, titulo?: string, duracao = 4000): string {\n\t\treturn this.show({ mensagem, titulo, tipo: 'info', duracao });\n\t}\n\n\tremove(id: string): void {\n\t\tthis.toasts.update(ts => ts.filter(t => t.id !== id));\n\t}\n\n\tclear(): void {\n\t\tthis.toasts.set([]);\n\t}\n}\n","import { Component, inject } from '@angular/core';\nimport { UiToastService } from './ui-toast.service';\nimport { UiIcon } from '../ui-icon/ui-icon';\n\n@Component({\n\tselector: 'ui-toast-container',\n\ttemplateUrl: './ui-toast-container.html',\n\tstyleUrl: './ui-toast-container.css',\n\timports: [UiIcon],\n})\nexport class UiToastContainer {\n\treadonly toastService = inject(UiToastService);\n}\n","<div class=\"toast-stack\">\n\t@for(toast of toastService.toasts(); track toast.id) {\n\t<div class=\"toast\" [attr.data-tipo]=\"toast.tipo\" role=\"alert\">\n\t\t<div class=\"toast-icone\">\n\t\t\t@switch(toast.tipo) {\n\t\t\t@case('success') { <ui-icon name=\"check-circle\"></ui-icon> }\n\t\t\t@case('error') { <ui-icon name=\"x-circle\"></ui-icon> }\n\t\t\t@case('warning') { <ui-icon name=\"exclamation-triangle\"></ui-icon> }\n\t\t\t@case('info') { <ui-icon name=\"info-circle\"></ui-icon> }\n\t\t\t}\n\t\t</div>\n\t\t<div class=\"toast-body\">\n\t\t\t@if(toast.titulo) { <strong class=\"toast-titulo\">{{ toast.titulo }}</strong> }\n\t\t\t<span class=\"toast-mensagem\">{{ toast.mensagem }}</span>\n\t\t</div>\n\t\t<button class=\"toast-fechar\" type=\"button\" (click)=\"toastService.remove(toast.id)\" aria-label=\"Fechar\">\n\t\t\t<ui-icon name=\"x\"></ui-icon>\n\t\t</button>\n\t</div>\n\t}\n</div>","import {\n AfterViewInit, Component, ElementRef, inject, InjectionToken,\n OnDestroy, TemplateRef, Type\n} from '@angular/core';\nimport { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport { ConfigurableFocusTrapFactory, FocusTrap } from '@angular/cdk/a11y';\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { IModalConfig } from '../../interfaces/interfaces';\nimport { UiButton } from '../ui-button/ui-button';\nimport { UiIcon } from '../ui-icon/ui-icon';\n\nexport interface IModalBoxData {\n config: IModalConfig;\n overlayRef: OverlayRef;\n close: () => void;\n}\n\nexport const MODAL_BOX_DATA = new InjectionToken<IModalBoxData>('MODAL_BOX_DATA');\n\n/** Token para injetar dados customizados no componente de conteúdo do modal */\nexport const MODAL_DADOS = new InjectionToken<unknown>('MODAL_DADOS');\n\n@Component({\n selector: 'ui-modal-box',\n templateUrl: './ui-modal-box.html',\n styleUrl: './ui-modal-box.css',\n imports: [UiButton, UiIcon, NgComponentOutlet, NgTemplateOutlet],\n host: {\n 'role': 'dialog',\n 'aria-modal': 'true',\n }\n})\nexport class UiModalBox implements AfterViewInit, OnDestroy {\n readonly data = inject(MODAL_BOX_DATA);\n private el = inject(ElementRef);\n private focusTrapFactory = inject(ConfigurableFocusTrapFactory);\n private focusTrap: FocusTrap | null = null;\n\n get config() { return this.data.config; }\n\n get conteudoComponent(): Type<unknown> | null {\n return this.config.conteudo instanceof TemplateRef ? null : (this.config.conteudo as Type<unknown>) ?? null;\n }\n\n get conteudoTemplate(): TemplateRef<unknown> | null {\n return this.config.conteudo instanceof TemplateRef ? this.config.conteudo : null;\n }\n\n ngAfterViewInit() {\n this.focusTrap = this.focusTrapFactory.create(this.el.nativeElement);\n this.focusTrap.focusInitialElementWhenReady();\n }\n\n ngOnDestroy() {\n this.focusTrap?.destroy();\n }\n\n fechar() {\n this.data.close();\n }\n}\n","<div class=\"modal-box\" [attr.data-tamanho]=\"config.tamanho ?? 'md'\">\n\n\t@if(config.titulo || config.closeable !== false) {\n\t<div class=\"modal-header\">\n\t\t@if(config.titulo) { <h2 class=\"modal-titulo\">{{ config.titulo }}</h2> }\n\t\t@if(config.closeable !== false) {\n\t\t<button class=\"modal-close\" type=\"button\" (click)=\"fechar()\" aria-label=\"Fechar\">\n\t\t\t<ui-icon name=\"x-lg\"></ui-icon>\n\t\t</button>\n\t\t}\n\t</div>\n\t}\n\n\t@if(config.mensagem) {\n\t<div class=\"modal-body\">\n\t\t<p>{{ config.mensagem }}</p>\n\t</div>\n\t}\n\n\t@if(conteudoComponent) {\n\t<div class=\"modal-body\">\n\t\t<ng-container *ngComponentOutlet=\"conteudoComponent\"></ng-container>\n\t</div>\n\t}\n\n\t@if(conteudoTemplate) {\n\t<div class=\"modal-body\">\n\t\t<ng-container *ngTemplateOutlet=\"conteudoTemplate\"></ng-container>\n\t</div>\n\t}\n\n\t@if(config.acoes && config.acoes.length > 0) {\n\t<div class=\"modal-footer\">\n\t\t@for(acao of config.acoes; track $index) {\n\t\t<ui-button [tema]=\"acao.tema\" tipo=\"fill\"\n\t\t\t(clicked)=\"acao.callback && acao.callback(); fechar()\">\n\t\t\t{{ acao.label }}\n\t\t</ui-button>\n\t\t}\n\t</div>\n\t}\n\n</div>\n","import { inject, Injectable, Injector, signal } from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { IModalConfig } from '../../interfaces/interfaces';\nimport { LibUtil } from '../../util/util';\nimport { MODAL_BOX_DATA, MODAL_DADOS, UiModalBox } from './ui-modal-box';\n\n@Injectable({ providedIn: 'root' })\nexport class UiModalService {\n private overlay = inject(Overlay);\n private injector = inject(Injector);\n\n /** Sinal com os configs dos modais abertos */\n readonly modais = signal<IModalConfig[]>([]);\n\n private _refs = new Map<string, OverlayRef>();\n\n open(config: Omit<IModalConfig, 'id'>): string {\n const id = LibUtil.uuid();\n const fullConfig: IModalConfig = { ...config, id };\n\n const overlayRef = this.overlay.create({\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-dark-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.block(),\n positionStrategy: this.overlay.position().global()\n .centerHorizontally()\n .centerVertically(),\n panelClass: 'ui-modal-panel',\n });\n\n const close = () => this.close(id);\n\n if (config.closeable !== false) {\n overlayRef.backdropClick().subscribe(() => close());\n }\n\n const childInjector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: MODAL_BOX_DATA, useValue: { config: fullConfig, overlayRef, close } },\n ...(config.dados != null ? [{ provide: MODAL_DADOS, useValue: config.dados }] : []),\n ],\n });\n\n overlayRef.attach(new ComponentPortal(UiModalBox, null, childInjector));\n\n this._refs.set(id, overlayRef);\n this.modais.update(m => [...m, fullConfig]);\n return id;\n }\n\n close(id: string): void {\n const ref = this._refs.get(id);\n if (ref) {\n ref.dispose();\n this._refs.delete(id);\n }\n this.modais.update(m => m.filter(modal => modal.id !== id));\n }\n\n closeAll(): void {\n this._refs.forEach(ref => ref.dispose());\n this._refs.clear();\n this.modais.set([]);\n }\n}\n","import { Component, HostListener, inject } from '@angular/core';\nimport { UiModalService } from './ui-modal.service';\n\n/**\n * Inclua <ui-modal-outlet> no shell do app para habilitar o controle de Esc nos modais.\n * A renderização dos modais é gerenciada pelo CDK Overlay (não requer marcação adicional).\n */\n@Component({\n selector: 'ui-modal-outlet',\n template: '',\n styles: [':host { display: none; }'],\n})\nexport class UiModalOutlet {\n readonly modalService = inject(UiModalService);\n\n @HostListener('document:keydown.escape')\n onEscape(): void {\n const modais = this.modalService.modais();\n const last = modais[modais.length - 1];\n if (last && last.closeable !== false) {\n this.modalService.close(last.id);\n }\n }\n}\n","import { Component, input, model, output } from '@angular/core';\n\n@Component({\n\tselector: 'ui-drawer',\n\ttemplateUrl: './ui-drawer.html',\n\tstyleUrl: './ui-drawer.css',\n\thost: {\n\t\t'[attr.data-posicao]': 'posicao()',\n\t\t'[class.aberto]': 'aberto()',\n\t}\n})\nexport class UiDrawer {\n\taberto = model<boolean>(false);\n\tposicao = input<'left' | 'right' | 'top' | 'bottom'>('right');\n\tlargura = input<string>('320px');\n\tfecharAoClicarFora = input<boolean>(true);\n\n\tfechado = output<void>();\n\n\tfechar(): void {\n\t\tthis.aberto.set(false);\n\t\tthis.fechado.emit();\n\t}\n\n\tonOverlayClick(): void {\n\t\tif (this.fecharAoClicarFora()) this.fechar();\n\t}\n}\n","@if(aberto()) {\n<div class=\"drawer-overlay\" (click)=\"onOverlayClick()\"></div>\n}\n<div class=\"drawer-panel\" [style.--drawer-largura]=\"largura()\" [style.--drawer-altura]=\"largura()\">\n\t<ng-content />\n</div>","import { Component, computed, input, model, output, signal } from '@angular/core';\nimport { UiIcon } from '../ui-icon/ui-icon';\n\n@Component({\n\tselector: 'ui-rating',\n\ttemplateUrl: './ui-rating.html',\n\tstyleUrl: './ui-rating.css',\n\thost: {\n\t\t'[class.readonly]': 'readonly()',\n\t},\n\timports: [UiIcon],\n})\nexport class UiRating {\n\tvalor = model<number>(0);\n\tmax = input<number>(5);\n\treadonly = input<boolean>(false);\n\tmeiaPasso = input<boolean>(false);\n\n\tchanged = output<number>();\n\n\thover = signal<number>(-1);\n\n\testrelas = computed<number[]>(() => Array.from({ length: this.max() }, (_, i) => i + 1));\n\n\texibido = computed<number>(() => this.hover() >= 0 ? this.hover() : this.valor());\n\n\tpontuacaoEstrela(index: number): 'full' | 'half' | 'empty' {\n\t\tconst val = this.exibido();\n\t\tif (val >= index) return 'full';\n\t\tif (this.meiaPasso() && val >= index - 0.5) return 'half';\n\t\treturn 'empty';\n\t}\n\n\tonMouseMove(event: MouseEvent, index: number): void {\n\t\tif (this.readonly()) return;\n\t\tif (this.meiaPasso()) {\n\t\t\tconst el = event.currentTarget as HTMLElement;\n\t\t\tconst meioX = el.getBoundingClientRect().width / 2;\n\t\t\tthis.hover.set(event.offsetX < meioX ? index - 0.5 : index);\n\t\t} else {\n\t\t\tthis.hover.set(index);\n\t\t}\n\t}\n\n\tonMouseLeave(): void { this.hover.set(-1); }\n\n\tselecionar(index: number, event: MouseEvent): void {\n\t\tif (this.readonly()) return;\n\t\tlet val = index;\n\t\tif (this.meiaPasso()) {\n\t\t\tconst el = event.currentTarget as HTMLElement;\n\t\t\tconst meioX = el.getBoundingClientRect().width / 2;\n\t\t\tval = event.offsetX < meioX ? index - 0.5 : index;\n\t\t}\n\t\tthis.valor.set(val);\n\t\tthis.changed.emit(val);\n\t}\n}\n","<div class=\"rating\" (mouseleave)=\"onMouseLeave()\">\n\t@for(i of estrelas(); track i) {\n\t<button class=\"estrela\" type=\"button\" [class.full]=\"pontuacaoEstrela(i) === 'full'\"\n\t\t[class.half]=\"pontuacaoEstrela(i) === 'half'\" [disabled]=\"readonly()\" (mousemove)=\"onMouseMove($event, i)\"\n\t\t(click)=\"selecionar(i, $event)\" [attr.aria-label]=\"'Avaliar ' + i + ' de ' + max()\">\n\t\t<ui-icon name=\"star-fill\" class=\"icone-fundo\"></ui-icon>\n\t\t<ui-icon name=\"star-fill\" class=\"icone-frente\"></ui-icon>\n\t</button>\n\t}\n</div>","import { InjectionToken } from '@angular/core';\nimport { ITreeNode } from '../../interfaces/interfaces';\n\nexport interface IUiTreeCtx {\n\tmultiplo(): boolean;\n\tisSelecionado(id: string | number): boolean;\n\tisExpandido(id: string | number): boolean;\n\ttoggleExpandir(no: ITreeNode): void;\n\ttoggleSelecionar(no: ITreeNode): void;\n\tcoletarTodosFilhos(no: ITreeNode): (string | number)[];\n\tselecionarTodos(no: ITreeNode): void;\n\tdesselecionarTodos(no: ITreeNode): void;\n}\n\nexport const UI_TREE_CTX = new InjectionToken<IUiTreeCtx>('UI_TREE_CTX');\n","import { Component, computed, inject, input } from '@angular/core';\nimport { UiCheckBox } from '../ui-check-box/ui-check-box';\nimport { UiIcon } from '../ui-icon/ui-icon';\nimport { ITreeNode } from '../../interfaces/interfaces';\nimport { UI_TREE_CTX } from './ui-tree-ctx';\n\n@Component({\n\tselector: 'ui-tree-no',\n\ttemplateUrl: './ui-tree-no.html',\n\tstyleUrl: './ui-tree-no.css',\n\timports: [UiTreeNo, UiCheckBox, UiIcon],\n})\nexport class UiTreeNo {\n\tno = input.required<ITreeNode>();\n\tnivel = input<number>(0);\n\n\tctx = inject(UI_TREE_CTX);\n\n\tehCategoria = computed(() => this.no().filhos !== undefined);\n\teExpandido = computed(() => this.ctx.isExpandido(this.no().id));\n\teSelecionado = computed(() => this.ctx.isSelecionado(this.no().id));\n\teIndeterminado = computed(() => {\n\t\tif (!this.ehCategoria()) return false;\n\t\tconst todos = this.ctx.coletarTodosFilhos(this.no());\n\t\tif (!todos.length) return false;\n\t\tconst sel = todos.filter(id => this.ctx.isSelecionado(id)).length;\n\t\treturn sel > 0 && sel < todos.length;\n\t});\n\n\tonClickRow(): void {\n\t\tconst no = this.no();\n\t\tif (no.desabilitado) return;\n\t\tif (this.ehCategoria()) {\n\t\t\tthis.ctx.toggleExpandir(no);\n\t\t\tif (!this.ctx.multiplo()) {\n\t\t\t\tthis.ctx.toggleSelecionar(no);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.ctx.toggleSelecionar(no);\n\t\t}\n\t}\n\n\tonCheckChanged(valor: boolean): void {\n\t\tif (valor) {\n\t\t\tthis.ctx.selecionarTodos(this.no());\n\t\t} else {\n\t\t\tthis.ctx.desselecionarTodos(this.no());\n\t\t}\n\t}\n}\n","<li class=\"tree-no\" [class.desabilitado]=\"no().desabilitado\">\n\t<div class=\"tree-row\" [class.selecionado]=\"eSelecionado()\" (click)=\"onClickRow()\">\n\t\t@if (ehCategoria()) {\n\t\t\t<button class=\"tree-toggle\" type=\"button\"\n\t\t\t\t(click)=\"$event.stopPropagation(); ctx.toggleExpandir(no())\"\n\t\t\t\t[attr.aria-expanded]=\"eExpandido()\">\n\t\t\t\t<ui-icon [name]=\"eExpandido() ? 'chevron-down' : 'chevron-right'\" />\n\t\t\t</button>\n\t\t} @else {\n\t\t\t<span class=\"tree-toggle-space\"></span>\n\t\t}\n\t\t@if (ctx.multiplo() && ehCategoria()) {\n\t\t\t<ui-check-box\n\t\t\t\t[value]=\"eSelecionado()\"\n\t\t\t\t[hasDash]=\"eIndeterminado()\"\n\t\t\t\t[disabled]=\"no().desabilitado\"\n\t\t\t\t(click)=\"$event.stopPropagation()\"\n\t\t\t\t(changed)=\"onCheckChanged($event)\"\n\t\t\t/>\n\t\t}\n\t\t@if (no().icone) {\n\t\t\t<i class=\"tree-icone\" [class]=\"no().icone\"></i>\n\t\t}\n\t\t<span class=\"tree-label\">{{ no().label }}</span>\n\t</div>\n\t@if (ehCategoria() && eExpandido()) {\n\t\t<ul class=\"tree-list tree-filhos\">\n\t\t\t@for (filho of no().filhos!; track filho.id) {\n\t\t\t\t<ui-tree-no [no]=\"filho\" [nivel]=\"nivel() + 1\" />\n\t\t\t}\n\t\t</ul>\n\t}\n</li>\n","import { Component, input, model, output, signal } from '@angular/core';\nimport { ITreeNode } from '../../interfaces/interfaces';\nimport { IUiTreeCtx, UI_TREE_CTX } from './ui-tree-ctx';\nimport { UiTreeNo } from './ui-tree-no';\n\n@Component({\n\tselector: 'ui-tree',\n\ttemplateUrl: './ui-tree.html',\n\tstyleUrl: './ui-tree.css',\n\timports: [UiTreeNo],\n\tproviders: [{ provide: UI_TREE_CTX, useExisting: UiTree }],\n})\nexport class UiTree implements IUiTreeCtx {\n\tnos = input<ITreeNode[]>([]);\n\tmultiplo = input<boolean>(false);\n\tselecionado = model<(string | number)[]>([]);\n\texpandidos = signal<Set<string | number>>(new Set());\n\tcarregarFilhos = output<ITreeNode>();\n\n\tisExpandido(id: string | number): boolean {\n\t\treturn this.expandidos().has(id);\n\t}\n\n\tisSelecionado(id: string | number): boolean {\n\t\treturn this.selecionado().includes(id);\n\t}\n\n\ttoggleExpandir(no: ITreeNode): void {\n\t\tconst set = new Set(this.expandidos());\n\t\tif (set.has(no.id)) {\n\t\t\tset.delete(no.id);\n\t\t} else {\n\t\t\tset.add(no.id);\n\t\t\tif (!no.filhos || no.filhos.length === 0) {\n\t\t\t\tthis.carregarFilhos.emit(no);\n\t\t\t}\n\t\t}\n\t\tthis.expandidos.set(set);\n\t}\n\n\ttoggleSelecionar(no: ITreeNode): void {\n\t\tif (no.desabilitado) return;\n\t\tconst atual = this.selecionado();\n\t\tif (this.multiplo()) {\n\t\t\tthis.selecionado.set(\n\t\t\t\tatual.includes(no.id) ? atual.filter(id => id !== no.id) : [...atual, no.id],\n\t\t\t);\n\t\t} else {\n\t\t\tthis.selecionado.set(atual.includes(no.id) ? [] : [no.id]);\n\t\t}\n\t}\n\n\tcoletarTodosFilhos(no: ITreeNode): (string | number)[] {\n\t\tconst ids: (string | number)[] = [];\n\t\tconst visitar = (n: ITreeNode) => {\n\t\t\tids.push(n.id);\n\t\t\tn.filhos?.forEach(f => visitar(f));\n\t\t};\n\t\tno.filhos?.forEach(f => visitar(f));\n\t\treturn ids;\n\t}\n\n\tselecionarTodos(no: ITreeNode): void {\n\t\tconst filhos = this.coletarTodosFilhos(no);\n\t\tthis.selecionado.set([...new Set([...this.selecionado(), no.id, ...filhos])]);\n\t}\n\n\tdesselecionarTodos(no: ITreeNode): void {\n\t\tconst paraRemover = new Set([no.id, ...this.coletarTodosFilhos(no)]);\n\t\tthis.selecionado.set(this.selecionado().filter(id => !paraRemover.has(id)));\n\t}\n}\n","<ul class=\"tree-list\">\n\t@for (no of nos(); track no.id) {\n\t\t<ui-tree-no [no]=\"no\" [nivel]=\"0\" />\n\t}\n</ul>\n","import { Component, input } from '@angular/core';\nimport { ITimelineItem } from '../../interfaces/interfaces';\n\n@Component({\n\tselector: 'ui-timeline',\n\ttemplateUrl: './ui-timeline.html',\n\tstyleUrl: './ui-timeline.css',\n})\nexport class UiTimeline {\n\titens = input<ITimelineItem[]>([]);\n}\n","<div class=\"timeline\">\n\t@for(item of itens(); track $index; let last = $last) {\n\t<div class=\"timeline-item\" [attr.data-tema]=\"item.tema ?? null\">\n\t\t<div class=\"timeline-left\">\n\t\t\t<div class=\"timeline-ponto\">\n\t\t\t\t@if(item.icone) {\n\t\t\t\t<i [class]=\"item.icone\"></i>\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t@if(!last) { <div class=\"timeline-linha\"></div> }\n\t\t</div>\n\t\t<div class=\"timeline-conteudo\">\n\t\t\t<div class=\"timeline-header\">\n\t\t\t\t<strong class=\"timeline-titulo\">{{ item.titulo }}</strong>\n\t\t\t\t@if(item.data) { <span class=\"timeline-data\">{{ item.data }}</span> }\n\t\t\t</div>\n\t\t\t@if(item.descricao) {\n\t\t\t<p class=\"timeline-descricao\">{{ item.descricao }}</p>\n\t\t\t}\n\t\t</div>\n\t</div>\n\t}\n</div>","import {\n Component, computed, effect, ElementRef, inject, OnDestroy,\n signal, TemplateRef, viewChild, ViewContainerRef\n} from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Subscription } from 'rxjs';\nimport { LibUtil } from '../../util/util';\nimport { LOG } from '../../util/log';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { IKV } from '../../interfaces/interfaces';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\nimport { criarOverlayConectado } from '../../elements/overlay/overlay.util';\nimport { toConnectedPositions } from '../../elements/overlay/overlay-position.util';\n\nexport interface IKVAutoCompletador extends IKV {\n selected: boolean;\n choosing: boolean;\n}\n\n@Component({\n selector: 'fields-autocomplete',\n templateUrl: './autocomplete.html',\n styleUrls: ['../fields.css', './autocomplete.css'],\n imports: [UiListErrors],\n})\nexport class FieldsAutocomplete extends BaseFieldsForm implements OnDestroy {\n\n elementRef: ElementRef = inject(ElementRef);\n private overlay = inject(Overlay);\n private vcr = inject(ViewContainerRef);\n\n isOpenedOptions = signal(false);\n markedOptionKey = signal<string | number | null | undefined>(null);\n\n options = computed<IKVAutoCompletador[]>(() => {\n const options = this.campo()?.options?.() || [];\n return options.filter((op: IKV) => op.v != null && op.v !== '').map((op: IKV) => ({\n ...op,\n selected: op.k === this.value(),\n choosing: op.k === this.markedOptionKey()\n }));\n });\n\n optionsFiltered = computed<IKVAutoCompletador[]>(() => {\n let words = this.value()?.toString().trim().split(\" \").filter((t: string) => t != \"\");\n const options = (this.options() || []).map(o => ({ ...o, html: o.v || `⚠️ Chave: ${o.k}` }));\n if (words.length === 0) return options;\n\n return options.filter(op => {\n for (const w of words) {\n let encontrado = false;\n if (op.v != null && LibUtil.contem(op.v, w)) {\n encontrado = true;\n }\n if (!encontrado) return false;\n }\n return true;\n }).map(op => {\n let data = op.v?.toString() || '';\n if (words.length > 0) {\n for (let word of words) {\n let w = word.toLowerCase();\n let preparedData = LibUtil.removeAcentos(data).toLowerCase();\n if (w != \"\" && preparedData.includes(w)) {\n if (new RegExp(`<[^>]*${w}[^>]*>`, 'i').test(preparedData.toString())) continue;\n let pos = preparedData.indexOf(w);\n data = data.slice(0, pos)\n + \"<mark>\"\n + data.slice(pos, pos + w.length)\n + \"</mark>\"\n + data.slice(pos + w.length);\n data = data.replaceAll(\"</mark><mark>\", \"\");\n }\n };\n }\n return { ...op, html: data };\n });\n });\n\n readonly triggerElement = viewChild<ElementRef>('triggerElement');\n readonly optionsTemplate = viewChild<TemplateRef<unknown>>('optionsTemplate');\n offsetWidth = signal<number>(0);\n\n private overlayRef: OverlayRef | null = null;\n private outsideSub: Subscription | null = null;\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n\n effect(() => {\n const el = this.triggerElement()?.nativeElement as HTMLElement;\n if (!el) return;\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n this.offsetWidth.set(entry.target.clientWidth - 4);\n }\n });\n resizeObserver.observe(el);\n return () => resizeObserver.disconnect();\n });\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this._dispose();\n }\n\n onInput(newValue: string) {\n if (newValue != \"\") {\n this.openOverlay();\n } else {\n this.closeOverlay();\n }\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n if (this.campo()?.onMatchOption) {\n let option = this.campo()?.options?.()?.find((op: IKV) => op.v === newValue);\n try {\n this.campo()?.onMatchOption?.(this.form(), option);\n } catch (err) {\n LOG(1, `❌ Erro ao executar onMatchOption do campo '${this.name.toString()}'`, err);\n }\n }\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n override onClickLabel() {\n super.onClickLabel();\n this.closeOverlay();\n }\n\n protected closeOverlay() {\n this._dispose();\n this.isOpenedOptions.set(false);\n this.markedOptionKey.set(null);\n }\n\n protected openOverlay() {\n if (this.overlayRef) return;\n\n const trigger = this.triggerElement();\n if (!trigger) return;\n\n this.overlayRef = criarOverlayConectado({\n overlay: this.overlay,\n trigger: trigger,\n positions: toConnectedPositions('bottom-start', 2),\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n minWidth: (trigger.nativeElement as HTMLElement).offsetWidth,\n panelClass: 'e-autocomplete-overlay-panel',\n });\n\n const tpl = this.optionsTemplate();\n if (tpl) {\n this.overlayRef.attach(new TemplatePortal(tpl, this.vcr));\n }\n\n this.isOpenedOptions.set(true);\n\n this.outsideSub = this.overlayRef.outsidePointerEvents().subscribe(() => {\n if (this.isOpenedOptions()) this.closeOverlay();\n });\n }\n\n onSelectOption(option?: IKV) {\n if (!option || option.k == null) {\n LOG(1, `❌ Chave nula (${option?.k}, classof: '${LibUtil.classof(option?.k)}'). Valor corresponde ${option?.v}`);\n return;\n }\n this.onInput(option.v?.toString() ?? '');\n this.closeOverlay();\n }\n\n markKey(event: KeyboardEvent) {\n const options = this.optionsFiltered();\n if (options.length === 0) return;\n let currentIndex = options.findIndex(op => op.k === this.markedOptionKey());\n let currentKV = options.find(op => op.k === this.markedOptionKey());\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n this.openOverlay();\n currentIndex = (currentIndex + 1) % options.length;\n this.markedOptionKey.set(options[currentIndex].k);\n this.moveScrollToMarkedOption();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n this.openOverlay();\n currentIndex = (currentIndex - 1 + options.length) % options.length;\n this.markedOptionKey.set(options[currentIndex].k);\n this.moveScrollToMarkedOption();\n } else if (event.key === 'Enter') {\n event.preventDefault();\n if (this.markedOptionKey() != null) {\n this.onSelectOption(currentKV);\n }\n this.closeOverlay();\n }\n }\n\n private moveScrollToMarkedOption() {\n setTimeout(() => {\n const container = this.overlayRef?.overlayElement?.querySelector<HTMLElement>('.options-list');\n const markedOption = container?.querySelector<HTMLElement>('.option-item.choosing');\n if (container && markedOption) {\n const containerTop = container.scrollTop;\n const containerBottom = containerTop + container.clientHeight;\n const optionTop = markedOption.offsetTop;\n const optionBottom = optionTop + markedOption.offsetHeight;\n if (optionTop < containerTop) {\n container.scrollTop = optionTop - 40;\n } else if (optionBottom > containerBottom) {\n container.scrollTop = optionBottom - container.clientHeight;\n }\n }\n }, 1);\n }\n\n private _dispose() {\n this.outsideSub?.unsubscribe();\n this.outsideSub = null;\n this.overlayRef?.dispose();\n this.overlayRef = null;\n }\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div #triggerElement class=\"fieldField FieldAutoComplete\">\n\t\t\t\t<div [class]=\"campo()?.classe\" [style]=\"campo()?.style\">\n\t\t\t\t\t<input type=\"text\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t\t[style]=\"campo()?.style\" (keyup)=\"markKey($event)\" (keydown.tab)=\"closeOverlay()\" [class.outlined]=\"true\"\n\t\t\t\t\t\t[class.input]=\"true\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>\n\n<ng-template #optionsTemplate>\n\t<div class=\"select-options-container\">\n\t\t<div class=\"options-list\">\n\t\t\t@for(option of optionsFiltered(); track option.k) {\n\t\t\t<div class=\"option-item\" [class.selected]=\"option.selected\" [style.width.px]=\"offsetWidth()\" [title]=\"option.v\"\n\t\t\t\t(click)=\"onSelectOption(option)\" (keyup.Enter)=\"onSelectOption(option)\" tabindex=\"-1\"\n\t\t\t\t[class.choosing]=\"option.choosing\">\n\t\t\t\t<div class=\"option-item-check\"></div>\n\t\t\t\t<div class=\"option-item-text\" [innerHTML]=\"option.html\"></div>\n\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t</div>\n</ng-template>\n","import { Component, effect } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\nimport { LOG } from '../../util/log';\n\n@Component({\n selector: 'fields-button',\n templateUrl: './button.html',\n styleUrls: ['../fields.css', './button.css'],\n imports: [UiButton, UiListErrors]\n})\nexport class FieldsButton extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onClickButton(ev: Event) {\n this.tocarCampo();\n if (this.campo()?.onClick) {\n try {\n this.campo()?.onClick?.(this.form());\n } catch (err) {\n LOG(1, '❌ Erro ao executar onClick do botão:', err);\n }\n }\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo ?? '&nbsp;' }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldButton\">\n\t\t\t\t<ui-button [tipo]=\"campo()?.tipoBotao\" [tema]=\"campo()?.tema\" [style]=\"campo()?.style\"\n\t\t\t\t\t(click)=\"onClickButton($event)\" [disabled]=\"campo()?.disabled\" [icone]=\"campo()?.icone\">\n\t\t\t\t\t<div [innerHTML]=\"campo()?.tituloClicavel\"></div>\n\t\t\t\t</ui-button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect, signal } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiCheckBox } from \"../../elements/ui-check-box/ui-check-box\";\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-checkbox',\n templateUrl: './checkbox.html',\n styleUrls: ['../fields.css', './checkbox.css'],\n imports: [UiCheckBox, UiListErrors],\n})\nexport class FieldsCheckbox extends BaseFieldsForm {\n\n signalFocus = signal<boolean>(false);\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onChange(newValue: boolean) {\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n ngAfterViewInit(): void {\n let val = this.value();\n this.updateValue(val === true || val === 'true' || val === 1 || val === '1', false);\n }\n\n toogleAtivo() {\n this.onChange(!this.value());\n this.signalFocus.set(true);\n setTimeout(() => {\n this.signalFocus.set(false);\n }, 1)\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldCheckbox microPos4\">\n\t\t\t\t<ui-check-box [value]=\"value()\" (changed)=\"onChange($event)\" [focus]=\"signalFocus()\"></ui-check-box>\n\t\t\t\t<div class=\"tituloClicavel\" (click)=\"toogleAtivo()\">\n\t\t\t\t\t{{ value() ? (campo()?.textoAtivo ?? campo()?.tituloClicavel ) : (campo()?.textoInativo ??\n\t\t\t\t\tcampo()?.tituloClicavel) }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, computed, input } from '@angular/core';\nimport { LibUtil } from '../../../util/util';\nimport { UiIcon } from '../../../elements/ui-icon/ui-icon';\n\n@Component({\n selector: 'field-color-circulocolorido',\n templateUrl: './circulocolorido.html',\n styleUrls: ['./circulocolorido.css'],\n imports: [UiIcon],\n})\nexport class CirculoColorido {\n\n valor = input<string | number | null>(null);\n\n angle = computed<number | null>(() => {\n let angle = this.valor();\n if (!angle) return null;\n if (LibUtil.classof(angle) === 'string') {\n let num = Number(angle);\n if (isNaN(num)) return 0;\n angle = num;\n }\n return angle as number | null;\n });\n\n}\n","<div class=\"container\" [style.--atualColor]=\"angle()\">\n\t<div class=\"circulo {{ angle() != null ? 'show' : 'hide' }}\"></div>\n\t@if(angle() != null){\n\t<div class=\"arrow\" [style.--arrowAngle]=\"(angle()! - 47) + 'deg'\">\n\t\t<ui-icon name=\"cursor-fill\"></ui-icon>\n\t</div>\n\t}\n</div>","import { Component, effect, OnInit } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { CirculoColorido } from './CirculoColorido/circulocolorido';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-color',\n templateUrl: './color.html',\n styleUrls: ['../fields.css', './color.css'],\n imports: [CirculoColorido, UiListErrors],\n})\nexport class FieldsColor extends BaseFieldsForm implements OnInit {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '' || val === 0;\n // if (val && LibUtil.classof(val) === 'number' && (val < 0 || val > 360)) {\n // errors = [...errors, Valide.msg.apenasEntre(0, 360)];\n // }\n this.updateCampo({ empty });\n });\n }\n\n override ngOnInit() {\n super.ngOnInit();\n this.onInput(this.value(), false);\n }\n\n onInput(newValue: string, touch: boolean = true) {\n let num = Number(newValue);\n if (isNaN(num)) num = 0;\n this.updateValue(num, touch);\n this.campo()?.onInput?.(this.form());\n }\n\n onInputRange(event: any) {\n let num = Number(event.target.value);\n if (isNaN(num)) num = 0;\n if (num < 0) num = 0;\n if (num > 360) num = 360;\n this.updateValue(num);\n this.campo()?.onInput?.(this.form());\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<field-color-circulocolorido [valor]=\"value()\"></field-color-circulocolorido>\n\t\t<div class=\"fieldComRange\">\n\t\t\t<div class=\"fieldEffect\">\n\t\t\t\t<div class=\"fieldField FieldColor\">\n\t\t\t\t\t<input type=\"number\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t\t[style]=\"campo()?.style\" min=\"0\" max=\"360\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<input type=\"range\" [value]=\"value() ?? 0\" (input)=\"onInputRange($event)\" min=\"0\" max=\"360\"\n\t\t\t\t[disabled]=\"campo()?.disabled\" (change)=\"onChangeEmit()\" />\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-date',\n templateUrl: './date.html',\n styleUrls: ['../fields.css'],\n imports: [UiListErrors],\n})\nexport class FieldsDate extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldDate\">\n\t\t\t\t<input type=\"date\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-datetime',\n templateUrl: './datetime.html',\n styleUrls: ['../fields.css'],\n imports: [UiListErrors],\n})\nexport class FieldsDatetime extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldDate\">\n\t\t\t\t<input type=\"datetime-local\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Pipe, PipeTransform } from '@angular/core';\nimport { LibUtil } from './util';\n\n@Pipe({ name: 'jsonColorido' })\nexport class JsonColoridoPipe implements PipeTransform {\n\n\ttransform(value: any, args?: any): string {\n\t\treturn LibUtil.formatJson(value, true);\n\t}\n\n}\n","import { Component, computed, effect, inject, OnInit } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\nimport { JsonColoridoPipe } from '../../util/JsonColorido.pipe';\n\n@Component({\n selector: 'fields-display',\n templateUrl: './display.html',\n styleUrls: ['../fields.css', './display.css'],\n imports: [UiListErrors, JsonColoridoPipe],\n})\nexport class FieldsDisplay extends BaseFieldsForm {\n\n sanitizer = inject(DomSanitizer);\n\n // Importante:\n // - Este campo não é editável, então não tem onChange ou onInput.\n // - Este campo não deve entrar no estado Pendente. A exibição foi removida e o fundo foi deixado transparente.\n\n readonly displayValue = computed<SafeHtml>(() => {\n let value = this.value();\n if (this.campo()?.mask) value = LibUtil.mascarar(value, this.campo()?.mask) ?? '';\n if (LibUtil.classof(value) === 'boolean') {\n value = value ? 'Sim' : 'Não';\n }\n if (value == null) {\n value = '';\n }\n return this.sanitizer.bypassSecurityTrustHtml(value.toString());\n });\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isEmpty]=\"campo()?.empty\" (click)=\"onClickEmit()\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldDisplay\">\n\t\t\t\t@if(campo()?.classe == 'displayJson') {\n\t\t\t\t<pre class=\"p-2\" [innerHTML]=\"value() | jsonColorido\"></pre>\n\t\t\t\t}@else {\n\t\t\t\t<div [class]=\"campo()?.classe\" [style]=\"campo()?.style\" [innerHTML]=\"displayValue()\"></div>\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, computed, effect, ElementRef, inject, OnInit, viewChild } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\nimport { LibUtil } from '../../util/util';\nimport { LOG } from '../../util/log';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-editor',\n templateUrl: './editor.html',\n styleUrls: ['../fields.css', './editor.css'],\n imports: [UiButton, UiListErrors],\n})\nexport class FieldsEditor extends BaseFieldsForm implements OnInit {\n\n sanitizer = inject(DomSanitizer);\n editavel = viewChild('editavel', { read: ElementRef });\n\n iconeJustifyLeft = 'align-left';\n iconeJustifyCenter = 'align-center';\n iconeJustifyRight = 'align-right';\n iconeJustify = 'align-justify';\n iconeNegrito = 'bold';\n iconeItalico = 'italic';\n iconeUnderline = 'underline';\n iconeClearFormat = 'eraser';\n\n isNegrito: boolean = false;\n isItalico: boolean = false;\n isSublinhado: boolean = false;\n currentJustify: 'left' | 'center' | 'right' | null = null;\n\n safeValue = computed<SafeHtml>(() => {\n let value = this.value();\n if (value == null) {\n value = '';\n }\n return this.sanitizer.bypassSecurityTrustHtml(value.toString());\n });\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n override ngOnInit() {\n super.ngOnInit();\n this.inicializarEstados();\n }\n\n onInput(ev?: Event, cursorPosition?: { start: number; end: number, plus: number } | null) {\n if (this.campo()?.disabled) return;\n let eEditavel = this.editavel()?.nativeElement as HTMLDivElement;\n if (!eEditavel) return;\n let texto = eEditavel.innerHTML;\n if (!texto) return;\n\n // Salva a posição do cursor apenas quando o usuário está digitando\n if (cursorPosition === undefined) {\n cursorPosition = ev ? LibUtil.saveCursorPosition(eEditavel) : null;\n }\n\n // Converte <br> em [br]s para preservar quebras de linha\n texto = texto.replace(/<br>/g, '[br]');\n\n // Ao ocorrer mudança aqui, deve-se retirar todas as tags de hipertexto e depois aplicar apenas as que estão ativas.\n texto = LibUtil.removeHtmlTags(texto);\n\n // Restaura as quebras de linha\n texto = texto.replace(/\\[br\\]/g, '<br>');\n if (texto === \"<br>\") {\n texto = \"\";\n }\n\n if (this.isNegrito) {\n texto = `<b>${texto}</b>`;\n }\n if (this.isItalico) {\n texto = `<i>${texto}</i>`;\n }\n if (this.isSublinhado) {\n texto = `<u>${texto}</u>`;\n }\n if (this.currentJustify) {\n texto = `<div style=\"text-align: ${this.currentJustify};\">${texto}</div>`;\n }\n eEditavel.innerHTML = texto;\n\n if (cursorPosition) {\n LibUtil.restoreCursorPosition(eEditavel, cursorPosition);\n }\n\n this.campo()?.onInput?.(this.form());\n }\n\n onChange() {\n if (this.campo()?.disabled) return;\n let eEditavel = this.editavel()?.nativeElement as HTMLDivElement;\n if (!eEditavel) return;\n\n let texto = eEditavel.innerHTML;\n this.updateValue(texto);\n\n this.onChangeEmit();\n }\n\n onDragEvent(dragEvent: DragEvent) {\n if (this.campo()?.disabled) return;\n const dataTransfer = dragEvent.dataTransfer;\n if (!dataTransfer) return;\n\n // Drag and Drop não é suportado.\n dragEvent.preventDefault();\n dragEvent.stopPropagation();\n const text = dataTransfer.getData('text/plain');\n LOG(1, \"Drag and Drop Text: \", text, dragEvent);\n }\n\n onNegrito() {\n if (this.campo()?.disabled) return;\n this.isNegrito = !this.isNegrito;\n this.onInput();\n this.onChange();\n }\n onItalico() {\n if (this.campo()?.disabled) return;\n this.isItalico = !this.isItalico;\n this.onInput();\n this.onChange();\n }\n onSublinhado() {\n if (this.campo()?.disabled) return;\n this.isSublinhado = !this.isSublinhado;\n this.onInput();\n this.onChange();\n }\n onJustify(direction: 'left' | 'center' | 'right') {\n if (this.campo()?.disabled) return;\n if (this.currentJustify === direction) {\n this.currentJustify = null;\n this.onInput();\n this.onChange();\n return;\n }\n this.currentJustify = direction;\n this.onInput();\n this.onChange();\n }\n\n\n onClearFormat() {\n if (this.campo()?.disabled) return;\n let eEditavel = this.editavel()?.nativeElement as HTMLDivElement;\n if (!eEditavel) return;\n let texto = eEditavel.innerHTML;\n if (!texto) return;\n\n this.currentJustify = null;\n this.isNegrito = false;\n this.isItalico = false;\n this.isSublinhado = false;\n\n texto = LibUtil.removeHtmlTags(texto);\n eEditavel.innerHTML = texto;\n this.onChange();\n }\n\n onKeyDown(event: KeyboardEvent) {\n if (this.campo()?.disabled) return;\n if (event.key === 'Enter') {\n event.preventDefault();\n\n const eEditavel = this.editavel()?.nativeElement as HTMLDivElement;\n if (!eEditavel) return;\n\n // Salva a posição do cursor\n const cursorPosition = LibUtil.saveCursorPosition(eEditavel, 1);\n\n // Insere uma quebra de linha (<br>) na posição do cursor\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n range.deleteContents();\n\n const br = document.createElement('br');\n range.insertNode(br);\n\n // Move o cursor para depois do <br>\n range.setStartAfter(br);\n range.setEndAfter(br);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n\n this.onInput(undefined, cursorPosition);\n }\n }\n\n inicializarEstados() {\n let valor = this.value();\n if (typeof valor !== 'string' || !valor) return;\n valor = valor.toLowerCase();\n\n this.isNegrito = valor.includes('<b>') && valor.includes('</b>');\n this.isItalico = valor.includes('<i>') && valor.includes('</i>');\n this.isSublinhado = valor.includes('<u>') && valor.includes('</u>');\n if (valor.includes('text-align: left')) {\n this.currentJustify = 'left';\n } else if (valor.includes('text-align: center')) {\n this.currentJustify = 'center';\n } else if (valor.includes('text-align: right')) {\n this.currentJustify = 'right';\n }\n }\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField fieldEditor\">\n\t\t\t\t@if(campo()?.showToolbar !== false) {\n\t\t\t\t<div class=\"toolbar\">\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [class.ativo]=\"isNegrito\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t\t(click)=\"onNegrito()\" [iconeNome]=\"iconeNegrito\"></ui-button>\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [class.ativo]=\"isItalico\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t\t(click)=\"onItalico()\" [iconeNome]=\"iconeItalico\"></ui-button>\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [class.ativo]=\"isSublinhado\"\n\t\t\t\t\t\t[disabled]=\"campo()?.disabled\" (click)=\"onSublinhado()\" [iconeNome]=\"iconeUnderline\"></ui-button>\n\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone espaco\" [class.ativo]=\"currentJustify === 'left'\"\n\t\t\t\t\t\t[disabled]=\"campo()?.disabled\" (click)=\"onJustify('left')\" [iconeNome]=\"iconeJustifyLeft\"></ui-button>\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [class.ativo]=\"currentJustify === 'center'\"\n\t\t\t\t\t\t[disabled]=\"campo()?.disabled\" (click)=\"onJustify('center')\" [iconeNome]=\"iconeJustifyCenter\"></ui-button>\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [class.ativo]=\"currentJustify === 'right'\"\n\t\t\t\t\t\t[disabled]=\"campo()?.disabled\" (click)=\"onJustify('right')\" [iconeNome]=\"iconeJustifyRight\"></ui-button>\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" class=\"icone\" [disabled]=\"campo()?.disabled\" (click)=\"onClearFormat()\"\n\t\t\t\t\t\t[iconeNome]=\"iconeClearFormat\"></ui-button>\n\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t<div #editavel [class.corpo]=\"true\" [contentEditable]=\"!campo()?.disabled && !campo()?.readonly\"\n\t\t\t\t\t[class]=\"campo()?.classe\" [style]=\"campo()?.style\" (input)=\"onInput($event)\" [innerHTML]=\"safeValue()\"\n\t\t\t\t\t(blur)=\"onChange()\" (drop)=\"onDragEvent($event)\" (keydown)=\"onKeyDown($event)\"></div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-email',\n templateUrl: './email.html',\n styleUrls: ['../fields.css'],\n imports: [UiListErrors],\n})\nexport class FieldsEmail extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldEmail\">\n\t\t\t\t<input type=\"email\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\n\n@Component({\n selector: 'fields-hidden',\n templateUrl: './hidden.html',\n styles: `.fieldHidden{display: none;}`\n})\nexport class FieldsHidden extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n}\n","<div class=\"fieldHidden\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\"></div>","import { Component, effect } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-icon',\n templateUrl: './icon.html',\n styleUrls: ['../fields.css', './icon.css'],\n imports: [UiButton, UiListErrors]\n})\nexport class FieldsIcon extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<ui-button tipo=\"raised\" tema=\"secondary\" (clicked)=\"onClickEmit()\" [disabled]=\"campo()?.disabled\"\n\t\t\t[style.width.px]=\"100\">\n\t\t\t@if(value()){\n\t\t\t<i [class]=\"value()\" [style.fontSize]=\"'25px'\"></i>\n\t\t\t}@else {\n\t\t\t<div class=\"noIcon\">ICO</div>\n\t\t\t}\n\t\t</ui-button>\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldIconType\">\n\t\t\t\t<input type=\"text\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { AfterViewInit, Component, effect, ElementRef, viewChild } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { LOG } from '../../util/log';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\ninterface ICode {\n [key: string]: string;\n}\n\n@Component({\n selector: 'fields-multifactor',\n templateUrl: './multifactor.html',\n styleUrls: ['../fields.css', './multifactor.css'],\n imports: [UiListErrors],\n})\nexport class FieldsMultifactor extends BaseFieldsForm implements AfterViewInit {\n\n code: ICode = {};\n controle = viewChild('controle', { read: ElementRef });\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n if (this.campo()?.autofocus && this.controle()?.nativeElement) {\n this.controle()?.nativeElement.focus();\n }\n }, 100);\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n\n onInputChar(ev: Event) {\n let e = (ev.target as HTMLInputElement);\n let v = e.value;\n let name = e.name;\n let order = \"abcdef\";\n let nextInputName: String = \"b\";\n let isLast = false;\n\n if (v && v != \"\" && \"0123456789\".includes(v)) {\n // Só seta no objeto se for válido\n this.code[name] = v;\n // Identificar próximo campo\n nextInputName = order.charAt(order.indexOf(name) + 1);\n // Tentativa de focar próximo elemento\n let nextE = (document.querySelector(`.fieldSingleInput[name='${nextInputName}']`) as HTMLInputElement | null);\n if (nextE) {\n nextE.focus();\n } else {\n isLast = true;\n }\n } else {\n e.value = \"\";\n delete this.code[name];\n }\n\n // Seta valor do campo de forma ordenada\n let novoValor = Object.values(Object.fromEntries(Object.entries(this.code).sort())).join(\"\");\n this.updateValue(novoValor);\n\n // Verifica se completou\n if (this.campo()?.onComplete && novoValor.length == 6 && isLast) {\n try {\n this.campo()?.onComplete?.(this.form(), novoValor);\n this.onChangeEmit();\n } catch (err) {\n LOG(1, `❌ Erro ao executar onMatch do campo '${this.name.toString()}'`, err);\n }\n }\n }\n\n onKeyUp(ev: KeyboardEvent) {\n let key = ev.key;\n let e = (ev.target as HTMLInputElement);\n let v = e.value;\n if (e && v == \"\" && key == \"Backspace\") {\n let order = \"abcdef\";\n let indexOf = order.indexOf(e.name);\n let nextInputName: String = order.charAt(indexOf - 1);\n // Tentativa de focar próximo elemento\n let nextE = (document.querySelector(`.fieldSingleInput[name='${nextInputName}']`) as HTMLInputElement | null);\n if (nextE) {\n if (nextE.value != \"\") {\n nextE.focus();\n }\n }\n }\n }\n\n onFocus(ev: Event) {\n (ev.target as HTMLInputElement)?.select();\n }\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldMultifactor\">\n\t\t\t\t<input type=\"text\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" [name]=\"campo()?.prop\"\n\t\t\t\t\t[disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [hidden]=\"true\" [readOnly]=\"true\" />\n\n\t\t\t\t<div class=\"gridFactor\">\n\t\t\t\t\t<input #controle class=\"fieldSingleInput\" name=\"a\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\n\t\t\t\t\t<input class=\"fieldSingleInput\" name=\"b\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\n\t\t\t\t\t<input class=\"fieldSingleInput\" name=\"c\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\n\t\t\t\t\t<input class=\"fieldSingleInput\" name=\"d\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\n\t\t\t\t\t<input class=\"fieldSingleInput\" name=\"e\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\n\t\t\t\t\t<input class=\"fieldSingleInput\" name=\"f\" size=\"1\" type=\"text\" [maxLength]=\"1\" min=\"0\" max=\"9\"\n\t\t\t\t\t\tpattern=\"\\d{1,1}\" (input)=\"onInputChar($event)\" (keyup)=\"onKeyUp($event)\" (focus)=\"onFocus($event)\"\n\t\t\t\t\t\t[class.corpo]=\"true\" [class.input]=\"true\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect, OnInit } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-multitext',\n templateUrl: './multitext.html',\n styleUrls: ['../fields.css', './multitext.css'],\n imports: [UiButton, UiListErrors],\n})\nexport class FieldsMultiText extends BaseFieldsForm implements OnInit {\n\n items: string[] | null = [];\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n if (val && Array.isArray(val) && val.length <= 0) empty = true;\n // if (!Array.isArray(val)) errors = [...errors, Valide.msg.apenasLista];\n this.updateCampo({ empty });\n });\n }\n\n override ngOnInit() {\n super.ngOnInit();\n let value = this.value();\n if (value && Array.isArray(value)) this.items = value ?? [];\n else this.items = [];\n }\n\n ngAfterViewInit(): void {\n this.updateValue(this.items ?? [], false);\n }\n\n onInput(newValue: string) {\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n onClickAddItem() {\n let value = \"\";\n if (!this.items) this.items = [];\n this.items = [...this.items, value];\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n\n setTimeout(() => {\n let allInputs = (document.querySelectorAll(`.FieldMultiText .input`) as NodeListOf<HTMLInputElement> | null);\n if (allInputs && allInputs.length > 0) {\n allInputs[allInputs.length - 1].focus();\n }\n }, 1);\n }\n\n onClickDelItem(index: number) {\n this.items = this.items?.filter((v, i) => i != index) ?? [];\n if (this.items && this.items?.length <= 0) this.items = [];\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n _onLocalInput(value: string, index: number) {\n if (this.items) this.items[index] = value;\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldMultiText\">\n\t\t\t\t@if(campo()?.showHeader){\n\t\t\t\t<div>Itens</div>\n\t\t\t\t<div class=\"action\"></div>\n\t\t\t\t}\n\t\t\t\t@for (item of items; track $index) {\n\t\t\t\t<div>\n\t\t\t\t\t<input type=\"text\" [value]=\"item\" [name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t\t[placeholder]=\"campo()?.placeholder ?? ''\" [class]=\"campo()?.classe\" [style]=\"campo()?.style\"\n\t\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class.input]=\"true\"\n\t\t\t\t\t\t[class.outlined]=\"true\" (input)=\"_onLocalInput($event.target.value, $index)\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"action\">\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"error\" title=\"Remover Linha\" (click)=\"onClickDelItem($index)\"\n\t\t\t\t\t\ticoneNome=\"trash\">\n\t\t\t\t\t</ui-button>\n\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t<div class=\"add\">\n\t\t\t\t\t<ui-button tipo=\"nofill\" tema=\"primary\" title=\"Adicionar Linha\" (click)=\"onClickAddItem()\"\n\t\t\t\t\t\ticoneNome=\"plus-circle\">\n\t\t\t\t\t\tAdicionar Linha\n\t\t\t\t\t</ui-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-number',\n templateUrl: './number.html',\n styleUrls: ['../fields.css'],\n imports: [UiListErrors],\n})\nexport class FieldsNumber extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '' || val === 0;\n this.updateCampo({ empty });\n });\n }\n\n ngAfterViewInit(): void {\n this.onInput(this.value(), false);\n }\n\n onInput(newValue: string, touch: boolean = true) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n let num = parseFloat(newValue);\n if (isNaN(num)) num = 0;\n this.updateValue(num, touch);\n this.campo()?.onInput?.(this.form());\n }\n\n}","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldText\">\n\t\t\t\t<input type=\"number\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [readOnly]=\"campo()?.readonly ?? false\" [class.outlined]=\"true\"\n\t\t\t\t\t[class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect, signal } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\nimport { UiIcon } from '../../elements/ui-icon/ui-icon';\n\n@Component({\n selector: 'fields-password',\n templateUrl: './password.html',\n styleUrls: ['../fields.css'],\n imports: [UiButton, UiListErrors, UiIcon],\n})\nexport class FieldsPassword extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n // Exibir e Ocultar Senha\n hide = signal(true);\n _aoClicarVerSenha(event: MouseEvent) {\n this.hide.set(!this.hide());\n event.stopPropagation();\n }\n}\n\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldPassword\">\n\t\t\t\t<input [type]=\"hide() ? 'password' : 'text'\" [value]=\"value()\" (input)=\"onInput($event.target.value)\"\n\t\t\t\t\t(change)=\"onChangeEmit()\" [name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t[placeholder]=\"campo()?.placeholder ?? ''\" [class]=\"campo()?.classe\" [style]=\"campo()?.style\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class.outlined]=\"true\"\n\t\t\t\t\t[class.input]=\"true\" />\n\t\t\t\t<ui-button tipo=\"icon\" tema=\"primary\" (click)=\"_aoClicarVerSenha($event)\" aria-label=\"Oculta ou Exibe Senha\"\n\t\t\t\t\ttitle=\"Oculta ou Exibe Senha\" [aria-pressed]=\"hide()\">\n\t\t\t\t\t<ui-icon [name]=\"hide() ? 'eye-slash' : 'eye'\"></ui-icon>\n\t\t\t\t</ui-button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, computed, effect, ElementRef, viewChild } from '@angular/core';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\nimport { UiProcurar } from \"../../elements/ui-procurar/ui-procurar\";\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\n\n@Component({\n selector: 'fields-search',\n templateUrl: './search.html',\n styleUrls: ['../fields.css', './search.css'],\n imports: [UiListErrors, UiProcurar],\n})\nexport class FieldsSearch extends BaseFieldsForm {\n\n readonly searchInput = viewChild<ElementRef>('searchInput');\n\n isCollapsed = computed(() => this.campo()?.isCollapsed?.() ?? false);\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n // Limpa o filtro de opções\n onClearSearch() {\n this.updateValue(\"\");\n this.focusSearchInput();\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n focusSearchInput() {\n this.searchInput()?.nativeElement?.focus();\n }\n\n onClickSearchIcon() {\n this.focusSearchInput();\n this.onChangeEmit();\n }\n\n onSearch() {\n this.onChangeEmit();\n }\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\"\n\t[class.isCollapsed]=\"isCollapsed()\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldSearch\">\n\t\t\t\t<ui-procurar [value]=\"value()\" [name]=\"campo()?.prop\" (inputed)=\"onInput($event)\" (changed)=\"onChangeEmit()\"\n\t\t\t\t\t[colapsed]=\"isCollapsed()\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t[placeholder]=\"campo()?.placeholder ?? 'Procurar...'\"></ui-procurar>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, computed, effect, OnInit, signal } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiSelect } from '../../elements/ui-select/ui-select';\nimport { IOptionValue } from '../../elements/ui-select/ui-select';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\nimport { LOG } from '../../util/log';\n\n\n@Component({\n selector: 'fields-select',\n templateUrl: './select.html',\n styleUrls: ['../fields.css', './select.css'],\n imports: [UiSelect, UiListErrors],\n})\nexport class FieldsSelect extends BaseFieldsForm {\n\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n // Um Refill pode estar em andamento enquanto este componente é iniciado.\n // Utilize o campo.mapear ou campo.refill para alterar o comportamento do refill inicial.\n\n\n fieldOptions = computed(() => {\n return this.campo()?.options?.() ?? [];\n });\n\n\n // Manipula mudança de valor (valueOfK não chegará nulo ou undefined)\n onChange(optionValue: IOptionValue) {\n let newValue: any = optionValue.keys;\n\n if (this.campo()?.onMatchOption && optionValue.optionChanged) {\n try {\n this.campo()?.onMatchOption?.(this.form(), optionValue.optionChanged);\n } catch (err) {\n LOG(1, `❌ Erro ao executar onMatchOption do campo '${this.name()}'`, err);\n }\n }\n\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n}","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldSelect\">\n\t\t\t\t<ui-select [value]=\"this.value()\" [options]=\"fieldOptions()\" (changed)=\"onChange($event)\"\n\t\t\t\t\t[multiple]=\"this.campo()?.multiple ?? false\" [name]=\"this.campo()?.prop\" [textEmpty]=\"this.campo()?.textEmpty\"\n\t\t\t\t\t[canUnselect]=\"campo()?.canUnselect\"></ui-select>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { AfterViewInit, Component, effect, signal } from '@angular/core';\nimport { UiSlide } from '../../elements/ui-slide/ui-slide';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-slide',\n templateUrl: './slide.html',\n styleUrls: ['../fields.css', './slide.css'],\n imports: [UiSlide, UiListErrors],\n})\nexport class FieldsSlide extends BaseFieldsForm implements AfterViewInit {\n\n signalFocus = signal<boolean>(false);\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onChange(newValue: boolean) {\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n ngAfterViewInit(): void {\n let val = this.value();\n this.updateValue(val === true || val === 'true' || val === 1 || val === '1', false);\n }\n\n toogleAtivo() {\n this.onChange(!this.value());\n this.signalFocus.set(true);\n setTimeout(() => {\n this.signalFocus.set(false);\n }, 1)\n }\n\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldSlide microPos4\">\n\t\t\t\t<ui-slide [value]=\"value()\" (changed)=\"onChange($event)\" [focus]=\"signalFocus()\"></ui-slide>\n\t\t\t\t<div class=\"tituloClicavel\" (click)=\"toogleAtivo()\">\n\t\t\t\t\t{{ value() ? (campo()?.textoAtivo ?? campo()?.tituloClicavel ) : (campo()?.textoInativo ??\n\t\t\t\t\tcampo()?.tituloClicavel) }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { LibUtil } from '../../util/util';\nimport { UiListErrors } from '../../elements/ui-list-errors/ui-list-errors';\n\n@Component({\n selector: 'fields-text',\n templateUrl: './text.html',\n styleUrls: ['../fields.css'],\n imports: [UiListErrors]\n})\nexport class FieldsText extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldText\">\n\t\t\t\t<input type=\"text\" [value]=\"value() ?? ''\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, computed, effect, ElementRef, OnInit, signal, viewChild } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { LibUtil } from '../../util/util';\nimport { LOG } from '../../util/log';\nimport { UiDropZone } from '../../elements/ui-drop-zone/ui-drop-zone';\nimport { IDropOutput, IFileMetadata } from '../../interfaces/interfaces';\nimport { UiFileList } from '../../elements/ui-file-list/ui-file-list';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\nimport { UiIcon } from '../../elements/ui-icon/ui-icon';\n\n@Component({\n selector: 'fields-upload',\n templateUrl: './upload.html',\n styleUrls: ['../fields.css', './upload.css'],\n imports: [UiDropZone, UiFileList, UiListErrors, UiIcon],\n})\nexport class FieldsUpload extends BaseFieldsForm implements OnInit {\n\n multiple: boolean = false;\n inputFile = viewChild('inputFile', { read: ElementRef })\n acceptFormats: string = \"\";\n sobrepondo = signal<boolean>(true);\n\n acceptFormatsShow = computed<string>(() => {\n return this.acceptFormats.split(',').map(ext => ext.trim().toUpperCase().slice(1)).join(', ');\n });\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n this.sobrepondo.set(empty);\n });\n }\n override ngOnInit() {\n super.ngOnInit();\n this.multiple = this.campo()?.multiple ?? false;\n this.acceptFormats = this.campo()?.accept ?? \"\";\n }\n\n onChange(newValue: IFileMetadata[]) {\n let campo = this.campo();\n if (!campo) return;\n if (campo.disabled) return;\n // Filtra apenas os arquivos válidos\n newValue = newValue.filter(file => this.validarImagem(file));\n // Atualiza o valor do campo\n let valueToUpdate: any = this.multiple ? newValue : newValue[newValue.length - 1];\n this.updateValue(valueToUpdate);\n\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n filesList = computed<IFileMetadata[]>(() => {\n let val = (this.value() as IFileMetadata[] | IFileMetadata | string | undefined);\n if (this.multiple) {\n // Quando é multiplo, ja vem um array.\n return val as IFileMetadata[];\n } else {\n // Quando não é multiplo, vem um objeto, mas precisa ser tratado como array.\n if (val && val !== '') {\n return [val as IFileMetadata];\n } else {\n return [];\n }\n }\n });\n\n // Adiciona arquivos recebidos do DropZone\n onDropped(content: IDropOutput) {\n if (this.campo()?.disabled) return;\n if (content.tipo !== \"file\" || !content.data || !(content.data instanceof Array)) return;\n let dataFiles: IFileMetadata[] = content.data;\n this.onAddFile(dataFiles);\n }\n\n // Remove arquivo da lista\n onRemove(file: IFileMetadata) {\n if (this.campo()?.disabled) return;\n let currentFiles = this.filesList();\n const index = currentFiles.findIndex(f => f.size === file.size);\n if (index > -1) {\n currentFiles.splice(index, 1);\n this.onChange(currentFiles);\n }\n }\n\n onAddFile(newFiles: IFileMetadata[]) {\n if (this.campo()?.disabled) return;\n let newValues: IFileMetadata[] = [];\n if (this.multiple) {\n newValues = [\n ...this.filesList() ?? [],\n ...newFiles,\n ];\n } else {\n newValues = newFiles.slice(-1);\n }\n this.onChange(newValues);\n }\n\n async onChangedInputFile(ev: Event) {\n if (this.campo()?.disabled) return;\n const inputElement = ev.target as HTMLInputElement;\n if (inputElement.files && inputElement.files.length > 0) {\n for await (let newFile of inputElement.files) {\n let lastIndexOf = newFile.name.lastIndexOf(\".\");\n let extension = newFile.name.slice(lastIndexOf);\n let base64: string | null = await LibUtil.fileReader(newFile);\n if (!base64) { LOG(1, `❌ Ocorreu um erro com o arquivo ${newFile.name}.`); continue; }\n this.onAddFile([{\n base64,\n name: newFile.name,\n size: newFile.size,\n extension, // inclui o \".\"\n type: newFile.type,\n lastModifiedIso: new Date(newFile.lastModified).toISOString(),\n }]);\n }\n inputElement.value = '';\n }\n }\n\n validarImagem(file: IFileMetadata): boolean {\n if (!file.extension) return false;\n const validExtensions = this.acceptFormats.split(',').map(ext => ext.trim().toLowerCase());\n return validExtensions.includes(file.extension.toLowerCase());\n }\n\n onClickUpload() {\n // Se o alvo do click for mesmo o elemento dropzone (CSS ignora alguns elementos)\n if (this.inputFile() && this.inputFile()?.nativeElement) {\n this.inputFile()?.nativeElement.click();\n }\n }\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldUpload\">\n\n\t\t\t\t<ui-drop-zone (changed)=\"onDropped($event)\" [disabled]=\"campo()?.disabled\" (clicked)=\"onClickUpload()\"\n\t\t\t\t\t[sobrepor]=\"sobrepondo()\">\n\t\t\t\t\t@if(filesList().length > 0) {\n\n\t\t\t\t\t<ui-file-list [filesList]=\"filesList()\" (remove)=\"onRemove($event)\"\n\t\t\t\t\t\t[disabled]=\"campo()?.disabled\"></ui-file-list>\n\n\t\t\t\t\t} @else {\n\n\t\t\t\t\t<div class=\"fieldDidplayUpload\">\n\t\t\t\t\t\t<ui-icon name=\"cloud-upload\"></ui-icon>\n\t\t\t\t\t\t<div class=\"f-s-16\"><span class=\"text-primary\">Solte</span> seu arquivo aqui</div>\n\t\t\t\t\t\t<div class=\"f-s-14\"><span class=\"text-primary\">ou clique</span> para procurar</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t}\n\t\t\t\t</ui-drop-zone>\n\n\t\t\t\t<div [style.display]=\"'none'\">\n\t\t\t\t\t<input #inputFile type=\"file\" [accept]=\"acceptFormats\" [multiple]=\"campo()?.multiple\"\n\t\t\t\t\t\t(change)=\"onChangedInputFile($event)\" [disabled]=\"campo()?.disabled\" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t@if(acceptFormats){\n\t<div class=\"dica\">Formatos: {{ acceptFormatsShow() }}</div>\n\t}\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\n\n@Component({\n selector: 'fields-time',\n templateUrl: './time.html',\n styleUrls: ['../fields.css'],\n imports: [UiListErrors],\n})\nexport class FieldsTime extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(newValue: string) {\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldTime\">\n\t\t\t\t<input type=\"time\" [value]=\"value()\" (input)=\"onInput($event.target.value)\" (change)=\"onChangeEmit()\"\n\t\t\t\t\t[name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\"\n\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\"\n\t\t\t\t\t[style]=\"campo()?.style\" [class.outlined]=\"true\" [class.input]=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { LibUtil } from '../../util/util';\nimport { UiListErrors } from '../../elements/ui-list-errors/ui-list-errors';\n\n@Component({\n selector: 'fields-textarea',\n templateUrl: './textarea.html',\n styleUrls: ['../fields.css', './textarea.css'],\n imports: [UiListErrors]\n})\nexport class FieldsTextarea extends BaseFieldsForm {\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n this.updateCampo({ empty });\n });\n }\n\n onInput(event: Event) {\n let newValue = (event.target as HTMLTextAreaElement).value;\n if (this.campo()?.mask) newValue = LibUtil.mascarar(newValue, this.campo()?.mask) ?? '';\n this.updateValue(newValue);\n this.campo()?.onInput?.(this.form());\n\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldTextArea\">\n\t\t\t\t<textarea [value]=\"value()\" (input)=\"onInput($event)\" (change)=\"onChangeEmit()\" [name]=\"campo()?.prop\"\n\t\t\t\t\t[disabled]=\"campo()?.disabled\" [placeholder]=\"campo()?.placeholder ?? ''\" [attr.maxLength]=\"campo()?.maxl\"\n\t\t\t\t\t[attr.minLength]=\"campo()?.minl\" [class]=\"campo()?.classe\" [style]=\"campo()?.style\" [class.outlined]=\"true\"\n\t\t\t\t\t[rows]=\"campo()?.rows ?? 5\" [cols]=\"campo()?.cols\" [attr.readonly]=\"campo()?.readonly ? true : null\"\n\t\t\t\t\t[class.input]=\"true\"></textarea>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { Component, effect, OnInit } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\nimport { UiButton } from \"../../elements/ui-button/ui-button\";\nimport { UiListErrors } from \"../../elements/ui-list-errors/ui-list-errors\";\nimport { IKV } from '../../interfaces/interfaces';\n\n@Component({\n selector: 'fields-multikv',\n templateUrl: './multikv.html',\n styleUrls: ['../fields.css', './multikv.css'],\n imports: [UiButton, UiListErrors],\n})\nexport class FieldsMultiKV extends BaseFieldsForm implements OnInit {\n\n // Componente para adicionar ou retirar itens em forma KV (Como usado nos seletores)\n items: IKV[] | null = [];\n\n constructor() {\n super();\n effect(() => {\n const val = this.value();\n let empty = val === null || val === undefined || val === '';\n if (val && Array.isArray(val) && val.length <= 0) empty = true;\n // if (!Array.isArray(val)) errors = [...errors, Valide.msg.apenasLista];\n this.updateCampo({ empty });\n });\n }\n\n override ngOnInit() {\n super.ngOnInit();\n let value = this.value();\n if (value && Array.isArray(value)) this.items = value ?? [];\n else this.items = [];\n }\n\n ngAfterViewInit(): void {\n this.updateValue(this.items ?? [], false);\n }\n\n onClickAddItem() {\n let value: IKV = this.campo()?.value ?? { k: \"\", v: \"\" };\n if (!this.items) this.items = [];\n this.items = [...this.items, value];\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n\n setTimeout(() => {\n let allInputs = (document.querySelectorAll(`.FieldMultiText .input`) as NodeListOf<HTMLInputElement> | null);\n if (allInputs && allInputs.length > 0) {\n allInputs[allInputs.length - 1].focus();\n }\n }, 1);\n }\n\n onClickDelItem(index: number) {\n this.items = this.items?.filter((v, i) => i != index) ?? [];\n if (this.items && this.items?.length <= 0) this.items = [];\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n this.onChangeEmit();\n }\n\n _onLocalInputK(key: string, index: number) {\n if (this.items) this.items[index].k = key;\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n }\n\n _onLocalInputV(value: string, index: number) {\n if (this.items) this.items[index].v = value;\n this.updateValue(this.items);\n this.campo()?.onInput?.(this.form());\n }\n\n _onLocalChangeK(key: string, index: number) {\n if (this.items) this.items[index].k = key;\n this.updateValue(this.items);\n this.onChangeEmit();\n }\n\n _onLocalChangeV(value: string, index: number) {\n if (this.items) this.items[index].v = value;\n this.updateValue(this.items);\n this.onChangeEmit();\n }\n\n}\n","<div class=\"fieldContainer\" [class.isTouched]=\"campo()?.touched\" [class.showTouched]=\"form().showTouched()\"\n\t[class.isInvalid]=\"campo()?.invalid\" [class.isDisabled]=\"campo()?.disabled\" [class.isReadonly]=\"campo()?.readonly\"\n\t[class.isNeed]=\"campo()?.need\" [class.isPending]=\"campo()?.pending\" [class.isEmpty]=\"campo()?.empty\">\n\t<div class=\"fieldLabel\" (click)=\"onClickLabel()\" [class.hideLabel]=\"campo()?.hideLabel\">\n\t\t@if(campo()?.icone){ <div class=\"fieldIcon\"><i [class]=\"campo()?.icone\"></i></div> }\n\t\t{{ campo()?.titulo }}\n\t</div>\n\t<div class=\"fieldControl doCampo\">\n\t\t<div class=\"fieldEffect\">\n\t\t\t<div class=\"fieldField FieldMultiKv\">\n\t\t\t\t@if(campo()?.showHeader != false){\n\t\t\t\t<div class=\"header\">{{ campo()?.tituloChave ?? 'Chaves'}}</div>\n\t\t\t\t<div class=\"header\">{{ campo()?.tituloValor ?? 'Valores'}}</div>\n\t\t\t\t<div class=\"header action\"></div>\n\t\t\t\t}\n\t\t\t\t@for (item of items; track $index) {\n\t\t\t\t<div>\n\t\t\t\t\t<input type=\"text\" [value]=\"item.k\" [name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t\t[placeholder]=\"campo()?.placeholder ?? ''\" [class]=\"campo()?.classe\" [style]=\"campo()?.style\"\n\t\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class.input]=\"true\"\n\t\t\t\t\t\t[class.outlined]=\"true\" (input)=\"_onLocalInputK($event.target.value, $index)\"\n\t\t\t\t\t\t(change)=\"_onLocalChangeK($event.target.value, $index)\" />\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<input type=\"text\" [value]=\"item.v\" [name]=\"campo()?.prop\" [disabled]=\"campo()?.disabled\"\n\t\t\t\t\t\t[placeholder]=\"campo()?.placeholder ?? ''\" [class]=\"campo()?.classe\" [style]=\"campo()?.style\"\n\t\t\t\t\t\t[attr.maxLength]=\"campo()?.maxl\" [attr.minLength]=\"campo()?.minl\" [class.input]=\"true\"\n\t\t\t\t\t\t[class.outlined]=\"true\" (input)=\"_onLocalInputV($event.target.value, $index)\"\n\t\t\t\t\t\t(change)=\"_onLocalChangeV($event.target.value, $index)\" />\n\t\t\t\t</div>\n\t\t\t\t<div class=\"action\">\n\t\t\t\t\t<ui-button tipo=\"icon\" tema=\"error\" title=\"Remover Linha\" (click)=\"onClickDelItem($index)\"\n\t\t\t\t\t\ticoneNome=\"trash\">\n\t\t\t\t\t</ui-button>\n\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t<div class=\"add\">\n\t\t\t\t\t<ui-button tipo=\"nofill\" tema=\"primary\" title=\"Adicionar Linha\" (click)=\"onClickAddItem()\"\n\t\t\t\t\t\ticoneNome=\"plus-circle\">\n\t\t\t\t\t\tAdicionar Linha\n\t\t\t\t\t</ui-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t<ui-list-errors [errors]=\"campo()?.errors\" [dica]=\"campo()?.dica\" [show]=\"campo()?.touched\"></ui-list-errors>\n</div>","import { NgComponentOutlet } from '@angular/common';\nimport { Component, computed } from '@angular/core';\nimport { BaseFieldsForm } from '../Base/BaseFieldsForm/BaseFieldsForm.component';\n\nimport { FieldsAutocomplete } from '../autocomplete/autocomplete';\nimport { FieldsButton } from \"../button/button\";\nimport { FieldsCheckbox } from '../checkbox/checkbox';\nimport { FieldsColor } from '../color/color';\nimport { FieldsDate } from '../date/date';\nimport { FieldsDatetime } from '../datetime/datetime';\nimport { FieldsDisplay } from '../display/display';\nimport { FieldsEditor } from '../editor/editor';\nimport { FieldsEmail } from '../email/email';\nimport { FieldsHidden } from '../hidden/hidden';\nimport { FieldsIcon } from '../icon/icon';\nimport { FieldsMultifactor } from '../multifactor/multifactor';\nimport { FieldsMultiText } from '../multitext/multitext';\nimport { FieldsNumber } from '../number/number';\nimport { FieldsPassword } from '../password/password';\nimport { FieldsSearch } from '../search/search';\nimport { FieldsSelect } from '../select/select';\nimport { FieldsSlide } from '../slide/slide';\nimport { FieldsText } from '../text/text';\nimport { FieldsUpload } from '../upload/upload';\nimport { FieldsTime } from '../time/time';\nimport { FieldsTextarea } from '../textarea/textarea';\nimport { IField } from '../Formulario/Formulario';\nimport { FieldsMultiKV } from '../multikv/multikv';\n\n@Component({\n selector: 'fields-g',\n templateUrl: './generic.html',\n // styles: `:host.hidden {\n // display: none;\n // }`,\n imports: [NgComponentOutlet],\n})\nexport class FieldsGeneric extends BaseFieldsForm {\n\n readonly campos = computed(() => this.form().campos());\n\n // @HostBinding('class.hidden')\n // isHidden = false;\n\n // Mapeamento de tipos para componentes\n getComponentForType(tipo?: IField): any {\n // Tipo Hidden não exibe componente e coloca o host como hidden\n // if (tipo == IField.Hidden) {\n // this.isHidden = true;\n // return null;\n // }\n\n /************************************************\\\\\n // MAPA: Tipo de Campo - Componente Responsável \\\\\n //*************************************************/\n // Comente o campo caso haja algum problema de dependência circular ou outro...\n\n const FIELDS_MAP: Partial<Record<IField, any>> = {\n [IField.AutoComplete]: FieldsAutocomplete,\n [IField.Button]: FieldsButton,\n [IField.Checkbox]: FieldsCheckbox,\n [IField.Color]: FieldsColor,\n [IField.Date]: FieldsDate,\n [IField.DateTime]: FieldsDatetime,\n [IField.Display]: FieldsDisplay,\n [IField.Editor]: FieldsEditor,\n [IField.Email]: FieldsEmail,\n [IField.Hidden]: FieldsHidden,\n [IField.Icon]: FieldsIcon,\n [IField.MultiFactor]: FieldsMultifactor,\n [IField.MultiKV]: FieldsMultiKV,\n [IField.MultiText]: FieldsMultiText,\n [IField.Number]: FieldsNumber,\n [IField.Password]: FieldsPassword,\n [IField.Referencia]: FieldsDisplay,\n [IField.Search]: FieldsSearch,\n [IField.Select]: FieldsSelect,\n [IField.Slide]: FieldsSlide,\n [IField.Text]: FieldsText,\n [IField.Textarea]: FieldsTextarea,\n [IField.Time]: FieldsTime,\n [IField.Upload]: FieldsUpload,\n\n [IField.Custom]: this.campo()?.componente,\n }\n if (tipo) return FIELDS_MAP[tipo] || null;\n return null;\n }\n\n}\n\n","@if (getComponentForType(campo() ? campo()?.tipo : undefined); as component) {\n<ng-container [ngComponentOutlet]=\"component\" [ngComponentOutletInputs]=\"{ form: this.form(), name: name() }\" />\n}","import { Pipe, PipeTransform } from '@angular/core';\nimport { LibUtil } from './util';\n\n@Pipe({ name: 'classOf' })\nexport class ClassOfPipe implements PipeTransform {\n\n transform(value: any, args?: any): any {\n return LibUtil.classof(value);\n }\n\n}\n","import { Component, computed, input, model, signal } from '@angular/core';\nimport { UiButton } from \"../../../elements/ui-button/ui-button\";\nimport { UiIcon } from \"../../../elements/ui-icon/ui-icon\";\nimport { Formulario } from '../Formulario';\nimport { JsonColoridoPipe } from '../../../util/JsonColorido.pipe';\nimport { ClassOfPipe } from '../../../util/ClassOf.pipe';\nimport { LibUtil } from '../../../util/util';\n\n@Component({\n selector: 'ui-form-controls',\n templateUrl: './form-controls.html',\n styleUrls: ['./form-controls.css'],\n imports: [UiButton, UiIcon, JsonColoridoPipe, ClassOfPipe],\n})\nexport class FormControls {\n\n form = input.required<Formulario>();\n recebido = input<any>({});\n hasOutline = model<boolean>(false);\n faseIndex = input<number>(0);\n totalFases = input<number>(0);\n\n colapsed = signal(true);\n\n valoresOrdenados = computed(() => {\n let jsonValues: any = {};\n let formValues = this.form().values();\n if (LibUtil.classof(formValues) !== 'object') {\n return formValues;\n }\n let keys = Object.keys(formValues);\n keys.sort();\n for (let key of keys) {\n jsonValues[key] = formValues[key];\n }\n return jsonValues;\n });\n\n // CONTROLES\n copiar() {\n let values = LibUtil.formatJson(this.valoresOrdenados(), true)\n LibUtil.copy(values);\n }\n\n\n fullDisabled = signal(false);\n desativados() {\n this.fullDisabled.set(!this.fullDisabled());\n this.form().setDisabledAll(this.fullDisabled());\n }\n\n fullRequired = signal(false);\n obrigatorio() {\n this.fullRequired.set(!this.fullRequired());\n this.form().campos.update(c => {\n for (const key of Object.keys(c)) {\n c[key].need = this.fullRequired();\n }\n return c;\n });\n }\n\n fullPending = signal(false);\n pendentes() {\n this.fullPending.set(!this.fullPending());\n this.form().campos.update(c => {\n for (const key of Object.keys(c)) {\n c[key].pending = this.fullPending();\n }\n return c;\n });\n }\n\n fullTouched = signal(false);\n tocados() {\n this.fullTouched.set(!this.fullTouched());\n this.form().setTouchedAll(this.fullTouched());\n }\n\n forcarVazio() {\n this.form().setAllValuesTo('');\n }\n\n setarValInicio() {\n this.form().resetToStartValues();\n }\n\n setarValRecebido() {\n this.form().updateValues(this.recebido());\n }\n\n setOutline() {\n this.hasOutline.set(!this.hasOutline());\n this.form().showTouched.update(v => !v);\n }\n\n sanitizar() {\n this.form().sanitizar();\n }\n\n onlyAvailable() {\n this.form().onlyAvailable();\n }\n\n async validar() {\n await this.form().validar();\n }\n\n showingErrors = signal(false);\n changePreview() {\n this.showingErrors.set(!this.showingErrors());\n }\n\n errorsSetted = signal(false);\n setErrorAll() {\n this.errorsSetted.set(!this.errorsSetted());\n if (this.errorsSetted()) {\n this.form().setAllCamposPartial({ errors: ['Erro exemplo'] });\n } else {\n this.form().setAllCamposPartial({ errors: [] });\n }\n }\n}\n","<div class=\"areaFormControl\" [class.collapsed]=\"colapsed()\">\n\t<div class=\"areaValues barStatus\">\n\t\t<div class=\"f-s-e status\">\n\t\t\t<div class=\"statusItem f-s-12 f-t-b\" [title]=\"'Fases. Atual: ' + faseIndex() + '. Total: ' + totalFases()\"\n\t\t\t\t[class.ativo]=\"totalFases() > 1\" [class.inativo]=\"faseIndex() < 0 || faseIndex() > totalFases()\">\n\t\t\t\t@if(totalFases() > 1){\n\t\t\t\t<div class=\"f-s-e\">\n\t\t\t\t\t<div>A</div>\n\t\t\t\t\t<div>{{ faseIndex() }}</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"f-s-e\">\n\t\t\t\t\t<div>U</div>\n\t\t\t\t\t<div>{{ totalFases() - 1 }}</div>\n\t\t\t\t</div>\n\t\t\t\t} @else {\n\t\t\t\t<ui-icon name=\"list-check\" class=\"f-s-18\"></ui-icon>\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<div class=\"statusItem\" [class.ativo]=\"form().algumTocado()\" [class.inativo]=\"!form().algumTocado()\"\n\t\t\t\ttitle=\"Algum campo tocado\">\n\t\t\t\t<ui-icon name=\"handshake\" class=\"f-s-20\"></ui-icon>\n\t\t\t</div>\n\t\t\t<div class=\"statusItem\" [class.ativo]=\"form().valido()\" [class.inativo]=\"!form().valido()\"\n\t\t\t\ttitle=\"Todos campos Válidos\">\n\t\t\t\t<ui-icon name=\"check2-all\" class=\"f-s-20\"></ui-icon>\n\t\t\t</div>\n\t\t\t<div class=\"statusItem\" [class.ativo]=\"form().isEnviado\" [class.inativo]=\"!form().isEnviado\"\n\t\t\t\ttitle=\"Estado de Enviado\">\n\t\t\t\t<ui-icon name=\"send-check\" class=\"f-s-18\"></ui-icon>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"divider barIcoCollapse\" (click)=\"colapsed.set(!colapsed())\">\n\t\t\t<ui-icon name=\"caret-down\"></ui-icon>\n\t\t</div>\n\t\t<div class=\"f-s-e status\">\n\t\t\t<ui-button tipo=\"icon\" tema=\"success\" class=\"dados\" (click)=\"copiar()\" iconeNome=\"copy\"\n\t\t\t\ttitle=\"Copiar o JSON de valores\"></ui-button>\n\t\t\t<ui-button tipo=\"icon\" tema=\"success\" class=\"estado\" (click)=\"setOutline()\" [class.ativo]=\"hasOutline()\"\n\t\t\t\ticoneNome=\"border\" [title]=\"(hasOutline() ? 'Com' : 'Sem') +' Outline'\"></ui-button>\n\t\t\t<ui-button tipo=\"icon\" tema=\"info\" class=\"estado\" (click)=\"changePreview()\" [class.ativo]=\"showingErrors()\"\n\t\t\t\ticoneNome=\"exclamation-triangle\" [title]=\"showingErrors() ? 'Errors' : 'Values'\"></ui-button>\n\t\t\t<ui-button tipo=\"icon\" tema=\"info\" class=\"estado\" (click)=\"obrigatorio()\" [class.ativo]=\"fullRequired()\"\n\t\t\t\ticoneNome=\"file-exclamation\" [title]=\"fullRequired() ? 'Obrigatório' : 'Liberado'\"></ui-button>\n\n\t\t\t<ui-button tipo=\"icon\" tema=\"info\" class=\"estado\" (click)=\"desativados()\" [class.ativo]=\"fullDisabled()\"\n\t\t\t\ticoneNome=\"person-lock\" [title]=\"fullDisabled() ? 'Desativado' : 'Ativo'\"></ui-button>\n\t\t\t<ui-button tipo=\"icon\" tema=\"info\" class=\"estado\" (click)=\"pendentes()\" [class.ativo]=\"fullPending()\"\n\t\t\t\ticoneNome=\"clock\" [title]=\"fullPending() ? 'Pendente' : 'Sincronizado'\"></ui-button>\n\n\t\t</div>\n\t</div>\n\t@if(!colapsed()){\n\t<div class=\"formColtrols\">\n\t\t<div class=\"areaValues jsonArea\">\n\t\t\t@if(showingErrors()){\n\t\t\t<div>Erros do Formulário (Tipo: {{ form().listaErrors() | classOf }})</div>\n\t\t\t<pre class=\"p-2\" [innerHTML]=\"form().listaErrors() | jsonColorido\"></pre>\n\t\t\t} @else {\n\t\t\t<div>Valor do Formulário (Tipo: {{ form().values() | classOf }})</div>\n\t\t\t<pre class=\"p-2\" [innerHTML]=\"valoresOrdenados() | jsonColorido\"></pre>\n\t\t\t}\n\t\t</div>\n\t\t<div class=\"areaValues controls\">\n\n\t\t\t<ui-button tipo=\"outlined\" tema=\"success\" class=\"dados\" (click)=\"sanitizar()\" iconeNome=\"broom\"\n\t\t\t\ttitle=\"Filtra e mantém apenas os valores dos campos que estão definidos para este formulário.\">\n\t\t\t\tSanitizar\n\t\t\t</ui-button>\n\t\t\t<ui-button tipo=\"outlined\" tema=\"success\" class=\"dados\" (click)=\"onlyAvailable()\" iconeNome=\"power\"\n\t\t\t\ttitle=\"Filtra e mantém apenas os valores dos campos que estão disponíveis para este formulário.\">\n\t\t\t\tDisponíveis\n\t\t\t</ui-button>\n\t\t\t<ui-button tipo=\"outlined\" tema=\"success\" class=\"dados\" (click)=\"validar()\" iconeNome=\"ui-checks\"\n\t\t\t\ttitle=\"Valida o formulário e seus campos.\">\n\t\t\t\tValidar\n\t\t\t</ui-button>\n\t\t\t<ui-button tipo=\"outlined\" tema=\"warning\" class=\"dados\" (click)=\"setarValRecebido()\"\n\t\t\t\ticoneNome=\"clock-rotate\" title=\"Seta os valores que foram recebidos no formulário.\">\n\t\t\t\tRecebido\n\t\t\t</ui-button>\n\t\t\t<ui-button tipo=\"outlined\" tema=\"error\" class=\"dados\" (click)=\"forcarVazio()\" iconeNome=\"eraser\"\n\t\t\t\ttitle=\"Limpa todos os valores do formulário.\">\n\t\t\t\tLimpar\n\t\t\t</ui-button>\n\t\t\t<ui-button tipo=\"outlined\" tema=\"error\" class=\"dados\" (click)=\"setarValInicio()\" iconeNome=\"skip-backward\"\n\t\t\t\ttitle=\"Reseta os valores do formulário para os valores iniciais.\">\n\t\t\t\tReset\n\t\t\t</ui-button>\n\t\t\t<ui-button tipo=\"outlined\" tema=\"info\" class=\"dados\" (click)=\"tocados()\"\n\t\t\t\t[iconeNome]=\"fullTouched() ? 'handshake' : 'handshake-slash'\"\n\t\t\t\ttitle=\"Marca todos os campos como tocados ou não tocados.\">\n\t\t\t\t{{ fullTouched() ? 'Tocados' : 'Tocar Todos' }}\n\t\t\t</ui-button>\n\n\t\t\t<ui-button tipo=\"outlined\" tema=\"error\" class=\"estado\" (click)=\"setErrorAll()\"\n\t\t\t\t[class.ativo]=\"form().listaErrors().length > 0\"\n\t\t\t\t[iconeNome]=\"form().listaErrors().length > 0 ? 'exclamation-triangle' : 'circle'\"\n\t\t\t\t[title]=\"form().listaErrors().length > 0 ? 'Erros adicionados' : 'Erros removidos'\">\n\t\t\t\t{{ form().listaErrors().length > 0 ? 'Erros Forçados' : 'Erros removidos' }}\n\t\t\t</ui-button>\n\n\t\t</div>\n\t</div>\n\t}\n</div>","import { Component, computed, input, model, output } from '@angular/core';\nimport { UiButton } from \"../../../elements/ui-button/ui-button\";\nimport { BaseFieldsValues } from '../../Base/BaseFieldsValues/BaseFieldsValues';\nimport { FieldsGeneric } from '../../generic/generic';\nimport { LibUtil } from '../../../util/util';\nimport { IKV } from '../../../interfaces/interfaces';\nimport { FormControls } from \"../form-controls/form-controls\";\nimport { IField, IFields } from '../Formulario';\n\n@Component({\n selector: 'fields-form-filter',\n templateUrl: './form-filter.html',\n styleUrls: ['./form-filter.css', '../form-fields.css'],\n imports: [UiButton, FieldsGeneric, FormControls],\n})\nexport class FormFilter<T> extends BaseFieldsValues<T> {\n\n async onSave() {\n // Não faz nada. \n return;\n }\n\n hasOutline = model<boolean>(false);\n filtrar = output<any>();\n actionTitle = input<string>('Aplicar Filtro');\n\n onFiltrar() {\n let valores = LibUtil.clonar(this.form.values());\n valores = LibUtil.limparObject(valores);\n this.filtrar.emit(valores);\n }\n\n kvPreenchido = computed(() => {\n let propriedades: IKV[] = [];\n let valores = this.values() as any;\n if (!valores) return propriedades;\n let campos = this.campos();\n for (const key of Object.keys(campos)) {\n let campo = campos[key];\n if (campo.tipo === IField.Hidden) continue;\n if (valores?.[key] != null && valores?.[key] !== '' && !(Array.isArray(valores?.[key]) && valores?.[key].length === 0)) {\n propriedades.push({ k: campo.prop, v: campo.titulo ?? String(campo.prop) });\n }\n }\n return propriedades;\n });\n\n onDeletePropriedade(k: string | number | null | undefined) {\n if (k == null) return;\n this.form.updateValues({ [k as keyof IFields<T>]: '' });\n this.onFiltrar();\n }\n}\n","<div class=\"filtrosAtivos\">\n\t@for ( item of kvPreenchido(); track $index) {\n\t<div>\n\t\t{{ item.v }}\n\t\t<ui-button tipo=\"icon\" tema=\"error\" iconeNome=\"x\" (click)=\"onDeletePropriedade(item.k)\">\n\t\t</ui-button>\n\t</div>\n\t}\n</div>\n<div class=\"g-fields\" [style.--g-fields-min]=\"gmin()\" [style.--g-fields-max]=\"gmax()\">\n\n\t@for (campo of form.listaCampos(); track $index) {\n\t<fields-g [form]=\"form\" [name]=\"campo.prop\" [class]=\"campo.tipo == 'hidden' ? 'fieldHidden' : ''\"></fields-g>\n\t}\n\n</div>\n<div class=\"buttonsGap\">\n\t<ui-button tipo=\"fill\" tema=\"primary\" iconeNome=\"funnel\" (click)=\"onFiltrar()\">{{ actionTitle() }}</ui-button>\n\t<ng-content></ng-content>\n</div>\n\n@if(showFormControls()){\n<ui-form-controls [form]=\"form\" [recebido]=\"this.values()\" [(hasOutline)]=\"hasOutline\" [faseIndex]=\"faseIndex()\"\n\t[totalFases]=\"listaFase().length\"></ui-form-controls>\n}","import { Component, computed, effect, input, model, OnInit, signal } from '@angular/core';\nimport { UiButton } from \"../../../elements/ui-button/ui-button\";\nimport { IFaseCampos, IFases, IFieldComponent } from '../Formulario';\nimport { LOG } from '../../../util/log';\n\n@Component({\n selector: 'ui-form-fase',\n templateUrl: './form-fase.html',\n styleUrls: ['./form-fase.css'],\n imports: [UiButton],\n})\nexport class FormFase implements OnInit {\n\n fases = model<IFases<any>>();\n campos = input<IFieldComponent<any>[]>();\n\n isDisabledVoltar = signal(true);\n isDisabledAvancar = signal(true);\n isFaseado = computed(() => {\n let fases = this.fases()?.fases;\n return fases !== undefined && fases.length > 1; // 1 é faseado mas não tem navegação, mais de 1 é faseado com navegação\n });\n fasesList = computed(() => {\n return this.fases()?.fases ?? [];\n });\n faseIndex = model<number>(0);\n fase_historico = signal<number[]>([0]);\n isLinear = computed(() => this.fases()?.isLinear ?? false);\n\n constructor() {\n effect(() => {\n let fases = this.fases()?.fases;\n if (fases == null) {\n this.isDisabledAvancar.set(true);\n this.isDisabledVoltar.set(true);\n return;\n }\n this.isDisabledVoltar.set(this.faseIndex() <= 0);\n this.isDisabledAvancar.set(this.faseIndex() >= (fases.length - 1));\n });\n }\n ngOnInit(): void {\n let campos = this.campos();\n let fases = this.fases();\n\n if (campos == null || fases == null) return;\n let semFase = this.checkCamposInFase(campos, fases);\n if (semFase.length > 0) {\n semFase.forEach(prop => {\n this.fases.update(f => {\n if (f) {\n // Adiciona os campos sem fase a primeira fase, se ela existir.\n if (f.fases.length > 0) {\n let primeiraFase = f.fases[0];\n if (!primeiraFase.campos.includes(prop)) {\n primeiraFase.campos.push(prop);\n }\n } else {\n // Se não houver fase, cria uma nova fase e adiciona os campos sem fase nela.\n f.fases.push({\n nome: \"Geral\",\n campos: [prop],\n } as IFaseCampos<any>);\n }\n }\n return f;\n });\n });\n }\n // LOG(1, \"Fases configuradas:\", this.fases());\n }\n\n faseAvancar(faseIndex?: number): void {\n let fases = this.fases()?.fases;\n if (fases == null) return;\n\n if (faseIndex != null) {\n let proximaFaseIndex = fases.indexOf(fases[faseIndex]);\n if (proximaFaseIndex !== -1) {\n if (proximaFaseIndex !== this.faseIndex()) {\n this.faseIndex.set(faseIndex);\n this.fase_historico.update(h => { h = [...h, faseIndex]; return h; });\n }\n } else {\n LOG(1, \"Fase informada não existe.\");\n }\n } else {\n let proximaFaseIndex = fases.indexOf(fases[this.faseIndex() + 1]);\n if (proximaFaseIndex !== -1) {\n if (proximaFaseIndex !== this.faseIndex()) {\n this.faseIndex.set(proximaFaseIndex);\n this.fase_historico.update(h => { h = [...h, proximaFaseIndex]; return h; });\n }\n } else {\n LOG(1, \"Não há próxima fase para avançar.\");\n }\n }\n }\n faseVoltar(): void {\n let fases = this.fases()?.fases;\n if (fases == null) return;\n\n if (this.faseIndex() > 0) {\n this.fase_historico.update(h => { h.pop(); return h; });\n let ultimaFaseDoHistorico = this.fase_historico()[this.fase_historico().length - 1];\n if (ultimaFaseDoHistorico != null) {\n this.faseIndex.set(ultimaFaseDoHistorico);\n } else {\n LOG(1, \"Não para onde voltar.\");\n }\n } else {\n this.faseIndex.set(0);\n this.fase_historico.set([0]);\n LOG(1, \"Já está na primeira fase possível.\")\n }\n }\n\n\n\n checkCamposInFase(campos: IFieldComponent<any>[], fases: IFases<any>): string[] {\n // Verifica e informa no console se todos os campos recebidos estão presentes em alguma fase\n let camposNomes = campos.map(c => c.prop);\n let camposEmFases: string[] = [];\n let camposNaoEmFases: string[] = [];\n for (let campoNome of camposNomes) {\n let encontrado = false;\n for (let fase of fases.fases) {\n for (let campoOrGrupo of fase.campos) {\n if (typeof campoOrGrupo === 'string') {\n if (campoOrGrupo === campoNome) {\n encontrado = true;\n break;\n }\n } else {\n if (campoOrGrupo.campos.includes(campoNome)) {\n encontrado = true;\n break;\n }\n }\n }\n if (encontrado) break;\n }\n if (encontrado) {\n camposEmFases.push(campoNome);\n } else {\n camposNaoEmFases.push(campoNome);\n }\n }\n // if (camposNaoEmFases.length > 0) {\n // LOG(1, \"⚠️ Campos sem fase:\", camposNaoEmFases);\n // } else {\n // LOG(1, \"✔️ Todos os campos estão presentes em alguma fase.\");\n // }\n return camposNaoEmFases;\n\n }\n}\n","@if(isFaseado()){\n<div class=\"faseButtons\">\n\t<ui-button tipo=\"icon\" tema=\"primary\" (clicked)=\"faseVoltar()\" class=\"todosBotoes\" [disabled]=\"isDisabledVoltar()\"\n\t\ticoneNome=\"arrow-left\" title=\"Voltar\" [radiusTabFormat]=\"!isLinear()\"></ui-button>\n\t<div class=\"faseButtons faseHeader\" [class.hasGap]=\"isLinear()\">\n\t\t@if(isLinear()){\n\t\t<div class=\"fase-linha-entre-botoes\">\n\t\t\t<div class=\"fase-linha-central\"></div>\n\t\t</div>\n\t\t}\n\t\t@for (fase of fasesList(); track $index) {\n\t\t<ui-button tipo=\"nofill\" tema=\"primary\" class=\"todosBotoes faseBotao\" (clicked)=\"faseAvancar($index)\"\n\t\t\t[class.ativo]=\"faseIndex() == $index\" [disabled]=\"fase.disabled\" [icone]=\"fase.icone\" [title]=\"fase.nome\"\n\t\t\t[radiusTabFormat]=\"!isLinear()\">\n\t\t\t<div class=\"faseHeaderText\" [innerHTML]=\"fase.nome\"></div>\n\t\t</ui-button>\n\t\t}\n\t</div>\n\t<ui-button tipo=\"nofill\" tema=\"primary\" (clicked)=\"faseAvancar()\" class=\"todosBotoes\" [disabled]=\"isDisabledAvancar()\"\n\t\ticoneNome=\"arrow-right\" [iconeAntes]=\"false\" [iconeDepois]=\"true\" title=\"Proximo\"\n\t\t[radiusTabFormat]=\"!isLinear()\"></ui-button>\n</div>\n<div class=\"faseUnderline\" [class.underline-linear]=\"isLinear()\"></div>\n}","import { Component, input, model, OnInit, output, signal } from '@angular/core';\nimport { UiButton } from \"../../../elements/ui-button/ui-button\";\nimport { UiIcon } from \"../../../elements/ui-icon/ui-icon\";\nimport { LibUtil } from '../../../util/util';\nimport { BaseFieldsValues } from '../../Base/BaseFieldsValues/BaseFieldsValues';\nimport { FieldsGeneric } from '../../generic/generic';\nimport { FormControls } from \"../form-controls/form-controls\";\nimport { FormFase } from \"../form-fase/form-fase\";\nimport { UiLoading } from \"../../../elements/ui-loading/ui-loading\";\n\nexport interface ISaveTasks {\n title: string;\n icone?: string;\n iconeNome?: string;\n task: () => Promise<{ s: boolean, m: string }>;\n done?: boolean;\n success?: boolean;\n message?: string;\n}\n\nexport interface IActionsDone {\n values: any;\n result: any;\n tasks: ISaveTasks[];\n ok: boolean; // Booleano que indica se todas tarefas inseridas foram concluídas com sucesso.\n}\n\n@Component({\n selector: 'fields-form-action',\n templateUrl: './form-action.html',\n styleUrls: ['./form-action.css', '../form-fields.css'],\n imports: [UiButton, UiIcon, FieldsGeneric, FormControls, FormFase, UiLoading],\n})\nexport class FormAction<T> extends BaseFieldsValues<T> implements OnInit {\n\n hasOutline = model<boolean>(false);\n\n actionTitle = input<string | undefined>();\n sendValues = input<((values: any) => Promise<any>) | undefined>();\n sending = output<boolean>();\n done = output<IActionsDone>();\n\n // Permite customizar tarefas.\n taskTocar = input<boolean>(true);\n taskSanitizar = input<boolean>(true);\n taskDisponiveis = input<boolean>(true);\n taskValidar = input<boolean>(true);\n taskEnviar = input<boolean>(true);\n tasksToSave = signal<ISaveTasks[]>([]);\n\n result: any = null;\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.updateDisabledAction();\n\n // Incrementa tarefa TOCAR\n if (this.taskTocar()) {\n this.tasksToSave.update(tasks => [...tasks, {\n title: 'Tocando campos',\n iconeNome: 'handshake',\n task: async () => {\n this.form.setTouchedAll(true);\n return { s: true, m: 'Tocando campos concluído' };\n }\n }]);\n }\n\n // Incrementa tarefa Sanitizando\n if (this.taskSanitizar()) {\n this.tasksToSave.update(tasks => [...tasks, {\n title: 'Sanitizando',\n iconeNome: 'broom',\n task: async () => {\n this.form.sanitizar();\n return { s: true, m: 'Sanitizando concluído' };\n }\n }]);\n }\n\n // Tarefa para filtrar apenas os campos disponíveis para envio (ex: campos desabilitados, etc).\n if (this.taskDisponiveis()) {\n this.tasksToSave.update(tasks => [...tasks, {\n title: 'Disponíveis para envio',\n iconeNome: 'power',\n task: async () => {\n this.form.onlyAvailable();\n return { s: true, m: 'Disponíveis para envio concluído' };\n }\n }]);\n }\n\n // Incrementa tarefa VALIDAR\n if (this.taskValidar()) {\n this.tasksToSave.update(tasks => [...tasks, {\n title: 'Validando',\n iconeNome: 'ui-checks',\n task: async () => {\n try {\n await this.form.validar();\n return { s: true, m: 'Validação concluída' };\n } catch (e) {\n return { s: false, m: 'Erro na validação' };\n }\n }\n }]);\n }\n\n // Incrementa tarefa SENDVALUES\n if (this.taskEnviar() && this.sendValues()) {\n this.tasksToSave.update(tasks => [...tasks, {\n title: 'Ação de enviar',\n iconeNome: 'paper-plane',\n task: async () => {\n // Para enviar, o form deve estar válido.\n if (!this.form.valido()) return { s: false, m: 'Formulário inválido' };\n\n // Para enviar, deve existir a função de envio.\n let fnEnviar = this.sendValues();\n if (!fnEnviar) return { s: false, m: 'Função de envio não definida' };\n\n // Reinicia o resultado anterior, se houver.\n this.result = null;\n\n // Obtem os valores do formulário.\n let valores = LibUtil.clonar(this.form.values());\n\n let errorMessage = \"\";\n\n // Inicia o envio.\n try {\n this.form.isEnviando = true;\n this.sending.emit(true);\n this.result = await fnEnviar(valores);\n this.form.isEnviando = false;\n this.sending.emit(false);\n if (this.result != null) {\n // Indica que a tarefa de envio foi concluída com sucesso.\n return { s: true, m: 'Envio concluído' };\n }\n } catch (e) {\n console.error(\"❌ ERRO ao Enviar Valores. \", e);\n errorMessage = e instanceof Error ? e.message : String(e);\n }\n\n // Qualquer outro caso, indica falha.\n return { s: false, m: `Erro ao enviar valores: ${errorMessage}` };\n }\n }]);\n }\n\n // Neste componente, há sempre uma ação e sempre emite tasksDone.\n this.tasksToSave.update(tasks => [\n ...tasks,\n {\n title: 'Ações concluídas',\n iconeNome: 'flag-checkered',\n task: async () => {\n let ok = this.tasksToSave().filter(task => task.title !== 'Ações concluídas').every(task => task.success);\n let values = LibUtil.clonar(this.form.values());\n let actionsDone: IActionsDone = {\n values,\n result: this.result,\n tasks: this.tasksToSave(),\n ok\n }\n this.done.emit(actionsDone);\n if (ok) this.form.isEnviado = true;\n return { s: ok, m: ok ? 'Ações concluídas com sucesso' : 'Erro nas ações' };\n }\n }\n ]);\n\n }\n\n async onSave() {\n this.tasksToSave.update(tasks => tasks.map(t => ({ ...t, done: false })));\n this.updateDisabledAction(true);\n this.isLoadingActive.set(true);\n\n for await (const task of this.tasksToSave()) {\n // await LibUtil.wait(1000);\n let r = task.task();\n r.then(s => {\n task.success = s.s;\n task.message = s.m;\n }).catch(f => {\n task.success = false;\n task.message = `Erro na execução da tarefa: ${f instanceof Error ? f.message : String(f)}`;\n });\n await r;\n task.done = true;\n }\n\n this.isLoadingActive.set(false);\n this.updateDisabledAction();\n }\n\n}\n","<ui-form-fase [fases]=\"fases()\" [campos]=\"form.listaCampos()\" [(faseIndex)]=\"faseIndex\"></ui-form-fase>\n@if(isFaseado()){\n<div class=\"containerFases\" [class.showOutlineFields]=\"hasOutline()\">\n\t@for (fase of listaFase(); track $index;let fIndex = $index) {\n\t<div class=\"areaFase g-fields\" [style.--fase]=\"faseIndex()\" [class.ativo]=\"faseIndex() == fIndex\"\n\t\t[style.--g-fields-min]=\"fase.gridMin\" [style.--g-fields-max]=\"fase.gridMax\"\n\t\t[class.showOutlineFields]=\"hasOutline()\">\n\t\t@for (faseGrupo of faseGrupo(); track $index) {\n\t\t@if(faseGrupo.faseIndex == fIndex){\n\n\t\t@if(faseGrupo.tipo == 'campo' && faseGrupo.campo){\n\n\t\t<fields-g [form]=\"form\" [name]=\"faseGrupo.campo.prop\"\n\t\t\t[class]=\"faseGrupo.campo.tipo == 'hidden' ? 'fieldHidden' : ''\"></fields-g>\n\n\t\t} @else if (faseGrupo.tipo == 'grupo' && faseGrupo.grupo) {\n\n\t\t<div class=\"field-group\" [style.grid-area]=\"faseGrupo.grupo.area ?? 'auto / auto / auto / span 2'\">\n\t\t\t@if(faseGrupo.grupo.titulo){ <div class=\"group-title\"\n\t\t\t\t[style.grid-area]=\"faseGrupo.grupo.tituloArea ?? 'auto / auto / auto / span 2'\">{{\n\t\t\t\tfaseGrupo.grupo!.titulo }}</div> }\n\t\t\t@for(campo of faseGrupo.grupo!.campos; track $index){\n\t\t\t<fields-g [form]=\"form\" [name]=\"campo\"\n\t\t\t\t[class]=\"form.campos()[campo]?.tipo == 'hidden' ? 'fieldHidden' : ''\"></fields-g>\n\t\t\t}\n\t\t</div>\n\n\t\t}@else{\n\n\t\t<div class=\"card bg-danger\"> ❌ Falha tipo {{ faseGrupo.tipo }}.<br> Campo {{ faseGrupo.nome }} não encontrado!</div>\n\t\t}\n\n\t\t}\n\t\t}\n\t</div>\n\t}\n</div>\n\n}@else {\n<div class=\"g-fields\" [style.--g-fields-min]=\"gmin()\" [style.--g-fields-max]=\"gmax()\"\n\t[class.showOutlineFields]=\"hasOutline()\">\n\n\t@for (campo of form.listaCampos(); track $index) {\n\t<fields-g [form]=\"form\" [name]=\"campo.prop\" [class]=\"campo.tipo == 'hidden' ? 'fieldHidden' : ''\"></fields-g>\n\t}\n\n</div>\n}\n\n<div class=\"buttonsGap\">\n\t<ui-button tipo=\"fill\" tema=\"primary\" (clicked)=\"onSave()\" [disabled]=\"isDisabledAction()\" class=\"botaoAcaoSave\">\n\t\t@if(showFormControls()){\n\t\t<div class=\"icons\">\n\t\t\t@for (task of tasksToSave(); track $index) {\n\t\t\t@if(task.iconeNome) {\n\t\t\t<ui-icon [name]=\"task.iconeNome\" [class.done]=\"task.done\" [class.success]=\"task.success == true\"\n\t\t\t\t[class.fail]=\"task.success == false\"></ui-icon>\n\t\t\t} @else if(task.icone) {\n\t\t\t<i [class]=\"task.icone\" [class.done]=\"task.done\" [class.success]=\"task.success == true\"\n\t\t\t\t[class.fail]=\"task.success == false\"></i>\n\t\t\t}\n\t\t\t}\n\t\t</div>\n\t\t}\n\t\t<div class=\"f-1\">\n\t\t\t{{ actionTitle() ?? 'Salvar' }}\n\t\t</div>\n\t\t@if(isLoadingActive()){\n\t\t<div class=\"loadingSubmit\">\n\t\t\t<ui-loading></ui-loading>\n\t\t</div>\n\t\t}\n\t</ui-button>\n\t<ng-content></ng-content>\n</div>\n\n@if(showFormControls()){\n<ui-form-controls [form]=\"form\" [recebido]=\"this.values()\" [(hasOutline)]=\"hasOutline\" [faseIndex]=\"faseIndex()\"\n\t[totalFases]=\"listaFase().length\"></ui-form-controls>\n}","import { Component, model } from '@angular/core';\nimport { FieldsGeneric } from '../../generic/generic';\nimport { BaseFieldsValues } from '../../Base/BaseFieldsValues/BaseFieldsValues';\nimport { FormControls } from \"../form-controls/form-controls\";\n\n@Component({\n selector: 'fields-form-no-action',\n templateUrl: './form-no-action.html',\n styleUrls: ['./form-no-action.css', '../form-fields.css'],\n imports: [FieldsGeneric, FormControls],\n})\nexport class FormNoAction<T> extends BaseFieldsValues<T> {\n\n async onSave() {\n // Não faz nada. \n return;\n }\n\n hasOutline = model<boolean>(false);\n\n}\n","<div class=\"g-fields\" [style.--g-fields-min]=\"gmin()\" [style.--g-fields-max]=\"gmax()\">\n\n\t@for (campo of form.listaCampos(); track $index) {\n\t<fields-g [form]=\"form\" [name]=\"campo.prop\" [class]=\"campo.tipo == 'hidden' ? 'fieldHidden' : ''\"></fields-g>\n\t}\n\n</div>\n\n@if(showFormControls()){\n<ui-form-controls [form]=\"form\" [recebido]=\"this.values()\" [(hasOutline)]=\"hasOutline\" [faseIndex]=\"faseIndex()\"\n\t[totalFases]=\"listaFase().length\"></ui-form-controls>\n}","import { Component, computed, input, model } from '@angular/core';\nimport { LibUtil } from '../../../util/util';\nimport { IField, IFieldComponent } from '../Formulario';\nimport { LOG } from '../../../util/log';\n\nexport type IModeShowEntidade = \"centro\" | \"cantos\" | \"esquerda\" | \"grid\" | \"wrap\";\n\n@Component({\n selector: 'ui-formated-values',\n templateUrl: './formated-values.html',\n styleUrls: ['./formated-values.css'],\n imports: [],\n})\nexport class FormatedValues {\n\n campos = input<IFieldComponent<any>[] | undefined>();\n dados = input<any>();\n modo = model<IModeShowEntidade>(\"centro\");\n especialKeys = input<string[] | undefined>();\n ignoreKeys = input<string[] | undefined>([]);\n\n camposFormatados = computed(() => {\n let campos = this.campos();\n let especialKeys = (this.especialKeys() ?? []).map(k => k.toLowerCase());\n\n let listaDados = campos?.map(campo => {\n let inputs: any = {};\n // let isInner: boolean = this.getIsInner(campo, inputs);\n let titulo = campo.titulo ?? campo.prop ?? \"\";\n return {\n ...campo,\n label: titulo + ':',\n value: this.getFormattedValue(campo) ?? \"\",\n // isInner,\n inputs,\n isEspecial: especialKeys.includes(campo.prop?.toLowerCase()),\n };\n }).filter(campo => !this.ignoreKeys()?.includes(campo.prop));\n\n // Ordena a lista colocando os isEspecial no final\n listaDados = listaDados?.sort((a, b) => {\n if (a.isEspecial && !b.isEspecial) return 1;\n if (!a.isEspecial && b.isEspecial) return -1;\n return 0;\n });\n\n // Retorna\n return listaDados;\n });\n\n // changeModoTo(modo: IModeShowEntidade) {\n // this.modo.set(modo);\n // }\n\n // getIsInner(campo: IFieldComponent<any>, inputs: any): boolean {\n // switch (campo.tipo) {\n\n // case IField.Upload:\n // inputs[\"file\"] = this.dados()?.[campo.prop];\n // inputs[\"tipo\"] = IMGTYPE.Generic;\n // inputs[\"h\"] = 45;\n // return false;\n\n // default:\n // return true;\n\n // }\n // }\n\n getFormattedValue(campo: IFieldComponent<any>) {\n let value = this.dados()?.[campo.prop];\n if (value == null || value == undefined) return \"\";\n\n switch (campo.tipo) {\n\n case IField.AutoComplete:\n // A implementar...\n break;\n\n\n case IField.Button:\n // A implementar...\n break;\n\n case IField.Checkbox:\n value = value === true ? \"Sim\" : \"Não\";\n break;\n\n case IField.Color:\n // A implementar...\n break;\n\n case IField.Custom:\n LOG(1, \"ShowEntidade: A exibição do custom não deve ser alterada por aqui. (Remover o aviso quando for implementar o custom)\");\n break;\n\n case IField.Date:\n value = LibUtil.stringToDataBR(value)?.split(\" \")[0];\n break;\n\n case IField.DateTime:\n value = LibUtil.stringToDataBR(value);\n break;\n\n case IField.Display:\n // A implementar...\n break;\n\n case IField.Editor:\n // A implementar...\n break;\n\n case IField.Email:\n // A implementar...\n break;\n\n case IField.Hidden:\n // A implementar...\n break;\n\n case IField.Icon:\n value = `<i class=\"${value}\"></i>&nbsp; ${value}`;\n break;\n\n case IField.MultiFactor:\n // A implementar...\n break;\n\n case IField.MultiText:\n // A implementar...\n break;\n\n case IField.Number:\n // A implementar...\n break;\n\n case IField.Password:\n value = \"••••••••\";\n break;\n\n case IField.Referencia:\n if (campo.getDisplay) value = campo.getDisplay(value);\n break;\n\n case IField.Search:\n // A implementar...\n break;\n\n case IField.Select:\n let options = campo.options?.();\n let optionValue = options?.find(o => o.k == value)?.v\n optionValue ? value = `${optionValue}` : value = `${value}`;\n break;\n\n case IField.Slide:\n value = value == true ? \"Sim\" : \"Não\";\n break;\n\n case IField.Text:\n // A implementar...\n break;\n\n case IField.Upload:\n // A implementar...\n break;\n\n }\n\n // Estes abaixo só se aplicariam se o ShowEntidade fosse mais genérico.\n // switch (Util.classof(value)) {\n // case \"boolean\":\n // if (value === true) value = \"Sim\";\n // if (value === false) value = \"Não\";\n // break;\n // case \"array\":\n // if (value.length && value.length > 0) {\n // if (Util.classof(value[0]) == \"object\") {\n // value = `Lista com ${value.length} registros`\n // } else {\n // value = value.join(\", \");\n // }\n // }\n // break;\n // }\n return value;\n }\n}\n","<div [class]=\"modo()\" [class.showEntidade]=\"true\">\n\n\n\t@for (field of camposFormatados(); track $index) {\n\t<div class=\"linhaDado\" [class.isEspecial]=\"field.isEspecial\">\n\t\t<div class=\"titulo\" [innerHTML]=\"field.label\"></div>\n\t\t<!-- @if(field.isInner){ -->\n\t\t<div class=\"conteudo\" [innerHTML]=\"field.value\"></div>\n\t\t<!-- }@else {\n\t\t<build-component [componente]=\"field.value\" [inputs]=\"field.inputs\"></build-component>\n\t\t} -->\n\t</div>\n\t}\n\n</div>","import { Component, computed, input, model } from '@angular/core';\nimport { LibUtil } from '../../../util/util';\nimport { IModeShowEntidade } from '../formated-values/formated-values';\n\n@Component({\n selector: 'ui-single-values',\n templateUrl: './single-values.html',\n styleUrls: ['./single-values.css'],\n imports: [],\n})\nexport class SingleValues {\n\n dados = input<any>();\n modo = model<IModeShowEntidade>(\"centro\");\n especialKeys = input<string[] | undefined>();\n\n dadosAExibir = computed(() => {\n let dados = this.dados();\n let keys = Object.keys(dados ?? {}).sort();\n let especialKeys = (this.especialKeys() ?? []).map(k => k.toLowerCase());\n\n let listaDados = keys?.map(chave => {\n return {\n label: LibUtil.pascalCase(chave) + ':',\n value: this.getNormalizedValue(dados[chave]) ?? \"\",\n isEspecial: especialKeys.includes(chave.toLowerCase()),\n };\n });\n\n // Ordena a lista colocando os isEspecial no final\n listaDados = listaDados?.sort((a, b) => {\n if (a.isEspecial && !b.isEspecial) return 1;\n if (!a.isEspecial && b.isEspecial) return -1;\n return 0;\n });\n\n // Retorna\n return listaDados;\n });\n\n getNormalizedValue(value: any) {\n if (value == null || value == undefined) return \"\";\n\n let classofValue = LibUtil.classof(value);\n\n switch (classofValue) {\n\n case \"object\":\n value = `{ ... Objeto com ${Object.keys(value).length} itens }`\n break;\n\n case \"array\":\n if (value.length && value.length > 0) {\n if (LibUtil.classof(value[0]) == \"object\") {\n value = `[ ... Lista com ${value.length} registros ]`\n } else {\n value = value.join(\", \");\n }\n }\n break;\n\n }\n return value;\n }\n}\n","<div [class]=\"modo()\" [class.showEntidade]=\"true\">\n\n\n\t@for (dado of dadosAExibir(); track $index) {\n\t<div class=\"linhaDado\" [class.isEspecial]=\"dado.isEspecial\">\n\t\t<div class=\"titulo\" [innerHTML]=\"dado.label\"></div>\n\t\t<div class=\"conteudo\" [innerHTML]=\"dado.value\"></div>\n\t</div>\n\t}\n\n</div>","import { InjectionToken, Signal, Type, WritableSignal } from \"@angular/core\";\nimport { IKV, ITiposTema } from \"../interfaces/interfaces\";\n\n\n// ─── ScreenMode (definido localmente — sem dependência do LayoutCoreService) ──────\nexport enum ScreenMode {\n\tMobile = \"Mobile\",\n\tDesktop = \"Desktop\",\n\tTablet = \"Tablet\",\n}\n\n// ─── Serviço de célula (interface para quebrar dependência circular) ──────────────\nexport interface IMkCellService {\n\tgridParams: Signal<IGridParam<any> | undefined>;\n\tupdateGridParams(params: IGridParam<any>): void;\n}\n\nexport const GRID_PARAMS_TOKEN = new InjectionToken<IGridParam<any>>('GRID_PARAMS');\n\nexport interface IGridCellComponentConfig {\n\tcomponent: Type<unknown>,\n\tinput: any,\n}\n\n// ─── Coluna ────────────────────────────────────────────────────────────────────────\nexport interface IColuna<T> {\n\tprop: keyof T & string | (keyof T & string)[],\n\ttitulo: string,\n\ttituloReduzido?: string,\n\twidth?: string,\n\tminWidth?: string,\n\tmaxWidth?: string,\n\n\tvisivel?: boolean,\n\tclasseFull?: string,\n\tclasseCell?: string,\n\tclasseHeader?: string,\n\tsortable?: boolean,\n\tstyleCell?: string,\n\tstyleHeader?: string,\n\tcellRenderer?: (p: IGridParam<T>) => string,\n\tcellRendererParams?: any,\n\tcellComponent?: IGridCellComponentConfig,\n\tcapitalize?: boolean,\n\tmask?: string | ((value: any) => string),\n\ttextVertical?: boolean,\n\tiniciaAgrupado?: boolean,\n\tcurrency?: string,\n\toverflow?: string,\n\ttextOverflow?: string,\n}\n\nexport type IColunaImage = \"\"\n\nexport enum IGridFilterType {\n\tExato = 'exact',\n\tComo = 'like',\n\tMaiorQue = 'bigger',\n\tMenorQue = 'smaller',\n\tEntre = 'between',\n\tColumn = 'column',\n}\n\nexport interface IGridFilter<T> {\n\tpropriedade: keyof T,\n\tpropriedade2?: keyof T,\n\ttipo: IGridFilterType,\n\tvalues: string[] | number[] | boolean[],\n}\n\nexport interface IGridEventAPI<T> {\n\tid: string | undefined,\n\tlinha: T,\n\taction: IGridConfigActions,\n}\n\nexport const PAGINATION_OPTIONS: IKV[] = [\n\t{ k: 5, v: \"5\" },\n\t{ k: 10, v: \"10\" },\n\t{ k: 25, v: \"25\" },\n\t{ k: 50, v: \"50\" },\n\t{ k: 100, v: \"100\" },\n\t{ k: 1000, v: \"1000\" },\n]\n\nexport interface IOrdenacao {\n\tcoluna: string | string[];\n\tdirecao: 'asc' | 'desc';\n}\n\nexport interface IPaginacao {\n\tpaginaAtual: number;\n\ttotalItens: number;\n\ttotalAgrupado: number;\n}\n\nexport interface IGridConfigActions {\n\tinmenu?: boolean,\n\tdisplay?: string,\n\tname: string,\n\ttema?: ITiposTema,\n\ticon?: string,\n\tshowIcon?: boolean,\n\taction?: (p: IGridEventAPI<any>) => void,\n\tshowAction: boolean,\n\tshowLineAction?: (linha: any) => boolean,\n\tactions?: IGridConfigActions[],\n}\n\nexport interface IDisplayValue {\n\tdisplay: string,\n\tvalue: string | number | boolean,\n}\n\nexport interface IGridBaseActions {\n\tmenuDisplay: string,\n\tmenuIcon: string,\n\tshowMenuIcon: boolean,\n\twidth: string,\n\twidthMax: string,\n\twidthMin: string,\n\taloneAlwaysOutside: boolean,\n}\n\nexport interface IActionsLineConfig extends IGridBaseActions {\n\theaderDisplayMore: string,\n\theaderClasse?: string,\n}\n\nexport interface IGridConfig<T> {\n\t// ─── Obrigatório ─────────────────────────────────────────────────────────────\n\tcolunas: IColuna<T>[],\n\n\t// ─── Identificação ───────────────────────────────────────────────────────────\n\tprimarykey?: string,\n\tnameEntity?: string,\n\n\t// ─── Actions de linha ────────────────────────────────────────────────────────\n\tactionsLine?: IGridConfigActions[],\n\tactionsLineConfig?: Partial<IActionsLineConfig>,\n\tshowActionsLine?: boolean,\n\n\t// ─── Actions de topo ─────────────────────────────────────────────────────────\n\tactionsTop?: IGridConfigActions[],\n\tactionsTopConfig?: Partial<IGridBaseActions>,\n\tshowActionsTop?: boolean,\n\n\t// ─── Regras de linha ─────────────────────────────────────────────────────────\n\tInativeRule?: (linha: any) => boolean,\n\tSelectionDisabledRule?: (linha: any) => boolean,\n\tbackgroundHue?: (linha: any) => number,\n\n\t// ─── Filtro / pesquisa ───────────────────────────────────────────────────────\n\tfilterSearchIcon?: string,\n\tfilterBarStartCollapsed?: boolean,\n\n\t// ─── Paginação ───────────────────────────────────────────────────────────────\n\tpaginations?: IKV[],\n\tpaginationSize?: number,\n\n\t// ─── Visibilidade de seções ──────────────────────────────────────────────────\n\tshowControlBar?: boolean,\n\tshowSearch?: boolean,\n\tshowFilterBar?: boolean,\n\tshowGridMenu?: boolean,\n\tshowInfoBar?: boolean,\n\tshowMenuIcon?: boolean,\n\tshowPagination?: boolean,\n\n\t// ─── Aparência ───────────────────────────────────────────────────────────────\n\thasVerticalLine?: boolean,\n\thasSeletor?: boolean,\n\thasGrid?: boolean,\n\tminLineHeight?: string,\n\tisCompacted?: boolean,\n\n\t// ─── Seleção ─────────────────────────────────────────────────────────────────\n\tselectionMode?: 'single' | 'multiple' | 'none',\n\tstartSelected?: any[],\n\tonSelected?: (linha: any, selecionados: any[]) => Promise<void> | void,\n\tonUnselected?: (linha: any, selecionados: any[]) => Promise<void> | void,\n\tonSelectionChanged?: (linha: any, selecionados: any[]) => Promise<void> | void,\n\n\t// ─── Estado ──────────────────────────────────────────────────────────────────\n\thasError?: boolean,\n\tisLoaded?: boolean,\n\ttimeRequest?: string,\n\tlastGridEventAPI?: IGridEventAPI<T>,\n}\n\nexport const GRID_CONFIG_DEFAULTS = {\n\tprimarykey: 'id',\n\tnameEntity: undefined as string | undefined,\n\tactionsTop: [] as IGridConfigActions[],\n\tactionsTopConfig: {\n\t\tmenuDisplay: '',\n\t\tmenuIcon: '',\n\t\tshowMenuIcon: true,\n\t\twidth: 'auto',\n\t\twidthMax: 'auto',\n\t\twidthMin: 'auto',\n\t\taloneAlwaysOutside: false,\n\t} as IGridBaseActions,\n\tactionsLine: [] as IGridConfigActions[],\n\tactionsLineConfig: {\n\t\theaderDisplayMore: 'Ações',\n\t\tmenuDisplay: '',\n\t\tmenuIcon: '',\n\t\tshowMenuIcon: true,\n\t\twidth: 'auto',\n\t\twidthMax: 'auto',\n\t\twidthMin: '125px',\n\t\taloneAlwaysOutside: true,\n\t} as IActionsLineConfig,\n\tInativeRule: (_: any) => false,\n\tfilterSearchIcon: '',\n\tfilterBarStartCollapsed: true,\n\tpaginations: PAGINATION_OPTIONS,\n\tpaginationSize: 10,\n\tshowControlBar: true,\n\tshowSearch: true,\n\tshowFilterBar: true,\n\tshowGridMenu: true,\n\tshowInfoBar: true,\n\tshowMenuIcon: true,\n\tshowActionsLine: true,\n\tshowActionsTop: false,\n\tshowPagination: true,\n\tselectionMode: 'single' as 'single' | 'multiple' | 'none',\n\thasError: false,\n\thasVerticalLine: false,\n\thasSeletor: true,\n\thasGrid: false,\n\tminLineHeight: '20px',\n\tisCompacted: false,\n\tisLoaded: false,\n};\n\nexport interface IGridParam<T> {\n\tcoluna: IColuna<T>,\n\tcolunas: IColuna<T>[],\n\tdata: T,\n\tlista?: T[],\n\tparams: any,\n\tvalue: any,\n\tservicoParams: IMkCellService,\n}\n\nexport interface IFilterFields {\n\tpropriedade: string,\n\tpropriedade2?: string,\n\ttipo: IGridFilterType,\n\tvalues: string[] | number[] | boolean[],\n}\n\nexport interface IDadosDaLinha {\n\tid: string,\n\tdados: any,\n\thue: number | undefined,\n\tinativo: boolean,\n\tselecionado: boolean,\n\tgroupName: string,\n\tisSelectionDisabled?: boolean,\n\tisColapsed?: boolean,\n\tisGroup?: boolean,\n\tisFullLine?: {\n\t\tvisible: boolean,\n\t\tcolapsed: boolean,\n\t\tcolapsedCount?: number,\n\t\tshowIco?: boolean,\n\t},\n\tordem: number,\n\tactions?: IGridConfigActions[],\n\thasActionMenu?: boolean,\n}\n\nexport interface IActionClickEvent {\n\taction?: IGridConfigActions,\n\tdadosDaLinha?: IDadosDaLinha,\n}\n","import { Injectable, signal } from '@angular/core';\nimport { IGridParam, IMkCellService } from '../mk-grid.types';\n\n@Injectable()\nexport class GridCellService implements IMkCellService {\n\n\tpublic gridParams = signal<IGridParam<any> | undefined>(undefined);\n\n\tupdateGridParams(params: IGridParam<any>): void {\n\t\tthis.gridParams.set(params);\n\t}\n\n}\n","import { ChangeDetectionStrategy, Component, ComponentRef, inject, Injector, input, OnDestroy, OnInit, signal, SimpleChanges, viewChild, ViewContainerRef } from '@angular/core';\nimport { LibUtil } from '../../util/util';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { GRID_PARAMS_TOKEN, IColuna, IGridConfig, IGridParam } from '../mk-grid.types';\nimport { GridCellService } from '../grid-cell/grid-cell.service';\n\nconst PROP_CONTROLE_ATIVO = 'is_ativo';\n\n@Component({\n selector: 'lib-grid-cell-handler',\n templateUrl: './grid-cell-handler.html',\n styleUrls: ['./grid-cell-handler.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [GridCellService],\n host: {\n '[class.table-inativo]': '!ativo()'\n }\n})\nexport class GridCellHandler<T> implements OnInit, OnDestroy {\n\n\n private parentInjector = inject(Injector);\n private sanitizer = inject(DomSanitizer);\n private servico = inject(GridCellService);\n\n lista = input.required<T[]>();\n linha = input.required<T>();\n config = input.required<IGridConfig<T>>();\n localColuna = input.required<IColuna<T>>();\n localColunas = input.required<IColuna<T>[]>();\n inputSearchText = input.required<string>();\n\n ativo = signal<boolean>(true);\n\n gridParams?: IGridParam<any>;\n\n vcr = viewChild('cellComponent', { read: ViewContainerRef });\n private componenteRef?: ComponentRef<any>;\n\n valueToRender: SafeHtml = \"\";\n\n ngOnInit() {\n this.gridParams = this.getGridParams();\n if (!this.localColuna().cellComponent) {\n this.valueToRender = this.getRenderer();\n }\n }\n ngOnDestroy() {\n if (this.componenteRef) {\n this.componenteRef.destroy();\n this.componenteRef = undefined;\n }\n }\n ngAfterViewInit() {\n this.createComponente()\n }\n ngOnChanges(changes: SimpleChanges): void {\n this.valueToRender = this.getRenderer();\n this.gridParams = this.getGridParams();\n if (changes['linha'] && this.servico) {\n this.servico.updateGridParams(this.gridParams);\n }\n }\n\n getRenderer(): SafeHtml | string {\n let data = \"\";\n let prop: string | string[] = this.localColuna().prop;\n if (LibUtil.classof(prop) == \"string\" && (prop as string).includes(\".\")) {\n const props = (prop as string).split(\".\");\n const lastObj = LibUtil.getV(props.slice(0, -1).join(\".\"), this.linha());\n this.ativo.set(!!lastObj?.[PROP_CONTROLE_ATIVO]);\n }\n\n if (this.localColuna().prop) data = LibUtil.getV(this.localColuna().prop, this.linha());\n\n if (this.localColuna().mask) {\n data = LibUtil.mascarar(data, this.localColuna().mask) ?? data;\n }\n\n if (this.localColuna().capitalize) {\n data = LibUtil.capitalize(data);\n }\n\n if (this.localColuna().cellRenderer) {\n const html = this.localColuna().cellRenderer!(this.getGridParams())\n ?? data\n ?? '';\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n\n data = data?.toString() ?? '';\n\n let words = this.inputSearchText().trim().split(\" \").filter(t => t != \"\").map(p => LibUtil.removeEspecias(p).toLowerCase());\n if (words.length > 0) {\n for (let w of words) {\n let preparedData = LibUtil.removeAcentos(data).toLowerCase();\n if (w != \"\" && preparedData.includes(w)) {\n let regexTag = new RegExp(`<[^>]*${w}[^>]*>`, 'i');\n if (regexTag.test(preparedData.toString())) {\n continue;\n }\n let pos = preparedData.toString().toLowerCase().indexOf(w.toLowerCase());\n data = data.slice(0, pos)\n + \"<mark>\"\n + data.slice(pos, pos + w.length)\n + \"</mark>\"\n + data.slice(pos + w.length);\n data = data.replaceAll(\"</mark><mark>\", \"\");\n }\n };\n }\n\n return data ?? '';\n }\n\n private createComponente() {\n if (this.localColuna().cellComponent) {\n this.vcr()?.clear();\n this.componenteRef = this.vcr()?.createComponent(this.localColuna().cellComponent!.component, {\n injector: Injector.create({\n parent: this.parentInjector,\n providers: [\n { provide: GRID_PARAMS_TOKEN, useValue: this.gridParams },\n { provide: 'GRID_PARAMS', useValue: this.gridParams }\n ]\n })\n });\n }\n }\n\n getGridParams(): IGridParam<T> {\n let value = \"\"\n if (this.localColuna().prop) value = LibUtil.getV(this.localColuna().prop, this.linha());\n return {\n coluna: this.localColuna(),\n colunas: this.localColunas(),\n data: this.linha(),\n lista: this.lista(),\n params: this.localColuna().cellComponent?.input ?? this.localColuna().cellRendererParams,\n servicoParams: this.servico,\n value,\n }\n }\n}\n\n","@if(localColuna().cellComponent){\n<div class=\"d-none\" #cellComponent></div>\n} @else {\n<div [innerHTML]=\"valueToRender\"></div>\n}","import { Component, input, output } from '@angular/core';\nimport { IActionClickEvent, IDadosDaLinha, IGridConfig, IGridConfigActions } from '../mk-grid.types';\nimport { UiButton } from '../../elements/ui-button/ui-button';\nimport { UiMenu } from '../../elements/ui-menu/ui-menu';\n\n@Component({\n selector: 'lib-grid-cell-actions',\n imports: [UiButton, UiMenu],\n templateUrl: './grid-cell-actions.html',\n styleUrls: ['./grid-cell-actions.css'],\n})\nexport class GridCellActions {\n\n config = input.required<IGridConfig<any>>();\n dadosDaLinha = input.required<IDadosDaLinha>();\n mobileHeader = input<boolean | undefined>(false);\n compact = input<boolean | undefined>(false);\n\n action = output<IActionClickEvent>();\n\n protected onClickAction(action?: IGridConfigActions, dadosDaLinha?: IDadosDaLinha) {\n if (action?.action) {\n this.action.emit({ action, dadosDaLinha });\n }\n return;\n }\n\n}\n","@if(!compact()){\n@for (action of dadosDaLinha().actions; track $index;) {\n@if(action.showAction && action.inmenu !== true){\n<ui-button [tipo]=\"mobileHeader() ? 'fill' : 'icon'\" [tema]=\"action?.tema ?? 'primary'\" [title]=\"action.display\"\n\t(click)=\"onClickAction(action, dadosDaLinha())\" [icone]=\"action.icon\"\n\t[style.--ui-height]=\"compact() ? '20px' : '40px'\"></ui-button>\n}\n}\n}\n\n@if(dadosDaLinha().hasActionMenu || compact()){\n<ui-menu>\n\t<ui-button slot=\"botao\" tipo=\"icon\" tema=\"primary\" [title]=\"config().actionsLineConfig?.menuDisplay\"\n\t\t[iconeNome]=\"config().actionsLineConfig?.showMenuIcon ? 'three-dots-vertical' : undefined\">\n\t\t{{ config().actionsLineConfig?.menuDisplay }}\n\t</ui-button>\n\n\t@for (action of dadosDaLinha().actions; track $index;let last = $last) {\n\t@if(action.showAction && (action.inmenu !== false || compact())){\n\t<ui-button tipo=\"menu-item\" [tema]=\"action?.tema ?? 'primary'\" (click)=\"onClickAction(action, dadosDaLinha())\"\n\t\t[icone]=\"action?.showIcon ? action?.icon : null\"\n\t[iconeNome]=\"!action?.showIcon ? 'dot' : undefined\" [style.--ui-padding]=\"'0 16px'\">\n\t\t{{ action?.display ?? '' }}\n\t</ui-button>\n\t}\n\t}\n\n</ui-menu>\n}","import { Component, input, output } from '@angular/core';\nimport { IActionClickEvent, IColuna, IDadosDaLinha, IGridConfig } from '../mk-grid.types';\nimport { UiCheckBox } from \"../../public-api\";\nimport { GridCellHandler } from \"../grid-cell-handler/grid-cell-handler\";\nimport { GridCellActions } from \"../grid-cell-actions/grid-cell-actions\";\n\nexport interface IColunaComLargura extends IColuna<any> {\n widthNum: number;\n ordem: number;\n}\n\n@Component({\n selector: 'lib-grid-row-renderer',\n imports: [UiCheckBox, GridCellHandler, GridCellActions],\n templateUrl: './grid-row-renderer.html',\n styleUrls: ['../mk-grid.shared.css', './grid-row-renderer.css'],\n})\nexport class GridRowRenderer {\n dadosLinha = input.required<IDadosDaLinha>();\n config = input.required<IGridConfig<any>>();\n colunas = input.required<IColunaComLargura[]>();\n colunasOrdenadas = input.required<IColunaComLargura[]>();\n lista = input.required<any[]>();\n inputSearchText = input.required<string>();\n hasSeletor = input<boolean>(false);\n hasVerticalLine = input<boolean>(false);\n isCompacted = input<boolean>(false);\n hasGrid = input<boolean>(false);\n rowIndex = input<number>(0);\n lastRow = input<boolean>(false);\n\n actionTriggered = output<IActionClickEvent>();\n rowClicked = output<IDadosDaLinha>();\n\n protected onRowAction(event: IActionClickEvent): void {\n this.actionTriggered.emit(event);\n }\n\n protected onRowClick(): void {\n this.rowClicked.emit(this.dadosLinha());\n }\n}\n\n","@if(hasVerticalLine()) {\n<div class=\"table-header table-formated table-vertical-line\">{{ dadosLinha().ordem }}</div>\n}\n\n@if(hasSeletor() && config().selectionMode != 'none') {\n<div class=\"table-item table-formated table-item-seletor\" [class.table-bg-error]=\"dadosLinha().inativo\"\n\t[class.odd]=\"rowIndex() % 2 !== 0\" [class.even]=\"rowIndex() % 2 === 0\" [class.hashue]=\"dadosLinha().hue !== undefined\"\n\t[class.table-border-left]=\"hasGrid()\" [style.--bghue]=\"dadosLinha().hue != 0 ? dadosLinha().hue : null\"\n\t(click)=\"onRowClick()\">\n\t<ui-check-box [(value)]=\"dadosLinha().selecionado\" [single]=\"config().selectionMode == 'single'\"\n\t\t[style.--ui-size]=\"isCompacted() ? '15px' : undefined\" [disabled]=\"dadosLinha().isSelectionDisabled\"></ui-check-box>\n</div>\n}\n\n@for (coluna of colunas(); track $index; let j = $index) {\n@if (coluna.visivel !== false) {\n<lib-grid-cell-handler class=\"table-item table-dados {{ coluna.classeCell }}\" [class.odd]=\"rowIndex() % 2 !== 0\"\n\t[class.even]=\"rowIndex() % 2 === 0\" [class.table-first-col]=\"j === 0\" [class.hashue]=\"dadosLinha().hue !== undefined\"\n\t[style.--bghue]=\"dadosLinha().hue != 0 ? dadosLinha().hue : null\" [style.overflow]=\"coluna.overflow ?? 'hidden'\"\n\t[style.textOverflow]=\"coluna.textOverflow ?? 'ellipsis'\" [linha]=\"dadosLinha().dados\" [localColuna]=\"coluna\"\n\t[lista]=\"lista()\" [config]=\"config()\" [localColunas]=\"colunasOrdenadas()\"\n\t[class.table-bg-error]=\"dadosLinha().inativo\" (click)=\"onRowClick()\" [inputSearchText]=\"inputSearchText()\"\n\t[class.table-border-left]=\"hasGrid()\" [class.table-border-right]=\"$last && hasGrid() && !config().showActionsLine\"\n\t[attr.ordem]=\"coluna.ordem\"></lib-grid-cell-handler>\n}\n}\n\n@if(config().showActionsLine) {\n<lib-grid-cell-actions class=\"table-item table-formated table-item-action\" [class.odd]=\"rowIndex() % 2 !== 0\"\n\t[class.even]=\"rowIndex() % 2 === 0\" [class.hashue]=\"dadosLinha().hue !== undefined\"\n\t[style.--bghue]=\"dadosLinha().hue != 0 ? dadosLinha().hue : null\" [config]=\"config()\" [dadosDaLinha]=\"dadosLinha()\"\n\t[class.table-border-right-error]=\"dadosLinha().inativo\" [class.table-bg-error]=\"dadosLinha().inativo\"\n\t(action)=\"onRowAction($event)\" [compact]=\"isCompacted()\" [class.table-border-left]=\"hasGrid()\"\n\t[class.table-border-right]=\"hasGrid()\" [class.last-row]=\"lastRow()\"></lib-grid-cell-actions>\n}","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { IColuna, IGridConfig, IOrdenacao } from '../mk-grid.types';\nimport { UiCheckBox } from '../../elements/ui-check-box/ui-check-box';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { UiIcon } from '../../elements/ui-icon/ui-icon';\n\nexport interface IColunaComLargura extends IColuna<any> {\n\twidthNum: number;\n\tordem: number;\n}\n\nexport interface IHeaderResizeEvent {\n\tevent: MouseEvent;\n\tcoluna: IColunaComLargura;\n}\n\nexport interface IHeaderResizeDoubleClickEvent {\n\tevent: Event;\n\tcoluna: IColunaComLargura;\n}\n\n@Component({\n\tselector: 'lib-grid-header-row',\n\ttemplateUrl: './grid-header-row.html',\n\tstyleUrls: ['../mk-grid.shared.css', './grid-header-row.css'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: { style: 'display: contents' },\n\timports: [UiCheckBox, DragDropModule, UiIcon],\n})\nexport class GridHeaderRow {\n\n\tcolunas = input.required<IColunaComLargura[]>();\n\tordenacoes = input.required<IOrdenacao[]>();\n\ttodosSelecionados = input.required<boolean>();\n\tconfig = input.required<IGridConfig<any>>();\n\thasSeletor = input<boolean>(false);\n\thasVerticalLine = input<boolean>(false);\n\thasGrid = input<boolean>(false);\n\tisCompacted = input<boolean>(false);\n\tisSelectingAll = input<boolean>(false);\n\n\tcolumnSort = output<string | string[]>();\n\tselectAll = output<boolean>();\n\tcolumnResizeStart = output<IHeaderResizeEvent>();\n\tcolumnResizeDoubleClick = output<IHeaderResizeDoubleClickEvent>();\n\n\tprotected getOrdenacaoDirecao(coluna: string | string[]): 'asc' | 'desc' | null {\n\t\tconst ordenacao = this.ordenacoes().find(o => o.coluna === coluna);\n\t\treturn ordenacao ? ordenacao.direcao : null;\n\t}\n\n\tprotected onColumnSort(coluna: string | string[]): void {\n\t\tthis.columnSort.emit(coluna);\n\t}\n\n\tprotected onSelectAll(value: boolean): void {\n\t\tthis.selectAll.emit(value);\n\t}\n\n\tprotected onResizeStart(event: MouseEvent, coluna: IColunaComLargura): void {\n\t\tthis.columnResizeStart.emit({ event, coluna });\n\t}\n\n\tprotected onResizeDoubleClick(event: Event, coluna: IColunaComLargura): void {\n\t\tthis.columnResizeDoubleClick.emit({ event, coluna });\n\t}\n}\n\n","@if(hasVerticalLine()) {\n<div class=\"table-header table-vertical-line\"></div>\n}\n\n@if(hasSeletor()) {\n<div class=\"table-header table-header-seletor\">\n\t@if(config().selectionMode == 'multiple') {\n\t<ui-check-box [single]=\"false\" [value]=\"todosSelecionados()\" (changed)=\"onSelectAll($event)\"\n\t\t[style.--ui-color]=\"'var(--sys-on-primary)'\" [style.--ui-outline]=\"'var(--sys-on-primary)'\"\n\t\t[disabled]=\"isSelectingAll()\" [style.--ui-size]=\"isCompacted() ? '15px' : undefined\"\n\t\t[hasDash]=\"true\"></ui-check-box>\n\t}\n</div>\n}\n\n@for (coluna of colunas(); track $index) {\n@if (coluna.visivel !== false) {\n<div class=\"table-header\" [class.table-border-left-darker]=\"hasGrid() && $index === 0\"\n\t[class.header-last-col]=\"$last && !config().showActionsLine\" [class.table-border-right-darker]=\"hasGrid()\"\n\t[class.sortable]=\"coluna.sortable !== false\" [class.sorted-asc]=\"getOrdenacaoDirecao(coluna.prop) === 'asc'\"\n\t[class.sorted-desc]=\"getOrdenacaoDirecao(coluna.prop) === 'desc'\" [class.textVertical]=\"coluna.textVertical\">\n\t<div cdkDrag [cdkDragData]=\"coluna\" cdkDragLockAxis=\"x\"\n\t\tclass=\"table-header-text table-drag-container drop-option {{ coluna.classeHeader }}\" [title]=\"coluna.titulo\"\n\t\t[innerHTML]=\"coluna.tituloReduzido ?? coluna.titulo\" [attr.ordem]=\"coluna.ordem\"\n\t\t(click)=\"coluna.sortable !== false && onColumnSort(coluna.prop)\">\n\t</div>\n\t<div class=\"table-header-controls\" (dblclick)=\"onResizeDoubleClick($event, coluna)\"\n\t\t(mousedown)=\"onResizeStart($event, coluna)\">\n\t\t@if (coluna.sortable !== false) {\n\t\t<span class=\"table-ico-sort\">\n\t\t\t@if (getOrdenacaoDirecao(coluna.prop) === 'asc') {\n\t\t\t<ui-icon name=\"sort-up\" class=\"asc\"></ui-icon>\n\t\t\t} @else if (getOrdenacaoDirecao(coluna.prop) === 'desc') {\n\t\t\t<ui-icon name=\"sort-down\" class=\"desc\"></ui-icon>\n\t\t\t}\n\t\t</span>\n\t\t}\n\t</div>\n</div>\n}\n}\n\n@if(config().showActionsLine) {\n<div class=\"table-header table-action-line header-last-col\" [class.table-border-right-darker]=\"hasGrid()\"\n\t[innerHTML]=\"!isCompacted() ? config().actionsLineConfig?.headerDisplayMore : ''\"></div>\n}","import { ChangeDetectionStrategy, Component, input, model, output } from '@angular/core';\nimport { IPaginacao, PAGINATION_OPTIONS } from '../mk-grid.types';\nimport { UiButton } from '../../elements/ui-button/ui-button';\nimport { IKV, IOptionValue, UiSelect } from \"../../public-api\";\n\n@Component({\n selector: 'lib-grid-pagination',\n imports: [UiButton, UiSelect],\n templateUrl: './grid-pagination.html',\n styleUrls: ['./grid-pagination.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GridPagination {\n\n paginacao = input.required<IPaginacao>();\n totalPaginas = input.required<number>();\n performance = input.required<string>();\n pageSizeOptions = input<IKV[] | undefined>(PAGINATION_OPTIONS);\n paginationSize = model<number | undefined>(10);\n\n pageChange = output<number>();\n\n onPreviousPage(): void {\n const atual = this.paginacao().paginaAtual;\n if (atual > 1) {\n this.pageChange.emit(atual - 1);\n }\n }\n\n onNextPage(): void {\n const atual = this.paginacao().paginaAtual;\n if (atual < this.totalPaginas()) {\n this.pageChange.emit(atual + 1);\n }\n }\n\n onFirstPage(): void {\n this.pageChange.emit(1);\n }\n\n onLastPage(): void {\n this.pageChange.emit(this.totalPaginas());\n }\n\n onChangePageSize(optionValue: IOptionValue): void {\n // const newSize = Number(optionValue.optionChanged?.k ?? 10);\n // this.paginationSize.set(newSize);\n this.pageChange.emit(1); // Volta para a primeira página ao mudar o tamanho da página\n }\n}","@if(paginacao()) {\n<div class=\"table-pagination\">\n\n\t<!-- Area dos Totais -->\n\t<div class=\"pagination-info\">\n\t\t<span>Total {{ paginacao().totalItens }} registros</span>\n\t\t@if(performance()){\n\t\t<span class=\"table-performance\">\n\t\t\t{{ performance() }}\n\t\t</span>\n\t\t}\n\t</div>\n\n\t<!-- Area dos Controles -->\n\t<div class=\"pagination-controls\">\n\t\t<ui-button tipo=\"icon\" tema=\"primary\" (click)=\"onFirstPage()\" [disabled]=\"paginacao().paginaAtual === 1\"\n\t\t\ttitle=\"Primeira Página\">\n\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 16 16\">\n\t\t\t\t<path fill-rule=\"evenodd\" class=\"stroke-icone opacidade80\"\n\t\t\t\t\td=\"M11.854 3.646a.5.5 0 0 1 0 .708L8.207 8l3.647 3.646a.5.5 0 0 1-.708.708l-4-4a.5.5 0 0 1 0-.708l4-4a.5.5 0 0 1 .708 0M4.5 1a.5.5 0 0 0-.5.5v13a.5.5 0 0 0 1 0v-13a.5.5 0 0 0-.5-.5\" />\n\t\t\t</svg>\n\t\t</ui-button>\n\t\t<ui-button tipo=\"icon\" tema=\"primary\" (click)=\"onPreviousPage()\" [disabled]=\"paginacao().paginaAtual === 1\"\n\t\t\ttitle=\"Página Anterior\">\n\t\t\t<svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"pagination-icon\">\n\t\t\t\t<path d=\"M16 19L9 12L16 5\" class=\"stroke-icone\" stroke-width=\"2\" stroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\" />\n\t\t\t</svg>\n\t\t</ui-button>\n\n\t\t<span class=\"pagination-current\">{{ paginacao().paginaAtual }} de {{ totalPaginas() }}</span>\n\n\t\t<ui-button tipo=\"icon\" tema=\"primary\" (click)=\"onNextPage()\" [disabled]=\"paginacao().paginaAtual >= totalPaginas()\"\n\t\t\ttitle=\"Próxima Página\">\n\t\t\t<svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"pagination-icon\">\n\t\t\t\t<path d=\"M9 19L16 12L9 5\" class=\"stroke-icone\" stroke-width=\"2\" stroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\" />\n\t\t\t</svg>\n\t\t</ui-button>\n\t\t<ui-button tipo=\"icon\" tema=\"primary\" (click)=\"onLastPage()\" [disabled]=\"paginacao().paginaAtual >= totalPaginas()\"\n\t\t\ttitle=\"Última Página\">\n\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 16 16\">\n\t\t\t\t<path fill-rule=\"evenodd\" class=\"stroke-icone opacidade80\"\n\t\t\t\t\td=\"M4.146 3.646a.5.5 0 0 0 0 .708L7.793 8l-3.647 3.646a.5.5 0 0 0 .708.708l4-4a.5.5 0 0 0 0-.708l-4-4a.5.5 0 0 0-.708 0M11.5 1a.5.5 0 0 1 .5.5v13a.5.5 0 0 1-1 0v-13a.5.5 0 0 1 .5-.5\" />\n\t\t\t</svg>\n\t\t</ui-button>\n\t</div>\n\n\t<!-- Area do seletor de Total por página -->\n\t<div class=\"pagination-page-size\">\n\t\t<span>Por página:</span>\n\t\t<ui-select class=\"pagination-page-selector\" [canUnselect]=\"false\" [options]=\"pageSizeOptions()\"\n\t\t\t[(value)]=\"paginationSize\" (changed)=\"onChangePageSize($event)\">\n\t\t</ui-select>\n\t</div>\n</div>\n}","import { Component, computed, input, output } from '@angular/core';\nimport { IColuna, IGridConfig, IGridConfigActions } from '../mk-grid.types';\nimport { UiButton } from '../../elements/ui-button/ui-button';\nimport { UiMenu } from '../../elements/ui-menu/ui-menu';\nimport { UiProcurar } from '../../elements/ui-procurar/ui-procurar';\n\n@Component({\n selector: 'lib-grid-filter-bar',\n imports: [UiButton, UiMenu, UiProcurar],\n templateUrl: './grid-filter-bar.html',\n styleUrls: ['../mk-grid.shared.css', './grid-filter-bar.css'],\n})\nexport class GridFilterBar {\n\n config = input.required<IGridConfig<any>>();\n colunasDefinidas = input.required<IColuna<any>[]>();\n colAgrupadoAtual = input.required<IColuna<any> | null>();\n isAgrupado = input.required<boolean>();\n filterCollapsed = input<boolean>(false);\n\n searchInput = output<string>();\n actionTriggered = output<IGridConfigActions>();\n filterToggle = output<void>();\n groupByColumn = output<IColuna<any>>();\n clearGroups = output<void>();\n collapseGroups = output<void>();\n expandGroups = output<void>();\n clickOpcoesListagem = output<void>();\n\n outsideMenuActionsTop = computed(() => {\n return (this.config().actionsTop ?? []).filter(a => a.inmenu == false && a.showAction);\n });\n\n menuActionsTop = computed(() => {\n return (this.config().actionsTop ?? []).filter(a => a.inmenu != false && a.showAction);\n });\n\n protected Math = Math;\n\n onInputSearch(text: string): void {\n this.searchInput.emit(text);\n }\n\n onClickOpenCloseFilterZone(): void {\n this.filterToggle.emit();\n }\n\n onClickAction(action?: IGridConfigActions): void {\n if (action) {\n this.actionTriggered.emit(action);\n }\n }\n\n onAgruparPor(coluna: IColuna<any>): void {\n this.groupByColumn.emit(coluna);\n }\n\n onClearGroups(): void {\n this.clearGroups.emit();\n }\n\n onRecolherGroups(): void {\n this.collapseGroups.emit();\n }\n\n onExpandirGroups(): void {\n this.expandGroups.emit();\n }\n}\n\n","@if(config().showControlBar) {\n<div class=\"table-topo-container table-styles\">\n\n\t@if(config().showActionsTop) {\n\t<div class=\"table-actions-outside\">\n\t\t@for (action of outsideMenuActionsTop(); track $index;) {\n\t\t<ui-button tipo=\"fill\" tema=\"primary\" [title]=\"action.display\" (click)=\"onClickAction(action)\"\n\t\t\t[icone]=\"action.icon\">\n\t\t\t{{ action?.display ?? '' }}\n\t\t</ui-button>\n\t\t}\n\t</div>\n\t}\n\n\t<div class=\"table-top-right-container table-conjunto-actions\">\n\t\t@if(config().showSearch) {\n\t\t<div class=\"table-conjunto-actions-item table-pesquisar\">\n\t\t\t<ui-procurar (inputed)=\"onInputSearch($event)\" [autoColapse]=\"true\"></ui-procurar>\n\t\t</div>\n\t\t}\n\n\t\t@if(config().showFilterBar) {\n\t\t<div class=\"table-conjunto-actions-item\">\n\t\t\t<ui-button tipo=\"nofill\" tema=\"primary\" (click)=\"onClickOpenCloseFilterZone()\" [style.--ui-border-radius]=\"'0px'\">\n\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" class=\"stroke-icone\" viewBox=\"0 0 16 16\">\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M1.5 1.5A.5.5 0 0 1 2 1h12a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-.128.334L10 8.692V13.5a.5.5 0 0 1-.342.474l-3 1A.5.5 0 0 1 6 14.5V8.692L1.628 3.834A.5.5 0 0 1 1.5 3.5zm1 .5v1.308l4.372 4.858A.5.5 0 0 1 7 8.5v5.306l2-.666V8.5a.5.5 0 0 1 .128-.334L13.5 3.308V2z\" />\n\t\t\t\t</svg>\n\t\t\t\t<span class=\"table-collapse-ico\" [class.ativo]=\"!filterCollapsed()\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" class=\"stroke-icone\" viewBox=\"0 0 16 16\">\n\t\t\t\t\t\t<path\n\t\t\t\t\t\t\td=\"M7.247 11.14 2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z\" />\n\t\t\t\t\t</svg>\n\t\t\t\t</span>\n\t\t\t</ui-button>\n\t\t</div>\n\t\t}\n\n\t\t@if(config().showGridMenu != false) {\n\t\t<div class=\"table-conjunto-actions-item\">\n\t\t\t<ui-menu [autoCloseInCascade]=\"false\">\n\t\t\t\t<ui-button slot=\"botao\" tipo=\"nofill\" tema=\"primary\" class=\"filtro-menu\"\n\t\t\t\t\t[title]=\"config().actionsTopConfig?.menuDisplay\" [style.--ui-border-radius]=\"'0px'\">\n\t\t\t\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"stroke-icone\">\n\t\t\t\t\t\t<path\n\t\t\t\t\t\t\td=\"M9.5 13a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m0-5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0\" />\n\t\t\t\t\t</svg>\n\t\t\t\t\t{{ config().actionsTopConfig?.menuDisplay }}\n\t\t\t\t</ui-button>\n\t\t\t\t<div class=\"menu-title\" (click)=\"clickOpcoesListagem.emit()\">\n\t\t\t\t\tOpções da Listagem\n\t\t\t\t</div>\n\n\t\t\t\t@for (action of menuActionsTop(); track $index;) {\n\t\t\t\t@if(action.actions != null) {\n\t\t\t\t<ui-menu [autoCloseInCascade]=\"false\">\n\t\t\t\t\t<ui-button slot=\"botao\" tipo=\"menu-item-category\" tema=\"primary\" [title]=\"action.display\"\n\t\t\t\t\t\t[style.--ui-border-radius]=\"'0px'\" [icone]=\"action.icon\">\n\t\t\t\t\t\t{{ action?.display ?? '' }}\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t<div class=\"menu-title\">\n\t\t\t\t\t\t{{ action?.display ?? '' }}\n\t\t\t\t\t</div>\n\t\t\t\t\t@for(subAction of action.actions; track $index) {\n\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onClickAction(subAction)\"\n\t\t\t\t\t\t[icone]=\"subAction?.showIcon ? subAction?.icon : null\"\n\t\t\t\t\t\t[iconeNome]=\"subAction?.showIcon && !subAction?.icon ? 'dot' : undefined\">\n\t\t\t\t\t\t{{ subAction?.display ?? '' }}\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t}\n\t\t\t\t</ui-menu>\n\t\t\t\t} @else {\n\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onClickAction(action)\"\n\t\t\t\t\t[icone]=\"action?.showIcon ? action?.icon : null\"\n\t\t\t\t\t[iconeNome]=\"action?.showIcon && !action?.icon ? 'dot' : undefined\">\n\t\t\t\t\t{{ action?.display ?? '' }}\n\t\t\t\t</ui-button>\n\t\t\t\t}\n\t\t\t\t}@empty {\n\t\t\t\t<div class=\"p-2 text-center text-muted\">\n\t\t\t\t\tNenhuma ação disponível.\n\t\t\t\t</div>\n\t\t\t\t}\n\n\t\t\t\t<ui-menu [autoCloseInCascade]=\"false\">\n\t\t\t\t\t<ui-button slot=\"botao\" tipo=\"menu-item-category\" tema=\"primary\" iconeNome=\"object-group\">\n\t\t\t\t\t\tAgrupamento\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t<div class=\"menu-title\">\n\t\t\t\t\t\tAgrupamento\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<ui-menu [autoCloseInCascade]=\"false\">\n\t\t\t\t\t\t<ui-button slot=\"botao\" tipo=\"menu-item-category\" tema=\"primary\">\n\t\t\t\t\t\t\tAgrupar Por\n\t\t\t\t\t\t</ui-button>\n\t\t\t\t\t\t<div class=\"menu-sub-title\">\n\t\t\t\t\t\t\tAgrupar por\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t@for (coluna of colunasDefinidas(); track $index) {\n\t\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onAgruparPor(coluna)\"\n\t\t\t\t\t\t\t[iconeNome]=\"isAgrupado() && colAgrupadoAtual()?.prop === coluna.prop ? 'check2-square' : 'square'\">\n\t\t\t\t\t\t\t{{ coluna.titulo }}\n\t\t\t\t\t\t</ui-button>\n\t\t\t\t\t\t}\n\t\t\t\t\t</ui-menu>\n\n\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onClearGroups()\" iconeNome=\"object-ungroup\"\n\t\t\t\t\t\t[disabled]=\"!isAgrupado()\">\n\t\t\t\t\t\tDesagrupar\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onRecolherGroups()\" iconeNome=\"arrows-collapse\">\n\t\t\t\t\t\tRecolher Todos\n\t\t\t\t\t</ui-button>\n\t\t\t\t\t<ui-button tipo=\"menu-item\" tema=\"primary\" (click)=\"onExpandirGroups()\" iconeNome=\"arrows-expand\">\n\t\t\t\t\t\tExpandir Todos\n\t\t\t\t\t</ui-button>\n\t\t\t\t</ui-menu>\n\t\t\t</ui-menu>\n\t\t</div>\n\t\t}\n\t</div>\n\n</div>\n}","import { Component } from '@angular/core';\nimport { UiIcon } from '../../elements/ui-icon/ui-icon';\n\n@Component({\n selector: 'lib-grid-empty-list',\n imports: [UiIcon],\n templateUrl: './grid-empty-list.html',\n styleUrl: './grid-empty-list.css',\n})\nexport class GridEmptyList {}\n","<div class=\"flex gap-2 f-s-16 text-center nenhumRegistro\">\n\t<ui-icon name=\"database-check\"></ui-icon>\n\tNenhum registro a exibir no filtro aplicado.\n</div>","import { Component } from '@angular/core';\n\n@Component({\n\tselector: 'lib-grid-loading',\n\timports: [],\n\ttemplateUrl: './grid-loading.html',\n\tstyleUrl: './grid-loading.css',\n})\nexport class GridLoading { }\n","<div class=\"flex gap-2 f-s-16 text-center gridLoading\">\n\t<span class=\"gridLoading-spinner\"></span>\n\tCarregando...\n</div>","import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, model, signal, viewChild } from '@angular/core';\nimport { CdkDragDrop, DragDropModule } from '@angular/cdk/drag-drop';\nimport { GridRowRenderer } from './grid-row-renderer/grid-row-renderer';\nimport { GridHeaderRow } from './grid-header-row/grid-header-row';\nimport { GridPagination } from './grid-pagination/grid-pagination';\nimport { GridFilterBar } from './grid-filter-bar/grid-filter-bar';\nimport { GridEmptyList } from './grid-empty-list/grid-empty-list';\nimport { GridLoading } from './grid-loading/grid-loading';\nimport { IActionClickEvent, IActionsLineConfig, IColuna, IDadosDaLinha, IGridBaseActions, IGridConfig, IGridConfigActions, IGridEventAPI, IOrdenacao, IPaginacao, GRID_CONFIG_DEFAULTS } from './mk-grid.types';\nimport { UiButton } from '../elements/ui-button/ui-button';\nimport { UiIcon } from '../elements/ui-icon/ui-icon';\nimport { IOptionValue, UiSelect } from '../elements/ui-select/ui-select';\nimport { UiCheckBox } from '../elements/ui-check-box/ui-check-box';\nimport { LibUtil } from '../util/util';\nimport { IKV } from '../interfaces/interfaces';\nimport { GridCellHandler } from \"./grid-cell-handler/grid-cell-handler\";\nimport { GridCellActions } from \"./grid-cell-actions/grid-cell-actions\";\n\nconst PROP_CONTROLE_ATIVO = 'is_ativo';\n\ninterface IColunaComLargura extends IColuna<any> {\n widthNum: number;\n ordem: number;\n}\n\n\n@Component({\n selector: 'lib-mk-grid',\n imports: [\n GridEmptyList,\n GridLoading,\n UiButton,\n UiSelect,\n UiCheckBox,\n DragDropModule,\n GridFilterBar,\n GridPagination,\n GridHeaderRow,\n GridRowRenderer,\n GridCellHandler,\n GridCellActions,\n UiIcon\n ],\n templateUrl: './mk-grid.html',\n styleUrls: ['./mk-grid.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MkGrid {\n\n lista = input.required<any[] | undefined>();\n config = input.required<IGridConfig<any>>();\n filtro = input<any | undefined>();\n\n colunasDefinidas = signal<IColunaComLargura[]>([]);\n colunasFiltradas = signal<IColunaComLargura[]>([]);\n colunasOrdenadas = signal<IColunaComLargura[]>([]);\n colunasExibir = signal<IColunaComLargura[]>([]);\n gridTemplateColumns = signal('auto');\n inputSearchText = signal<string>('');\n selectedPrimaryKeys = signal<string[]>([]);\n gruposColapsed = signal<string[]>([]);\n isAgrupado = signal(false);\n isAgrupadoLimpo = signal(false);\n filterHeight = signal(1000);\n gruposEncontrados = {\n itens: new Set<string>()\n };\n numOrdemPrimeiroExibido = signal<number>(1);\n numOrdemUltimoExibido = signal<number>(1);\n pxVerticalLine = signal('');\n pxSelector = signal('');\n pxColunas = signal('');\n pxActions = signal('');\n totalColsVisivel = signal(0);\n colAgrupadoAtual = signal<IColuna<any> | null>(null);\n colMovingX = 0;\n\n minLineHeight = model('20px');\n isCompacted = model(false);\n hasGrid = model(false);\n hasVerticalLine = model(false);\n hasSeletor = model(false);\n todosSelecionados = signal(false);\n isSelectingAll = signal(false);\n pageSizeOptions = signal<IKV[] | undefined>(undefined);\n private windowWidth = signal<number>(window.innerWidth);\n private _resizeListener = () => this.windowWidth.set(window.innerWidth);\n currentDevice = computed(() => {\n return this.windowWidth() <= 768 ? 'Mobile' : 'Desktop';\n });\n\n devMode = false;\n\n maxActionsInLine = 0;\n\n eHost = inject(ElementRef);\n gridSize = viewChild('gridSize', { read: ElementRef });\n gridfiltro = viewChild('gridfiltro', { read: ElementRef });\n\n protected Math = Math;\n protected filtroCollapsed = signal(true);\n protected gridId: string = LibUtil.uuid();\n\n protected ordenacoesSignal = signal<IOrdenacao[]>([]);\n protected paginacaoSignal = signal<IPaginacao>({\n paginaAtual: 1,\n totalItens: 0,\n totalAgrupado: 0,\n });\n\n protected cfg = computed(() => {\n const c = this.config();\n return {\n ...GRID_CONFIG_DEFAULTS,\n ...c,\n actionsTopConfig: { ...GRID_CONFIG_DEFAULTS.actionsTopConfig, ...c.actionsTopConfig } as IGridBaseActions,\n actionsLineConfig: { ...GRID_CONFIG_DEFAULTS.actionsLineConfig, ...c.actionsLineConfig } as IActionsLineConfig,\n } as typeof GRID_CONFIG_DEFAULTS & IGridConfig<any>;\n });\n\n startSelected = computed(() => {\n const ss = this.config().startSelected;\n if (!ss || ss.length === 0) return null;\n return ss.map(s => s?.toString() ?? '');\n }, {\n equal: (a, b) => {\n if (a === null && b === null) return true;\n if (a === null || b === null) return false;\n if (a.length !== b.length) return false;\n return a.every((v, i) => v === b[i]);\n }\n });\n\n constructor() {\n effect(() => {\n this.iniciarSelectedRows(this.lista());\n });\n effect(() => {\n const totalItens = this.listaOrdenada().length;\n const totalAgrupado = this.listaAgrupada().length;\n this.paginacaoSignal.update(pag => ({ ...pag, totalItens, totalAgrupado }));\n });\n effect(() => {\n const agrupada = this.listaAgrupada();\n const isAgrupado = this.isAgrupado();\n if (this.gruposEncontrados.itens.size > 1) {\n this.isAgrupado.set(true);\n } else {\n this.isAgrupado.set(false);\n }\n });\n effect(() => {\n const _ = this.filtro();\n this.irParaPagina(1);\n });\n effect(() => {\n const el = this.filterContainer()?.nativeElement as HTMLElement;\n if (!el) return;\n const resizeObserver = new ResizeObserver((entries) => {\n for (let entry of entries) {\n if (entry.target === el) {\n this.filterHeight.set(entry.contentRect.height);\n }\n }\n });\n resizeObserver.observe(el);\n return () => resizeObserver.disconnect();\n });\n effect(() => {\n let listaExibindo = this.listaExibir();\n\n let numeroPrimeiro = listaExibindo?.reduce((min, item) => Math.min(min, item.ordem ?? Infinity), Infinity);\n let numeroUltimo = listaExibindo?.reduce((max, item) => Math.max(max, item.ordem ?? -Infinity), -Infinity);\n if (numeroPrimeiro == Infinity) numeroPrimeiro = 0;\n if (numeroUltimo == -Infinity) numeroUltimo = 0;\n this.numOrdemPrimeiroExibido.set(numeroPrimeiro);\n this.numOrdemUltimoExibido.set(numeroUltimo);\n });\n }\n\n paginationSize = model<number | undefined>(10);\n paginationComputedSize = computed<number>(() => {\n return this.paginationSize() ?? 10;\n });\n\n ngOnInit() {\n window.addEventListener('resize', this._resizeListener);\n this.filtroCollapsed.set(this.cfg().filterBarStartCollapsed);\n this.hasVerticalLine.set(this.cfg().hasVerticalLine);\n this.hasSeletor.set(this.cfg().hasSeletor);\n this.hasGrid.set(this.cfg().hasGrid);\n this.isCompacted.set(this.cfg().isCompacted);\n this.minLineHeight.set(this.cfg().minLineHeight);\n this.pageSizeOptions.set(this.cfg().paginations);\n this.paginationSize.set(this.cfg().paginationSize);\n\n this.definirColunas();\n this.atualizarColunas();\n }\n\n ngOnDestroy(): void {\n window.removeEventListener('resize', this._resizeListener);\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.calcularAltura();\n this.calcularColunasExibir();\n this.observerResize();\n }, 0);\n }\n\n iniciarSelectedRows(lista: any[] | undefined) {\n const startSelected = this.startSelected();\n\n // startSelected não configurado: não interferir nas seleções existentes\n if (startSelected === null) {\n if (!lista) this.clearSelections();\n return;\n }\n\n if (!lista) { this.clearSelections(); return; }\n\n const startSelectedAsStrings = startSelected.map(v => v?.toString() ?? '');\n\n let idSelecionados = lista\n .map(item => LibUtil.getV(this.cfg().primarykey, item)?.toString() ?? '')\n .filter(id => id != '')\n .filter(id => startSelectedAsStrings.includes(id));\n\n if (idSelecionados.length === 0) {\n this.todosSelecionados.set(false);\n } else if (lista.length > 0 && idSelecionados.length === lista.length) {\n this.todosSelecionados.set(true);\n } else {\n this.todosSelecionados.set(false);\n }\n\n this.selectedPrimaryKeys.set(idSelecionados);\n }\n\n definirColunas() {\n let colunasInicialConfig = this.cfg().colunas.map((col, index) => {\n return {\n ...col,\n widthNum: col.width ? parseInt(col.width.replaceAll('px', '').replaceAll('auto', '50')) : 50,\n tituloReduzido: col.titulo,\n ordem: index,\n };\n });\n\n let primeiraPropAgrupadaInicial = colunasInicialConfig.find(c => c.iniciaAgrupado)?.prop;\n let colunasAgrupada = colunasInicialConfig.find(c => c.prop === primeiraPropAgrupadaInicial);\n if (colunasAgrupada) {\n this.colAgrupadoAtual.set(colunasAgrupada);\n } else {\n this.colAgrupadoAtual.set(null);\n }\n\n this.colunasDefinidas.set(colunasInicialConfig);\n }\n\n filtrarColunas() {\n let agrupada = this.colAgrupadoAtual();\n let colunasFiltradas = this.colunasDefinidas().filter(c => {\n return (c.visivel !== false) && (agrupada?.prop !== c.prop);\n });\n this.colunasFiltradas.set(colunasFiltradas);\n }\n\n ordenarColunas() {\n this.colunasOrdenadas.set(this.colunasFiltradas().sort((a, b) => a.ordem - b.ordem));\n }\n\n colunasKVDefinidas = computed<IKV[]>(() => {\n return this.colunasDefinidas().map(c => ({ k: LibUtil.classof(c.prop) == 'string' ? c.prop as string : c.prop[0], v: c.titulo }));\n });\n\n outsideMenuActionsTop = computed(() => {\n return this.cfg().actionsTop.filter(a => a.inmenu == false && a.showAction);\n });\n\n menuActionsTop = computed(() => {\n return this.cfg().actionsTop.filter(a => a.inmenu != false && a.showAction);\n });\n\n filterContainer = viewChild('filterContainer', { read: ElementRef });\n\n protected listaOrdenada = computed(() => {\n const listaDefinida = this.lista() ?? [];\n if (LibUtil.classof(listaDefinida) !== 'array') {\n this.config().hasError = true;\n return [];\n }\n let words = this.inputSearchText().trim().split(\" \").filter(t => t != \"\");\n let agrupadaAtual = this.colAgrupadoAtual();\n let propriedadeAgrupada = agrupadaAtual?.prop;\n\n let listaFiltrada = listaDefinida.map((o, i) => {\n let id = LibUtil.getV(this.cfg().primarykey, o)?.toString() ?? String(i);\n\n let dadosDaLinha: IDadosDaLinha = {\n id,\n dados: o,\n inativo: this.cfg().InativeRule(o),\n isSelectionDisabled: this.cfg().SelectionDisabledRule ? this.cfg().SelectionDisabledRule!(o) : false,\n groupName: propriedadeAgrupada ? LibUtil.getV(propriedadeAgrupada, o) : '',\n selecionado: this.selectedPrimaryKeys().includes(id),\n hue: this.cfg().backgroundHue ? this.cfg().backgroundHue?.(o) : undefined,\n actions: this.cfg().actionsLine.map(a => {\n if (a.showAction == true) return { ...a, showAction: a.showLineAction ? a.showLineAction(o) : true };\n else return { ...a, showAction: false };\n }),\n ordem: i + 1,\n }\n dadosDaLinha.hasActionMenu = dadosDaLinha.actions?.some(a => a.showAction == true && a.inmenu == true) ?? false;\n this.maxActionsInLine = Math.max(this.maxActionsInLine, dadosDaLinha.actions?.filter(a => a.showAction == true && a.inmenu == false).length ?? 0);\n return (dadosDaLinha as IDadosDaLinha);\n }).filter(dadosLinha => {\n if (words.length === 0) return true;\n\n for (const w of words) {\n let encontrado = false;\n for (const coluna of this.cfg().colunas) {\n const valorColuna = LibUtil.getV(coluna.prop, dadosLinha.dados);\n if (valorColuna != null && LibUtil.contem(valorColuna, w)) {\n encontrado = true;\n }\n }\n if (!encontrado) return false;\n }\n\n return true;\n });\n\n const ordenacoes = this.ordenacoesSignal();\n if (!ordenacoes.length) return listaFiltrada;\n\n let ordenado = [...listaFiltrada].sort((a, b) => {\n for (const ordenacao of ordenacoes) {\n if (Array.isArray(ordenacao.coluna)) {\n for (const prop of ordenacao.coluna) {\n const resultado = this.compararValores(\n LibUtil.getV(prop, a.dados),\n LibUtil.getV(prop, b.dados),\n ordenacao.direcao\n );\n if (resultado !== 0) return resultado;\n }\n } else {\n const resultado = this.compararValores(\n LibUtil.getV(ordenacao.coluna, a.dados),\n LibUtil.getV(ordenacao.coluna, b.dados),\n ordenacao.direcao\n );\n if (resultado !== 0) return resultado;\n }\n }\n return 0;\n });\n return ordenado.map((item, index) => ({ ...item, ordem: index + 1 }));\n });\n\n protected listaAgrupada = computed(() => {\n const listaOrdenada = this.listaOrdenada();\n\n if (this.isAgrupado() == false) {\n if (this.isAgrupadoLimpo() == false) {\n listaOrdenada.forEach(item => {\n this.gruposEncontrados.itens.add(item.groupName);\n });\n }\n return listaOrdenada;\n }\n\n let listaComGrupos: IDadosDaLinha[] = [];\n let c = 1;\n let colAgrupadaAtual = this.colAgrupadoAtual()?.prop ?? '';\n for (const grupo of Array.from(this.gruposEncontrados.itens)) {\n let firstFound = listaOrdenada.filter(i => i.groupName === grupo)[0];\n let inativo = listaOrdenada.filter(i => i.groupName === grupo).some(i => this.getObjetoInativo(colAgrupadaAtual, i.dados));\n listaComGrupos.push({\n dados: firstFound?.dados,\n inativo: inativo,\n groupName: grupo,\n selecionado: false,\n isGroup: true,\n isFullLine: {\n visible: true,\n colapsed: this.gruposColapsed().includes(grupo),\n colapsedCount: listaOrdenada.filter(i => i.groupName === grupo).length,\n showIco: true,\n },\n isColapsed: false,\n } as IDadosDaLinha);\n\n listaOrdenada.map(item => {\n if (item.groupName === grupo) {\n listaComGrupos.push({\n ...item,\n ordem: c++,\n isColapsed: this.gruposColapsed().includes(grupo)\n });\n }\n });\n };\n\n return listaComGrupos.filter(i => !i.isColapsed);\n });\n\n protected listaExibir = computed(() => {\n const listaOrdenada = this.listaAgrupada();\n\n const paginacao = this.paginacaoSignal();\n const inicio = (paginacao.paginaAtual - 1) * this.paginationComputedSize();\n const fim = inicio + this.paginationComputedSize();\n const listaExibindo = listaOrdenada.slice(inicio, fim);\n return listaExibindo;\n });\n\n numeroPrimeiroItemExibido = computed(() => {\n return (this.paginacaoSignal().paginaAtual - 1) * this.paginationComputedSize() + 1;\n });\n\n numeroUltimoItemExibido = computed(() => {\n const paginacao = this.paginacaoSignal();\n return Math.min(paginacao.paginaAtual * this.paginationComputedSize(), paginacao.totalItens);\n });\n\n onDropColuna(ev: CdkDragDrop<IColunaComLargura[]>) {\n let colunaOrigem = ev.item.data;\n\n let colTarget = (ev.event.target as any).closest('.table-header-text');\n let cellTarget = (ev.event.target as any).closest('.table-item');\n let novaOrdem: number | null = null;\n if (colTarget) {\n novaOrdem = colTarget.getAttribute('ordem')\n }\n if (cellTarget) {\n novaOrdem = cellTarget.getAttribute('ordem')\n }\n\n if (novaOrdem && colunaOrigem) {\n this.colunasOrdenadas.update(cols => {\n const semColuna = cols.filter(c => c.ordem !== colunaOrigem.ordem);\n semColuna.splice(novaOrdem, 0, colunaOrigem);\n return semColuna.map((col, index) => ({ ...col, ordem: index }));\n })\n this.calcularColunasExibir();\n }\n }\n\n getObjetoInativo(nomeColuna: string | string[], linha: any): boolean {\n if (LibUtil.classof(nomeColuna) == \"string\" && (nomeColuna as string).includes(\".\")) {\n const props = (nomeColuna as string).split(\".\");\n const lastObj = LibUtil.getV(props.slice(0, -1).join(\".\"), linha);\n return lastObj?.[PROP_CONTROLE_ATIVO] == false;\n }\n return false;\n }\n\n observerResize() {\n const el = this.eHost?.nativeElement;\n if (!el) return;\n const resizeObserver = new ResizeObserver((entries) => {\n this.calcularColunasExibir();\n });\n resizeObserver.observe(el);\n return () => resizeObserver.disconnect();\n }\n\n calcularColunasExibir() {\n let colunasAExibir = this.colunasOrdenadas().map(c => ({ ...c }));\n\n let compacted = this.isCompacted();\n let wVerticalLine = this.hasVerticalLine() ? (compacted ? 30 : 40) : 0;\n let wSelector = this.hasSeletor() ? (compacted ? 30 : 40) : 0;\n let wActions = this.cfg().showActionsLine ? (compacted ? 42 : 130) : 0;\n let wDisponivel = this.gridSize()?.nativeElement?.offsetWidth - (wVerticalLine + wSelector + wActions);\n\n let totalFixo = (wVerticalLine > 0 ? 1 : 0) + (wSelector > 0 ? 1 : 0) + (wActions > 0 ? 1 : 0);\n let wFixo = wVerticalLine + wSelector + wActions;\n\n while (colunasAExibir.length > 0) {\n let wColunas = colunasAExibir.reduce((a, b) => a + b.widthNum, 0);\n let somado = wFixo + wColunas;\n if (somado <= wDisponivel) break;\n colunasAExibir.pop();\n }\n this.colunasExibir.set(colunasAExibir);\n this.totalColsVisivel.set(colunasAExibir.length + totalFixo);\n\n let wColsCentrais = '';\n for (let col of colunasAExibir) {\n col.width = col.width ?? 'auto';\n wColsCentrais += `${col.width} `;\n }\n\n this.pxVerticalLine.set(wVerticalLine > 0 ? (`${wVerticalLine}px `) : '');\n this.pxSelector.set(wSelector > 0 ? (`${wSelector}px `) : '');\n this.pxActions.set(wActions > 0 ? (`${wActions}px `) : '');\n this.pxColunas.set(wColsCentrais);\n }\n\n calcularAltura() {\n const elementoConteiner = this.filterContainer();\n if (!elementoConteiner) return;\n\n const firstChild = elementoConteiner.nativeElement.firstElementChild;\n if (!firstChild) return;\n\n const height = firstChild.scrollHeight;\n this.filterHeight.set(height);\n }\n\n getState(): any {\n return {\n colunaAgrupadaAtual: this.colAgrupadoAtual(),\n colunas: this.colunasDefinidas() ?? [],\n colunasExibir: this.colunasExibir() ?? [],\n config: this.config(),\n filtros: this.filtro() ?? {},\n gruposColapsed: this.gruposColapsed(),\n gruposEncontrados: this.gruposEncontrados,\n isAgrupado: this.isAgrupado(),\n isAgrupadoLimpo: this.isAgrupadoLimpo(),\n listaExibindo: this.listaExibir(),\n listaOrdenada: this.listaOrdenada(),\n ordenacoes: this.ordenacoesSignal(),\n paginacao: {\n paginas: this.totalPaginas(),\n paginaAtual: this.paginacaoSignal().paginaAtual,\n itensPorPagina: this.paginationComputedSize(),\n },\n startSelected: this.startSelected(),\n selecionados: this.selectedPrimaryKeys(),\n tempoRequisicao: this.cfg().timeRequest,\n totais: {\n totalDefinida: this.lista()?.length ?? 0,\n totalOrdenada: this.listaOrdenada().length,\n totalExibindo: this.listaExibir().length,\n },\n ultimaAcao: this.config().lastGridEventAPI,\n };\n }\n\n protected totalPaginas = computed(() => {\n const paginacao = this.paginacaoSignal();\n return Math.ceil(paginacao.totalAgrupado / this.paginationComputedSize());\n });\n\n protected alternarOrdenacao(coluna: string | string[]): void {\n const ordenacoes = this.ordenacoesSignal();\n const index = ordenacoes.findIndex(o => o.coluna === coluna);\n\n if (index >= 0) {\n const novaDirecao = ordenacoes[index].direcao === 'asc' ? 'desc' : 'asc';\n if (novaDirecao == \"asc\") {\n const novasOrdenacoes = [...ordenacoes.filter(o => o.coluna != coluna)];\n this.ordenacoesSignal.set(novasOrdenacoes);\n } else {\n const novasOrdenacoes = [...ordenacoes];\n novasOrdenacoes[index] = { coluna, direcao: novaDirecao };\n this.ordenacoesSignal.set(novasOrdenacoes);\n }\n } else {\n this.ordenacoesSignal.set([...ordenacoes, { coluna, direcao: 'asc' }]);\n }\n }\n\n protected obterDirecaoOrdenacao(coluna: string | string[]): 'asc' | 'desc' | null {\n const ordenacao = this.ordenacoesSignal().find(o => o.coluna === coluna);\n return ordenacao ? ordenacao.direcao : null;\n }\n\n protected irParaPagina(pagina: number): void {\n if (pagina >= 1 && pagina <= this.totalPaginas()) {\n this.paginacaoSignal.update(pag => ({ ...pag, paginaAtual: pagina }));\n }\n }\n\n protected proximaPagina(): void {\n const atual = this.paginacaoSignal().paginaAtual;\n this.irParaPagina(atual + 1);\n }\n\n protected paginaAnterior(): void {\n const atual = this.paginacaoSignal().paginaAtual;\n this.irParaPagina(atual - 1);\n }\n\n public limparOrdenacao(): void {\n this.ordenacoesSignal.set([]);\n }\n\n async onOrdenarPor(coluna: IColunaComLargura | null) {\n if (!coluna) return;\n if (coluna.ordem == null) return;\n this.alternarOrdenacao(coluna.prop);\n }\n\n getColDisplay(nomeCampo: string | string[]): string {\n return this.colunasDefinidas()?.find(o => o.prop == nomeCampo)?.titulo ?? '???';\n }\n\n protected getOrdenacaoTexto(): string {\n const ordenacoes = this.ordenacoesSignal();\n if (!ordenacoes.length) return '';\n return ordenacoes.map(o => `${this.getColDisplay(o.coluna)} (${o.direcao})`).join(', ');\n }\n\n protected onClickClearInfo() {\n this.limparOrdenacao();\n }\n\n protected atualizarColunas() {\n this.filtrarColunas();\n this.ordenarColunas();\n this.calcularColunasExibir();\n }\n\n protected onClickCellAction(evento: IActionClickEvent) {\n if (evento.action?.action) {\n evento.action.action(this._getGridEvent(evento.action, evento.dadosDaLinha?.dados));\n }\n }\n\n protected onClickAction(action?: IGridConfigActions, linha?: any) {\n if (action?.action) {\n return action.action(this._getGridEvent(action, linha));\n }\n return;\n }\n\n private _getGridEvent(action: IGridConfigActions, linha?: any): IGridEventAPI<any> {\n let pk = this.cfg().primarykey;\n let id = undefined;\n if (pk != null && linha != null) {\n id = linha[pk];\n }\n let evento: IGridEventAPI<any> = { id, linha, action }\n this.config().lastGridEventAPI = evento;\n return evento;\n }\n\n private compararValores(a: any, b: any, direcao: 'asc' | 'desc'): number {\n let resultado = 0;\n\n if (a === null || a === undefined) a = '';\n if (b === null || b === undefined) b = '';\n\n if (typeof a === 'number' && typeof b === 'number') {\n resultado = a - b;\n } else if (a instanceof Date && b instanceof Date) {\n resultado = a.getTime() - b.getTime();\n } else {\n resultado = String(a).localeCompare(String(b));\n }\n\n return direcao === 'asc' ? resultado : -resultado;\n }\n\n protected onClickGridMenu(action?: IGridConfigActions) {\n if (action?.action) {\n return action.action(this._getGridEvent(action));\n }\n }\n\n protected onInputSearch(text: string): void {\n this.inputSearchText.set(text);\n }\n\n protected onClickOpenCloseFilterZone(): void {\n this.filtroCollapsed.update(v => !v);\n }\n\n async onChangeTodosSelecionados(todosSelecionados: boolean) {\n this.isSelectingAll.set(true);\n let listaOrdenada = this.listaOrdenada();\n\n if (!todosSelecionados) {\n for (const linha of listaOrdenada) {\n if (this.selectedPrimaryKeys().includes(linha.id)) {\n await this.desselecionarLinha(linha.id, linha.dados);\n }\n }\n } else {\n for (const linha of listaOrdenada) {\n await this.selecionarLinha(linha.id, linha.dados);\n }\n }\n\n await LibUtil.wait(100);\n this.isSelectingAll.set(false);\n }\n\n async onClickRow(linha: IDadosDaLinha) {\n if (!linha) return;\n if (!linha.dados) return;\n\n if (this.selectedPrimaryKeys().includes(linha.id)) {\n await this.desselecionarLinha(linha.id, linha.dados);\n } else {\n await this.selecionarLinha(linha.id, linha.dados);\n }\n }\n\n clearSelections() {\n this.selectedPrimaryKeys.set([]);\n }\n\n async selecionarLinha(id: string, dados?: any) {\n if (this.selectedPrimaryKeys().includes(id)) return;\n\n if (this.cfg().selectionMode == 'single') {\n this.selectedPrimaryKeys.set([id])\n } else {\n this.selectedPrimaryKeys.set([...this.selectedPrimaryKeys(), id]);\n }\n await this.cfg().onSelected?.(dados, this.selectedPrimaryKeys());\n await this.cfg().onSelectionChanged?.(dados, this.selectedPrimaryKeys());\n }\n\n async desselecionarLinha(id: string, dados?: any) {\n if (!this.selectedPrimaryKeys().includes(id)) return;\n\n if (this.cfg().selectionMode == 'single') {\n this.selectedPrimaryKeys.set([]);\n } else {\n this.selectedPrimaryKeys.set(this.selectedPrimaryKeys().filter(i => i !== id));\n }\n await this.cfg().onUnselected?.(dados, this.selectedPrimaryKeys());\n await this.cfg().onSelectionChanged?.(dados, this.selectedPrimaryKeys());\n }\n\n onClickGroup(dadosDaLinha: IDadosDaLinha) {\n this.gruposColapsed.update(g => {\n if (g.includes(dadosDaLinha.groupName)) {\n return g.filter(grupo => grupo != dadosDaLinha.groupName);\n } else {\n return [...g, dadosDaLinha.groupName];\n }\n });\n }\n\n onRecolherGroups() {\n this.gruposColapsed.set(Array.from(this.gruposEncontrados.itens));\n }\n\n onExpandirGroups() {\n this.gruposColapsed.set([]);\n }\n\n async onAgruparPor(coluna: IColunaComLargura | null) {\n this.colAgrupadoAtual.set(null);\n this.gruposEncontrados.itens.clear();\n this.isAgrupadoLimpo.set(false);\n\n this.colAgrupadoAtual.set(coluna);\n this.atualizarColunas();\n }\n\n async onChangedAgrupamento(event: IOptionValue) {\n let propAgrupamento = event.optionChanged?.k;\n let colAgrupada = this.colunasDefinidas().find(c => c.prop === propAgrupamento) ?? null;\n this.onAgruparPor(colAgrupada)\n }\n\n protected onClearGroups() {\n this.isAgrupadoLimpo.set(true);\n this.gruposEncontrados.itens.clear();\n this.isAgrupado.set(false);\n this.colAgrupadoAtual.set(null);\n this.atualizarColunas();\n }\n\n onChangeLineNumber() {\n this.hasVerticalLine.update(v => !v);\n this.calcularColunasExibir();\n }\n\n onChangeSeletor() {\n this.hasSeletor.update(v => !v);\n this.calcularColunasExibir();\n }\n\n onChangeCompacted() {\n this.isCompacted.update(v => !v);\n }\n\n onChangeHasGrid() {\n this.hasGrid.update(v => !v);\n }\n\n onResizeStart(event: MouseEvent, coluna: IColunaComLargura) {\n this.colMovingX = event.clientX;\n event.preventDefault();\n let eColuna = (event.target as HTMLElement).closest('.table-header') as HTMLElement;\n let computedWidth = parseInt(window.getComputedStyle(eColuna).width.replaceAll('px', ''), 10);\n\n const onMouseMove = (moveEvent: MouseEvent) => {\n const delta = moveEvent.clientX - this.colMovingX;\n let widthNum = Math.max(30, (computedWidth + delta));\n this.colunasOrdenadas.update(cols => {\n return cols.map(c => {\n if (c.ordem === coluna.ordem) {\n return { ...c, widthNum, width: `${widthNum}px` };\n }\n return c;\n });\n });\n };\n\n const onMouseUp = () => {\n this.calcularColunasExibir();\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n };\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n }\n\n onDoubleClickControls(event: Event, coluna: IColunaComLargura) {\n let getColunaDefinina = this.colunasDefinidas().find(c => c.ordem === coluna.ordem);\n let getWidth = getColunaDefinina?.width ? getColunaDefinina.width : 'auto';\n this.colunasOrdenadas.update(cols => {\n return cols.map(c => {\n if (c.ordem === coluna.ordem) {\n return { ...c, width: getWidth };\n }\n return c;\n });\n });\n this.calcularColunasExibir();\n }\n\n onClickOpcoesListagem() {\n console.log('Listagem', this);\n console.log('CFG', this.cfg());\n console.log('Config Inputado', this.config());\n console.log('Lista', this.lista());\n console.log('Filtro', this.filtro());\n this.getState();\n }\n}\n\n","<lib-grid-filter-bar [config]=\"cfg()\" [colunasDefinidas]=\"$any(colunasDefinidas())\"\n\t[colAgrupadoAtual]=\"colAgrupadoAtual()\" [isAgrupado]=\"isAgrupado()\" [filterCollapsed]=\"filtroCollapsed()\"\n\t(searchInput)=\"onInputSearch($event)\" (filterToggle)=\"onClickOpenCloseFilterZone()\"\n\t(actionTriggered)=\"onClickAction($event)\" (groupByColumn)=\"onAgruparPor($any($event))\" (clearGroups)=\"onClearGroups()\"\n\t(collapseGroups)=\"onRecolherGroups()\" (expandGroups)=\"onExpandirGroups()\"\n\t(clickOpcoesListagem)=\"onClickOpcoesListagem()\">\n</lib-grid-filter-bar>\n\n@if(cfg().showFilterBar) {\n<div class=\"table-filter-container table-styles\" [style.--filter-height.px]=\"filterHeight()\">\n\t<div #filterContainer class=\"table-filter-content\" [class.table-filter-hide]=\"filtroCollapsed()\">\n\t\t<ng-content></ng-content>\n\t</div>\n</div>\n}\n\n@if(currentDevice() == \"Mobile\"){\n<!-- MOBILE INICIO -->\n\n@for (dadosLinha of listaExibir(); track $index;let i = $index) {\n@if( dadosLinha.isColapsed !== true){\n\n@if(dadosLinha.isFullLine?.visible){\n<!-- MOBILE GRUPO LINHA PRÓPRIA -->\n<div class=\"table-row-mobile table-formated table-group table-styles\" (click)=\"onClickGroup(dadosLinha)\">\n\t<div>{{ dadosLinha.groupName }}</div>\n\t<div class=\"table-group-items-area\" [class.table-group-collapse]=\"dadosLinha.isFullLine.colapsed === true\">\n\t\t{{ dadosLinha.isFullLine.colapsedCount ?? 0 }} item(s)\n\t\t<div class=\"table-group-items-ico\">\n\t\t\t<ui-icon name=\"caret-down\"></ui-icon>\n\t\t</div>\n\t</div>\n</div>\n} @else {\n\n<div class=\"table-overflow mobile\" [style.--table-min-height]=\"isCompacted() ? '20px' : minLineHeight()\">\n\t<div class=\"table-table-mobile\" [class.selected]=\"dadosLinha.selecionado\">\n\n\t\t<!-- MOBILE DADOS -->\n\t\t@if(cfg().showActionsLine){\n\t\t<div class=\"table-header-mobile\" [style.gridArea]=\"'auto / auto / auto / span 2'\">\n\t\t\t@if(hasVerticalLine()){\n\t\t\t<!-- MOBILE VERTICAL DIV -->\n\t\t\t<div class=\"table-header-mobile table-formated table-vertical-line\" (click)=\"onClickRow(dadosLinha)\">\n\t\t\t\t{{ dadosLinha.ordem }}\n\t\t\t</div>\n\t\t\t}\n\t\t\t@if(hasSeletor()){\n\t\t\t<!-- MOBILE SELECTOR DIV -->\n\t\t\t<div class=\"table-header-mobile table-formated table-item-seletor\" (click)=\"onClickRow(dadosLinha)\">\n\t\t\t\t<ui-check-box [(value)]=\"dadosLinha.selecionado\" [style.--ui-color]=\"'var(--sys-on-primary)'\"\n\t\t\t\t\t[style.--ui-outline]=\"'var(--sys-on-primary)'\" [single]=\"this.cfg().selectionMode == 'single'\"\n\t\t\t\t\t[style.--ui-size]=\"isCompacted() ? '15px' : undefined\"></ui-check-box>\n\t\t\t</div>\n\t\t\t}\n\t\t\t<div class=\"table-header-mobile-space\" (click)=\"onClickRow(dadosLinha)\"></div>\n\t\t\t<lib-grid-cell-actions [config]=\"cfg()\" [dadosDaLinha]=\"dadosLinha\" [mobileHeader]=\"true\"\n\t\t\t\t(action)=\"onClickCellAction($event)\" [compact]=\"isCompacted()\"></lib-grid-cell-actions>\n\t\t</div>\n\t\t}\n\n\t\t<!-- MOBILE LINHA -->\n\t\t@for (localColuna of colunasOrdenadas(); track $index;) {\n\t\t<div class=\"table-header-mobile\" [class.sortable]=\"localColuna.sortable !== false\"\n\t\t\t[class.sorted-asc]=\"obterDirecaoOrdenacao(localColuna.prop) === 'asc'\"\n\t\t\t[class.sorted-desc]=\"obterDirecaoOrdenacao(localColuna.prop) === 'desc'\"\n\t\t\t(click)=\"localColuna.sortable !== false && alternarOrdenacao(localColuna.prop)\" [style]=\"localColuna.styleHeader\">\n\t\t\t<div class=\"table-header-mobile-text\" [title]=\"localColuna.titulo\"\n\t\t\t\t[innerHTML]=\"localColuna.tituloReduzido ?? localColuna.titulo\">\n\t\t\t</div>\n\t\t\t<div class=\"table-header-controls\">\n\t\t\t\t@if (localColuna.sortable !== false) {\n\t\t\t\t<span class=\"table-ico-sort\">\n\t\t\t\t\t@if (obterDirecaoOrdenacao(localColuna.prop) === 'asc') {\n\t\t\t\t\t<ui-icon name=\"sort-up\" class=\"asc\"></ui-icon>\n\t\t\t\t\t} @else if (obterDirecaoOrdenacao(localColuna.prop) === 'desc') {\n\t\t\t\t\t<ui-icon name=\"sort-down\" class=\"desc\"></ui-icon>\n\t\t\t\t\t}\n\t\t\t\t</span>\n\t\t\t\t}\n\t\t\t</div>\n\t\t</div>\n\t\t<lib-grid-cell-handler class=\"table-item-mobile table-formated\" [class.odd]=\"i % 2 !== 0\" [class.even]=\"i % 2 === 0\"\n\t\t\t[linha]=\"dadosLinha.dados\" [localColuna]=\"localColuna\" [lista]=\"lista()!\" [config]=\"cfg()\"\n\t\t\t[localColunas]=\"colunasOrdenadas()\" [inputSearchText]=\"inputSearchText()\"></lib-grid-cell-handler>\n\t\t}\n\t</div>\n</div>\n}\n}\n} @empty {\n<!-- LINHA DE SEM DADOS -->\n<div class=\"table-styles\"><lib-grid-empty-list></lib-grid-empty-list></div>\n}\n<!-- MOBILE FIM -->\n\n\n} @else {\n<!-- DESKTOP INICIO -->\n<div #gridSize class=\"table-overflow\" [class.compacted]=\"isCompacted()\"\n\t[style.--table-min-height]=\"isCompacted() ? '40px' : minLineHeight()\">\n\t<div class=\"table-table\" [class.table-has-vertical-line]=\"hasVerticalLine()\" [class.table-has-seletor]=\"hasSeletor()\"\n\t\tcdkDropList (cdkDropListDropped)=\"onDropColuna($event)\" [cdkDropListData]=\"colunasExibir()\"\n\t\t[style.gridTemplateColumns]=\"`${this.pxVerticalLine()}${this.pxSelector()}` + this.pxColunas() + this.pxActions()\">\n\t\t<!-- DESKTOP HEADER -->\n\t\t<lib-grid-header-row [colunas]=\"colunasExibir()\" [ordenacoes]=\"ordenacoesSignal()\"\n\t\t\t[todosSelecionados]=\"todosSelecionados()\" [config]=\"cfg()\" [hasSeletor]=\"hasSeletor()\"\n\t\t\t[hasVerticalLine]=\"hasVerticalLine()\" [hasGrid]=\"hasGrid()\" [isCompacted]=\"isCompacted()\"\n\t\t\t[isSelectingAll]=\"isSelectingAll()\" (columnSort)=\"alternarOrdenacao($event)\"\n\t\t\t(selectAll)=\"onChangeTodosSelecionados($event)\"\n\t\t\t(columnResizeStart)=\"onResizeStart($event.event, $any($event.coluna))\"\n\t\t\t(columnResizeDoubleClick)=\"onDoubleClickControls($event.event, $any($event.coluna))\">\n\t\t</lib-grid-header-row>\n\n\t\t<!-- DESKTOP LINHAS DE DADOS -->\n\t\t@for (dadosLinha of listaExibir(); track $index; let i = $index) {@if( dadosLinha.isColapsed !== true){\n\n\t\t@if(dadosLinha.isFullLine?.visible){\n\n\t\t<!-- DESKTOP FULL LINE (COLSPAN HORIZONTAL) -->\n\t\t@if(hasVerticalLine()){\n\t\t<!-- DESKTOP HEADER VERTICAL FULL LINE -->\n\t\t<div class=\"table-header table-formated table-vertical-line\">\n\t\t\t{{ dadosLinha.ordem }}\n\t\t</div>\n\t\t}\n\t\t<!-- DESKTOP GRUPO: ROW -->\n\t\t@if(dadosLinha.isGroup){\n\n\t\t<div class=\"table-row table-formated table-group table-border-bottom-card\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\t<div class=\"table-group-name\" [class.table-inativo]=\"dadosLinha.inativo\">\n\t\t\t\t<lib-grid-cell-handler class=\"table-item table-dados {{ colAgrupadoAtual()?.classeCell }}\"\n\t\t\t\t\t[linha]=\"dadosLinha.dados\" [localColuna]=\"colAgrupadoAtual()!\" [lista]=\"lista()!\" [config]=\"cfg()\"\n\t\t\t\t\t[localColunas]=\"colunasDefinidas()\" [inputSearchText]=\"inputSearchText()\"></lib-grid-cell-handler>\n\t\t\t</div>\n\t\t\t<ui-button tipo=\"nofill\" (click)=\"onClickGroup(dadosLinha)\">\n\t\t\t\t<div class=\"table-group-items-area\" [class.table-group-collapse]=\"dadosLinha.isFullLine.colapsed === true\">\n\t\t\t\t\t{{ dadosLinha.isFullLine.colapsedCount ?? 0 }} item(s)\n\t\t\t\t\t<div class=\"table-group-items-ico\">\n\t\t\t\t\t\t<ui-icon [name]=\"dadosLinha.isFullLine.colapsed ? 'caret-down-fill' : 'caret-down'\"></ui-icon>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</ui-button>\n\t\t</div>\n\n\t\t} @else {\n\t\t<div class=\"table-row table-formated table-others\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\tNada a exibir nesta linha\n\t\t</div>\n\t\t}\n\n\t\t} @else {\n\n\t\t<!-- LINHA NORMAL via GridRowRenderer -->\n\t\t<lib-grid-row-renderer [dadosLinha]=\"dadosLinha\" [config]=\"cfg()\" [colunas]=\"colunasExibir()\"\n\t\t\t[colunasOrdenadas]=\"colunasOrdenadas()\" [lista]=\"lista()!\" [inputSearchText]=\"inputSearchText()\"\n\t\t\t[hasSeletor]=\"hasSeletor()\" [hasVerticalLine]=\"hasVerticalLine()\" [isCompacted]=\"isCompacted()\"\n\t\t\t[hasGrid]=\"hasGrid()\" [rowIndex]=\"i\" (actionTriggered)=\"onClickCellAction($event)\"\n\t\t\t(rowClicked)=\"onClickRow($event)\" [lastRow]=\"$last\">\n\t\t</lib-grid-row-renderer>\n\n\t\t}}\n\n\t\t<!-- POSSIBILIDADES SEM DADOS -->\n\t\t} @empty {\n\n\t\t<!-- ERRO -->\n\t\t@if(cfg().hasError) {\n\t\t<div class=\"table-row table-formated table-errors\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\t<ng-content select=\"[mkGridError]\"></ng-content>\n\t\t</div>\n\n\t\t<!-- LOADING -->\n\t\t} @else if(!cfg().isLoaded) {\n\t\t<div class=\"table-row table-row-centered\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\t<ng-content select=\"[mkGridLoading]\">\n\t\t\t\t<lib-grid-loading></lib-grid-loading>\n\t\t\t</ng-content>\n\t\t</div>\n\n\t\t} @else {\n\n\t\t<div class=\"table-row table-row-centered\"\n\t\t\t[style.gridArea]=\"'auto / auto / auto / span ' + (totalColsVisivel() - (hasVerticalLine() ? 1 : 0))\">\n\t\t\t<ng-content select=\"[mkGridEmpty]\">\n\t\t\t\t<lib-grid-empty-list></lib-grid-empty-list>\n\t\t\t</ng-content>\n\t\t</div>\n\t\t}\n\n\t\t}\n\n\t\t<!-- FIM DA LINHA NORMAL -->\n\n\n\t</div>\n</div>\n<!-- DESKTOP FIM -->\n}\n\n\n@if(cfg().showPagination){\n<lib-grid-pagination [paginacao]=\"paginacaoSignal()\" [totalPaginas]=\"totalPaginas()\"\n\t[performance]=\"cfg().timeRequest ?? ''\" [pageSizeOptions]=\"pageSizeOptions()\" [(paginationSize)]=\"paginationSize\"\n\t(pageChange)=\"irParaPagina($event)\">\n</lib-grid-pagination>\n}\n\n\n\n\n@if(cfg().showInfoBar){\n<!-- Informações de Ordenação -->\n@if (ordenacoesSignal().length > 0) {\n<div class=\"table-info-row table-styles\">\n\t@if (ordenacoesSignal().length > 0) {\n\t<div>Ordenado por: {{ getOrdenacaoTexto() }}</div>\n\t}\n\t<div class=\"f-1\"></div>\n\t<ui-button tipo=\"outlined\" tema=\"primary\" (click)=\"onClickClearInfo()\" iconeNome=\"x-lg\"></ui-button>\n</div>\n}\n<!-- Informações de Agrupamento -->\n@if (this.isAgrupado()) {\n<div class=\"table-info-row table-styles\">\n\t<ui-icon name=\"object-group\"></ui-icon>\n\t<div class=\"flex flex-wrap gap-1 f-t-b\">\n\t\tAgrupado por {{ colAgrupadoAtual()?.titulo }} (há {{ gruposEncontrados.itens.size }} grupos)\n\t\t<div class=\"campoSemForm\">\n\t\t\t<ui-select [value]=\"colAgrupadoAtual()?.prop\" [options]=\"this.colunasKVDefinidas()\"\n\t\t\t\t(changed)=\"onChangedAgrupamento($event)\"></ui-select>\n\t\t</div>\n\n\t</div>\n\t<div class=\"f-1\"></div>\n\t<ui-button tipo=\"nofill\" tema=\"primary\" (click)=\"onRecolherGroups()\" iconeNome=\"arrows-collapse\"\n\t\ttitle=\"Recolher Todos\"></ui-button>\n\t<ui-button tipo=\"nofill\" tema=\"primary\" (click)=\"onExpandirGroups()\" iconeNome=\"arrows-expand\"\n\t\ttitle=\"Expandir Todos\"></ui-button>\n\t<ui-button tipo=\"outlined\" tema=\"primary\" (click)=\"onClearGroups()\" iconeNome=\"object-ungroup\"\n\t\ttitle=\"Desagrupar\"></ui-button>\n</div>\n}\n}\n\n\n@if(devMode){\n<!-- MODO DESENVOLVIMENTO -->\n<div class=\"table-info-row table-styles\">\n\t<ui-icon name=\"microscope\"></ui-icon>\n\t<div>Funções extras</div>\n\t<div class=\"f-1\"></div>\n\t<ui-button tipo=\"icon\" tema=\"primary\" [ativo]=\"hasGrid()\" (click)=\"onChangeHasGrid()\" iconeNome=\"grid-3x3\"\n\t\ttitle=\"Grid\"></ui-button>\n\t<ui-button tipo=\"icon\" tema=\"primary\" [ativo]=\"isCompacted()\" (click)=\"onChangeCompacted()\"\n\t\ticoneNome=\"arrows-to-circle\" title=\"Compactar\"></ui-button>\n\t<ui-button tipo=\"icon\" tema=\"primary\" [ativo]=\"hasVerticalLine()\" (click)=\"onChangeLineNumber()\"\n\t\ticoneNome=\"layout-sidebar\" title=\"Linha Vertical\"></ui-button>\n\t<ui-button tipo=\"icon\" tema=\"primary\" [ativo]=\"hasSeletor()\" (click)=\"onChangeSeletor()\" iconeNome=\"check-double\"\n\t\ttitle=\"Seletor\"></ui-button>\n</div>\n}","import { Component, effect, Inject, Optional, signal, WritableSignal } from '@angular/core';\nimport { GRID_PARAMS_TOKEN, IGridParam, IMkCellService } from '../mk-grid.types';\n\n@Component({\n selector: 'lib-grid-cell',\n template: '',\n})\nexport class GridCell {\n\n protected params: WritableSignal<IGridParam<any> | undefined>;\n _masterCellService?: IMkCellService;\n\n constructor(\n @Optional() @Inject(GRID_PARAMS_TOKEN) inputToken: IGridParam<any> | null,\n @Optional() @Inject('GRID_PARAMS') legacyInput: IGridParam<any> | null\n ) {\n const input = inputToken ?? legacyInput ?? undefined;\n this.params = signal<IGridParam<any> | undefined>(input);\n this._masterCellService = input?.servicoParams;\n if (this._masterCellService) {\n effect(() => { this.params.set(this._masterCellService?.gridParams() ?? input) });\n }\n }\n}\n","// Exportar primeiro os tipos\nexport type {\n\tIKV, IKV_ext, IFileMetadata, ITipoBotao, ITiposTema,\n\tIDropZoneEvent, IDropType, IDropOutput, IUiProgressMode,\n\tIBreadcrumbItem, IStepperStep, ITreeNode, ITimelineItem,\n\tIToastConfig, IToastTipo, IModalConfig, IModalAcao, IModalTamanho,\n} from './interfaces/interfaces';\n\n// Tipos mais específicos, enuns, interfaces e funções uteis.\nexport * from './util/util';\nexport * from './fields/Formulario/Formulario';\n\n// Exportar as base\nexport * from './fields/Base/BaseFieldsValues/BaseFieldsValues';\nexport * from './fields/Base/BaseFieldsForm/BaseFieldsForm.component';\n\n// Exportar componentes individuais (elementos)\nexport * from './elements/ui-button/ui-button';\nexport * from './elements/ui-chip/ui-chip';\nexport * from './elements/ui-drop-zone/ui-drop-zone';\nexport * from './elements/ui-file-list/ui-file-list';\nexport * from './elements/ui-micro-gallery/ui-file-preview/ui-file-preview';\nexport * from './elements/ui-micro-gallery/ui-micro-gallery';\nexport * from './elements/ui-arquivos/ui-arquivos';\nexport * from './elements/ui-select/ui-select';\nexport * from './elements/ui-procurar/ui-procurar';\nexport * from './elements/ui-progress/ui-progress';\nexport * from './elements/ui-slide/ui-slide';\nexport * from './elements/ui-check-box/ui-check-box';\nexport * from './elements/ui-list-errors/ui-list-errors';\nexport * from './elements/ui-loading/ui-loading';\nexport * from './elements/ui-menu/ui-menu';\nexport * from './elements/ui-divider/ui-divider';\nexport * from './elements/ui-badge/ui-badge';\nexport * from './elements/ui-card/ui-card';\nexport * from './elements/ui-avatar/ui-avatar';\nexport * from './elements/ui-tag/ui-tag';\nexport * from './elements/ui-empty-state/ui-empty-state';\nexport * from './elements/ui-tabs/ui-tabs';\nexport * from './elements/ui-accordion/ui-accordion';\nexport * from './elements/ui-accordion/ui-accordion-item/ui-accordion-item';\nexport * from './elements/ui-breadcrumb/ui-breadcrumb';\nexport * from './elements/ui-stepper/ui-stepper';\nexport * from './elements/ui-pagination/ui-pagination';\nexport * from './elements/ui-tooltip/ui-tooltip';\nexport * from './elements/ui-toast/ui-toast.service';\nexport * from './elements/ui-toast/ui-toast-container';\nexport * from './elements/ui-modal/ui-modal.service';\nexport * from './elements/ui-modal/ui-modal-outlet';\nexport * from './elements/ui-drawer/ui-drawer';\nexport * from './elements/ui-rating/ui-rating';\nexport * from './elements/ui-tree/ui-tree';\nexport * from './elements/ui-timeline/ui-timeline';\n\n\n\n// Os componente de campo não são exportados. Utilize FormAction, ou similar, com os campos pré configurados.\n\n// Exportar componentes de formulário\nexport * from './fields/Formulario/form-filter/form-filter';\nexport * from './fields/Formulario/form-action/form-action';\nexport * from './fields/Formulario/form-no-action/form-no-action';\nexport * from './fields/Formulario/formated-values/formated-values';\nexport * from './fields/Formulario/single-values/single-values';\n\n// Exportar generic por último (depende de todos os outros)\nexport * from './fields/generic/generic';\n\n\n// GRID (exportar por último por depender de outros componentes)\nexport * from './mk-grid/mk-grid.types';\nexport * from './mk-grid/mk-grid';\nexport * from './mk-grid/grid-cell/grid-cell'; // Permite extender classe com signal de params","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["PROP_CONTROLE_ATIVO"],"mappings":"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"}