monkey-style-guide 21.2.34 → 21.2.35
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":"monkey-style-guide.mjs","sources":["../../../projects/monkey-style-guide/src/utils/id-generator.ts","../../../projects/monkey-style-guide/src/utils/utils.ts","../../../projects/monkey-style-guide/src/utils/icon.ts","../../../projects/monkey-style-guide/src/utils/signal-helpers.ts","../../../projects/monkey-style-guide/src/lib/components/accordion/accordion.component.ts","../../../projects/monkey-style-guide/src/lib/components/accordion/accordion.component.html","../../../projects/monkey-style-guide/src/lib/components/accordion/index.ts","../../../projects/monkey-style-guide/src/lib/components/action-bar/action-bar.component.ts","../../../projects/monkey-style-guide/src/lib/components/action-bar/index.ts","../../../projects/monkey-style-guide/src/lib/components/alert/alert.component.ts","../../../projects/monkey-style-guide/src/lib/components/alert/alert.component.html","../../../projects/monkey-style-guide/src/lib/components/alert/index.ts","../../../projects/monkey-style-guide/src/lib/tokens/index.ts","../../../projects/monkey-style-guide/src/lib/directives/popover.ts","../../../projects/monkey-style-guide/src/lib/services/address.service.ts","../../../projects/monkey-style-guide/src/lib/services/dictionary.service.ts","../../../projects/monkey-style-guide/src/lib/services/toast-overlay.ts","../../../projects/monkey-style-guide/src/lib/components/tooltip/tooltip/tooltip.component.ts","../../../projects/monkey-style-guide/src/lib/components/tooltip/tooltip/tooltip.component.html","../../../projects/monkey-style-guide/src/lib/components/tooltip/tooltip/index.ts","../../../projects/monkey-style-guide/src/lib/components/tooltip/tooltip.directive.ts","../../../projects/monkey-style-guide/src/lib/components/tooltip/index.ts","../../../projects/monkey-style-guide/src/lib/components/download-toast/download-toast.component.ts","../../../projects/monkey-style-guide/src/lib/components/download-toast/download-toast.component.html","../../../projects/monkey-style-guide/src/lib/components/download-toast/download-toast.constants.ts","../../../projects/monkey-style-guide/src/lib/components/download-toast/download-toast-stack.component.ts","../../../projects/monkey-style-guide/src/lib/components/download-toast/download-toast-stack.component.html","../../../projects/monkey-style-guide/src/lib/services/download-toast.service.ts","../../../projects/monkey-style-guide/src/lib/services/stepper.service.ts","../../../projects/monkey-style-guide/src/lib/components/button/button.component.ts","../../../projects/monkey-style-guide/src/lib/components/button/button.component.html","../../../projects/monkey-style-guide/src/lib/components/button/index.ts","../../../projects/monkey-style-guide/src/lib/components/toast/toast.component.ts","../../../projects/monkey-style-guide/src/lib/components/toast/toast.component.html","../../../projects/monkey-style-guide/src/lib/services/toast.service.ts","../../../projects/monkey-style-guide/src/lib/services/index.ts","../../../projects/monkey-style-guide/src/lib/components/form-field/form-field-control.ts","../../../projects/monkey-style-guide/src/lib/directives/display.ts","../../../projects/monkey-style-guide/src/lib/directives/error.ts","../../../projects/monkey-style-guide/src/lib/directives/helper.ts","../../../projects/monkey-style-guide/src/lib/directives/info.ts","../../../projects/monkey-style-guide/src/lib/directives/label.ts","../../../projects/monkey-style-guide/src/lib/directives/prefix.ts","../../../projects/monkey-style-guide/src/lib/directives/suffix.ts","../../../projects/monkey-style-guide/src/lib/components/form-field/utils.ts","../../../projects/monkey-style-guide/src/lib/components/form-field/form-field.component.ts","../../../projects/monkey-style-guide/src/lib/components/form-field/form-field.component.html","../../../projects/monkey-style-guide/src/lib/components/form-field/form-field.module.ts","../../../projects/monkey-style-guide/src/lib/components/form-field/index.ts","../../../projects/monkey-style-guide/src/lib/components/option/option.component.ts","../../../projects/monkey-style-guide/src/lib/components/option/index.ts","../../../projects/monkey-style-guide/src/lib/components/autocomplete/autocomplete.component.ts","../../../projects/monkey-style-guide/src/lib/components/autocomplete/index.ts","../../../projects/monkey-style-guide/src/lib/components/autocomplete-address/autocomplete-address.component.ts","../../../projects/monkey-style-guide/src/lib/components/autocomplete-address/index.ts","../../../projects/monkey-style-guide/src/lib/components/avatar/avatar.component.ts","../../../projects/monkey-style-guide/src/lib/components/avatar/avatar.component.html","../../../projects/monkey-style-guide/src/lib/components/avatar/index.ts","../../../projects/monkey-style-guide/src/lib/components/badge/badge.component.ts","../../../projects/monkey-style-guide/src/lib/components/badge/badge.component.html","../../../projects/monkey-style-guide/src/lib/components/badge/index.ts","../../../projects/monkey-style-guide/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../projects/monkey-style-guide/src/lib/components/breadcrumb/breadcrumb.component.html","../../../projects/monkey-style-guide/src/lib/components/breadcrumb/index.ts","../../../projects/monkey-style-guide/src/lib/components/checkbox/checkbox.component.ts","../../../projects/monkey-style-guide/src/lib/components/checkbox/checkbox.component.html","../../../projects/monkey-style-guide/src/lib/components/checkbox/index.ts","../../../projects/monkey-style-guide/src/lib/components/input/input-currency.directive.ts","../../../projects/monkey-style-guide/src/lib/components/input/validators.ts","../../../projects/monkey-style-guide/src/lib/components/input/input.directive.ts","../../../projects/monkey-style-guide/src/lib/components/input/input.module.ts","../../../projects/monkey-style-guide/src/lib/components/input/index.ts","../../../projects/monkey-style-guide/src/lib/components/icon-button/icon-button.component.ts","../../../projects/monkey-style-guide/src/lib/components/icon-button/icon-button.component.html","../../../projects/monkey-style-guide/src/lib/components/icon-button/index.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/utils.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/month/month.component.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/month/month.component.html","../../../projects/monkey-style-guide/src/lib/components/date-range/month/index.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/quick-actions/quick-actions.component.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/quick-actions/quick-actions.component.html","../../../projects/monkey-style-guide/src/lib/components/date-range/quick-actions/index.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/date-range.component.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/date-range.component.html","../../../projects/monkey-style-guide/src/lib/components/date-range/index.ts","../../../projects/monkey-style-guide/src/lib/components/divider/divider.component.ts","../../../projects/monkey-style-guide/src/lib/components/divider/index.ts","../../../projects/monkey-style-guide/src/lib/components/download-button/download-button.component.ts","../../../projects/monkey-style-guide/src/lib/components/download-button/index.ts","../../../projects/monkey-style-guide/src/lib/components/download-toast/index.ts","../../../projects/monkey-style-guide/src/lib/components/complex-filter-bar/complex-filter-bar.service.ts","../../../projects/monkey-style-guide/src/lib/components/complex-filter-bar/complex-filter-bar.component.ts","../../../projects/monkey-style-guide/src/lib/components/complex-filter-bar/filter-config.interface.ts","../../../projects/monkey-style-guide/src/lib/components/complex-filter-bar/index.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-bar-domain.ts","../../../projects/monkey-style-guide/src/lib/components/scrollbar/scrollbar.component.ts","../../../projects/monkey-style-guide/src/lib/components/scrollbar/scrollbar.component.html","../../../projects/monkey-style-guide/src/lib/components/scrollbar/index.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-chip.component.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-chip.component.html","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-menu-item.component.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-menu-item.component.html","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-menu.component.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-menu.component.html","../../../projects/monkey-style-guide/src/lib/components/filter-bar/anchored-menu.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-segment.component.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-segment.component.html","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-trigger.component.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-trigger.component.html","../../../projects/monkey-style-guide/src/lib/components/filter-bar/first-paint.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/flip.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-bar.component.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-bar.component.html","../../../projects/monkey-style-guide/src/lib/components/filter-bar/index.ts","../../../projects/monkey-style-guide/src/lib/components/input-code/input-code.component.ts","../../../projects/monkey-style-guide/src/lib/components/input-code/input-code.component.html","../../../projects/monkey-style-guide/src/lib/components/input-code/index.ts","../../../projects/monkey-style-guide/src/lib/components/input-date-range/input-date-range.component.ts","../../../projects/monkey-style-guide/src/lib/components/input-date-range/index.ts","../../../projects/monkey-style-guide/src/lib/components/select/select.component.ts","../../../projects/monkey-style-guide/src/lib/components/select/select.component.html","../../../projects/monkey-style-guide/src/lib/components/select/index.ts","../../../projects/monkey-style-guide/src/lib/components/input-phone/input-phone.component.ts","../../../projects/monkey-style-guide/src/lib/components/input-phone/index.ts","../../../projects/monkey-style-guide/src/lib/components/input-upload/input-upload.component.ts","../../../projects/monkey-style-guide/src/lib/components/input-upload/index.ts","../../../projects/monkey-style-guide/src/lib/components/modal/directives/actions.ts","../../../projects/monkey-style-guide/src/lib/components/modal/directives/content.ts","../../../projects/monkey-style-guide/src/lib/components/modal/directives/subtitle.ts","../../../projects/monkey-style-guide/src/lib/components/modal/directives/title.ts","../../../projects/monkey-style-guide/src/lib/components/modal/modal-config.ts","../../../projects/monkey-style-guide/src/lib/components/modal/modal-ref.ts","../../../projects/monkey-style-guide/src/lib/components/modal/modal.component.ts","../../../projects/monkey-style-guide/src/lib/components/modal/utils.ts","../../../projects/monkey-style-guide/src/lib/components/modal/components/confirmation.component.ts","../../../projects/monkey-style-guide/src/lib/components/modal/components/default.ts","../../../projects/monkey-style-guide/src/lib/components/modal/modal.module.ts","../../../projects/monkey-style-guide/src/lib/components/modal/modal.service.ts","../../../projects/monkey-style-guide/src/lib/components/modal/index.ts","../../../projects/monkey-style-guide/src/lib/components/pass-number/pass-number.component.ts","../../../projects/monkey-style-guide/src/lib/components/pass-number/pass-secret-number.component.ts","../../../projects/monkey-style-guide/src/lib/components/pass-number/index.ts","../../../projects/monkey-style-guide/src/lib/components/radio-button/radio-button.component.ts","../../../projects/monkey-style-guide/src/lib/components/radio-button/radio-button.component.html","../../../projects/monkey-style-guide/src/lib/components/radio-button/index.ts","../../../projects/monkey-style-guide/src/lib/components/security-level/security-level.component.ts","../../../projects/monkey-style-guide/src/lib/components/security-level/security-level.component.html","../../../projects/monkey-style-guide/src/lib/components/security-level/index.ts","../../../projects/monkey-style-guide/src/lib/components/status/status.component.ts","../../../projects/monkey-style-guide/src/lib/components/status/status.component.html","../../../projects/monkey-style-guide/src/lib/components/status/index.ts","../../../projects/monkey-style-guide/src/lib/components/stepper/step/step.component.ts","../../../projects/monkey-style-guide/src/lib/components/stepper/stepper.component.ts","../../../projects/monkey-style-guide/src/lib/components/stepper/stepper.module.ts","../../../projects/monkey-style-guide/src/lib/components/table/components/pagination-action/pagination-action.ts","../../../projects/monkey-style-guide/src/lib/components/table/components/pagination-action/pagination-action.html","../../../projects/monkey-style-guide/src/lib/components/table/components/pagination-label/pagination-label.ts","../../../projects/monkey-style-guide/src/lib/components/table/components/pagination-label/pagination-label.html","../../../projects/monkey-style-guide/src/lib/components/table/components/pagination-size/pagination-size.ts","../../../projects/monkey-style-guide/src/lib/components/table/components/pagination-size/pagination-size.html","../../../projects/monkey-style-guide/src/lib/components/table/table-column.directive.ts","../../../projects/monkey-style-guide/src/lib/components/table/table-core.ts","../../../projects/monkey-style-guide/src/lib/components/table/table-virtual-scroll.ts","../../../projects/monkey-style-guide/src/lib/components/table/table.component.ts","../../../projects/monkey-style-guide/src/lib/components/table/table.component.html","../../../projects/monkey-style-guide/src/lib/components/table/index.ts","../../../projects/monkey-style-guide/src/lib/components/tabs/tab-link.directive.ts","../../../projects/monkey-style-guide/src/lib/components/tabs/tab.component.ts","../../../projects/monkey-style-guide/src/lib/components/tabs/tabs.component.ts","../../../projects/monkey-style-guide/src/lib/components/tabs/tabs.module.ts","../../../projects/monkey-style-guide/src/lib/components/toast/index.ts","../../../projects/monkey-style-guide/src/lib/components/toggle/toggle.component.ts","../../../projects/monkey-style-guide/src/lib/components/toggle/toggle.component.html","../../../projects/monkey-style-guide/src/lib/components/toggle/index.ts","../../../projects/monkey-style-guide/src/lib/components/toggle-line/toggle-line-button/toggle-line-button.component.ts","../../../projects/monkey-style-guide/src/lib/components/toggle-line/toggle-line-button/toggle-line-button.component.html","../../../projects/monkey-style-guide/src/lib/components/toggle-line/toggle-line-button/index.ts","../../../projects/monkey-style-guide/src/lib/components/toggle-line/toggle-line.component.ts","../../../projects/monkey-style-guide/src/lib/components/toggle-line/toggle-line.component.html","../../../projects/monkey-style-guide/src/lib/components/toggle-line/index.ts","../../../projects/monkey-style-guide/src/lib/components/user-profile/user-profile.component.ts","../../../projects/monkey-style-guide/src/lib/components/user-profile/index.ts","../../../projects/monkey-style-guide/src/lib/components/user-profile-button/user-profile-button.component.ts","../../../projects/monkey-style-guide/src/lib/components/user-profile-button/index.ts","../../../projects/monkey-style-guide/src/lib/components/index.ts","../../../projects/monkey-style-guide/src/lib/directives/badge.ts","../../../projects/monkey-style-guide/src/lib/directives/form.ts","../../../projects/monkey-style-guide/src/lib/interfaces/toast.ts","../../../projects/monkey-style-guide/src/lib/interfaces/index.ts","../../../projects/monkey-style-guide/src/public-api.ts","../../../projects/monkey-style-guide/src/monkey-style-guide.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\nconst counters: Record<string, number> = {};\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class IdGenerator {\r\n getId(prefix: string): string {\r\n if (!Object.prototype.hasOwnProperty.call(counters, prefix)) {\r\n counters[prefix] = 1;\r\n }\r\n\r\n const currentCount = counters[prefix];\r\n counters[prefix] = currentCount + 1;\r\n\r\n return `${prefix}${currentCount}`;\r\n }\r\n}\r\n","export function getRandomString(len: number, charSet?: string): string {\r\n charSet = charSet || 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\r\n\r\n return new Array(len)\r\n .fill('1')\r\n .map(() => {\r\n return charSet?.charAt(Math.floor(Math.random() * charSet.length));\r\n })\r\n .join('');\r\n}\r\n\r\nexport const objHaveProperty = (obj: object, property: string): boolean => {\r\n return typeof obj === 'object' && obj !== null && property in obj;\r\n};\r\n\r\nexport function formatFileSize(bytes: number): string {\r\n if (bytes === 0) return '0 Bytes';\r\n\r\n const k = 1024;\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n\r\n return `${parseFloat((bytes / k ** i).toFixed(2))} ${sizes[i]}`;\r\n}\r\n\r\nexport function getFileExtension(filename: string) {\r\n const name = filename.toLowerCase();\r\n const lastDotIndex = name.lastIndexOf('.');\r\n return lastDotIndex === -1 ? '' : name.slice(lastDotIndex + 1);\r\n}\r\n\r\nexport function sanitizeString(input: string): string {\r\n return input\r\n .replace(/<script.*?>.*?<\\/script>/gi, '')\r\n .replace(/on\\w+=\"[^\"]*\"/gi, '')\r\n .replace(/on\\w+='[^']*'/gi, '')\r\n .replace(/javascript:/gi, '')\r\n .replace(/<\\/?[^>]+>/gi, '')\r\n .trim();\r\n}\r\n\r\nexport function normalizeStringToSearch(text: string): string {\r\n return text\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '')\r\n .toLowerCase();\r\n}\r\n\r\nexport function shuffle<T>(array: T[]): T[] {\r\n for (let i = array.length - 1; i > 0; i--) {\r\n const j = Math.floor(Math.random() * (i + 1));\r\n [array[i], array[j]] = [array[j], array[i]];\r\n }\r\n return array;\r\n}\r\n\r\nexport function clamp(value: number, min: number, max: number): number {\r\n return Math.min(Math.max(value, min), max);\r\n}\r\n\r\nexport function clampProgress(value: unknown): number {\r\n const numeric = Number(value);\r\n\r\n if (Number.isNaN(numeric)) {\r\n return 0;\r\n }\r\n\r\n return clamp(numeric, 0, 100);\r\n}\r\n","/* eslint-disable max-len */\r\nimport { Component, input } from '@angular/core';\r\n\r\ntype IconName =\r\n | 'clear'\r\n | 'calendar'\r\n | 'arrowDown'\r\n | 'arrowRight'\r\n | 'check'\r\n | 'minus'\r\n | 'loading'\r\n | 'searchFail'\r\n | 'search'\r\n | 'addPlus'\r\n | 'googleMaps'\r\n | 'location'\r\n | 'edit';\r\n\r\n@Component({\r\n selector: 'util-icon',\r\n template: `\r\n @switch (name()) {\r\n @case ('clear') {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\">\r\n <path\r\n d=\"M7.815 7.277a.802.802 0 0 0-.459.349c-.103.167-.123.529-.038.694.028.055.854.906 1.836 1.89L10.939 12l-1.785 1.79c-.982.985-1.808 1.835-1.836 1.89a.926.926 0 0 0-.051.324c0 .494.414.812.922.707.183-.038.266-.114 2.001-1.844L12 13.062l1.81 1.805c1.731 1.725 1.818 1.806 2 1.844.58.12 1.021-.321.901-.901-.038-.182-.119-.269-1.844-2L13.062 12l1.805-1.81c1.73-1.735 1.806-1.818 1.844-2.001.105-.508-.213-.922-.707-.922a.926.926 0 0 0-.324.051c-.055.028-.905.854-1.89 1.836L12 10.939l-1.79-1.785c-.984-.982-1.826-1.803-1.87-1.825a.99.99 0 0 0-.525-.052\"\r\n fill-rule=\"evenodd\"\r\n fill=\"var(--mecx-color-gray-900)\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('calendar') {\r\n <svg width=\"24\" height=\"24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M7.815 1.277a.8.8 0 0 0-.462.354c-.087.139-.094.198-.107.875l-.013.725-1.347.019c-1.236.018-1.371.026-1.646.107A2.807 2.807 0 0 0 2.352 5.26l-.092.32v13.84l.092.32a2.797 2.797 0 0 0 1.908 1.908l.32.092h14.84l.32-.092a2.797 2.797 0 0 0 1.908-1.908l.092-.32V5.58l-.092-.32a2.807 2.807 0 0 0-1.888-1.903c-.276-.081-.41-.089-1.65-.107l-1.35-.019v-.593c0-.757-.042-.96-.238-1.156-.349-.349-.903-.279-1.169.149-.087.139-.094.198-.107.879l-.014.73H8.76l-.001-.61c-.001-.68-.039-.91-.179-1.094-.159-.209-.502-.325-.765-.259M7.246 5.49c.013.681.02.74.107.879.357.574 1.223.443 1.363-.207.024-.113.044-.475.044-.804V4.76h6.472l.014.73c.013.681.02.74.107.879.357.574 1.223.443 1.363-.207.024-.113.044-.475.044-.804V4.76h1.238c1.452 0 1.525.014 1.876.366.352.351.366.424.366 1.876V8.24H3.756l.012-1.31c.012-1.277.014-1.314.104-1.482.155-.29.475-.562.768-.651.055-.016.661-.032 1.346-.034l1.246-.003.014.73m12.994 9.008c0 4.664-.001 4.742-.081 4.956-.109.29-.415.596-.705.705-.215.08-.28.081-7.454.081-7.159 0-7.239-.001-7.453-.081-.245-.091-.544-.363-.679-.615l-.088-.164-.011-4.81-.01-4.81H20.24v4.738M6.7 12.028a.967.967 0 0 0-.24.126.992.992 0 0 0 .097 1.695 1.005 1.005 0 0 0 1.352-.427c.096-.185.114-.59.035-.797a1.104 1.104 0 0 0-.521-.549c-.154-.07-.507-.094-.723-.048m5 0a.967.967 0 0 0-.24.126.992.992 0 0 0 .097 1.695 1.005 1.005 0 0 0 1.352-.427c.096-.185.114-.59.035-.797a1.104 1.104 0 0 0-.521-.549c-.154-.07-.507-.094-.723-.048m5 0a.967.967 0 0 0-.24.126.992.992 0 0 0 .097 1.695 1.005 1.005 0 0 0 1.352-.427c.096-.185.114-.59.035-.797a1.104 1.104 0 0 0-.521-.549c-.154-.07-.507-.094-.723-.048m-10 4a.967.967 0 0 0-.24.126.992.992 0 0 0 .097 1.695 1.005 1.005 0 0 0 1.352-.427c.096-.185.114-.59.035-.797a1.104 1.104 0 0 0-.521-.549c-.154-.07-.507-.094-.723-.048m5 0a.967.967 0 0 0-.24.126.992.992 0 0 0 .097 1.695 1.005 1.005 0 0 0 1.352-.427c.096-.185.114-.59.035-.797a1.104 1.104 0 0 0-.521-.549c-.154-.07-.507-.094-.723-.048\"\r\n fill-rule=\"evenodd\"\r\n fill=\"var(--mecx-color-gray-900)\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('arrowDown') {\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M8 10L12 14L16 10\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('arrowRight') {\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M19 12H5\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M14 17L19 12\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M14 7L19 12\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('check') {\r\n <svg\r\n width=\"12\"\r\n height=\"12\"\r\n viewBox=\"0 0 12 12\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M9.808 2.528 C 9.752 2.542,9.671 2.574,9.628 2.599 C 9.585 2.625,8.414 3.781,7.025 5.168 L 4.500 7.690 3.475 6.667 C 2.865 6.059,2.414 5.624,2.360 5.594 C 2.137 5.467,1.822 5.478,1.603 5.620 C 1.226 5.863,1.141 6.369,1.419 6.715 C 1.558 6.887,4.068 9.375,4.140 9.411 C 4.366 9.525,4.634 9.525,4.860 9.411 C 4.931 9.376,10.438 3.892,10.581 3.715 C 10.688 3.582,10.742 3.425,10.742 3.250 C 10.742 2.758,10.293 2.410,9.808 2.528 \"\r\n stroke=\"none\"\r\n fill-rule=\"evenodd\"\r\n fill=\"var(--mecx-color-theme-contrast-500\"\r\n ></path>\r\n </svg>\r\n }\r\n\r\n @case ('minus') {\r\n <svg width=\"8\" height=\"2\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M1.333 0.268 C 1.300 0.274,1.225 0.303,1.167 0.332 C 1.054 0.388,0.939 0.490,0.866 0.599 C 0.776 0.732,0.732 0.936,0.757 1.098 C 0.786 1.283,0.848 1.405,0.977 1.532 C 1.071 1.624,1.148 1.673,1.253 1.710 L 1.340 1.740 4.000 1.740 L 6.660 1.740 6.747 1.710 C 6.943 1.642,7.128 1.462,7.200 1.270 C 7.265 1.095,7.265 0.904,7.200 0.730 C 7.118 0.510,6.880 0.308,6.655 0.267 C 6.565 0.250,1.420 0.251,1.333 0.268\"\r\n stroke=\"none\"\r\n fill-rule=\"evenodd\"\r\n fill=\"var(--mecx-color-theme-contrast-500\"\r\n ></path>\r\n </svg>\r\n }\r\n\r\n @case ('loading') {\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <style>\r\n .spinner_ajPY {\r\n transform-origin: center;\r\n animation: spinner_AtaB 0.75s infinite linear;\r\n }\r\n @keyframes spinner_AtaB {\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n </style>\r\n <path\r\n d=\"M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z\"\r\n opacity=\".25\"\r\n />\r\n <path\r\n d=\"M10.14,1.16a11,11,0,0,0-9,8.92A1.59,1.59,0,0,0,2.46,12,1.52,1.52,0,0,0,4.11,10.7a8,8,0,0,1,6.66-6.61A1.42,1.42,0,0,0,12,2.69h0A1.57,1.57,0,0,0,10.14,1.16Z\"\r\n class=\"spinner_ajPY\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('searchFail') {\r\n <svg width=\"24\" height=\"24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n clip-rule=\"evenodd\"\r\n d=\"M18.934 11.467v0c0 4.124-3.343 7.467-7.467 7.467v0C7.343 18.934 4 15.591 4 11.467v0C4 7.343 7.343 4 11.467 4v0c4.124 0 7.467 3.343 7.467 7.467Z\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"m20 20-3.25-3.25M13.815 9.11914 9.119 13.8151M13.815 13.8151 9.119 9.11914\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('search') {\r\n <svg\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 16 16\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M6.920 1.521 C 4.175 1.717,1.944 3.809,1.558 6.548 C 1.500 6.965,1.500 7.722,1.558 8.120 C 1.945 10.745,3.921 12.721,6.547 13.108 C 6.735 13.136,7.016 13.152,7.333 13.152 C 7.885 13.152,8.225 13.111,8.738 12.985 C 9.504 12.797,10.253 12.439,10.859 11.972 C 10.972 11.885,11.074 11.813,11.085 11.813 C 11.097 11.813,11.677 12.384,12.373 13.082 C 13.070 13.779,13.691 14.381,13.754 14.418 C 14.182 14.673,14.673 14.182,14.418 13.754 C 14.381 13.691,13.779 13.070,13.082 12.373 C 12.384 11.677,11.813 11.097,11.813 11.085 C 11.813 11.074,11.885 10.972,11.972 10.859 C 12.439 10.253,12.797 9.504,12.985 8.738 C 13.111 8.225,13.152 7.885,13.152 7.333 C 13.152 6.782,13.111 6.441,12.985 5.928 C 12.471 3.841,10.826 2.196,8.738 1.681 C 8.150 1.536,7.501 1.479,6.920 1.521 M8.277 2.586 C 10.023 2.962,11.414 4.208,11.943 5.870 C 12.118 6.421,12.145 6.615,12.145 7.333 C 12.145 8.052,12.118 8.246,11.943 8.797 C 11.473 10.272,10.272 11.473,8.797 11.943 C 8.246 12.118,8.052 12.145,7.333 12.145 C 6.615 12.145,6.421 12.118,5.870 11.943 C 4.394 11.473,3.193 10.272,2.724 8.797 C 2.547 8.242,2.521 8.052,2.522 7.333 C 2.522 6.615,2.549 6.419,2.724 5.870 C 3.244 4.236,4.636 2.971,6.320 2.602 C 6.679 2.523,6.858 2.510,7.440 2.520 C 7.898 2.527,8.066 2.540,8.277 2.586 \"\r\n stroke=\"none\"\r\n fill-rule=\"evenodd\"\r\n fill=\"var(--mecx-color-gray-900)\"\r\n ></path>\r\n </svg>\r\n }\r\n\r\n @case ('addPlus') {\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M11.340 2.281 C 7.073 2.553,3.439 5.660,2.499 9.840 C 2.187 11.227,2.187 12.773,2.499 14.160 C 3.317 17.797,6.203 20.683,9.840 21.501 C 11.233 21.814,12.770 21.813,14.176 21.498 C 17.465 20.759,20.161 18.310,21.244 15.076 C 21.795 13.432,21.887 11.556,21.501 9.840 C 20.683 6.203,17.797 3.317,14.160 2.499 C 13.288 2.303,12.254 2.223,11.340 2.281 M12.961 3.802 C 14.493 3.991,16.079 4.659,17.184 5.581 C 18.160 6.395,18.877 7.297,19.404 8.374 C 19.982 9.557,20.240 10.675,20.240 12.000 C 20.240 12.966,20.126 13.689,19.834 14.584 C 18.848 17.602,16.153 19.804,12.961 20.198 C 12.525 20.252,11.475 20.252,11.039 20.198 C 9.507 20.009,7.921 19.341,6.816 18.419 C 5.826 17.593,5.138 16.728,4.598 15.626 C 4.019 14.448,3.760 13.327,3.760 12.000 C 3.760 10.673,4.019 9.552,4.598 8.374 C 5.044 7.464,5.564 6.750,6.285 6.058 C 7.568 4.824,9.221 4.032,10.984 3.806 C 11.379 3.755,12.563 3.753,12.961 3.802 M11.815 7.277 C 11.638 7.321,11.461 7.456,11.353 7.631 L 11.260 7.780 11.248 9.508 L 11.236 11.236 9.505 11.248 L 7.774 11.260 7.612 11.367 C 7.372 11.526,7.267 11.721,7.267 12.007 C 7.267 12.203,7.286 12.270,7.383 12.408 C 7.447 12.499,7.572 12.610,7.660 12.656 C 7.814 12.737,7.886 12.740,9.528 12.752 L 11.236 12.764 11.248 14.492 L 11.260 16.220 11.353 16.369 C 11.710 16.943,12.576 16.812,12.716 16.162 C 12.744 16.031,12.760 15.374,12.760 14.358 L 12.760 12.760 14.358 12.760 C 15.374 12.760,16.031 12.744,16.162 12.716 C 16.904 12.557,16.924 11.471,16.189 11.286 C 16.064 11.255,15.479 11.240,14.382 11.240 L 12.760 11.240 12.759 9.630 C 12.758 8.669,12.741 7.948,12.717 7.841 C 12.623 7.432,12.215 7.177,11.815 7.277 \"\r\n stroke=\"none\"\r\n fill-rule=\"evenodd\"\r\n fill=\"var(--mecx-color-gray-900)\"\r\n ></path>\r\n </svg>\r\n }\r\n\r\n @case ('googleMaps') {\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n width=\"120\"\r\n height=\"22\"\r\n viewBox=\"0 0 264.6 50.86\"\r\n >\r\n <path\r\n d=\"M9.835 37.67a51.38 51.38 0 0 1 4.007 5.91c1.022 1.938 1.448 3.252 2.195 5.587.458 1.29.872 1.675 1.762 1.675.97 0 1.41-.655 1.75-1.668.706-2.205 1.26-3.888 2.134-5.478 1.715-3.07 3.846-5.798 5.94-8.42.567-.742 4.232-5.065 5.882-8.476 0 0 2.028-3.747 2.028-8.98 0-4.895-2-8.29-2-8.29l-5.758 1.542-3.497 9.21-.865 1.27-.173.23-.23.288-.404.46-.577.577-3.114 2.537-7.785 4.495z\"\r\n fill=\"#34a853\"\r\n />\r\n <path\r\n d=\"M1.8 26.17c1.9 4.34 5.564 8.155 8.043 11.503L23.01 22.076s-1.855 2.426-5.22 2.426c-3.748 0-6.776-2.993-6.776-6.767 0-2.588 1.557-4.366 1.557-4.366l-8.938 2.395z\"\r\n fill=\"#fbbc04\"\r\n />\r\n <path\r\n d=\"M23.157.792c4.373 1.41 8.116 4.37 10.38 8.735l-10.523 12.54s1.557-1.81 1.557-4.382c0-3.862-3.252-6.747-6.765-6.747-3.322 0-5.23 2.422-5.23 2.422v-7.9z\"\r\n fill=\"#4285f4\"\r\n />\r\n <path\r\n d=\"M4.212 6.333C6.824 3.208 11.42-.01 17.756-.01c3.074 0 5.39.807 5.39.807l-10.58 12.57H5.07z\"\r\n fill=\"#1a73e8\"\r\n />\r\n <path\r\n d=\"M1.8 26.17S.052 22.747.052 17.788c0-4.687 1.822-8.784 4.16-11.455l8.36 7.035z\"\r\n fill=\"#ea4335\"\r\n />\r\n <g fill=\"#767676\">\r\n <path\r\n d=\"M181.68 41.235V14.508h3.434l9.295 16.275h.15l9.295-16.275h3.434v26.727h-3.434V25.37l.15-4.48h-.15l-8.36 14.67h-2.015l-8.36-14.67h-.15l.15 4.48v15.864zm35.648.56c-1.94 0-3.565-.56-4.87-1.68s-1.96-2.6-1.96-4.442c0-2 .77-3.552 2.314-4.685s3.446-1.698 5.7-1.698c2.016 0 3.67.373 4.965 1.12v-.523c0-1.344-.46-2.42-1.38-3.228s-2.053-1.213-3.398-1.213c-.995 0-1.896.236-2.705.7s-1.362 1.12-1.66 1.94l-3.136-1.343c.423-1.095 1.257-2.1 2.5-3.042s2.886-1.4 4.927-1.4c2.34 0 4.28.685 5.823 2.053s2.314 3.298 2.314 5.787V41.2h-3.284v-2.54h-.15c-1.37 2.1-3.373 3.135-6 3.135zm.56-3.135c1.418 0 2.705-.53 3.863-1.586s1.736-2.3 1.736-3.75c-.97-.797-2.426-1.195-4.367-1.195-1.668 0-2.925.36-3.77 1.083s-1.27 1.568-1.27 2.538c0 .896.386 1.605 1.157 2.128s1.655.784 2.65.784zm21.742 3.135c-1.393 0-2.644-.3-3.75-.896s-1.935-1.344-2.48-2.24h-.15l.15 2.538v8.063h-3.434V22.908h3.286v2.538h.15c.547-.896 1.374-1.642 2.48-2.24s2.358-.896 3.75-.896c2.364 0 4.405.933 6.122 2.8s2.576 4.18 2.576 6.943-.86 5.077-2.576 6.943-3.758 2.8-6.122 2.8zm-.56-3.135c1.593 0 2.96-.604 4.106-1.8s1.717-2.806 1.717-4.797-.572-3.6-1.717-4.797-2.514-1.8-4.106-1.8c-1.617 0-2.993.597-4.125 1.792s-1.697 2.8-1.697 4.815.566 3.62 1.697 4.815 2.507 1.792 4.125 1.792zm18.385 3.135c-2.04 0-3.726-.498-5.058-1.493s-2.3-2.24-2.93-3.733l3.06-1.27c.97 2.3 2.626 3.433 4.966 3.433 1.07 0 1.948-.236 2.632-.7s1.027-1.095 1.027-1.866c0-1.194-.834-2.004-2.502-2.426l-3.695-.895c-1.17-.298-2.277-.865-3.322-1.698s-1.568-1.96-1.568-3.377c0-1.617.715-2.93 2.146-3.94s3.13-1.512 5.095-1.512c1.617 0 3.06.367 4.33 1.1a6.21 6.21 0 0 1 2.725 3.154l-2.987 1.232c-.67-1.617-2.065-2.426-4.18-2.426-1.02 0-1.88.212-2.575.634s-1.045.996-1.045 1.718c0 1.045.8 1.754 2.426 2.128l3.62.858c1.717.398 2.986 1.083 3.807 2.053s1.232 2.066 1.232 3.286c0 1.642-.672 3-2.016 4.106s-3.073 1.642-5.2 1.642zM79.916 25.3H65.83v4.18h10c-.493 5.86-5.37 8.36-9.973 8.36a10.98 10.98 0 0 1-11.029-11.128c0-6.327 4.898-11.2 11.04-11.2 4.74 0 7.53 3.022 7.53 3.022l2.927-3.03s-3.757-4.18-10.607-4.18c-8.723 0-15.473 7.363-15.473 15.316 0 7.792 6.35 15.393 15.696 15.393 8.22 0 14.24-5.632 14.24-13.96 0-1.756-.255-2.772-.255-2.772z\"\r\n />\r\n <use xlink:href=\"#B\" />\r\n <use xlink:href=\"#B\" x=\"21.476\" />\r\n <path\r\n d=\"M134.102 22.327c-5.305 0-9.476 4.647-9.476 9.862 0 5.94 4.834 9.88 9.383 9.88 2.813 0 4.308-1.117 5.414-2.4v1.946c0 3.405-2.068 5.445-5.2 5.445-3.015 0-4.526-2.242-5.052-3.514l-3.793 1.586c1.346 2.845 4.054 5.813 8.878 5.813 5.275 0 9.296-3.322 9.296-10.3v-17.73h-4.138v1.672c-1.272-1.37-3.012-2.265-5.32-2.265zm.384 3.87c2.602 0 5.272 2.22 5.272 6.013 0 3.856-2.665 5.98-5.33 5.98-2.828 0-5.46-2.296-5.46-5.944 0-3.8 2.732-6.05 5.518-6.05zm27.534-3.87c-5.004 0-9.207 3.98-9.207 9.857 0 6.216 4.683 9.904 9.687 9.904 4.176 0 6.74-2.285 8.268-4.332l-3.4-2.27c-.885 1.374-2.366 2.718-4.835 2.718-2.775 0-4.05-1.52-4.84-2.992l13.234-5.5-.687-1.6c-1.28-3.152-4.262-5.784-8.2-5.784zm.172 3.796c1.804 0 3.1.96 3.653 2.108l-8.838 3.694c-.38-2.86 2.328-5.802 5.186-5.802zm-15.7 15.377h4.346V12.4h-4.346z\"\r\n />\r\n </g>\r\n <defs>\r\n <path\r\n id=\"B\"\r\n d=\"M91.48 22.327c-5.78 0-9.922 4.518-9.922 9.788 0 5.348 4.018 9.95 10 9.95 5.407 0 9.836-4.132 9.836-9.836 0-6.537-5.153-9.904-9.904-9.904zm.057 3.877c2.843 0 5.536 2.298 5.536 6 0 3.624-2.683 5.99-5.55 5.99-3.15 0-5.635-2.523-5.635-6.017 0-3.418 2.455-5.972 5.648-5.972z\"\r\n />\r\n </defs>\r\n </svg>\r\n }\r\n\r\n @case ('location') {\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"var(--mecx-color-gray-900)\">\r\n <path\r\n d=\"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7m0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5\"\r\n ></path>\r\n </svg>\r\n }\r\n\r\n @case ('edit') {\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M5.293 15.619L15.619 5.29299C16.009 4.90299 16.642 4.90299 17.032 5.29299L18.708 6.96899C19.098 7.35899 19.098 7.99199 18.708 8.38199L8.381 18.707C8.194 18.895 7.94 19 7.675 19H5V16.325C5 16.06 5.105 15.806 5.293 15.619Z\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M13.75 7.16016L16.84 10.2502\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n }\r\n }\r\n `,\r\n styles: [\r\n `\r\n :host {\r\n display: flex;\r\n background-color: transparent;\r\n }\r\n `\r\n ]\r\n})\r\nexport class UtilIconComponent {\r\n name = input.required<IconName | string>();\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { isSignal, Signal } from '@angular/core';\r\n\r\nexport function unwrapSignal(value: number | Signal<number>): number {\r\n if (isSignal(value)) {\r\n return (value as Signal<number>)();\r\n }\r\n\r\n return value as number;\r\n}\r\n\r\nexport function isProgressSignal(value: unknown): value is Signal<number> {\r\n return isSignal(value);\r\n}","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { CommonModule } from '@angular/common';\r\nimport { booleanAttribute, Component, inject, Input, TemplateRef } from '@angular/core';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\n\r\n@Component({\r\n selector: 'monkey-accordion',\r\n imports: [CommonModule, UtilIconComponent],\r\n templateUrl: './accordion.component.html',\r\n styleUrl: './accordion.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-accordion',\r\n '[class.disabled]': 'disabled',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n },\r\n animations: [\r\n trigger('content', [\r\n state(\r\n 'void',\r\n style({\r\n height: '0px'\r\n })\r\n ),\r\n transition(':enter', [\r\n animate(\r\n '300ms ease-in-out',\r\n style({\r\n height: '*'\r\n })\r\n )\r\n ]),\r\n transition(':leave', [\r\n animate(\r\n '300ms ease-in-out',\r\n style({\r\n height: '0px'\r\n })\r\n )\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class MonkeyAccordionComponent {\r\n @Input({ transform: booleanAttribute }) open = false;\r\n\r\n @Input({ transform: booleanAttribute }) disabled = false;\r\n\r\n @Input() set title(data: string | TemplateRef<any>) {\r\n if (data instanceof TemplateRef) {\r\n this.titleRef = data;\r\n } else {\r\n this.titleStr = data;\r\n }\r\n }\r\n\r\n titleStr: string | undefined;\r\n\r\n titleRef: TemplateRef<any> | undefined;\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-accordion-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n onClick() {\r\n if (this.disabled) return;\r\n this.open = !this.open;\r\n }\r\n}\r\n","<div class=\"header\" (click)=\"onClick()\">\r\n <div class=\"title\">\r\n @if (titleRef) {\r\n <ng-container *ngTemplateOutlet=\"titleRef\" />\r\n } @else {\r\n {{ titleStr }}\r\n }\r\n </div>\r\n <util-icon class=\"icon\" name=\"arrowDown\" [class.rotated]=\"open\" />\r\n</div>\r\n<div class=\"content-wrapper\">\r\n @if (open) {\r\n <div [@content]>\r\n <div class=\"content\">\r\n <ng-content />\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './accordion.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, HostBinding, inject, Input, input, ViewEncapsulation } from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-action-bar',\r\n styleUrl: './action-bar.component.scss',\r\n template: `@if (open()) {\r\n @if (label(); as lb) {\r\n <span style=\"font-size: 13px\" data-testid=\"label\">\r\n {{ lb }}\r\n </span>\r\n }\r\n\r\n <ng-content></ng-content>\r\n }`,\r\n host: {\r\n 'data-testid': 'monkey-action-bar',\r\n '[attr.id]': 'id',\r\n '[id]': 'id',\r\n '[class.open]': 'open()'\r\n }\r\n})\r\nexport class MonkeyActionBarComponent {\r\n @HostBinding('class')\r\n get classes() {\r\n return this.position();\r\n }\r\n\r\n label = input<string>();\r\n\r\n position = input<string>();\r\n\r\n open = input<boolean>();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-action-bar-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './action-bar.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n Component,\r\n inject,\r\n Input,\r\n input,\r\n InputSignal,\r\n output,\r\n OutputEmitterRef,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { type MonkeyAlertType } from '../../interfaces';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-alert',\r\n styleUrl: './alert.component.scss',\r\n templateUrl: './alert.component.html',\r\n host: {\r\n 'data-testid': 'monkey-alert',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyAlertComponent {\r\n buttonLabel: InputSignal<string> = input('');\r\n\r\n message: InputSignal<string> = input.required<string>();\r\n\r\n title: InputSignal<string> = input.required<string>();\r\n\r\n type: InputSignal<MonkeyAlertType> = input.required<MonkeyAlertType>();\r\n\r\n onButtonClicked: OutputEmitterRef<void> = output<void>();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-alert-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n icon(type: MonkeyAlertType): string {\r\n const typeIcons = {\r\n alert: 'warning-outline',\r\n default: 'info',\r\n error: 'error-outline',\r\n info: 'info',\r\n success: 'checkmark-big-circle'\r\n };\r\n\r\n return typeIcons[type];\r\n }\r\n}\r\n","<div [class]=\"'monkey-alert__card ' + type()\">\r\n @if (type()) {\r\n <i class=\"mk-i mk-i-{{icon(type())}} {{'monkey-alert__card__type-' + type()}}\"></i>\r\n }\r\n <div class=\"monkey-alert__card__content\">\r\n <h4 class=\"monkey-alert__card__title\">{{ title() }}</h4>\r\n <h5 class=\"monkey-alert__card__message\">{{ message() }}</h5>\r\n @if (buttonLabel()) {\r\n <div>\r\n <a\r\n href=\"javascript:void(0)\"\r\n class=\"mecx-link fw-medium fs-base\"\r\n (click)=\"onButtonClicked.emit()\"\r\n >\r\n <span>{{ buttonLabel() }}</span>\r\n </a>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './alert.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { inject, InjectionToken } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nexport const MECX_I18N_WRAPPER = new InjectionToken<BehaviorSubject<string>>('');\r\nexport const MECX_POPOVER_OPTIONS = new InjectionToken('MECX_POPOVER_OPTIONS');\r\nexport const MECX_COUNTRY_ISO_CODE = new InjectionToken<string>('BR');\r\nexport const MECX_GOOGLE_API_KEY = new InjectionToken<string>('');\r\nexport const MECX_I18N_LANG = new InjectionToken<BehaviorSubject<string>>('MECX_I18N_LANG');\r\n\r\nexport function injectTokenWithWarning<T>(token: InjectionToken<T>, name?: string): T | null {\r\n const value = inject(token, { optional: true });\r\n if (!value) {\r\n // eslint-disable-next-line no-console\r\n console.error(`MECXInjectors -> Token \"${name || token.toString()}\" is not provided.`);\r\n }\r\n return value;\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n ConnectedPosition,\r\n FlexibleConnectedPositionStrategy,\r\n FlexibleConnectedPositionStrategyOrigin,\r\n Overlay,\r\n OverlayPositionBuilder,\r\n OverlayRef\r\n} from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { CommonModule, NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n booleanAttribute,\r\n Component,\r\n ComponentRef,\r\n DestroyRef,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n Inject,\r\n inject,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n Optional,\r\n Output,\r\n TemplateRef,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NavigationStart, Router } from '@angular/router';\r\nimport { filter } from 'rxjs';\r\nimport { UtilIconComponent } from '../../utils';\r\nimport { MonkeyPopoverDir, MonkeyPopoverItemClick, MonkeyPopoverOptions } from '../interfaces';\r\nimport { MECX_POPOVER_OPTIONS } from '../tokens';\r\n\r\n@Component({\r\n selector: 'monkey-popover-content',\r\n imports: [CommonModule, NgTemplateOutlet, UtilIconComponent],\r\n template: `\r\n <div class=\"mecx-popover-container\">\r\n @if (!hideHeader) {\r\n <div class=\"mecx-popover-header\">\r\n @if (title) {\r\n <div>\r\n @if (isTemplate(title)) {\r\n <ng-container *ngTemplateOutlet=\"title\"></ng-container>\r\n } @else {\r\n {{ title }}\r\n }\r\n </div>\r\n }\r\n\r\n @if (!hideClose) {\r\n <util-icon class=\"mecx-popover-close\" name=\"clear\" (click)=\"onClose.next(null)\" />\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"mecx-popover-content\" [class.add-radius]=\"hideHeader\">\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n </div>\r\n\r\n @if (!hideActions) {\r\n @if (actions) {\r\n <div class=\"mecx-popover-actions\">\r\n @if (isTemplate(actions)) {\r\n <ng-container *ngTemplateOutlet=\"actions\"></ng-container>\r\n } @else {\r\n <span>{{ actions }}</span>\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n `\r\n})\r\nexport class MonkeyPopoverContentComponent implements AfterViewInit {\r\n @Input() title?: string | TemplateRef<any>;\r\n\r\n @Input() content!: TemplateRef<any>;\r\n\r\n @Input() actions?: string | TemplateRef<any>;\r\n\r\n @Output() onClose = new EventEmitter();\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideHeader!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideClose!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideActions!: boolean;\r\n\r\n @Input()\r\n enableAutofocus = false;\r\n\r\n constructor(private host: ElementRef<HTMLElement>) {\r\n // not to do\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.enableAutofocus) {\r\n setTimeout(() => {\r\n const focusable = this.host.nativeElement.querySelector<HTMLElement>(\r\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\r\n );\r\n focusable?.focus();\r\n });\r\n }\r\n }\r\n\r\n isTemplate(value: unknown): value is TemplateRef<any> {\r\n return value instanceof TemplateRef;\r\n }\r\n}\r\n\r\ntype HorizontalPosition = 'start' | 'center' | 'end';\r\ntype VerticalPosition = 'top' | 'center' | 'bottom';\r\n\r\nexport function closeOnClickAttribute(value: unknown): boolean | string {\r\n if (value === '' || value === true || value === 'true') {\r\n return true;\r\n }\r\n\r\n if (value == null || value === false || value === 'false') {\r\n return false;\r\n }\r\n\r\n return String(value);\r\n}\r\n\r\n@Directive({\r\n selector: '[monkeyPopover]',\r\n exportAs: 'monkeyPopover'\r\n})\r\nexport class MonkeyPopoverDirective implements OnDestroy {\r\n private readonly _tpl = inject(TemplateRef);\r\n\r\n private readonly _vcr = inject(ViewContainerRef);\r\n\r\n private readonly _el = inject(ElementRef);\r\n\r\n private readonly _zone = inject(NgZone);\r\n\r\n private readonly _overlay = inject(Overlay);\r\n\r\n private readonly _overlayPositionBuilder = inject(OverlayPositionBuilder);\r\n\r\n private readonly _router = inject(Router);\r\n\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n @Optional() @Inject(MECX_POPOVER_OPTIONS) private readonly _options?: MonkeyPopoverOptions;\r\n\r\n private _overlayRef?: OverlayRef;\r\n\r\n private _componentRef?: ComponentRef<MonkeyPopoverContentComponent>;\r\n\r\n private _positionStrategy?: FlexibleConnectedPositionStrategy;\r\n\r\n private _resizeObserver?: ResizeObserver;\r\n\r\n private _removeContentClick?: () => void;\r\n\r\n private _show = false;\r\n\r\n @Input('monkeyPopover')\r\n set popover(show: boolean) {\r\n if (this._show === show) {\r\n return;\r\n }\r\n this._show = show;\r\n if (show) {\r\n setTimeout(() => {\r\n this.createPopover();\r\n }, 0);\r\n } else {\r\n this.disposePopover();\r\n }\r\n }\r\n\r\n get popover(): boolean {\r\n return this._show;\r\n }\r\n\r\n @Input('monkeyPopoverClosed')\r\n closed?: (e?: MouseEvent) => void;\r\n\r\n private _target?: HTMLElement;\r\n\r\n @Input('monkeyPopoverTarget')\r\n set target(value: any | undefined) {\r\n this._target = value;\r\n }\r\n\r\n get target(): HTMLElement | undefined {\r\n return this._target;\r\n }\r\n\r\n @Input('monkeyPopoverMinwidth')\r\n minwidth = false;\r\n\r\n @Input('monkeyPopoverBackdrop')\r\n backdrop = true;\r\n\r\n @Input('monkeyPopoverWatch')\r\n watch = false;\r\n\r\n @Input('monkeyPopoverDir')\r\n dir: MonkeyPopoverDir = 'ltr';\r\n\r\n @Input('monkeyPopoverContextmenu')\r\n contextmenu = false;\r\n\r\n @Input('monkeyPopoverHeight')\r\n height?: number | string;\r\n\r\n @Input('monkeyPopoverTitle') title?: string | TemplateRef<unknown>;\r\n\r\n @Input('monkeyPopoverActions') actions?: string | TemplateRef<unknown>;\r\n\r\n @Input({ alias: 'monkeyPopoverHideClose', transform: booleanAttribute })\r\n hideClose!: boolean;\r\n\r\n @Input({ alias: 'monkeyPopoverHideHeader', transform: booleanAttribute })\r\n hideHeader!: boolean;\r\n\r\n @Input({ alias: 'monkeyPopoverHideActions', transform: booleanAttribute })\r\n hideActions!: boolean;\r\n\r\n @Input({ alias: 'monkeyPopoverEnableAutofocus', transform: booleanAttribute })\r\n enableAutofocus!: boolean;\r\n\r\n @Input({ alias: 'monkeyPopoverCloseOnClick', transform: closeOnClickAttribute })\r\n closeOnClick: boolean | string = false;\r\n\r\n @Output('monkeyPopoverItemClick')\r\n itemClick = new EventEmitter<MonkeyPopoverItemClick>();\r\n\r\n constructor() {\r\n this._router.events\r\n .pipe(\r\n filter((event): event is NavigationStart => {\r\n return event instanceof NavigationStart;\r\n }),\r\n takeUntilDestroyed(this._destroyRef)\r\n )\r\n .subscribe(() => {\r\n this.closePopover();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.disposePopover();\r\n this._resizeObserver?.disconnect();\r\n }\r\n\r\n close(event?: MouseEvent): void {\r\n this.closePopover(event);\r\n }\r\n\r\n private closePopover(event?: MouseEvent): void {\r\n if (this._show) {\r\n this._show = false;\r\n this.disposePopover();\r\n this._zone.run(() => {\r\n this.closed?.(event);\r\n });\r\n }\r\n }\r\n\r\n private disposePopover(): void {\r\n this._resizeObserver?.disconnect();\r\n this._resizeObserver = undefined;\r\n\r\n this._removeContentClick?.();\r\n this._removeContentClick = undefined;\r\n\r\n if (this._overlayRef) {\r\n this._overlayRef.dispose();\r\n this._overlayRef = undefined;\r\n }\r\n }\r\n\r\n private getPositions(dir: MonkeyPopoverDir): ConnectedPosition[] {\r\n const oppositeVertical: Record<VerticalPosition, VerticalPosition> = {\r\n top: 'bottom',\r\n bottom: 'top',\r\n center: 'center'\r\n };\r\n\r\n const oppositeHorizontal: Record<HorizontalPosition, HorizontalPosition> = {\r\n start: 'end',\r\n end: 'start',\r\n center: 'center'\r\n };\r\n\r\n const centerY = (pos: VerticalPosition): ConnectedPosition => {\r\n return {\r\n originX: 'center',\r\n originY: pos,\r\n overlayX: 'center',\r\n overlayY: oppositeVertical[pos]\r\n };\r\n };\r\n\r\n const centerX = (pos: HorizontalPosition): ConnectedPosition => {\r\n return {\r\n originX: oppositeHorizontal[pos],\r\n originY: 'center',\r\n overlayX: pos,\r\n overlayY: 'center'\r\n };\r\n };\r\n\r\n const ltr = (axis: VerticalPosition): ConnectedPosition => {\r\n return {\r\n originX: 'start',\r\n originY: axis,\r\n overlayX: 'start',\r\n overlayY: oppositeVertical[axis]\r\n };\r\n };\r\n\r\n const rtl = (axis: VerticalPosition): ConnectedPosition => {\r\n return {\r\n originX: 'end',\r\n originY: axis,\r\n overlayX: 'end',\r\n overlayY: oppositeVertical[axis]\r\n };\r\n };\r\n\r\n const side = (axisX: HorizontalPosition, axisY: VerticalPosition): ConnectedPosition => {\r\n return {\r\n originX: axisX,\r\n originY: axisY,\r\n overlayX: oppositeHorizontal[axisX],\r\n overlayY: axisY\r\n };\r\n };\r\n\r\n const cmp = dir ?? this._options?.dir ?? this.dir;\r\n\r\n switch (cmp) {\r\n case 'ct':\r\n return [centerY('top'), centerY('bottom'), centerX('start'), centerX('end')];\r\n case 'cr':\r\n return [centerX('end'), centerX('start'), centerY('top'), centerY('bottom')];\r\n case 'cc':\r\n return [centerX('center')];\r\n case 'ltr':\r\n return [ltr('bottom'), ltr('top')];\r\n case 'rtl':\r\n return [rtl('bottom'), rtl('top')];\r\n case 'tltr':\r\n return [ltr('top'), ltr('bottom')];\r\n case 'trtl':\r\n return [rtl('top'), rtl('bottom')];\r\n case 'rt':\r\n return [side('end', 'top'), side('end', 'bottom'), ltr('top')];\r\n case 'rb':\r\n return [side('end', 'bottom'), side('end', 'top'), ltr('bottom'), rtl('bottom')];\r\n case 'lt':\r\n return [side('start', 'top'), side('start', 'bottom'), rtl('top')];\r\n case 'lb':\r\n return [side('start', 'bottom'), side('start', 'top'), rtl('bottom')];\r\n default:\r\n return [];\r\n }\r\n }\r\n\r\n private resolveItem(target: EventTarget | null): HTMLElement | null {\r\n if (!(target instanceof HTMLElement)) {\r\n return null;\r\n }\r\n\r\n const content = target.closest<HTMLElement>('.mecx-popover-content');\r\n\r\n if (!content) {\r\n return null;\r\n }\r\n\r\n const selector = typeof this.closeOnClick === 'string' ? this.closeOnClick : null;\r\n const item = selector ? target.closest<HTMLElement>(selector) : target;\r\n\r\n return item && content.contains(item) ? item : null;\r\n }\r\n\r\n private listenContentClicks(): void {\r\n if (!this._overlayRef || (!this.closeOnClick && !this.itemClick.observed)) {\r\n return;\r\n }\r\n\r\n const { overlayElement } = this._overlayRef;\r\n\r\n const handler = (event: MouseEvent): void => {\r\n const item = this.resolveItem(event.target);\r\n\r\n if (!item) {\r\n return;\r\n }\r\n\r\n this._zone.run(() => {\r\n this.itemClick.emit({ event, item });\r\n\r\n if (this.closeOnClick) {\r\n this.closePopover(event);\r\n }\r\n });\r\n };\r\n\r\n this._zone.runOutsideAngular(() => {\r\n overlayElement.addEventListener('click', handler);\r\n });\r\n\r\n this._removeContentClick = () => {\r\n overlayElement.removeEventListener('click', handler);\r\n };\r\n }\r\n\r\n private createPopover(\r\n origin?: FlexibleConnectedPositionStrategyOrigin,\r\n options?: MonkeyPopoverOptions\r\n ): void {\r\n if (!this.target) {\r\n // eslint-disable-next-line no-console\r\n console.error('MonkeyPopoverDirective -> target element is not defined.');\r\n return;\r\n }\r\n\r\n const originEl =\r\n this.target instanceof HTMLElement ? this.target : (this.target as any).element;\r\n\r\n this._positionStrategy = this._overlayPositionBuilder\r\n .flexibleConnectedTo(origin ?? originEl)\r\n .withPush(true)\r\n .withGrowAfterOpen(true)\r\n .withPositions(this.getPositions(options?.dir!));\r\n\r\n this._overlayRef = this._overlay.create({\r\n positionStrategy: this._positionStrategy,\r\n disposeOnNavigation: true,\r\n direction: 'ltr',\r\n hasBackdrop: this.backdrop,\r\n scrollStrategy: this._overlay.scrollStrategies.reposition(),\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n width: this._options?.minwidth || this.minwidth ? this.target.offsetWidth - 2 : undefined,\r\n maxHeight: '95%',\r\n height: this.height\r\n });\r\n\r\n this._overlayRef\r\n .backdropClick()\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe((event) => {\r\n this.closePopover(event);\r\n });\r\n\r\n const portal = new ComponentPortal(MonkeyPopoverContentComponent, this._vcr);\r\n\r\n this._componentRef = this._overlayRef.attach(portal);\r\n this._componentRef.instance.content = this._tpl;\r\n this._componentRef.instance.title = this.title as any;\r\n this._componentRef.instance.actions = this.actions as any;\r\n this._componentRef.instance.hideClose = this.hideClose;\r\n this._componentRef.instance.hideHeader = this.hideHeader;\r\n this._componentRef.instance.hideActions = this.hideActions;\r\n this._componentRef.instance.enableAutofocus = this.enableAutofocus;\r\n\r\n if (!this.hideClose || !this.hideHeader) {\r\n this._componentRef.instance.onClose\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(() => {\r\n this.closePopover();\r\n });\r\n }\r\n\r\n this.listenContentClicks();\r\n\r\n if (this.watch && 'ResizeObserver' in window) {\r\n this._resizeObserver = new ResizeObserver(() => {\r\n this._overlayRef?.updatePosition();\r\n });\r\n\r\n this._resizeObserver.observe(this._componentRef.location.nativeElement);\r\n }\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { map, of } from 'rxjs';\r\nimport {\r\n GoogleApiPlaces,\r\n GoogleApiPlacesAddressComponents,\r\n GoogleApiPlacesResponse\r\n} from '../interfaces';\r\nimport { injectTokenWithWarning, MECX_GOOGLE_API_KEY } from '../tokens';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MonkeyEcxAddressService {\r\n private readonly _http = inject(HttpClient);\r\n\r\n private readonly _googleApiKey = injectTokenWithWarning(\r\n MECX_GOOGLE_API_KEY,\r\n 'MECX_GOOGLE_API_KEY'\r\n )!;\r\n\r\n private mappingData(places: GoogleApiPlaces[]) {\r\n const getComponent = (\r\n components: GoogleApiPlacesAddressComponents[],\r\n type:\r\n | 'street_number'\r\n | 'route'\r\n | 'sublocality_level_1'\r\n | 'sublocality'\r\n | 'political'\r\n | 'administrative_area_level_1'\r\n | 'administrative_area_level_2'\r\n | 'country'\r\n | 'postal_code',\r\n field = 'longText'\r\n ) => {\r\n const result = components.find((c) => {\r\n return c.types.includes(type);\r\n });\r\n\r\n return result?.[field] || '';\r\n };\r\n\r\n return places.map((_: GoogleApiPlaces) => {\r\n const { addressComponents } = _;\r\n\r\n const address = getComponent(addressComponents!, 'route');\r\n const addressNumber = getComponent(addressComponents!, 'street_number');\r\n const neighborhood = getComponent(addressComponents!, 'sublocality_level_1');\r\n const city = getComponent(addressComponents!, 'administrative_area_level_2');\r\n const state = getComponent(addressComponents!, 'administrative_area_level_1');\r\n const country = getComponent(addressComponents!, 'country', 'shortText');\r\n const zipCode = getComponent(addressComponents!, 'postal_code');\r\n\r\n return {\r\n formattedAddress: _.formattedAddress,\r\n adrFormatAddress: _.adrFormatAddress,\r\n address,\r\n addressNumber,\r\n neighborhood,\r\n city,\r\n state,\r\n country,\r\n zipCode\r\n };\r\n });\r\n }\r\n\r\n get(textQuery: string) {\r\n if (!textQuery) {\r\n return of([]);\r\n }\r\n\r\n return this._http\r\n .post<any>(\r\n 'https://places.googleapis.com/v1/places:searchText',\r\n {\r\n textQuery\r\n },\r\n {\r\n headers: {\r\n 'X-Goog-Api-Key': this._googleApiKey,\r\n 'X-Goog-FieldMask':\r\n 'places.formattedAddress,places.addressComponents,places.displayName,places.adrFormatAddress'\r\n }\r\n }\r\n )\r\n .pipe(\r\n map((resp: GoogleApiPlacesResponse) => {\r\n return this.mappingData(resp.places);\r\n })\r\n );\r\n }\r\n}\r\n","/* eslint-disable no-console */\r\n/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { DestroyRef, inject, Injectable, LOCALE_ID } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { BehaviorSubject, combineLatest, distinctUntilChanged, map } from 'rxjs';\r\nimport { MECX_I18N_LANG, MECX_I18N_WRAPPER } from '../tokens';\r\n\r\nconst DEFAULT_LOCALE = 'pt-BR';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MonkeyDictionaryService {\r\n private _localeId = inject(LOCALE_ID);\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private _lang$ =\r\n inject(MECX_I18N_LANG, { optional: true }) ??\r\n new BehaviorSubject<string>(this._localeId || DEFAULT_LOCALE);\r\n\r\n private _data$ = new BehaviorSubject<Record<string, Record<string, any>>>({\r\n 'pt-BR': {\r\n EDIT: 'Editar',\r\n 'NO-RESULTS': 'Nenhum resultado encontrado',\r\n 'NO-DATA': 'Sem dados',\r\n 'NO-DATA-ADDRESS': 'Nenhum endereço encontrado com esta pesquisa',\r\n 'NOT-PROVIDED': 'Não informado',\r\n LOADING: 'Carregando...',\r\n // `{label}`, `{position}` and `{total}` are filled in by the table.\r\n TABLE: {\r\n EMPTY: 'Nenhum resultado.',\r\n SORT: {\r\n 'TEXT-ASC': 'Ordenar de A a Z',\r\n 'TEXT-DESC': 'Ordenar de Z a A',\r\n 'NUMBER-ASC': 'Menor para maior',\r\n 'NUMBER-DESC': 'Maior para menor',\r\n 'DATE-ASC': 'Mais antigo',\r\n 'DATE-DESC': 'Mais recente'\r\n },\r\n COLUMN: {\r\n 'MOVE-LEFT': 'Mover esquerda',\r\n 'MOVE-RIGHT': 'Mover direita',\r\n HIDE: 'Remover visualização',\r\n PIN: 'Fixar coluna',\r\n UNPIN: 'Desfixar coluna'\r\n },\r\n ROW: {\r\n 'SELECT-ALL': 'Selecionar todas as linhas desta página',\r\n SELECT: 'Selecionar {label}',\r\n EXPAND: 'Expandir {label}',\r\n COLLAPSE: 'Recolher {label}',\r\n DETAIL: 'Detalhe',\r\n LIMIT: 'Limite de {max} selecionados atingido',\r\n 'NOT-SELECTABLE': 'Esta linha não pode ser selecionada'\r\n }\r\n },\r\n 'FILTER-BAR': {\r\n ADD: 'Filtro',\r\n 'ADD-ARIA': 'Adicionar filtro',\r\n REMOVE: 'Remover filtro',\r\n CLEAR: 'Limpar filtros',\r\n SEARCH: 'Buscar filtro',\r\n 'SELECT-CONDITION': 'Selecione condição',\r\n SELECT: 'Selecione',\r\n CONFIRM: 'Confirmar',\r\n 'RANGE-FROM': 'Valor inicial',\r\n 'RANGE-TO': 'Valor final',\r\n SELECTED: '{count} selecionados',\r\n DATE: {\r\n 'WEEK-AFTER': '1 semana a partir de hoje',\r\n 'MONTH-AFTER': '1 mês a partir de hoje',\r\n 'QUARTER-AFTER': '3 meses a partir de hoje',\r\n 'WEEK-BEFORE': '1 semana antes de hoje',\r\n 'MONTH-BEFORE': '1 mês antes de hoje',\r\n 'QUARTER-BEFORE': '3 meses antes de hoje',\r\n CUSTOM: 'Personalizado'\r\n },\r\n OPERATOR: {\r\n EQ: 'É igual',\r\n NEQ: 'Não é igual',\r\n LIKE: 'Contém',\r\n NOT_LIKE: 'Não contém',\r\n STARTS_WITH: 'Começa com',\r\n ENDS_WITH: 'Termina com',\r\n IS_EMPTY: 'Vazio',\r\n BETWEEN: 'Entre',\r\n GT: 'Maior que',\r\n LT: 'Menor que',\r\n BEFORE: 'Antes de',\r\n AFTER: 'Depois de'\r\n }\r\n },\r\n 'DATE-RANGE': {\r\n 'START-DATE': 'Data de início',\r\n 'END-DATE': 'Data de término',\r\n INVALID: 'Intervalo de datas inválido',\r\n ACTIONS: {\r\n CANCEL: 'Cancelar',\r\n APPLY: 'Aplicar'\r\n },\r\n 'WEEK-DAYS': ['Dom.', '2ª', '3ª', '4ª', '5ª', '6ª', 'Sab.'],\r\n MONTHS: {\r\n 0: 'Janeiro',\r\n 1: 'Fevereiro',\r\n 2: 'Março',\r\n 3: 'Abril',\r\n 4: 'Maio',\r\n 5: 'Junho',\r\n 6: 'Julho',\r\n 7: 'Agosto',\r\n 8: 'Setembro',\r\n 9: 'Outubro',\r\n 10: 'Novembro',\r\n 11: 'Dezembro'\r\n },\r\n 'QUICK-ACTIONS': {\r\n CUSTOM: 'Customizado',\r\n LAST_30_DAYS: 'Ultimos 30 dias',\r\n LAST_60_DAYS: 'Ultimos 60 dias',\r\n LAST_90_DAYS: 'Ultimos 90 dias',\r\n LAST_6_MONTHS: 'Ultimos 6 meses',\r\n LAST_12_MONTHS: 'Ultimos 12 meses',\r\n NEXT_30_DAYS: 'Próximos 30 dias',\r\n NEXT_60_DAYS: 'Próximos 60 dias',\r\n NEXT_90_DAYS: 'Próximos 90 dias',\r\n NEXT_6_MONTHS: 'Próximos 6 meses',\r\n NEXT_12_MONTHS: 'Próximos 12 meses'\r\n }\r\n },\r\n OR: 'ou',\r\n 'DOWNLOAD-TOAST': {\r\n singular: 'download',\r\n plural: 'downloads',\r\n expand: 'Expandir',\r\n defaultMessage: 'Download',\r\n cancel: 'Cancelar',\r\n close: 'Fechar',\r\n download: 'Baixar'\r\n }\r\n },\r\n 'es-CL': {\r\n EDIT: 'Editar',\r\n 'NO-RESULTS': 'No se encontraron resultados',\r\n 'NO-DATA': 'Sin datos',\r\n 'NO-DATA-ADDRESS': 'No se encontraron direcciones con esta búsqueda',\r\n 'NOT-PROVIDED': 'No informado',\r\n LOADING: 'Cargando...',\r\n TABLE: {\r\n EMPTY: 'Sin resultados.',\r\n SORT: {\r\n 'TEXT-ASC': 'Ordenar de A a Z',\r\n 'TEXT-DESC': 'Ordenar de Z a A',\r\n 'NUMBER-ASC': 'De menor a mayor',\r\n 'NUMBER-DESC': 'De mayor a menor',\r\n 'DATE-ASC': 'Más antiguo',\r\n 'DATE-DESC': 'Más reciente'\r\n },\r\n COLUMN: {\r\n 'MOVE-LEFT': 'Mover a la izquierda',\r\n 'MOVE-RIGHT': 'Mover a la derecha',\r\n HIDE: 'Quitar de la vista',\r\n PIN: 'Fijar columna',\r\n UNPIN: 'Desfijar columna'\r\n },\r\n ROW: {\r\n 'SELECT-ALL': 'Seleccionar todas las filas de esta página',\r\n SELECT: 'Seleccionar {label}',\r\n EXPAND: 'Expandir {label}',\r\n COLLAPSE: 'Contraer {label}',\r\n DETAIL: 'Detalle',\r\n LIMIT: 'Límite de {max} seleccionados alcanzado',\r\n 'NOT-SELECTABLE': 'Esta fila no se puede seleccionar'\r\n }\r\n },\r\n 'FILTER-BAR': {\r\n ADD: 'Filtro',\r\n 'ADD-ARIA': 'Agregar filtro',\r\n REMOVE: 'Eliminar filtro',\r\n CLEAR: 'Limpiar filtros',\r\n SEARCH: 'Buscar filtro',\r\n 'SELECT-CONDITION': 'Seleccione condición',\r\n SELECT: 'Seleccione',\r\n CONFIRM: 'Confirmar',\r\n 'RANGE-FROM': 'Valor inicial',\r\n 'RANGE-TO': 'Valor final',\r\n SELECTED: '{count} seleccionados',\r\n DATE: {\r\n 'WEEK-AFTER': '1 semana a partir de hoy',\r\n 'MONTH-AFTER': '1 mes a partir de hoy',\r\n 'QUARTER-AFTER': '3 meses a partir de hoy',\r\n 'WEEK-BEFORE': '1 semana antes de hoy',\r\n 'MONTH-BEFORE': '1 mes antes de hoy',\r\n 'QUARTER-BEFORE': '3 meses antes de hoy',\r\n CUSTOM: 'Personalizado'\r\n },\r\n OPERATOR: {\r\n EQ: 'Es igual',\r\n NEQ: 'No es igual',\r\n LIKE: 'Contiene',\r\n NOT_LIKE: 'No contiene',\r\n STARTS_WITH: 'Empieza con',\r\n ENDS_WITH: 'Termina con',\r\n IS_EMPTY: 'Vacío',\r\n BETWEEN: 'Entre',\r\n GT: 'Mayor que',\r\n LT: 'Menor que',\r\n BEFORE: 'Antes de',\r\n AFTER: 'Después de'\r\n }\r\n },\r\n 'DATE-RANGE': {\r\n 'START-DATE': 'Fecha de inicio',\r\n 'END-DATE': 'Fecha de termino',\r\n INVALID: 'Rango de fechas no válido',\r\n ACTIONS: {\r\n CANCEL: 'Cancelar',\r\n APPLY: 'Aplicar'\r\n },\r\n 'WEEK-DAYS': ['Dom.', 'Lun.', 'Mar.', 'Mié.', 'Jue.', 'Vie.', 'Sab.'],\r\n MONTHS: {\r\n 0: 'Enero',\r\n 1: 'Febrero',\r\n 2: 'Marzo',\r\n 3: 'Abril',\r\n 4: 'Mayo',\r\n 5: 'Junio',\r\n 6: 'Julio',\r\n 7: 'Agosto',\r\n 8: 'Septiembre',\r\n 9: 'Octubre',\r\n 10: 'Noviembre',\r\n 11: 'Diciembre'\r\n },\r\n 'QUICK-ACTIONS': {\r\n CUSTOM: 'Personalizado',\r\n LAST_30_DAYS: 'Últimos 30 días',\r\n LAST_60_DAYS: 'Últimos 60 días',\r\n LAST_90_DAYS: 'Últimos 90 días',\r\n LAST_6_MONTHS: 'Últimos 6 meses',\r\n LAST_12_MONTHS: 'Últimos 12 meses',\r\n NEXT_30_DAYS: 'Próximos 30 días',\r\n NEXT_60_DAYS: 'Próximos 60 días',\r\n NEXT_90_DAYS: 'Próximos 90 días',\r\n NEXT_6_MONTHS: 'Próximos 6 meses',\r\n NEXT_12_MONTHS: 'Próximos 12 meses'\r\n }\r\n },\r\n OR: 'o',\r\n 'DOWNLOAD-TOAST': {\r\n singular: 'descarga',\r\n plural: 'descargas',\r\n expand: 'Expandir',\r\n defaultMessage: 'Descarga',\r\n cancel: 'Cancelar',\r\n close: 'Cerrar',\r\n download: 'Descargar'\r\n }\r\n },\r\n 'es-MX': {\r\n EDIT: 'Editar',\r\n 'NO-RESULTS': 'No se encontraron resultados',\r\n 'NO-DATA': 'Sin datos',\r\n 'NO-DATA-ADDRESS': 'No se encontraron direcciones con esta búsqueda',\r\n 'NOT-PROVIDED': 'No informado',\r\n LOADING: 'Cargando...',\r\n TABLE: {\r\n EMPTY: 'Sin resultados.',\r\n SORT: {\r\n 'TEXT-ASC': 'Ordenar de A a Z',\r\n 'TEXT-DESC': 'Ordenar de Z a A',\r\n 'NUMBER-ASC': 'De menor a mayor',\r\n 'NUMBER-DESC': 'De mayor a menor',\r\n 'DATE-ASC': 'Más antiguo',\r\n 'DATE-DESC': 'Más reciente'\r\n },\r\n COLUMN: {\r\n 'MOVE-LEFT': 'Mover a la izquierda',\r\n 'MOVE-RIGHT': 'Mover a la derecha',\r\n HIDE: 'Quitar de la vista',\r\n PIN: 'Fijar columna',\r\n UNPIN: 'Desfijar columna'\r\n },\r\n ROW: {\r\n 'SELECT-ALL': 'Seleccionar todas las filas de esta página',\r\n SELECT: 'Seleccionar {label}',\r\n EXPAND: 'Expandir {label}',\r\n COLLAPSE: 'Contraer {label}',\r\n DETAIL: 'Detalle',\r\n LIMIT: 'Límite de {max} seleccionados alcanzado',\r\n 'NOT-SELECTABLE': 'Esta fila no se puede seleccionar'\r\n }\r\n },\r\n 'FILTER-BAR': {\r\n ADD: 'Filtro',\r\n 'ADD-ARIA': 'Agregar filtro',\r\n REMOVE: 'Eliminar filtro',\r\n CLEAR: 'Limpiar filtros',\r\n SEARCH: 'Buscar filtro',\r\n 'SELECT-CONDITION': 'Seleccione condición',\r\n SELECT: 'Seleccione',\r\n CONFIRM: 'Confirmar',\r\n 'RANGE-FROM': 'Valor inicial',\r\n 'RANGE-TO': 'Valor final',\r\n SELECTED: '{count} seleccionados',\r\n DATE: {\r\n 'WEEK-AFTER': '1 semana a partir de hoy',\r\n 'MONTH-AFTER': '1 mes a partir de hoy',\r\n 'QUARTER-AFTER': '3 meses a partir de hoy',\r\n 'WEEK-BEFORE': '1 semana antes de hoy',\r\n 'MONTH-BEFORE': '1 mes antes de hoy',\r\n 'QUARTER-BEFORE': '3 meses antes de hoy',\r\n CUSTOM: 'Personalizado'\r\n },\r\n OPERATOR: {\r\n EQ: 'Es igual',\r\n NEQ: 'No es igual',\r\n LIKE: 'Contiene',\r\n NOT_LIKE: 'No contiene',\r\n STARTS_WITH: 'Empieza con',\r\n ENDS_WITH: 'Termina con',\r\n IS_EMPTY: 'Vacío',\r\n BETWEEN: 'Entre',\r\n GT: 'Mayor que',\r\n LT: 'Menor que',\r\n BEFORE: 'Antes de',\r\n AFTER: 'Después de'\r\n }\r\n },\r\n 'DATE-RANGE': {\r\n 'START-DATE': 'Fecha de inicio',\r\n 'END-DATE': 'Fecha de termino',\r\n INVALID: 'Rango de fechas no válido',\r\n ACTIONS: {\r\n CANCEL: 'Cancelar',\r\n APPLY: 'Aplicar'\r\n },\r\n 'WEEK-DAYS': ['Dom.', 'Lun.', 'Mar.', 'Mié.', 'Jue.', 'Vie.', 'Sab.'],\r\n MONTHS: {\r\n 0: 'Enero',\r\n 1: 'Febrero',\r\n 2: 'Marzo',\r\n 3: 'Abril',\r\n 4: 'Mayo',\r\n 5: 'Junio',\r\n 6: 'Julio',\r\n 7: 'Agosto',\r\n 8: 'Septiembre',\r\n 9: 'Octubre',\r\n 10: 'Noviembre',\r\n 11: 'Diciembre'\r\n },\r\n 'QUICK-ACTIONS': {\r\n CUSTOM: 'Personalizado',\r\n LAST_30_DAYS: 'Últimos 30 días',\r\n LAST_60_DAYS: 'Últimos 60 días',\r\n LAST_90_DAYS: 'Últimos 90 días',\r\n LAST_6_MONTHS: 'Últimos 6 meses',\r\n LAST_12_MONTHS: 'Últimos 12 meses',\r\n NEXT_30_DAYS: 'Próximos 30 días',\r\n NEXT_60_DAYS: 'Próximos 60 días',\r\n NEXT_90_DAYS: 'Próximos 90 días',\r\n NEXT_6_MONTHS: 'Próximos 6 meses',\r\n NEXT_12_MONTHS: 'Próximos 12 meses'\r\n }\r\n },\r\n OR: 'o',\r\n 'DOWNLOAD-TOAST': {\r\n singular: 'descarga',\r\n plural: 'descargas',\r\n expand: 'Expandir',\r\n defaultMessage: 'Descarga',\r\n cancel: 'Cancelar',\r\n close: 'Cerrar',\r\n download: 'Descargar'\r\n }\r\n },\r\n 'en-US': {\r\n EDIT: 'Edit',\r\n 'NO-RESULTS': 'No results found',\r\n 'NO-DATA': 'No data',\r\n 'NO-DATA-ADDRESS': 'No address found with this search',\r\n 'NOT-PROVIDED': 'Not provided',\r\n LOADING: 'Loading...',\r\n TABLE: {\r\n EMPTY: 'No results.',\r\n SORT: {\r\n 'TEXT-ASC': 'Sort A to Z',\r\n 'TEXT-DESC': 'Sort Z to A',\r\n 'NUMBER-ASC': 'Lowest to highest',\r\n 'NUMBER-DESC': 'Highest to lowest',\r\n 'DATE-ASC': 'Oldest first',\r\n 'DATE-DESC': 'Newest first'\r\n },\r\n COLUMN: {\r\n 'MOVE-LEFT': 'Move left',\r\n 'MOVE-RIGHT': 'Move right',\r\n HIDE: 'Remove from view',\r\n PIN: 'Pin column',\r\n UNPIN: 'Unpin column'\r\n },\r\n ROW: {\r\n 'SELECT-ALL': 'Select all rows on this page',\r\n SELECT: 'Select {label}',\r\n EXPAND: 'Expand {label}',\r\n COLLAPSE: 'Collapse {label}',\r\n DETAIL: 'Detail',\r\n LIMIT: 'Limit of {max} selected reached',\r\n 'NOT-SELECTABLE': 'This row cannot be selected'\r\n }\r\n },\r\n 'FILTER-BAR': {\r\n ADD: 'Filter',\r\n 'ADD-ARIA': 'Add filter',\r\n REMOVE: 'Remove filter',\r\n CLEAR: 'Clear filters',\r\n SEARCH: 'Search filter',\r\n 'SELECT-CONDITION': 'Select condition',\r\n SELECT: 'Select',\r\n CONFIRM: 'Confirm',\r\n 'RANGE-FROM': 'From',\r\n 'RANGE-TO': 'To',\r\n SELECTED: '{count} selected',\r\n DATE: {\r\n 'WEEK-AFTER': '1 week from today',\r\n 'MONTH-AFTER': '1 month from today',\r\n 'QUARTER-AFTER': '3 months from today',\r\n 'WEEK-BEFORE': '1 week before today',\r\n 'MONTH-BEFORE': '1 month before today',\r\n 'QUARTER-BEFORE': '3 months before today',\r\n CUSTOM: 'Custom'\r\n },\r\n OPERATOR: {\r\n EQ: 'Is equal to',\r\n NEQ: 'Is not equal to',\r\n LIKE: 'Contains',\r\n NOT_LIKE: 'Does not contain',\r\n STARTS_WITH: 'Starts with',\r\n ENDS_WITH: 'Ends with',\r\n IS_EMPTY: 'Is empty',\r\n BETWEEN: 'Between',\r\n GT: 'Greater than',\r\n LT: 'Less than',\r\n BEFORE: 'Before',\r\n AFTER: 'After'\r\n }\r\n },\r\n 'DATE-RANGE': {\r\n 'START-DATE': 'Start date',\r\n 'END-DATE': 'End Date',\r\n INVALID: 'Invalid date range',\r\n ACTIONS: {\r\n CANCEL: 'Cancel',\r\n APPLY: 'Apply'\r\n },\r\n 'WEEK-DAYS': ['Sun.', 'Mon.', 'Tue.', 'Wed.', 'Thu.', 'Fri.', 'Sat.'],\r\n MONTHS: {\r\n 0: 'January',\r\n 1: 'February',\r\n 2: 'March',\r\n 3: 'April',\r\n 4: 'May',\r\n 5: 'June',\r\n 6: 'July',\r\n 7: 'August',\r\n 8: 'September',\r\n 9: 'October',\r\n 10: 'November',\r\n 11: 'December'\r\n },\r\n 'QUICK-ACTIONS': {\r\n CUSTOM: 'Custom',\r\n LAST_30_DAYS: 'Last 30 days',\r\n LAST_60_DAYS: 'Last 60 days',\r\n LAST_90_DAYS: 'Last 90 days',\r\n LAST_6_MONTHS: 'Last 6 months',\r\n LAST_12_MONTHS: 'Last 12 months',\r\n NEXT_30_DAYS: 'Next 30 days',\r\n NEXT_60_DAYS: 'Next 60 days',\r\n NEXT_90_DAYS: 'Next 90 days',\r\n NEXT_6_MONTHS: 'Next 6 months',\r\n NEXT_12_MONTHS: 'Next 12 months'\r\n }\r\n },\r\n OR: 'or',\r\n 'DOWNLOAD-TOAST': {\r\n singular: 'download',\r\n plural: 'downloads',\r\n expand: 'Expand',\r\n cancel: 'Cancel',\r\n close: 'Close',\r\n download: 'Download',\r\n defaultMessage: 'Download'\r\n }\r\n }\r\n });\r\n\r\n constructor() {\r\n const tokenSubject = inject(MECX_I18N_WRAPPER, { optional: true });\r\n tokenSubject?.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((value) => {\r\n this.handleWrapperValues(value);\r\n });\r\n }\r\n\r\n private handleWrapperValues(value: string) {\r\n try {\r\n const locale = this._lang$.value || DEFAULT_LOCALE;\r\n const wrappedData = JSON.parse(value);\r\n const currentData = this._data$.value;\r\n\r\n const updated = {\r\n ...currentData,\r\n [locale]: {\r\n ...currentData[locale],\r\n ...wrappedData\r\n }\r\n };\r\n\r\n this._data$.next(updated);\r\n } catch (e) {\r\n // eslint-disable-next-line no-console\r\n console.error(`MonkeyDictionaryService - handleWrapperValues -> ${e}`);\r\n }\r\n }\r\n\r\n get(key: string) {\r\n return combineLatest([this._data$, this._lang$]).pipe(\r\n map(([data, lang]) => {\r\n const locale = lang || DEFAULT_LOCALE;\r\n return data[locale]?.[key] ?? data[DEFAULT_LOCALE]?.[key] ?? null;\r\n }),\r\n distinctUntilChanged()\r\n );\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n GlobalPositionStrategy,\r\n Overlay,\r\n OverlayRef,\r\n PositionStrategy\r\n} from '@angular/cdk/overlay';\r\nimport { MonkeyToastPosition } from '../interfaces';\r\n\r\nexport const MOBILE_TOAST_MEDIA_QUERY = '(max-width: 575.98px)';\r\n\r\nexport function isMobileToastViewport(): boolean {\r\n if (typeof window !== 'undefined' && typeof window.matchMedia === 'function') {\r\n return window.matchMedia(MOBILE_TOAST_MEDIA_QUERY).matches;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction getToastOffset(): string {\r\n if (isMobileToastViewport()) {\r\n return '16px';\r\n }\r\n\r\n return '24px';\r\n}\r\n\r\nfunction buildGlobalPosition(\r\n overlay: Overlay,\r\n position?: MonkeyToastPosition\r\n): GlobalPositionStrategy {\r\n const offset = getToastOffset();\r\n const globalPosition = overlay.position().global();\r\n const key = position ?? 'bottom-right';\r\n\r\n if (isMobileToastViewport()) {\r\n return key.startsWith('top')\r\n ? globalPosition.top(offset).centerHorizontally()\r\n : globalPosition.bottom(offset).centerHorizontally();\r\n }\r\n\r\n const strategies: Record<string, () => GlobalPositionStrategy> = {\r\n 'top-left': () => {\r\n return globalPosition.top(offset).start(offset);\r\n },\r\n 'top-center': () => {\r\n return globalPosition.top(offset).centerHorizontally();\r\n },\r\n 'top-right': () => {\r\n return globalPosition.top(offset).end(offset);\r\n },\r\n 'bottom-left': () => {\r\n return globalPosition.bottom(offset).start(offset);\r\n },\r\n 'bottom-center': () => {\r\n return globalPosition.bottom(offset).centerHorizontally();\r\n },\r\n 'bottom-right': () => {\r\n return globalPosition.bottom(offset).end(offset);\r\n }\r\n };\r\n\r\n const factory = strategies[key] ?? strategies['bottom-right'];\r\n\r\n return factory();\r\n}\r\n\r\nclass ViewportAwareToastPositionStrategy implements PositionStrategy {\r\n private overlayRef?: OverlayRef;\r\n\r\n constructor(\r\n private readonly overlay: Overlay,\r\n private readonly position?: MonkeyToastPosition\r\n ) {}\r\n\r\n attach(overlayRef: OverlayRef): void {\r\n this.overlayRef = overlayRef;\r\n }\r\n\r\n apply(): void {\r\n const overlayRef = this.overlayRef;\r\n\r\n if (!overlayRef) {\r\n return;\r\n }\r\n\r\n const fresh = buildGlobalPosition(this.overlay, this.position);\r\n fresh.attach(overlayRef);\r\n fresh.apply();\r\n }\r\n\r\n dispose(): void {\r\n this.overlayRef = undefined;\r\n }\r\n}\r\n\r\nexport function createToastOverlay(overlay: Overlay, position?: MonkeyToastPosition): OverlayRef {\r\n return overlay.create({\r\n hasBackdrop: false,\r\n positionStrategy: new ViewportAwareToastPositionStrategy(overlay, position)\r\n });\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n Output,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\n\r\n@Component({\r\n selector: 'monkey-tooltip',\r\n imports: [NgTemplateOutlet],\r\n templateUrl: './tooltip.component.html',\r\n styleUrl: './tooltip.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-tooltip',\r\n '[style.left.px]': 'left',\r\n '[style.top.px]': 'top',\r\n '(animationend)': 'onAnimationEnd($event)',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyTooltipComponent {\r\n @Input() text: string | undefined;\r\n\r\n @Input() template!: null | TemplateRef<HTMLElement>;\r\n\r\n @Input() left: number | undefined;\r\n\r\n @Input() top: number | undefined;\r\n\r\n @Output() afterClose = new EventEmitter();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-tooltip-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor(private host: ElementRef<HTMLElement>) {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n close() {\r\n this.host.nativeElement.classList.add('closed');\r\n }\r\n\r\n onAnimationEnd(event: AnimationEvent) {\r\n if (event.animationName.includes('fade-out')) {\r\n this.afterClose.emit(true);\r\n }\r\n }\r\n}\r\n","@if (template) {\r\n <ng-container *ngTemplateOutlet=\"template\"> </ng-container>\r\n}\r\n@if (text) {\r\n {{ text }}\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './tooltip.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n ApplicationRef,\r\n booleanAttribute,\r\n ComponentRef,\r\n Directive,\r\n DOCUMENT,\r\n ElementRef,\r\n HostListener,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n TemplateRef,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { MonkeyTooltipComponent } from './tooltip';\r\n\r\ntype Position = 'top' | 'bottom' | 'left' | 'right' | undefined;\r\n\r\n@Directive({\r\n selector: '[monkeyTooltip]',\r\n standalone: true,\r\n host: {\r\n '(mouseenter)': 'show()',\r\n '(mouseleave)': 'hide()',\r\n '(click)': 'hide()'\r\n }\r\n})\r\nexport class MonkeyTooltipDirective implements OnDestroy {\r\n @Input('monkeyTooltip') tooltipText: string | TemplateRef<HTMLElement> | undefined;\r\n\r\n @Input() tooltipPosition: Position;\r\n\r\n @Input({ transform: booleanAttribute }) enabled = true;\r\n\r\n private offset = 8;\r\n\r\n private tooltipComponent?: ComponentRef<MonkeyTooltipComponent>;\r\n\r\n private bounds!: {\r\n elBounds: DOMRect;\r\n tooltipBounds: DOMRect;\r\n viewport: { width: number; height: number };\r\n };\r\n\r\n constructor(\r\n private viewContainerRef: ViewContainerRef,\r\n private elementRef: ElementRef,\r\n private appRef: ApplicationRef,\r\n @Inject(DOCUMENT) private document: Document\r\n ) {\r\n // to do not\r\n }\r\n\r\n private setBounds() {\r\n this.tooltipComponent!.hostView.detectChanges();\r\n this.bounds = {\r\n elBounds: this.elementRef.nativeElement.getBoundingClientRect(),\r\n tooltipBounds: this.tooltipComponent?.location.nativeElement.getBoundingClientRect(),\r\n viewport: {\r\n width:\r\n window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth,\r\n height:\r\n window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * The top layer paints above every stacking context and ignores z-index entirely, so the\r\n * tooltip cannot be covered by an overlay, a modal or application chrome. Browsers without\r\n * the popover API fall back to the z-index in the component styles.\r\n */\r\n private raiseToTopLayer(host: HTMLElement): void {\r\n const popover = host as HTMLElement & { showPopover?: () => void };\r\n\r\n if (typeof popover.showPopover !== 'function') {\r\n return;\r\n }\r\n\r\n host.setAttribute('popover', 'manual');\r\n\r\n try {\r\n popover.showPopover();\r\n } catch {\r\n // Already open, or detached before it could be shown.\r\n }\r\n }\r\n\r\n private createTooltip() {\r\n this.tooltipComponent = this.viewContainerRef.createComponent(MonkeyTooltipComponent);\r\n const host = this.tooltipComponent.location.nativeElement as HTMLElement;\r\n this.document.body.appendChild(host);\r\n this.raiseToTopLayer(host);\r\n\r\n if (this.tooltipText instanceof TemplateRef) {\r\n this.tooltipComponent.instance.template = this.tooltipText;\r\n } else {\r\n this.tooltipComponent.instance.text = this.tooltipText;\r\n }\r\n this.setBounds();\r\n\r\n this.positionTooltip(this.tooltipPosition);\r\n }\r\n\r\n private positionTooltip(position: Position) {\r\n switch (position) {\r\n case 'left':\r\n this.positionLeft();\r\n if (this.isOutOfBounds()) {\r\n this.positionRight();\r\n if (this.isOutOfBounds()) {\r\n this.positionBottom();\r\n if (this.isOutOfBounds()) {\r\n this.positionTop();\r\n }\r\n }\r\n }\r\n break;\r\n case 'right':\r\n this.positionRight();\r\n if (this.isOutOfBounds()) {\r\n this.positionLeft();\r\n if (this.isOutOfBounds()) {\r\n this.positionBottom();\r\n if (this.isOutOfBounds()) {\r\n this.positionTop();\r\n }\r\n }\r\n }\r\n break;\r\n case 'top':\r\n this.positionTop();\r\n if (this.isOutOfBounds()) {\r\n this.positionBottom();\r\n if (this.isOutOfBounds()) {\r\n this.positionRight();\r\n if (this.isOutOfBounds()) {\r\n this.positionLeft();\r\n }\r\n }\r\n }\r\n break;\r\n case 'bottom':\r\n this.positionBottom();\r\n if (this.isOutOfBounds()) {\r\n this.positionTop();\r\n if (this.isOutOfBounds()) {\r\n this.positionRight();\r\n if (this.isOutOfBounds()) {\r\n this.positionLeft();\r\n }\r\n }\r\n }\r\n break;\r\n default:\r\n }\r\n }\r\n\r\n private isOutOfBounds() {\r\n const { tooltipBounds, viewport } = this.bounds;\r\n\r\n return (\r\n tooltipBounds.left < 0 ||\r\n tooltipBounds.top < 0 ||\r\n tooltipBounds.left + tooltipBounds.width > viewport.width ||\r\n tooltipBounds.top + tooltipBounds.height > viewport.height\r\n );\r\n }\r\n\r\n private positionLeft() {\r\n const { elBounds, tooltipBounds } = this.bounds;\r\n this.tooltipComponent!.instance.left = elBounds.left - tooltipBounds.width - this.offset;\r\n this.tooltipComponent!.instance.top = elBounds.top + elBounds.height / 2;\r\n this.tooltipComponent!.location.nativeElement.style.transform = 'translateY(-50%)';\r\n this.setBounds();\r\n }\r\n\r\n private positionRight() {\r\n const { elBounds } = this.bounds;\r\n this.tooltipComponent!.instance.left = elBounds.right + this.offset;\r\n this.tooltipComponent!.instance.top = elBounds.top + elBounds.height / 2;\r\n this.tooltipComponent!.location.nativeElement.style.transform = 'translateY(-50%)';\r\n this.setBounds();\r\n }\r\n\r\n private positionTop() {\r\n const { elBounds, tooltipBounds } = this.bounds;\r\n this.tooltipComponent!.instance.left = elBounds.left + elBounds.width / 2;\r\n this.tooltipComponent!.instance.top = elBounds.top - tooltipBounds.height - this.offset;\r\n this.tooltipComponent!.location.nativeElement.style.transform = 'translateX(-50%)';\r\n this.setBounds();\r\n }\r\n\r\n private positionBottom() {\r\n const { elBounds } = this.bounds;\r\n this.tooltipComponent!.instance.left = elBounds.left + elBounds.width / 2;\r\n this.tooltipComponent!.instance.top = elBounds.bottom + this.offset;\r\n this.tooltipComponent!.location.nativeElement.style.transform = 'translateX(-50%)';\r\n this.setBounds();\r\n }\r\n\r\n show(): void {\r\n if (!this.enabled || this.tooltipComponent) {\r\n return;\r\n }\r\n\r\n this.createTooltip();\r\n }\r\n\r\n hide(): void {\r\n if (!this.tooltipComponent) {\r\n return;\r\n }\r\n this.tooltipComponent.instance.close();\r\n const subscribe = this.tooltipComponent.instance.afterClose.subscribe(() => {\r\n if (!this.tooltipComponent) {\r\n return;\r\n }\r\n this.appRef.detachView(this.tooltipComponent!.hostView);\r\n this.tooltipComponent!.destroy();\r\n this.tooltipComponent = undefined;\r\n subscribe.unsubscribe();\r\n });\r\n }\r\n\r\n @HostListener('window:scroll')\r\n @HostListener('window:resize')\r\n onScroll() {\r\n this.hide();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.tooltipComponent) {\r\n try {\r\n this.appRef.detachView(this.tooltipComponent.hostView);\r\n } catch (error: unknown) {\r\n if (error === undefined) {\r\n return;\r\n }\r\n }\r\n this.tooltipComponent.destroy();\r\n this.tooltipComponent = undefined;\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './tooltip';\r\nexport * from './tooltip.directive';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n ElementRef,\r\n inject,\r\n input,\r\n InputSignal,\r\n output,\r\n OutputEmitterRef,\r\n Signal,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { clampProgress, IdGenerator } from '../../../utils';\r\nimport { UtilIconComponent } from '../../../utils/icon';\r\nimport { MonkeyDictionaryService } from '../../services/dictionary.service';\r\nimport { MonkeyTooltipDirective } from '../tooltip';\r\nimport { DownloadToastDictionary } from './download-toast.constants';\r\n\r\n@Component({\r\n selector: 'monkey-download-toast',\r\n imports: [UtilIconComponent, MonkeyTooltipDirective],\r\n templateUrl: './download-toast.component.html',\r\n styleUrl: './download-toast.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n 'data-testid': 'monkey-download-toast',\r\n role: 'status',\r\n '[attr.aria-live]': '\"polite\"',\r\n '[attr.aria-atomic]': '\"true\"',\r\n '[attr.aria-busy]': 'isBusy()',\r\n '[attr.id]': 'id()',\r\n '[id]': 'id()',\r\n '(animationend)': 'onAnimationEnd($event)',\r\n '(keydown.escape)': 'handleEscape()',\r\n tabindex: '0'\r\n }\r\n})\r\nexport class MonkeyDownloadToastComponent {\r\n readonly message: InputSignal<string> = input<string>('');\r\n\r\n readonly progress: InputSignal<number> = input<number, number>(0, {\r\n transform: (value: unknown): number => {\r\n return clampProgress(value);\r\n }\r\n });\r\n\r\n readonly id: InputSignal<string> = input<string>(\r\n inject(IdGenerator).getId('monkey-download-toast-')\r\n );\r\n\r\n readonly onCancel: OutputEmitterRef<void> = output<void>();\r\n\r\n readonly onClose: OutputEmitterRef<string> = output<string>();\r\n\r\n readonly onDownload: OutputEmitterRef<void> = output<void>();\r\n\r\n protected readonly dict: Signal<DownloadToastDictionary> = toSignal(\r\n inject(MonkeyDictionaryService).get('DOWNLOAD-TOAST'),\r\n { requireSync: true }\r\n );\r\n\r\n protected readonly displayMessage: Signal<string> = computed<string>((): string => {\r\n return this.message() || this.dict().defaultMessage;\r\n });\r\n\r\n protected readonly safeProgress: Signal<number> = computed<number>((): number => {\r\n return clampProgress(this.progress());\r\n });\r\n\r\n protected readonly isBusy: Signal<boolean> = computed<boolean>((): boolean => {\r\n return this.safeProgress() > 0 && this.safeProgress() < 100;\r\n });\r\n\r\n protected readonly isComplete: Signal<boolean> = computed<boolean>((): boolean => {\r\n return this.safeProgress() >= 100;\r\n });\r\n\r\n constructor(protected readonly host: ElementRef<HTMLElement>) {\r\n // not to do\r\n }\r\n\r\n protected handleEscape(): void {\r\n this.onCancelPressed();\r\n }\r\n\r\n protected onCancelPressed(): void {\r\n this.onCancel.emit();\r\n this.close();\r\n }\r\n\r\n protected onDownloadPressed(): void {\r\n this.onDownload.emit();\r\n }\r\n\r\n close(): void {\r\n this.host.nativeElement.classList.add('closed');\r\n }\r\n\r\n protected onAnimationEnd(event: AnimationEvent): void {\r\n if (event.animationName.includes('fade-out')) {\r\n this.onClose.emit(this.id());\r\n }\r\n }\r\n}","<div class=\"monkey-download-toast\">\n <div class=\"monkey-download-toast__icon-wrap\" aria-hidden=\"true\">\n <i class=\"mk-i mk-i-download fs-sm\"></i>\n </div>\n <div class=\"monkey-download-toast__content\">\n <div\n class=\"monkey-download-toast__title\"\n [attr.id]=\"id() + '-title'\"\n [monkeyTooltip]=\"displayMessage()\"\n tooltipPosition=\"top\"\n >\n {{ displayMessage() }}\n </div>\n <div\n class=\"monkey-download-toast__track\"\n role=\"progressbar\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-valuenow]=\"safeProgress()\"\n [attr.aria-labelledby]=\"id() + '-title'\"\n >\n <div class=\"monkey-download-toast__fill\" [style.width.%]=\"safeProgress()\"></div>\n </div>\n @if (isComplete()) {\n <button\n type=\"button\"\n class=\"monkey-download-toast__action monkey-download-toast__download\"\n [attr.aria-label]=\"dict().download\"\n (click)=\"onDownloadPressed()\"\n (keydown.enter)=\"onDownloadPressed()\"\n (keydown.space)=\"onDownloadPressed(); $event.preventDefault()\"\n >\n {{ dict().download }}\n </button>\n } @else {\n <button\n type=\"button\"\n class=\"monkey-download-toast__action monkey-download-toast__cancel\"\n [attr.aria-label]=\"dict().cancel\"\n (click)=\"onCancelPressed()\"\n (keydown.enter)=\"onCancelPressed()\"\n (keydown.space)=\"onCancelPressed(); $event.preventDefault()\"\n >\n {{ dict().cancel }}\n </button>\n }\n </div>\n <div class=\"monkey-download-toast__actions\">\n <div class=\"monkey-download-toast__divider\" aria-hidden=\"true\"></div>\n <button\n type=\"button\"\n class=\"monkey-download-toast__close\"\n [attr.aria-label]=\"dict().close\"\n (click)=\"onCancelPressed()\"\n >\n <util-icon name=\"clear\" aria-hidden=\"true\"></util-icon>\n </button>\n </div>\n</div>\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nexport const DOWNLOAD_TOAST_EXIT_MS = 200;\n\nexport interface DownloadToastDictionary {\n singular: string;\n plural: string;\n expand: string;\n defaultMessage: string;\n cancel: string;\n close: string;\n download: string;\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n input,\n InputSignal,\n signal,\n Signal,\n viewChild,\n ViewEncapsulation,\n WritableSignal\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { IdGenerator, unwrapSignal } from '../../../utils';\nimport { MonkeyDictionaryService } from '../../services/dictionary.service';\nimport { MOBILE_TOAST_MEDIA_QUERY } from '../../services/toast-overlay';\nimport { MonkeyDownloadToastComponent } from './download-toast.component';\nimport { DOWNLOAD_TOAST_EXIT_MS, DownloadToastDictionary } from './download-toast.constants';\n\nconst AUTO_COLLAPSE_MS = 3000;\n\nconst GAP = 14;\n\nconst VISIBLE_TOASTS = 3;\n\nexport interface DownloadStackItem {\n id: string;\n message: string;\n progress: number | Signal<number>;\n onCancel?: () => void;\n onDownload?: () => void;\n}\n\nexport type DownloadStackItemUpdate = Partial<Pick<DownloadStackItem, 'message' | 'progress'>>;\n\ninterface DownloadStackRow {\n item: DownloadStackItem;\n depth: number;\n leaving: boolean;\n}\n\n@Component({\n selector: 'monkey-download-toast-stack',\n imports: [MonkeyDownloadToastComponent],\n templateUrl: './download-toast-stack.component.html',\n styleUrl: './download-toast-stack.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'data-testid': 'monkey-download-toast-stack'\n }\n})\nexport class MonkeyDownloadToastStackComponent {\n protected readonly position: InputSignal<string> = input<string>('bottom-right');\n\n readonly items: WritableSignal<DownloadStackItem[]> = signal<DownloadStackItem[]>([]);\n\n readonly expanded: WritableSignal<boolean> = signal<boolean>(false);\n\n readonly isMobile: WritableSignal<boolean> = signal<boolean>(false);\n\n protected readonly dict: Signal<DownloadToastDictionary> = toSignal(\n inject(MonkeyDictionaryService).get('DOWNLOAD-TOAST'),\n { requireSync: true }\n );\n\n protected readonly maxVisible: number = VISIBLE_TOASTS;\n\n private readonly cardEl = viewChild('cardEl', { read: ElementRef<HTMLElement> });\n\n private readonly cardHeight: WritableSignal<number> = signal<number>(0);\n\n private readonly rendered: WritableSignal<DownloadStackItem[]> = signal<DownloadStackItem[]>([]);\n\n private readonly leavingDepth = new Map<string, number>();\n\n private readonly exitTimers = new Map<string, ReturnType<typeof setTimeout>>();\n\n private readonly count: Signal<number> = computed<number>((): number => {\n return this.items().length;\n });\n\n private collapseTimer?: ReturnType<typeof setTimeout>;\n\n private readonly mobileMediaQuery = MOBILE_TOAST_MEDIA_QUERY;\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n effect((onCleanup): void => {\n const ref = this.cardEl();\n\n if (!ref || typeof ResizeObserver === 'undefined') {\n return;\n }\n\n const el = ref.nativeElement;\n const observer = new ResizeObserver((): void => {\n const height = el.getBoundingClientRect().height;\n if (height > 0) {\n this.cardHeight.set(height);\n }\n });\n observer.observe(el);\n onCleanup((): void => {\n observer.disconnect();\n });\n });\n\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\n destroyRef.onDestroy((): void => {\n this.cancelAutoCollapse();\n this.cancelExits();\n });\n return;\n }\n\n const mediaList = window.matchMedia(this.mobileMediaQuery);\n this.isMobile.set(mediaList.matches);\n\n const onChange = (event: MediaQueryListEvent): void => {\n this.isMobile.set(event.matches);\n };\n mediaList.addEventListener('change', onChange);\n destroyRef.onDestroy((): void => {\n mediaList.removeEventListener('change', onChange);\n this.cancelAutoCollapse();\n this.cancelExits();\n });\n }\n\n protected readonly listId: string = inject(IdGenerator).getId('monkey-download-toast-list-');\n\n protected readonly hasItems: Signal<boolean> = computed<boolean>((): boolean => {\n return this.count() > 0;\n });\n\n protected readonly isCollapsible: Signal<boolean> = computed<boolean>((): boolean => {\n return this.count() > 1;\n });\n\n protected readonly isCollapsed: Signal<boolean> = computed<boolean>((): boolean => {\n return !this.expanded() && this.count() > 1;\n });\n\n protected readonly showCounter: Signal<boolean> = computed<boolean>((): boolean => {\n return this.count() > VISIBLE_TOASTS;\n });\n\n protected readonly rows: Signal<DownloadStackRow[]> = computed<DownloadStackRow[]>(() => {\n const alive = this.items();\n const total = alive.length;\n const live = new Map<string, DownloadStackRow>();\n\n alive.forEach((item: DownloadStackItem, index: number): void => {\n live.set(item.id, { item, depth: total - 1 - index, leaving: false });\n });\n\n return this.rendered().map((snapshot: DownloadStackItem): DownloadStackRow => {\n return (\n live.get(snapshot.id) ?? {\n item: snapshot,\n depth: this.leavingDepth.get(snapshot.id) ?? 0,\n leaving: true\n }\n );\n });\n });\n\n protected readonly stackStyle: Signal<Record<string, string>> = computed<Record<string, string>>(\n (): Record<string, string> => {\n const card = this.cardHeight();\n const visible = Math.min(this.count(), VISIBLE_TOASTS);\n\n if (!card || !visible) {\n return {};\n }\n\n const height = this.isCollapsed()\n ? card + GAP * (visible - 1)\n : card * visible + GAP * (visible - 1);\n\n return {\n '--mecx-download-toast-card': `${card}px`,\n '--mecx-download-toast-stack-height': `${height}px`\n };\n }\n );\n\n protected readonly headerLabel: Signal<string> = computed<string>((): string => {\n const count = this.count();\n const dict = this.dict();\n const noun = count === 1 ? dict.singular : dict.plural;\n\n return `${count} ${noun}`;\n });\n\n protected readonly expandLabel: Signal<string> = computed<string>((): string => {\n const count = this.count();\n const dict = this.dict();\n const noun = count === 1 ? dict.singular : dict.plural;\n\n return `${dict.expand} ${count} ${noun}`;\n });\n\n private supportsHover(): boolean {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\n return false;\n }\n return window.matchMedia('(hover: hover)').matches;\n }\n\n private cancelExits(): void {\n this.exitTimers.forEach((timer: ReturnType<typeof setTimeout>): void => {\n clearTimeout(timer);\n });\n this.exitTimers.clear();\n this.leavingDepth.clear();\n }\n\n private cancelAutoCollapse(): void {\n if (this.collapseTimer !== undefined) {\n clearTimeout(this.collapseTimer);\n this.collapseTimer = undefined;\n }\n }\n\n private scheduleAutoCollapse(): void {\n this.cancelAutoCollapse();\n this.collapseTimer = setTimeout((): void => {\n this.expanded.set(false);\n this.collapseTimer = undefined;\n }, AUTO_COLLAPSE_MS);\n }\n\n protected open(): void {\n if (!this.isCollapsible()) {\n return;\n }\n this.expanded.set(true);\n this.scheduleAutoCollapse();\n }\n\n protected onHoverIntent(): void {\n if (!this.supportsHover()) {\n return;\n }\n this.open();\n }\n\n protected onHoverMove(): void {\n if (this.expanded()) {\n return;\n }\n this.onHoverIntent();\n }\n\n protected onHoverLeave(): void {\n if (!this.supportsHover() || !this.isCollapsible()) {\n return;\n }\n this.cancelAutoCollapse();\n this.expanded.set(false);\n }\n\n protected toggleExpanded(): void {\n if (!this.isCollapsible()) {\n return;\n }\n if (this.expanded()) {\n this.cancelAutoCollapse();\n this.expanded.set(false);\n } else {\n this.open();\n }\n }\n\n add(item: DownloadStackItem): void {\n this.clearExit(item.id);\n this.items.update((list: DownloadStackItem[]): DownloadStackItem[] => {\n return [...list.filter((i: DownloadStackItem): boolean => i.id !== item.id), item];\n });\n this.rendered.update((list: DownloadStackItem[]): DownloadStackItem[] => {\n return [...list.filter((i: DownloadStackItem): boolean => i.id !== item.id), item];\n });\n if (this.count() > 1 && this.expanded()) {\n this.cancelAutoCollapse();\n this.expanded.set(false);\n }\n }\n\n update(id: string, changes: DownloadStackItemUpdate): void {\n this.items.update((list: DownloadStackItem[]): DownloadStackItem[] => {\n return list.map((i: DownloadStackItem): DownloadStackItem => {\n return i.id === id ? { ...i, ...changes } : i;\n });\n });\n }\n\n remove(id: string): void {\n const alive = this.items();\n const index = alive.findIndex((i: DownloadStackItem): boolean => i.id === id);\n\n if (index === -1) {\n return;\n }\n\n const current = alive[index];\n\n this.leavingDepth.set(id, alive.length - 1 - index);\n this.items.update((list: DownloadStackItem[]): DownloadStackItem[] => {\n return list.filter((i: DownloadStackItem): boolean => {\n return i.id !== id;\n });\n });\n this.rendered.update((list: DownloadStackItem[]): DownloadStackItem[] => {\n return list.map((i: DownloadStackItem): DownloadStackItem => {\n return i.id === id ? current : i;\n });\n });\n\n this.exitTimers.set(\n id,\n setTimeout((): void => {\n this.unmount(id);\n }, DOWNLOAD_TOAST_EXIT_MS)\n );\n\n if (this.count() <= 1 && this.expanded()) {\n this.cancelAutoCollapse();\n this.expanded.set(false);\n }\n }\n\n private unmount(id: string): void {\n this.rendered.update((list: DownloadStackItem[]): DownloadStackItem[] => {\n return list.filter((i: DownloadStackItem): boolean => {\n return i.id !== id;\n });\n });\n this.leavingDepth.delete(id);\n this.exitTimers.delete(id);\n }\n\n private clearExit(id: string): void {\n const timer = this.exitTimers.get(id);\n\n if (timer !== undefined) {\n clearTimeout(timer);\n this.exitTimers.delete(id);\n }\n this.leavingDepth.delete(id);\n }\n\n protected getProgress(item: DownloadStackItem): number {\n return unwrapSignal(item.progress);\n }\n\n protected handleCancel(item: DownloadStackItem): void {\n item.onCancel?.();\n this.remove(item.id);\n }\n\n protected handleDownload(item: DownloadStackItem): void {\n item.onDownload?.();\n }\n\n protected handleClose(id: string): void {\n const item = this.items().find((i: DownloadStackItem): boolean => {\n return i.id === id;\n });\n\n if (!item) {\n this.remove(id);\n return;\n }\n\n this.handleCancel(item);\n }\n}\n","<div\n class=\"monkey-download-toast-stack\"\n [attr.data-position]=\"position()\"\n [class.monkey-download-toast-stack--top]=\"position().startsWith('top')\"\n [class.monkey-download-toast-stack--collapsed]=\"isCollapsed()\"\n [style]=\"stackStyle()\"\n>\n <div class=\"monkey-download-toast-stack__header-wrap\" [class.has-items]=\"showCounter()\">\n @if (showCounter()) {\n <button\n type=\"button\"\n class=\"monkey-download-toast-stack__header monkey-download-toast-stack__header--toggle\"\n [attr.aria-expanded]=\"isCollapsed() ? 'false' : 'true'\"\n [attr.aria-controls]=\"listId\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n (mouseenter)=\"onHoverIntent()\"\n (focusin)=\"open()\"\n (click)=\"toggleExpanded()\"\n >\n {{ headerLabel() }}\n </button>\n }\n </div>\n <div\n class=\"monkey-download-toast-stack__list\"\n [class.has-items]=\"hasItems()\"\n [attr.id]=\"listId\"\n (mouseenter)=\"onHoverIntent()\"\n (mousemove)=\"onHoverMove()\"\n (mouseleave)=\"onHoverLeave()\"\n >\n @if (isCollapsed()) {\n <button\n type=\"button\"\n class=\"monkey-download-toast-stack__expand\"\n aria-expanded=\"false\"\n [attr.aria-controls]=\"listId\"\n [attr.aria-label]=\"expandLabel()\"\n (mouseenter)=\"onHoverIntent()\"\n (focusin)=\"open()\"\n (click)=\"toggleExpanded()\"\n ></button>\n }\n @for (row of rows(); track row.item.id) {\n <div\n class=\"monkey-download-toast-stack__item\"\n [class.monkey-download-toast-stack__item--behind]=\"\n !row.leaving && row.depth > 0 && isCollapsed()\n \"\n [class.monkey-download-toast-stack__item--hidden]=\"row.depth >= maxVisible\"\n [class.monkey-download-toast-stack__item--leaving]=\"row.leaving\"\n [attr.data-depth]=\"row.depth\"\n [attr.inert]=\"row.leaving || (row.depth > 0 && isCollapsed()) ? '' : null\"\n [attr.aria-hidden]=\"row.leaving || (row.depth > 0 && isCollapsed()) ? 'true' : null\"\n >\n <monkey-download-toast\n #cardEl\n [id]=\"row.item.id\"\n [message]=\"row.item.message\"\n [progress]=\"getProgress(row.item)\"\n (onCancel)=\"handleCancel(row.item)\"\n (onDownload)=\"handleDownload(row.item)\"\n (onClose)=\"handleClose($event)\"\n ></monkey-download-toast>\n </div>\n }\n </div>\n</div>\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport {\r\n ComponentRef,\r\n DestroyRef,\r\n effect,\r\n inject,\r\n Injectable,\r\n Injector,\r\n isSignal,\r\n Signal\r\n} from '@angular/core';\r\nimport { getRandomString } from '../../utils';\r\nimport {\r\n type DownloadStackItemUpdate,\r\n MonkeyDownloadToastStackComponent\r\n} from '../components/download-toast/download-toast-stack.component';\r\nimport { DOWNLOAD_TOAST_EXIT_MS } from '../components/download-toast/download-toast.constants';\r\nimport { type DownloadToastConfig, type MonkeyToastPosition } from '../interfaces';\r\nimport { createToastOverlay, MOBILE_TOAST_MEDIA_QUERY } from './toast-overlay';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MonkeyDownloadToastService {\r\n private overlay = inject(Overlay);\r\n\r\n private injector = inject(Injector);\r\n\r\n private downloadStacks = new Map<\r\n string,\r\n { overlayRef: OverlayRef; componentRef: ComponentRef<MonkeyDownloadToastStackComponent> }\r\n >();\r\n\r\n private effectHolders = new Map<string, { cleanup?: () => void }>();\r\n\r\n private handleStates = new Map<string, { disposed: boolean }>();\r\n\r\n private disposeTimers = new Map<string, ReturnType<typeof setTimeout>>();\r\n\r\n private closeTimers = new Map<string, ReturnType<typeof setTimeout>>();\r\n\r\n constructor() {\r\n const destroyRef = inject(DestroyRef);\r\n\r\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\r\n destroyRef.onDestroy((): void => {\r\n this.teardown();\r\n });\r\n return;\r\n }\r\n\r\n const mediaList = window.matchMedia(MOBILE_TOAST_MEDIA_QUERY);\r\n const repositionStacks = (): void => {\r\n this.downloadStacks.forEach((stack): void => {\r\n stack.overlayRef.updatePosition();\r\n });\r\n };\r\n mediaList.addEventListener('change', repositionStacks);\r\n destroyRef.onDestroy((): void => {\r\n mediaList.removeEventListener('change', repositionStacks);\r\n this.teardown();\r\n });\r\n }\r\n\r\n private teardown(): void {\r\n this.disposeTimers.forEach((timer): void => {\r\n clearTimeout(timer);\r\n });\r\n this.disposeTimers.clear();\r\n\r\n this.closeTimers.forEach((timer): void => {\r\n clearTimeout(timer);\r\n });\r\n this.closeTimers.clear();\r\n\r\n this.effectHolders.forEach((holder): void => {\r\n this.releaseEffect(holder);\r\n });\r\n this.effectHolders.clear();\r\n\r\n this.handleStates.forEach((state): void => {\r\n state.disposed = true;\r\n });\r\n this.handleStates.clear();\r\n\r\n this.downloadStacks.forEach((stack): void => {\r\n if (stack.overlayRef.hasAttached()) {\r\n stack.overlayRef.detach();\r\n }\r\n stack.overlayRef.dispose();\r\n });\r\n this.downloadStacks.clear();\r\n }\r\n\r\n private getStackKey(position?: MonkeyToastPosition): string {\r\n return position ?? 'bottom-right';\r\n }\r\n\r\n private cancelPendingDispose(key: string): void {\r\n const timer = this.disposeTimers.get(key);\r\n\r\n if (timer !== undefined) {\r\n clearTimeout(timer);\r\n this.disposeTimers.delete(key);\r\n }\r\n }\r\n\r\n private scheduleDispose(key: string, stackInstance: MonkeyDownloadToastStackComponent): void {\r\n this.cancelPendingDispose(key);\r\n this.disposeTimers.set(\r\n key,\r\n setTimeout((): void => {\r\n this.disposeTimers.delete(key);\r\n\r\n if (stackInstance.items().length !== 0) {\r\n return;\r\n }\r\n\r\n const stack = this.downloadStacks.get(key);\r\n\r\n if (!stack) {\r\n return;\r\n }\r\n\r\n if (stack.overlayRef.hasAttached()) {\r\n stack.overlayRef.detach();\r\n }\r\n stack.overlayRef.dispose();\r\n this.downloadStacks.delete(key);\r\n }, DOWNLOAD_TOAST_EXIT_MS)\r\n );\r\n }\r\n\r\n private getOrCreateDownloadStack(position?: MonkeyToastPosition): {\r\n overlayRef: OverlayRef;\r\n componentRef: ComponentRef<MonkeyDownloadToastStackComponent>;\r\n } {\r\n const key = this.getStackKey(position);\r\n const existing = this.downloadStacks.get(key);\r\n\r\n if (existing) {\r\n this.cancelPendingDispose(key);\r\n return existing;\r\n }\r\n\r\n this.cancelPendingDispose(key);\r\n\r\n const overlayRef = createToastOverlay(this.overlay, position);\r\n const portal = new ComponentPortal(MonkeyDownloadToastStackComponent);\r\n const componentRef = overlayRef.attach(portal);\r\n componentRef.setInput('position', key);\r\n this.downloadStacks.set(key, { overlayRef, componentRef });\r\n\r\n return { overlayRef, componentRef };\r\n }\r\n\r\n private buildDownloadItem(\r\n id: string,\r\n config: DownloadToastConfig,\r\n wrapperOnCancel: () => void\r\n ): {\r\n id: string;\r\n message: string;\r\n progress: number | Signal<number>;\r\n onCancel: () => void;\r\n onDownload?: () => void;\r\n } {\r\n return {\r\n id,\r\n message: config.message ?? '',\r\n progress: config.progress ?? 0,\r\n onCancel: wrapperOnCancel,\r\n onDownload: config.onDownload\r\n };\r\n }\r\n\r\n private releaseEffect(holder: { cleanup?: () => void }): void {\r\n if (holder.cleanup) {\r\n holder.cleanup();\r\n holder.cleanup = undefined;\r\n }\r\n }\r\n\r\n private tryDisposeEmptyStack(\r\n position: MonkeyToastPosition | undefined,\r\n stackInstance: MonkeyDownloadToastStackComponent\r\n ): void {\r\n if (stackInstance.items().length !== 0) {\r\n return;\r\n }\r\n this.scheduleDispose(this.getStackKey(position), stackInstance);\r\n }\r\n\r\n private buildDoRemove(\r\n stackInstance: MonkeyDownloadToastStackComponent,\r\n id: string,\r\n position: MonkeyToastPosition | undefined,\r\n holder: { cleanup?: () => void }\r\n ): () => void {\r\n return (): void => {\r\n stackInstance.remove(id);\r\n this.releaseEffect(holder);\r\n this.tryDisposeEmptyStack(position, stackInstance);\r\n };\r\n }\r\n\r\n private shouldAutoCloseOnComplete(config: DownloadToastConfig): boolean {\r\n return !config.keepOpen;\r\n }\r\n\r\n private cancelPendingClose(id: string): void {\r\n const timer = this.closeTimers.get(id);\r\n\r\n if (timer !== undefined) {\r\n clearTimeout(timer);\r\n this.closeTimers.delete(id);\r\n }\r\n }\r\n\r\n private scheduleClose(id: string, callback: () => void, duration?: number): void {\r\n this.cancelPendingClose(id);\r\n this.closeTimers.set(\r\n id,\r\n setTimeout(() => {\r\n this.closeTimers.delete(id);\r\n callback();\r\n }, duration ?? 4000)\r\n );\r\n }\r\n\r\n private setupSignalAutoClose(\r\n id: string,\r\n config: DownloadToastConfig,\r\n close: () => void\r\n ): (() => void) | undefined {\r\n if (!isSignal(config.progress)) {\r\n return undefined;\r\n }\r\n\r\n const signalProgress = config.progress as Signal<number>;\r\n const effectRef = effect(\r\n () => {\r\n const value = signalProgress();\r\n const isComplete = value >= 100;\r\n if (isComplete && this.shouldAutoCloseOnComplete(config)) {\r\n this.scheduleClose(id, close, config.duration);\r\n }\r\n },\r\n { injector: this.injector }\r\n );\r\n\r\n return (): void => {\r\n effectRef.destroy();\r\n this.cancelPendingClose(id);\r\n };\r\n }\r\n\r\n private scheduleNumberAutoClose(\r\n id: string,\r\n config: DownloadToastConfig,\r\n close: () => void\r\n ): void {\r\n const isNumberProgress = typeof config.progress === 'number';\r\n const isComplete = (config.progress as number) >= 100;\r\n\r\n if (isNumberProgress && isComplete && this.shouldAutoCloseOnComplete(config)) {\r\n this.scheduleClose(id, close, config.duration);\r\n }\r\n }\r\n\r\n private getEffectHolder(id: string): { cleanup?: () => void } {\r\n let holder = this.effectHolders.get(id);\r\n if (!holder) {\r\n holder = {};\r\n this.effectHolders.set(id, holder);\r\n }\r\n return holder;\r\n }\r\n\r\n private getHandleState(id: string): { disposed: boolean } {\r\n let state = this.handleStates.get(id);\r\n\r\n if (!state) {\r\n state = { disposed: false };\r\n this.handleStates.set(id, state);\r\n }\r\n\r\n return state;\r\n }\r\n\r\n private invalidateHandleStates(id: string): void {\r\n this.cancelPendingClose(id);\r\n\r\n const state = this.handleStates.get(id);\r\n if (state) {\r\n state.disposed = true;\r\n this.handleStates.delete(id);\r\n }\r\n }\r\n\r\n private findStackWithId(id: string):\r\n | {\r\n stackKey: string;\r\n stackInstance: MonkeyDownloadToastStackComponent;\r\n }\r\n | undefined {\r\n for (const [stackKey, stack] of this.downloadStacks) {\r\n const stackInstance = stack.componentRef.instance;\r\n const found = stackInstance.items().find((item) => item.id === id);\r\n if (found) {\r\n return { stackKey, stackInstance };\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n private disposeStackIfEmpty(\r\n stackKey: string,\r\n stackInstance: MonkeyDownloadToastStackComponent\r\n ): void {\r\n if (stackInstance.items().length !== 0) {\r\n return;\r\n }\r\n this.scheduleDispose(stackKey, stackInstance);\r\n }\r\n\r\n private removeById(id: string): void {\r\n const found = this.findStackWithId(id);\r\n if (!found) {\r\n return;\r\n }\r\n const holder = this.effectHolders.get(id);\r\n if (holder) {\r\n this.releaseEffect(holder);\r\n this.effectHolders.delete(id);\r\n }\r\n found.stackInstance.remove(id);\r\n this.invalidateHandleStates(id);\r\n this.disposeStackIfEmpty(found.stackKey, found.stackInstance);\r\n }\r\n\r\n show(config: DownloadToastConfig) {\r\n const { componentRef } = this.getOrCreateDownloadStack(config.position);\r\n const stackInstance = componentRef.instance;\r\n const existing = config.id\r\n ? stackInstance.items().find((item) => item.id === config.id)\r\n : undefined;\r\n\r\n const id = existing ? existing.id : (config.id ?? getRandomString(6));\r\n const effectHolder = this.getEffectHolder(id);\r\n this.releaseEffect(effectHolder);\r\n const doRemove = this.buildDoRemove(stackInstance, id, config.position, effectHolder);\r\n\r\n const state = this.getHandleState(id);\r\n\r\n const wrapperOnCancel = (): void => {\r\n doRemove();\r\n this.effectHolders.delete(id);\r\n this.invalidateHandleStates(id);\r\n config.onCancel?.();\r\n };\r\n\r\n const removeAndCleanup = (): void => {\r\n if (state.disposed) {\r\n return;\r\n }\r\n doRemove();\r\n this.effectHolders.delete(id);\r\n this.invalidateHandleStates(id);\r\n };\r\n\r\n if (existing) {\r\n stackInstance.update(existing.id, {\r\n message: config.message ?? existing.message,\r\n progress: config.progress ?? existing.progress\r\n });\r\n const current = stackInstance.items().find((item) => item.id === existing.id);\r\n if (current) {\r\n current.onCancel = wrapperOnCancel;\r\n }\r\n } else {\r\n const item = this.buildDownloadItem(id, config, wrapperOnCancel);\r\n stackInstance.add(item);\r\n }\r\n\r\n effectHolder.cleanup = this.setupSignalAutoClose(id, config, removeAndCleanup);\r\n this.scheduleNumberAutoClose(id, config, removeAndCleanup);\r\n\r\n return {\r\n id,\r\n close: (): void => {\r\n this.close(id);\r\n },\r\n update: (partial: DownloadStackItemUpdate): void => {\r\n if (state.disposed) {\r\n return;\r\n }\r\n const live = this.findStackWithId(id);\r\n if (!live) {\r\n return;\r\n }\r\n live.stackInstance.update(id, partial);\r\n }\r\n };\r\n }\r\n\r\n close(id: string): void {\r\n this.removeById(id);\r\n }\r\n\r\n update(id: string, partial: DownloadStackItemUpdate): void {\r\n const found = this.findStackWithId(id);\r\n if (!found) {\r\n return;\r\n }\r\n found.stackInstance.update(id, partial);\r\n }\r\n\r\n closeAll(): void {\r\n const ids: string[] = [];\r\n this.downloadStacks.forEach((stack): void => {\r\n stack.componentRef.instance.items().forEach((item): void => {\r\n ids.push(item.id);\r\n });\r\n });\r\n ids.forEach((id): void => {\r\n this.removeById(id);\r\n });\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { computed, Injectable, signal } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MonkeyStepperService {\r\n private _steppers = signal<Map<string, string>>(new Map());\r\n\r\n currentStep(id: string) {\r\n return computed(() => {\r\n return this._steppers().get(id);\r\n });\r\n }\r\n\r\n setCurrentStep(id: string, step: string): void {\r\n this._steppers.update((items) => {\r\n return new Map(items).set(id, step);\r\n });\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n inject,\r\n Input,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { UtilIconComponent } from '../../../utils';\r\nimport { IdGenerator } from '../../../utils/id-generator';\r\nimport { MonkeyButtonColor, MonkeyButtonType } from '../../interfaces/button';\r\nimport { MonkeySize } from '../../interfaces/sizes';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [UtilIconComponent],\r\n selector: 'monkey-button',\r\n standalone: true,\r\n styleUrl: './button.component.scss',\r\n templateUrl: './button.component.html',\r\n host: {\r\n 'data-testid': 'monkey-button',\r\n '[attr.id]': 'id',\r\n '[id]': 'id',\r\n '[attr.tabindex]': 'null'\r\n }\r\n})\r\nexport class MonkeyButtonComponent {\r\n @Input() disabled!: boolean;\r\n\r\n @Input() color: MonkeyButtonColor = 'default';\r\n\r\n @Input() size: MonkeySize = 'md';\r\n\r\n @Input() type: MonkeyButtonType = 'primary';\r\n\r\n @Input() loading!: boolean;\r\n\r\n @Input() nativeType: 'button' | 'submit' | 'reset' = 'submit';\r\n\r\n @Input() ariaLabel: string | null = null;\r\n\r\n @Input() ariaExpanded: boolean | null = null;\r\n\r\n @Input() ariaHasPopup: string | null = null;\r\n\r\n private readonly elementRef = inject(ElementRef);\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-button-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: MouseEvent): void {\r\n if (this.disabled) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n }\r\n }\r\n\r\n get element(): HTMLElement {\r\n return this.elementRef.nativeElement;\r\n }\r\n}\r\n","<button\r\n class=\"mecx-button {{ type }} {{ size }} {{ color }}\"\r\n [attr.type]=\"nativeType\"\r\n [disabled]=\"disabled || loading\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-expanded]=\"ariaExpanded\"\r\n [attr.aria-haspopup]=\"ariaHasPopup\"\r\n>\r\n <div class=\"content\">\r\n @if (!loading) {\r\n <ng-content select=\"[first]\"></ng-content>\r\n }\r\n <span><ng-content></ng-content></span>\r\n @if (!loading) {\r\n <ng-content select=\"[last]\"></ng-content>\r\n }\r\n @if (loading) {\r\n <util-icon class=\"mecx-button-loading\" name=\"loading\" />\r\n }\r\n </div>\r\n</button>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './button.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n booleanAttribute,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n inject,\r\n Input,\r\n Output,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { UtilIconComponent } from '../../../utils';\r\nimport { type MonkeyToastType } from '../../interfaces';\r\nimport { MonkeyButtonComponent } from '../button';\r\n\r\n@Component({\r\n selector: 'monkey-toast',\r\n imports: [MonkeyButtonComponent, UtilIconComponent],\r\n templateUrl: './toast.component.html',\r\n styleUrl: './toast.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n 'data-testid': 'monkey-toast',\r\n '(animationend)': 'onAnimationEnd($event)',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyToastComponent {\r\n @Input() message: string | undefined;\r\n\r\n @Input() icon: string | undefined = 'close-circle';\r\n\r\n @Input() type: MonkeyToastType = 'default';\r\n\r\n @Input({ transform: booleanAttribute }) isClosable: boolean = false;\r\n\r\n @Input() actionLabel: string | undefined;\r\n\r\n @Input() actionIcon: string | undefined;\r\n\r\n @Output() onActionClick = new EventEmitter<string>();\r\n\r\n @Output() onClose = new EventEmitter<string>();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-toast-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n @HostBinding('class')\r\n public get class(): string {\r\n return this.type;\r\n }\r\n\r\n constructor(private host: ElementRef<HTMLElement>) {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n close() {\r\n this.host.nativeElement.classList.add('closed');\r\n }\r\n\r\n onAnimationEnd(event: AnimationEvent) {\r\n if (event.animationName.includes('fade-out')) {\r\n this.onClose.emit(this.id);\r\n }\r\n }\r\n}\r\n","<div class=\"monkey-toast-content\">\r\n @if (icon) {\r\n <i class=\"mk-i mk-i-{{icon}} lg\"></i>\r\n }\r\n <div>\r\n <div class=\"monkey-toast-message\">\r\n {{ message }}\r\n </div>\r\n @if (actionLabel) {\r\n <div class=\"monkey-toast-action\">\r\n <monkey-button\r\n class=\"monkey-toast-btn-action\"\r\n type=\"tertiary\"\r\n size=\"sm\"\r\n (click)=\"onActionClick.emit(id)\"\r\n >\r\n {{ actionLabel }}\r\n @if (actionIcon) {\r\n <i class=\"mk-i mk-i-{{actionIcon}} xs\" first></i>\r\n }\r\n </monkey-button>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n@if (isClosable) {\r\n <div class=\"monkey-toast-actions\">\r\n <div class=\"monkey-toast-divider\" aria-hidden=\"true\"></div>\r\n <div class=\"monkey-toast-close\" (click)=\"close()\">\r\n <util-icon name=\"clear\" />\r\n </div>\r\n </div>\r\n}\r\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, DestroyRef, inject, Injectable } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { getRandomString } from '../../utils';\nimport { MonkeyToastComponent } from '../components/toast/toast.component';\nimport { type ToastConfig } from '../interfaces';\nimport { createToastOverlay } from './toast-overlay';\n\nconst TOAST_EXIT_MS = 300;\n\ninterface ActiveToast {\n overlayRef: OverlayRef;\n componentRef: ComponentRef<MonkeyToastComponent>;\n subscriptions: Subscription[];\n autoCloseTimer?: ReturnType<typeof setTimeout>;\n releaseTimer?: ReturnType<typeof setTimeout>;\n released: boolean;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MonkeyToastService {\n private overlay = inject(Overlay);\n\n private current?: ActiveToast;\n\n private activeToasts = new Set<ActiveToast>();\n\n constructor() {\n inject(DestroyRef).onDestroy((): void => {\n this.teardown();\n });\n }\n\n private teardown(): void {\n new Set(this.activeToasts).forEach((entry: ActiveToast): void => {\n this.release(entry);\n });\n this.activeToasts.clear();\n this.current = undefined;\n }\n\n private release(entry: ActiveToast): void {\n if (entry.released) {\n return;\n }\n entry.released = true;\n\n if (entry.autoCloseTimer !== undefined) {\n clearTimeout(entry.autoCloseTimer);\n entry.autoCloseTimer = undefined;\n }\n\n if (entry.releaseTimer !== undefined) {\n clearTimeout(entry.releaseTimer);\n entry.releaseTimer = undefined;\n }\n\n entry.subscriptions.forEach((subscription: Subscription): void => {\n subscription.unsubscribe();\n });\n entry.subscriptions.length = 0;\n\n if (entry.overlayRef.hasAttached()) {\n entry.overlayRef.detach();\n }\n entry.overlayRef.dispose();\n\n this.activeToasts.delete(entry);\n\n if (this.current === entry) {\n this.current = undefined;\n }\n }\n\n private requestClose(entry: ActiveToast): void {\n if (entry.released) {\n return;\n }\n\n entry.componentRef.instance.close();\n\n if (entry.releaseTimer !== undefined) {\n return;\n }\n\n entry.releaseTimer = setTimeout((): void => {\n entry.releaseTimer = undefined;\n this.release(entry);\n }, TOAST_EXIT_MS);\n }\n\n private closePreviousToastIfNeeded(): void {\n if (this.current) {\n this.requestClose(this.current);\n }\n }\n\n private configureToastInstance(\n componentRef: ComponentRef<MonkeyToastComponent>,\n toastConfig: ToastConfig\n ): void {\n componentRef.instance.id = getRandomString(6);\n componentRef.instance.type = toastConfig.type ?? 'default';\n componentRef.instance.icon = toastConfig.icon;\n componentRef.instance.isClosable = toastConfig.isClosable ?? false;\n componentRef.instance.message = toastConfig.message;\n componentRef.instance.actionLabel = toastConfig.actionLabel;\n componentRef.instance.actionIcon = toastConfig.actionIcon;\n }\n\n private bindToastAction(entry: ActiveToast, toastConfig: ToastConfig): void {\n entry.subscriptions.push(\n entry.componentRef.instance.onActionClick.subscribe((): void => {\n if (!toastConfig.action) {\n return;\n }\n toastConfig.action();\n this.closeToastIfNeeded(entry, toastConfig);\n })\n );\n }\n\n private closeToastIfNeeded(entry: ActiveToast, toastConfig: ToastConfig): void {\n const shouldClose = toastConfig.closeOnAction ?? true;\n if (shouldClose) {\n this.requestClose(entry);\n }\n }\n\n private bindToastRelease(entry: ActiveToast): void {\n entry.subscriptions.push(\n entry.componentRef.instance.onClose.subscribe((): void => {\n this.release(entry);\n })\n );\n }\n\n private scheduleToastAutoClose(entry: ActiveToast, toastConfig: ToastConfig): void {\n if (toastConfig.keepOpen) {\n return;\n }\n entry.autoCloseTimer = setTimeout((): void => {\n entry.autoCloseTimer = undefined;\n this.requestClose(entry);\n }, toastConfig.duration ?? 4000);\n }\n\n show(toastConfig: ToastConfig) {\n this.closePreviousToastIfNeeded();\n\n const overlayRef = createToastOverlay(this.overlay, toastConfig.position);\n const portal = new ComponentPortal(MonkeyToastComponent);\n const componentRef = overlayRef.attach(portal);\n const entry: ActiveToast = {\n overlayRef,\n componentRef,\n subscriptions: [],\n released: false\n };\n\n this.activeToasts.add(entry);\n this.current = entry;\n\n this.configureToastInstance(componentRef, toastConfig);\n this.bindToastAction(entry, toastConfig);\n this.bindToastRelease(entry);\n this.scheduleToastAutoClose(entry, toastConfig);\n\n return componentRef.instance;\n }\n}\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './address.service';\r\nexport * from './dictionary.service';\r\nexport * from './download-toast.service';\r\nexport * from './stepper.service';\r\nexport * from './toast.service';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive } from '@angular/core';\r\nimport { AbstractControlDirective, NgControl } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Directive()\r\nexport abstract class MonkeyFormFieldControl {\r\n readonly id!: string;\r\n\r\n readonly ngControl!: NgControl | AbstractControlDirective | null;\r\n\r\n readonly disabled!: boolean;\r\n\r\n readonly focused!: boolean;\r\n\r\n readonly stateChanges!: Observable<void>;\r\n\r\n readonly type?: string;\r\n\r\n readonly currency?: boolean;\r\n\r\n readonly percent?: boolean;\r\n\r\n abstract onContainerClick(event: MouseEvent): void;\r\n\r\n abstract onClear?(): void;\r\n\r\n loading?: boolean;\r\n\r\n disableToBeDirty?: boolean;\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { computed, Directive, effect, ElementRef, inject, input } from '@angular/core';\r\nimport { firstValueFrom } from 'rxjs';\r\nimport { MonkeyDictionaryService } from '../services/dictionary.service';\r\n\r\n@Directive({\r\n selector: 'monkey-display'\r\n})\r\nexport class MonkeyDisplayDirective {\r\n private fallbackText = 'Not provided';\r\n\r\n readonly i18nDictionary = inject(MonkeyDictionaryService).get('NOT-PROVIDED');\r\n\r\n displayValue = input.required<string>();\r\n\r\n private displayedText = computed(() => {\r\n const value = this.displayValue();\r\n\r\n if (value === null || value === undefined || value === '') {\r\n return this.fallbackText;\r\n }\r\n\r\n return String(value);\r\n });\r\n\r\n constructor(private el: ElementRef<HTMLElement>) {\r\n effect(async () => {\r\n this.el.nativeElement.innerHTML = this.displayedText();\r\n this.fallbackText = await firstValueFrom(this.i18nDictionary);\r\n });\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'monkey-error'\r\n})\r\nexport class MonkeyErrorDirective {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'monkey-helper'\r\n})\r\nexport class MonkeyHelperDirective {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'monkey-info'\r\n})\r\nexport class MonkeyInfoDirective {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'monkey-label'\r\n})\r\nexport class MonkeyLabelDirective {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'monkey-prefix'\r\n})\r\nexport class MonkeyPrefixDirective {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive, HostListener, Input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'monkey-suffix',\r\n host: {\r\n '[class.has-action]': 'hasAction'\r\n }\r\n})\r\nexport class MonkeySuffixDirective {\r\n @Input('hasAction')\r\n set _hasAction(value: '') {\r\n this.hasAction = true;\r\n }\r\n\r\n hasAction = false;\r\n\r\n action: Function | null = null;\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: PointerEvent): void {\r\n if (!this.action) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n } else {\r\n this.action(event);\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport function getCurrencySymbol(code: string) {\r\n const currency = code || 'BRL';\r\n\r\n const symbol = {\r\n BRL: 'R$',\r\n CLP: '$',\r\n MXN: '$',\r\n USD: '$'\r\n }[currency];\r\n\r\n return symbol;\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentChecked,\r\n AfterContentInit,\r\n booleanAttribute,\r\n ChangeDetectorRef,\r\n Component,\r\n computed,\r\n contentChild,\r\n contentChildren,\r\n DEFAULT_CURRENCY_CODE,\r\n DestroyRef,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n Input,\r\n OnDestroy,\r\n output,\r\n signal,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { Subscription } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyDisplayDirective } from '../../directives/display';\r\nimport { MonkeyErrorDirective } from '../../directives/error';\r\nimport { MonkeyHelperDirective } from '../../directives/helper';\r\nimport { MonkeyInfoDirective } from '../../directives/info';\r\nimport { MonkeyLabelDirective } from '../../directives/label';\r\nimport { MonkeyPrefixDirective } from '../../directives/prefix';\r\nimport { MonkeySuffixDirective } from '../../directives/suffix';\r\nimport { MonkeySize } from '../../interfaces';\r\nimport { MonkeyDictionaryService } from '../../services';\r\nimport { MonkeyFormFieldControl } from './form-field-control';\r\nimport { getCurrencySymbol } from './utils';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-form-field',\r\n exportAs: 'monkeyFormField',\r\n templateUrl: './form-field.component.html',\r\n styleUrl: './form-field.component.scss',\r\n host: {\r\n class: 'mecx-form-field',\r\n '[class.mecx-disabled]': 'control.disabled',\r\n '[class.mecx-form-field-focused]': 'control.focused',\r\n '[class.mecx-form-field-invalid]': 'showInvalid',\r\n '[class.mecx-form-field-borderless]': 'hideBorder()',\r\n '[class.no-footer-space]': 'noFooterSpace()',\r\n '[attr.id]': 'id',\r\n '[id]': 'id',\r\n '[class]': 'size'\r\n },\r\n standalone: false\r\n})\r\nexport class MonkeyFormFieldComponent implements AfterContentInit, AfterContentChecked, OnDestroy {\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideAction!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n enableClear!: boolean;\r\n\r\n @Input() size: MonkeySize = 'md';\r\n\r\n readonly noFooterSpace = input(false, { transform: booleanAttribute });\r\n\r\n displayOnly = input<boolean>(false);\r\n\r\n onDisplayOnlyChange = output<boolean>();\r\n\r\n private readonly _formFieldControl = contentChild(MonkeyFormFieldControl, { descendants: true });\r\n\r\n private readonly _displayChild = contentChild(MonkeyDisplayDirective, { descendants: true });\r\n\r\n private readonly _labelChildren = contentChildren(MonkeyLabelDirective, { descendants: true });\r\n\r\n private readonly _helperChildren = contentChildren(MonkeyHelperDirective, { descendants: true });\r\n\r\n private readonly _prefixChildren = contentChildren(MonkeyPrefixDirective, { descendants: true });\r\n\r\n private readonly _suffixChildren = contentChildren(MonkeySuffixDirective, { descendants: true });\r\n\r\n private readonly _infoChildren = contentChildren(MonkeyInfoDirective, { descendants: true });\r\n\r\n private readonly _errorChildren = contentChildren(MonkeyErrorDirective, { descendants: true });\r\n\r\n public elementRef = inject(ElementRef);\r\n\r\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n private readonly _idGenerator = inject(IdGenerator);\r\n\r\n private readonly _labelId = this._idGenerator.getId('monkey-label-');\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-form-field-');\r\n\r\n protected _id!: string;\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private _isFocused: boolean | null = null;\r\n\r\n private _previousControl: MonkeyFormFieldControl | null = null;\r\n\r\n private _stateChanges: Subscription | undefined;\r\n\r\n private _valueChanges: Subscription | undefined;\r\n\r\n readonly currencySymbol = getCurrencySymbol(inject(DEFAULT_CURRENCY_CODE));\r\n\r\n readonly percentSymbol = '%';\r\n\r\n readonly hasLabel = computed(() => this._labelChildren().length > 0);\r\n\r\n readonly hasHelper = computed(() => this._helperChildren().length > 0);\r\n\r\n readonly hasPrefix = computed(() => this._prefixChildren().length > 0);\r\n\r\n readonly hasSuffix = computed(() => this._suffixChildren().length > 0);\r\n\r\n readonly hasInfo = computed(() => this._infoChildren().length > 0);\r\n\r\n readonly hasError = computed(() => this._errorChildren().length > 0);\r\n\r\n readonly showHeader = computed(() => this.hasLabel() || this.hasHelper());\r\n\r\n readonly showFooter = computed(() => {\r\n return !this.noFooterSpace() || this.hasInfo() || this.hasError();\r\n });\r\n\r\n get control(): MonkeyFormFieldControl {\r\n return this._formFieldControl()!;\r\n }\r\n\r\n get labelId(): string {\r\n return this._labelId;\r\n }\r\n\r\n hideBorder = computed(() => {\r\n const { control } = this;\r\n return (\r\n control?.type === 'input-code' ||\r\n control?.type === 'radio-button' ||\r\n this.internalDisplayOnly()\r\n );\r\n });\r\n\r\n get showInvalid(): boolean {\r\n if (this.showLoading) {\r\n return false;\r\n }\r\n const touched = this.control.ngControl?.touched || false;\r\n const invalid = this.control.ngControl?.invalid || false;\r\n return (\r\n this.hasError() && !this._isFocused && touched && invalid && !this.control.disableToBeDirty\r\n );\r\n }\r\n\r\n showClear = computed(() => {\r\n return (\r\n !!this.control.ngControl?.control?.value &&\r\n !this.control.disabled &&\r\n !this.control.loading &&\r\n (!this.hideAction || this.enableClear) &&\r\n !this.displayOnly()\r\n );\r\n });\r\n\r\n get showCalendar(): boolean {\r\n return this.control.type === 'date' && !this.hideAction;\r\n }\r\n\r\n get showCurrency(): boolean {\r\n return this.control.currency || false;\r\n }\r\n\r\n get showPercent(): boolean {\r\n return this.control.percent || false;\r\n }\r\n\r\n get showLoading(): boolean {\r\n return this.control.loading || false;\r\n }\r\n\r\n internalDisplayOnly = signal<boolean>(this.displayOnly());\r\n\r\n readonly editDictionary = inject(MonkeyDictionaryService).get('EDIT');\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n\r\n effect(() => {\r\n const value = this.displayOnly();\r\n this.internalDisplayOnly.set(value);\r\n });\r\n\r\n effect(() => {\r\n const suffix = this._suffixChildren()[0];\r\n if (!suffix) {\r\n return;\r\n }\r\n\r\n suffix.action = (event: Event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n };\r\n });\r\n }\r\n\r\n private updateFocusState() {\r\n if (this.control.focused && !this._isFocused) {\r\n this._isFocused = true;\r\n } else if (!this.control.focused && (this._isFocused || this._isFocused === null)) {\r\n this._isFocused = false;\r\n }\r\n }\r\n\r\n private handleFormFieldControl() {\r\n if (!this.control) {\r\n throw Error('monkey-form-field must have a MonkeyFormFieldControl');\r\n }\r\n }\r\n\r\n private initializeControl() {\r\n const { control } = this;\r\n\r\n this._stateChanges?.unsubscribe();\r\n this._stateChanges = control.stateChanges.subscribe(() => {\r\n this.updateFocusState();\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n\r\n this._valueChanges?.unsubscribe();\r\n\r\n if (control.ngControl && control.ngControl.valueChanges) {\r\n this._valueChanges = control.ngControl.valueChanges\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(() => {\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n private openDatePicker() {\r\n const input: any = document.getElementById(this.control.id);\r\n if (input.showPicker) {\r\n input.showPicker();\r\n } else {\r\n input.focus();\r\n }\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.handleFormFieldControl();\r\n\r\n if (this.displayOnly() && !this._displayChild()) {\r\n throw new Error(\r\n 'monkey-form-field: When `displayOnly` is true, a <monkey-display> element is required inside.'\r\n );\r\n }\r\n }\r\n\r\n ngAfterContentChecked() {\r\n this.handleFormFieldControl();\r\n\r\n if (this.control !== this._previousControl) {\r\n this.initializeControl();\r\n this._previousControl = this.control;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this._stateChanges?.unsubscribe();\r\n this._valueChanges?.unsubscribe();\r\n }\r\n\r\n getFooterMessages(): 'info' | 'error' | '' {\r\n const touched = this.control.ngControl?.touched;\r\n const invalid = this.control.ngControl?.invalid;\r\n const isFocused = this._isFocused;\r\n const hasInfoChildren = this._infoChildren().length > 0;\r\n\r\n const isControlEnabled = !this.control.disabled;\r\n const isControlDisableToBeDirty = !this.control.disableToBeDirty;\r\n const isTouched = touched;\r\n const isInvalid = invalid;\r\n const isNotFocused = !isFocused;\r\n\r\n if (\r\n !this.showLoading &&\r\n isControlEnabled &&\r\n isTouched &&\r\n isInvalid &&\r\n isNotFocused &&\r\n isControlDisableToBeDirty\r\n ) {\r\n return 'error';\r\n }\r\n\r\n if (hasInfoChildren) {\r\n return 'info';\r\n }\r\n\r\n return '';\r\n }\r\n\r\n getSymbols(): string {\r\n if (this.showCurrency && this.currencySymbol) {\r\n return this.currencySymbol;\r\n }\r\n if (this.showPercent && this.percentSymbol) {\r\n return this.percentSymbol;\r\n }\r\n\r\n return '';\r\n }\r\n\r\n onClear(event: MouseEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.control.ngControl?.control?.setValue('');\r\n this.control.ngControl?.control?.markAsTouched();\r\n this.control?.onClear?.();\r\n }\r\n\r\n onOpenCalendar(event: MouseEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (this.control.type === 'date') {\r\n this.openDatePicker();\r\n }\r\n }\r\n\r\n onCancelDisplayOnly(event: MouseEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.internalDisplayOnly.set(false);\r\n this.onDisplayOnlyChange.emit(false);\r\n setTimeout(() => {\r\n this.control.onContainerClick(event);\r\n }, 0);\r\n }\r\n}\r\n","@if (internalDisplayOnly()) {\r\n <div class=\"mecx-form-field-display-only\" (click)=\"onCancelDisplayOnly($event)\">\r\n <div class=\"mecx-form-field-display-only-header\">\r\n <ng-container *ngTemplateOutlet=\"labelTpl\"></ng-container>\r\n </div>\r\n <div class=\"mecx-form-field-display-only-body\">\r\n <ng-content select=\"monkey-display\"></ng-content>\r\n </div>\r\n <div class=\"mecx-form-field-display-only-action\">\r\n {{ editDictionary | async }} <util-icon name=\"edit\" />\r\n </div>\r\n </div>\r\n} @else {\r\n @if (showHeader()) {\r\n <div class=\"mecx-form-field-header\" (click)=\"control.onContainerClick($event)\">\r\n <label [id]=\"labelId\" [attr.for]=\"control.id\">\r\n <ng-container *ngTemplateOutlet=\"labelTpl\"></ng-container>\r\n </label>\r\n <ng-content select=\"monkey-helper\"></ng-content>\r\n </div>\r\n }\r\n\r\n <div class=\"mecx-form-field-body\" (click)=\"control.onContainerClick($event)\">\r\n @if (hasPrefix()) {\r\n <ng-content select=\"monkey-prefix\"></ng-content>\r\n }\r\n @if (getSymbols(); as symbols) {\r\n <div class=\"mecx-form-field-prefix-symbol\">\r\n {{ symbols }}\r\n </div>\r\n }\r\n\r\n <ng-content></ng-content>\r\n\r\n @if (showClear()) {\r\n <util-icon class=\"mecx-clear\" name=\"clear\" (click)=\"onClear($event)\" />\r\n }\r\n @if (showCalendar) {\r\n <util-icon class=\"mecx-calendar\" name=\"calendar\" (click)=\"onOpenCalendar($event)\" />\r\n }\r\n @if (showLoading) {\r\n <util-icon class=\"mecx-form-field-loading\" name=\"loading\" />\r\n }\r\n\r\n @if (hasSuffix()) {\r\n <ng-content select=\"monkey-suffix\"></ng-content>\r\n }\r\n </div>\r\n\r\n @if (showFooter()) {\r\n <div class=\"mecx-form-field-footer\" (click)=\"control.onContainerClick($event)\">\r\n @switch (getFooterMessages()) {\r\n @case ('error') {\r\n <ng-content select=\"monkey-error\"></ng-content>\r\n }\r\n @case ('info') {\r\n <div class=\"mecx-form-field-info\">\r\n <ng-content select=\"monkey-info\"></ng-content>\r\n </div>\r\n }\r\n }\r\n </div>\r\n }\r\n}\r\n\r\n<ng-template #labelTpl>\r\n <ng-content select=\"monkey-label\"></ng-content>\r\n</ng-template>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { UtilIconComponent } from '../../../utils';\r\nimport { MonkeyFormFieldComponent } from './form-field.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule, UtilIconComponent],\r\n declarations: [MonkeyFormFieldComponent],\r\n exports: [MonkeyFormFieldComponent]\r\n})\r\nexport class MonkeyFormFieldModule {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './form-field-control';\r\nexport * from './form-field.component';\r\nexport * from './form-field.module';\r\nexport * from './utils';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n booleanAttribute,\r\n Component,\r\n computed,\r\n effect,\r\n ElementRef,\r\n HostListener,\r\n inject,\r\n Input,\r\n input,\r\n signal,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\nimport { MonkeySize } from '../../interfaces/sizes';\r\n\r\n@Component({\r\n selector: 'monkey-option',\r\n standalone: true,\r\n imports: [UtilIconComponent],\r\n template: `\r\n @if (type === 'checkbox') {\r\n <span class=\"mecx-option-checkbox\">\r\n <util-icon class=\"icon\" name=\"check\" />\r\n </span>\r\n }\r\n <div #content><ng-content /></div>\r\n `,\r\n styleUrls: ['./option.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n 'data-testid': 'monkey-option',\r\n '[attr.id]': 'id',\r\n class: 'mecx-option',\r\n '[class.mecx-option-disabled]': 'disabled',\r\n '[class.mecx-option-selected]': 'isSelected()',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '[class]': 'hostClasses'\r\n }\r\n})\r\nexport class MonkeyOptionComponent {\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n @ViewChild('content', { static: true }) _content: ElementRef<HTMLElement> | undefined;\r\n\r\n readonly value = input<any>();\r\n\r\n @Input({ transform: booleanAttribute }) disabled = false;\r\n\r\n @Input() type = 'select';\r\n\r\n readonly size = input<MonkeySize | undefined>(undefined);\r\n\r\n protected get hostClasses(): string {\r\n const size = this.size();\r\n\r\n return size ? `${this.type} ${size}` : this.type;\r\n }\r\n\r\n get displayContent(): string {\r\n return (this._content?.nativeElement.textContent || '').trim();\r\n }\r\n\r\n selected = input<boolean>(false);\r\n\r\n tabIndex = 0;\r\n\r\n action!: Function;\r\n\r\n isSelected = computed(() => {\r\n return this._selectedState();\r\n });\r\n\r\n readonly id: string = this.idGenerator.getId('mecx-option-');\r\n\r\n private _selectedState = signal(false);\r\n\r\n private handleAction(event: MouseEvent | KeyboardEvent) {\r\n if (this.disabled) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n } else {\r\n this.action?.();\r\n }\r\n }\r\n\r\n constructor() {\r\n effect(() => {\r\n this._selectedState.set(this.selected());\r\n });\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: MouseEvent): void {\r\n this.handleAction(event);\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n handleKeyDown(event: KeyboardEvent): void {\r\n const { key } = event;\r\n\r\n if (key === 'Enter' || key === ' ') {\r\n this.handleAction(event);\r\n }\r\n }\r\n\r\n onSelect(select: boolean) {\r\n this._selectedState.set(select);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './option.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnDestroy,\r\n Optional,\r\n Output,\r\n TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n ReactiveFormsModule,\r\n Validators\r\n} from '@angular/forms';\r\nimport {\r\n catchError,\r\n debounceTime,\r\n distinctUntilChanged,\r\n Observable,\r\n of,\r\n Subject,\r\n switchMap\r\n} from 'rxjs';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\nimport { MonkeyPopoverDirective } from '../../directives/popover';\r\nimport { MonkeyAutocompleteData, MonkeyAutocompleteResponse } from '../../interfaces';\r\nimport { MonkeyDictionaryService } from '../../services';\r\nimport {\r\n MonkeyFormFieldComponent,\r\n MonkeyFormFieldControl,\r\n MonkeyFormFieldModule\r\n} from '../form-field';\r\nimport { MonkeyOptionComponent } from '../option';\r\n\r\n@Component({\r\n selector: 'monkey-autocomplete',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MonkeyFormFieldModule,\r\n MonkeyPopoverDirective,\r\n MonkeyOptionComponent,\r\n UtilIconComponent\r\n ],\r\n template: `\r\n <input\r\n #input\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n class=\"mecx-input\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"placeholder\"\r\n (input)=\"onInputChange($event)\"\r\n (focus)=\"_onFocus()\"\r\n (blur)=\"_onBlur($event)\"\r\n [attr.id]=\"inputId\"\r\n [(ngModel)]=\"searchData\"\r\n />\r\n\r\n <ng-template\r\n [monkeyPopover]=\"showPopOver\"\r\n [monkeyPopoverTarget]=\"elementTarget\"\r\n [monkeyPopoverClosed]=\"closePopOver\"\r\n monkeyPopoverDir=\"ltr\"\r\n [monkeyPopoverBackdrop]=\"false\"\r\n [monkeyPopoverHideHeader]=\"true\"\r\n [monkeyPopoverWatch]=\"true\"\r\n >\r\n <div\r\n #containerWrapper\r\n class=\"mecx-autocomplete-wrapper\"\r\n [style.width.px]=\"initialDisplayWidth\"\r\n >\r\n @if (options.length > 0) {\r\n <div class=\"mecx-autocomplete-options\">\r\n @for (option of options; track option) {\r\n <div\r\n class=\"mecx-autocomplete-option\"\r\n (click)=\"onSelect(option)\"\r\n [class.mecx-autocomplete-selected]=\"isSelected(option)\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n optionTemplate || defaultTemplate;\r\n context: { $implicit: option }\r\n \"\r\n >\r\n </ng-container>\r\n </div>\r\n }\r\n </div>\r\n }\r\n @if (loading) {\r\n <div class=\"mecx-autocomplete-loading\">\r\n <util-icon name=\"loading\" />\r\n {{ loadingDictionary | async }}\r\n </div>\r\n }\r\n @if (!loading && !options.length) {\r\n <div class=\"mecx-autocomplete-no-data\">\r\n <util-icon class=\"mecx-autocomplete-no-data-icon\" name=\"searchFail\" />\r\n {{ noDataDictionary | async }}\r\n </div>\r\n }\r\n </div>\r\n\r\n <ng-template #defaultTemplate let-option>\r\n <monkey-option>\r\n {{ option.description }}\r\n </monkey-option>\r\n </ng-template>\r\n </ng-template>\r\n `,\r\n styleUrl: './autocomplete.component.scss',\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyAutocompleteComponent }\r\n ],\r\n host: {\r\n '[attr.data-testid]': \"'monkey-autocomplete'\",\r\n class: 'mecx-autocomplete',\r\n '[class.mecx-autocomplete-disabled]': '_disabled',\r\n '[class.mecx-autocomplete-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur($event)'\r\n }\r\n})\r\nexport class MonkeyAutocompleteComponent\r\n implements MonkeyFormFieldControl, ControlValueAccessor, AfterContentInit, OnDestroy\r\n{\r\n @Input({ required: true }) placeholder!: string;\r\n\r\n @Input() debounce = 300;\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Input() fetchOptions!: (queryOrLink: string | any) => Observable<MonkeyAutocompleteResponse>;\r\n\r\n @Output() onChange = new EventEmitter();\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _disabled: boolean = false;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n // this.handleValue(value);\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value: string | null = null;\r\n\r\n constructor(\r\n @Optional() public formField: MonkeyFormFieldComponent,\r\n private changeDetectorRef: ChangeDetectorRef\r\n ) {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-autocomplete-');\r\n\r\n readonly inputId: string = this.idGenerator.getId('monkey-autocomplete-input-');\r\n\r\n focused: boolean = false;\r\n\r\n readonly type: string = 'autocomplete';\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n get elementTarget() {\r\n if (this.formField?.elementRef) {\r\n return this.formField?.elementRef.nativeElement.querySelector('.mecx-form-field-body');\r\n }\r\n\r\n return this._elementRef?.nativeElement;\r\n }\r\n\r\n private _searchEvent = new EventEmitter();\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private _resizeObserver?: ResizeObserver;\r\n\r\n initialDisplayWidth = 0;\r\n\r\n showPopOver = false;\r\n\r\n options: MonkeyAutocompleteData[] = [];\r\n\r\n readonly loadingDictionary = inject(MonkeyDictionaryService).get('LOADING');\r\n\r\n readonly noDataDictionary = inject(MonkeyDictionaryService).get('NO-DATA');\r\n\r\n loading = false;\r\n\r\n searchData = '';\r\n\r\n @ContentChild('optionTemplate', { static: false }) optionTemplate?: TemplateRef<any>;\r\n\r\n @ViewChild('containerWrapper') containerWrapper!: ElementRef;\r\n\r\n private updateWidth() {\r\n this.initialDisplayWidth = (this.elementTarget?.offsetWidth || 0) - 12;\r\n }\r\n\r\n closePopOver = () => {\r\n setTimeout(() => {\r\n this.focused = false;\r\n this.showPopOver = false;\r\n this.changeDetectorRef.markForCheck();\r\n });\r\n };\r\n\r\n ngAfterContentInit(): void {\r\n this._searchEvent\r\n ?.pipe(\r\n debounceTime(this.debounce),\r\n distinctUntilChanged((prev, current) => {\r\n if (prev === current) {\r\n this.loading = false;\r\n }\r\n\r\n return prev === current;\r\n }),\r\n switchMap((query) => {\r\n return this.fetchOptions\r\n ? this.fetchOptions(query || '').pipe(\r\n catchError(() => {\r\n return of({ data: [] });\r\n })\r\n )\r\n : of({ data: [] });\r\n }),\r\n takeUntilDestroyed(this._destroyRef)\r\n )\r\n .subscribe({\r\n next: (result: MonkeyAutocompleteResponse) => {\r\n this.openPopOver();\r\n this.options = result.data;\r\n this.loading = false;\r\n }\r\n });\r\n\r\n this._resizeObserver = new ResizeObserver(() => {\r\n return this.updateWidth();\r\n });\r\n this._resizeObserver.observe(this._elementRef.nativeElement);\r\n this.updateWidth();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._resizeObserver?.disconnect();\r\n }\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n event.preventDefault();\r\n }\r\n\r\n onClear(): void {\r\n this.searchData = '';\r\n this._onChange(null);\r\n this.onChange.emit(null);\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n if (this.options.length) {\r\n this.openPopOver();\r\n }\r\n }\r\n }\r\n\r\n _onBlur(event: FocusEvent) {\r\n const next = event?.relatedTarget as HTMLElement | null;\r\n if (next && this.containerWrapper?.nativeElement?.contains(next)) {\r\n return;\r\n }\r\n\r\n this.focused = false;\r\n this.stateChanges.next();\r\n this.closePopOver();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n writeValue(value: any): void {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n }\r\n\r\n openPopOver() {\r\n this.showPopOver = true;\r\n }\r\n\r\n onInputChange(event: Event) {\r\n const { value } = event.target as HTMLInputElement;\r\n this.loading = true;\r\n this._searchEvent.next(value);\r\n this.openPopOver();\r\n }\r\n\r\n onSelect(option: MonkeyAutocompleteData) {\r\n this.value = option.value;\r\n this._onChange(this.value);\r\n this.onChange.emit(this.value);\r\n this.searchData = option.description;\r\n this.closePopOver();\r\n }\r\n\r\n isSelected(option: MonkeyAutocompleteData) {\r\n return option?.value === this.value;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './autocomplete.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnDestroy,\r\n Optional,\r\n Output,\r\n TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n ReactiveFormsModule,\r\n Validators\r\n} from '@angular/forms';\r\nimport { catchError, debounceTime, distinctUntilChanged, of, Subject, switchMap } from 'rxjs';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\nimport { MonkeyPopoverDirective } from '../../directives/popover';\r\nimport { GoogleApiPlaces } from '../../interfaces';\r\nimport { MonkeyDictionaryService, MonkeyEcxAddressService } from '../../services';\r\nimport {\r\n MonkeyFormFieldComponent,\r\n MonkeyFormFieldControl,\r\n MonkeyFormFieldModule\r\n} from '../form-field';\r\nimport { MonkeyOptionComponent } from '../option';\r\n\r\n@Component({\r\n selector: 'monkey-autocomplete-address',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MonkeyFormFieldModule,\r\n MonkeyPopoverDirective,\r\n MonkeyOptionComponent,\r\n UtilIconComponent\r\n ],\r\n template: `\r\n <input\r\n #input\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n class=\"mecx-input\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"placeholder\"\r\n (input)=\"onInputChange($event)\"\r\n (focus)=\"_onFocus()\"\r\n (blur)=\"_onBlur($event)\"\r\n [attr.id]=\"inputId\"\r\n [(ngModel)]=\"searchData\"\r\n />\r\n\r\n <ng-template\r\n [monkeyPopover]=\"showPopOver\"\r\n [monkeyPopoverTarget]=\"elementTarget\"\r\n [monkeyPopoverClosed]=\"closePopOver\"\r\n monkeyPopoverDir=\"ltr\"\r\n [monkeyPopoverBackdrop]=\"false\"\r\n [monkeyPopoverHideHeader]=\"true\"\r\n [monkeyPopoverWatch]=\"true\"\r\n >\r\n <div\r\n #containerWrapper\r\n class=\"mecx-autocomplete-address-wrapper\"\r\n [style.width.px]=\"initialDisplayWidth\"\r\n >\r\n <div class=\"flex-grow-1\">\r\n @if (loading) {\r\n <div class=\"mecx-autocomplete-address-loading\">\r\n <util-icon name=\"loading\" />\r\n {{ loadingDictionary | async }}\r\n </div>\r\n }\r\n @if (options.length > 0) {\r\n <div class=\"mecx-autocomplete-address-options\">\r\n @for (option of options; track option) {\r\n <monkey-option\r\n class=\"mecx-autocomplete-address-option\"\r\n (click)=\"onSelect(option)\"\r\n [class.mecx-option-selected]=\"isSelected(option)\"\r\n >\r\n <util-icon class=\"mecx-autocomplete-address-option-icon\" name=\"location\" />\r\n <span [innerHTML]=\"option.adrFormatAddress\"></span>\r\n </monkey-option>\r\n }\r\n </div>\r\n }\r\n @if (!loading && !options.length) {\r\n <div class=\"mecx-autocomplete-address-no-data\">\r\n <util-icon class=\"mecx-autocomplete-address-no-data-icon\" name=\"searchFail\" />\r\n {{ noDataDictionary | async }}\r\n </div>\r\n }\r\n </div>\r\n <div class=\"mecx-autocomplete-address-footer\">\r\n <util-icon name=\"googleMaps\" />\r\n </div>\r\n </div>\r\n </ng-template>\r\n `,\r\n styleUrl: './autocomplete-address.component.scss',\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyAutocompleteAddressComponent }\r\n ],\r\n host: {\r\n '[attr.data-testid]': \"'monkey-autocomplete-address'\",\r\n class: 'mecx-autocomplete-address',\r\n '[class.mecx-autocomplete-address-disabled]': '_disabled',\r\n '[class.mecx-autocomplete-address-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur($event)'\r\n }\r\n})\r\nexport class MonkeyAutocompleteAddressComponent\r\n implements MonkeyFormFieldControl, ControlValueAccessor, AfterContentInit, OnDestroy\r\n{\r\n @Input({ required: true }) placeholder!: string;\r\n\r\n @Input() debounce = 300;\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Output() onChange = new EventEmitter();\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _disabled: boolean = false;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n if (!this.searchData) {\r\n this.searchData = value;\r\n }\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value: string | null = null;\r\n\r\n constructor(\r\n @Optional() public formField: MonkeyFormFieldComponent,\r\n private changeDetectorRef: ChangeDetectorRef\r\n ) {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-autocomplete-address-');\r\n\r\n readonly inputId: string = this.idGenerator.getId('monkey-autocomplete-address-input-');\r\n\r\n focused: boolean = false;\r\n\r\n readonly type: string = 'autocomplete-address';\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n private readonly _addressService = inject(MonkeyEcxAddressService);\r\n\r\n private _searchEvent = new EventEmitter();\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private _resizeObserver?: ResizeObserver;\r\n\r\n initialDisplayWidth = 0;\r\n\r\n showPopOver = false;\r\n\r\n options: GoogleApiPlaces[] = [];\r\n\r\n readonly loadingDictionary = inject(MonkeyDictionaryService).get('LOADING');\r\n\r\n readonly noDataDictionary = inject(MonkeyDictionaryService).get('NO-DATA-ADDRESS');\r\n\r\n loading = false;\r\n\r\n searchData = '';\r\n\r\n get elementTarget() {\r\n if (this.formField?.elementRef) {\r\n return this.formField?.elementRef.nativeElement.querySelector('.mecx-form-field-body');\r\n }\r\n\r\n return this._elementRef.nativeElement;\r\n }\r\n\r\n @ContentChild('optionTemplate', { static: false }) optionTemplate?: TemplateRef<any>;\r\n\r\n @ViewChild('containerWrapper') containerWrapper!: ElementRef;\r\n\r\n private updateWidth() {\r\n this.initialDisplayWidth = (this.elementTarget?.offsetWidth || 0) - 12;\r\n }\r\n\r\n closePopOver = () => {\r\n setTimeout(() => {\r\n this.focused = false;\r\n this.showPopOver = false;\r\n this.changeDetectorRef.markForCheck();\r\n });\r\n };\r\n\r\n ngAfterContentInit(): void {\r\n this._searchEvent\r\n ?.pipe(\r\n debounceTime(this.debounce),\r\n distinctUntilChanged((prev, current) => {\r\n if (prev === current) {\r\n this.loading = false;\r\n }\r\n\r\n return prev === current;\r\n }),\r\n switchMap((query) => {\r\n return this._addressService.get(query || '').pipe(\r\n catchError(() => {\r\n return of([]);\r\n })\r\n );\r\n }),\r\n takeUntilDestroyed(this._destroyRef)\r\n )\r\n .subscribe({\r\n next: (result: any[]) => {\r\n this.openPopOver();\r\n this.options = result;\r\n this.loading = false;\r\n }\r\n });\r\n\r\n this._resizeObserver = new ResizeObserver(() => {\r\n return this.updateWidth();\r\n });\r\n this._resizeObserver.observe(this._elementRef.nativeElement);\r\n this.updateWidth();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._resizeObserver?.disconnect();\r\n }\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n event.preventDefault();\r\n }\r\n\r\n onClear(): void {\r\n this.searchData = '';\r\n this._onChange(null);\r\n this.onChange.emit(null);\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n if (this.options.length) {\r\n this.openPopOver();\r\n }\r\n }\r\n }\r\n\r\n _onBlur(event: FocusEvent) {\r\n const next = event?.relatedTarget as HTMLElement | null;\r\n if (next && this.containerWrapper?.nativeElement?.contains(next)) {\r\n return;\r\n }\r\n\r\n this.focused = false;\r\n this.stateChanges.next();\r\n this.closePopOver();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n openPopOver() {\r\n this.showPopOver = true;\r\n }\r\n\r\n onInputChange(event: Event) {\r\n const { value } = event.target as HTMLInputElement;\r\n this.loading = true;\r\n this._searchEvent.next(value);\r\n this.openPopOver();\r\n }\r\n\r\n onSelect(option: GoogleApiPlaces) {\r\n this.value = option;\r\n this._onChange(this.value);\r\n this.onChange.emit(this.value);\r\n this.searchData = option?.formattedAddress;\r\n this.closePopOver();\r\n }\r\n\r\n isSelected(option: GoogleApiPlaces) {\r\n return option === this.value;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './autocomplete-address.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n effect,\r\n HostBinding,\r\n inject,\r\n input,\r\n InputSignal,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator, objHaveProperty } from '../../../utils';\r\nimport { MonkeySize } from '../../interfaces';\r\n\r\ntype MonkeyAvatarSrc = { iconName: string } | { imageUrl: string } | { name: string };\r\ntype MonkeyAvatarType = 'icon' | 'image' | 'name';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-avatar',\r\n styleUrl: './avatar.component.scss',\r\n templateUrl: './avatar.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n 'data-testid': 'monkey-avatar',\r\n '[attr.id]': '_id',\r\n '[id]': '_id'\r\n }\r\n})\r\nexport class MonkeyAvatarComponent {\r\n protected _id: any = inject(IdGenerator).getId('monkey-avatar-');\r\n\r\n readonly size: InputSignal<MonkeySize> = input('xs' as MonkeySize);\r\n\r\n readonly src: InputSignal<MonkeyAvatarSrc> = input.required();\r\n\r\n readonly id: InputSignal<string | undefined> = input();\r\n\r\n public avatar = '?';\r\n\r\n public avatarType: MonkeyAvatarType = 'name';\r\n\r\n @HostBinding('class')\r\n get classes(): string {\r\n return this.size();\r\n }\r\n\r\n constructor() {\r\n effect(() => {\r\n this._id = this.id() || this._id;\r\n\r\n this.handleAvatarType();\r\n });\r\n }\r\n\r\n private getInitial(text: string): string {\r\n return text.toUpperCase()[0];\r\n }\r\n\r\n private handleAvatarType(): void {\r\n const { getInitial, src } = this;\r\n const value = src();\r\n\r\n if (objHaveProperty(value, 'iconName')) {\r\n this.avatarType = 'icon';\r\n this.avatar = (value as { iconName: string }).iconName;\r\n\r\n return;\r\n }\r\n\r\n if (objHaveProperty(value, 'imageUrl')) {\r\n this.avatarType = 'image';\r\n this.avatar = (value as { imageUrl: string }).imageUrl;\r\n\r\n return;\r\n }\r\n\r\n if (objHaveProperty(value, 'name')) {\r\n this.avatarType = 'name';\r\n this.avatar = getInitial((value as { name: string }).name);\r\n }\r\n }\r\n}\r\n","@switch (avatarType) {\r\n @case ('name') {\r\n <p [class]=\"size()\">{{ avatar }}</p>\r\n }\r\n\r\n @case ('icon') {\r\n <i class=\"mk-i mk-i-{{ avatar }} {{size()}}\"></i>\r\n }\r\n\r\n @case ('image') {\r\n <img loading=\"lazy\" [alt]=\"'Avatar ' + avatarType\" [class]=\"size()\" [src]=\"avatar\" />\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './avatar.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { booleanAttribute, Component, HostBinding, inject, Input } from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeySize } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'monkey-badge',\r\n templateUrl: './badge.component.html',\r\n styleUrl: './badge.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-badge',\r\n '[attr.id]': 'id'\r\n }\r\n})\r\nexport class MonkeyBadgeComponent {\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-badge-');\r\n\r\n @HostBinding('style') hostVariables = {};\r\n\r\n @Input() set type(value: 'success' | 'alert' | 'error' | 'info' | 'default') {\r\n const styles = {\r\n success: { background: '#F5FFFB', color: '#005236' },\r\n alert: { background: '#FFF8EB', color: '#1F2024' },\r\n error: { background: '#FFECEC', color: '#DB0505' },\r\n info: { background: '#F4EBFF', color: '#2D0264' },\r\n default: { background: '#F1F2F3', color: '#1F2024' }\r\n }[value];\r\n\r\n this.hostVariables = {\r\n '--monkey-badge-background': styles?.background,\r\n '--monkey-badge-color': styles?.color\r\n };\r\n }\r\n\r\n @Input()\r\n set typeColors(value: { background: string; color: string }) {\r\n if (value) {\r\n this.hostVariables = {\r\n '--monkey-badge-background': value?.background,\r\n '--monkey-badge-color': value?.color\r\n };\r\n }\r\n }\r\n\r\n @HostBinding('class')\r\n @Input()\r\n size: MonkeySize = 'sm';\r\n\r\n @HostBinding('class.large-padding')\r\n @Input({ transform: booleanAttribute })\r\n largePadding = false;\r\n\r\n @Input() icon: string = '';\r\n\r\n @Input() text: string = '';\r\n}\r\n","@if (text) {\r\n @if (icon) {\r\n <i class=\"mk-i mk-i-{{icon}}\"></i>\r\n }\r\n <span>\r\n {{ text }}\r\n </span>\r\n} @else {\r\n <ng-content></ng-content>\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './badge.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport { booleanAttribute, Component, inject, Input, ViewEncapsulation } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyBreadcrumb } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'monkey-breadcrumb',\r\n imports: [CommonModule],\r\n templateUrl: './breadcrumb.component.html',\r\n styleUrl: './breadcrumb.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n 'data-testid': 'monkey-breadcrumb',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyBreadcrumbComponent {\r\n @Input({ required: true }) first!: MonkeyBreadcrumb;\r\n\r\n @Input({ required: true }) last!: MonkeyBreadcrumb;\r\n\r\n @Input({ transform: booleanAttribute }) colapsed: boolean = false;\r\n\r\n protected _router = inject(Router);\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-breadcrumb-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n handleNavigate(item: MonkeyBreadcrumb) {\r\n if (item.callback) {\r\n item.callback();\r\n } else {\r\n this._router.navigate([item.path]);\r\n }\r\n }\r\n}\r\n","<div class=\"breadcrumbs\">\r\n <a class=\"first\" (click)=\"handleNavigate(first)\">\r\n {{ first.label | titlecase }}\r\n </a>\r\n <span>/</span>\r\n @if(colapsed){\r\n <span>...</span>\r\n <span>/</span>\r\n }\r\n <a class=\"last\" (click)=\"handleNavigate(last)\">\r\n {{ last.label | titlecase }}\r\n </a>\r\n</div>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './breadcrumb.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { animate, keyframes, style, transition, trigger } from '@angular/animations';\r\nimport {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n DestroyRef,\r\n EventEmitter,\r\n forwardRef,\r\n inject,\r\n Injector,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n QueryList\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n FormControlDirective,\r\n FormControlName,\r\n FormGroupDirective,\r\n FormsModule,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n NgControl,\r\n NgModel,\r\n ReactiveFormsModule,\r\n ValidationErrors,\r\n Validator\r\n} from '@angular/forms';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\nimport { MonkeyHelperDirective } from '../../directives/helper';\r\nimport { MonkeyInfoDirective } from '../../directives/info';\r\nimport { MonkeyLabelDirective } from '../../directives/label';\r\n\r\n@Component({\r\n selector: 'monkey-checkbox',\r\n imports: [ReactiveFormsModule, FormsModule, UtilIconComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.scss'],\r\n animations: [\r\n trigger('iconAnimation', [\r\n transition(':enter', [\r\n animate(\r\n '250ms ease-in-out',\r\n keyframes([\r\n style({ opacity: 0, transform: 'scale(0.7)' }),\r\n style({ opacity: 1, transform: 'scale(1)' })\r\n ])\r\n )\r\n ]),\r\n transition(':leave', [\r\n animate(\r\n '250ms ease-in-out',\r\n keyframes([\r\n style({ opacity: 1, transform: 'scale(1)' }),\r\n style({ opacity: 0, transform: 'scale(.7)' })\r\n ])\r\n )\r\n ])\r\n ])\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => {\r\n // eslint-disable-next-line no-use-before-define\r\n return MonkeyCheckboxComponent;\r\n }),\r\n multi: true\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n // eslint-disable-next-line no-use-before-define\r\n useExisting: MonkeyCheckboxComponent,\r\n multi: true\r\n }\r\n ],\r\n host: {\r\n 'data-testid': 'input-checkbox',\r\n class: 'mecx-checkbox',\r\n '[class.mecx-disabled]': 'disabled',\r\n '[class.mecx-checkbox-checked]': 'value',\r\n '[class.mecx-checkbox-focused]': 'isFocused',\r\n '[class.mecx-checkbox-indeterminate]': 'indeterminate',\r\n '[class.mecx-checkbox-invalid]': 'showInvalid',\r\n '[class.sm]': 'size.includes(\"sm\")',\r\n '[class.md]': 'size.includes(\"md\")',\r\n '[class.lg]': 'size.includes(\"lg\")'\r\n }\r\n})\r\nexport class MonkeyCheckboxComponent implements ControlValueAccessor, OnChanges, OnInit, Validator {\r\n @ContentChildren(MonkeyInfoDirective, { descendants: true })\r\n private infoChildren!: QueryList<MonkeyInfoDirective>;\r\n\r\n @ContentChildren(MonkeyLabelDirective, { descendants: true })\r\n private labelChildren!: QueryList<MonkeyLabelDirective>;\r\n\r\n @ContentChildren(MonkeyHelperDirective, { descendants: true })\r\n private helperChildren!: QueryList<MonkeyHelperDirective>;\r\n\r\n @Input({ transform: booleanAttribute }) disabled = false;\r\n\r\n @Input({ transform: booleanAttribute }) indeterminate = false;\r\n\r\n @Input({ transform: booleanAttribute }) required = false;\r\n\r\n @Input({ transform: booleanAttribute }) showFooter = true;\r\n\r\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\r\n\r\n @Output() onChange = new EventEmitter<boolean>();\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n private injector = inject(Injector);\r\n\r\n private cdr = inject(ChangeDetectorRef);\r\n\r\n control: AbstractControl<any, any> | null | undefined;\r\n\r\n readonly inputId = this.idGenerator.getId('input-checkbox-');\r\n\r\n @Input() value = false;\r\n\r\n isFocused = false;\r\n\r\n get showInvalid(): boolean {\r\n const touched = this.control?.touched || false;\r\n const invalid = this.control?.invalid || false;\r\n return !this.isFocused && touched && invalid;\r\n }\r\n\r\n get hasHeader(): boolean {\r\n return this.labelChildren.length > 0 || this.helperChildren.length > 0;\r\n }\r\n\r\n get isTouched(): boolean {\r\n return this.control?.touched ?? false;\r\n }\r\n\r\n get isInvalid(): boolean {\r\n return this.control?.invalid ?? false;\r\n }\r\n\r\n ngOnInit() {\r\n const ngControl = this.injector.get(NgControl, null, { self: true, optional: true });\r\n\r\n if (ngControl instanceof FormControlDirective || ngControl instanceof NgModel) {\r\n this.control = ngControl.control;\r\n } else if (ngControl instanceof FormControlName) {\r\n this.control = this.injector.get(FormGroupDirective).getControl(ngControl as FormControlName);\r\n\r\n this.control.statusChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n _onValidatorChange: any = () => {};\r\n\r\n ngOnChanges(changes: any) {\r\n if (changes.required) {\r\n this._onValidatorChange();\r\n }\r\n }\r\n\r\n onBlur = () => {\r\n this._onTouched();\r\n this.isFocused = false;\r\n };\r\n\r\n onFocus = (event: any) => {\r\n if (event.relatedTarget) {\r\n this.isFocused = true;\r\n }\r\n };\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.required && control.value !== true ? { required: true } : null;\r\n }\r\n\r\n writeValue(value: boolean): void {\r\n this.value = value;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this._onValidatorChange = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n onChangeEvent(event: Event): void {\r\n const checkbox = event.target as HTMLInputElement;\r\n\r\n if (this.indeterminate) {\r\n this.indeterminate = false;\r\n }\r\n\r\n this.value = checkbox.checked;\r\n this._onChange(this.value);\r\n this.onChange.next(this.value);\r\n this._onTouched();\r\n }\r\n\r\n getFooterMessages(): 'info' | 'error' | '' {\r\n const hasInfoChildren = this.infoChildren && this.infoChildren.length > 0;\r\n\r\n if (!this.disabled && this.isTouched && this.isInvalid) {\r\n return 'error';\r\n }\r\n\r\n if (hasInfoChildren) {\r\n return 'info';\r\n }\r\n\r\n return '';\r\n }\r\n}\r\n","@if (hasHeader) {\r\n <div class=\"header\">\r\n <ng-content select=\"monkey-label\" />\r\n <ng-content select=\"monkey-helper\" />\r\n </div>\r\n}\r\n<label [attr.for]=\"inputId\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"value\"\r\n [indeterminate]=\"indeterminate\"\r\n [disabled]=\"disabled\"\r\n (change)=\"onChangeEvent($event)\"\r\n (blur)=\"onBlur()\"\r\n (focus)=\"onFocus($event)\"\r\n [id]=\"inputId\"\r\n [required]=\"required\"\r\n />\r\n <span class=\"checkbox\">\r\n @if (indeterminate) {\r\n <util-icon class=\"icon\" name=\"minus\" />\r\n } @else if (value) {\r\n <util-icon class=\"icon\" name=\"check\" />\r\n }\r\n </span>\r\n <span class=\"checkbox-label\">\r\n <ng-content></ng-content>\r\n </span>\r\n</label>\r\n@if (showFooter) {\r\n @switch (getFooterMessages()) {\r\n @case ('error') {\r\n <ng-content select=\"monkey-error\" />\r\n }\r\n @case ('info') {\r\n <ng-content select=\"monkey-info\" />\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './checkbox.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { CurrencyPipe } from '@angular/common';\r\nimport {\r\n booleanAttribute,\r\n ChangeDetectorRef,\r\n DEFAULT_CURRENCY_CODE,\r\n DestroyRef,\r\n Directive,\r\n ElementRef,\r\n inject,\r\n Input,\r\n LOCALE_ID,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Renderer2,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NgControl, Validators } from '@angular/forms';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyFormFieldControl } from '../form-field';\r\n\r\n@Directive({\r\n selector: 'input[monkey-input-currency]',\r\n exportAs: 'monkeyInput',\r\n host: {\r\n class: 'mecx-input',\r\n '[class.mecx-input-disabled]': 'disabled',\r\n '[id]': 'id',\r\n '[disabled]': 'disabled',\r\n '[required]': 'required',\r\n '[attr.name]': 'name || null',\r\n '[attr.disabled]': 'disabled || null',\r\n '[attr.aria-required]': 'required',\r\n '[attr.id]': 'id',\r\n '(focus)': 'focusChanged(true)',\r\n '(focusout)': 'focusOutChanged()',\r\n '(blur)': 'focusChanged(false)'\r\n },\r\n providers: [\r\n {\r\n provide: MonkeyFormFieldControl,\r\n // eslint-disable-next-line no-use-before-define\r\n useExisting: MonkeyInputCurrencyDirective\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class MonkeyInputCurrencyDirective\r\n implements MonkeyFormFieldControl, OnChanges, OnInit, OnDestroy\r\n{\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-input-currency-');\r\n\r\n protected _id!: string;\r\n\r\n readonly stateChanges: Subject<void> = new Subject<void>();\r\n\r\n @Input() name!: string;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: BooleanInput) {\r\n this._required = coerceBooleanProperty(value);\r\n }\r\n\r\n protected _required: boolean | undefined;\r\n\r\n protected _disabled = false;\r\n\r\n @Input()\r\n get type(): string {\r\n return this._type;\r\n }\r\n\r\n set type(value: string) {\r\n this._type = value;\r\n }\r\n\r\n protected _type = 'text';\r\n\r\n get currency(): boolean {\r\n return true;\r\n }\r\n\r\n get percent(): boolean {\r\n return false;\r\n }\r\n\r\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n private readonly _currencyCode = inject(DEFAULT_CURRENCY_CODE);\r\n\r\n private readonly _localeId = inject(LOCALE_ID);\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private _valueChanges: Subscription | undefined;\r\n\r\n private _rawValue = 0;\r\n\r\n ngControl = inject(NgControl, { self: true, optional: true });\r\n\r\n focused: boolean = false;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2,\r\n private currencyPipe: CurrencyPipe\r\n ) {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n private markAsUntouched() {\r\n this.ngControl?.control?.markAsUntouched();\r\n }\r\n\r\n private focus(options?: FocusOptions): void {\r\n this._elementRef.nativeElement.focus(options);\r\n this.markAsUntouched();\r\n }\r\n\r\n private formatValue(value: string): string | null {\r\n return this.currencyPipe.transform(\r\n value,\r\n this._currencyCode || 'BRL',\r\n '',\r\n '1.2-2',\r\n this._localeId || 'pt-BR'\r\n );\r\n }\r\n\r\n private handleControlValue() {\r\n const value = this.ngControl?.control?.value;\r\n if (this._rawValue !== value) {\r\n this._rawValue = value;\r\n\r\n if (value === null || value === undefined) {\r\n this.renderer.setProperty(this.el.nativeElement, 'value', '');\r\n this._changeDetectorRef.markForCheck();\r\n return;\r\n }\r\n\r\n let handled = value;\r\n const decimal = `${value}`.split('.')[1];\r\n if (`${decimal}`.length >= 2) {\r\n handled = `${value}`.replace(/[^0-9]/g, '');\r\n handled = `${Number(handled) / 100}`;\r\n }\r\n\r\n this.ngControl?.control?.setValue(Number(handled), { emitEvent: false, onlySelf: true });\r\n const formattedValue = this.formatValue(handled);\r\n this.renderer.setProperty(this.el.nativeElement, 'value', formattedValue);\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.handleControlValue();\r\n this._valueChanges?.unsubscribe();\r\n\r\n this._valueChanges = this.ngControl?.control?.valueChanges\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(() => {\r\n this.handleControlValue();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges.complete();\r\n this._valueChanges?.unsubscribe();\r\n }\r\n\r\n ngOnChanges({ disabled }: SimpleChanges): void {\r\n if (!disabled) {\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n onContainerClick() {\r\n if (!this.focused) {\r\n this.focus();\r\n }\r\n }\r\n\r\n focusChanged(isFocused: boolean) {\r\n if (isFocused === this.focused) {\r\n return;\r\n }\r\n\r\n if (isFocused && this.disabled) {\r\n const element = this._elementRef.nativeElement as HTMLInputElement;\r\n element.setSelectionRange(0, 0);\r\n }\r\n\r\n this.markAsUntouched();\r\n this.focused = isFocused;\r\n this.stateChanges.next();\r\n }\r\n\r\n focusOutChanged() {\r\n this.ngControl?.control?.markAsTouched();\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { getSupportedInputTypes } from '@angular/cdk/platform';\r\n\r\nconst INPUT_INVALID_TYPES = [\r\n 'button',\r\n 'checkbox',\r\n 'file',\r\n 'image',\r\n 'radio',\r\n 'range',\r\n 'reset',\r\n 'submit'\r\n];\r\n\r\nexport function validateType(type: string) {\r\n if (INPUT_INVALID_TYPES.indexOf(type) > -1 || !getSupportedInputTypes().has(type)) {\r\n throw Error(`Input type \"${type}\" isn't supported.`);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport {\r\n booleanAttribute,\r\n Directive,\r\n ElementRef,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { NgControl, Validators } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyFormFieldControl } from '../form-field';\r\nimport { validateType } from './validators';\r\n\r\n@Directive({\r\n selector: 'input[monkey-input],textarea[monkey-input]',\r\n exportAs: 'monkeyInput',\r\n host: {\r\n class: 'mecx-input',\r\n 'data-testid': 'monkey-input',\r\n '[class.mecx-input-disabled]': 'disabled',\r\n '[id]': 'id',\r\n '[disabled]': 'disabled',\r\n '[required]': 'required',\r\n '[attr.name]': 'name || null',\r\n '[attr.disabled]': 'disabled || null',\r\n '[attr.aria-required]': 'required',\r\n '[attr.id]': 'id',\r\n '(focus)': 'focusChanged(true)',\r\n '(focusout)': 'focusOutChanged()',\r\n '(blur)': 'focusChanged(false)'\r\n },\r\n providers: [\r\n {\r\n provide: MonkeyFormFieldControl,\r\n // eslint-disable-next-line no-use-before-define\r\n useExisting: MonkeyInputDirective\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class MonkeyInputDirective implements MonkeyFormFieldControl, OnChanges, OnDestroy {\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-input-');\r\n\r\n protected _id!: string;\r\n\r\n readonly stateChanges: Subject<void> = new Subject<void>();\r\n\r\n @Input() name!: string;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: BooleanInput) {\r\n this._required = coerceBooleanProperty(value);\r\n }\r\n\r\n protected _required: boolean | undefined;\r\n\r\n protected _disabled = false;\r\n\r\n @Input()\r\n get type(): string {\r\n return this._type;\r\n }\r\n\r\n set type(value: string) {\r\n validateType(value);\r\n this._type = value || 'text';\r\n\r\n (this._elementRef.nativeElement as HTMLInputElement).type = this._type;\r\n }\r\n\r\n @Input()\r\n get min(): string {\r\n return this._min;\r\n }\r\n\r\n set min(value: string) {\r\n this._min = value;\r\n\r\n if (this._type === 'date') {\r\n (this._elementRef.nativeElement as HTMLInputElement).min = this._min;\r\n }\r\n }\r\n\r\n @Input()\r\n get max(): string {\r\n return this._max;\r\n }\r\n\r\n set max(value: string) {\r\n this._max = value;\r\n\r\n if (this._type === 'date') {\r\n (this._elementRef.nativeElement as HTMLInputElement).max = this._max;\r\n }\r\n }\r\n\r\n protected _type = 'text';\r\n\r\n protected _min!: string;\r\n\r\n protected _max!: string;\r\n\r\n get currency(): boolean {\r\n return false;\r\n }\r\n\r\n @Input()\r\n get percent(): boolean {\r\n return this._percent;\r\n }\r\n\r\n set percent(value: '') {\r\n this._percent = true;\r\n }\r\n\r\n protected _percent = false;\r\n\r\n ngControl = inject(NgControl, { self: true, optional: true });\r\n\r\n focused: boolean = false;\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n private markAsUntouched() {\r\n this.ngControl?.control?.markAsUntouched();\r\n }\r\n\r\n private focus(options?: FocusOptions): void {\r\n this._elementRef.nativeElement.focus(options);\r\n this.markAsUntouched();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges.complete();\r\n }\r\n\r\n ngOnChanges({ disabled }: SimpleChanges): void {\r\n if (!disabled) {\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n onContainerClick() {\r\n if (!this.focused) {\r\n this.focus();\r\n }\r\n }\r\n\r\n focusChanged(isFocused: boolean) {\r\n if (isFocused === this.focused) {\r\n return;\r\n }\r\n\r\n if (isFocused && this.disabled) {\r\n const element = this._elementRef.nativeElement as HTMLInputElement;\r\n\r\n if (element.type === 'number') {\r\n element.type = 'text';\r\n element.setSelectionRange(0, 0);\r\n element.type = 'number';\r\n } else {\r\n element.setSelectionRange(0, 0);\r\n }\r\n }\r\n\r\n this.markAsUntouched();\r\n this.focused = isFocused;\r\n this.stateChanges.next();\r\n }\r\n\r\n focusOutChanged() {\r\n this.ngControl?.control?.markAsTouched();\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CurrencyPipe } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MonkeyInputCurrencyDirective } from './input-currency.directive';\r\nimport { MonkeyInputDirective } from './input.directive';\r\n\r\n@NgModule({\r\n providers: [CurrencyPipe],\r\n declarations: [MonkeyInputDirective, MonkeyInputCurrencyDirective],\r\n exports: [MonkeyInputDirective, MonkeyInputCurrencyDirective]\r\n})\r\nexport class MonkeyInputModule {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './input-currency.directive';\r\nexport * from './input.directive';\r\nexport * from './input.module';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostListener,\r\n inject,\r\n Input,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\nimport { MonkeyButtonColor } from '../../interfaces/button';\r\n\r\n@Component({\r\n selector: 'monkey-icon-button',\r\n imports: [CommonModule, UtilIconComponent],\r\n templateUrl: './icon-button.component.html',\r\n styleUrl: './icon-button.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n 'data-testid': 'monkey-icon-button',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyIconButtonComponent {\r\n @Input() type: 'primary' | 'secondary' | 'tertiary' = 'primary';\r\n\r\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\r\n\r\n @Input() disabled: boolean = false;\r\n\r\n @Input() icon = '';\r\n\r\n @Input() loading!: boolean;\r\n\r\n @Input() color: MonkeyButtonColor = 'default';\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-icon-button-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: any) {\r\n if (this.disabled) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n }\r\n }\r\n}\r\n","<button\r\n class=\"mecx-icon-button\"\r\n [ngClass]=\"type + ' ' + size + ' ' + color\"\r\n [disabled]=\"disabled || loading\"\r\n>\r\n <div class=\"content\">\r\n @if (loading) {\r\n <util-icon class=\"mecx-icon-loading\" name=\"loading\" />\r\n }\r\n @if (!loading) {\r\n <i class=\"mk-i mk-i-{{icon}} {{size}}\"></i>\r\n }\r\n </div>\r\n</button>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './icon-button.component';\r\n","/* eslint-disable no-unused-vars */\r\n/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n addDays,\r\n addMonths,\r\n addYears,\r\n endOfMonth,\r\n endOfWeek,\r\n format,\r\n getMonth,\r\n getYear,\r\n isAfter,\r\n isBefore,\r\n isSameMonth,\r\n isToday,\r\n parseISO,\r\n startOfMonth,\r\n startOfWeek,\r\n subMonths,\r\n subYears\r\n} from 'date-fns';\r\n\r\nexport interface DefaultDates {\r\n minDate: string;\r\n maxDate: string;\r\n}\r\n\r\nexport interface WeekDay {\r\n date: Date | null;\r\n isDisabled: boolean;\r\n isToday: boolean;\r\n}\r\n\r\nexport interface CalendarWeekDay {\r\n blockNext: boolean;\r\n blockPrev: boolean;\r\n days: (WeekDay | null)[];\r\n}\r\n\r\nexport enum QuickActionsEnum {\r\n LAST_30_DAYS = -30,\r\n LAST_60_DAYS = -60,\r\n LAST_90_DAYS = -90,\r\n LAST_6_MONTHS = -180,\r\n LAST_12_MONTHS = -365,\r\n NEXT_30_DAYS = 30,\r\n NEXT_60_DAYS = 60,\r\n NEXT_90_DAYS = 90,\r\n NEXT_6_MONTHS = 180,\r\n NEXT_12_MONTHS = 365\r\n}\r\n\r\nexport function parseStringDate(val: Date | string) {\r\n if (typeof val === 'string') {\r\n return format(parseISO(val as string), 'yyyy-MM-dd');\r\n }\r\n\r\n return val.toISOString().split('T')[0];\r\n}\r\n\r\nexport function getDefaultdates(): DefaultDates {\r\n return {\r\n minDate: format(subYears(new Date(), 15), 'yyyy-MM-dd'),\r\n maxDate: format(addYears(new Date(), 15), 'yyyy-MM-dd')\r\n };\r\n}\r\n\r\nexport function buildCalendars(date: Date | string, action?: 'previous' | 'next') {\r\n if (action) {\r\n if (action === 'previous') {\r\n date = subMonths(date, 1);\r\n } else {\r\n date = addMonths(date, 1);\r\n }\r\n }\r\n\r\n const firstMonth = getMonth(date);\r\n const firstYear = getYear(date);\r\n\r\n const secondDate = addMonths(date, 1);\r\n\r\n const secondMonth = getMonth(secondDate);\r\n const secondYear = getYear(secondDate);\r\n\r\n return {\r\n firstCalendar: {\r\n month: firstMonth,\r\n year: firstYear\r\n },\r\n secondCalendar: {\r\n month: secondMonth,\r\n year: secondYear\r\n }\r\n };\r\n}\r\n\r\nexport function buildMonthByDays(\r\n year: number,\r\n month: number,\r\n minDate: Date | string,\r\n maxDate: Date | string\r\n): CalendarWeekDay {\r\n const date = new Date(year, month, 1);\r\n const start = startOfWeek(startOfMonth(date), { weekStartsOn: 0 });\r\n const end = endOfWeek(endOfMonth(date), { weekStartsOn: 0 });\r\n\r\n const days: (WeekDay | null)[] = [];\r\n let blockPrev = false;\r\n let blockNext = false;\r\n\r\n let current = start;\r\n while (current <= end) {\r\n const isCurrentMonth = isSameMonth(current, date);\r\n const isBeforeMin = minDate\r\n ? isBefore(parseStringDate(current), parseStringDate(minDate))\r\n : false;\r\n if (isBeforeMin) {\r\n blockPrev = true;\r\n }\r\n const isAfterMax = maxDate\r\n ? isAfter(parseStringDate(current), parseStringDate(maxDate))\r\n : false;\r\n if (isAfterMax) {\r\n blockNext = true;\r\n }\r\n\r\n days.push({\r\n date: isCurrentMonth ? current : null,\r\n isDisabled: !isCurrentMonth || isBeforeMin || isAfterMax,\r\n isToday: isToday(current)\r\n });\r\n current = addDays(current, 1);\r\n }\r\n\r\n return {\r\n blockPrev,\r\n blockNext,\r\n days\r\n };\r\n}\r\n\r\nexport function getEnumKeys(enumObj: any): any[] {\r\n return Object.entries(enumObj)\r\n .filter(([key]) => {\r\n return Number.isNaN(Number(key));\r\n })\r\n .map(([key, value]) => {\r\n return { key, value };\r\n });\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n booleanAttribute,\r\n Component,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnChanges,\r\n Output\r\n} from '@angular/core';\r\nimport { format, isAfter, isWithinInterval } from 'date-fns';\r\nimport { IdGenerator } from '../../../../utils';\r\nimport { MonkeyDictionaryService } from '../../../services/dictionary.service';\r\nimport { MonkeyIconButtonComponent } from '../../icon-button';\r\nimport * as Utils from '../utils';\r\n\r\n@Component({\r\n selector: 'monkey-date-range-month',\r\n imports: [CommonModule, MonkeyIconButtonComponent],\r\n templateUrl: './month.component.html',\r\n styleUrl: './month.component.scss',\r\n host: {\r\n 'data-testid': 'month',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyDateRangeMonthComponent implements OnChanges {\r\n @Input({ required: true }) month!: number;\r\n\r\n @Input({ required: true }) year!: number;\r\n\r\n @Input() set startDate(val: string) {\r\n this._handledStartDate = val;\r\n }\r\n\r\n @Input() set endDate(val: string) {\r\n this._handledEndDate = val;\r\n }\r\n\r\n @Input({ transform: booleanAttribute })\r\n hidePrevious!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideNext!: boolean;\r\n\r\n @Input() minDate!: string;\r\n\r\n @Input() maxDate!: string;\r\n\r\n @Output() onNavigate = new EventEmitter();\r\n\r\n @Output() onDate = new EventEmitter();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-date-range-month-');\r\n\r\n protected _id!: string;\r\n\r\n private readonly _today = new Date();\r\n\r\n private _handledStartDate!: string;\r\n\r\n private _handledEndDate!: string;\r\n\r\n readonly i18nDictionary = inject(MonkeyDictionaryService).get('DATE-RANGE');\r\n\r\n daysInMonth!: Utils.CalendarWeekDay;\r\n\r\n temporaryEndDate!: Utils.WeekDay | null;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.daysInMonth = Utils.buildMonthByDays(this.year, this.month, this.minDate, this.maxDate);\r\n }\r\n\r\n isFirst(param: Utils.WeekDay): boolean {\r\n const date = format(param.date!, 'yyyy-MM-dd');\r\n return (this._handledStartDate && this._handledStartDate === date) || false;\r\n }\r\n\r\n isLast(param: Utils.WeekDay): boolean {\r\n const date = format(param.date!, 'yyyy-MM-dd');\r\n return (this._handledEndDate && this._handledEndDate === date) || false;\r\n }\r\n\r\n isSelected(param: Utils.WeekDay): boolean {\r\n const date = format(param.date!, 'yyyy-MM-dd');\r\n return (\r\n (this._handledStartDate && this._handledStartDate === date) ||\r\n (this._handledEndDate && this._handledEndDate === date) ||\r\n false\r\n );\r\n }\r\n\r\n isInRange(param: Utils.WeekDay): boolean {\r\n if (!this._handledStartDate || !this._handledEndDate || !param.date) return false;\r\n const date = format(param.date!, 'yyyy-MM-dd');\r\n\r\n return isWithinInterval(new Date(date), {\r\n start: new Date(this._handledStartDate),\r\n end: new Date(this._handledEndDate)\r\n });\r\n }\r\n\r\n isInRangeTemporary(param: Utils.WeekDay): boolean {\r\n if (\r\n !this._handledStartDate ||\r\n !this.temporaryEndDate?.date ||\r\n !param.date ||\r\n param.isDisabled ||\r\n (this._handledStartDate && this._handledEndDate)\r\n )\r\n return false;\r\n const date = format(param.date!, 'yyyy-MM-dd');\r\n\r\n return isWithinInterval(new Date(date), {\r\n start: new Date(this._handledStartDate),\r\n end: new Date(this.temporaryEndDate.date)\r\n });\r\n }\r\n\r\n isInLastTemporary(param: Utils.WeekDay): boolean {\r\n if (!this.temporaryEndDate?.date || !param.date || this._handledEndDate) return false;\r\n const date = format(param.date!, 'yyyy-MM-dd');\r\n const cmp = format(this.temporaryEndDate?.date!, 'yyyy-MM-dd');\r\n return (this.temporaryEndDate?.date && cmp === date) || false;\r\n }\r\n\r\n onSelectDate(event: Event, param: Utils.WeekDay) {\r\n if (param?.isDisabled || !param.date) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n const date = format(param.date, 'yyyy-MM-dd');\r\n if (this._handledStartDate && this._handledEndDate) {\r\n this._handledStartDate = '';\r\n this._handledEndDate = '';\r\n }\r\n\r\n if (!this._handledStartDate) {\r\n this._handledStartDate = date;\r\n } else {\r\n this._handledEndDate = date;\r\n }\r\n\r\n const cmp = isAfter(this._handledStartDate, this._handledEndDate);\r\n\r\n if (this._handledStartDate && this._handledEndDate && cmp) {\r\n const start = this._handledStartDate;\r\n const end = this._handledEndDate;\r\n this._handledStartDate = end;\r\n this._handledEndDate = start;\r\n }\r\n\r\n this.onDate.next({\r\n startDate: this._handledStartDate,\r\n endDate: this._handledEndDate\r\n });\r\n }\r\n}\r\n","@if (i18nDictionary | async; as i18n) {\r\n <div class=\"header\">\r\n @if (!hidePrevious) {\r\n <monkey-icon-button\r\n size=\"sm\"\r\n icon=\"arrow-left\"\r\n type=\"secondary\"\r\n class=\"previous\"\r\n [disabled]=\"daysInMonth.blockPrev\"\r\n (click)=\"onNavigate.next('previous')\"\r\n >\r\n </monkey-icon-button>\r\n }\r\n {{ i18n?.['MONTHS']?.[month] }} {{ year }}\r\n @if (!hideNext) {\r\n <monkey-icon-button\r\n size=\"sm\"\r\n icon=\"arrow-right\"\r\n type=\"secondary\"\r\n class=\"next\"\r\n [disabled]=\"daysInMonth.blockNext\"\r\n (click)=\"onNavigate.next('next')\"\r\n >\r\n </monkey-icon-button>\r\n }\r\n </div>\r\n <div class=\"week-labels\">\r\n @for (day of i18n?.['WEEK-DAYS']; track day) {\r\n <span class=\"day\">{{ day }}</span>\r\n }\r\n </div>\r\n <div class=\"dates\">\r\n @for (day of daysInMonth.days; track $index) {\r\n <div\r\n class=\"day\"\r\n [class.disabled]=\"day!.isDisabled\"\r\n [class.in-range]=\"isInRange(day!)\"\r\n [class.selected]=\"isSelected(day!)\"\r\n [class.first]=\"isFirst(day!)\"\r\n [class.last]=\"isLast(day!)\"\r\n [class.in-range-temporary]=\"isInRangeTemporary(day!)\"\r\n [class.temporary-last]=\"isInLastTemporary(day!)\"\r\n (click)=\"onSelectDate($event, day!)\"\r\n (mouseenter)=\"temporaryEndDate = day!\"\r\n (mouseleave)=\"temporaryEndDate = null\"\r\n >\r\n {{ day!.date | date: 'd' }}\r\n @if (day?.isToday) {\r\n <span class=\"today\"></span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './month.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\nimport { MonkeyDictionaryService } from '../../../services/dictionary.service';\r\nimport * as Utils from '../utils';\r\n\r\n@Component({\r\n selector: 'monkey-date-range-quick-actions',\r\n imports: [CommonModule],\r\n templateUrl: './quick-actions.component.html',\r\n styleUrl: './quick-actions.component.scss',\r\n host: {\r\n 'data-testid': 'quick-actions',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyDateRangeQuickActionsComponent {\r\n @Output() onChange = new EventEmitter();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-date-range-month-quick-actions-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n selectedAction = '';\r\n\r\n readonly actions = Utils.getEnumKeys(Utils.QuickActionsEnum);\r\n\r\n readonly i18nDictionary = inject(MonkeyDictionaryService).get('DATE-RANGE');\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n onHandleAction({ key, value }: { key: string; value: number }) {\r\n this.selectedAction = key;\r\n this.onChange.next(value);\r\n }\r\n}\r\n","@if (i18nDictionary | async; as i18n) {\r\n @for (item of actions; track item.key) {\r\n <div\r\n class=\"item\"\r\n [class.selected]=\"item.key === selectedAction\"\r\n (click)=\"onHandleAction(item)\"\r\n [attr.tabindex]=\"$index\"\r\n >\r\n {{ i18n?.['QUICK-ACTIONS']?.[item.key] }}\r\n </div>\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './quick-actions.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n booleanAttribute,\r\n Component,\r\n EventEmitter,\r\n HostListener,\r\n inject,\r\n Input,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { addDays, isAfter, isBefore, subDays } from 'date-fns';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyErrorDirective } from '../../directives/error';\r\nimport { MonkeyLabelDirective } from '../../directives/label';\r\nimport { MonkeyDictionaryService } from '../../services/dictionary.service';\r\nimport { MonkeyButtonComponent } from '../button';\r\nimport { MonkeyFormFieldModule } from '../form-field';\r\nimport { MonkeyInputModule } from '../input';\r\nimport { MonkeyDateRangeMonthComponent } from './month';\r\nimport { MonkeyDateRangeQuickActionsComponent } from './quick-actions';\r\nimport * as Utils from './utils';\r\n\r\ninterface Calendar {\r\n month: number;\r\n year: number;\r\n}\r\n\r\n@Component({\r\n selector: 'monkey-date-range',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MonkeyInputModule,\r\n MonkeyFormFieldModule,\r\n MonkeyLabelDirective,\r\n MonkeyErrorDirective,\r\n MonkeyButtonComponent,\r\n MonkeyDateRangeMonthComponent,\r\n MonkeyDateRangeQuickActionsComponent\r\n ],\r\n templateUrl: './date-range.component.html',\r\n styleUrl: './date-range.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-date-range',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyDateRangeComponent implements OnInit {\r\n @Input() set startDate(val: string) {\r\n this.handledStartDate = val;\r\n }\r\n\r\n @Input() set endDate(val: string) {\r\n this.handledEndDate = val;\r\n }\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideQuickAction!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideHeader!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideActions!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideSecondCalendar!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n allowFastActionOnHeader!: boolean;\r\n\r\n @Input() set minDate(val: Date | string) {\r\n if (val) {\r\n this.handledMinDate = Utils.parseStringDate(val);\r\n }\r\n }\r\n\r\n @Input() set maxDate(val: Date | string) {\r\n if (val) {\r\n this.handledMaxDate = Utils.parseStringDate(val);\r\n }\r\n }\r\n\r\n @Output() onCancel = new EventEmitter();\r\n\r\n @Output() onDate = new EventEmitter();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-date-range-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n private _screenWidth: number = window.innerWidth;\r\n\r\n private _allowChangeFastAction = true;\r\n\r\n private _allowChangeSecondCalendar = true;\r\n\r\n private readonly _today = new Date();\r\n\r\n readonly i18nDictionary = inject(MonkeyDictionaryService).get('DATE-RANGE');\r\n\r\n handledStartDate!: string;\r\n\r\n handledEndDate!: string;\r\n\r\n firstCalendar!: Calendar;\r\n\r\n secondCalendar!: Calendar;\r\n\r\n isInvalidInterval = false;\r\n\r\n handledMinDate: string = Utils.getDefaultdates().minDate;\r\n\r\n handledMaxDate: string = Utils.getDefaultdates().maxDate;\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n private handleInitialValues() {\r\n const calendars = Utils.buildCalendars(this.handledStartDate || new Date());\r\n this.firstCalendar = calendars.firstCalendar;\r\n this.secondCalendar = calendars.secondCalendar;\r\n }\r\n\r\n private handleProperties() {\r\n if (this._screenWidth < 950) {\r\n if (this._allowChangeFastAction) {\r\n this.hideQuickAction = true;\r\n this.allowFastActionOnHeader = false;\r\n }\r\n if (this._allowChangeSecondCalendar) {\r\n this.hideSecondCalendar = true;\r\n }\r\n } else {\r\n if (this._allowChangeFastAction) {\r\n this.hideQuickAction = false;\r\n this.allowFastActionOnHeader = false;\r\n }\r\n if (this._allowChangeSecondCalendar) {\r\n this.hideSecondCalendar = false;\r\n }\r\n }\r\n }\r\n\r\n private handleInputChange(event: Event, isStart: boolean): void {\r\n const input = event.target as HTMLInputElement;\r\n const { value } = input;\r\n const [year] = value.split('-');\r\n if (`${Number(year)}`.length < 4) return;\r\n\r\n if (!input.checkValidity()) {\r\n event.preventDefault();\r\n input.value = '';\r\n this.isInvalidInterval = true;\r\n return;\r\n }\r\n\r\n this.isInvalidInterval = false;\r\n\r\n if (isStart) {\r\n this.handledStartDate = value;\r\n } else {\r\n this.handledEndDate = value;\r\n }\r\n\r\n if (this.hideActions) {\r\n this.onSubmit();\r\n }\r\n }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event: any) {\r\n this._screenWidth = (event.target as Window).innerWidth;\r\n this.handleProperties();\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.hideQuickAction) {\r\n this._allowChangeFastAction = false;\r\n }\r\n if (this.hideSecondCalendar) {\r\n this._allowChangeSecondCalendar = false;\r\n }\r\n if (this.allowFastActionOnHeader) {\r\n this._allowChangeFastAction = false;\r\n this.hideQuickAction = true;\r\n }\r\n\r\n this.handleInitialValues();\r\n this.handleProperties();\r\n }\r\n\r\n onHandleDate({ startDate, endDate }: { startDate: string; endDate: string }) {\r\n this.handledStartDate = startDate;\r\n this.handledEndDate = endDate;\r\n\r\n if (this.hideActions) {\r\n this.onSubmit();\r\n }\r\n }\r\n\r\n onSubmit() {\r\n this.onDate.next({\r\n startDate: this.handledStartDate ?? '',\r\n endDate: this.handledEndDate ?? ''\r\n });\r\n }\r\n\r\n onHandleQuickAction(event: number) {\r\n const isBackward = event < 0;\r\n const days = Math.abs(event);\r\n\r\n if (isBackward) {\r\n const baseDate = Utils.parseStringDate(\r\n this.handledEndDate || this.handledStartDate || this._today\r\n );\r\n\r\n let startDate: string | Date = subDays(baseDate, days);\r\n\r\n if (isBefore(startDate, this.handledMinDate)) {\r\n startDate = this.handledMinDate;\r\n }\r\n\r\n this.handledStartDate = Utils.parseStringDate(startDate);\r\n this.handledEndDate = Utils.parseStringDate(baseDate);\r\n } else {\r\n const baseDate = Utils.parseStringDate(\r\n this.handledStartDate || this.handledEndDate || this._today\r\n );\r\n\r\n let endDate: string | Date = addDays(baseDate, days);\r\n\r\n if (isAfter(endDate, this.handledMaxDate)) {\r\n endDate = this.handledMaxDate;\r\n }\r\n\r\n this.handledStartDate = Utils.parseStringDate(baseDate);\r\n this.handledEndDate = Utils.parseStringDate(endDate);\r\n }\r\n\r\n if (this.hideActions) {\r\n this.onSubmit();\r\n }\r\n }\r\n\r\n onChangeInputStartDate(event: Event) {\r\n this.handleInputChange(event, true);\r\n }\r\n\r\n onChangeInputEndDate(event: Event) {\r\n this.handleInputChange(event, false);\r\n }\r\n\r\n onDataChange(event: string, isStart: boolean) {\r\n if (isStart) {\r\n this.handledStartDate = event;\r\n this.handledEndDate = '';\r\n } else {\r\n this.handledEndDate = event;\r\n }\r\n\r\n if (this.hideActions) {\r\n this.onSubmit();\r\n }\r\n }\r\n\r\n onHandleNavigate(action: 'previous' | 'next') {\r\n if (!action) return;\r\n const date = new Date(this.firstCalendar.year, this.firstCalendar.month, 1);\r\n const calendars = Utils.buildCalendars(date, action);\r\n this.firstCalendar = calendars.firstCalendar;\r\n this.secondCalendar = calendars.secondCalendar;\r\n }\r\n}\r\n","@if (i18nDictionary | async; as i18n) {\r\n <div class=\"container-date-range-group\">\r\n @if (!hideQuickAction) {\r\n <div class=\"quick-actions\">\r\n <monkey-date-range-quick-actions (onChange)=\"onHandleQuickAction($event)\">\r\n </monkey-date-range-quick-actions>\r\n </div>\r\n }\r\n <div class=\"container-date-range\">\r\n @if (!hideHeader) {\r\n <div class=\"header\" [class.no-quick-action]=\"hideQuickAction\">\r\n @if (allowFastActionOnHeader) {\r\n <div class=\"quick-actions\">\r\n <monkey-date-range-quick-actions (onChange)=\"onHandleQuickAction($event)\">\r\n </monkey-date-range-quick-actions>\r\n </div>\r\n } @else {\r\n <div class=\"inputs\">\r\n <monkey-form-field hideAction enableClear size=\"sm\">\r\n <monkey-label>{{ i18n?.['START-DATE'] }}</monkey-label>\r\n <input\r\n type=\"date\"\r\n monkey-input\r\n id=\"startDate\"\r\n [(ngModel)]=\"handledStartDate\"\r\n (ngModelChange)=\"onDataChange($event, true)\"\r\n [min]=\"handledMinDate\"\r\n [max]=\"handledEndDate ? handledEndDate : handledMaxDate\"\r\n (change)=\"onChangeInputStartDate($event)\"\r\n />\r\n </monkey-form-field>\r\n <monkey-form-field hideAction enableClear size=\"sm\">\r\n <monkey-label>{{ i18n?.['END-DATE'] }}</monkey-label>\r\n <input\r\n type=\"date\"\r\n monkey-input\r\n id=\"endDate\"\r\n [(ngModel)]=\"handledEndDate\"\r\n (ngModelChange)=\"onDataChange($event, false)\"\r\n [min]=\"handledStartDate ? handledStartDate : ''\"\r\n [max]=\"handledMaxDate\"\r\n (change)=\"onChangeInputEndDate($event)\"\r\n />\r\n </monkey-form-field>\r\n </div>\r\n @if (isInvalidInterval) {\r\n <monkey-error>{{ i18n?.['INVALID'] }}</monkey-error>\r\n }\r\n }\r\n </div>\r\n }\r\n <div class=\"body\">\r\n <div class=\"calendars\">\r\n <monkey-date-range-month\r\n [month]=\"firstCalendar.month\"\r\n [year]=\"firstCalendar.year\"\r\n [startDate]=\"handledStartDate\"\r\n [endDate]=\"handledEndDate\"\r\n (onDate)=\"onHandleDate($event)\"\r\n (onNavigate)=\"onHandleNavigate($event)\"\r\n [hideNext]=\"!hideSecondCalendar\"\r\n [minDate]=\"handledMinDate\"\r\n [maxDate]=\"handledMaxDate\"\r\n >\r\n </monkey-date-range-month>\r\n @if (!hideSecondCalendar) {\r\n <monkey-date-range-month\r\n [month]=\"secondCalendar.month\"\r\n [year]=\"secondCalendar.year\"\r\n [startDate]=\"handledStartDate\"\r\n [endDate]=\"handledEndDate\"\r\n (onDate)=\"onHandleDate($event)\"\r\n (onNavigate)=\"onHandleNavigate($event)\"\r\n hidePrevious\r\n [minDate]=\"handledMinDate\"\r\n [maxDate]=\"handledMaxDate\"\r\n >\r\n </monkey-date-range-month>\r\n }\r\n </div>\r\n </div>\r\n @if (!hideActions) {\r\n <div class=\"actions\">\r\n <monkey-button size=\"sm\" type=\"secondary\" (click)=\"onCancel.next(null)\">\r\n {{ i18n?.ACTIONS?.CANCEL }}\r\n </monkey-button>\r\n <monkey-button\r\n size=\"sm\"\r\n (click)=\"onSubmit()\"\r\n [disabled]=\"!this.handledStartDate || !this.handledEndDate\"\r\n >\r\n {{ i18n?.ACTIONS?.APPLY }}\r\n </monkey-button>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './date-range.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n booleanAttribute,\r\n Component,\r\n HostBinding,\r\n inject,\r\n Input,\r\n input,\r\n InputSignal,\r\n InputSignalWithTransform,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeySize } from '../../interfaces';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-divider',\r\n standalone: true,\r\n styleUrl: './divider.component.scss',\r\n template: '',\r\n host: {\r\n 'data-testid': 'monkey-divider',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyDividerComponent {\r\n size: InputSignal<MonkeySize> = input<MonkeySize>('sm');\r\n\r\n vertical: InputSignalWithTransform<boolean, unknown> = input(false, {\r\n transform: booleanAttribute\r\n });\r\n\r\n @HostBinding('class')\r\n get classes(): string {\r\n return `${this.size()} ${this.vertical() ? 'vertical' : ''}`;\r\n }\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-divider-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './divider.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { IdGenerator } from '../../../utils/id-generator';\r\nimport { MonkeyButtonColor, MonkeyButtonType } from '../../interfaces/button';\r\nimport { MonkeySize } from '../../interfaces/sizes';\r\nimport { MonkeyButtonComponent } from '../button';\r\n\r\nexport type MonkeyDownloadButtonChangeEvent = {\r\n // eslint-disable-next-line no-use-before-define\r\n component: MonkeyDownloadButtonComponent;\r\n};\r\n\r\n@Component({\r\n selector: 'monkey-download-button',\r\n imports: [MonkeyButtonComponent],\r\n template: `\r\n <monkey-button\r\n [type]=\"type\"\r\n [color]=\"color\"\r\n [size]=\"size\"\r\n [class.has-progress]=\"hasProgress\"\r\n [disabled]=\"disabled || hasProgress\"\r\n (click)=\"onDownload()\"\r\n class=\"w-100\"\r\n >\r\n <div class=\"content-download\">\r\n @if (!loading) {\r\n <ng-content select=\"[first]\"></ng-content>\r\n }\r\n <span><ng-content></ng-content></span>\r\n @if (!loading) {\r\n <ng-content select=\"[last]\"></ng-content>\r\n }\r\n </div>\r\n\r\n @if (hasProgress) {\r\n <div\r\n class=\"content-download-progress\"\r\n [style.--mecx-button-progress]=\"hasProgress ? safeProgress + '%' : null\"\r\n >\r\n <span [class.pe-2]=\"enablleMargin\">{{ safeProgress }}%</span>\r\n </div>\r\n }\r\n </monkey-button>\r\n `,\r\n styleUrl: './download-button.component.scss',\r\n host: {\r\n '[attr.data-testid]': \"'monkey-download-button'\",\r\n class: 'mecx-download-button',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex'\r\n }\r\n})\r\nexport class MonkeyDownloadButtonComponent {\r\n @Input() progress: number = 0;\r\n\r\n @Input() disabled!: boolean;\r\n\r\n @Input() color: MonkeyButtonColor = 'default';\r\n\r\n @Input() size: MonkeySize = 'md';\r\n\r\n @Input() type: MonkeyButtonType = 'primary';\r\n\r\n @Input() loading!: boolean;\r\n\r\n @Input() tabIndex = -1;\r\n\r\n @Output() onChange = new EventEmitter<MonkeyDownloadButtonChangeEvent>();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-download-button-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n get safeProgress(): number {\r\n return Math.min(Math.max(this.progress, 1), 100);\r\n }\r\n\r\n get hasProgress(): boolean {\r\n return typeof this.progress === 'number' && this.progress > 0;\r\n }\r\n\r\n get enablleMargin(): boolean {\r\n return this.safeProgress === 100;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n onDownload() {\r\n this.onChange.emit({ component: this });\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './download-button.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './download-toast.component';\r\nexport * from './download-toast.constants';\r\nexport * from './download-toast-stack.component';","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport { computed, Injectable, signal } from '@angular/core';\nimport {\n ActiveFilter,\n AutocompleteSuggestion,\n ComplexFilterCondition,\n ComplexFilterGroup,\n ComplexFilterOperator,\n FilterBarConfig,\n FilterOption\n} from './filter-config.interface';\n\nexport interface FilterBarState {\n search: string;\n filters: ActiveFilter[];\n complexQuery?: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MonkeyFilterBarService {\n private _configs = signal<Map<string, FilterBarConfig>>(new Map());\n private _activeFilters = signal<Map<string, ActiveFilter[]>>(new Map());\n private _searchValues = signal<Map<string, string>>(new Map());\n private _complexQueries = signal<Map<string, string>>(new Map());\n\n setConfig(storageKey: string, config: FilterBarConfig): void {\n this._configs.update((configs) => {\n const updated = new Map(configs);\n updated.set(storageKey, config);\n return updated;\n });\n }\n\n getConfig(storageKey: string): FilterBarConfig | undefined {\n return this._configs().get(storageKey);\n }\n\n config(storageKey: string) {\n return computed(() => this._configs().get(storageKey));\n }\n\n availableFilterOptions(storageKey: string): FilterOption[] {\n const config = this._configs().get(storageKey);\n if (!config || !config.filterOptions) return [];\n const activeKeys = this._activeFilters().get(storageKey)?.map((f) => f.key) || [];\n return config.filterOptions.filter((option) => !activeKeys.includes(option.key));\n }\n\n getActiveFilters(storageKey: string): ActiveFilter[] {\n return this._activeFilters().get(storageKey) || [];\n }\n\n activeFilters(storageKey: string) {\n return computed(() => this._activeFilters().get(storageKey) || []);\n }\n\n isFilterActive(storageKey: string, filterKey: string): boolean {\n const filters = this._activeFilters().get(storageKey) || [];\n return filters.some((f) => f.key === filterKey);\n }\n\n setActiveFilters(storageKey: string, filters: ActiveFilter[]): void {\n this._activeFilters.update((filtersMap) => {\n const updated = new Map(filtersMap);\n updated.set(storageKey, [...filters]);\n return updated;\n });\n }\n\n addFilter(\n storageKey: string,\n option: FilterOption,\n value: string | { startDate: string; endDate: string } | { min?: number; max?: number } | string[]\n ): void {\n if (this.isFilterActive(storageKey, option.key)) return;\n const displayText = this.formatFilterValuePlain(option, value);\n const activeFilter: ActiveFilter = {\n key: option.key,\n label: option.label,\n type: option.type,\n value,\n displayText,\n icon: option.icon\n };\n this._activeFilters.update((filters) => {\n const updated = new Map(filters);\n const currentFilters = updated.get(storageKey) || [];\n updated.set(storageKey, [...currentFilters, activeFilter]);\n return updated;\n });\n }\n\n updateFilter(\n storageKey: string,\n filterKey: string,\n option: FilterOption,\n value: string | { startDate: string; endDate: string } | { min?: number; max?: number } | string[]\n ): void {\n const displayText = this.formatFilterValuePlain(option, value);\n const updatedFilter: ActiveFilter = {\n key: option.key,\n label: option.label,\n type: option.type,\n value,\n displayText,\n icon: option.icon\n };\n this._activeFilters.update((filters) => {\n const updated = new Map(filters);\n const currentFilters = updated.get(storageKey) || [];\n const index = currentFilters.findIndex((f) => f.key === filterKey);\n if (index !== -1) {\n const newFilters = [...currentFilters];\n newFilters[index] = updatedFilter;\n updated.set(storageKey, newFilters);\n }\n return updated;\n });\n }\n\n removeFilter(storageKey: string, filterKey: string): void {\n this._activeFilters.update((filters) => {\n const updated = new Map(filters);\n const currentFilters = updated.get(storageKey) || [];\n updated.set(storageKey, currentFilters.filter((f) => f.key !== filterKey));\n return updated;\n });\n }\n\n clearAllFilters(storageKey: string): void {\n this._activeFilters.update((filters) => {\n const updated = new Map(filters);\n updated.set(storageKey, []);\n return updated;\n });\n this.clearComplexQuery(storageKey);\n }\n\n getSearchValue(storageKey: string): string {\n return this._searchValues().get(storageKey) || '';\n }\n\n searchValue(storageKey: string) {\n return computed(() => this._searchValues().get(storageKey) || '');\n }\n\n setSearchValue(storageKey: string, value: string): void {\n this._searchValues.update((values) => {\n const updated = new Map(values);\n updated.set(storageKey, value);\n return updated;\n });\n }\n\n // ─── Complex query ──────────────────────────────────────────────────────────\n\n getComplexQuery(storageKey: string): string {\n return this._complexQueries().get(storageKey) || '';\n }\n\n setComplexQuery(storageKey: string, query: string): void {\n this._complexQueries.update((map) => {\n const updated = new Map(map);\n updated.set(storageKey, query);\n return updated;\n });\n }\n\n clearComplexQuery(storageKey: string): void {\n this._complexQueries.update((map) => {\n const updated = new Map(map);\n updated.delete(storageKey);\n return updated;\n });\n }\n\n getState(storageKey: string): FilterBarState {\n const complexQuery = this.getComplexQuery(storageKey);\n return {\n search: this.getSearchValue(storageKey),\n filters: this.getActiveFilters(storageKey),\n ...(complexQuery ? { complexQuery } : {})\n };\n }\n\n state(storageKey: string) {\n return computed(() => ({\n search: this.getSearchValue(storageKey),\n filters: this.getActiveFilters(storageKey),\n complexQuery: this.getComplexQuery(storageKey) || undefined\n }));\n }\n\n // ─── Autocomplete engine ────────────────────────────────────────────────────\n\n /**\n * Returns autocomplete suggestions for the complex filter input.\n *\n * Token resolution (relative to cursorPos):\n * - Scan backwards from cursor over non-whitespace / non-paren chars → currentToken\n * - Token with operator (fieldKey[:<>]valuePrefix) → suggest status values\n * - Token without operator → suggest fields, AND/OR (after a complete term), and ( (at top level)\n */\n getAutocompleteSuggestions(\n storageKey: string,\n query: string,\n cursorPos: number\n ): AutocompleteSuggestion[] {\n const config = this._configs().get(storageKey);\n if (!config?.filterOptions?.length) return [];\n\n const textBefore = query.substring(0, cursorPos);\n\n // Current word: scan back over non-whitespace, non-paren characters\n let tokenStart = cursorPos;\n while (tokenStart > 0 && !/[\\s()]/.test(textBefore[tokenStart - 1])) tokenStart--;\n const currentToken = textBefore.substring(tokenStart);\n\n // Token has an operator → suggest status values only\n const withOperator = currentToken.match(/^([a-zA-Z_][a-zA-Z0-9_]*)([:<>])(.*)$/);\n if (withOperator) {\n const fieldKey = withOperator[1];\n const valuePrefix = withOperator[3];\n const field = config.filterOptions.find((o) => o.key === fieldKey);\n if (field?.type === 'status' && field.statusOptions?.length) {\n return field.statusOptions\n .filter((s) => s.value.toLowerCase().startsWith(valuePrefix.toLowerCase()))\n .map((s) => ({\n type: 'value' as const,\n label: s.description,\n sublabel: s.value,\n insertValue: s.value\n }));\n }\n return [];\n }\n\n const items: AutocompleteSuggestion[] = [];\n const fieldPrefix = currentToken.toLowerCase();\n\n // What comes just before the current token (trimmed)?\n const textBeforeToken = textBefore.substring(0, tokenStart).trimEnd();\n const lastNonSpace = textBeforeToken.at(-1) ?? '';\n\n // Unmatched open-paren count tells us whether we're inside a group\n const openCount = (textBefore.match(/\\(/g) ?? []).length;\n const closeCount = (textBefore.match(/\\)/g) ?? []).length;\n const parenDepth = openCount - closeCount;\n\n // A complete term or closing group precedes → AND/OR can follow\n const afterComplete =\n lastNonSpace === ')' ||\n /[a-zA-Z_][a-zA-Z0-9_]*[:<>]\\S+$/.test(textBeforeToken);\n\n if (afterComplete) {\n if ('AND'.startsWith(fieldPrefix.toUpperCase()))\n items.push({ type: 'logical', label: 'AND', insertValue: 'AND ' });\n if ('OR'.startsWith(fieldPrefix.toUpperCase()))\n items.push({ type: 'logical', label: 'OR', insertValue: 'OR ' });\n }\n\n // Suggest ( at top-level, but only when not directly after a complete term\n if (parenDepth === 0 && !afterComplete && '('.startsWith(fieldPrefix)) {\n items.push({ type: 'logical', label: '( grupo )', insertValue: '(' });\n }\n\n // Field names matching the current prefix (always, so typing after AND/OR still helps)\n config.filterOptions\n .filter((o) => o.key.toLowerCase().startsWith(fieldPrefix))\n .forEach((o) =>\n items.push({\n type: 'field',\n label: o.label,\n sublabel: o.key,\n insertValue: o.key,\n explanation: o.explanation\n })\n );\n\n return items;\n }\n\n /**\n * Parses a raw complex query string into structured groups.\n * Parenthesised expressions become a single group; bare conditions\n * each become their own single-condition group.\n *\n * Example: `(a:1 OR b:2) AND c:3` →\n * [{ conditions:[{a:1},{logicalOp:OR,b:2}] }, { logicalOp:AND, conditions:[{c:3}] }]\n */\n parseComplexQuery(raw: string): ComplexFilterGroup[] {\n if (!raw.trim()) return [];\n\n const groups: ComplexFilterGroup[] = [];\n let i = 0;\n let groupLogicalOp: 'AND' | 'OR' | undefined;\n\n const skipWS = () => {\n while (i < raw.length && raw[i] === ' ') i++;\n };\n\n const readWord = (): string => {\n const start = i;\n while (i < raw.length && raw[i] !== ' ' && raw[i] !== '(' && raw[i] !== ')') i++;\n return raw.substring(start, i);\n };\n\n const parseGroup = (): ComplexFilterCondition[] => {\n const conditions: ComplexFilterCondition[] = [];\n let condLogicalOp: 'AND' | 'OR' | undefined;\n while (i < raw.length && raw[i] !== ')') {\n skipWS();\n if (i >= raw.length || raw[i] === ')') break;\n const word = readWord();\n if (!word) { i++; continue; }\n const upper = word.toUpperCase();\n if (upper === 'AND' || upper === 'OR') {\n condLogicalOp = upper as 'AND' | 'OR';\n } else {\n const cond = this._parseConditionToken(word, condLogicalOp);\n if (cond) conditions.push(cond);\n condLogicalOp = undefined;\n }\n }\n return conditions;\n };\n\n while (i < raw.length) {\n skipWS();\n if (i >= raw.length) break;\n\n if (raw[i] === '(') {\n i++; // consume '('\n const conditions = parseGroup();\n if (raw[i] === ')') i++; // consume ')'\n if (conditions.length > 0) {\n groups.push({ ...(groupLogicalOp ? { logicalOp: groupLogicalOp } : {}), conditions });\n groupLogicalOp = undefined;\n }\n } else {\n const word = readWord();\n if (!word) { i++; continue; }\n const upper = word.toUpperCase();\n if (upper === 'AND' || upper === 'OR') {\n groupLogicalOp = upper as 'AND' | 'OR';\n } else {\n const cond = this._parseConditionToken(word, undefined);\n if (cond) {\n groups.push({ ...(groupLogicalOp ? { logicalOp: groupLogicalOp } : {}), conditions: [cond] });\n groupLogicalOp = undefined;\n }\n }\n }\n }\n\n return groups;\n }\n\n private _parseConditionToken(\n token: string,\n logicalOp?: 'AND' | 'OR'\n ): ComplexFilterCondition | null {\n const match = token.match(/^([a-zA-Z_][a-zA-Z0-9_]*)([:<>])(.+)$/);\n if (!match) return null;\n return {\n ...(logicalOp ? { logicalOp } : {}),\n field: match[1],\n operator: match[2] as ComplexFilterOperator,\n value: match[3].trim()\n };\n }\n\n private formatFilterValuePlain(\n option: FilterOption,\n value: string | { startDate: string; endDate: string } | { min?: number; max?: number } | string[]\n ): string {\n switch (option.type) {\n case 'text':\n return value as string;\n\n case 'date': {\n const dateValue = value as { startDate: string; endDate: string };\n if (dateValue.startDate && dateValue.endDate) {\n return `${dateValue.startDate} - ${dateValue.endDate}`;\n }\n return '';\n }\n\n case 'currency': {\n const currencyValue = value as { min?: number; max?: number };\n if (currencyValue.min !== undefined && currencyValue.max !== undefined) {\n return `${currencyValue.min} - ${currencyValue.max}`;\n } else if (currencyValue.min !== undefined) {\n return `De ${currencyValue.min}`;\n } else if (currencyValue.max !== undefined) {\n return `Até ${currencyValue.max}`;\n }\n return '';\n }\n\n case 'status': {\n const statusValue = value as string[];\n if (statusValue?.length && option.statusOptions) {\n return statusValue\n .map((val) => option.statusOptions?.find((opt) => opt.value === val)?.description || val)\n .join(', ');\n }\n return '';\n }\n\n default:\n return String(value);\n }\n }\n}\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n computed,\r\n effect,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MonkeyInfoDirective } from '../../directives/info';\r\nimport { MonkeyPopoverDirective } from '../../directives/popover';\r\nimport { MonkeyPrefixDirective } from '../../directives/prefix';\r\nimport { MonkeyButtonComponent } from '../button';\r\nimport { MonkeyFormFieldModule } from '../form-field';\r\nimport { MonkeyIconButtonComponent } from '../icon-button';\r\nimport { MonkeyInputModule } from '../input';\r\nimport { MonkeyFilterBarService } from './complex-filter-bar.service';\r\nimport {\r\n AutocompleteSuggestion,\r\n ComplexFilterResult,\r\n FilterBarConfig\r\n} from './filter-config.interface';\r\n\r\n@Component({\r\n selector: 'monkey-complex-filter-bar',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MonkeyFormFieldModule,\r\n MonkeyInputModule,\r\n MonkeyButtonComponent,\r\n MonkeyPrefixDirective,\r\n MonkeyInfoDirective,\r\n MonkeyPopoverDirective\r\n ],\r\n template: `\r\n <!-- Query input row -->\r\n <div class=\"complex-filter-bar-row\">\r\n <div class=\"complex-filter-bar-input-wrap\">\r\n <monkey-form-field\r\n class=\"complex-filter-bar-field complex-filter-bar-field--textarea\"\r\n size=\"sm\"\r\n [class.complex-filter-bar-field--invalid]=\"!!queryError\"\r\n >\r\n <textarea\r\n #queryInput\r\n monkey-input\r\n class=\"complex-filter-bar-input\"\r\n rows=\"1\"\r\n autocomplete=\"off\"\r\n [placeholder]=\"queryPlaceholder()\"\r\n [(ngModel)]=\"complexQuery\"\r\n (focus)=\"onInputFocus(queryInput)\"\r\n (input)=\"onTextareaInput(queryInput)\"\r\n (keyup)=\"onQueryInput(queryInput)\"\r\n (keydown)=\"onKeydown($event, queryInput)\"\r\n (blur)=\"onInputBlur()\"\r\n ></textarea>\r\n <monkey-prefix>\r\n <i class=\"mk-i mk-i-search fs-md\"></i>\r\n </monkey-prefix>\r\n <monkey-info>\r\n <span class=\"me-1\">Use : to equal, > to greater then, < to lower then.</span>\r\n <a href=\"javascript:void(0)\" class=\"mecx-link fw-regular fs-12\" (click)=\"onShowDocs($event)\">\r\n <span>Docs</span>\r\n </a>\r\n </monkey-info>\r\n </monkey-form-field>\r\n\r\n @if (queryError) {\r\n <p class=\"complex-filter-bar-error-msg\">{{ queryError }}</p>\r\n }\r\n\r\n @if (autocompleteItems.length > 0) {\r\n <div class=\"complex-filter-bar-autocomplete\">\r\n @for (item of autocompleteItems; track item.insertValue; let i = $index) {\r\n <div\r\n class=\"complex-filter-bar-autocomplete-item\"\r\n [class.active]=\"i === autocompleteActiveIndex\"\r\n (mousedown)=\"onSelectSuggestion(item, queryInput)\"\r\n >\r\n <span class=\"complex-filter-bar-autocomplete-badge complex-filter-bar-autocomplete-badge--{{ item.type }}\">\r\n {{ item.type === 'field' ? 'campo' : item.type === 'logical' ? 'lógico' : 'valor' }}\r\n </span>\r\n <span class=\"complex-filter-bar-autocomplete-label\">{{ item.label }}</span>\r\n @if (item.sublabel) {\r\n <span class=\"complex-filter-bar-autocomplete-sublabel\">{{ item.sublabel }}</span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <monkey-button size=\"sm\" type=\"primary\" [disabled]=\"!!queryError\" (click)=\"applyQuery()\">\r\n Aplicar\r\n </monkey-button>\r\n\r\n <div class=\"complex-filter-bar-extra-actions\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n\r\n <!-- Documentation panel popover -->\r\n <ng-template\r\n [monkeyPopover]=\"showDocsPanel\"\r\n [monkeyPopoverTarget]=\"docsPanelTarget\"\r\n [monkeyPopoverClosed]=\"closeDocs\"\r\n monkeyPopoverDir=\"ltr\"\r\n [monkeyPopoverHideHeader]=\"true\"\r\n >\r\n <div class=\"complex-filter-bar-docs-panel\">\r\n <div class=\"complex-filter-bar-docs-header\">\r\n <i class=\"mk-i mk-i-info fs-md\"></i>\r\n <span>Campos disponíveis</span>\r\n </div>\r\n <div class=\"complex-filter-bar-docs-body\">\r\n @for (opt of allFilterOptions(); track opt.key) {\r\n <div class=\"complex-filter-bar-docs-field\">\r\n <div class=\"complex-filter-bar-docs-field-row\">\r\n <code class=\"complex-filter-bar-docs-key\">{{ opt.key }}</code>\r\n <span class=\"complex-filter-bar-docs-label\">{{ opt.label }}</span>\r\n <div class=\"complex-filter-bar-docs-operators\">\r\n <span class=\"complex-filter-bar-docs-op\">:</span>\r\n @if (opt.type === 'currency' || opt.type === 'date') {\r\n <span class=\"complex-filter-bar-docs-op\">></span>\r\n <span class=\"complex-filter-bar-docs-op\"><</span>\r\n }\r\n </div>\r\n </div>\r\n @if (opt.explanation) {\r\n <p class=\"complex-filter-bar-docs-explanation\">{{ opt.explanation }}</p>\r\n }\r\n @if (opt.type === 'status' && opt.statusOptions) {\r\n <div class=\"complex-filter-bar-docs-values\">\r\n @for (s of opt.statusOptions; track s.value) {\r\n <code class=\"complex-filter-bar-docs-value-badge\">{{ s.value }}</code>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"complex-filter-bar-docs-actions\">\r\n <monkey-button size=\"sm\" type=\"secondary\" (click)=\"closeDocs()\">\r\n Fechar\r\n </monkey-button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n `,\r\n styleUrl: './complex-filter-bar.component.scss',\r\n host: {\r\n '[attr.data-testid]': \"'monkey-complex-filter-bar'\",\r\n class: 'mecx-complex-filter-bar'\r\n }\r\n})\r\nexport class MonkeyComplexFilterBarComponent\r\n implements OnInit, OnChanges, AfterViewInit, OnDestroy\r\n{\r\n private _service = inject(MonkeyFilterBarService);\r\n\r\n key = input.required<string>();\r\n config = input<FilterBarConfig>();\r\n placeholder = input<string>();\r\n\r\n @Output() complexFilterChange = new EventEmitter<ComplexFilterResult>();\r\n\r\n @ViewChild('queryInput') private _queryInputRef?: ElementRef<HTMLTextAreaElement>;\r\n\r\n // Input state\r\n complexQuery = '';\r\n queryError = '';\r\n autocompleteItems: AutocompleteSuggestion[] = [];\r\n autocompleteActiveIndex = -1;\r\n\r\n // Docs panel state\r\n showDocsPanel = false;\r\n docsPanelTarget: HTMLElement | null = null;\r\n\r\n serviceConfig = computed(() => {\r\n const k = this.key();\r\n return k ? this._service.getConfig(k) ?? this.config() : undefined;\r\n });\r\n\r\n allFilterOptions = computed(() => this.serviceConfig()?.filterOptions ?? []);\r\n\r\n queryPlaceholder = computed(\r\n () => this.placeholder() ?? 'campo:valor AND (campo>valor OR campo<valor)'\r\n );\r\n\r\n hasActiveQuery = computed(() => {\r\n const k = this.key();\r\n return k ? !!this._service.getComplexQuery(k) : false;\r\n });\r\n\r\n constructor() {\r\n effect(() => {\r\n const k = this.key();\r\n const cfg = this.config();\r\n if (k && cfg) this._service.setConfig(k, cfg);\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n const k = this.key();\r\n const cfg = this.config();\r\n if (k && cfg) this._service.setConfig(k, cfg);\r\n if (k) this.complexQuery = this._service.getComplexQuery(k);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.complexQuery && this._queryInputRef) {\r\n this._autoResize(this._queryInputRef.nativeElement);\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const k = this.key();\r\n const cfg = this.config();\r\n if (k && cfg && (changes['key'] || changes['config'])) {\r\n this._service.setConfig(k, cfg);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {}\r\n\r\n // ─── Validation ─────────────────────────────────────────────────────────────\r\n\r\n private validateQuery(query: string): string {\r\n if (!query.trim()) return '';\r\n\r\n // Check balanced parentheses\r\n let depth = 0;\r\n for (const ch of query) {\r\n if (ch === '(') depth++;\r\n else if (ch === ')') depth--;\r\n if (depth < 0) return 'Parênteses desbalanceados';\r\n }\r\n if (depth !== 0) return 'Parênteses desbalanceados';\r\n\r\n // Check field names only on tokens that already have an operator\r\n const validKeys = new Set(this.allFilterOptions().map((o) => o.key));\r\n const tokenPattern = /([a-zA-Z_][a-zA-Z0-9_]*)([:<>])/g;\r\n let match: RegExpExecArray | null;\r\n while ((match = tokenPattern.exec(query)) !== null) {\r\n if (!validKeys.has(match[1])) {\r\n return `Campo inválido: \"${match[1]}\"`;\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n // ─── Textarea helpers ────────────────────────────────────────────────────────\r\n\r\n private _autoResize(el: HTMLTextAreaElement): void {\r\n el.style.height = 'auto';\r\n el.style.height = `${el.scrollHeight}px`;\r\n }\r\n\r\n // ─── Query input handlers ───────────────────────────────────────────────────\r\n\r\n onInputFocus(textarea: HTMLTextAreaElement): void {\r\n const k = this.key();\r\n if (!k) return;\r\n this.autocompleteActiveIndex = -1;\r\n this.autocompleteItems = this._service.getAutocompleteSuggestions(\r\n k,\r\n textarea.value,\r\n textarea.selectionStart ?? textarea.value.length\r\n );\r\n }\r\n\r\n onTextareaInput(textarea: HTMLTextAreaElement): void {\r\n this._autoResize(textarea);\r\n }\r\n\r\n onQueryInput(textarea: HTMLTextAreaElement): void {\r\n const k = this.key();\r\n if (!k) return;\r\n this.queryError = this.validateQuery(textarea.value);\r\n this.autocompleteActiveIndex = -1;\r\n this.autocompleteItems = this._service.getAutocompleteSuggestions(\r\n k,\r\n textarea.value,\r\n textarea.selectionStart ?? textarea.value.length\r\n );\r\n }\r\n\r\n onKeydown(event: KeyboardEvent, textarea: HTMLTextAreaElement): void {\r\n if (event.key === 'Escape') {\r\n this.autocompleteItems = [];\r\n this.autocompleteActiveIndex = -1;\r\n return;\r\n }\r\n\r\n if (this.autocompleteItems.length > 0) {\r\n if (event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n this.autocompleteActiveIndex = Math.min(\r\n this.autocompleteActiveIndex + 1,\r\n this.autocompleteItems.length - 1\r\n );\r\n return;\r\n }\r\n if (event.key === 'ArrowUp') {\r\n event.preventDefault();\r\n this.autocompleteActiveIndex = Math.max(this.autocompleteActiveIndex - 1, -1);\r\n return;\r\n }\r\n if ((event.key === 'Enter' || event.key === 'Tab') && this.autocompleteActiveIndex >= 0) {\r\n event.preventDefault();\r\n this.onSelectSuggestion(this.autocompleteItems[this.autocompleteActiveIndex], textarea);\r\n return;\r\n }\r\n }\r\n\r\n // Ctrl+Enter / Cmd+Enter applies the query; plain Enter inserts a newline\r\n if (event.key === 'Enter' && (event.ctrlKey || event.metaKey)) {\r\n event.preventDefault();\r\n this.applyQuery();\r\n }\r\n }\r\n\r\n onSelectSuggestion(item: AutocompleteSuggestion, textarea: HTMLTextAreaElement): void {\r\n const k = this.key();\r\n if (!k) return;\r\n\r\n const cursorPos = textarea.selectionStart ?? textarea.value.length;\r\n const textBefore = this.complexQuery.substring(0, cursorPos);\r\n const textAfter = this.complexQuery.substring(cursorPos);\r\n\r\n // Find start of current token (scan back over non-whitespace, non-paren chars)\r\n let tokenStart = cursorPos;\r\n while (tokenStart > 0 && !/[\\s()]/.test(textBefore[tokenStart - 1])) tokenStart--;\r\n\r\n let replacement: string;\r\n\r\n if (item.type === 'value') {\r\n const currentToken = textBefore.substring(tokenStart);\r\n const opMatch = currentToken.match(/^([a-zA-Z_][a-zA-Z0-9_]*)([:<>])(.*)$/);\r\n replacement = opMatch\r\n ? textBefore.substring(0, tokenStart) + opMatch[1] + opMatch[2] + item.insertValue\r\n : textBefore.substring(0, tokenStart) + item.insertValue;\r\n } else {\r\n replacement = textBefore.substring(0, tokenStart) + item.insertValue;\r\n }\r\n\r\n this.complexQuery = replacement + textAfter;\r\n this.queryError = this.validateQuery(this.complexQuery);\r\n this.autocompleteItems = [];\r\n this.autocompleteActiveIndex = -1;\r\n\r\n setTimeout(() => {\r\n textarea.focus();\r\n const newCursor = replacement.length;\r\n textarea.setSelectionRange(newCursor, newCursor);\r\n this._autoResize(textarea);\r\n this.autocompleteItems = this._service.getAutocompleteSuggestions(\r\n k,\r\n this.complexQuery,\r\n newCursor\r\n );\r\n });\r\n }\r\n\r\n onInputBlur(): void {\r\n setTimeout(() => {\r\n this.autocompleteItems = [];\r\n this.autocompleteActiveIndex = -1;\r\n }, 150);\r\n }\r\n\r\n applyQuery(): void {\r\n const k = this.key();\r\n if (!k) return;\r\n const trimmed = this.complexQuery.trim();\r\n if (!trimmed) {\r\n this.clearQuery();\r\n return;\r\n }\r\n this.queryError = this.validateQuery(trimmed);\r\n if (this.queryError) return;\r\n this._service.setComplexQuery(k, trimmed);\r\n const groups = this._service.parseComplexQuery(trimmed);\r\n this.complexFilterChange.emit({ raw: trimmed, groups });\r\n }\r\n\r\n clearQuery(): void {\r\n const k = this.key();\r\n if (k) this._service.clearComplexQuery(k);\r\n this.complexQuery = '';\r\n this.queryError = '';\r\n this.autocompleteItems = [];\r\n if (this._queryInputRef) this._autoResize(this._queryInputRef.nativeElement);\r\n this.complexFilterChange.emit({ raw: '', groups: [] });\r\n }\r\n\r\n // ─── Docs panel ─────────────────────────────────────────────────────────────\r\n\r\n onShowDocs(event: MouseEvent): void {\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n this.docsPanelTarget = event.currentTarget as HTMLElement;\r\n this.showDocsPanel = true;\r\n }\r\n\r\n closeDocs = () => {\r\n this.showDocsPanel = false;\r\n };\r\n}\r\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\n\nexport type FilterType = 'text' | 'date' | 'currency' | 'status';\n\nexport interface StatusOption {\n value: string;\n description: string;\n}\n\nexport interface FilterOption {\n key: string;\n label: string;\n icon?: string;\n type: FilterType;\n placeholder?: string;\n minDate?: Date | string;\n maxDate?: Date | string;\n currency?: string;\n statusOptions?: StatusOption[];\n /** Human-readable explanation shown in the complex filter documentation panel */\n explanation?: string;\n}\n\nexport interface ActiveFilter {\n key: string;\n label: string;\n type: FilterType;\n value: string | { startDate: string; endDate: string } | { min?: number; max?: number } | string[];\n displayText: string;\n icon?: string;\n}\n\nexport interface FilterBarConfig {\n filterOptions: FilterOption[];\n searchPlaceholder?: string;\n}\n\n// ─── Complex filter types ────────────────────────────────────────────────────\n\nexport type ComplexFilterOperator = ':' | '>' | '<';\n\nexport interface ComplexFilterCondition {\n logicalOp?: 'AND' | 'OR';\n field: string;\n operator: ComplexFilterOperator;\n value: string;\n}\n\nexport interface ComplexFilterGroup {\n /** Logical operator connecting this group to the previous one */\n logicalOp?: 'AND' | 'OR';\n conditions: ComplexFilterCondition[];\n}\n\nexport interface ComplexFilterResult {\n raw: string;\n groups: ComplexFilterGroup[];\n}\n\nexport type AutocompleteSuggestionType = 'field' | 'logical' | 'value';\n\nexport interface AutocompleteSuggestion {\n type: AutocompleteSuggestionType;\n label: string;\n /** Field key shown as secondary text for field suggestions */\n sublabel?: string;\n /** Text spliced into the query when the suggestion is selected */\n insertValue: string;\n explanation?: string;\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nexport * from './complex-filter-bar.component';\nexport * from './complex-filter-bar.service';\nexport * from './filter-config.interface';\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\n\nexport type MonkeyFilterBarType = 'text' | 'date' | 'currency' | 'status';\n\nexport interface MonkeyFilterBarStatusOption {\n readonly value: string;\n readonly description: string;\n}\n\nexport type MonkeyFilterOperator =\n | 'EQ'\n | 'NEQ'\n | 'LIKE'\n | 'NOT_LIKE'\n | 'STARTS_WITH'\n | 'ENDS_WITH'\n | 'IS_EMPTY'\n | 'BETWEEN'\n | 'GT'\n | 'LT'\n | 'BEFORE'\n | 'AFTER';\n\nexport type MonkeyFilterCondition = MonkeyFilterOperator | '';\n\nexport type MonkeyFilterConditionsByType = Partial<\n Record<MonkeyFilterBarType, readonly MonkeyFilterOperator[]>\n>;\n\nexport interface MonkeyFilterBarOption {\n readonly key: string;\n readonly label: string;\n readonly icon?: string;\n readonly type: MonkeyFilterBarType;\n\n readonly placeholder?: string;\n readonly minDate?: Date | string;\n readonly maxDate?: Date | string;\n readonly currency?: string;\n\n readonly statusOptions?: readonly MonkeyFilterBarStatusOption[];\n\n readonly conditions?: readonly MonkeyFilterOperator[];\n}\n\nexport interface MonkeyFilterBarConfig {\n readonly filterOptions: readonly MonkeyFilterBarOption[];\n\n readonly conditions?: MonkeyFilterConditionsByType;\n}\n\nexport type MonkeyFilterArity = 0 | 1 | 2;\n\nexport type MonkeyFilterPanel = 'none' | 'status' | 'field' | 'date-day' | 'date-range';\n\nexport type MonkeyFilterOperand =\n | { readonly kind: 'text'; readonly value: string }\n | { readonly kind: 'number'; readonly value: number }\n | { readonly kind: 'date'; readonly value: string }\n | { readonly kind: 'selection'; readonly values: readonly string[] };\n\nexport interface MonkeyAppliedFilter {\n readonly key: string;\n readonly label: string;\n readonly type: MonkeyFilterBarType;\n readonly condition: MonkeyFilterOperator;\n readonly operands: readonly MonkeyFilterOperand[];\n}\n\nexport interface MonkeyFilterRow {\n readonly key: string;\n readonly label: string;\n readonly icon?: string;\n readonly type: MonkeyFilterBarType;\n readonly condition: MonkeyFilterCondition;\n readonly operands: readonly MonkeyFilterOperand[];\n}\n\nconst CONDITIONS: Record<MonkeyFilterBarType, readonly MonkeyFilterOperator[]> = {\n text: ['LIKE', 'NOT_LIKE', 'STARTS_WITH', 'ENDS_WITH', 'IS_EMPTY'],\n currency: ['EQ', 'NEQ', 'BETWEEN', 'GT', 'LT'],\n date: ['EQ', 'NEQ', 'BETWEEN', 'BEFORE', 'AFTER'],\n status: ['EQ', 'NEQ']\n};\n\nconst SUPPORTED: Record<MonkeyFilterBarType, ReadonlySet<MonkeyFilterOperator>> = {\n text: new Set<MonkeyFilterOperator>([\n 'EQ',\n 'NEQ',\n 'LIKE',\n 'NOT_LIKE',\n 'STARTS_WITH',\n 'ENDS_WITH',\n 'BETWEEN',\n 'IS_EMPTY'\n ]),\n currency: new Set<MonkeyFilterOperator>(['EQ', 'NEQ', 'BETWEEN', 'GT', 'LT', 'IS_EMPTY']),\n date: new Set<MonkeyFilterOperator>(['EQ', 'NEQ', 'BETWEEN', 'BEFORE', 'AFTER', 'IS_EMPTY']),\n status: new Set<MonkeyFilterOperator>(['EQ', 'NEQ', 'IS_EMPTY'])\n};\n\nconst NO_OPERAND = new Set<MonkeyFilterCondition>(['IS_EMPTY']);\n\nconst TWO_OPERANDS = new Set<MonkeyFilterCondition>(['BETWEEN']);\n\nexport function supportedConditionsOf(type: MonkeyFilterBarType): readonly MonkeyFilterOperator[] {\n return SUPPORTED[type] ? [...SUPPORTED[type]] : [];\n}\n\nexport function conditionsOf(\n type: MonkeyFilterBarType,\n requested?: readonly MonkeyFilterOperator[]\n): readonly MonkeyFilterOperator[] {\n const fallback = CONDITIONS[type] ?? [];\n if (!requested?.length) return fallback;\n\n const supported = SUPPORTED[type];\n if (!supported) return fallback;\n\n const picked = requested.filter((operator, index) => {\n return supported.has(operator) && requested.indexOf(operator) === index;\n });\n\n return picked.length > 0 ? picked : fallback;\n}\n\nexport function conditionsForOption(\n option: Pick<MonkeyFilterBarOption, 'type' | 'conditions'> | undefined,\n byType?: MonkeyFilterConditionsByType\n): readonly MonkeyFilterOperator[] {\n if (!option) return [];\n return conditionsOf(option.type, option.conditions ?? byType?.[option.type]);\n}\n\nexport function arityOf(condition: MonkeyFilterCondition): MonkeyFilterArity {\n if (NO_OPERAND.has(condition)) return 0;\n if (TWO_OPERANDS.has(condition)) return 2;\n return 1;\n}\n\nexport function panelOf(\n type: MonkeyFilterBarType,\n condition: MonkeyFilterCondition\n): MonkeyFilterPanel {\n if (!condition || arityOf(condition) === 0) return 'none';\n\n switch (type) {\n case 'status':\n return 'status';\n case 'date':\n return arityOf(condition) === 2 ? 'date-range' : 'date-day';\n default:\n return 'field';\n }\n}\n\nexport function isComplete(row: MonkeyFilterRow): boolean {\n return !!row.condition && row.operands.length === arityOf(row.condition);\n}\n\nexport function appliedFrom(rows: readonly MonkeyFilterRow[]): MonkeyAppliedFilter[] {\n return rows.filter(isComplete).map((row) => {\n return {\n key: row.key,\n label: row.label,\n type: row.type,\n condition: row.condition as MonkeyFilterOperator,\n operands: row.operands\n };\n });\n}\n\nexport function withCondition(\n row: MonkeyFilterRow,\n condition: MonkeyFilterOperator\n): MonkeyFilterRow {\n const sameArity = arityOf(row.condition) === arityOf(condition);\n if (sameArity) return { ...row, condition };\n return { ...row, condition, operands: [] };\n}\n\nexport function withType(\n row: MonkeyFilterRow,\n next: { key: string; label: string; icon?: string; type: MonkeyFilterBarType },\n allowed: readonly MonkeyFilterOperator[] = conditionsOf(next.type)\n): MonkeyFilterRow {\n const condition = allowed.includes(row.condition as MonkeyFilterOperator) ? row.condition : '';\n return { ...next, condition, operands: [] };\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n NgZone,\n OnDestroy,\n signal,\n ViewEncapsulation,\n viewChild\n} from '@angular/core';\n\nexport type MonkeyScrollbarOrientation = 'horizontal' | 'vertical';\n\n/** `small` = 8px track (menus) · `medium` = 16px (page bar, what the table uses). */\nexport type MonkeyScrollbarSize = 'small' | 'medium';\n\n/**\n * Shortest the thumb may get, in px — matches the `--mecx-spaces-medium`\n * floor in the stylesheet. A very long list would otherwise give a 2px thumb,\n * too small to grab.\n */\nconst MIN_THUMB = 24;\n\n/**\n * A DRAWN scrollbar, not the native one styled — a native scrollbar can't\n * live outside the element that scrolls (e.g. below a table's rows, next to\n * its footer), and cross-browser track styling (radius, border) is\n * inconsistent enough that matching a design exactly isn't reliable with\n * `::-webkit-scrollbar`/`scrollbar-color` alone.\n *\n * It does NOT replace real scrolling: `target` keeps its own\n * `overflow: auto`, so keyboard, wheel and trackpad scrolling all keep\n * working — this is a draggable mirror drawn on top. That's also why it's\n * `aria-hidden`: a screen reader user scrolls the real region, and a second\n * widget announcing the same position would only add noise.\n */\n@Component({\n selector: 'monkey-scrollbar',\n templateUrl: './scrollbar.component.html',\n styleUrl: './scrollbar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'mecx-scrollbar',\n 'aria-hidden': 'true',\n '[class.mecx-scrollbar--horizontal]': \"orientation() === 'horizontal'\",\n '[class.mecx-scrollbar--vertical]': \"orientation() === 'vertical'\",\n '[class.mecx-scrollbar--small]': \"size() === 'small'\",\n '[class.mecx-scrollbar--medium]': \"size() === 'medium'\",\n '[class.mecx-scrollbar--inert]': '!scrollable()'\n }\n})\nexport class MonkeyScrollbarComponent implements OnDestroy {\n private readonly _zone = inject(NgZone);\n\n readonly orientation = input<MonkeyScrollbarOrientation>('horizontal');\n\n readonly size = input<MonkeyScrollbarSize>('medium');\n\n /** The element that actually scrolls. */\n readonly target = input.required<HTMLElement>();\n\n private readonly trackEl = viewChild.required<ElementRef<HTMLElement>>('track');\n\n /** Scrollable length of the content, in px. */\n private readonly total = signal(0);\n\n /** Visible length of the viewport, in px. */\n private readonly visible = signal(0);\n\n /** How far the target is scrolled, in px. */\n private readonly scrolled = signal(0);\n\n /** Length of the track the thumb slides along, in px. */\n private readonly trackLength = signal(0);\n\n protected readonly scrollable = computed(() => this.total() - this.visible() > 1);\n\n protected readonly thumbSize = computed(() => {\n const total = this.total();\n return `${total > 0 ? Math.min(1, this.visible() / total) * 100 : 100}%`;\n });\n\n /**\n * A px distance, applied as a `translate`, not as `left`/`top`: moving the\n * thumb then costs a composited transform instead of a layout pass on every\n * scroll frame. It has to be px rather than a percentage of the thumb\n * because the thumb has a minimum length — once that kicks in, a\n * percentage of its own (clamped) size no longer maps to track distance.\n */\n protected readonly thumbOffset = computed(() => {\n const total = this.total();\n const visible = this.visible();\n const track = this.trackLength();\n if (total <= 0 || track <= 0) return '0px';\n\n const thumb = Math.max(MIN_THUMB, (visible / total) * track);\n const free = Math.max(0, track - thumb);\n const progress = Math.min(1, Math.max(0, this.scrolled() / Math.max(1, total - visible)));\n return `${free * progress}px`;\n });\n\n private resizeObserver?: ResizeObserver;\n\n private observedTarget?: HTMLElement;\n\n /** Pending animation frame, 0 when none is queued. */\n private frame = 0;\n\n /** Whether the cached lengths need re-reading on the next frame. */\n private sizeStale = true;\n\n private readonly onScroll = () => this.schedule();\n\n /** Drag state. `null` = nobody is dragging. */\n private drag: { start: number; initialScroll: number } | null = null;\n\n constructor() {\n effect((onCleanup) => {\n const target = this.target();\n this.attach(target);\n onCleanup(() => this.detach());\n });\n }\n\n ngOnDestroy(): void {\n this.detach();\n }\n\n private attach(target: HTMLElement): void {\n this.detach();\n this.observedTarget = target;\n\n // Outside the Angular zone: a zone-patched 'scroll' listener costs a full\n // global change-detection pass per event. The signals `measure()` writes\n // still schedule change detection by themselves.\n this._zone.runOutsideAngular(() => {\n target.addEventListener('scroll', this.onScroll, { passive: true });\n\n // The target AND its content: the bar should disappear when the content\n // shrinks, not only when the container itself is resized — a column\n // removed from the table doesn't resize the scrolling wrapper, only how\n // far it needs to scroll. The track too, so the thumb's px offset stays\n // right when the bar itself changes width.\n this.resizeObserver = new ResizeObserver(() => this.schedule(true));\n this.resizeObserver.observe(target);\n this.resizeObserver.observe(this.trackEl().nativeElement);\n Array.from(target.children).forEach((child) => this.resizeObserver?.observe(child));\n });\n\n this.sizeStale = true;\n this.measure();\n }\n\n private detach(): void {\n this.observedTarget?.removeEventListener('scroll', this.onScroll);\n this.observedTarget = undefined;\n this.resizeObserver?.disconnect();\n this.resizeObserver = undefined;\n if (this.frame) cancelAnimationFrame(this.frame);\n this.frame = 0;\n }\n\n /**\n * Scroll events fire far more often than the screen refreshes, and each\n * measurement reads layout. Coalescing to one read per frame is what keeps\n * a long table from thrashing layout while it scrolls.\n */\n private schedule(resized = false): void {\n if (resized) this.sizeStale = true;\n if (this.frame) return;\n this.frame = this._zone.runOutsideAngular(() => {\n return requestAnimationFrame(() => {\n this.frame = 0;\n this.measure();\n });\n });\n }\n\n private measure(): void {\n const target = this.observedTarget;\n if (!target) return;\n\n const horizontal = this.orientation() === 'horizontal';\n\n // Only the scroll offset changes while scrolling; the lengths can't, so\n // re-reading them per frame would force layout for nothing.\n if (this.sizeStale) {\n this.sizeStale = false;\n const track = this.trackEl().nativeElement;\n this.total.set(horizontal ? target.scrollWidth : target.scrollHeight);\n this.visible.set(horizontal ? target.clientWidth : target.clientHeight);\n this.trackLength.set(horizontal ? track.clientWidth : track.clientHeight);\n }\n\n this.scrolled.set(horizontal ? target.scrollLeft : target.scrollTop);\n }\n\n protected onPointerDown(event: PointerEvent): void {\n const target = this.observedTarget;\n if (!target || !this.scrollable()) return;\n\n const horizontal = this.orientation() === 'horizontal';\n event.preventDefault();\n (event.target as HTMLElement).setPointerCapture(event.pointerId);\n\n this.drag = {\n start: horizontal ? event.clientX : event.clientY,\n initialScroll: horizontal ? target.scrollLeft : target.scrollTop\n };\n }\n\n protected onPointerMove(event: PointerEvent): void {\n const target = this.observedTarget;\n if (!this.drag || !target) return;\n\n const horizontal = this.orientation() === 'horizontal';\n const track = this.trackEl().nativeElement.getBoundingClientRect();\n const trackLength = horizontal ? track.width : track.height;\n if (trackLength <= 0) return;\n\n // One thumb pixel is worth (total / track) content pixels — without this\n // conversion, dragging moves at the wrong speed and the thumb drifts\n // away from the pointer.\n const total = horizontal ? target.scrollWidth : target.scrollHeight;\n const moved = (horizontal ? event.clientX : event.clientY) - this.drag.start;\n const destination = this.drag.initialScroll + moved * (total / trackLength);\n\n if (horizontal) target.scrollLeft = destination;\n else target.scrollTop = destination;\n }\n\n protected onPointerUp(event: PointerEvent): void {\n if (!this.drag) return;\n this.drag = null;\n (event.target as HTMLElement).releasePointerCapture?.(event.pointerId);\n }\n\n /** Clicking the track outside the thumb jumps the content there, centered on the click. */\n protected onTrackPointerDown(event: PointerEvent): void {\n const target = this.observedTarget;\n if (!target || !this.scrollable() || this.drag) return;\n\n const horizontal = this.orientation() === 'horizontal';\n const track = this.trackEl().nativeElement.getBoundingClientRect();\n const length = horizontal ? track.width : track.height;\n if (length <= 0) return;\n\n const point = horizontal ? event.clientX - track.left : event.clientY - track.top;\n const total = horizontal ? target.scrollWidth : target.scrollHeight;\n const visible = horizontal ? target.clientWidth : target.clientHeight;\n\n const destination = (point / length) * total - visible / 2;\n if (horizontal) target.scrollLeft = destination;\n else target.scrollTop = destination;\n }\n\n /**\n * Manual re-measure. Public on purpose: the automatic triggers (scroll,\n * ResizeObserver on the target and its children) cover what the browser\n * reports on its own — this is the escape hatch for what it doesn't, e.g.\n * a target swapped out from under the component.\n */\n remeasure(): void {\n this.sizeStale = true;\n this.measure();\n }\n}\n","<div #track class=\"mecx-scrollbar-track\" (pointerdown)=\"onTrackPointerDown($event)\">\n <div\n class=\"mecx-scrollbar-thumb\"\n [style.--mecx-scrollbar-thumb-size]=\"thumbSize()\"\n [style.--mecx-scrollbar-thumb-offset]=\"thumbOffset()\"\n (pointerdown)=\"onPointerDown($event)\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerup)=\"onPointerUp($event)\"\n (pointercancel)=\"onPointerUp($event)\"\n ></div>\n</div>\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nexport * from './scrollbar.component';\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n ViewEncapsulation\n} from '@angular/core';\n\n@Component({\n selector: 'monkey-filter-chip',\n templateUrl: './filter-chip.component.html',\n styleUrl: './filter-chip.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-testid': 'monkey-filter-chip',\n class: 'mecx-filter-chip',\n '[class.mecx-filter-chip--disabled]': 'disabled()'\n }\n})\nexport class MonkeyFilterChipComponent {\n readonly removeIcon = input<string>('trash');\n\n readonly removeLabel = input<string>('');\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly onRemove = output<void>();\n}\n","<ng-content></ng-content>\n<span class=\"mecx-filter-chip-action\">\n <button\n class=\"mecx-filter-chip-remove\"\n type=\"button\"\n [disabled]=\"disabled() || null\"\n [attr.aria-label]=\"removeLabel()\"\n (click)=\"onRemove.emit()\"\n >\n <i class=\"mk-i mk-i-{{ removeIcon() }}\" aria-hidden=\"true\"></i>\n </button>\n</span>\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n ViewEncapsulation\n} from '@angular/core';\nimport { MonkeyCheckboxComponent } from '../checkbox';\n\nexport type MonkeyFilterMenuItemProperty = 'text' | 'checkbox';\n\n@Component({\n selector: 'monkey-filter-menu-item',\n imports: [MonkeyCheckboxComponent],\n templateUrl: './filter-menu-item.component.html',\n styleUrl: './filter-menu-item.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-testid': 'monkey-filter-menu-item',\n class: 'mecx-filter-menu-item',\n role: 'option',\n '[class.mecx-filter-menu-item--disabled]': 'disabled()',\n '[class.mecx-filter-menu-item--selected]': 'selected()',\n '[attr.aria-selected]': 'selected() || checked()',\n '[attr.aria-disabled]': 'disabled() || null',\n '(click)': 'onClick()'\n }\n})\nexport class MonkeyFilterMenuItemComponent {\n readonly property = input<MonkeyFilterMenuItemProperty>('text');\n\n readonly leadIcon = input<string | null>(null);\n\n readonly label = input<string>('');\n\n readonly description = input<string | null>(null);\n\n readonly checked = input(false, { transform: booleanAttribute });\n\n readonly selected = input(false, { transform: booleanAttribute });\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly onItemClick = output<void>();\n\n protected onClick(): void {\n if (this.disabled()) return;\n this.onItemClick.emit();\n }\n}\n","@if (property() === 'checkbox') {\n <monkey-checkbox\n class=\"mecx-filter-menu-item-checkbox\"\n size=\"sm\"\n [value]=\"checked()\"\n [disabled]=\"disabled()\"\n [showFooter]=\"false\"\n ></monkey-checkbox>\n} @else if (leadIcon()) {\n <i class=\"mk-i mk-i-{{ leadIcon() }} mecx-filter-menu-item-icon\"></i>\n}\n\n<span class=\"mecx-filter-menu-item-text\">\n <span class=\"mecx-filter-menu-item-label\">{{ label() }}</span>\n @if (description()) {\n <span class=\"mecx-filter-menu-item-description\">{{ description() }}</span>\n }\n</span>\n@if (selected()) {\n <i class=\"mk-i mk-i-check mecx-filter-menu-item-check\"></i>\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n NgZone,\n OnDestroy,\n output,\n signal,\n ViewEncapsulation,\n viewChild\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MonkeyPrefixDirective } from '../../directives/prefix';\nimport { MonkeyFormFieldModule } from '../form-field';\nimport { MonkeyInputModule } from '../input';\n\n@Component({\n selector: 'monkey-filter-menu',\n imports: [FormsModule, MonkeyFormFieldModule, MonkeyInputModule, MonkeyPrefixDirective],\n templateUrl: './filter-menu.component.html',\n styleUrl: './filter-menu.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-testid': 'monkey-filter-menu',\n class: 'mecx-filter-menu'\n }\n})\nexport class MonkeyFilterMenuComponent implements OnDestroy {\n private readonly _zone = inject(NgZone);\n\n private readonly _items = viewChild<ElementRef<HTMLElement>>('items');\n\n private readonly _overflowing = signal(false);\n\n private _observer?: ResizeObserver;\n\n readonly showSearch = input(false, { transform: booleanAttribute });\n\n readonly searchPlaceholder = input<string>('');\n\n readonly showScroll = input(true, { transform: booleanAttribute });\n\n readonly maxHeight = input<number>(240);\n\n readonly onSearchChange = output<string>();\n\n protected searchValue = '';\n\n protected readonly scrolling = computed(() => {\n return this.showScroll() && this._overflowing();\n });\n\n constructor() {\n effect((onCleanup) => {\n const items = this._items()?.nativeElement;\n if (!items) return;\n\n this._zone.runOutsideAngular(() => {\n this._observer = new ResizeObserver(() => {\n this._overflowing.set(items.scrollHeight - items.clientHeight > 1);\n });\n this._observer.observe(items);\n Array.from(items.children).forEach((child) => {\n return this._observer?.observe(child);\n });\n });\n\n onCleanup(() => {\n return this.disconnect();\n });\n });\n }\n\n private disconnect(): void {\n this._observer?.disconnect();\n this._observer = undefined;\n }\n\n ngOnDestroy(): void {\n this.disconnect();\n }\n\n protected onSearchInput(value: string): void {\n this.searchValue = value;\n this.onSearchChange.emit(value);\n }\n}\n","@if (showSearch()) {\n <div class=\"mecx-filter-menu-search\">\n <monkey-form-field size=\"sm\" noFooterSpace>\n <input\n type=\"text\"\n monkey-input\n [placeholder]=\"searchPlaceholder()\"\n [ngModel]=\"searchValue\"\n (ngModelChange)=\"onSearchInput($event)\"\n />\n <monkey-prefix>\n <i class=\"mk-i mk-i-search fs-md\"></i>\n </monkey-prefix>\n </monkey-form-field>\n </div>\n}\n\n<div\n #items\n class=\"mecx-filter-menu-items\"\n [class.mecx-filter-menu-items--scroll]=\"showScroll()\"\n [class.mecx-filter-menu-items--scrolling]=\"scrolling()\"\n [style.max-height.px]=\"showScroll() ? maxHeight() : null\"\n>\n <ng-content></ng-content>\n</div>\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\n\ninterface Gaps {\n readonly top: number;\n readonly left: number;\n}\n\nexport type MenuAlignment = 'start' | 'end';\n\nfunction horizontalOf(\n target: DOMRect,\n width: number,\n gap: number,\n alignment: MenuAlignment\n): number {\n const atStart = target.left + gap;\n const atEnd = target.right - width - gap;\n const preferred = alignment === 'end' ? atEnd : atStart;\n\n const viewport = document.documentElement.clientWidth || 0;\n if (viewport <= 0) return preferred;\n\n const fits = (x: number): boolean => {\n return x >= 0 && x + width <= viewport;\n };\n if (fits(preferred)) return preferred;\n\n const opposite = alignment === 'end' ? atStart : atEnd;\n if (fits(opposite)) return opposite;\n\n return Math.max(0, Math.min(preferred, viewport - width));\n}\n\nfunction ownOffset(menu: HTMLElement): { x: number; y: number } {\n const raw = getComputedStyle(menu).translate;\n if (!raw || raw === 'none') return { x: 0, y: 0 };\n const [x, y] = raw.split(' ');\n return { x: parseFloat(x) || 0, y: parseFloat(y ?? '') || 0 };\n}\n\nfunction place(\n target: DOMRect,\n menu: HTMLElement,\n gaps: Gaps,\n alignment: MenuAlignment\n): void {\n const own = ownOffset(menu);\n const appliedTop = parseFloat(menu.style.top) || 0;\n const appliedLeft = parseFloat(menu.style.left) || 0;\n\n const current = menu.getBoundingClientRect();\n const originTop = current.top - own.y - appliedTop;\n const originLeft = current.left - own.x - appliedLeft;\n\n const x = horizontalOf(target, current.width, gaps.left, alignment);\n const y = target.bottom + gaps.top;\n\n menu.style.top = `${y - originTop}px`;\n menu.style.left = `${x - originLeft}px`;\n}\n\nfunction scrollingAncestor(el: HTMLElement): HTMLElement | null {\n let node = el.parentElement;\n while (node) {\n const { overflowX, overflowY } = getComputedStyle(node);\n if (/(auto|scroll|hidden|clip)/.test(overflowX + overflowY)) return node;\n node = node.parentElement;\n }\n return null;\n}\n\nfunction outOfSight(trigger: HTMLElement, target: DOMRect): boolean {\n const vh = document.documentElement.clientHeight || 0;\n const vw = document.documentElement.clientWidth || 0;\n if (vh <= 0 || vw <= 0) return false;\n if (target.bottom <= 0 || target.top >= vh) return true;\n if (target.right <= 0 || target.left >= vw) return true;\n\n const scroller = scrollingAncestor(trigger);\n if (!scroller) return false;\n const rect = scroller.getBoundingClientRect();\n if (rect.width <= 0 || rect.height <= 0) return false;\n return (\n target.bottom <= rect.top ||\n target.top >= rect.bottom ||\n target.right <= rect.left ||\n target.left >= rect.right\n );\n}\n\nfunction readGaps(menu: HTMLElement): Gaps {\n const style = getComputedStyle(menu);\n return {\n top: parseFloat(style.marginTop) || 0,\n left: parseFloat(style.marginLeft) || 0\n };\n}\n\nexport function anchorMenu(\n trigger: HTMLElement,\n menu: HTMLElement,\n alignment: MenuAlignment = 'start',\n onOutOfSight?: () => void\n): () => void {\n const gaps = readGaps(menu);\n\n if (!menu.style.top) {\n menu.style.top = '0px';\n menu.style.left = '0px';\n }\n\n const reposition = (): void => {\n const target = trigger.getBoundingClientRect();\n if (onOutOfSight && outOfSight(trigger, target)) {\n onOutOfSight();\n return;\n }\n place(target, menu, gaps, alignment);\n };\n\n const onTransitionEnd = (event: Event): void => {\n if ((event as TransitionEvent).propertyName === 'translate') reposition();\n };\n\n const onAnimationEnd = (event: Event): void => {\n const node = event.target as Node | null;\n if (node?.contains(menu)) reposition();\n };\n\n const observer = new ResizeObserver(() => {\n reposition();\n });\n observer.observe(menu);\n\n reposition();\n document.addEventListener('scroll', reposition, { capture: true, passive: true });\n document.addEventListener('transitionend', onTransitionEnd, { capture: true, passive: true });\n document.addEventListener('animationend', onAnimationEnd, { capture: true, passive: true });\n window.addEventListener('resize', reposition, { passive: true });\n\n return () => {\n observer.disconnect();\n document.removeEventListener('scroll', reposition, { capture: true });\n document.removeEventListener('transitionend', onTransitionEnd, { capture: true });\n document.removeEventListener('animationend', onAnimationEnd, { capture: true });\n window.removeEventListener('resize', reposition);\n };\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n output,\n ViewEncapsulation,\n viewChild\n} from '@angular/core';\nimport { anchorMenu } from './anchored-menu';\n\n@Component({\n selector: 'monkey-filter-segment',\n templateUrl: './filter-segment.component.html',\n styleUrl: './filter-segment.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-testid': 'monkey-filter-segment',\n class: 'mecx-filter-segment',\n '[class.mecx-filter-segment--open]': 'open()',\n '[class.mecx-filter-segment--filled]': 'filled()',\n '[class.mecx-filter-segment--disabled]': 'disabled()',\n '(document:pointerdown)': 'onDocumentPointerdown($event)',\n '(document:keydown.escape)': 'onEscape()'\n }\n})\nexport class MonkeyFilterSegmentComponent {\n private readonly _hostEl: ElementRef<HTMLElement> = inject(ElementRef);\n\n private readonly _menuEl = viewChild<ElementRef<HTMLElement>>('menu');\n\n readonly icon = input<string | null>(null);\n\n readonly text = input<string>('');\n\n readonly placeholder = input<string>('');\n\n readonly readonlySegment = input(false, { transform: booleanAttribute });\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly open = input(false, { transform: booleanAttribute });\n\n readonly onOpenChange = output<boolean>();\n\n readonly onSegmentClick = output<void>();\n\n readonly filled = computed(() => {\n return this.text().length > 0;\n });\n\n readonly label = computed(() => {\n return this.filled() ? this.text() : this.placeholder();\n });\n\n constructor() {\n effect((onCleanup) => {\n const menu = this._menuEl()?.nativeElement;\n if (!menu) return;\n\n onCleanup(anchorMenu(this._hostEl.nativeElement, menu, 'start'));\n });\n }\n\n private focusButton(): void {\n this._hostEl.nativeElement.querySelector<HTMLElement>('.mecx-filter-segment-btn')?.focus();\n }\n\n toggle(): void {\n if (this.disabled()) return;\n this.onSegmentClick.emit();\n if (this.readonlySegment()) return;\n this.onOpenChange.emit(!this.open());\n }\n\n onDocumentPointerdown(event: PointerEvent): void {\n if (!this.open()) return;\n const target = event.target as Node | null;\n if (target && this._hostEl.nativeElement.contains(target)) return;\n this.onOpenChange.emit(false);\n }\n\n onEscape(): void {\n if (!this.open()) return;\n this.onOpenChange.emit(false);\n this.focusButton();\n }\n\n closeAndFocus(): void {\n this.onOpenChange.emit(false);\n this.focusButton();\n }\n}\n","<button\n class=\"mecx-filter-segment-btn\"\n type=\"button\"\n [disabled]=\"disabled() || null\"\n [attr.aria-expanded]=\"readonlySegment() ? null : open()\"\n [attr.aria-haspopup]=\"readonlySegment() ? null : 'listbox'\"\n (click)=\"toggle()\"\n>\n @if (icon()) {\n <i class=\"mk-i mk-i-{{ icon() }} mecx-filter-segment-icon\" aria-hidden=\"true\"></i>\n }\n <span class=\"mecx-filter-segment-label\">{{ label() }}</span>\n</button>\n@if (open()) {\n <div\n #menu\n class=\"mecx-filter-segment-menu\"\n animate.enter=\"mecx-filter-segment-menu--entering\"\n animate.leave=\"mecx-filter-segment-menu--leaving\"\n >\n <ng-content></ng-content>\n </div>\n}\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n output,\r\n ViewEncapsulation,\r\n viewChild\r\n} from '@angular/core';\r\nimport { MonkeyButtonComponent } from '../button';\r\nimport { anchorMenu, type MenuAlignment } from './anchored-menu';\r\n\r\nexport type MonkeyFilterTriggerVariant = 'text' | 'icon';\r\n\r\n@Component({\r\n selector: 'monkey-filter-trigger',\r\n imports: [MonkeyButtonComponent],\r\n templateUrl: './filter-trigger.component.html',\r\n styleUrl: './filter-trigger.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n 'data-testid': 'monkey-filter-trigger',\r\n class: 'mecx-filter-trigger',\r\n '[class.mecx-filter-trigger--text]': 'variant() === \"text\"',\r\n '[class.mecx-filter-trigger--icon]': 'variant() === \"icon\"',\r\n '[class.mecx-filter-trigger--open]': 'open()',\r\n '(document:pointerdown)': 'onDocumentPointerdown($event)',\r\n '(document:keydown.escape)': 'onEscape()'\r\n }\r\n})\r\nexport class MonkeyFilterTriggerComponent {\r\n private readonly _hostEl: ElementRef<HTMLElement> = inject(ElementRef);\r\n\r\n private readonly _menuEl = viewChild<ElementRef<HTMLElement>>('menu');\r\n\r\n readonly variant = input<MonkeyFilterTriggerVariant>('text');\r\n\r\n readonly icon = input<string>('filter');\r\n\r\n readonly text = input<string>('');\r\n\r\n readonly ariaLabel = input<string>('');\r\n\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n readonly immediateExit = input(false, { transform: booleanAttribute });\r\n\r\n readonly open = input(false, { transform: booleanAttribute });\r\n\r\n readonly alignment = input<MenuAlignment | null>(null);\r\n\r\n readonly onOpenChange = output<boolean>();\r\n\r\n readonly ariaLabelAttr = computed(() => {\r\n return this.variant() === 'icon' ? this.ariaLabel() || null : null;\r\n });\r\n\r\n readonly menuAlignment = computed<MenuAlignment>(() => {\r\n return this.alignment() ?? (this.variant() === 'text' ? 'start' : 'end');\r\n });\r\n\r\n constructor() {\r\n effect((onCleanup) => {\r\n const menu = this._menuEl()?.nativeElement;\r\n if (!menu) return;\r\n\r\n onCleanup(\r\n anchorMenu(this._hostEl.nativeElement, menu, this.menuAlignment(), () => {\r\n return this.onOpenChange.emit(false);\r\n })\r\n );\r\n });\r\n }\r\n\r\n toggle(): void {\r\n if (this.disabled()) return;\r\n this.onOpenChange.emit(!this.open());\r\n }\r\n\r\n onDocumentPointerdown(event: PointerEvent): void {\r\n if (!this.open()) return;\r\n const target = event.target as Node | null;\r\n if (target && this._hostEl.nativeElement.contains(target)) return;\r\n this.onOpenChange.emit(false);\r\n }\r\n\r\n onEscape(): void {\r\n if (!this.open()) return;\r\n this.onOpenChange.emit(false);\r\n this._hostEl.nativeElement\r\n .querySelector<HTMLElement>('.mecx-filter-trigger-btn button')\r\n ?.focus();\r\n }\r\n}\r\n","<monkey-button\n class=\"mecx-filter-trigger-btn\"\n type=\"secondary\"\n size=\"sm\"\n nativeType=\"button\"\n ariaHasPopup=\"listbox\"\n [disabled]=\"disabled()\"\n [ariaExpanded]=\"open()\"\n [ariaLabel]=\"ariaLabelAttr()\"\n (click)=\"toggle()\"\n>\n <i class=\"mk-i mk-i-{{ icon() }} mecx-filter-trigger-icon\" aria-hidden=\"true\"></i>\n @if (variant() === 'text') {\n <span class=\"mecx-filter-trigger-text\">{{ text() }}</span>\n }\n</monkey-button>\n@if (open()) {\n <div\n #menu\n class=\"mecx-filter-trigger-menu\"\n animate.enter=\"mecx-filter-trigger-menu--entering\"\n [animate.leave]=\"immediateExit() ? '' : 'mecx-filter-trigger-menu--leaving'\"\n >\n <ng-content></ng-content>\n </div>\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\n\nlet painted = false;\n\nif (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n painted = true;\n });\n });\n}\n\nexport function appPainted(): boolean {\n return painted;\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\n\nexport const FLIP_ATTR = 'data-flip-id';\n\nexport function measureFlip(container: HTMLElement): Map<string, DOMRect> {\n const before = new Map<string, DOMRect>();\n container.querySelectorAll<HTMLElement>(`[${FLIP_ATTR}]`).forEach((el) => {\n const id = el.getAttribute(FLIP_ATTR);\n if (id) before.set(id, el.getBoundingClientRect());\n });\n return before;\n}\n\nexport function animateFlip(\n container: HTMLElement,\n before: Map<string, DOMRect>,\n frozenClass: string\n): void {\n const moved: HTMLElement[] = [];\n\n container.querySelectorAll<HTMLElement>(`[${FLIP_ATTR}]`).forEach((el) => {\n const id = el.getAttribute(FLIP_ATTR);\n if (!id) return;\n\n const from = before.get(id);\n\n if (!from) return;\n\n const to = el.getBoundingClientRect();\n const dx = from.left - to.left;\n const dy = from.top - to.top;\n if (dx === 0 && dy === 0) return;\n\n el.classList.add(frozenClass);\n el.style.translate = `${dx}px ${dy}px`;\n moved.push(el);\n });\n\n if (moved.length === 0) return;\n\n void container.offsetWidth;\n\n moved.forEach((el) => {\n el.classList.remove(frozenClass);\n el.style.translate = '';\n });\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\n\nimport { CurrencyPipe } from '@angular/common';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DEFAULT_CURRENCY_CODE,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n LOCALE_ID,\n output,\n signal,\n untracked,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { addDays, addMonths, format, parseISO, subDays, subMonths } from 'date-fns';\nimport { MonkeyDictionaryService } from '../../services';\nimport { MonkeyButtonComponent } from '../button';\nimport { MonkeyDateRangeComponent } from '../date-range';\nimport { MonkeyDividerComponent } from '../divider';\nimport { getCurrencySymbol, MonkeyFormFieldModule } from '../form-field';\nimport { MonkeyInputModule } from '../input';\nimport { MonkeyScrollbarComponent } from '../scrollbar';\nimport {\n appliedFrom,\n arityOf,\n conditionsForOption,\n isComplete,\n panelOf,\n withCondition,\n withType,\n type MonkeyAppliedFilter,\n type MonkeyFilterBarConfig,\n type MonkeyFilterBarOption,\n type MonkeyFilterCondition,\n type MonkeyFilterOperand,\n type MonkeyFilterOperator,\n type MonkeyFilterPanel,\n type MonkeyFilterRow\n} from './filter-bar-domain';\nimport { MonkeyFilterChipComponent } from './filter-chip.component';\nimport { MonkeyFilterMenuItemComponent } from './filter-menu-item.component';\nimport { MonkeyFilterMenuComponent } from './filter-menu.component';\nimport { MonkeyFilterSegmentComponent } from './filter-segment.component';\nimport { MonkeyFilterTriggerComponent } from './filter-trigger.component';\nimport { appPainted } from './first-paint';\nimport { animateFlip, FLIP_ATTR, measureFlip } from './flip';\n\ninterface OpenPanel {\n readonly key: string;\n readonly part: 'category' | 'condition' | 'value';\n}\n\ninterface FilterBarText {\n ADD: string;\n 'ADD-ARIA': string;\n REMOVE: string;\n CLEAR: string;\n SEARCH: string;\n 'SELECT-CONDITION': string;\n SELECT: string;\n CONFIRM: string;\n 'RANGE-FROM': string;\n 'RANGE-TO': string;\n SELECTED: string;\n DATE: Record<string, string>;\n OPERATOR: Record<string, string>;\n}\n\nconst DATE_SHORTCUTS: readonly {\n readonly key: string;\n readonly resolve: (today: Date) => { start: Date; end: Date };\n}[] = [\n { key: 'WEEK-AFTER', resolve: (t) => ({ start: t, end: addDays(t, 7) }) },\n { key: 'MONTH-AFTER', resolve: (t) => ({ start: t, end: addMonths(t, 1) }) },\n { key: 'QUARTER-AFTER', resolve: (t) => ({ start: t, end: addMonths(t, 3) }) },\n { key: 'WEEK-BEFORE', resolve: (t) => ({ start: subDays(t, 7), end: t }) },\n { key: 'MONTH-BEFORE', resolve: (t) => ({ start: subMonths(t, 1), end: t }) },\n { key: 'QUARTER-BEFORE', resolve: (t) => ({ start: subMonths(t, 3), end: t }) }\n];\n\nconst FROZEN = 'mecx-filter-bar-slot--frozen';\n\nconst OPERAND_DATE_FORMAT = 'yyyy-MM-dd';\n\nconst DEFAULT_DISPLAY_FORMAT = 'MM/dd/yyyy';\n\n@Component({\n selector: 'monkey-filter-bar',\n imports: [\n FormsModule,\n MonkeyButtonComponent,\n MonkeyDateRangeComponent,\n MonkeyDividerComponent,\n MonkeyFilterChipComponent,\n MonkeyFilterMenuComponent,\n MonkeyFilterMenuItemComponent,\n MonkeyFilterSegmentComponent,\n MonkeyFilterTriggerComponent,\n MonkeyFormFieldModule,\n MonkeyInputModule,\n MonkeyScrollbarComponent\n ],\n templateUrl: './filter-bar.component.html',\n styleUrl: './filter-bar.component.scss',\n providers: [CurrencyPipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-testid': 'monkey-filter-bar',\n class: 'mecx-filter-bar',\n '[class.mecx-filter-bar--disabled]': 'disabled()'\n }\n})\nexport class MonkeyFilterBarComponent {\n private readonly _hostEl: ElementRef<HTMLElement> = inject(ElementRef);\n\n private readonly _injector = inject(Injector);\n\n private readonly _currencyCode = inject(DEFAULT_CURRENCY_CODE);\n\n private readonly _localeId = inject(LOCALE_ID);\n\n private readonly _currencyPipe = inject(CurrencyPipe);\n\n private readonly _scrollbar = viewChild(MonkeyScrollbarComponent);\n\n private readonly _rowEl = viewChild.required<ElementRef<HTMLElement>>('rowEl');\n\n private readonly _text = toSignal<FilterBarText>(\n inject(MonkeyDictionaryService).get('FILTER-BAR')\n );\n\n private _commitTimer: ReturnType<typeof setTimeout> | null = null;\n\n private readonly _reported = signal<readonly MonkeyAppliedFilter[]>([]);\n\n readonly config = input<MonkeyFilterBarConfig>();\n\n readonly filters = input<readonly MonkeyAppliedFilter[]>([]);\n\n readonly onFiltersChange = output<readonly MonkeyAppliedFilter[]>();\n\n readonly dateFormat = input<string>(DEFAULT_DISPLAY_FORMAT);\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly debounce = input(0);\n\n readonly addLabel = input<string>('');\n\n readonly appPainted = appPainted;\n\n protected readonly rows = signal<readonly MonkeyFilterRow[]>([]);\n\n protected readonly openPanel = signal<OpenPanel | null>(null);\n\n protected readonly triggerOpen = signal(false);\n\n protected readonly calendarOpen = signal<string | null>(null);\n\n protected readonly categorySearch = signal('');\n\n protected readonly immediateTriggerExit = signal(false);\n\n protected readonly scrollVisible = signal(false);\n\n protected textValue = '';\n\n protected textValue2 = '';\n\n protected currencyValue: number | null = null;\n\n protected currencyValue2: number | null = null;\n\n protected statusValues: string[] = [];\n\n protected dateRange = { startDate: '', endDate: '' };\n\n protected dayValue = '';\n\n protected readonly options = computed(() => this.config()?.filterOptions ?? []);\n\n protected readonly conditionsByKey = computed(() => {\n const byType = this.config()?.conditions;\n return new Map(\n this.options().map((option) => [option.key, conditionsForOption(option, byType)])\n );\n });\n\n protected readonly labels = computed(() => {\n const text = this._text();\n const add = this.addLabel().trim();\n return {\n add: add || (text?.ADD ?? ''),\n addAria: add || (text?.['ADD-ARIA'] ?? ''),\n clear: text?.CLEAR ?? '',\n search: text?.SEARCH ?? '',\n selectCondition: text?.['SELECT-CONDITION'] ?? '',\n select: text?.SELECT ?? '',\n confirm: text?.CONFIRM ?? '',\n rangeFrom: text?.['RANGE-FROM'] ?? '',\n rangeTo: text?.['RANGE-TO'] ?? '',\n remove: text?.REMOVE ?? ''\n };\n });\n\n protected readonly dateShortcuts = computed(() => {\n const date = this._text()?.DATE ?? {};\n return [...DATE_SHORTCUTS.map((shortcut) => shortcut.key), 'CUSTOM'].map((key) => {\n return { key, label: date[key] ?? '' };\n });\n });\n\n protected readonly addOptions = computed(() => {\n const taken = new Set(this.rows().map((row) => row.key));\n return this.matchingSearch(this.options().filter((option) => !taken.has(option.key)));\n });\n\n protected readonly canAddFilter = computed(() => {\n const taken = new Set(this.rows().map((row) => row.key));\n return this.options().some((option) => !taken.has(option.key));\n });\n\n protected readonly changeOptions = computed(() => this.matchingSearch(this.options()));\n\n protected readonly triggerVariant = computed(() => {\n return this.rows().length === 0 ? 'text' : 'icon';\n });\n\n protected readonly triggerIcon = computed(() => {\n return this.rows().length === 0 ? 'filter' : 'add-plus';\n });\n\n protected readonly triggerFlipId = computed(() => {\n return this.rows().length === 0 ? 'trigger-text' : 'trigger-icon';\n });\n\n constructor() {\n effect(() => {\n const incoming = this.filters();\n untracked(() => {\n if (this.sameAsRows(incoming)) return;\n this._reported.set(incoming);\n this.rows.set(\n incoming.map((filter) => {\n const option = this.options().find((item) => item.key === filter.key);\n return {\n key: filter.key,\n label: filter.label,\n icon: option?.icon,\n type: filter.type,\n condition: filter.condition,\n operands: filter.operands\n };\n })\n );\n this.scheduleRemeasure();\n });\n });\n\n effect(() => {\n if (!this.disabled()) return;\n untracked(() => {\n this.triggerOpen.set(false);\n this.closePanel();\n });\n });\n\n const destroyRef = inject(DestroyRef);\n destroyRef.onDestroy(() => this.cancelCommit());\n\n afterNextRender(() => {\n const observer = new ResizeObserver(() => this.syncScrollbar());\n observer.observe(this._rowEl().nativeElement);\n destroyRef.onDestroy(() => observer.disconnect());\n });\n }\n\n private autoCondition(\n row: MonkeyFilterRow,\n allowed: readonly MonkeyFilterOperator[]\n ): MonkeyFilterRow {\n if (row.condition || allowed.length !== 1) return row;\n return { ...row, condition: allowed[0] };\n }\n\n private askForAnswer(row: MonkeyFilterRow): void {\n if (isComplete(row)) {\n this.resetDraft();\n this.openPanel.set(null);\n return;\n }\n\n this.seedDraft(row);\n this.openPanel.set({ key: row.key, part: 'value' });\n }\n\n private seedDraft(row: MonkeyFilterRow): void {\n this.resetDraft();\n this.calendarOpen.set(null);\n\n const [first, second] = row.operands;\n\n switch (this.panelFor(row)) {\n case 'status':\n this.statusValues = first?.kind === 'selection' ? [...first.values] : [];\n break;\n case 'field':\n if (row.type === 'currency') {\n this.currencyValue = first?.kind === 'number' ? first.value : null;\n this.currencyValue2 = second?.kind === 'number' ? second.value : null;\n } else {\n this.textValue = first?.kind === 'text' ? first.value : '';\n this.textValue2 = second?.kind === 'text' ? second.value : '';\n }\n break;\n case 'date-day':\n this.dayValue = first?.kind === 'date' ? first.value : '';\n break;\n case 'date-range':\n this.dateRange = {\n startDate: first?.kind === 'date' ? first.value : '',\n endDate: second?.kind === 'date' ? second.value : ''\n };\n\n if (this.dateRange.startDate) this.calendarOpen.set(row.key);\n break;\n default:\n break;\n }\n }\n\n private readDraft(row: MonkeyFilterRow): MonkeyFilterOperand[] | null {\n const range = this.isRange(row);\n\n switch (this.panelFor(row)) {\n case 'status': {\n if (this.statusValues.length === 0) return null;\n return [{ kind: 'selection', values: [...this.statusValues] }];\n }\n\n case 'field': {\n if (row.type === 'currency') {\n const from = this.currencyValue;\n if (from === null || from === undefined) return null;\n if (!range) return [{ kind: 'number', value: from }];\n\n const to = this.currencyValue2;\n if (to === null || to === undefined) return null;\n\n const [low, high] = from <= to ? [from, to] : [to, from];\n return [\n { kind: 'number', value: low },\n { kind: 'number', value: high }\n ];\n }\n\n const text = this.textValue.trim();\n if (!text) return null;\n if (!range) return [{ kind: 'text', value: text }];\n\n const text2 = this.textValue2.trim();\n if (!text2) return null;\n return [\n { kind: 'text', value: text },\n { kind: 'text', value: text2 }\n ];\n }\n\n case 'date-day': {\n if (!this.dayValue) return null;\n return [{ kind: 'date', value: this.dayValue }];\n }\n\n case 'date-range': {\n const { startDate, endDate } = this.dateRange;\n if (!startDate || !endDate) return null;\n return [\n { kind: 'date', value: startDate },\n { kind: 'date', value: endDate }\n ];\n }\n\n default:\n return null;\n }\n }\n\n private money(value: number): string {\n const currency = this._currencyCode || 'BRL';\n const amount = this._currencyPipe.transform(\n value,\n currency,\n '',\n '1.2-2',\n this._localeId || 'pt-BR'\n );\n\n if (amount === null) return '';\n\n const symbol = getCurrencySymbol(currency);\n\n return symbol ? `${symbol} ${amount}` : amount;\n }\n\n private showDate(iso: string): string {\n if (!iso) return '';\n const parsed = parseISO(iso);\n\n if (Number.isNaN(parsed.getTime())) return iso;\n return format(parsed, this.dateFormat() || DEFAULT_DISPLAY_FORMAT);\n }\n\n private open(key: string, part: OpenPanel['part']): void {\n this.openPanel.set({ key, part });\n }\n\n private closePanel(): void {\n this.openPanel.set(null);\n this.calendarOpen.set(null);\n this.resetDraft();\n }\n\n private optionFor(optionKey: string): MonkeyFilterBarOption | undefined {\n return this.options().find((option) => option.key === optionKey);\n }\n\n private matchingSearch(options: readonly MonkeyFilterBarOption[]): MonkeyFilterBarOption[] {\n const term = this.categorySearch().trim().toLowerCase();\n if (!term) return [...options];\n return options.filter((option) => option.label.toLowerCase().includes(term));\n }\n\n private resetDraft(): void {\n this.textValue = '';\n this.textValue2 = '';\n this.currencyValue = null;\n this.currencyValue2 = null;\n this.statusValues = [];\n this.dateRange = { startDate: '', endDate: '' };\n this.dayValue = '';\n }\n\n private sameAsRows(incoming: readonly MonkeyAppliedFilter[]): boolean {\n const current = appliedFrom(this.rows());\n if (current.length !== incoming.length) return false;\n return current.every((filter, index) => {\n const other = incoming[index];\n return (\n filter.key === other.key &&\n filter.condition === other.condition &&\n JSON.stringify(filter.operands) === JSON.stringify(other.operands)\n );\n });\n }\n\n private commit(): void {\n this.cancelCommit();\n\n if (this.sameAsRows(this._reported())) return;\n\n const wait = this.debounce();\n if (wait <= 0) {\n this.publish();\n return;\n }\n\n this._commitTimer = setTimeout(() => {\n this._commitTimer = null;\n this.publish();\n }, wait);\n }\n\n private publish(): void {\n const applied = appliedFrom(this.rows());\n this._reported.set(applied);\n this.onFiltersChange.emit(applied);\n }\n\n private cancelCommit(): void {\n if (this._commitTimer === null) return;\n clearTimeout(this._commitTimer);\n this._commitTimer = null;\n }\n\n private releaseFromFlow(container: HTMLElement, leaving: readonly string[]): void {\n leaving.forEach((id) => {\n const slot = container.querySelector<HTMLElement>(`[${FLIP_ATTR}=\"${id}\"]`);\n if (!slot) return;\n slot.style.left = `${slot.offsetLeft}px`;\n slot.style.top = `${slot.offsetTop}px`;\n slot.style.position = 'absolute';\n });\n }\n\n private followEnd(container: HTMLElement): void {\n const row = container.querySelector<HTMLElement>('.mecx-filter-bar-row');\n if (!row) return;\n\n const last = this.lastMovingSlot(row);\n if (!last) return;\n\n const room = parseFloat(getComputedStyle(row).paddingInlineEnd) || 0;\n const excess = last.getBoundingClientRect().right + room - row.getBoundingClientRect().right;\n\n if (excess <= 0) return;\n row.scrollLeft += excess;\n }\n\n private lastMovingSlot(row: HTMLElement): HTMLElement | null {\n const slots = Array.from(row.querySelectorAll<HTMLElement>(`[${FLIP_ATTR}]`));\n for (let index = slots.length - 1; index >= 0; index -= 1) {\n if (getComputedStyle(slots[index]).position !== 'sticky') return slots[index];\n }\n return null;\n }\n\n private withFlip(\n mutate: () => void,\n options: { leaving?: readonly string[]; follow?: boolean } = {}\n ): void {\n const { leaving = [], follow = true } = options;\n const container = this._hostEl.nativeElement;\n const before = measureFlip(container);\n this.releaseFromFlow(container, leaving);\n\n mutate();\n\n afterNextRender(\n () => {\n if (follow) this.followEnd(container);\n this.syncScrollbar();\n animateFlip(container, before, FROZEN);\n this.immediateTriggerExit.set(false);\n },\n { injector: this._injector }\n );\n }\n\n private scheduleRemeasure(): void {\n afterNextRender(() => this.syncScrollbar(), { injector: this._injector });\n }\n\n private rowOverflows(): boolean {\n const row = this._rowEl().nativeElement;\n return row.scrollWidth - row.clientWidth > 1;\n }\n\n private syncScrollbar(): void {\n this._scrollbar()?.remeasure();\n this.scrollVisible.set(this.rowOverflows());\n }\n\n protected onSlotSettled(event: Event): void {\n const slot = event.target as HTMLElement | null;\n if (!slot?.classList.contains('mecx-filter-bar-slot')) return;\n\n this.syncScrollbar();\n }\n\n protected operatorLabel(operator: MonkeyFilterCondition): string {\n if (!operator) return '';\n return this._text()?.OPERATOR?.[operator] ?? '';\n }\n\n protected isOpen(rowKey: string, part: OpenPanel['part']): boolean {\n const panel = this.openPanel();\n return !!panel && panel.key === rowKey && panel.part === part;\n }\n\n protected isFilterActive(optionKey: string): boolean {\n return this.rows().some((row) => row.key === optionKey);\n }\n\n protected needsDivider(options: readonly MonkeyFilterBarOption[], index: number): boolean {\n return index > 0 && options[index].type !== options[index - 1].type;\n }\n\n protected conditionsFor(row: MonkeyFilterRow): readonly MonkeyFilterOperator[] {\n return (\n this.conditionsByKey().get(row.key) ??\n conditionsForOption({ type: row.type }, this.config()?.conditions)\n );\n }\n\n protected panelFor(row: MonkeyFilterRow): MonkeyFilterPanel {\n return panelOf(row.type, row.condition);\n }\n\n protected hasValueSegment(row: MonkeyFilterRow): boolean {\n return this.panelFor(row) !== 'none';\n }\n\n protected isRange(row: MonkeyFilterRow): boolean {\n return arityOf(row.condition) === 2;\n }\n\n protected displayOf(row: MonkeyFilterRow): string {\n const [first, second] = row.operands;\n\n switch (this.panelFor(row)) {\n case 'status': {\n if (first?.kind !== 'selection' || first.values.length === 0) return '';\n if (first.values.length > 1) {\n return (this._text()?.SELECTED ?? '').replace('{count}', String(first.values.length));\n }\n const option = this.statusOptionsOf(row).find((item) => item.value === first.values[0]);\n return option?.description ?? first.values[0];\n }\n\n case 'field': {\n const write = (operand?: MonkeyFilterOperand): string => {\n if (operand?.kind === 'number') return this.money(operand.value);\n if (operand?.kind === 'text') return operand.value;\n return '';\n };\n if (!this.isRange(row)) return write(first);\n return `${write(first)} – ${write(second)}`;\n }\n\n case 'date-day':\n return first?.kind === 'date' ? this.showDate(first.value) : '';\n\n case 'date-range': {\n if (first?.kind !== 'date' || second?.kind !== 'date') return '';\n return `${this.showDate(first.value)} – ${this.showDate(second.value)}`;\n }\n\n default:\n return '';\n }\n }\n\n protected valuePlaceholder(row: MonkeyFilterRow): string {\n return this.optionFor(row.key)?.placeholder ?? this.labels().select;\n }\n\n protected statusOptionsOf(row: MonkeyFilterRow) {\n return this.optionFor(row.key)?.statusOptions ?? [];\n }\n\n protected minDateOf(row: MonkeyFilterRow): Date | string {\n return this.optionFor(row.key)?.minDate ?? '';\n }\n\n protected maxDateOf(row: MonkeyFilterRow): Date | string {\n return this.optionFor(row.key)?.maxDate ?? '';\n }\n\n protected onSelectCategory(index: number): void {\n const option = this.addOptions()[index];\n if (!option) return;\n\n this.immediateTriggerExit.set(true);\n\n const row = this.autoCondition(\n {\n key: option.key,\n label: option.label,\n icon: option.icon,\n type: option.type,\n condition: '',\n operands: []\n },\n this.conditionsByKey().get(option.key) ?? []\n );\n\n this.withFlip(() => {\n this.triggerOpen.set(false);\n this.categorySearch.set('');\n this.resetDraft();\n this.calendarOpen.set(null);\n\n this.rows.update((rows) => [...rows, row]);\n\n if (row.condition) this.askForAnswer(row);\n else this.openPanel.set({ key: option.key, part: 'condition' });\n });\n\n if (row.condition) this.commit();\n }\n\n protected onChangeCategory(row: MonkeyFilterRow, index: number): void {\n const option = this.changeOptions()[index];\n if (!option) return;\n\n if (option.key === row.key) {\n this.open(row.key, 'condition');\n return;\n }\n\n if (this.isFilterActive(option.key)) return;\n\n this.withFlip(\n () => {\n this.resetDraft();\n this.calendarOpen.set(null);\n this.categorySearch.set('');\n\n const allowed = conditionsForOption(option, this.config()?.conditions);\n const next = this.autoCondition(\n withType(\n row,\n {\n key: option.key,\n label: option.label,\n icon: option.icon,\n type: option.type\n },\n allowed\n ),\n allowed\n );\n this.rows.update((rows) => rows.map((item) => (item.key === row.key ? next : item)));\n\n if (next.condition) this.askForAnswer(next);\n else this.openPanel.set({ key: next.key, part: 'condition' });\n },\n\n { leaving: [row.key], follow: false }\n );\n\n this.commit();\n }\n\n protected onSelectCondition(row: MonkeyFilterRow, condition: MonkeyFilterOperator): void {\n const next = withCondition(row, condition);\n\n this.withFlip(() => {\n this.rows.update((rows) => rows.map((item) => (item.key === row.key ? next : item)));\n this.calendarOpen.set(null);\n this.askForAnswer(next);\n });\n\n this.commit();\n }\n\n protected onTriggerOpenChange(open: boolean): void {\n this.categorySearch.set('');\n this.triggerOpen.set(open);\n if (!open) return;\n this.openPanel.set(null);\n this.calendarOpen.set(null);\n this.resetDraft();\n }\n\n protected onCategoryOpenChange(row: MonkeyFilterRow, open: boolean): void {\n this.categorySearch.set('');\n if (!open) {\n this.closePanel();\n return;\n }\n this.triggerOpen.set(false);\n this.open(row.key, 'category');\n }\n\n protected onConditionOpenChange(row: MonkeyFilterRow, open: boolean): void {\n if (!open) {\n this.closePanel();\n return;\n }\n this.triggerOpen.set(false);\n this.open(row.key, 'condition');\n }\n\n protected onValueOpenChange(row: MonkeyFilterRow, open: boolean): void {\n if (!open) {\n this.closePanel();\n return;\n }\n this.triggerOpen.set(false);\n this.seedDraft(row);\n this.open(row.key, 'value');\n }\n\n protected onQuickDate(row: MonkeyFilterRow, key: string): void {\n if (row.type !== 'date') return;\n\n if (key === 'CUSTOM') {\n this.dateRange = { startDate: '', endDate: '' };\n this.calendarOpen.set(row.key);\n return;\n }\n\n const shortcut = DATE_SHORTCUTS.find((item) => item.key === key);\n if (!shortcut) return;\n\n const { start, end } = shortcut.resolve(new Date());\n\n this.dateRange = {\n startDate: format(start, OPERAND_DATE_FORMAT),\n endDate: format(end, OPERAND_DATE_FORMAT)\n };\n this.onApply(row);\n }\n\n protected onDateChange(\n row: MonkeyFilterRow,\n event: { startDate: string; endDate: string }\n ): void {\n this.dateRange = event;\n if (event.startDate && event.endDate) {\n setTimeout(() => this.onApply(row), 100);\n }\n }\n\n protected onBackToShortcuts(): void {\n this.calendarOpen.set(null);\n }\n\n protected onToggleStatus(value: string): void {\n this.statusValues = this.statusValues.includes(value)\n ? this.statusValues.filter((item) => item !== value)\n : [...this.statusValues, value];\n }\n\n protected onApply(row: MonkeyFilterRow): void {\n const operands = this.readDraft(row);\n if (!operands) return;\n\n this.withFlip(() => {\n this.rows.update((rows) => {\n return rows.map((item) => (item.key === row.key ? { ...item, operands } : item));\n });\n this.openPanel.set(null);\n this.calendarOpen.set(null);\n this.resetDraft();\n });\n\n this.commit();\n }\n\n protected onRemove(row: MonkeyFilterRow): void {\n this.withFlip(\n () => {\n this.rows.update((rows) => rows.filter((item) => item.key !== row.key));\n if (this.openPanel()?.key === row.key) this.openPanel.set(null);\n if (this.calendarOpen() === row.key) this.calendarOpen.set(null);\n this.resetDraft();\n },\n { leaving: [row.key], follow: false }\n );\n\n this.commit();\n }\n\n protected onClearAll(): void {\n const leaving = this.rows().map((row) => row.key);\n\n this.withFlip(\n () => {\n this.rows.set([]);\n this.openPanel.set(null);\n this.calendarOpen.set(null);\n this.resetDraft();\n },\n { leaving, follow: false }\n );\n\n this.commit();\n }\n}\n","<div class=\"mecx-filter-bar-line\">\n <div\n #rowEl\n class=\"mecx-filter-bar-row\"\n (animationend)=\"onSlotSettled($event)\"\n (transitionend)=\"onSlotSettled($event)\"\n >\n @for (f of rows(); track f.key) {\n <span\n class=\"mecx-filter-bar-slot\"\n [attr.data-flip-id]=\"f.key\"\n [animate.enter]=\"appPainted() ? 'mecx-filter-bar-slot--entering' : ''\"\n animate.leave=\"mecx-filter-bar-slot--leaving\"\n >\n <monkey-filter-chip\n [removeLabel]=\"labels().remove\"\n [disabled]=\"disabled()\"\n (onRemove)=\"onRemove(f)\"\n >\n <monkey-filter-segment\n [icon]=\"f.icon ?? null\"\n [text]=\"f.label\"\n [disabled]=\"disabled()\"\n [open]=\"isOpen(f.key, 'category')\"\n (onOpenChange)=\"onCategoryOpenChange(f, $event)\"\n >\n @if (isOpen(f.key, 'category')) {\n <monkey-filter-menu\n class=\"mecx-filter-bar-menu-categories\"\n [showSearch]=\"true\"\n [searchPlaceholder]=\"labels().search\"\n (onSearchChange)=\"categorySearch.set($event)\"\n >\n @for (opt of changeOptions(); track opt.key; let i = $index) {\n @if (needsDivider(changeOptions(), i)) {\n <monkey-divider />\n }\n <monkey-filter-menu-item\n [leadIcon]=\"opt.icon ?? null\"\n [label]=\"opt.label\"\n [selected]=\"opt.key === f.key\"\n [disabled]=\"opt.key !== f.key && isFilterActive(opt.key)\"\n (onItemClick)=\"onChangeCategory(f, i)\"\n />\n }\n </monkey-filter-menu>\n }\n </monkey-filter-segment>\n <monkey-filter-segment\n [placeholder]=\"labels().selectCondition\"\n [text]=\"operatorLabel(f.condition)\"\n [disabled]=\"disabled()\"\n [open]=\"isOpen(f.key, 'condition')\"\n (onOpenChange)=\"onConditionOpenChange(f, $event)\"\n >\n @if (isOpen(f.key, 'condition')) {\n <monkey-filter-menu class=\"mecx-filter-bar-menu-conditions\" [showSearch]=\"false\">\n @for (c of conditionsFor(f); track c) {\n <monkey-filter-menu-item\n [label]=\"operatorLabel(c)\"\n [selected]=\"c === f.condition\"\n (onItemClick)=\"onSelectCondition(f, c)\"\n />\n }\n </monkey-filter-menu>\n }\n </monkey-filter-segment>\n @if (hasValueSegment(f)) {\n <monkey-filter-segment\n [placeholder]=\"valuePlaceholder(f)\"\n [text]=\"displayOf(f)\"\n [disabled]=\"disabled()\"\n [open]=\"isOpen(f.key, 'value')\"\n (onOpenChange)=\"onValueOpenChange(f, $event)\"\n >\n @if (isOpen(f.key, 'value')) {\n @switch (panelFor(f)) {\n @case ('status') {\n <monkey-filter-menu class=\"mecx-filter-bar-menu-status\" [showSearch]=\"false\">\n @for (s of statusOptionsOf(f); track s.value) {\n <monkey-filter-menu-item\n property=\"checkbox\"\n [label]=\"s.description\"\n [checked]=\"statusValues.includes(s.value)\"\n (onItemClick)=\"onToggleStatus(s.value)\"\n />\n }\n <div class=\"mecx-filter-bar-panel-actions\">\n <monkey-button type=\"secondary\" size=\"sm\" (click)=\"onApply(f)\">\n {{ labels().confirm }}\n </monkey-button>\n </div>\n </monkey-filter-menu>\n }\n\n @case ('date-day') {\n <monkey-filter-menu class=\"mecx-filter-bar-menu-field\" [showSearch]=\"false\">\n <div class=\"mecx-filter-bar-field\">\n <label class=\"mecx-filter-bar-field-row\">\n <span class=\"mecx-filter-bar-field-label\">{{ f.label }}</span>\n <monkey-form-field size=\"sm\" noFooterSpace>\n <input\n type=\"date\"\n monkey-input\n [(ngModel)]=\"dayValue\"\n (keyup.enter)=\"onApply(f)\"\n />\n </monkey-form-field>\n </label>\n <monkey-button type=\"secondary\" size=\"sm\" (click)=\"onApply(f)\">\n {{ labels().confirm }}\n </monkey-button>\n </div>\n </monkey-filter-menu>\n }\n\n @case ('date-range') {\n @if (calendarOpen() === f.key) {\n <monkey-date-range\n class=\"mecx-filter-bar-calendar\"\n [startDate]=\"dateRange.startDate\"\n [endDate]=\"dateRange.endDate\"\n [minDate]=\"minDateOf(f)\"\n [maxDate]=\"maxDateOf(f)\"\n (onDate)=\"onDateChange(f, $event)\"\n (onCancel)=\"onBackToShortcuts()\"\n ></monkey-date-range>\n } @else {\n <monkey-filter-menu [showSearch]=\"false\">\n @for (shortcut of dateShortcuts(); track shortcut.key) {\n <monkey-filter-menu-item\n [label]=\"shortcut.label\"\n (onItemClick)=\"onQuickDate(f, shortcut.key)\"\n />\n }\n </monkey-filter-menu>\n }\n }\n\n @default {\n <monkey-filter-menu class=\"mecx-filter-bar-menu-field\" [showSearch]=\"false\">\n <div class=\"mecx-filter-bar-field\">\n @if (f.type === 'currency') {\n <label class=\"mecx-filter-bar-field-row\">\n <span class=\"mecx-filter-bar-field-label\">\n {{ isRange(f) ? labels().rangeFrom : f.label }}\n </span>\n <monkey-form-field size=\"sm\" noFooterSpace>\n <input\n type=\"text\"\n monkey-input-currency\n [(ngModel)]=\"currencyValue\"\n (keyup.enter)=\"onApply(f)\"\n />\n </monkey-form-field>\n </label>\n @if (isRange(f)) {\n <label class=\"mecx-filter-bar-field-row\">\n <span class=\"mecx-filter-bar-field-label\">{{\n labels().rangeTo\n }}</span>\n <monkey-form-field size=\"sm\" noFooterSpace>\n <input\n type=\"text\"\n monkey-input-currency\n [(ngModel)]=\"currencyValue2\"\n (keyup.enter)=\"onApply(f)\"\n />\n </monkey-form-field>\n </label>\n }\n } @else {\n <label class=\"mecx-filter-bar-field-row\">\n <span class=\"mecx-filter-bar-field-label\">\n {{ isRange(f) ? labels().rangeFrom : f.label }}\n </span>\n <monkey-form-field size=\"sm\" noFooterSpace>\n <input\n type=\"text\"\n monkey-input\n [placeholder]=\"valuePlaceholder(f)\"\n [(ngModel)]=\"textValue\"\n (keyup.enter)=\"onApply(f)\"\n />\n </monkey-form-field>\n </label>\n @if (isRange(f)) {\n <label class=\"mecx-filter-bar-field-row\">\n <span class=\"mecx-filter-bar-field-label\">{{\n labels().rangeTo\n }}</span>\n <monkey-form-field size=\"sm\" noFooterSpace>\n <input\n type=\"text\"\n monkey-input\n [(ngModel)]=\"textValue2\"\n (keyup.enter)=\"onApply(f)\"\n />\n </monkey-form-field>\n </label>\n }\n }\n\n <monkey-button type=\"secondary\" size=\"sm\" (click)=\"onApply(f)\">\n {{ labels().confirm }}\n </monkey-button>\n </div>\n </monkey-filter-menu>\n }\n }\n }\n </monkey-filter-segment>\n }\n </monkey-filter-chip>\n </span>\n }\n\n @if (canAddFilter()) {\n <span\n class=\"mecx-filter-bar-slot mecx-filter-bar-slot--trigger\"\n [attr.data-flip-id]=\"triggerFlipId()\"\n >\n <monkey-filter-trigger\n [variant]=\"triggerVariant()\"\n [icon]=\"triggerIcon()\"\n [text]=\"labels().add\"\n [ariaLabel]=\"labels().addAria\"\n [disabled]=\"disabled()\"\n [immediateExit]=\"immediateTriggerExit()\"\n [open]=\"triggerOpen()\"\n (onOpenChange)=\"onTriggerOpenChange($event)\"\n >\n @if (triggerOpen()) {\n <monkey-filter-menu\n class=\"mecx-filter-bar-menu-categories\"\n [showSearch]=\"true\"\n [searchPlaceholder]=\"labels().search\"\n (onSearchChange)=\"categorySearch.set($event)\"\n >\n @for (opt of addOptions(); track opt.key; let i = $index) {\n @if (needsDivider(addOptions(), i)) {\n <monkey-divider />\n }\n <monkey-filter-menu-item\n [leadIcon]=\"opt.icon ?? null\"\n [label]=\"opt.label\"\n (onItemClick)=\"onSelectCategory(i)\"\n />\n }\n </monkey-filter-menu>\n }\n </monkey-filter-trigger>\n </span>\n }\n </div>\n @if (scrollVisible()) {\n <monkey-scrollbar\n class=\"mecx-filter-bar-bar\"\n orientation=\"horizontal\"\n [target]=\"rowEl\"\n [animate.enter]=\"appPainted() ? 'mecx-filter-bar-bar--entering' : ''\"\n animate.leave=\"mecx-filter-bar-bar--leaving\"\n />\n }\n\n <div class=\"mecx-filter-bar-tail\">\n @if (rows().length > 0) {\n <div class=\"mecx-filter-bar-actions\">\n <monkey-button type=\"tertiary\" size=\"sm\" [disabled]=\"disabled()\" (click)=\"onClearAll()\">\n {{ labels().clear }}\n </monkey-button>\n </div>\n }\n\n <div class=\"mecx-filter-bar-extra\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nexport * from './filter-bar-domain';\nexport * from './filter-bar.component';\nexport * from './filter-chip.component';\nexport * from './filter-menu.component';\nexport * from './filter-menu-item.component';\nexport * from './filter-segment.component';\nexport * from './filter-trigger.component';\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n Input,\r\n InputSignal,\r\n Optional,\r\n QueryList,\r\n ViewChildren,\r\n booleanAttribute,\r\n computed,\r\n inject,\r\n input\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, FormsModule, NgControl } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyFormFieldComponent, MonkeyFormFieldControl } from '../form-field';\r\n\r\ntype KeyboardKeys = 'Backspace' | 'Delete' | 'ArrowLeft' | 'ArrowUp' | 'ArrowRight' | 'ArrowDown';\r\n\r\ninterface AllowedKeyboardKeys {\r\n Backspace: () => void;\r\n Delete: () => void;\r\n ArrowLeft: () => void;\r\n ArrowUp: () => void;\r\n ArrowRight: () => void;\r\n ArrowDown: () => void;\r\n}\r\n\r\n@Component({\r\n selector: 'monkey-input-code',\r\n styleUrl: './input-code.component.scss',\r\n templateUrl: './input-code.component.html',\r\n imports: [FormsModule],\r\n host: {\r\n 'data-testid': 'monkey-input-code',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n },\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyInputCodeComponent }\r\n ]\r\n})\r\nexport class MonkeyInputCodeComponent\r\n implements ControlValueAccessor, MonkeyFormFieldControl, AfterViewInit\r\n{\r\n readonly stateChanges = new Subject<void>();\r\n\r\n readonly type: string = 'input-code';\r\n\r\n readonly currency: boolean = false;\r\n\r\n readonly percent: boolean = false;\r\n\r\n readonly id: any = inject(IdGenerator).getId('monkey-input-code-');\r\n\r\n private _onChange: any = () => {};\r\n\r\n private _onTouched: any = () => {};\r\n\r\n private _value = null;\r\n\r\n public ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n public focused: boolean = false;\r\n\r\n public length: InputSignal<number> = input<number>(6);\r\n\r\n public inputType: InputSignal<string> = input<string>('numeric');\r\n\r\n public inputIndices = computed(() => {\r\n return Array.from({ length: this.length() }, (_, i) => {\r\n return '';\r\n });\r\n });\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _disabled: boolean = false;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n this._onChange(value);\r\n this._onTouched();\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n @ViewChildren('codeInput') inputs!: QueryList<ElementRef<HTMLInputElement>>;\r\n\r\n constructor(@Optional() private formField: MonkeyFormFieldComponent) {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n\r\n if (this.formField) {\r\n this.formField.hideAction = true;\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.formField) {\r\n const input = this.formField.elementRef.nativeElement.querySelector(\r\n '.mecx-form-field-body'\r\n ) as HTMLElement;\r\n\r\n const height = input.offsetHeight > 40 ? input.offsetHeight : 40;\r\n\r\n this.inputs.forEach((inputEl) => {\r\n inputEl.nativeElement.style.height = `${height}px`;\r\n inputEl.nativeElement.style.width = `${height}px`;\r\n });\r\n }\r\n }\r\n\r\n private _onFocus(): void {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n private propagateCode(): void {\r\n const code = this.inputIndices().join('');\r\n\r\n this.writeValue(code);\r\n }\r\n\r\n private focusNextInput(input: HTMLInputElement): void {\r\n const next: HTMLInputElement = input.nextElementSibling as HTMLInputElement;\r\n\r\n next?.focus();\r\n }\r\n\r\n private focusPreviousInput(input: HTMLInputElement): void {\r\n const previous: HTMLInputElement = input.previousElementSibling as HTMLInputElement;\r\n\r\n previous?.focus();\r\n }\r\n\r\n private setFullInputValue(value: string): void {\r\n const chars: string[] = value?.slice(0, this.length()).split('') || '';\r\n\r\n chars.forEach((digit: string, index: number) => {\r\n this.inputIndices()[index] = digit;\r\n });\r\n }\r\n\r\n public isInvalid(): boolean {\r\n return this.formField.showInvalid;\r\n }\r\n\r\n public onContainerClick(): void {\r\n if (!this._value) {\r\n this.inputs.first.nativeElement.focus();\r\n }\r\n }\r\n\r\n public onKeyDown(event: KeyboardEvent, index: number): void {\r\n const input = event.target as HTMLInputElement;\r\n this.inputIndices()[index] = input.value;\r\n\r\n const { key } = event;\r\n const keys: AllowedKeyboardKeys = {\r\n Backspace: (): void => {\r\n if (input.value === '') {\r\n this.focusPreviousInput(input);\r\n }\r\n },\r\n Delete: (): void => {\r\n if (input.value === '') {\r\n this.focusNextInput(input);\r\n }\r\n },\r\n ArrowLeft: (): void => {\r\n if (index > 0) {\r\n this.focusPreviousInput(input);\r\n\r\n event.preventDefault();\r\n }\r\n },\r\n ArrowUp: (): void => {\r\n if (index > 0) {\r\n this.focusPreviousInput(input);\r\n\r\n event.preventDefault();\r\n }\r\n },\r\n ArrowRight: (): void => {\r\n if (index < this.length()) {\r\n this.focusNextInput(input);\r\n\r\n event.preventDefault();\r\n }\r\n },\r\n ArrowDown: (): void => {\r\n if (index < this.length()) {\r\n this.focusNextInput(input);\r\n\r\n event.preventDefault();\r\n }\r\n }\r\n };\r\n\r\n if (keys[key as KeyboardKeys]) {\r\n keys[key as KeyboardKeys]();\r\n }\r\n }\r\n\r\n public onInput(event: Event, index: number): void {\r\n const input = event.target as HTMLInputElement;\r\n const { value } = input;\r\n\r\n if (value.length > 1) {\r\n this.setFullInputValue(value);\r\n\r\n input.value = value.charAt(0);\r\n } else {\r\n input.value = value;\r\n }\r\n\r\n this.inputIndices()[index] = input.value;\r\n\r\n if (input.value && index < this.length()) {\r\n this.focusNextInput(input);\r\n }\r\n\r\n this.propagateCode();\r\n }\r\n\r\n public onPaste(event: ClipboardEvent): void {\r\n event.preventDefault();\r\n\r\n const pastedData: string = event.clipboardData?.getData('text').trim() ?? '';\r\n const chars: string[] = pastedData.slice(0, this.length()).split('');\r\n\r\n chars.forEach((digit, index) => {\r\n this.inputIndices()[index] = digit;\r\n });\r\n\r\n if (this.inputs.length > chars.length) {\r\n this.inputs.get(chars.length)?.nativeElement.focus();\r\n }\r\n\r\n if (this.inputs.length <= chars.length) {\r\n this.onBlur();\r\n }\r\n\r\n this.propagateCode();\r\n }\r\n\r\n public onBlur(): void {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n\r\n public onFocus(event: FocusEvent): void {\r\n const input = event.target as HTMLInputElement;\r\n\r\n input.select();\r\n this._onFocus();\r\n }\r\n\r\n public writeValue(value: string): void {\r\n this.value = value;\r\n }\r\n\r\n public registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n}\r\n","<div class=\"monkey-input-code\">\r\n @for (idx of inputIndices(); track $index; let i = $index) {\r\n <input\r\n #codeInput\r\n class=\"focus\"\r\n autocomplete=\"one-time-code\"\r\n [attr.type]=\"inputType()\"\r\n [disabled]=\"_disabled\"\r\n [attr.maxlength]=\"1\"\r\n [class.invalid]=\"isInvalid()\"\r\n [(ngModel)]=\"inputIndices()[i]\"\r\n (focus)=\"onFocus($event)\"\r\n (input)=\"onInput($event, i)\"\r\n (keydown)=\"onKeyDown($event, i)\"\r\n (paste)=\"onPaste($event)\"\r\n (blur)=\"onBlur()\"\r\n />\r\n }\r\n</div>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './input-code.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n Component,\r\n ElementRef,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Optional,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n ReactiveFormsModule,\r\n Validators\r\n} from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyPopoverDirective } from '../../directives/popover';\r\nimport { MonkeyDateRangeComponent } from '../date-range/date-range.component';\r\nimport {\r\n MonkeyFormFieldComponent,\r\n MonkeyFormFieldControl,\r\n MonkeyFormFieldModule\r\n} from '../form-field';\r\n\r\n@Component({\r\n selector: 'monkey-input-date-range',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MonkeyFormFieldModule,\r\n MonkeyPopoverDirective,\r\n MonkeyDateRangeComponent\r\n ],\r\n template: `\r\n <span #popoverTarget (click)=\"onOpenPopover()\">\r\n @if (startDate) {\r\n {{ startDate | date }} - {{ endDate | date }}\r\n } @else {\r\n {{ placeholder }}\r\n }\r\n </span>\r\n\r\n <ng-template\r\n [monkeyPopover]=\"showPopOver\"\r\n [monkeyPopoverTarget]=\"elementTarget\"\r\n [monkeyPopoverClosed]=\"closePopOver\"\r\n monkeyPopoverDir=\"ltr\"\r\n [monkeyPopoverTitle]=\"title\"\r\n >\r\n <monkey-date-range\r\n hideHeader\r\n hideActions\r\n [startDate]=\"startDate\"\r\n [endDate]=\"endDate\"\r\n (onDate)=\"onHandleDate($event)\"\r\n [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\"\r\n >\r\n </monkey-date-range>\r\n </ng-template>\r\n `,\r\n styleUrl: './input-date-range.component.scss',\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyInputDateRangeComponent }\r\n ],\r\n host: {\r\n '[attr.data-testid]': \"'monkey-input-date-range'\",\r\n class: 'mecx-input-date-range',\r\n '[class.mecx-input-date-range-disabled]': '_disabled',\r\n '[class.mecx-input-date-range-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur()'\r\n }\r\n})\r\nexport class MonkeyInputDateRangeComponent\r\n implements MonkeyFormFieldControl, ControlValueAccessor, AfterContentInit, OnDestroy, OnChanges\r\n{\r\n @Input({ required: true }) placeholder!: string;\r\n\r\n @Input({ required: true }) title!: string;\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Input() minDate: Date | string = '';\r\n\r\n @Input() maxDate: Date | string = '';\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _disabled: boolean = false;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n this.handleValue(value);\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value: string | null = null;\r\n\r\n constructor(@Optional() public formField: MonkeyFormFieldComponent) {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-input-date-range-');\r\n\r\n focused: boolean = false;\r\n\r\n readonly type: string = 'input-date-range';\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n showPopOver = false;\r\n\r\n startDate = '';\r\n\r\n endDate = '';\r\n\r\n handledMinDate: string = '';\r\n\r\n handledMaxDate: string = '';\r\n\r\n get elementTarget() {\r\n if (this.formField?.elementRef) {\r\n return this.formField?.elementRef.nativeElement.querySelector('.mecx-form-field-body');\r\n }\r\n\r\n return this._elementRef.nativeElement;\r\n }\r\n\r\n closePopOver = () => {\r\n this.showPopOver = false;\r\n this.validateValue();\r\n };\r\n\r\n ngAfterContentInit(): void {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {}\r\n\r\n ngOnDestroy(): void {}\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n event.preventDefault();\r\n this.onOpenPopover();\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _onBlur() {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n private handleValue(value: any) {\r\n try {\r\n const { startDate, endDate } = value || {\r\n startDate: '',\r\n endDate: ''\r\n };\r\n this.startDate = startDate;\r\n this.endDate = endDate;\r\n } catch (e) {\r\n // not to do\r\n }\r\n }\r\n\r\n private validateValue() {\r\n const { startDate, endDate } = this.value;\r\n if (!startDate || !endDate) {\r\n this.ngControl?.control?.setErrors({\r\n dateRange: true\r\n });\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n this.handleValue(value);\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n }\r\n\r\n onOpenPopover() {\r\n if (!this.disabled) {\r\n this.showPopOver = true;\r\n }\r\n }\r\n\r\n onHandleDate(event: any) {\r\n try {\r\n this.value = null;\r\n const { startDate, endDate } = event;\r\n this.value = event;\r\n if (startDate && endDate) {\r\n this.closePopOver();\r\n }\r\n } catch (e) {\r\n // not to do\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './input-date-range.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n Output,\r\n QueryList,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChild,\r\n ViewContainerRef,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n ReactiveFormsModule,\r\n Validators\r\n} from '@angular/forms';\r\nimport { debounceTime, Subject } from 'rxjs';\r\nimport { normalizeStringToSearch, sanitizeString, UtilIconComponent } from '../../../utils';\r\nimport { IdGenerator } from '../../../utils/id-generator';\r\nimport { MonkeyDictionaryService } from '../../services/dictionary.service';\r\nimport { MonkeyFormFieldControl } from '../form-field/form-field-control';\r\nimport { MonkeyFormFieldComponent } from '../form-field/form-field.component';\r\nimport { MonkeyOptionComponent } from '../option/option.component';\r\n\r\n@Component({\r\n selector: 'monkey-select',\r\n imports: [CommonModule, ReactiveFormsModule, FormsModule, UtilIconComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: 'select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeySelectComponent }\r\n ],\r\n animations: [\r\n trigger('animation', [\r\n transition(':enter', [\r\n style({\r\n opacity: 0,\r\n transform: 'scaleY(.9)'\r\n }),\r\n animate(\r\n '100ms ease-in-out',\r\n style({\r\n opacity: 1,\r\n transform: 'scaleY(1)'\r\n })\r\n )\r\n ]),\r\n state(\r\n 'closed',\r\n style({\r\n transform: 'scaleY(.9)',\r\n opacity: 0\r\n })\r\n ),\r\n transition('closed <=> open', animate('200ms ease-in-out'))\r\n ])\r\n ],\r\n host: {\r\n 'data-testid': 'monkey-select',\r\n class: 'mecx-select',\r\n '[class.mecx-select-disabled]': '_disabled',\r\n '[class.mecx-select-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur()'\r\n }\r\n})\r\nexport class MonkeySelectComponent\r\n implements\r\n MonkeyFormFieldControl,\r\n ControlValueAccessor,\r\n AfterContentInit,\r\n OnInit,\r\n OnDestroy,\r\n OnChanges\r\n{\r\n @ViewChild('overlayTemplate') overlayTemplate!: TemplateRef<any>;\r\n\r\n @ViewChild('overlay') overlayEl!: ElementRef;\r\n\r\n @ViewChild('trigger') trigger!: ElementRef;\r\n\r\n @ContentChildren(MonkeyOptionComponent) options!: QueryList<MonkeyOptionComponent>;\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Output() onChange = new EventEmitter();\r\n\r\n @Input({ required: true }) placeholder = '';\r\n\r\n @Input({ transform: booleanAttribute })\r\n loading = false;\r\n\r\n @Input({ transform: booleanAttribute })\r\n showSearch = true;\r\n\r\n @Input()\r\n searchPlaceholder = '';\r\n\r\n @Input()\r\n type = 'select';\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value) {\r\n this._value = value;\r\n this._onChange(value);\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value = null;\r\n\r\n labelSelected = '';\r\n\r\n private overlayRef: OverlayRef | null = null;\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n readonly currency: boolean = false;\r\n\r\n focused: boolean = false;\r\n\r\n _disabled: boolean = false;\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-select-');\r\n\r\n readonly percent: boolean = false;\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n readonly searchHandle = new EventEmitter<string>();\r\n\r\n readonly searchDictionary = inject(MonkeyDictionaryService).get('NO-DATA');\r\n\r\n readonly loadingDictionary = inject(MonkeyDictionaryService).get('LOADING');\r\n\r\n showSearchNoData = false;\r\n\r\n isOpen = false;\r\n\r\n searchData = '';\r\n\r\n constructor(\r\n private overlay: Overlay,\r\n private changeDetectorRef: ChangeDetectorRef,\r\n private viewContainerRef: ViewContainerRef,\r\n @Optional() private formField: MonkeyFormFieldComponent\r\n ) {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n private changeControl() {\r\n if (this.formField?.control) {\r\n this.formField.control.loading = this.loading;\r\n }\r\n }\r\n\r\n private changeSelected(): void {\r\n setTimeout(() => {\r\n if (!this.options) return;\r\n\r\n if (this.type === 'checkbox') {\r\n const selectedValues = this.getComparationValue();\r\n this.options.forEach((opt) => {\r\n if (!opt.disabled) {\r\n opt.selected = selectedValues.includes(String(opt.value()));\r\n }\r\n });\r\n } else {\r\n this.options.forEach((opt) => {\r\n opt.onSelect(String(opt.value()) === this.value);\r\n });\r\n }\r\n\r\n this.changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n private initializeOptions() {\r\n setTimeout(() => {\r\n this.options.forEach((option) => {\r\n option.type = this.type;\r\n if (!option.action) {\r\n option.action = this.selectOption.bind(this, option);\r\n }\r\n });\r\n this.changeDetectorRef.detectChanges();\r\n });\r\n }\r\n\r\n private openDropdown(): void {\r\n if (this.options?.length) {\r\n this.formField.control.disableToBeDirty = true;\r\n this.isOpen = true;\r\n this.createOverlay();\r\n }\r\n }\r\n\r\n private closeDropdown() {\r\n this.isOpen = false;\r\n this.focused = false;\r\n this.formField.control.disableToBeDirty = false;\r\n this.searchData = '';\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n private closeOverlay(): void {\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n this.overlayRef = null;\r\n }\r\n }\r\n\r\n private initializeWithOverlay() {\r\n if (this.showSearch) {\r\n const element = this.overlayRef?.overlayElement.querySelector(\r\n `#${this.id}-search`\r\n ) as HTMLElement;\r\n\r\n this.options.forEach((opt) => {\r\n const element = this.overlayRef?.overlayElement.querySelector(\r\n `#${opt.id}`\r\n ) as HTMLElement | null;\r\n if (!element) return;\r\n element.style.display = '';\r\n });\r\n\r\n setTimeout(() => {\r\n element?.focus();\r\n }, 0);\r\n this.showSearchNoData = false;\r\n }\r\n\r\n setTimeout(() => {\r\n const selected = this.options.find((opt) => {\r\n return opt.selected();\r\n });\r\n\r\n if (selected) {\r\n const element = this.overlayRef?.overlayElement.querySelector(\r\n `#${selected.id}`\r\n ) as HTMLElement;\r\n element?.scrollIntoView({ behavior: 'instant', block: 'center' });\r\n }\r\n }, 0);\r\n }\r\n\r\n private createOverlay(): void {\r\n if (this.overlayRef) {\r\n return;\r\n }\r\n\r\n const offset = 4;\r\n const positions: ConnectedPosition[] = [\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetY: offset\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetY: -offset\r\n }\r\n ];\r\n\r\n let anchor = this.trigger;\r\n let width = anchor.nativeElement.offsetWidth;\r\n\r\n if (this.formField?.elementRef) {\r\n const el = this.formField?.elementRef.nativeElement.querySelector('.mecx-form-field-body');\r\n anchor = el;\r\n width = el.offsetWidth;\r\n }\r\n\r\n const positionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(anchor)\r\n .withPositions(positions)\r\n .withPush(true);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n scrollStrategy: this.overlay.scrollStrategies.block(),\r\n width,\r\n hasBackdrop: true,\r\n backdropClass: 'no-class'\r\n });\r\n\r\n const portal = new TemplatePortal(this.overlayTemplate, this.viewContainerRef);\r\n\r\n this.overlayRef.attach(portal);\r\n\r\n this.overlayRef\r\n .backdropClick()\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(() => {\r\n return this.closeDropdown();\r\n });\r\n\r\n this.initializeWithOverlay();\r\n }\r\n\r\n private updateSelectedLabel(): void {\r\n if (!this.options) return;\r\n\r\n if (this.type === 'checkbox') {\r\n const selectedValues = this.getComparationValue();\r\n\r\n const selectedOptions = this.options.filter((opt) => {\r\n return selectedValues.includes(String(opt.value()));\r\n });\r\n\r\n const maxToShow = 3;\r\n const displayContents = selectedOptions.slice(0, maxToShow).map((opt) => {\r\n return opt.displayContent;\r\n });\r\n\r\n const hasMore = selectedOptions.length > maxToShow;\r\n\r\n this.labelSelected = hasMore\r\n ? `${displayContents.join(', ')}...`\r\n : displayContents.join(', ');\r\n } else {\r\n const selectedOption = this.options.find((opt) => {\r\n return String(opt.value()) === this.value;\r\n });\r\n this.labelSelected = selectedOption ? selectedOption.displayContent : '';\r\n }\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n private executeSearch(search: string): void {\r\n let found = false;\r\n this.options.forEach((opt) => {\r\n const element = this.overlayRef?.overlayElement.querySelector(\r\n `#${opt.id}`\r\n ) as HTMLElement | null;\r\n\r\n if (!element) return;\r\n\r\n const isMatch = normalizeStringToSearch(opt.displayContent).includes(\r\n normalizeStringToSearch(search)\r\n );\r\n if (isMatch) {\r\n found = true;\r\n }\r\n element.style.display = isMatch ? '' : 'none';\r\n });\r\n\r\n this.repositionScroll();\r\n this.showSearchNoData = !found;\r\n }\r\n\r\n private repositionScroll() {\r\n const overlayElement = this.overlayRef?.overlayElement.querySelector(\r\n '.mecx-select-overlay'\r\n ) as HTMLElement;\r\n\r\n if (overlayElement) {\r\n overlayElement.scrollTop = 0;\r\n }\r\n }\r\n\r\n private getComparationValue() {\r\n return (this.value || '')\r\n .split(',')\r\n .map((v: string) => {\r\n return v.trim();\r\n })\r\n .filter(Boolean);\r\n }\r\n\r\n ngOnInit() {\r\n this.searchHandle\r\n .pipe(debounceTime(200), takeUntilDestroyed(this._destroyRef))\r\n .subscribe((search: string) => {\r\n this.executeSearch(search);\r\n });\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.initializeOptions();\r\n this.updateSelectedLabel();\r\n\r\n this.options.changes.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((resp) => {\r\n this.updateSelectedLabel();\r\n this.initializeOptions();\r\n this.changeSelected();\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n }\r\n }\r\n\r\n toggleDropdown(): void {\r\n if (!this.disabled) {\r\n if (this.isOpen) {\r\n this.closeDropdown();\r\n this._onTouched();\r\n } else {\r\n this.openDropdown();\r\n }\r\n }\r\n }\r\n\r\n onAnimationEnd = (event: any) => {\r\n if (event.toState === 'closed') {\r\n this.closeOverlay();\r\n }\r\n };\r\n\r\n selectOption(option: MonkeyOptionComponent): void {\r\n if (option.disabled || this.disabled) return;\r\n\r\n if (this.type === 'checkbox') {\r\n const values = this.getComparationValue();\r\n const index = values.indexOf(`${option.value()}`);\r\n\r\n if (index === -1) {\r\n values.push(`${option.value()}`);\r\n option.onSelect(true);\r\n } else {\r\n values.splice(index, 1);\r\n option.onSelect(false);\r\n }\r\n\r\n this.value = values.join(',');\r\n } else {\r\n this.value = `${option.value()}`;\r\n\r\n this.options.forEach((opt) => {\r\n opt.onSelect(`${opt.value()}` === `${this.value}`);\r\n });\r\n\r\n this.closeDropdown();\r\n this._onChange(this.value);\r\n this.onChange.emit(this.value);\r\n }\r\n\r\n this.updateSelectedLabel();\r\n }\r\n\r\n writeValue(value: any): void {\r\n // Normalized to a string because that's what the value is compared\r\n // against: `updateSelectedLabel` matches `String(opt.value()) ===\r\n // this.value`, and `selectOption` already stores `${option.value()}`.\r\n // Writing the raw value left a NUMBER here, so `'10' === 10` was false,\r\n // no option matched, the label came out empty and the placeholder showed\r\n // instead — a numeric value bound through ngModel/formControl never\r\n // displayed, while picking the same option by hand worked.\r\n // null/undefined are preserved, so \"no selection\" doesn't become \"null\".\r\n this.value = value === null || value === undefined ? value : String(value);\r\n this.changeSelected();\r\n this.updateSelectedLabel();\r\n }\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n if (this.disabled) return;\r\n\r\n this.openDropdown();\r\n this._elementRef.nativeElement.focus();\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _onBlur() {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n let hasChanges = false;\r\n // eslint-disable-next-line dot-notation\r\n const changesLoading = changes?.['loading'];\r\n if (changesLoading?.currentValue !== changesLoading?.previousValue) {\r\n hasChanges = true;\r\n this.changeControl();\r\n }\r\n\r\n if (hasChanges) {\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n onHandleSearch(event: Event) {\r\n try {\r\n const { value } = event.target as HTMLInputElement;\r\n const handled = sanitizeString(value);\r\n this.searchHandle.next(handled || '');\r\n } catch (e) {\r\n // not to do\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"mecx-select-trigger\"\r\n [class.open]=\"isOpen\"\r\n (click)=\"toggleDropdown()\"\r\n role=\"combobox\"\r\n [attr.aria-expanded]=\"isOpen\"\r\n #trigger\r\n>\r\n <div class=\"mecx-select-value\" [class.has-value]=\"value\">\r\n <span>{{ labelSelected || placeholder }}</span>\r\n </div>\r\n\r\n @if (!loading) {\r\n <util-icon class=\"mecx-select-icon\" name=\"arrowDown\" />\r\n }\r\n</div>\r\n\r\n<ng-template #overlayTemplate>\r\n <div class=\"mecx-select-body-overlay\">\r\n @if (showSearch) {\r\n <div class=\"mecx-select-search\">\r\n <util-icon class=\"mecx-select-search-icon\" name=\"search\" />\r\n <input\r\n (input)=\"onHandleSearch($event)\"\r\n type=\"text\"\r\n [id]=\"id + '-search'\"\r\n autocomplete=\"off\"\r\n maxlength=\"50\"\r\n [placeholder]=\"searchPlaceholder\"\r\n [(ngModel)]=\"searchData\"\r\n />\r\n </div>\r\n }\r\n <div\r\n class=\"mecx-select-overlay\"\r\n #overlay\r\n [@animation]=\"isOpen ? 'open' : 'closed'\"\r\n (@animation.done)=\"onAnimationEnd($event)\"\r\n >\r\n <ng-content />\r\n </div>\r\n @if (showSearch && showSearchNoData) {\r\n <div class=\"mecx-select-search-no-data\">\r\n <util-icon class=\"mecx-select-search-no-data-icon\" name=\"searchFail\" />\r\n {{ searchDictionary | async }}\r\n </div>\r\n }\r\n @if (loading) {\r\n <div class=\"mecx-select-search-loading\">\r\n {{ loadingDictionary | async }}\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './select.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n Component,\r\n ElementRef,\r\n inject,\r\n Input,\r\n LOCALE_ID,\r\n OnChanges,\r\n OnDestroy,\r\n QueryList,\r\n SimpleChanges,\r\n ViewChildren\r\n} from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n ReactiveFormsModule,\r\n Validators\r\n} from '@angular/forms';\r\nimport parsePhoneNumberFromString, {\r\n AsYouType,\r\n CountryCode,\r\n getCountries,\r\n getCountryCallingCode,\r\n getExampleNumber\r\n} from 'libphonenumber-js';\r\nimport examples from 'libphonenumber-js/examples.mobile.json';\r\nimport { isValidPhoneNumber } from 'libphonenumber-js/max';\r\nimport { Subject } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { injectTokenWithWarning, MECX_COUNTRY_ISO_CODE } from '../../tokens';\r\nimport { MonkeyFormFieldControl, MonkeyFormFieldModule } from '../form-field';\r\nimport { MonkeyOptionComponent } from '../option';\r\nimport { MonkeySelectComponent } from '../select';\r\n\r\ninterface Country {\r\n iso: string;\r\n code: string;\r\n name: string;\r\n}\r\n\r\n@Component({\r\n selector: 'monkey-input-phone',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MonkeySelectComponent,\r\n MonkeyOptionComponent,\r\n MonkeyFormFieldModule\r\n ],\r\n template: `\r\n <monkey-select\r\n placeholder=\"\"\r\n [disabled]=\"disabled\"\r\n showSearch\r\n [(ngModel)]=\"selectedCallingCode\"\r\n class=\"mecx-phone-select-country\"\r\n (onChange)=\"onCountryChange()\"\r\n >\r\n @for (item of countries; track $index) {\r\n <monkey-option [value]=\"item.iso\">\r\n <div class=\"option-flag\">\r\n <img class=\"img-flag\" [src]=\"'https://flagcdn.com/w20/' + item.iso.toLowerCase() + '.png'\" loading=\"lazy\">\r\n </div>\r\n <div class=\"option-name\">{{ item.name }} {{ item.code }}</div>\r\n </monkey-option>\r\n }\r\n </monkey-select>\r\n <input\r\n #input\r\n type=\"tel\"\r\n class=\"mecx-input\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"placeholder\"\r\n (input)=\"onInputChange($event)\"\r\n [ngModel]=\"phoneFormatted\"\r\n [maxlength]=\"getMaxLength()\"\r\n (focus)=\"_onFocus()\"\r\n (blur)=\"_onBlur()\"\r\n [attr.id]=\"inputId\"\r\n />\r\n `,\r\n styleUrl: './input-phone.component.scss',\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyInputPhoneComponent }\r\n ],\r\n host: {\r\n '[attr.data-testid]': \"'monkey-input-phone'\",\r\n class: 'mecx-input-phone',\r\n '[class.mecx-input-phone-disabled]': '_disabled',\r\n '[class.mecx-input-phone-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur()'\r\n }\r\n})\r\nexport class MonkeyInputPhoneComponent\r\n implements MonkeyFormFieldControl, ControlValueAccessor, AfterContentInit, OnDestroy, OnChanges\r\n{\r\n @Input() placeholder: string = '';\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _disabled: boolean = false;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n this._value = value;\r\n this.formatValue(value);\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value: string | null = null;\r\n\r\n constructor() {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n private readonly countryIsoCode = injectTokenWithWarning(\r\n MECX_COUNTRY_ISO_CODE,\r\n 'MECX_COUNTRY_ISO_CODE'\r\n )!;\r\n\r\n private readonly locale = inject(LOCALE_ID);\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-input-phone-');\r\n\r\n readonly inputId: string = this.idGenerator.getId('monkey-input-phone-input-');\r\n\r\n focused: boolean = false;\r\n\r\n readonly type: string = 'input-phone';\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n countries: Country[] = getCountries()\r\n .map((code) => {\r\n return {\r\n iso: code,\r\n code: `+${getCountryCallingCode(code)}`,\r\n name: this.getCountryNameFromCode(code)\r\n };\r\n })\r\n .sort((a, b) => {\r\n return a.name.localeCompare(b.name);\r\n });\r\n\r\n selectedCallingCode = this.countryIsoCode.toString();\r\n\r\n phoneFormatted = '';\r\n\r\n phoneValid = false;\r\n\r\n @ViewChildren('input') inputs!: QueryList<ElementRef<HTMLInputElement>>;\r\n\r\n private getCountryNameFromCode(code: string) {\r\n try {\r\n const locale = this.locale.toString();\r\n const display = new Intl.DisplayNames([locale], { type: 'region' });\r\n return display.of(code.toUpperCase()) || code;\r\n } catch {\r\n return code;\r\n }\r\n }\r\n\r\n private getCountryByCallingCode(code: string): CountryCode | null {\r\n const cleanCode = code.replace('+', '');\r\n\r\n return (\r\n getCountries().find((country) => {\r\n return country === cleanCode;\r\n }) || null\r\n );\r\n }\r\n\r\n private getCountryFromPhoneNumber(input: string, changedCountry: boolean): string {\r\n try {\r\n if (changedCountry) {\r\n return this.selectedCallingCode;\r\n }\r\n\r\n const parsed = parsePhoneNumberFromString(input);\r\n return parsed!.country as string;\r\n } catch (e) {\r\n // not to do\r\n }\r\n\r\n return this.selectedCallingCode;\r\n }\r\n\r\n private performValue(value: string) {\r\n const countryCode = `+${getCountryCallingCode(this.selectedCallingCode as CountryCode)}`;\r\n\r\n this._value = `${countryCode}${value}`;\r\n this._onChange(this._value);\r\n this._onTouched(this._value);\r\n }\r\n\r\n private validateValue() {\r\n const { phoneValid } = this;\r\n if (!phoneValid) {\r\n const countryCode = this.selectedCallingCode as CountryCode;\r\n const example = getExampleNumber(countryCode!, examples);\r\n\r\n const formatter = new AsYouType(countryCode);\r\n const phoneAllowed = formatter.input(example!.nationalNumber);\r\n\r\n this.ngControl?.control?.setErrors({\r\n phone: true,\r\n phoneAllowed\r\n });\r\n }\r\n }\r\n\r\n private formatValue(value: string, changedCountry = false) {\r\n if (!value) {\r\n this.phoneFormatted = '';\r\n this.phoneValid = false;\r\n this.validateValue();\r\n return;\r\n }\r\n\r\n const detectedCallingCode = this.getCountryFromPhoneNumber(value, changedCountry);\r\n const isCountryChanged = changedCountry || detectedCallingCode !== this.selectedCallingCode;\r\n\r\n if (isCountryChanged && detectedCallingCode) {\r\n this.selectedCallingCode = detectedCallingCode;\r\n }\r\n\r\n const countryCode = `+${getCountryCallingCode(this.selectedCallingCode as CountryCode)}`;\r\n\r\n if (!countryCode) {\r\n this.phoneFormatted = value;\r\n this.phoneValid = false;\r\n this.validateValue();\r\n return;\r\n }\r\n\r\n let nationalPart = value.replace(this.selectedCallingCode, '').replace(/[^\\d+]/g, '');\r\n nationalPart = nationalPart.replace(countryCode, '');\r\n\r\n const formatter = new AsYouType(this.selectedCallingCode as CountryCode);\r\n this.phoneFormatted = formatter.input(nationalPart);\r\n\r\n this.performValue(nationalPart);\r\n\r\n this.phoneValid = isValidPhoneNumber(nationalPart, this.selectedCallingCode as CountryCode);\r\n this.validateValue();\r\n }\r\n\r\n disableToBeDirty?: boolean | undefined;\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n ngAfterContentInit(): void {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {}\r\n\r\n ngOnDestroy(): void {}\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n this.inputs.first.nativeElement.focus();\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _onBlur() {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n this.validateValue();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n onInputChange(event: Event) {\r\n const { value } = event.target as HTMLInputElement;\r\n this.formatValue(value);\r\n }\r\n\r\n onCountryChange() {\r\n this.formatValue(this._value!, true);\r\n this.validateValue();\r\n }\r\n\r\n getMaxLength(): number {\r\n try {\r\n const countryCode = this.getCountryByCallingCode(this.selectedCallingCode);\r\n\r\n if (!countryCode) return 20;\r\n\r\n const example = getExampleNumber(countryCode, examples);\r\n const formatted = new AsYouType(countryCode).input(example!.nationalNumber);\r\n\r\n return formatted.length;\r\n } catch {\r\n return 20;\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './input-phone.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NgControl, Validators } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { formatFileSize, getFileExtension, IdGenerator } from '../../../utils';\r\nimport { MonkeyFormFieldControl } from '../form-field';\r\n\r\n// eslint-disable-next-line no-use-before-define\r\nexport type MonkeyInputUploadChangeEvent = { component: MonkeyInputUploadComponent; file: File };\r\n\r\n@Component({\r\n selector: 'monkey-input-upload',\r\n imports: [],\r\n template: `\r\n <div class=\"mecx-input-upload-value\" [class.has-value]=\"value\">\r\n {{ value?.filename || value?.fileName || placeholder }}\r\n </div>\r\n <input\r\n (change)=\"onFileSelected($event)\"\r\n type=\"file\"\r\n class=\"file-input\"\r\n #fileInput\r\n [accept]=\"allowedExtensions.join(',')\"\r\n />\r\n @if (loading) {\r\n <div class=\"progress\">\r\n <div class=\"progress-bar\" [style.width.%]=\"progress\"></div>\r\n </div>\r\n }\r\n `,\r\n styleUrl: './input-upload.component.scss',\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyInputUploadComponent }\r\n ],\r\n host: {\r\n '[attr.data-testid]': \"'monkey-input-upload'\",\r\n class: 'mecx-input-upload',\r\n '[class.mecx-input-upload-disabled]': '_disabled',\r\n '[class.mecx-input-upload-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur()'\r\n }\r\n})\r\nexport class MonkeyInputUploadComponent\r\n implements MonkeyFormFieldControl, ControlValueAccessor, AfterContentInit, OnDestroy, OnChanges\r\n{\r\n @ViewChild('fileInput') fileInput!: ElementRef<HTMLInputElement>;\r\n\r\n @Input() progress: number = 0;\r\n\r\n @Input() placeholder: string = '';\r\n\r\n @Input() maxSizeBytes = 5 * 1024 * 1024;\r\n\r\n @Input() allowedExtensions = ['.jpg', '.jpeg', '.png', '.pdf', '.txt', '.xls', '.xlsx'];\r\n\r\n @Input({ transform: booleanAttribute })\r\n loading = false;\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _disabled: boolean = false;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value = null;\r\n\r\n constructor() {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n @Output() onChange = new EventEmitter<MonkeyInputUploadChangeEvent>();\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-input-upload-');\r\n\r\n focused: boolean = false;\r\n\r\n readonly type: string = '';\r\n\r\n currency: boolean = false;\r\n\r\n readonly percent: boolean = false;\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n private validateFileSize(file: File): boolean {\r\n return file.size <= this.maxSizeBytes;\r\n }\r\n\r\n private validateFileExtension(file: File): boolean {\r\n if (!this.allowedExtensions || !this.allowedExtensions.length) {\r\n return true;\r\n }\r\n const fileExtension = getFileExtension(file.name);\r\n\r\n const allowedExts = this.allowedExtensions.map((ext) => {\r\n return ext.trim().replace('.', '').toLowerCase();\r\n });\r\n\r\n return allowedExts.includes(fileExtension);\r\n }\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n if (!this.loading) {\r\n this.fileInput.nativeElement.click();\r\n }\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _onBlur() {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n\r\n disableToBeDirty?: boolean | undefined;\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n ngAfterContentInit(): void {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {}\r\n\r\n ngOnDestroy(): void {}\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n if (this.fileInput) {\r\n this.fileInput.nativeElement.disabled = isDisabled;\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n reset(): void {\r\n if (this.fileInput) {\r\n this.fileInput.nativeElement.value = '';\r\n }\r\n }\r\n\r\n onFileSelected(event: Event) {\r\n const input = event.target as HTMLInputElement;\r\n this._onTouched();\r\n if (!input.files?.length) {\r\n return;\r\n }\r\n\r\n const file = input.files.item(0);\r\n\r\n if (this.fileInput) {\r\n this.fileInput.nativeElement.value = '';\r\n }\r\n\r\n if (!this.validateFileSize(file!)) {\r\n this.ngControl?.control?.setErrors({\r\n maxFileSize: true,\r\n sizeAllowed: formatFileSize(this.maxSizeBytes)\r\n });\r\n this._onBlur();\r\n this.reset();\r\n return;\r\n }\r\n\r\n if (!this.validateFileExtension(file!)) {\r\n this.ngControl?.control?.setErrors({\r\n fileExtension: true,\r\n extensionAllowed: this.allowedExtensions.join(', ')\r\n });\r\n this._onBlur();\r\n this.reset();\r\n return;\r\n }\r\n\r\n this.ngControl?.control?.setErrors(null);\r\n\r\n this._onBlur();\r\n if (this.onChange.observed) {\r\n this.onChange.emit({ component: this, file: file! });\r\n } else {\r\n this.value = {\r\n fileName: file!.name,\r\n file\r\n };\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './input-upload.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive, inject, Input } from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\n\r\n@Directive({\r\n selector: 'monkey-modal-actions, [monkey-modal-actions]',\r\n host: {\r\n '[class]': `'mecx-modal-actions align-'+mkAlign`,\r\n '[attr.id]': 'id || null'\r\n },\r\n standalone: false\r\n})\r\nexport class MonkeyModalActionsDirective {\r\n @Input() mkAlign: 'start' | 'center' | 'end' = 'end';\r\n\r\n id = inject(IdGenerator).getId('monkey-modal-actions-');\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive, inject } from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\n\r\n@Directive({\r\n selector: 'monkey-modal-content, [monkey-modal-content]',\r\n host: {\r\n class: 'mecx-modal-content',\r\n '[attr.id]': 'id || null'\r\n },\r\n standalone: false\r\n})\r\nexport class MonkeyModalContentDirective {\r\n id = inject(IdGenerator).getId('monkey-modal-content-');\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive, inject } from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\n\r\n@Directive({\r\n selector: 'monkey-modal-subtitle, [monkey-modal-subtitle]',\r\n host: {\r\n class: 'mecx-modal-subtitle',\r\n '[attr.id]': 'id || null'\r\n },\r\n standalone: false\r\n})\r\nexport class MonkeyModalSubtitleDirective {\r\n id = inject(IdGenerator).getId('monkey-modal-subtitle-');\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive, inject } from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\n\r\n@Directive({\r\n selector: 'monkey-modal-title, [monkey-modal-title]',\r\n host: {\r\n class: 'mecx-modal-title',\r\n '[attr.id]': 'id || null'\r\n },\r\n standalone: false\r\n})\r\nexport class MonkeyModalTitleDirective {\r\n id = inject(IdGenerator).getId('monkey-modal-title-');\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { StaticProvider } from '@angular/core';\r\n\r\nexport class MonkeyModalConfig {\r\n id?: string;\r\n\r\n icon?: string;\r\n\r\n panelClass?: string | string[] = '';\r\n\r\n hasBackdrop?: boolean = true;\r\n\r\n backdropClass?: string | string[] = 'mecx-modal-overlay';\r\n\r\n disableClose?: boolean = false;\r\n\r\n disableBackdropClose?: boolean = false;\r\n\r\n maxWidth?: number | string;\r\n\r\n maxHeight?: number | string;\r\n\r\n fullscreen?: boolean = false;\r\n\r\n position?:\r\n | 'left-top'\r\n | 'center-top'\r\n | 'right-top'\r\n | 'left-center'\r\n | 'center-center'\r\n | 'right-center'\r\n | 'left-bottom'\r\n | 'center-bottom'\r\n | 'right-bottom' = 'center-center';\r\n\r\n data?: any | null = null;\r\n\r\n closeOnNavigation?: boolean = true;\r\n\r\n providers?: StaticProvider[];\r\n}\r\n\r\nexport interface MonkeyModalDefaultConfig {\r\n title: string;\r\n subtitle?: string;\r\n content: string;\r\n cancelLabel: string;\r\n okLabel: string;\r\n}\r\n\r\nexport interface MonkeyModalConfirmationConfig {\r\n title: string;\r\n content: string;\r\n cancelLabel: string;\r\n okLabel: string;\r\n type?: 'error' | 'success' | 'warning';\r\n confirmColor?: 'error' | 'success' | 'theme';\r\n icon?: string;\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { hasModifierKey } from '@angular/cdk/keycodes';\r\nimport { OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentRef } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { MonkeyModalConfig } from './modal-config';\r\n\r\nexport class MonkeyModalRef {\r\n readonly id?: string;\r\n\r\n readonly componentInstance!: any;\r\n\r\n readonly componentRef!: ComponentRef<any> | null;\r\n\r\n readonly icon?: string;\r\n\r\n disableClose: boolean | undefined;\r\n\r\n disableBackdropClose: boolean | undefined;\r\n\r\n closeOnNavigation: boolean | undefined;\r\n\r\n componentElement!: HTMLElement;\r\n\r\n readonly closed: Observable<any> = new Subject<any>();\r\n\r\n readonly backdropClick: Observable<MouseEvent>;\r\n\r\n readonly keydownEvents: Observable<KeyboardEvent>;\r\n\r\n readonly outsidePointerEvents: Observable<MouseEvent>;\r\n\r\n constructor(\r\n readonly overlayRef: OverlayRef,\r\n readonly config: MonkeyModalConfig\r\n ) {\r\n this.id = config.id;\r\n this.icon = config.icon;\r\n this.disableClose = config.disableClose;\r\n this.disableBackdropClose = config.disableBackdropClose;\r\n this.closeOnNavigation = config.closeOnNavigation;\r\n this.backdropClick = overlayRef.backdropClick();\r\n this.keydownEvents = overlayRef.keydownEvents();\r\n this.outsidePointerEvents = overlayRef.outsidePointerEvents();\r\n\r\n if (!this.disableBackdropClose) {\r\n this.keydownEvents.subscribe((event) => {\r\n if (event.key === 'Escape' && !this.disableClose && !hasModifierKey(event)) {\r\n event.preventDefault();\r\n this.close(undefined);\r\n }\r\n });\r\n\r\n this.backdropClick.subscribe(() => {\r\n if (!this.disableClose) {\r\n this.close(undefined);\r\n }\r\n });\r\n }\r\n }\r\n\r\n close(result?: any): void {\r\n if (this.componentInstance) {\r\n const closedSubject = this.closed as Subject<any>;\r\n\r\n const active = document.activeElement as HTMLElement;\r\n if (active && this.componentElement.contains(active)) {\r\n active.blur();\r\n }\r\n\r\n this.componentElement.querySelectorAll('monkey-modal')[0].classList.add('fade-out');\r\n setTimeout(() => {\r\n this.overlayRef.detach();\r\n }, 150);\r\n closedSubject.next(result);\r\n closedSubject.complete();\r\n // eslint-disable-next-line no-multi-assign\r\n (this as { componentInstance: any }).componentInstance = null!;\r\n }\r\n }\r\n\r\n afterClosed(): Observable<any> {\r\n return this.closed;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { OverlayRef } from '@angular/cdk/overlay';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n inject,\r\n OnDestroy,\r\n Optional,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { NavigationStart, Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { MonkeyModalRef } from './modal-ref';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-modal',\r\n template: `\r\n <div class=\"mecx-modal-header\">\r\n <div class=\"mecx-modal-header-group\">\r\n <div class=\"mecx-modal-header-title\">\r\n @if (modalRef?.icon) {\r\n <div class=\"mecx-modal-header-icon\">\r\n <i class=\"mk-i mk-i-{{ modalRef?.icon }}\"></i>\r\n </div>\r\n }\r\n <ng-content select=\"monkey-modal-title\"></ng-content>\r\n <ng-content select=\"[monkey-modal-title]\"></ng-content>\r\n </div>\r\n\r\n <ng-content select=\"monkey-modal-subtitle\"></ng-content>\r\n <ng-content select=\"[monkey-modal-subtitle]\"></ng-content>\r\n </div>\r\n @if (!modalRef?.disableClose) {\r\n <monkey-icon-button\r\n size=\"sm\"\r\n type=\"tertiary\"\r\n icon=\"close\"\r\n class=\"mecx-modal-close\"\r\n (click)=\"close()\"\r\n >\r\n </monkey-icon-button>\r\n }\r\n </div>\r\n <ng-content select=\"monkey-modal-content\"></ng-content>\r\n <ng-content select=\"[monkey-modal-content]\"></ng-content>\r\n <ng-content select=\"monkey-modal-actions\"></ng-content>\r\n <ng-content select=\"[monkey-modal-actions]\"></ng-content>\r\n `,\r\n host: {\r\n class: 'mecx-modal',\r\n tabindex: '-1',\r\n '[attr.id]': 'modalRef?.id || null'\r\n },\r\n styleUrl: './modal.component.scss',\r\n standalone: false\r\n})\r\nexport class MonkeyModalComponent implements AfterViewInit, OnDestroy {\r\n private _navigationSubscription: Subscription | null = null;\r\n\r\n private _router = inject(Router);\r\n\r\n constructor(\r\n private _elementRef: ElementRef,\r\n @Optional() public overlayRef?: OverlayRef,\r\n @Optional() public modalRef?: MonkeyModalRef\r\n ) {\r\n // not to do\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this._elementRef) {\r\n this._elementRef.nativeElement.focus();\r\n }\r\n\r\n if (this.modalRef?.closeOnNavigation) {\r\n this._navigationSubscription = this._router.events.subscribe((event) => {\r\n if (event instanceof NavigationStart) {\r\n this.close();\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this._navigationSubscription) {\r\n this._navigationSubscription.unsubscribe();\r\n this._navigationSubscription = null;\r\n }\r\n }\r\n\r\n close() {\r\n const element = this._elementRef.nativeElement as HTMLElement;\r\n\r\n element.classList.add('fade-out');\r\n\r\n setTimeout(() => {\r\n this.modalRef?.close();\r\n }, 150);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { InjectionToken } from '@angular/core';\r\nimport { MonkeyModalConfirmationConfig, MonkeyModalDefaultConfig } from './modal-config';\r\n\r\nexport const MECX_MODAL_DATA = new InjectionToken<any>('mecxModalData');\r\nexport const MECX_MODAL_DEFAULT_CONFIG = new InjectionToken<MonkeyModalDefaultConfig>(\r\n 'mecxModalDefaultConfig'\r\n);\r\nexport const MECX_MODAL_CONFIRMATION_CONFIG = new InjectionToken<MonkeyModalConfirmationConfig>(\r\n 'mecxModalConfirmationConfig'\r\n);\r\n\r\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.dev/license\r\n */\r\nexport function reverseForEach<T>(items: T[] | readonly T[], callback: (current: T) => void) {\r\n let i = items.length;\r\n\r\n // eslint-disable-next-line no-plusplus\r\n while (i--) {\r\n callback(items[i]);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, Inject, ViewEncapsulation } from '@angular/core';\r\nimport { MonkeyModalConfirmationConfig } from '../modal-config';\r\nimport { MonkeyModalRef } from '../modal-ref';\r\nimport { MECX_MODAL_CONFIRMATION_CONFIG } from '../utils';\r\n\r\n@Component({\r\n selector: 'monkey-modal-confirmation',\r\n encapsulation: ViewEncapsulation.None,\r\n styleUrls: ['./confirmation.component.scss'],\r\n template: `\r\n <monkey-modal class=\"modal-confirmation\">\r\n <monkey-modal-content>\r\n @if (config.icon) {\r\n <div class=\"modal-confirmation-icon {{ config.type }}\">\r\n <i class=\"mk-i mk-i-{{ config.icon }} xxl\"></i>\r\n </div>\r\n }\r\n <div class=\"confirmation-title\" [innerHTML]=\"config.title\"></div>\r\n <div class=\"confirmation-description\" [innerHTML]=\"config.content\"></div>\r\n </monkey-modal-content>\r\n <monkey-modal-actions>\r\n <monkey-button type=\"tertiary\" (click)=\"onClose()\">{{ config.cancelLabel }}</monkey-button>\r\n <monkey-button type=\"primary\" (click)=\"onSubmit()\">{{ config.okLabel }}</monkey-button>\r\n </monkey-modal-actions>\r\n </monkey-modal>\r\n `,\r\n standalone: false\r\n})\r\nexport class MonkeyModalConfirmationComponent {\r\n constructor(\r\n @Inject(MECX_MODAL_CONFIRMATION_CONFIG) public config: MonkeyModalConfirmationConfig,\r\n @Inject(MonkeyModalRef) private modalRef: MonkeyModalRef\r\n ) {\r\n // not to do\r\n }\r\n\r\n onSubmit() {\r\n this.modalRef.close(true);\r\n }\r\n\r\n onClose() {\r\n this.modalRef.close();\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, Inject } from '@angular/core';\r\nimport { MonkeyModalDefaultConfig } from '../modal-config';\r\nimport { MonkeyModalRef } from '../modal-ref';\r\nimport { MECX_MODAL_DEFAULT_CONFIG } from '../utils';\r\n\r\n@Component({\r\n selector: 'monkey-modal-default',\r\n template: `\r\n <monkey-modal>\r\n <monkey-modal-title [innerHTML]=\"config.title\"></monkey-modal-title>\r\n <monkey-modal-subtitle [innerHTML]=\"config.subtitle\"></monkey-modal-subtitle>\r\n <monkey-modal-content [innerHTML]=\"config.content\"></monkey-modal-content>\r\n <monkey-modal-actions mkAlign=\"end\">\r\n <monkey-button type=\"tertiary\" (click)=\"onClose()\">{{ config.cancelLabel }}</monkey-button>\r\n <monkey-button type=\"primary\" (click)=\"onSubmit()\">{{ config.okLabel }}</monkey-button>\r\n </monkey-modal-actions>\r\n </monkey-modal>\r\n `,\r\n standalone: false\r\n})\r\nexport class MonkeyModalDefaultComponent {\r\n constructor(\r\n @Inject(MECX_MODAL_DEFAULT_CONFIG) public config: MonkeyModalDefaultConfig,\r\n @Inject(MonkeyModalRef) private modalRef: MonkeyModalRef\r\n ) {\r\n // not to do\r\n }\r\n\r\n onSubmit() {\r\n this.modalRef.close(true);\r\n }\r\n\r\n onClose() {\r\n this.modalRef.close();\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MonkeyButtonComponent } from '../button';\r\nimport { MonkeyIconButtonComponent } from '../icon-button/icon-button.component';\r\nimport { MonkeyModalConfirmationComponent } from './components/confirmation.component';\r\nimport { MonkeyModalDefaultComponent } from './components/default';\r\nimport { MonkeyModalActionsDirective } from './directives/actions';\r\nimport { MonkeyModalContentDirective } from './directives/content';\r\nimport { MonkeyModalSubtitleDirective } from './directives/subtitle';\r\nimport { MonkeyModalTitleDirective } from './directives/title';\r\nimport { MonkeyModalComponent } from './modal.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule, MonkeyButtonComponent, MonkeyIconButtonComponent],\r\n declarations: [\r\n MonkeyModalComponent,\r\n MonkeyModalDefaultComponent,\r\n MonkeyModalConfirmationComponent,\r\n MonkeyModalTitleDirective,\r\n MonkeyModalSubtitleDirective,\r\n MonkeyModalContentDirective,\r\n MonkeyModalActionsDirective\r\n ],\r\n exports: [\r\n MonkeyModalComponent,\r\n MonkeyModalTitleDirective,\r\n MonkeyModalSubtitleDirective,\r\n MonkeyModalContentDirective,\r\n MonkeyModalActionsDirective\r\n ]\r\n})\r\nexport class MonkeyModalModule {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\r\nimport { inject, Injectable, Injector, StaticProvider } from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyModalConfirmationComponent } from './components/confirmation.component';\r\nimport { MonkeyModalDefaultComponent } from './components/default';\r\nimport {\r\n MonkeyModalConfig,\r\n MonkeyModalConfirmationConfig,\r\n MonkeyModalDefaultConfig\r\n} from './modal-config';\r\nimport { MonkeyModalRef } from './modal-ref';\r\nimport {\r\n MECX_MODAL_CONFIRMATION_CONFIG,\r\n MECX_MODAL_DATA,\r\n MECX_MODAL_DEFAULT_CONFIG,\r\n reverseForEach\r\n} from './utils';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MonkeyModalService {\r\n protected _idGenerator = inject(IdGenerator);\r\n\r\n protected _injector = inject(Injector);\r\n\r\n protected _overlay = inject(Overlay);\r\n\r\n protected _openDialogsAtThisLevel: MonkeyModalRef[] = [];\r\n\r\n protected _parentDialog = inject(MonkeyModalService, { optional: true, skipSelf: true });\r\n\r\n protected get openDialogs(): readonly MonkeyModalRef[] {\r\n return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;\r\n }\r\n\r\n private getOverlayConfig(config: MonkeyModalConfig): OverlayConfig {\r\n let positionStrategy;\r\n const marginStrategy = '20px';\r\n if (config.position === 'left-top') {\r\n positionStrategy = this._overlay.position().global().left(marginStrategy).top(marginStrategy);\r\n } else if (config.position === 'center-top') {\r\n positionStrategy = this._overlay.position().global().centerHorizontally().top(marginStrategy);\r\n } else if (config.position === 'right-top') {\r\n positionStrategy = this._overlay\r\n .position()\r\n .global()\r\n .right(marginStrategy)\r\n .top(marginStrategy);\r\n } else if (config.position === 'left-center') {\r\n positionStrategy = this._overlay.position().global().left(marginStrategy).centerVertically();\r\n } else if (config.position === 'center-center') {\r\n positionStrategy = this._overlay.position().global().centerHorizontally().centerVertically();\r\n } else if (config.position === 'right-center') {\r\n positionStrategy = this._overlay.position().global().right(marginStrategy).centerVertically();\r\n } else if (config.position === 'left-bottom') {\r\n positionStrategy = this._overlay\r\n .position()\r\n .global()\r\n .left(marginStrategy)\r\n .bottom(marginStrategy);\r\n } else if (config.position === 'center-bottom') {\r\n positionStrategy = this._overlay.position().global().centerHorizontally().bottom('20px');\r\n } else if (config.position === 'right-bottom') {\r\n positionStrategy = this._overlay\r\n .position()\r\n .global()\r\n .right(marginStrategy)\r\n .bottom(marginStrategy);\r\n }\r\n\r\n let panelClass = ['monkey-modal-panel'];\r\n\r\n if (config.fullscreen) {\r\n panelClass.push('monkey-modal-fullscreen');\r\n }\r\n\r\n if (Array.isArray(config.panelClass)) {\r\n panelClass = [...panelClass, ...config.panelClass];\r\n } else {\r\n panelClass.push(config.panelClass as string);\r\n }\r\n\r\n const state = new OverlayConfig({\r\n positionStrategy,\r\n scrollStrategy: this._overlay.scrollStrategies.block(),\r\n panelClass,\r\n hasBackdrop: config.hasBackdrop,\r\n maxWidth: config.maxWidth,\r\n maxHeight: config.maxHeight,\r\n disposeOnNavigation: config.closeOnNavigation\r\n });\r\n\r\n if (config.backdropClass) {\r\n state.backdropClass = config.backdropClass;\r\n }\r\n\r\n if (config.maxWidth) {\r\n state.width = '100%';\r\n }\r\n if (config.maxHeight) {\r\n state.height = '100%';\r\n }\r\n\r\n return state;\r\n }\r\n\r\n private createInjector(\r\n config: MonkeyModalConfig,\r\n dialogRef: MonkeyModalRef,\r\n overlayRef: OverlayRef,\r\n fallbackInjector: Injector | undefined\r\n ): Injector {\r\n const providers: StaticProvider[] = [\r\n { provide: OverlayRef, useValue: overlayRef },\r\n { provide: MonkeyModalRef, useValue: dialogRef },\r\n { provide: MECX_MODAL_DATA, useValue: config.data }\r\n ];\r\n\r\n if (config.providers) {\r\n providers.push(...config.providers);\r\n }\r\n\r\n return Injector.create({ parent: fallbackInjector, providers });\r\n }\r\n\r\n open<T>(component: ComponentType<T>, config: MonkeyModalConfig) {\r\n const defaultConfig = new MonkeyModalConfig();\r\n\r\n config = { ...defaultConfig, ...config };\r\n config.id = this._idGenerator.getId('monkey-modal-');\r\n\r\n const overlayConfig = this.getOverlayConfig(config);\r\n const overlayRef = this._overlay.create(overlayConfig);\r\n const modalRef = new MonkeyModalRef(overlayRef, config);\r\n\r\n const injector = this.createInjector(config, modalRef, overlayRef, this._injector);\r\n\r\n const componentPortal = new ComponentPortal(component, null, injector);\r\n const componentRef = overlayRef.attach(componentPortal);\r\n\r\n const componentElement = componentRef.location.nativeElement as HTMLElement;\r\n componentElement.style.width = '100%';\r\n componentElement.style.height = '100%';\r\n modalRef.componentElement = componentElement;\r\n\r\n (modalRef as { componentInstance: T }).componentInstance = componentRef.instance;\r\n\r\n (this.openDialogs as MonkeyModalRef[]).push(modalRef);\r\n\r\n return modalRef;\r\n }\r\n\r\n openDefault(params: MonkeyModalDefaultConfig, config: MonkeyModalConfig) {\r\n config.providers = [{ provide: MECX_MODAL_DEFAULT_CONFIG, useValue: params }];\r\n config.icon = config.icon ? config.icon : 'help';\r\n\r\n return this.open(MonkeyModalDefaultComponent, config);\r\n }\r\n\r\n openConfirmation(params: MonkeyModalConfirmationConfig, config: MonkeyModalConfig) {\r\n config.providers = [{ provide: MECX_MODAL_CONFIRMATION_CONFIG, useValue: params }];\r\n\r\n return this.open(MonkeyModalConfirmationComponent, config);\r\n }\r\n\r\n closeAll(): void {\r\n reverseForEach(this.openDialogs, (dialog) => {\r\n return dialog.close();\r\n });\r\n\r\n (this.openDialogs as MonkeyModalRef[]).splice(0, this.openDialogs.length);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './directives/actions';\r\nexport * from './directives/content';\r\nexport * from './directives/subtitle';\r\nexport * from './directives/title';\r\nexport * from './modal-config';\r\nexport * from './modal-ref';\r\nexport * from './modal.component';\r\nexport * from './modal.module';\r\nexport * from './modal.service';\r\nexport { MECX_MODAL_DATA, MECX_MODAL_DEFAULT_CONFIG } from './utils';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, inject, Input, output } from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyButtonComponent } from '../button';\r\n\r\n@Component({\r\n selector: 'monkey-pass-number',\r\n imports: [MonkeyButtonComponent],\r\n template: `\r\n <div class=\"pin-selected\">\r\n @for (input of [0, 1, 2, 3]; track input) {\r\n <div class=\"pin-input\">\r\n {{ selected[input] }}\r\n </div>\r\n }\r\n </div>\r\n <div class=\"grid\">\r\n @for (pin of [1, 2, 3, 4, 5, 6, 7, 8, 9]; track pin) {\r\n <monkey-button\r\n size=\"lg\"\r\n (click)=\"onPress(pin)\"\r\n [disabled]=\"isDisabledNumbers || disabled\"\r\n color=\"black\"\r\n >\r\n {{ pin }}\r\n </monkey-button>\r\n }\r\n <div></div>\r\n <monkey-button\r\n size=\"lg\"\r\n (click)=\"onPress(0)\"\r\n [disabled]=\"isDisabledNumbers || disabled\"\r\n color=\"black\"\r\n >\r\n 0\r\n </monkey-button>\r\n <monkey-button\r\n size=\"lg\"\r\n type=\"secondary\"\r\n (click)=\"clear()\"\r\n [disabled]=\"isDisabledClear || disabled\"\r\n >\r\n <i class=\"mk-i mk-i-delete\"></i>\r\n </monkey-button>\r\n </div>\r\n `,\r\n styleUrl: './pass-number.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-pass-number',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyPassNumberComponent {\r\n @Input() disabled!: boolean;\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-pass-number-');\r\n\r\n protected _id!: string;\r\n\r\n protected selected: number[] = [];\r\n\r\n onChange = output<number[]>();\r\n\r\n get isDisabledNumbers() {\r\n return this.selected?.length === 4;\r\n }\r\n\r\n get isDisabledClear() {\r\n return this.selected?.length === 0;\r\n }\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n protected clear(): void {\r\n this.selected = [];\r\n this.onChange.emit(this.selected);\r\n }\r\n protected onPress(pin: number): void {\r\n if (this.selected.length < 4) {\r\n this.selected.push(pin);\r\n this.onChange.emit(this.selected);\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { AsyncPipe } from '@angular/common';\r\nimport { Component, inject, Input, OnInit, output } from '@angular/core';\r\nimport { IdGenerator, shuffle } from '../../../utils';\r\nimport { MonkeyDictionaryService } from '../../services';\r\nimport { MonkeyButtonComponent } from '../button';\r\n\r\ntype PinCombinations = {\r\n first: number;\r\n last: number;\r\n};\r\n\r\ntype PinResult = {\r\n passNumber1: string;\r\n passNumber2: string;\r\n passNumber3: string;\r\n passNumber4: string;\r\n};\r\n\r\n@Component({\r\n selector: 'monkey-pass-secret-number',\r\n imports: [AsyncPipe, MonkeyButtonComponent],\r\n template: `\r\n <div class=\"pin-selected\">\r\n @for (input of [0, 1, 2, 3]; track input) {\r\n <div class=\"pin-input\" [class.filled]=\"selected[input]\"></div>\r\n }\r\n </div>\r\n <div class=\"grid\">\r\n @for (pin of pins; track pin) {\r\n <monkey-button\r\n size=\"lg\"\r\n (click)=\"onPress(pin)\"\r\n [disabled]=\"isDisabledNumbers || disabled\"\r\n color=\"black\"\r\n >\r\n {{ pin.first }} {{ orLabel | async }} {{ pin.last }}\r\n </monkey-button>\r\n }\r\n <monkey-button\r\n data-testid=\"clear-button\"\r\n size=\"lg\"\r\n type=\"secondary\"\r\n (click)=\"clear()\"\r\n [disabled]=\"isDisabledClear || disabled\"\r\n >\r\n <i class=\"mk-i mk-i-delete\"></i>\r\n </monkey-button>\r\n </div>\r\n `,\r\n styleUrl: './pass-number.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-pass-secret-number',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyPassSecretNumberComponent implements OnInit {\r\n protected _uid = inject(IdGenerator).getId('monkey-pass-secret-number-');\r\n\r\n @Input() disabled!: boolean;\r\n\r\n protected _id!: string;\r\n\r\n readonly orLabel = inject(MonkeyDictionaryService).get('OR');\r\n\r\n protected pins: PinCombinations[] = [];\r\n\r\n protected selected: string[] = [];\r\n\r\n onChange = output<PinResult>();\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n get isDisabledNumbers() {\r\n return this.selected?.length === 4;\r\n }\r\n\r\n get isDisabledClear() {\r\n return this.selected?.length === 0;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n ngOnInit() {\r\n const qtd = 10;\r\n\r\n const pinPasswords = shuffle(\r\n new Array(qtd).fill(qtd).map((value: number, i: number) => {\r\n return (value * i) / qtd;\r\n })\r\n );\r\n\r\n this.pins = pinPasswords\r\n .map((value: number, index: number) => {\r\n return {\r\n first: value,\r\n last: pinPasswords[pinPasswords.length - index - 1]\r\n };\r\n })\r\n .slice(0, 5);\r\n }\r\n\r\n protected clear(): void {\r\n this.selected = [];\r\n this.onChange.emit(this.getPinPassword());\r\n }\r\n\r\n private getPinPassword(): PinResult {\r\n const result: PinResult = {\r\n passNumber1: '',\r\n passNumber2: '',\r\n passNumber3: '',\r\n passNumber4: ''\r\n };\r\n this.selected.forEach((value, index) => {\r\n result[`passNumber${index + 1}` as keyof PinResult] = value;\r\n });\r\n return result!;\r\n }\r\n\r\n protected onPress(pin: PinCombinations): void {\r\n if (this.selected.length < 4) {\r\n this.selected.push(`${pin.first}${pin.last}`);\r\n this.onChange.emit(this.getPinPassword());\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './pass-number.component';\r\nexport * from './pass-secret-number.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n inject,\r\n Input,\r\n Optional,\r\n Output,\r\n QueryList,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n ReactiveFormsModule,\r\n Validators\r\n} from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils/id-generator';\r\nimport { MonkeySize } from '../../interfaces';\r\nimport { MonkeyFormFieldControl } from '../form-field/form-field-control';\r\nimport { MonkeyFormFieldComponent } from '../form-field/form-field.component';\r\nimport { MonkeyOptionComponent } from '../option/option.component';\r\n\r\n@Component({\r\n selector: 'monkey-radiobutton',\r\n imports: [ReactiveFormsModule, FormsModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: 'radio-button.component.html',\r\n styleUrls: ['./radio-button.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyRadioButtonComponent }\r\n ],\r\n host: {\r\n 'data-testid': 'monkey-radiobutton',\r\n class: 'mecx-radiobutton',\r\n '[class.mecx-disabled]': 'disabled',\r\n '[class.mecx-radiobutton-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur()'\r\n }\r\n})\r\nexport class MonkeyRadioButtonComponent\r\n implements MonkeyFormFieldControl, ControlValueAccessor, AfterContentInit\r\n{\r\n @ContentChildren(MonkeyOptionComponent) options!: QueryList<MonkeyOptionComponent>;\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Output() onChange = new EventEmitter();\r\n\r\n @Output() onSearch = new EventEmitter();\r\n\r\n @Input() position = 'horizontal';\r\n\r\n @Input()\r\n size: MonkeySize = 'lg';\r\n\r\n @HostBinding('class')\r\n get classes() {\r\n return `${this.position} ${this.size}`;\r\n }\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value) {\r\n this._value = value;\r\n this._onChange(value);\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value = null;\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n focused: boolean = false;\r\n\r\n _disabled: boolean = false;\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-radiobutton-');\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n readonly type: string = 'radio-button';\r\n\r\n constructor(\r\n private changeDetectorRef: ChangeDetectorRef,\r\n @Optional() private formField: MonkeyFormFieldComponent\r\n ) {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n private changeSelected() {\r\n setTimeout(() => {\r\n if (this.options) {\r\n this.options.forEach((opt) => {\r\n opt.onSelect(opt.value() === this.value);\r\n });\r\n }\r\n this.changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n private initializeOptions() {\r\n setTimeout(() => {\r\n this.options?.forEach((option) => {\r\n option.type = 'radio';\r\n if (!option.action) {\r\n option.action = this.selectOption.bind(this, option);\r\n }\r\n });\r\n this.changeDetectorRef.markForCheck();\r\n }, 0);\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.initializeOptions();\r\n this.options.changes.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\r\n this.initializeOptions();\r\n this.changeSelected();\r\n });\r\n }\r\n\r\n selectOption(option: MonkeyOptionComponent): void {\r\n if (!option.disabled && !this.disabled) {\r\n this.value = option.value();\r\n this._onChange(this.value);\r\n this.onChange.emit(this.value);\r\n\r\n this.options.forEach((opt) => {\r\n opt.onSelect(opt.value() === this.value);\r\n });\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n this.changeSelected();\r\n }\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n if (this.disabled) return;\r\n\r\n this._elementRef.nativeElement.focus();\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _onBlur() {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n this.initializeOptions();\r\n }\r\n}\r\n","<ng-content />\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './radio-button.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, HostBinding, inject, Input, input, ViewEncapsulation } from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [],\r\n selector: 'monkey-security-level',\r\n styleUrl: './security-level.component.scss',\r\n templateUrl: './security-level.component.html',\r\n host: {\r\n 'data-testid': 'monkey-security-level',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeySecurityLevelComponent {\r\n label = input<string>();\r\n\r\n score = input.required<number>();\r\n\r\n strengthLabel = input<string>();\r\n\r\n @HostBinding('class')\r\n public get class(): string {\r\n if (this.score() === 0) {\r\n return 'empty';\r\n }\r\n\r\n if (this.score() < 300) {\r\n return 'weak';\r\n }\r\n\r\n if (this.score() >= 300 && this.score() < 800) {\r\n return 'medium';\r\n }\r\n\r\n if (this.score() >= 800 && this.score() < 1000) {\r\n return 'strong';\r\n }\r\n\r\n return 'very-strong';\r\n }\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-security-level-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","<div class=\"body\">\r\n <div>\r\n @if (label(); as lb) {\r\n <span data-testid=\"label\">\r\n {{ lb }}\r\n </span>\r\n }\r\n @if (strengthLabel(); as strLabel) {\r\n <span data-testid=\"str-label\" class=\"level-info\">\r\n {{ strLabel }}\r\n </span>\r\n }\r\n </div>\r\n <div class=\"bar\"></div>\r\n</div>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './security-level.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostBinding,\r\n inject,\r\n Input,\r\n input\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeySize } from '../../interfaces';\r\n\r\ntype Status = 'default' | 'success' | 'warning' | 'error' | 'question' | 'info';\r\n\r\n@Component({\r\n selector: 'monkey-status',\r\n imports: [],\r\n templateUrl: './status.component.html',\r\n styleUrl: './status.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n 'data-testid': 'monkey-status',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyStatusComponent {\r\n type = input.required<Status>();\r\n\r\n size = input<MonkeySize>('md');\r\n\r\n label = input<string>();\r\n\r\n @HostBinding('class')\r\n public get class(): string {\r\n return `${this.type()} ${this.size()}`;\r\n }\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-status-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","<div class=\"status\"></div>\r\n@if (label(); as lb) {\r\n <span>\r\n {{ lb }}\r\n </span>\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './status.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentInit,\r\n Component,\r\n ContentChildren,\r\n inject,\r\n Input,\r\n QueryList,\r\n signal\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\n\r\n@Component({\r\n selector: 'monkey-step',\r\n standalone: false,\r\n template: `\r\n <div\r\n class=\"item\"\r\n [class.active]=\"isActive()\"\r\n [class.complete]=\"isComplete()\"\r\n [class.current]=\"isCurrent()\"\r\n [class.substep]=\"isSubStep()\"\r\n >\r\n <div class=\"step\">\r\n <div class=\"number\" [class.icon]=\"!!icon\">\r\n @if (icon) {\r\n <i class=\"mk-i mk-i-{{ icon }} sm\"></i>\r\n } @else if (isComplete()) {\r\n <util-icon name=\"check\" />\r\n } @else {\r\n {{ number() }}\r\n }\r\n </div>\r\n </div>\r\n <div class=\"label\">\r\n <div>{{ label }}</div>\r\n @if (isCurrent()) {\r\n <div class=\"current-icon\">\r\n <i class=\"mk-i mk-i-arrow-line-right sm\"></i>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n @if (hasSubSteps() && (isActive() || isCurrent())) {\r\n <div class=\"substeps\">\r\n <ng-content />\r\n </div>\r\n }\r\n `,\r\n styleUrl: './step.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-step',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyStepComponent implements AfterContentInit {\r\n protected id = inject(IdGenerator).getId('monkey-step-');\r\n\r\n // eslint-disable-next-line no-use-before-define\r\n @ContentChildren(MonkeyStepComponent) subSteps!: QueryList<MonkeyStepComponent>;\r\n\r\n @Input() label = '';\r\n\r\n @Input() step = '';\r\n\r\n @Input() icon = '';\r\n\r\n number = signal<number | undefined>(undefined);\r\n\r\n hasSubSteps = signal<boolean>(true);\r\n\r\n isSubStep = signal<boolean>(false);\r\n\r\n isCurrent = signal<boolean>(false);\r\n\r\n isComplete = signal<boolean>(false);\r\n\r\n isActive = signal<boolean>(false);\r\n\r\n ngAfterContentInit(): void {\r\n if (this.subSteps.length <= 0) {\r\n this.hasSubSteps.set(false);\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChildren,\r\n inject,\r\n Input,\r\n OnChanges,\r\n QueryList,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyStepComponent } from './step/step.component';\r\n\r\n@Component({\r\n selector: 'monkey-stepper',\r\n standalone: false,\r\n template: `<ng-content />`,\r\n styleUrl: './stepper.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n 'data-testid': 'monkey-stepper',\r\n '[attr.id]': 'monkeyId',\r\n '[id]': 'monkeyId',\r\n '[class.horizontal]': `direction === 'horizontal'`\r\n }\r\n})\r\nexport class MonkeyStepperComponent implements AfterContentInit, OnChanges {\r\n protected monkeyId = inject(IdGenerator).getId('monkey-stepper-');\r\n\r\n @ContentChildren(MonkeyStepComponent) steps!: QueryList<MonkeyStepComponent>;\r\n\r\n @Input() direction: 'horizontal' | 'vertical' = 'vertical';\r\n\r\n private _id = '';\r\n\r\n @Input()\r\n set id(value: string) {\r\n this._id = value;\r\n }\r\n\r\n get id() {\r\n return this._id;\r\n }\r\n\r\n @Input() currentStep? = '';\r\n\r\n ngAfterContentInit(): void {\r\n this.render();\r\n }\r\n\r\n ngOnChanges(): void {\r\n if (this.steps) {\r\n this.render();\r\n }\r\n }\r\n\r\n render() {\r\n let stepFound = false;\r\n\r\n this.steps.forEach((step, index) => {\r\n step.number.set(index + 1);\r\n\r\n step.isCurrent.set(this.currentStep === step.step);\r\n if (step.isCurrent()) {\r\n stepFound = true;\r\n }\r\n\r\n if (step.hasSubSteps()) {\r\n step.subSteps.forEach((subStep) => {\r\n subStep.isSubStep.set(true);\r\n subStep.isCurrent.set(this.currentStep === subStep.step);\r\n if (subStep.isCurrent()) {\r\n stepFound = true;\r\n }\r\n subStep.isComplete.set(!stepFound);\r\n });\r\n\r\n step.isComplete.set(\r\n step.subSteps.toArray().every((_) => {\r\n return _.isComplete();\r\n })\r\n );\r\n\r\n step.isActive.set(\r\n step.subSteps.toArray().some((_) => {\r\n return _.isCurrent();\r\n })\r\n );\r\n } else {\r\n step.isComplete.set(!stepFound);\r\n }\r\n });\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { NgModule } from '@angular/core';\r\nimport { UtilIconComponent } from '../../../utils';\r\nimport { MonkeyStepComponent } from './step/step.component';\r\nimport { MonkeyStepperComponent } from './stepper.component';\r\n\r\n@NgModule({\r\n declarations: [MonkeyStepperComponent, MonkeyStepComponent],\r\n imports: [UtilIconComponent],\r\n exports: [MonkeyStepperComponent, MonkeyStepComponent]\r\n})\r\nexport class MonkeyStepperModule {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, EventEmitter, inject, Input, Output, ViewEncapsulation } from '@angular/core';\r\nimport { IdGenerator } from '../../../../../utils';\r\nimport { MonkeyButtonComponent } from '../../../button';\r\n\r\n@Component({\r\n imports: [MonkeyButtonComponent],\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-pagination-action',\r\n exportAs: 'monkeyPaginationAction',\r\n templateUrl: './pagination-action.html',\r\n styleUrl: './pagination-action.scss',\r\n host: {\r\n 'data-testid': 'monkey-pagination-action',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyPaginationActionComponent {\r\n @Input() disabled!: boolean;\r\n\r\n @Input() first!: boolean;\r\n\r\n @Input() last!: boolean;\r\n\r\n @Input({ required: true }) next: boolean = false;\r\n\r\n @Input({ required: true }) prev: boolean = false;\r\n\r\n @Output() onAction = new EventEmitter();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-pagination-action-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","<monkey-button\r\n type=\"secondary\"\r\n size=\"sm\"\r\n (click)=\"onAction.next('prev')\"\r\n [disabled]=\"disabled || !prev\"\r\n>\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M11.670 8.630 C 9.335 10.964,8.550 11.772,8.523 11.870 C 8.501 11.947,8.501 12.053,8.523 12.130 C 8.574 12.316,14.682 18.423,14.870 18.477 C 15.231 18.581,15.581 18.231,15.477 17.869 C 15.450 17.774,14.687 16.987,12.570 14.870 L 9.700 12.000 12.570 9.130 C 14.687 7.013,15.450 6.226,15.477 6.131 C 15.528 5.951,15.464 5.747,15.316 5.623 C 15.219 5.541,15.151 5.520,14.988 5.520 L 14.781 5.520 11.670 8.630 \"\r\n stroke=\"none\"\r\n fill-rule=\"evenodd\"\r\n fill=\"black\"\r\n ></path>\r\n </svg>\r\n</monkey-button>\r\n\r\n<monkey-button\r\n type=\"secondary\"\r\n size=\"sm\"\r\n (click)=\"onAction.next('next')\"\r\n [disabled]=\"disabled || !next\"\r\n>\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M8.751 5.583 C 8.552 5.691,8.459 6.004,8.564 6.213 C 8.588 6.261,9.889 7.583,11.454 9.150 L 14.300 12.000 11.454 14.850 C 9.889 16.418,8.588 17.739,8.564 17.787 C 8.357 18.197,8.823 18.640,9.232 18.423 C 9.363 18.353,15.373 12.337,15.436 12.213 C 15.497 12.092,15.491 11.897,15.423 11.768 C 15.353 11.637,9.337 5.627,9.213 5.564 C 9.092 5.503,8.881 5.512,8.751 5.583 \"\r\n stroke=\"none\"\r\n fill-rule=\"evenodd\"\r\n fill=\"black\"\r\n ></path>\r\n </svg>\r\n</monkey-button>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, inject, Input, ViewEncapsulation } from '@angular/core';\r\nimport { IdGenerator } from '../../../../../utils';\r\n\r\n@Component({\r\n standalone: true,\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-pagination-label',\r\n exportAs: 'monkeyPaginationLabel',\r\n templateUrl: './pagination-label.html',\r\n styleUrl: './pagination-label.scss',\r\n host: {\r\n 'data-testid': 'monkey-pagination-label',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyPaginationLabelComponent {\r\n protected _uid = inject(IdGenerator).getId('monkey-pagination-label-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, EventEmitter, inject, Input, Output, ViewEncapsulation } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { IdGenerator } from '../../../../../utils';\r\nimport { MonkeyFormFieldModule } from '../../../form-field/form-field.module';\r\nimport { MonkeyOptionComponent } from '../../../option/option.component';\r\nimport { MonkeySelectComponent } from '../../../select/select.component';\r\n\r\n@Component({\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MonkeySelectComponent,\r\n MonkeyOptionComponent,\r\n MonkeyFormFieldModule\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-pagination-size',\r\n exportAs: 'monkeyPaginationSize',\r\n templateUrl: './pagination-size.html',\r\n styleUrl: './pagination-size.scss',\r\n host: {\r\n 'data-testid': 'monkey-pagination-size',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyPaginationSizeComponent {\r\n @Input({ required: true }) size!: 10 | 20 | 50 | 100;\r\n\r\n @Input() disabled!: boolean;\r\n\r\n @Output() onChange = new EventEmitter();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-pagination-size-');\r\n\r\n protected _id!: string;\r\n\r\n sizes = [10, 20, 50, 100];\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n<monkey-form-field hideClear size=\"sm\" noFooterSpace>\r\n <monkey-select\r\n placeholder=\"\"\r\n [ngModel]=\"size\"\r\n (onChange)=\"onChange.next($event)\"\r\n [disabled]=\"disabled\"\r\n [showSearch]=\"false\"\r\n >\r\n @for (item of sizes; track item) {\r\n <monkey-option [value]=\"item\">{{ item }}</monkey-option>\r\n }\r\n </monkey-select>\r\n</monkey-form-field>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n Directive,\r\n TemplateRef,\r\n booleanAttribute,\r\n contentChild,\r\n inject,\r\n input,\r\n model\r\n} from '@angular/core';\r\nimport { ColumnAlign, ColumnPinned } from './table-core';\r\n\r\nexport interface MonkeyTableCellContext<T> {\r\n $implicit: T;\r\n row: T;\r\n index: number;\r\n first: boolean;\r\n last: boolean;\r\n}\r\n\r\nexport type MonkeyTableSortKind = 'text' | 'number' | 'date';\r\n\r\n@Directive({\r\n selector: 'ng-template[mkCell]'\r\n})\r\nexport class MonkeyTableCellDirective<T> {\r\n readonly template = inject<TemplateRef<MonkeyTableCellContext<T>>>(TemplateRef);\r\n\r\n static ngTemplateContextGuard<T>(\r\n _dir: MonkeyTableCellDirective<T>,\r\n _ctx: unknown\r\n ): _ctx is MonkeyTableCellContext<T> {\r\n return true;\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: 'ng-template[mkHeaderCell]'\r\n})\r\nexport class MonkeyTableHeaderCellDirective {\r\n readonly template = inject<TemplateRef<void>>(TemplateRef);\r\n}\r\n\r\n@Directive({\r\n selector: 'ng-container[mkColumn]'\r\n})\r\nexport class MonkeyTableColumnDirective<T = any> {\r\n readonly name = input.required<string>({ alias: 'mkColumn' });\r\n\r\n readonly label = input.required<string>();\r\n\r\n readonly labelHidden = input(false, { transform: booleanAttribute });\r\n\r\n readonly unit = input<string>('');\r\n\r\n readonly width = input<string>('');\r\n\r\n readonly align = input<ColumnAlign>('start');\r\n\r\n readonly sortable = input(false, { transform: booleanAttribute });\r\n\r\n readonly sortKind = input<MonkeyTableSortKind>('text');\r\n\r\n readonly hideable = input(true, { transform: booleanAttribute });\r\n\r\n readonly movable = input(true, { transform: booleanAttribute });\r\n\r\n readonly pinnable = input(true, { transform: booleanAttribute });\r\n\r\n readonly pinned = model<ColumnPinned>('none');\r\n\r\n readonly hidden = model(false);\r\n\r\n readonly cell = contentChild(MonkeyTableCellDirective<T>);\r\n\r\n readonly headerCell = contentChild(MonkeyTableHeaderCellDirective);\r\n}\r\n\r\n@Directive({\r\n selector: 'ng-template[mkRowDetail]'\r\n})\r\nexport class MonkeyTableRowDetailDirective<T> {\r\n readonly template = inject<TemplateRef<{ $implicit: T; row: T }>>(TemplateRef);\r\n\r\n static ngTemplateContextGuard<T>(\r\n _dir: MonkeyTableRowDetailDirective<T>,\r\n _ctx: unknown\r\n ): _ctx is { $implicit: T; row: T } {\r\n return true;\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: 'ng-template[mkEmpty]'\r\n})\r\nexport class MonkeyTableEmptyDirective {\r\n readonly template = inject<TemplateRef<void>>(TemplateRef);\r\n}\r\n\r\n@Directive({\r\n selector: 'ng-template[mkLoading]'\r\n})\r\nexport class MonkeyTableLoadingDirective {\r\n readonly template = inject<TemplateRef<void>>(TemplateRef);\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\n\r\nexport type SortDirection = 'ascending' | 'descending';\r\n\r\nexport interface SortState {\r\n column: string;\r\n direction: SortDirection;\r\n}\r\n\r\nexport type SelectionState = 'none' | 'partial' | 'all';\r\n\r\nexport type ColumnAlign = 'start' | 'end';\r\n\r\nexport type ColumnPinned = 'none' | 'left' | 'right';\r\n\r\nexport interface MonkeyTableColumnState {\r\n name: string;\r\n hidden: boolean;\r\n pinned: ColumnPinned;\r\n}\r\n\r\nexport function sameColumnState(\r\n a: readonly MonkeyTableColumnState[],\r\n b: readonly MonkeyTableColumnState[]\r\n): boolean {\r\n return (\r\n a.length === b.length &&\r\n a.every((item, index) => {\r\n return (\r\n item.name === b[index].name &&\r\n item.hidden === b[index].hidden &&\r\n item.pinned === b[index].pinned\r\n );\r\n })\r\n );\r\n}\r\n\r\nexport function ariaSortOf(sort: SortState | null, column: string): SortDirection | null {\r\n return sort?.column === column ? sort.direction : null;\r\n}\r\n\r\nexport function interpolate(template: string, values: Record<string, string | number>): string {\r\n if (!template) return '';\r\n return template.replace(/\\{(\\w+)\\}/g, (placeholder, key: string) => {\r\n return values[key] === undefined ? placeholder : String(values[key]);\r\n });\r\n}\r\n\r\nexport function toggleKey(current: ReadonlySet<string>, key: string): ReadonlySet<string> {\r\n const next = new Set(current);\r\n if (!next.delete(key)) next.add(key);\r\n return next;\r\n}\r\n\r\nexport function selectionState(\r\n current: ReadonlySet<string>,\r\n keys: readonly string[]\r\n): SelectionState {\r\n const count = keys.filter((key) => current.has(key)).length;\r\n if (count === 0) return 'none';\r\n return count === keys.length ? 'all' : 'partial';\r\n}\r\n\r\nexport function addKeys(\r\n current: ReadonlySet<string>,\r\n keys: readonly string[],\r\n limit = 0\r\n): ReadonlySet<string> {\r\n const next = new Set(current);\r\n keys.forEach((key) => {\r\n if (limit > 0 && next.size >= limit && !next.has(key)) return;\r\n next.add(key);\r\n });\r\n return next;\r\n}\r\n\r\nexport function removeKeys(\r\n current: ReadonlySet<string>,\r\n keys: readonly string[]\r\n): ReadonlySet<string> {\r\n const next = new Set(current);\r\n keys.forEach((key) => next.delete(key));\r\n return next;\r\n}\r\n\r\nexport function sortByOrder<T>(\r\n items: readonly T[],\r\n nameOf: (item: T) => string,\r\n order: readonly string[]\r\n): T[] {\r\n const position = new Map(order.map((name, index) => [name, index]));\r\n const rank = (item: T) => position.get(nameOf(item)) ?? order.length;\r\n return [...items].sort((a, b) => rank(a) - rank(b));\r\n}\r\n\r\nexport function mergeOrder(previous: readonly string[], next: readonly string[]): string[] {\r\n const incoming = [...next];\r\n const kept = previous.map((name) => (next.includes(name) ? (incoming.shift() ?? name) : name));\r\n return [...kept, ...incoming];\r\n}\r\n\r\nexport interface RowMetrics {\r\n count: number;\r\n rowHeight: number;\r\n detailHeight: number;\r\n openIndices: readonly number[];\r\n}\r\n\r\nfunction openBefore(index: number, open: readonly number[]): number {\r\n let low = 0;\r\n let high = open.length;\r\n while (low < high) {\r\n const mid = (low + high) >>> 1;\r\n if (open[mid] < index) low = mid + 1;\r\n else high = mid;\r\n }\r\n return low;\r\n}\r\n\r\nexport function totalHeight(metrics: RowMetrics): number {\r\n const { count, rowHeight, detailHeight, openIndices } = metrics;\r\n return count * rowHeight + openIndices.length * detailHeight;\r\n}\r\n\r\nexport function offsetOfIndex(index: number, metrics: RowMetrics): number {\r\n const clamped = Math.max(0, Math.min(metrics.count, index));\r\n return (\r\n clamped * metrics.rowHeight + openBefore(clamped, metrics.openIndices) * metrics.detailHeight\r\n );\r\n}\r\n\r\nexport function indexAtOffset(offset: number, metrics: RowMetrics): number {\r\n if (metrics.count <= 0 || metrics.rowHeight <= 0) return 0;\r\n if (offset <= 0) return 0;\r\n\r\n let low = 0;\r\n let high = metrics.count - 1;\r\n while (low < high) {\r\n const mid = (low + high + 1) >>> 1;\r\n if (offsetOfIndex(mid, metrics) <= offset) low = mid;\r\n else high = mid - 1;\r\n }\r\n return low;\r\n}\r\n\r\nexport function toPx(width: string | null | undefined): number {\r\n const matched = width ? /^(-?\\d+(?:\\.\\d+)?)px$/.exec(width.trim()) : null;\r\n return matched ? Math.max(0, Number(matched[1])) : 0;\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CdkVirtualScrollViewport, VirtualScrollStrategy } from '@angular/cdk/scrolling';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { indexAtOffset, offsetOfIndex, totalHeight, type RowMetrics } from './table-core';\r\n\r\nexport class MonkeyTableVirtualScroll implements VirtualScrollStrategy {\r\n private readonly _indexChange = new Subject<number>();\r\n\r\n readonly scrolledIndexChange: Observable<number> = this._indexChange.asObservable();\r\n\r\n private _viewport: CdkVirtualScrollViewport | null = null;\r\n\r\n private _metrics: RowMetrics = {\r\n count: 0,\r\n rowHeight: 1,\r\n detailHeight: 0,\r\n openIndices: []\r\n };\r\n\r\n private _buffer = 6;\r\n\r\n attach(viewport: CdkVirtualScrollViewport): void {\r\n this._viewport = viewport;\r\n this.update();\r\n }\r\n\r\n detach(): void {\r\n this._indexChange.complete();\r\n this._viewport = null;\r\n }\r\n\r\n onContentScrolled(): void {\r\n this.update();\r\n }\r\n\r\n onDataLengthChanged(): void {\r\n this.update();\r\n }\r\n\r\n onContentRendered(): void {\r\n }\r\n\r\n onRenderedOffsetChanged(): void {\r\n }\r\n\r\n scrollToIndex(index: number, behavior: ScrollBehavior): void {\r\n this._viewport?.scrollToOffset(offsetOfIndex(index, this._metrics), behavior);\r\n }\r\n\r\n setMetrics(metrics: RowMetrics, buffer: number): void {\r\n this._metrics = metrics;\r\n this._buffer = Math.max(1, buffer);\r\n this.update();\r\n }\r\n\r\n private update(): void {\r\n const viewport = this._viewport;\r\n if (!viewport) return;\r\n\r\n const metrics = this._metrics;\r\n viewport.setTotalContentSize(totalHeight(metrics));\r\n\r\n if (metrics.count <= 0) {\r\n viewport.setRenderedRange({ start: 0, end: 0 });\r\n viewport.setRenderedContentOffset(0);\r\n return;\r\n }\r\n\r\n const offset = viewport.measureScrollOffset();\r\n const size = viewport.getViewportSize();\r\n const firstVisible = indexAtOffset(offset, metrics);\r\n const lastVisible = indexAtOffset(offset + size, metrics);\r\n\r\n const start = Math.max(0, firstVisible - this._buffer);\r\n const end = Math.min(metrics.count, lastVisible + 1 + this._buffer);\r\n\r\n viewport.setRenderedRange({ start, end });\r\n viewport.setRenderedContentOffset(offsetOfIndex(start, metrics));\r\n this._indexChange.next(firstVisible);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n CdkVirtualScrollViewport,\r\n ScrollingModule,\r\n VIRTUAL_SCROLL_STRATEGY\r\n} from '@angular/cdk/scrolling';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n contentChild,\r\n contentChildren,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n model,\r\n NgZone,\r\n OnDestroy,\r\n output,\r\n signal,\r\n untracked,\r\n viewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { MonkeyPopoverDirective } from '../../directives/popover';\r\nimport { MonkeyDictionaryService } from '../../services';\r\nimport { MonkeyCheckboxComponent } from '../checkbox';\r\nimport { MonkeyDividerComponent } from '../divider';\r\nimport { MonkeyIconButtonComponent } from '../icon-button';\r\nimport { MonkeyOptionComponent } from '../option';\r\nimport { MonkeyScrollbarComponent } from '../scrollbar';\r\nimport {\r\n MonkeyTableColumnDirective,\r\n MonkeyTableEmptyDirective,\r\n MonkeyTableLoadingDirective,\r\n MonkeyTableRowDetailDirective\r\n} from './table-column.directive';\r\nimport {\r\n addKeys,\r\n ariaSortOf,\r\n interpolate,\r\n mergeOrder,\r\n removeKeys,\r\n sameColumnState,\r\n selectionState,\r\n sortByOrder,\r\n toggleKey,\r\n toPx,\r\n type ColumnAlign,\r\n type ColumnPinned,\r\n type MonkeyTableColumnState,\r\n type SortDirection,\r\n type SortState\r\n} from './table-core';\r\nimport { MonkeyTableVirtualScroll } from './table-virtual-scroll';\r\n\r\nconst SELECTION_WIDTH = 44;\r\nconst EXPAND_WIDTH = 32;\r\nconst PINNED_MIN_WIDTH = 768;\r\nconst DEFAULT_ROW_HEIGHT = 65;\r\nconst DEFAULT_MAX_VISIBLE_ROWS = 20;\r\nconst DEFAULT_SKELETON_ROWS = 5;\r\nconst WINDOW_BUFFER = 6;\r\n\r\nconst VIRTUAL_MIN_ROWS = 19;\r\n\r\ninterface TableText {\r\n EMPTY: string;\r\n SORT: Record<string, string>;\r\n COLUMN: Record<string, string>;\r\n ROW: Record<string, string>;\r\n}\r\n\r\ntype Column<T> = MonkeyTableColumnDirective<T>;\r\n\r\ninterface SlotBase {\r\n key: string;\r\n width: string | null;\r\n px: number;\r\n pinned: ColumnPinned;\r\n offset: number;\r\n align: ColumnAlign;\r\n}\r\n\r\ntype Slot<T> =\r\n | (SlotBase & { kind: 'data'; column: Column<T> })\r\n | (SlotBase & { kind: 'selection' | 'expand'; column: null });\r\n\r\ninterface RowView<T> {\r\n row: T;\r\n key: string;\r\n index: number;\r\n selectable: boolean;\r\n}\r\n\r\ninterface RenderRow<T> extends RowView<T> {\r\n selected: boolean;\r\n open: boolean;\r\n blockedReason: string | null;\r\n selectLabel: string;\r\n expandLabel: string;\r\n}\r\n\r\n@Component({\r\n selector: 'monkey-table',\r\n imports: [\r\n NgTemplateOutlet,\r\n ScrollingModule,\r\n MonkeyCheckboxComponent,\r\n MonkeyDividerComponent,\r\n MonkeyIconButtonComponent,\r\n MonkeyOptionComponent,\r\n MonkeyPopoverDirective,\r\n MonkeyScrollbarComponent\r\n ],\r\n templateUrl: './table.component.html',\r\n styleUrl: './table.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n {\r\n provide: VIRTUAL_SCROLL_STRATEGY,\r\n useFactory: (table: MonkeyTableComponent<unknown>) => table.virtualStrategy,\r\n deps: [MonkeyTableComponent]\r\n }\r\n ],\r\n host: {\r\n class: 'mecx-table',\r\n '[class.mecx-table--striped]': 'striped()',\r\n '[class.mecx-table--menu-open]': '!!openMenu()',\r\n '[attr.aria-busy]': \"loading() ? 'true' : null\"\r\n }\r\n})\r\nexport class MonkeyTableComponent<T> implements OnDestroy {\r\n readonly virtualStrategy = new MonkeyTableVirtualScroll();\r\n\r\n private readonly _zone = inject(NgZone);\r\n\r\n private readonly _text = toSignal<TableText>(inject(MonkeyDictionaryService).get('TABLE'));\r\n\r\n private readonly _columns = contentChildren(MonkeyTableColumnDirective<T>);\r\n\r\n private readonly _columnByName = computed(() => {\r\n return new Map(this._columns().map((column) => [column.name(), column]));\r\n });\r\n\r\n private readonly _visibleColumns = computed(() => {\r\n const shown = this._columns().filter((column) => !column.hidden());\r\n return sortByOrder(shown, (column) => column.name(), this.columnOrder());\r\n });\r\n\r\n private readonly _selectableKeys = computed(() => {\r\n return this.rowViews()\r\n .filter((view) => view.selectable)\r\n .map((view) => view.key);\r\n });\r\n\r\n private readonly _selection = computed(() => {\r\n return selectionState(this.selected(), this._selectableKeys());\r\n });\r\n\r\n private readonly _narrow = signal(false);\r\n\r\n private readonly _detailHeight = signal(0);\r\n\r\n private readonly _headHeight = signal(0);\r\n\r\n private readonly _host = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n private _scroller?: HTMLElement;\r\n\r\n private _observer?: ResizeObserver;\r\n\r\n private _frame = 0;\r\n\r\n private _sizeStale = true;\r\n\r\n private _clientWidth = 0;\r\n\r\n private _scrollWidth = 0;\r\n\r\n private readonly _layout = computed(() => {\r\n const columns = this._visibleColumns();\r\n const controlPinned: ColumnPinned = columns.some((column) => column.pinned() === 'left')\r\n ? 'left'\r\n : 'none';\r\n\r\n const control = (kind: 'selection' | 'expand', px: number, pinned: ColumnPinned): Slot<T> => {\r\n return {\r\n kind,\r\n key: `__${kind}`,\r\n column: null,\r\n width: `${px}px`,\r\n px,\r\n pinned,\r\n offset: 0,\r\n align: 'start'\r\n };\r\n };\r\n\r\n const slots: Slot<T>[] = [];\r\n if (this.selectionMode() !== 'none') {\r\n slots.push(control('selection', SELECTION_WIDTH, controlPinned));\r\n }\r\n if (this.expandable()) {\r\n slots.push(control('expand', EXPAND_WIDTH, this._narrow() ? 'none' : controlPinned));\r\n }\r\n columns.forEach((column) => {\r\n slots.push({\r\n kind: 'data',\r\n key: column.name(),\r\n column,\r\n width: column.width() || null,\r\n px: toPx(column.width()),\r\n pinned: this.effectivePinned(column),\r\n offset: 0,\r\n align: column.align()\r\n });\r\n });\r\n\r\n let startWidth = 0;\r\n slots.forEach((slot) => {\r\n if (slot.pinned !== 'left') return;\r\n slot.offset = startWidth;\r\n startWidth += slot.px;\r\n });\r\n\r\n let endWidth = 0;\r\n [...slots].reverse().forEach((slot) => {\r\n if (slot.pinned !== 'right') return;\r\n slot.offset = endWidth;\r\n endWidth += slot.px;\r\n });\r\n\r\n return { slots, startWidth, endWidth };\r\n });\r\n\r\n readonly rows = input.required<readonly T[]>();\r\n\r\n readonly rowKey = input.required<(row: T) => string>();\r\n\r\n readonly rowLabel = input<(row: T) => string>();\r\n\r\n readonly rowSelectable = input<(row: T) => boolean>();\r\n\r\n readonly ariaLabel = input.required<string>();\r\n\r\n readonly caption = input<string>('');\r\n\r\n readonly selectionMode = input<'none' | 'multiple'>('none');\r\n\r\n readonly selected = model<ReadonlySet<string>>(new Set());\r\n\r\n readonly maxSelected = input<number>(0);\r\n\r\n readonly sort = input<SortState | null>(null);\r\n\r\n readonly expandable = input(false, { transform: booleanAttribute });\r\n\r\n readonly expanded = model<ReadonlySet<string>>(new Set());\r\n\r\n readonly reorderable = input(false, { transform: booleanAttribute });\r\n\r\n readonly hideable = input(false, { transform: booleanAttribute });\r\n\r\n readonly pinnable = input(false, { transform: booleanAttribute });\r\n\r\n readonly rowHeight = input<number>(DEFAULT_ROW_HEIGHT);\r\n\r\n readonly maxVisibleRows = input<number | 'none'>(DEFAULT_MAX_VISIBLE_ROWS);\r\n\r\n readonly virtualScroll = input<'auto' | 'off'>('auto');\r\n\r\n readonly columnOrder = model<readonly string[]>([]);\r\n\r\n readonly columnState = input<readonly MonkeyTableColumnState[]>([]);\r\n\r\n readonly striped = input(false, { transform: booleanAttribute });\r\n\r\n readonly loading = input(false, { transform: booleanAttribute });\r\n\r\n readonly emptyText = input<string>('');\r\n\r\n readonly skeletonRows = input<number | 'auto'>('auto');\r\n\r\n readonly onSortChange = output<SortState | null>();\r\n\r\n readonly onColumnHidden = output<{ name: string; label: string }>();\r\n\r\n readonly onColumnStateChange = output<MonkeyTableColumnState[]>();\r\n\r\n readonly onSelectionChange = output<string[]>();\r\n\r\n readonly onExpandChange = output<{ row: T; key: string; expanded: boolean }>();\r\n\r\n protected readonly emptyTemplate = contentChild(MonkeyTableEmptyDirective);\r\n\r\n protected readonly loadingTemplate = contentChild(MonkeyTableLoadingDirective);\r\n\r\n protected readonly rowDetailTemplate = contentChild(MonkeyTableRowDetailDirective<T>);\r\n\r\n protected readonly plainScroller = viewChild<ElementRef<HTMLElement>>('scroller');\r\n\r\n protected readonly headClip = viewChild<ElementRef<HTMLElement>>('headClip');\r\n\r\n protected readonly virtualViewport = viewChild(CdkVirtualScrollViewport);\r\n\r\n protected readonly scrollTarget = computed(() => {\r\n const viewport = this.virtualViewport();\r\n if (viewport) return viewport.elementRef.nativeElement;\r\n return this.plainScroller()?.nativeElement ?? null;\r\n });\r\n\r\n private readonly _rowCap = computed(() => {\r\n const cap = this.maxVisibleRows();\r\n return cap === 'none' ? 0 : Math.max(0, Math.floor(cap));\r\n });\r\n\r\n protected readonly bounded = computed(() => {\r\n const cap = this._rowCap();\r\n return cap > 0 && this.rows().length > cap;\r\n });\r\n\r\n protected readonly virtual = computed(() => {\r\n if (this.virtualScroll() === 'off' || !this.bounded() || this.loading()) return false;\r\n\r\n const threshold = Math.max(this._rowCap(), VIRTUAL_MIN_ROWS);\r\n return this.rowViews().length > threshold;\r\n });\r\n\r\n protected readonly effectiveHeight = computed(() => {\r\n if (!this.bounded()) return '';\r\n\r\n const body = this._rowCap() * this.rowHeight();\r\n return `${this.virtual() ? body : body + this._headHeight()}px`;\r\n });\r\n\r\n protected readonly rowMetrics = computed(() => {\r\n const expanded = this.expanded();\r\n const openIndices = expanded.size\r\n ? this.rowViews()\r\n .filter((view) => expanded.has(view.key))\r\n .map((view) => view.index)\r\n : [];\r\n\r\n return {\r\n openIndices,\r\n count: this.rowViews().length,\r\n rowHeight: Math.max(1, this.rowHeight()),\r\n detailHeight: this.expandable() ? this._detailHeight() : 0\r\n };\r\n });\r\n\r\n protected readonly overflowing = signal(false);\r\n\r\n protected readonly atStart = signal(true);\r\n\r\n protected readonly atEnd = signal(true);\r\n\r\n protected readonly openMenu = signal<string | null>(null);\r\n\r\n protected readonly slots = computed(() => this._layout().slots);\r\n\r\n protected readonly pinnedStartWidth = computed(() => this._layout().startWidth);\r\n\r\n protected readonly pinnedEndWidth = computed(() => this._layout().endWidth);\r\n\r\n protected readonly totalWidth = computed(() => {\r\n const slots = this.slots();\r\n if (!slots.length || slots.some((slot) => slot.px <= 0)) return 0;\r\n return slots.reduce((total, slot) => total + slot.px, 0);\r\n });\r\n\r\n protected readonly allSelected = computed(() => this._selection() === 'all');\r\n\r\n protected readonly someSelected = computed(() => this._selection() === 'partial');\r\n\r\n protected readonly atSelectionLimit = computed(() => {\r\n const limit = this.maxSelected();\r\n return limit > 0 && this.selected().size >= limit;\r\n });\r\n\r\n protected readonly hasSelectable = computed(() => this._selectableKeys().length > 0);\r\n\r\n protected readonly rowViews = computed<RowView<T>[]>(() => {\r\n const keyOf = this.rowKey();\r\n const allows = this.rowSelectable();\r\n const canSelect = this.selectionMode() !== 'none';\r\n\r\n return this.rows().map((row, index) => {\r\n return {\r\n row,\r\n index,\r\n key: keyOf(row),\r\n selectable: canSelect && (!allows || allows(row))\r\n };\r\n });\r\n });\r\n\r\n protected readonly renderRows = computed<RenderRow<T>[]>(() => {\r\n const labelOf = this.rowLabel();\r\n const selected = this.selected();\r\n const expanded = this.expanded();\r\n const atLimit = this.atSelectionLimit();\r\n const canSelect = this.selectionMode() !== 'none';\r\n const canExpand = this.expandable();\r\n const text = this.labels();\r\n const select = canSelect ? this.word('ROW', 'SELECT') : '';\r\n const expand = canExpand ? this.word('ROW', 'EXPAND') : '';\r\n const collapse = canExpand ? this.word('ROW', 'COLLAPSE') : '';\r\n\r\n return this.rowViews().map((view) => {\r\n const label = labelOf ? labelOf(view.row) : view.key;\r\n const isSelected = selected.has(view.key);\r\n const open = expanded.has(view.key);\r\n let blockedReason: string | null = null;\r\n if (!isSelected && !view.selectable) blockedReason = text.notSelectable;\r\n else if (!isSelected && atLimit) blockedReason = text.limit;\r\n\r\n return {\r\n ...view,\r\n open,\r\n blockedReason,\r\n selected: isSelected,\r\n selectLabel: canSelect ? interpolate(select, { label }) : '',\r\n expandLabel: canExpand ? interpolate(open ? collapse : expand, { label }) : ''\r\n };\r\n });\r\n });\r\n\r\n protected readonly skeletonRange = computed(() => {\r\n const requested = this.skeletonRows();\r\n if (requested === 'auto') {\r\n const cap = this._rowCap();\r\n return Array.from({ length: cap > 0 ? cap : DEFAULT_SKELETON_ROWS }, (_, i) => i);\r\n }\r\n\r\n const count = Number(requested);\r\n const length = Number.isFinite(count) && count > 0 ? Math.floor(count) : DEFAULT_SKELETON_ROWS;\r\n return Array.from({ length }, (_, index) => index);\r\n });\r\n\r\n protected readonly labels = computed(() => {\r\n return {\r\n moveLeft: this.word('COLUMN', 'MOVE-LEFT'),\r\n moveRight: this.word('COLUMN', 'MOVE-RIGHT'),\r\n hide: this.word('COLUMN', 'HIDE'),\r\n pin: this.word('COLUMN', 'PIN'),\r\n unpin: this.word('COLUMN', 'UNPIN'),\r\n selectAll: this.word('ROW', 'SELECT-ALL'),\r\n detail: this.word('ROW', 'DETAIL'),\r\n limit: interpolate(this.word('ROW', 'LIMIT'), { max: this.maxSelected() }),\r\n notSelectable: this.word('ROW', 'NOT-SELECTABLE'),\r\n empty: this.emptyText() || this._text()?.EMPTY || ''\r\n };\r\n });\r\n\r\n constructor() {\r\n this.closeMenuWhenColumnGone();\r\n this.restoreColumnState();\r\n\r\n effect((onCleanup) => {\r\n const target = this.scrollTarget();\r\n if (!target) return;\r\n const onScroll = () => this.schedule();\r\n\r\n const observer = this._zone.runOutsideAngular(() => {\r\n target.addEventListener('scroll', onScroll, { passive: true });\r\n const resize = new ResizeObserver(() => this.schedule(true));\r\n resize.observe(target);\r\n Array.from(target.children).forEach((child) => resize.observe(child));\r\n return resize;\r\n });\r\n\r\n this._scroller = target;\r\n this._observer = observer;\r\n this.measure();\r\n\r\n onCleanup(() => {\r\n target.removeEventListener('scroll', onScroll);\r\n observer.disconnect();\r\n this._observer = undefined;\r\n this.cancelFrame();\r\n });\r\n });\r\n\r\n effect(() => {\r\n this.slots();\r\n this.rows();\r\n queueMicrotask(() => this.schedule(true));\r\n });\r\n\r\n effect(() => {\r\n const metrics = this.rowMetrics();\r\n if (!this.virtual()) return;\r\n this.virtualStrategy.setMetrics(metrics, WINDOW_BUFFER);\r\n });\r\n }\r\n\r\n private word(group: 'SORT' | 'COLUMN' | 'ROW', key: string): string {\r\n return this._text()?.[group]?.[key] ?? '';\r\n }\r\n\r\n private effectivePinned(column: Column<T>): ColumnPinned {\r\n const pinned = column.pinned();\r\n return this._narrow() && pinned === 'left' ? 'none' : pinned;\r\n }\r\n\r\n private schedule(resized = false): void {\r\n if (resized) this._sizeStale = true;\r\n if (this._frame) return;\r\n this._frame = this._zone.runOutsideAngular(() => {\r\n return requestAnimationFrame(() => {\r\n this._frame = 0;\r\n this.measure();\r\n });\r\n });\r\n }\r\n\r\n private cancelFrame(): void {\r\n if (this._frame) cancelAnimationFrame(this._frame);\r\n this._frame = 0;\r\n }\r\n\r\n private measure(): void {\r\n const el = this._scroller;\r\n if (!el) return;\r\n\r\n if (this._sizeStale) {\r\n this._sizeStale = false;\r\n this._clientWidth = el.clientWidth;\r\n this._scrollWidth = el.scrollWidth;\r\n\r\n const host = this._host.nativeElement;\r\n const detail = host.querySelector<HTMLElement>('.mecx-table-row--detail');\r\n if (detail?.offsetHeight) this._detailHeight.set(detail.offsetHeight);\r\n\r\n const head = host.querySelector<HTMLElement>('thead');\r\n if (head?.offsetHeight) this._headHeight.set(head.offsetHeight);\r\n }\r\n\r\n const maxScroll = this._scrollWidth - this._clientWidth;\r\n const scrolled = el.scrollLeft;\r\n\r\n this._narrow.set(this._clientWidth > 0 && this._clientWidth < PINNED_MIN_WIDTH);\r\n this.overflowing.set(maxScroll > 1);\r\n this.atStart.set(scrolled <= 1);\r\n this.atEnd.set(maxScroll <= 1 || scrolled >= maxScroll - 1);\r\n\r\n const head = this.headClip()?.nativeElement;\r\n if (head && head.scrollLeft !== scrolled) head.scrollLeft = scrolled;\r\n }\r\n\r\n private closeMenuWhenColumnGone(): void {\r\n effect(() => {\r\n const open = untracked(() => this.openMenu());\r\n const stillThere = this._visibleColumns().some((column) => {\r\n return column.name() === open && this.hasMenu(column);\r\n });\r\n if (open && !stillThere) this.openMenu.set(null);\r\n });\r\n }\r\n\r\n private currentOrder(): string[] {\r\n const names = this._columns().map((column) => column.name());\r\n return sortByOrder(names, (name) => name, this.columnOrder());\r\n }\r\n\r\n private currentColumnState(): MonkeyTableColumnState[] {\r\n return this.currentOrder().map((name) => {\r\n const column = this._columnByName().get(name);\r\n return {\r\n name,\r\n hidden: column?.hidden() ?? false,\r\n pinned: column?.pinned() ?? 'none'\r\n };\r\n });\r\n }\r\n\r\n private commitSelection(next: ReadonlySet<string>): void {\r\n this.selected.set(next);\r\n this.onSelectionChange.emit([...next]);\r\n }\r\n\r\n private applyOrder(order: readonly string[]): void {\r\n this.columnOrder.set(mergeOrder(this.columnOrder(), order));\r\n this.onColumnStateChange.emit(this.currentColumnState());\r\n this.openMenu.set(null);\r\n }\r\n\r\n private restoreColumnState(): void {\r\n effect(() => {\r\n const incoming = this.columnState();\r\n if (!incoming.length) return;\r\n\r\n untracked(() => {\r\n if (!this._columns().length) return;\r\n if (sameColumnState(incoming, this.currentColumnState())) return;\r\n\r\n incoming.forEach((item) => {\r\n const column = this._columnByName().get(item.name);\r\n column?.hidden.set(item.hidden);\r\n column?.pinned.set(item.pinned);\r\n });\r\n\r\n this.columnOrder.set(\r\n mergeOrder(\r\n this.columnOrder(),\r\n incoming.map((item) => item.name)\r\n )\r\n );\r\n });\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._observer?.disconnect();\r\n this.cancelFrame();\r\n }\r\n\r\n protected closeMenu = (): void => {\r\n this.openMenu.set(null);\r\n };\r\n\r\n protected trackKey = (_index: number, view: RowView<T>): string => {\r\n return view.key;\r\n };\r\n\r\n protected toggleMenu(column: Column<T>): void {\r\n this.openMenu.set(this.openMenu() === column.name() ? null : column.name());\r\n }\r\n\r\n protected hasMenu(column: Column<T> | null): boolean {\r\n if (!column) return false;\r\n return (\r\n column.sortable() || this.canReorder(column) || this.canHide(column) || this.canPin(column)\r\n );\r\n }\r\n\r\n protected canHide(column: Column<T>): boolean {\r\n return this.hideable() && column.hideable();\r\n }\r\n\r\n protected canReorder(column: Column<T>): boolean {\r\n return this.reorderable() && column.movable();\r\n }\r\n\r\n protected canPin(column: Column<T>): boolean {\r\n return this.pinnable() && column.pinnable() && !this._narrow();\r\n }\r\n\r\n protected isLastColumn(): boolean {\r\n return this._visibleColumns().length <= 1;\r\n }\r\n\r\n protected sortLabels(column: Column<T>): { asc: string; desc: string } {\r\n const kind = column.sortKind().toUpperCase();\r\n return { asc: this.word('SORT', `${kind}-ASC`), desc: this.word('SORT', `${kind}-DESC`) };\r\n }\r\n\r\n protected ariaSortFor(column: Column<T> | null): string | null {\r\n return column ? ariaSortOf(this.sort(), column.name()) : null;\r\n }\r\n\r\n protected isSortedBy(column: Column<T>, direction: SortDirection): boolean {\r\n const current = this.sort();\r\n return current?.column === column.name() && current.direction === direction;\r\n }\r\n\r\n protected sortBy(column: Column<T>, direction: SortDirection): void {\r\n const unchanged = this.isSortedBy(column, direction);\r\n this.onSortChange.emit(unchanged ? null : { column: column.name(), direction });\r\n this.openMenu.set(null);\r\n }\r\n\r\n protected canMove(column: Column<T>, delta: -1 | 1): boolean {\r\n if (!this.canReorder(column)) return false;\r\n\r\n const visible = this._visibleColumns();\r\n const neighbour = visible[visible.indexOf(column) + delta];\r\n if (!neighbour || !neighbour.movable()) return false;\r\n return this.effectivePinned(neighbour) === this.effectivePinned(column);\r\n }\r\n\r\n protected move(column: Column<T>, delta: -1 | 1): void {\r\n if (!this.canMove(column, delta)) return;\r\n\r\n const visible = this._visibleColumns();\r\n const neighbour = visible[visible.indexOf(column) + delta];\r\n const order = this.currentOrder();\r\n const from = order.indexOf(column.name());\r\n const to = order.indexOf(neighbour.name());\r\n [order[from], order[to]] = [order[to], order[from]];\r\n\r\n this.applyOrder(order);\r\n }\r\n\r\n protected hide(column: Column<T>): void {\r\n if (!this.canHide(column) || this.isLastColumn()) return;\r\n\r\n column.hidden.set(true);\r\n this.onColumnHidden.emit({ name: column.name(), label: column.label() });\r\n this.applyOrder(this.currentOrder());\r\n }\r\n\r\n protected togglePin(column: Column<T>): void {\r\n if (!this.canPin(column)) return;\r\n\r\n const was = column.pinned();\r\n column.pinned.set(was === 'none' ? 'left' : 'none');\r\n\r\n const others = this.currentOrder().filter((name) => name !== column.name());\r\n const pinnedOf = (name: string) => this._columnByName().get(name)?.pinned() ?? 'none';\r\n const afterLeft = others.filter((name) => pinnedOf(name) === 'left').length;\r\n const rightStart = others.findIndex((name) => pinnedOf(name) === 'right');\r\n const beforeRight = rightStart === -1 ? others.length : rightStart;\r\n\r\n others.splice(\r\n was === 'right' ? beforeRight : Math.min(afterLeft, beforeRight),\r\n 0,\r\n column.name()\r\n );\r\n this.applyOrder(others);\r\n }\r\n\r\n protected toggleRow(view: RowView<T>): void {\r\n const selected = this.selected();\r\n const blocked = !view.selectable || this.atSelectionLimit();\r\n if (!selected.has(view.key) && blocked) return;\r\n this.commitSelection(toggleKey(selected, view.key));\r\n }\r\n\r\n protected toggleAllRows(): void {\r\n const selected = this.selected();\r\n const keys = this._selectableKeys();\r\n\r\n if (this.allSelected() || this.atSelectionLimit()) {\r\n this.commitSelection(removeKeys(selected, keys));\r\n return;\r\n }\r\n\r\n this.commitSelection(addKeys(selected, keys, this.maxSelected()));\r\n }\r\n\r\n protected toggleOpen(view: RowView<T>): void {\r\n const next = toggleKey(this.expanded(), view.key);\r\n this.expanded.set(next);\r\n this.onExpandChange.emit({ row: view.row, key: view.key, expanded: next.has(view.key) });\r\n }\r\n}\r\n","<div class=\"mecx-table-main\">\n <div class=\"mecx-table-viewport\">\n @if (virtual()) {\n <div #headClip class=\"mecx-table-head-clip\">\n <table\n class=\"mecx-table-grid mecx-table-grid--head\"\n [style.width.px]=\"totalWidth() || null\"\n >\n <ng-container [ngTemplateOutlet]=\"tableHead\" />\n </table>\n </div>\n\n <cdk-virtual-scroll-viewport\n class=\"mecx-table-scroll mecx-table-scroll--virtual\"\n [itemSize]=\"rowHeight()\"\n [minBufferPx]=\"rowHeight() * 6\"\n [maxBufferPx]=\"rowHeight() * 12\"\n [style.height]=\"effectiveHeight()\"\n role=\"region\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.tabindex]=\"overflowing() ? 0 : null\"\n >\n <table\n class=\"mecx-table-grid\"\n [attr.aria-rowcount]=\"rows().length + 1\"\n [style.width.px]=\"totalWidth() || null\"\n >\n <ng-container [ngTemplateOutlet]=\"colGroup\" />\n <tbody class=\"mecx-table-body\">\n <ng-container\n *cdkVirtualFor=\"\n let view of renderRows();\n trackBy: trackKey;\n templateCacheSize: 30\n \"\n >\n <ng-container\n [ngTemplateOutlet]=\"dataRow\"\n [ngTemplateOutletContext]=\"{ $implicit: view }\"\n />\n </ng-container>\n </tbody>\n </table>\n </cdk-virtual-scroll-viewport>\n } @else {\n <div\n #scroller\n class=\"mecx-table-scroll\"\n [class.mecx-table-scroll--vertical]=\"!!effectiveHeight()\"\n [style.max-height]=\"effectiveHeight() || null\"\n role=\"region\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.tabindex]=\"overflowing() ? 0 : null\"\n >\n <table class=\"mecx-table-grid\">\n <ng-container [ngTemplateOutlet]=\"tableHead\" />\n <tbody class=\"mecx-table-body\">\n @if (loading()) {\n @if (loadingTemplate(); as tpl) {\n <tr class=\"mecx-table-row\">\n <td\n class=\"mecx-table-cell mecx-table-cell--wide\"\n [attr.colspan]=\"slots().length\"\n >\n <ng-container [ngTemplateOutlet]=\"tpl.template\" />\n </td>\n </tr>\n } @else {\n @for (line of skeletonRange(); track line) {\n <tr class=\"mecx-table-row\" aria-hidden=\"true\">\n @for (slot of slots(); track slot.key) {\n <td\n class=\"mecx-table-cell\"\n [class.mecx-table-cell--end]=\"slot.align === 'end'\"\n [class.mecx-table-cell--control]=\"slot.kind !== 'data'\"\n [class.mecx-table-cell--pinned]=\"slot.pinned !== 'none'\"\n [style.left.px]=\"slot.pinned === 'left' ? slot.offset : null\"\n [style.right.px]=\"slot.pinned === 'right' ? slot.offset : null\"\n >\n <span class=\"mecx-table-skeleton\"></span>\n </td>\n }\n </tr>\n }\n }\n } @else if (rows().length === 0) {\n <tr class=\"mecx-table-row\">\n <td\n class=\"mecx-table-cell mecx-table-cell--wide\"\n [attr.colspan]=\"slots().length\"\n >\n @if (emptyTemplate(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl.template\" />\n } @else {\n <p class=\"mecx-table-empty\">{{ labels().empty }}</p>\n }\n </td>\n </tr>\n } @else {\n @for (view of renderRows(); track view.key) {\n <ng-container\n [ngTemplateOutlet]=\"dataRow\"\n [ngTemplateOutletContext]=\"{ $implicit: view }\"\n />\n }\n }\n </tbody>\n </table>\n </div>\n }\n\n @if (pinnedStartWidth() > 0) {\n <div\n class=\"mecx-table-pinned-shadow\"\n [class.mecx-table-pinned-shadow--visible]=\"!atStart()\"\n [style.left.px]=\"0\"\n [style.width.px]=\"pinnedStartWidth()\"\n aria-hidden=\"true\"\n ></div>\n }\n @if (pinnedEndWidth() > 0) {\n <div\n class=\"mecx-table-pinned-shadow mecx-table-pinned-shadow--end\"\n [class.mecx-table-pinned-shadow--visible]=\"!atEnd()\"\n [style.right.px]=\"0\"\n [style.width.px]=\"pinnedEndWidth()\"\n aria-hidden=\"true\"\n ></div>\n }\n\n @if (pinnedStartWidth() === 0) {\n <div\n class=\"mecx-table-fade mecx-table-fade--start\"\n [class.mecx-table-fade--visible]=\"!atStart()\"\n aria-hidden=\"true\"\n ></div>\n }\n <div\n class=\"mecx-table-fade\"\n [class.mecx-table-fade--visible]=\"!atEnd()\"\n [style.right.px]=\"pinnedEndWidth()\"\n aria-hidden=\"true\"\n ></div>\n </div>\n\n @if (effectiveHeight() && scrollTarget(); as target) {\n <div class=\"mecx-table-scrollbar-vertical\">\n <monkey-scrollbar orientation=\"vertical\" [target]=\"target\" />\n </div>\n }\n</div>\n\n@if (scrollTarget(); as target) {\n <div class=\"mecx-table-scrollbar\">\n <monkey-scrollbar orientation=\"horizontal\" [target]=\"target\" />\n </div>\n}\n\n<div class=\"mecx-table-footer\">\n <ng-content select=\"monkey-pagination-size\"></ng-content>\n <div class=\"mecx-table-footer-actions\">\n <ng-content select=\"monkey-pagination-label\"></ng-content>\n <ng-content select=\"monkey-pagination-action\"></ng-content>\n </div>\n</div>\n\n<ng-template #colGroup>\n <colgroup>\n @for (slot of slots(); track slot.key) {\n <col [style.width]=\"slot.width\" />\n }\n </colgroup>\n</ng-template>\n\n<ng-template #tableHead>\n @if (caption()) {\n <caption class=\"mecx-table-caption\">\n {{\n caption()\n }}\n </caption>\n }\n\n <ng-container [ngTemplateOutlet]=\"colGroup\" />\n\n <thead>\n <tr class=\"mecx-table-row\">\n @for (slot of slots(); track slot.key) {\n <th\n scope=\"col\"\n class=\"mecx-table-cell mecx-table-cell--head\"\n [class.mecx-table-cell--end]=\"slot.align === 'end'\"\n [class.mecx-table-cell--control]=\"slot.kind !== 'data'\"\n [class.mecx-table-cell--pinned]=\"slot.pinned !== 'none'\"\n [style.left.px]=\"slot.pinned === 'left' ? slot.offset : null\"\n [style.right.px]=\"slot.pinned === 'right' ? slot.offset : null\"\n [class.mecx-table-cell--active]=\"openMenu() === slot.key\"\n [attr.aria-sort]=\"ariaSortFor(slot.column)\"\n >\n @switch (slot.kind) {\n @case ('selection') {\n <label class=\"mecx-table-select-all\">\n <span class=\"mecx-sr-only\">{{ labels().selectAll }}</span>\n <monkey-checkbox\n size=\"sm\"\n [value]=\"allSelected()\"\n [indeterminate]=\"someSelected()\"\n [disabled]=\"loading() || !hasSelectable()\"\n (onChange)=\"toggleAllRows()\"\n />\n </label>\n }\n @case ('expand') {\n <span class=\"mecx-sr-only\">{{ labels().detail }}</span>\n }\n @default {\n @if (hasMenu(slot.column)) {\n <button\n #trigger\n type=\"button\"\n class=\"mecx-table-heading mecx-table-trigger\"\n aria-haspopup=\"menu\"\n [attr.aria-expanded]=\"openMenu() === slot.key\"\n (click)=\"toggleMenu(slot.column)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"heading\"\n [ngTemplateOutletContext]=\"{ $implicit: slot.column }\"\n />\n </button>\n\n <ng-template\n [monkeyPopover]=\"openMenu() === slot.key\"\n [monkeyPopoverTarget]=\"trigger\"\n [monkeyPopoverClosed]=\"closeMenu\"\n monkeyPopoverDir=\"ltr\"\n [monkeyPopoverHideHeader]=\"true\"\n monkeyPopoverCloseOnClick=\"monkey-option\"\n >\n <div class=\"mecx-table-menu\">\n @if (slot.column.sortable()) {\n @let sortText = sortLabels(slot.column);\n <monkey-option\n [selected]=\"isSortedBy(slot.column, 'ascending')\"\n (click)=\"sortBy(slot.column, 'ascending')\"\n >\n <i class=\"mk-i mk-i-arrows-up-down sm\" aria-hidden=\"true\"></i>\n {{ sortText.asc }}\n </monkey-option>\n <monkey-option\n [selected]=\"isSortedBy(slot.column, 'descending')\"\n (click)=\"sortBy(slot.column, 'descending')\"\n >\n <i class=\"mk-i mk-i-arrows-up-down sm\" aria-hidden=\"true\"></i>\n {{ sortText.desc }}\n </monkey-option>\n }\n\n @if (canReorder(slot.column)) {\n @if (slot.column.sortable()) {\n <monkey-divider />\n }\n <monkey-option\n [disabled]=\"!canMove(slot.column, -1)\"\n (click)=\"move(slot.column, -1)\"\n >\n <i class=\"mk-i mk-i-arrow-line-left sm\" aria-hidden=\"true\"></i>\n {{ labels().moveLeft }}\n </monkey-option>\n <monkey-option\n [disabled]=\"!canMove(slot.column, 1)\"\n (click)=\"move(slot.column, 1)\"\n >\n <i class=\"mk-i mk-i-arrow-line-right sm\" aria-hidden=\"true\"></i>\n {{ labels().moveRight }}\n </monkey-option>\n }\n\n @if (canHide(slot.column) || canPin(slot.column)) {\n @if (slot.column.sortable() || canReorder(slot.column)) {\n <monkey-divider />\n }\n @if (canHide(slot.column)) {\n <monkey-option [disabled]=\"isLastColumn()\" (click)=\"hide(slot.column)\">\n <i class=\"mk-i mk-i-eye-closed sm\" aria-hidden=\"true\"></i>\n {{ labels().hide }}\n </monkey-option>\n }\n @if (canPin(slot.column)) {\n <monkey-option (click)=\"togglePin(slot.column)\">\n <i class=\"mk-i mk-i-pin-navigation sm\" aria-hidden=\"true\"></i>\n {{ slot.column.pinned() !== 'none' ? labels().unpin : labels().pin }}\n </monkey-option>\n }\n }\n </div>\n </ng-template>\n } @else {\n <div class=\"mecx-table-heading\">\n <ng-container\n [ngTemplateOutlet]=\"heading\"\n [ngTemplateOutletContext]=\"{ $implicit: slot.column }\"\n />\n </div>\n }\n }\n }\n </th>\n }\n </tr>\n </thead>\n</ng-template>\n\n<ng-template #dataRow let-view>\n <tr\n class=\"mecx-table-row mecx-table-row--data\"\n [class.mecx-table-row--odd]=\"view.index % 2 === 1\"\n [class.mecx-table-row--selected]=\"view.selected\"\n [attr.aria-rowindex]=\"virtual() ? view.index + 2 : null\"\n [style.height.px]=\"virtual() ? rowHeight() : null\"\n >\n @for (slot of slots(); track slot.key) {\n <td\n class=\"mecx-table-cell\"\n [class.mecx-table-cell--end]=\"slot.align === 'end'\"\n [class.mecx-table-cell--control]=\"slot.kind !== 'data'\"\n [class.mecx-table-cell--pinned]=\"slot.pinned !== 'none'\"\n [style.left.px]=\"slot.pinned === 'left' ? slot.offset : null\"\n [style.right.px]=\"slot.pinned === 'right' ? slot.offset : null\"\n >\n @switch (slot.kind) {\n @case ('selection') {\n <label class=\"mecx-table-select-row\" [attr.title]=\"view.blockedReason\">\n <span class=\"mecx-sr-only\">{{ view.selectLabel }}</span>\n <monkey-checkbox\n size=\"sm\"\n [value]=\"view.selected\"\n [disabled]=\"!!view.blockedReason\"\n (onChange)=\"toggleRow(view)\"\n />\n </label>\n }\n @case ('expand') {\n <monkey-icon-button\n type=\"tertiary\"\n size=\"sm\"\n icon=\"arrow-right\"\n class=\"mecx-table-expand-toggle\"\n [class.mecx-table-expand-toggle--open]=\"view.open\"\n [attr.aria-expanded]=\"view.open\"\n [attr.aria-label]=\"view.expandLabel\"\n (click)=\"toggleOpen(view)\"\n />\n }\n @default {\n @if (slot.column.cell(); as cell) {\n <ng-container\n [ngTemplateOutlet]=\"cell.template\"\n [ngTemplateOutletContext]=\"{\n $implicit: view.row,\n row: view.row,\n index: view.index,\n first: view.index === 0,\n last: view.index === rows().length - 1\n }\"\n />\n }\n }\n }\n </td>\n }\n </tr>\n\n @if (expandable() && view.open) {\n @if (rowDetailTemplate(); as tpl) {\n <tr\n class=\"mecx-table-row mecx-table-row--detail\"\n [class.mecx-table-row--selected]=\"view.selected\"\n >\n <td class=\"mecx-table-cell mecx-table-cell--wide\" [attr.colspan]=\"slots().length\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"{ $implicit: view.row, row: view.row }\"\n />\n </td>\n </tr>\n }\n }\n</ng-template>\n\n<ng-template #heading let-column>\n @if (column.headerCell(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl.template\" />\n } @else {\n @if (column.labelHidden()) {\n <span class=\"mecx-sr-only\">{{ column.label() }}</span>\n } @else {\n <span class=\"mecx-table-label\">{{ column.label() }}</span>\n @if (column.unit()) {\n <span class=\"mecx-table-unit\">{{ column.unit() }}</span>\n }\n }\n }\n</ng-template>\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nexport * from './components/pagination-action/pagination-action';\nexport * from './components/pagination-label/pagination-label';\nexport * from './components/pagination-size/pagination-size';\nexport * from './table-column.directive';\nexport * from './table-core';\nexport * from './table.component';\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n booleanAttribute,\r\n DestroyRef,\r\n Directive,\r\n ElementRef,\r\n HostBinding,\r\n inject,\r\n Inject,\r\n Input,\r\n OnInit,\r\n Optional\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { filter } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[monkey-tab-link]',\r\n standalone: false\r\n})\r\nexport class MonkeyTabLinkDirective implements OnInit {\r\n @Input({ transform: booleanAttribute }) disabled: boolean = false;\r\n\r\n @HostBinding('class.disabled')\r\n get isDisabled() {\r\n return this.disabled;\r\n }\r\n\r\n @HostBinding('attr.tabindex')\r\n get tabIndex() {\r\n return this.disabled ? -1 : 0;\r\n }\r\n\r\n private destroyRef = inject(DestroyRef);\r\n\r\n private el = inject(ElementRef<HTMLAnchorElement>);\r\n\r\n constructor(@Optional() @Inject(Router) private router: Router) {\r\n // ignore\r\n }\r\n\r\n ngOnInit() {\r\n if (this.router) {\r\n this.updateActiveState();\r\n\r\n this.router.events\r\n .pipe(\r\n filter((event) => {\r\n return event instanceof NavigationEnd;\r\n }),\r\n takeUntilDestroyed(this.destroyRef)\r\n )\r\n .subscribe(() => {\r\n this.updateActiveState();\r\n });\r\n }\r\n }\r\n\r\n private updateActiveState() {\r\n if (this.disabled) return;\r\n\r\n const link = this.el.nativeElement;\r\n const routerLink = link.getAttribute('routerLink');\r\n\r\n if (routerLink && this.router) {\r\n const isActive =\r\n this.router.url === routerLink ||\r\n (routerLink !== '/' && this.router.url.startsWith(routerLink));\r\n\r\n if (isActive) {\r\n link.classList.add('active');\r\n } else {\r\n link.classList.remove('active');\r\n }\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n booleanAttribute,\r\n Component,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'monkey-tab',\r\n standalone: false,\r\n template: `\r\n <button type=\"button\" [disabled]=\"disabled\" (click)=\"handleClick()\">\r\n <ng-content />\r\n </button>\r\n `,\r\n styles: [\r\n `\r\n :host {\r\n display: block;\r\n }\r\n `\r\n ]\r\n})\r\nexport class MonkeyTabComponent {\r\n @Input() value: string = '';\r\n\r\n @Input({ transform: booleanAttribute }) disabled: boolean = false;\r\n\r\n @Output() onClick = new EventEmitter<string>();\r\n\r\n @Input()\r\n @HostBinding('class.selected')\r\n isSelected: boolean = false;\r\n\r\n handleClick() {\r\n if (!this.disabled) {\r\n this.onClick.emit(this.value);\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentInit,\r\n AfterViewInit,\r\n booleanAttribute,\r\n Component,\r\n ContentChildren,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n QueryList,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyTabComponent } from './tab.component';\r\n\r\n@Component({\r\n selector: 'monkey-tabs',\r\n standalone: false,\r\n encapsulation: ViewEncapsulation.None,\r\n template: `\r\n @if (hasScroll) {\r\n <button\r\n class=\"scroll-arrow scroll-arrow-left\"\r\n [class.enabled]=\"enabledLeftArrow\"\r\n (click)=\"scrollLeft()\"\r\n type=\"button\"\r\n >\r\n ‹\r\n </button>\r\n }\r\n\r\n <div class=\"monkey-tabs-header\" #tabsHeader>\r\n <div\r\n class=\"monkey-tabs-content\"\r\n [class.full-width]=\"fullWidth\"\r\n [class]=\"position\"\r\n #tabsContent\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n\r\n @if (hasScroll) {\r\n <button\r\n class=\"scroll-arrow scroll-arrow-right\"\r\n [class.enabled]=\"enabledRightArrow\"\r\n (click)=\"scrollRight()\"\r\n type=\"button\"\r\n >\r\n ›\r\n </button>\r\n }\r\n `,\r\n styleUrls: ['./tabs.component.scss'],\r\n host: {\r\n 'data-testid': 'monkey-tabs',\r\n '[attr.id]': 'monkeyId',\r\n '[id]': 'monkeyId'\r\n }\r\n})\r\nexport class MonkeyTabsComponent implements AfterContentInit, AfterViewInit, OnDestroy, OnChanges {\r\n protected monkeyId = inject(IdGenerator).getId('monkey-tabs-');\r\n\r\n @Input() selected: string = '';\r\n\r\n @Input({ transform: booleanAttribute }) fullWidth: boolean = false;\r\n\r\n @Input() position: 'start' | 'center' | 'end' = 'start';\r\n\r\n @Output() onChange = new EventEmitter<string>();\r\n\r\n @ContentChildren(MonkeyTabComponent) tabs!: QueryList<MonkeyTabComponent>;\r\n\r\n @ViewChild('tabsHeader') tabsHeader!: ElementRef<HTMLDivElement>;\r\n\r\n @ViewChild('tabsContent') tabsContent!: ElementRef<HTMLDivElement>;\r\n\r\n enabledLeftArrow = false;\r\n\r\n enabledRightArrow = false;\r\n\r\n hasScroll = false;\r\n\r\n scrollPosition = 0;\r\n\r\n private destroyRef = inject(DestroyRef);\r\n\r\n private resizeObserver?: ResizeObserver;\r\n\r\n private updateScrollPosition() {\r\n this.tabsContent.nativeElement.style.transform = `translateX(-${this.scrollPosition}px)`;\r\n this.updateScrollArrows();\r\n }\r\n\r\n private updateScrollArrows() {\r\n if (!this.tabsHeader || !this.tabsContent) return;\r\n\r\n const headerWidth = this.tabsHeader.nativeElement.offsetWidth;\r\n const contentWidth = this.tabsContent.nativeElement.scrollWidth;\r\n const maxScroll = contentWidth - headerWidth;\r\n\r\n this.hasScroll = maxScroll > 0;\r\n this.enabledLeftArrow = this.scrollPosition > 0;\r\n this.enabledRightArrow = this.scrollPosition < maxScroll && maxScroll > 0;\r\n }\r\n\r\n private selectTab(value: string) {\r\n this.selected = value;\r\n this.onChange.emit(value);\r\n this.updateTabSelection();\r\n }\r\n\r\n private updateTabSelection() {\r\n if (!this.tabs) return;\r\n\r\n this.tabs.forEach((tab) => {\r\n tab.isSelected = tab.value === this.selected;\r\n });\r\n }\r\n\r\n ngOnChanges() {\r\n this.updateTabSelection();\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (typeof ResizeObserver !== 'undefined') {\r\n this.resizeObserver = new ResizeObserver(() => {\r\n this.updateScrollArrows();\r\n });\r\n this.resizeObserver.observe(this.tabsHeader.nativeElement);\r\n }\r\n\r\n setTimeout(() => {\r\n this.updateScrollArrows();\r\n }, 0);\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.updateTabsEvents();\r\n }\r\n\r\n updateTabsEvents() {\r\n this.tabs.forEach((tab) => {\r\n tab.onClick.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((value: string) => {\r\n this.selectTab(value);\r\n });\r\n });\r\n\r\n this.updateTabSelection();\r\n }\r\n\r\n scrollLeft() {\r\n const headerWidth = this.tabsHeader.nativeElement.offsetWidth;\r\n const scrollAmount = headerWidth * 0.8;\r\n this.scrollPosition = Math.max(0, this.scrollPosition - scrollAmount);\r\n this.updateScrollPosition();\r\n }\r\n\r\n scrollRight() {\r\n const headerWidth = this.tabsHeader.nativeElement.offsetWidth;\r\n const contentWidth = this.tabsContent.nativeElement.scrollWidth;\r\n const maxScroll = contentWidth - headerWidth;\r\n const scrollAmount = headerWidth * 0.8;\r\n this.scrollPosition = Math.min(maxScroll, this.scrollPosition + scrollAmount);\r\n this.updateScrollPosition();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.resizeObserver?.disconnect();\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { NgModule } from '@angular/core';\r\nimport { MonkeyTabLinkDirective } from './tab-link.directive';\r\nimport { MonkeyTabComponent } from './tab.component';\r\nimport { MonkeyTabsComponent } from './tabs.component';\r\n\r\n@NgModule({\r\n declarations: [MonkeyTabsComponent, MonkeyTabComponent, MonkeyTabLinkDirective],\r\n exports: [MonkeyTabsComponent, MonkeyTabComponent, MonkeyTabLinkDirective]\r\n})\r\nexport class MonkeyTabsModule {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './toast.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n EventEmitter,\r\n HostBinding,\r\n HostListener,\r\n inject,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\n\r\n@Component({\r\n selector: 'monkey-toggle',\r\n imports: [CommonModule],\r\n templateUrl: './toggle.component.html',\r\n styleUrl: './toggle.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-toggle',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyToggleComponent {\r\n @HostBinding('class.disabled') @Input() disabled = false;\r\n\r\n @HostBinding('class')\r\n @Input()\r\n size: 'lg' | 'md' | 'sm' = 'md';\r\n\r\n @Output() onChange = new EventEmitter<any>();\r\n\r\n @Input() set value(_: boolean | 'true' | 'false') {\r\n if (typeof _ === 'string') {\r\n this._checked = _ === 'true';\r\n } else {\r\n this._checked = _;\r\n }\r\n }\r\n\r\n _checked: boolean = false;\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-toggle-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: any) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n event.stopImmediatePropagation();\r\n\r\n if (!this.disabled) {\r\n this.onChange.next(!this._checked);\r\n this._checked = !this._checked;\r\n }\r\n }\r\n}\r\n","<input type=\"checkbox\" [checked]=\"_checked\" />\r\n<div class=\"slider\" [ngClass]=\"{ checked: _checked }\"></div>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './toggle.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'monkey-toggle-line-button',\r\n standalone: true,\r\n templateUrl: './toggle-line-button.component.html',\r\n styleUrl: './toggle-line-button.component.scss',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class MonkeyToggleLineButtonComponent {\r\n @Input() disabled: boolean = false;\r\n\r\n @Output() onChange = new EventEmitter();\r\n\r\n @Input() value: boolean | undefined;\r\n\r\n checked: boolean | undefined;\r\n\r\n @Input() name: string | undefined;\r\n}\r\n","<input\r\n type=\"radio\"\r\n [name]=\"name\"\r\n [id]=\"value + '-' + name\"\r\n [checked]=\"checked\"\r\n [disabled]=\"disabled\"\r\n (change)=\"onChange.emit(this.value)\"\r\n/>\r\n<label [for]=\"value + '-' + name\">\r\n <ng-content></ng-content>\r\n</label>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './toggle-line-button.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n HostBinding,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n QueryList,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyToggleLineButtonComponent } from './toggle-line-button';\r\n\r\n@Component({\r\n selector: 'monkey-toggle-line',\r\n imports: [],\r\n templateUrl: './toggle-line.component.html',\r\n styleUrl: './toggle-line.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n 'data-testid': 'monkey-toggle-line',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyToggleLineComponent implements AfterContentInit, OnDestroy, OnChanges {\r\n @Input() value: boolean | undefined;\r\n\r\n @Input() name = Math.random().toString();\r\n\r\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\r\n\r\n @Input({ transform: booleanAttribute }) disabled: boolean = false;\r\n\r\n @Output() onChange = new EventEmitter<any>();\r\n\r\n private subscriptions: Subscription = new Subscription();\r\n\r\n @ContentChildren(MonkeyToggleLineButtonComponent)\r\n radioButtons!: QueryList<MonkeyToggleLineButtonComponent>;\r\n\r\n @HostBinding('class')\r\n public get class(): string {\r\n return this.size;\r\n }\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-toggle-line-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.radioButtons.forEach((_, i) => {\r\n _.value = !!i;\r\n _.checked = this.value === _.value;\r\n _.name = this.name;\r\n _.disabled = this.disabled;\r\n\r\n const subscription = _.onChange.subscribe((value: boolean) => {\r\n this.onChange.emit(value);\r\n });\r\n this.subscriptions.add(subscription);\r\n });\r\n }\r\n\r\n ngOnChanges(): void {\r\n if (!this.radioButtons) return;\r\n this.radioButtons.forEach((_, i) => {\r\n _.checked = this.value === _.value;\r\n _.disabled = this.disabled;\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.unsubscribe();\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './toggle-line-button';\r\nexport * from './toggle-line.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n Component,\r\n inject,\r\n Input,\r\n input,\r\n InputSignal,\r\n output,\r\n OutputEmitterRef,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { type MonkeyAlertType, MonkeySize } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'monkey-user-profile',\r\n styleUrl: './user-profile.component.scss',\r\n template: `\r\n <div class=\"icon\">\r\n <i class=\"mk-i mk-i-user-profile {{size()}}\"></i>\r\n </div>\r\n <div class=\"text-truncate\">{{ email() }}</div>\r\n `,\r\n host: {\r\n 'data-testid': 'monkey-user-profile',\r\n '[attr.id]': 'id',\r\n '[id]': 'id',\r\n '[class]': 'size()'\r\n }\r\n})\r\nexport class MonkeyUserProfileComponent {\r\n email: InputSignal<string> = input.required();\r\n\r\n size: InputSignal<MonkeySize> = input('sm' as MonkeySize);\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-user-profile-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './user-profile.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n Component,\r\n ElementRef,\r\n HostBinding,\r\n HostListener,\r\n inject,\r\n Input,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\nimport { MonkeyPopoverDirective } from '../../directives/popover';\r\nimport { MonkeySize } from '../../interfaces';\r\nimport { MonkeyAvatarComponent } from '../avatar';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [MonkeyAvatarComponent, UtilIconComponent, MonkeyPopoverDirective],\r\n selector: 'monkey-user-profile-button',\r\n styleUrl: './user-profile-button.component.scss',\r\n template: `\r\n <monkey-avatar [size]=\"size\" [src]=\"iconName ? { iconName } : { name }\" />\r\n <div class=\"lh-24 text-truncate flex-grow-1 fs-xxs text-gray-900\">\r\n {{ name }}\r\n </div>\r\n <util-icon class=\"arrow\" name=\"arrowDown\" />\r\n\r\n <ng-template\r\n [monkeyPopover]=\"open\"\r\n [monkeyPopoverTarget]=\"elementRef.nativeElement\"\r\n [monkeyPopoverClosed]=\"handleClose\"\r\n monkeyPopoverDir=\"rtl\"\r\n [monkeyPopoverHideHeader]=\"true\"\r\n >\r\n <div class=\"context-menu\" (click)=\"open = false\">\r\n <ng-content />\r\n </div>\r\n </ng-template>\r\n `,\r\n host: {\r\n 'data-testid': 'monkey-user-profile-button',\r\n '[attr.id]': 'id',\r\n '[id]': 'id',\r\n '[class.open]': 'open'\r\n }\r\n})\r\nexport class MonkeyUserProfileButtonComponent {\r\n protected _uid = inject(IdGenerator).getId('monkey-user-profile-button-');\r\n\r\n public elementRef = inject(ElementRef);\r\n\r\n @HostBinding('class')\r\n @Input()\r\n size: MonkeySize = 'xs';\r\n\r\n @Input({ required: true }) name!: string;\r\n\r\n @Input() iconName: string = '';\r\n\r\n protected _id!: string;\r\n\r\n open = false;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n this.open = true;\r\n }\r\n\r\n handleClose = () => {\r\n this.open = false;\r\n };\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './user-profile-button.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './accordion';\r\nexport * from './action-bar';\r\nexport * from './alert';\r\nexport * from './autocomplete';\r\nexport * from './autocomplete-address';\r\nexport * from './avatar';\r\nexport * from './badge';\r\nexport * from './breadcrumb';\r\nexport * from './button';\r\nexport * from './checkbox';\r\nexport * from './date-range';\r\nexport * from './divider';\r\nexport * from './download-button';\r\nexport * from './download-toast';\r\nexport * from './complex-filter-bar';\r\nexport * from './filter-bar';\r\nexport * from './form-field';\r\nexport * from './icon-button';\r\nexport * from './input';\r\nexport * from './input-code';\r\nexport * from './input-date-range';\r\nexport * from './input-phone';\r\nexport * from './input-upload';\r\nexport * from './modal';\r\nexport * from './option';\r\nexport * from './pass-number';\r\nexport * from './radio-button';\r\nexport * from './scrollbar';\r\nexport * from './security-level';\r\nexport * from './select';\r\nexport * from './status';\r\nexport * from './stepper';\r\nexport * from './table';\r\nexport * from './tabs';\r\nexport * from './toast';\r\nexport * from './toggle';\r\nexport * from './toggle-line';\r\nexport * from './tooltip';\r\nexport * from './user-profile';\r\nexport * from './user-profile-button';\r\n\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive, ElementRef, Input, OnChanges, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[monkeyBadge]'\r\n})\r\nexport class MonkeyBadgeDirective implements OnChanges {\r\n @Input() badgePosition: 'left' | 'right' = 'right';\r\n\r\n @Input() badgeSize: 'sm' | 'md' | 'lg' = 'md';\r\n\r\n @Input() badgeHidden = false;\r\n\r\n @Input() monkeyBadge: string = '';\r\n\r\n @Input() badgeBackground: string | null = null;\r\n\r\n @Input() badgeColor: string | null = null;\r\n\r\n private badgeEl: HTMLElement | null = null;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2\r\n ) {\r\n // not to do\r\n }\r\n\r\n ngOnChanges(): void {\r\n const { badgeHidden, badgeEl, renderer, el } = this;\r\n\r\n if (badgeHidden) {\r\n this.removeBadge();\r\n return;\r\n }\r\n\r\n if (!badgeEl) {\r\n this.badgeEl = renderer.createElement('span');\r\n renderer.setStyle(el.nativeElement, 'position', 'relative');\r\n renderer.appendChild(el.nativeElement, this.badgeEl);\r\n }\r\n\r\n this.updateBadge();\r\n }\r\n\r\n private updateBadge(): void {\r\n const {\r\n badgeEl,\r\n renderer,\r\n monkeyBadge,\r\n badgeSize,\r\n badgeColor,\r\n badgePosition,\r\n badgeBackground\r\n } = this;\r\n\r\n renderer.addClass(badgeEl, 'monkey-badge');\r\n renderer.addClass(badgeEl, `monkey-badge-${badgeSize}`);\r\n renderer.addClass(badgeEl, `monkey-badge-${badgePosition}`);\r\n renderer.setAttribute(\r\n badgeEl,\r\n 'style',\r\n `\r\n --badge-background: ${badgeBackground ?? 'unset'};\r\n --badge-color: ${badgeColor ?? 'unset'}\r\n `\r\n );\r\n\r\n this.renderer.setProperty(this.badgeEl, 'textContent', monkeyBadge);\r\n }\r\n\r\n private removeBadge(): void {\r\n const { renderer, el, badgeEl } = this;\r\n if (!el.nativeElement || !badgeEl) return;\r\n renderer.removeChild(el.nativeElement, badgeEl);\r\n renderer.removeStyle(el.nativeElement, 'position');\r\n this.badgeEl = null;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { AfterContentInit, Directive, ElementRef, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'form[monkey-form]',\r\n standalone: true\r\n})\r\nexport class MonkeyFormDirective implements AfterContentInit {\r\n constructor(\r\n private readonly el: ElementRef<HTMLElement>,\r\n private readonly renderer: Renderer2\r\n ) {}\r\n\r\n ngAfterContentInit(): void {\r\n this.createSubmitButton();\r\n }\r\n\r\n private createSubmitButton(): void {\r\n const form = this.el.nativeElement;\r\n\r\n const existing = form.querySelector('button[monkey-submit-button]');\r\n if (existing) return;\r\n\r\n const button: HTMLButtonElement = this.renderer.createElement('button');\r\n\r\n this.renderer.setAttribute(button, 'type', 'submit');\r\n this.renderer.setAttribute(button, 'monkey-submit-button', 'true'); // marker\r\n this.renderer.setAttribute(button, 'aria-hidden', 'true');\r\n this.renderer.setAttribute(button, 'tabindex', '-1');\r\n\r\n this.renderer.setStyle(button, 'position', 'absolute');\r\n this.renderer.setStyle(button, 'width', '0');\r\n this.renderer.setStyle(button, 'height', '0');\r\n this.renderer.setStyle(button, 'padding', '0');\r\n this.renderer.setStyle(button, 'margin', '0');\r\n this.renderer.setStyle(button, 'border', 'none');\r\n this.renderer.setStyle(button, 'overflow', 'hidden');\r\n this.renderer.setStyle(button, 'opacity', '0');\r\n this.renderer.setStyle(button, 'pointer-events', 'none');\r\n this.renderer.setStyle(button, 'clip', 'rect(0 0 0 0)');\r\n\r\n this.renderer.appendChild(this.el.nativeElement, button);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { ComponentRef, Signal } from '@angular/core';\r\nimport { MonkeyToastComponent } from '../components/toast/toast.component';\r\n\r\nexport class MonkeyToastRef {\r\n constructor(private readonly componentRef: ComponentRef<MonkeyToastComponent>) {\r\n // not to do\r\n }\r\n\r\n close() {\r\n this.componentRef.instance.close();\r\n }\r\n}\r\n\r\nexport type MonkeyToastPosition =\r\n | 'top-center'\r\n | 'top-left'\r\n | 'top-right'\r\n | 'bottom-center'\r\n | 'bottom-left'\r\n | 'bottom-right';\r\n\r\nexport type MonkeyToastType = 'default' | 'success' | 'error' | 'warning' | 'question';\r\n\r\nexport type ToastConfig = {\r\n type?: MonkeyToastType;\r\n icon?: string;\r\n isClosable?: boolean;\r\n message: string;\r\n position?: MonkeyToastPosition;\r\n duration?: number;\r\n keepOpen?: boolean;\r\n actionLabel?: string;\r\n actionIcon?: string;\r\n action?: () => void;\r\n closeOnAction?: boolean;\r\n};\r\n\r\nexport type DownloadToastConfig = Pick<\r\n ToastConfig,\r\n 'message' | 'position' | 'duration' | 'keepOpen'\r\n> & {\r\n id?: string;\r\n progress?: number | Signal<number>;\r\n onCancel?: () => void;\r\n onDownload?: () => void;\r\n};\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './alert';\r\nexport * from './autocomplete';\r\nexport * from './autocomplete-address';\r\nexport * from './breadcrumb';\r\nexport * from './button';\r\nexport * from './popover';\r\nexport * from './sizes';\r\nexport * from './table';\r\nexport * from './toast';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './lib/components';\r\nexport * from './lib/directives/badge';\r\nexport * from './lib/directives/display';\r\nexport * from './lib/directives/error';\r\nexport * from './lib/directives/helper';\r\nexport * from './lib/directives/info';\r\nexport * from './lib/directives/label';\r\nexport * from './lib/directives/popover';\r\nexport * from './lib/directives/prefix';\r\nexport * from './lib/directives/suffix';\r\nexport * from './lib/directives/form';\r\nexport * from './lib/interfaces';\r\nexport * from './lib/services';\r\nexport * from './lib/tokens';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.UtilIconComponent","i1.MonkeyFormFieldComponent","i2","i3","Utils.buildMonthByDays","Utils.getEnumKeys","Utils.QuickActionsEnum","Utils.parseStringDate","Utils.getDefaultdates","Utils.buildCalendars","i1","i2.MonkeyInputDirective","i3.MonkeyFormFieldComponent","i4","i2.MonkeyFormFieldComponent","i3.MonkeyInputDirective","i2.MonkeyModalRef","i3.MonkeyIconButtonComponent","i1.MonkeyButtonComponent","i2.MonkeyModalComponent","i3.MonkeyModalContentDirective","i4.MonkeyModalActionsDirective","i3.MonkeyModalTitleDirective","i4.MonkeyModalSubtitleDirective","i5.MonkeyModalContentDirective","i6.MonkeyModalActionsDirective","i1.UtilIconComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAEA,MAAM,QAAQ,GAA2B,EAAE;MAG9B,WAAW,CAAA;AACtB,IAAA,KAAK,CAAC,MAAc,EAAA;AAClB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;AAC3D,YAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;QACtB;AAEA,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC;AACrC,QAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,YAAY,GAAG,CAAC;AAEnC,QAAA,OAAO,CAAA,EAAG,MAAM,CAAA,EAAG,YAAY,EAAE;IACnC;+GAVW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cADE,MAAM,EAAA,CAAA,CAAA;;4FACnB,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACJ5B,SAAU,eAAe,CAAC,GAAW,EAAE,OAAgB,EAAA;AAC3D,IAAA,OAAO,GAAG,OAAO,IAAI,gEAAgE;AAErF,IAAA,OAAO,IAAI,KAAK,CAAC,GAAG;SACjB,IAAI,CAAC,GAAG;SACR,GAAG,CAAC,MAAK;AACR,QAAA,OAAO,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AACpE,IAAA,CAAC;SACA,IAAI,CAAC,EAAE,CAAC;AACb;AAEO,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,QAAgB,KAAa;AACxE,IAAA,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,QAAQ,IAAI,GAAG;AACnE,CAAC;AAEK,SAAU,cAAc,CAAC,KAAa,EAAA;IAC1C,IAAI,KAAK,KAAK,CAAC;AAAE,QAAA,OAAO,SAAS;IAEjC,MAAM,CAAC,GAAG,IAAI;AACd,IAAA,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC/C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAEnD,OAAO,CAAA,EAAG,UAAU,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA,CAAA,EAAI,KAAK,CAAC,CAAC,CAAC,CAAA,CAAE;AACjE;AAEM,SAAU,gBAAgB,CAAC,QAAgB,EAAA;AAC/C,IAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE;IACnC,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AAC1C,IAAA,OAAO,YAAY,KAAK,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;AAChE;AAEM,SAAU,cAAc,CAAC,KAAa,EAAA;AAC1C,IAAA,OAAO;AACJ,SAAA,OAAO,CAAC,4BAA4B,EAAE,EAAE;AACxC,SAAA,OAAO,CAAC,iBAAiB,EAAE,EAAE;AAC7B,SAAA,OAAO,CAAC,iBAAiB,EAAE,EAAE;AAC7B,SAAA,OAAO,CAAC,eAAe,EAAE,EAAE;AAC3B,SAAA,OAAO,CAAC,cAAc,EAAE,EAAE;AAC1B,SAAA,IAAI,EAAE;AACX;AAEM,SAAU,uBAAuB,CAAC,IAAY,EAAA;AAClD,IAAA,OAAO;SACJ,SAAS,CAAC,KAAK;AACf,SAAA,OAAO,CAAC,kBAAkB,EAAE,EAAE;AAC9B,SAAA,WAAW,EAAE;AAClB;AAEM,SAAU,OAAO,CAAI,KAAU,EAAA;AACnC,IAAA,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACzC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7C;AACA,IAAA,OAAO,KAAK;AACd;SAEgB,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW,EAAA;AAC3D,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC;AAC5C;AAEM,SAAU,aAAa,CAAC,KAAc,EAAA;AAC1C,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AAE7B,IAAA,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AACzB,QAAA,OAAO,CAAC;IACV;IAEA,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC;AAC/B;;ACpEA;MA4Ra,iBAAiB,CAAA;AA1Q9B,IAAA,WAAA,GAAA;AA2QE,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,0EAAqB;AAC3C,IAAA;+GAFY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,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,EAxQlB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8PT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,oDAAA,CAAA,EAAA,CAAA,CAAA;;4FAUU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA1Q7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,QAAA,EACX,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8PT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,oDAAA,CAAA,EAAA;;;AClRH;;;;AAI6B;AAGvB,SAAU,YAAY,CAAC,KAA8B,EAAA;AACzD,IAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;QACnB,OAAQ,KAAwB,EAAE;IACpC;AAEA,IAAA,OAAO,KAAe;AACxB;AAEM,SAAU,gBAAgB,CAAC,KAAc,EAAA;AAC7C,IAAA,OAAO,QAAQ,CAAC,KAAK,CAAC;AACxB;;ACjBA;;;;AAI6B;MA4ChB,wBAAwB,CAAA;IAKnC,IAAa,KAAK,CAAC,IAA+B,EAAA;AAChD,QAAA,IAAI,IAAI,YAAY,WAAW,EAAE;AAC/B,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACtB;aAAO;AACL,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACtB;IACF;AAUA,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI;IAC/B;AAEA,IAAA,WAAA,GAAA;QA7BwC,IAAA,CAAA,IAAI,GAAG,KAAK;QAEZ,IAAA,CAAA,QAAQ,GAAG,KAAK;QAc9C,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;;AAe7D,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;IACnB;IAEA,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,QAAQ;YAAE;AACnB,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI;IACxB;+GAtCW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EACf,gBAAgB,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAEhB,gBAAgB,CAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnDtC,2eAmBA,EAAA,MAAA,EAAA,CAAA,mvBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDPY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAS7B;YACV,OAAO,CAAC,SAAS,EAAE;AACjB,gBAAA,KAAK,CACH,MAAM,EACN,KAAK,CAAC;AACJ,oBAAA,MAAM,EAAE;AACT,iBAAA,CAAC,CACH;gBACD,UAAU,CAAC,QAAQ,EAAE;AACnB,oBAAA,OAAO,CACL,mBAAmB,EACnB,KAAK,CAAC;AACJ,wBAAA,MAAM,EAAE;AACT,qBAAA,CAAC;iBAEL,CAAC;gBACF,UAAU,CAAC,QAAQ,EAAE;AACnB,oBAAA,OAAO,CACL,mBAAmB,EACnB,KAAK,CAAC;AACJ,wBAAA,MAAM,EAAE;AACT,qBAAA,CAAC;iBAEL;aACF;AACF,SAAA,EAAA,CAAA,CAAA;;4FAEU,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAtCpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,WACnB,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAAA,IAAA,EAGpC;AACJ,wBAAA,aAAa,EAAE,kBAAkB;AACjC,wBAAA,kBAAkB,EAAE,UAAU;AAC9B,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,MAAM,EAAE;qBACT,EAAA,UAAA,EACW;wBACV,OAAO,CAAC,SAAS,EAAE;AACjB,4BAAA,KAAK,CACH,MAAM,EACN,KAAK,CAAC;AACJ,gCAAA,MAAM,EAAE;AACT,6BAAA,CAAC,CACH;4BACD,UAAU,CAAC,QAAQ,EAAE;AACnB,gCAAA,OAAO,CACL,mBAAmB,EACnB,KAAK,CAAC;AACJ,oCAAA,MAAM,EAAE;AACT,iCAAA,CAAC;6BAEL,CAAC;4BACF,UAAU,CAAC,QAAQ,EAAE;AACnB,gCAAA,OAAO,CACL,mBAAmB,EACnB,KAAK,CAAC;AACJ,oCAAA,MAAM,EAAE;AACT,iCAAA,CAAC;6BAEL;yBACF;AACF,qBAAA,EAAA,QAAA,EAAA,2eAAA,EAAA,MAAA,EAAA,CAAA,mvBAAA,CAAA,EAAA;;sBAGA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAErC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAErC;;sBAgBA;;;AErEH;;;;AAI6B;;ACJ7B;;;;AAI6B;MAwBhB,wBAAwB,CAAA;AACnC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE;IACxB;AAYA,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI;IAC/B;AAEA,IAAA,WAAA,GAAA;QAnBA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;QAEvB,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;QAE1B,IAAA,CAAA,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;QAEb,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;;AAe9D,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;IACnB;+GA5BW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,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,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,QAAA,EAAA,OAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhBzB,CAAA;;;;;;;;AAQR,GAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wuCAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAQS,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBApBpC,SAAS;AACO,YAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B,mBAAmB,EAAA,QAAA,EAEnB,CAAA;;;;;;;;IAQR,EAAA,IAAA,EACI;AACJ,wBAAA,aAAa,EAAE,mBAAmB;AAClC,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,cAAc,EAAE;AACjB,qBAAA,EAAA,MAAA,EAAA,CAAA,wuCAAA,CAAA,EAAA;;sBAGA,WAAW;uBAAC,OAAO;;sBAenB;;;AC5CH;;;;AAI6B;;ACJ7B;;;;AAI6B;MAyBhB,oBAAoB,CAAA;AAe/B,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI;IAC/B;AAEA,IAAA,WAAA,GAAA;AAvBA,QAAA,IAAA,CAAA,WAAW,GAAwB,KAAK,CAAC,EAAE,kFAAC;AAE5C,QAAA,IAAA,CAAA,OAAO,GAAwB,KAAK,CAAC,QAAQ,6EAAU;AAEvD,QAAA,IAAA,CAAA,KAAK,GAAwB,KAAK,CAAC,QAAQ,2EAAU;AAErD,QAAA,IAAA,CAAA,IAAI,GAAiC,KAAK,CAAC,QAAQ,0EAAmB;QAEtE,IAAA,CAAA,eAAe,GAA2B,MAAM,EAAQ;QAE9C,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;;AAezD,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;IACnB;AAEA,IAAA,IAAI,CAAC,IAAqB,EAAA;AACxB,QAAA,MAAM,SAAS,GAAG;AAChB,YAAA,KAAK,EAAE,iBAAiB;AACxB,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,KAAK,EAAE,eAAe;AACtB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,OAAO,EAAE;SACV;AAED,QAAA,OAAO,SAAS,CAAC,IAAI,CAAC;IACxB;+GAvCW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,60BC7BjC,uqBAoBA,EAAA,MAAA,EAAA,CAAA,ktDAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDSa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAXhC,SAAS;AACO,YAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B,cAAc,EAAA,IAAA,EAGlB;AACJ,wBAAA,aAAa,EAAE,cAAc;AAC7B,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,MAAM,EAAE;AACT,qBAAA,EAAA,QAAA,EAAA,uqBAAA,EAAA,MAAA,EAAA,CAAA,ktDAAA,CAAA,EAAA;;sBAiBA;;;AE5CH;;;;AAI6B;;ACJ7B;;;;AAI6B;MAIhB,iBAAiB,GAAG,IAAI,cAAc,CAA0B,EAAE;MAClE,oBAAoB,GAAG,IAAI,cAAc,CAAC,sBAAsB;MAChE,qBAAqB,GAAG,IAAI,cAAc,CAAS,IAAI;MACvD,mBAAmB,GAAG,IAAI,cAAc,CAAS,EAAE;MACnD,cAAc,GAAG,IAAI,cAAc,CAA0B,gBAAgB;AAEpF,SAAU,sBAAsB,CAAI,KAAwB,EAAE,IAAa,EAAA;AAC/E,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC/C,IAAI,CAAC,KAAK,EAAE;;AAEV,QAAA,OAAO,CAAC,KAAK,CAAC,CAAA,wBAAA,EAA2B,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAA,kBAAA,CAAoB,CAAC;IACxF;AACA,IAAA,OAAO,KAAK;AACd;;ACrBA;;;;AAI6B;MA8EhB,6BAA6B,CAAA;AAqBxC,IAAA,WAAA,CAAoB,IAA6B,EAAA;QAA7B,IAAA,CAAA,IAAI,GAAJ,IAAI;AAdd,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAE;QAYtC,IAAA,CAAA,eAAe,GAAG,KAAK;;IAIvB;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,UAAU,CAAC,MAAK;AACd,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CACrD,0EAA0E,CAC3E;gBACD,SAAS,EAAE,KAAK,EAAE;AACpB,YAAA,CAAC,CAAC;QACJ;IACF;AAEA,IAAA,UAAU,CAAC,KAAc,EAAA;QACvB,OAAO,KAAK,YAAY,WAAW;IACrC;+GAtCW,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,qKASpB,gBAAgB,CAAA,EAAA,SAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAGhB,gBAAgB,CAAA,EAAA,WAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAGhB,gBAAgB,CAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArD1B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EArCS,YAAY,sMAAoB,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAuChD,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAzCzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,CAAC;AAC5D,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCT,EAAA;AACF,iBAAA;;sBAEE;;sBAEA;;sBAEA;;sBAEA;;sBAEA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC;;AA0BG,SAAU,qBAAqB,CAAC,KAAc,EAAA;AAClD,IAAA,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,EAAE;AACtD,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,OAAO,EAAE;AACzD,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB;MAMa,sBAAsB,CAAA;IA+BjC,IACI,OAAO,CAAC,IAAa,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;YACvB;QACF;AACA,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;QACjB,IAAI,IAAI,EAAE;YACR,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,aAAa,EAAE;YACtB,CAAC,EAAE,CAAC,CAAC;QACP;aAAO;YACL,IAAI,CAAC,cAAc,EAAE;QACvB;IACF;AAEA,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,KAAK;IACnB;IAOA,IACI,MAAM,CAAC,KAAsB,EAAA;AAC/B,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;IACtB;AAEA,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO;IACrB;AA0CA,IAAA,WAAA,GAAA;AAvGiB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;AAE1B,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAE/B,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC;AAExB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AAEtB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;AAE1B,QAAA,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAExD,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AAExB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;QAczC,IAAA,CAAA,KAAK,GAAG,KAAK;QAoCrB,IAAA,CAAA,QAAQ,GAAG,KAAK;QAGhB,IAAA,CAAA,QAAQ,GAAG,IAAI;QAGf,IAAA,CAAA,KAAK,GAAG,KAAK;QAGb,IAAA,CAAA,GAAG,GAAqB,KAAK;QAG7B,IAAA,CAAA,WAAW,GAAG,KAAK;QAsBnB,IAAA,CAAA,YAAY,GAAqB,KAAK;AAGtC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAA0B;QAGpD,IAAI,CAAC,OAAO,CAAC;AACV,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,KAAK,KAA8B;YACzC,OAAO,KAAK,YAAY,eAAe;QACzC,CAAC,CAAC,EACF,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;aAErC,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,YAAY,EAAE;AACrB,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,cAAc,EAAE;AACrB,QAAA,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE;IACpC;AAEA,IAAA,KAAK,CAAC,KAAkB,EAAA;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IAC1B;AAEQ,IAAA,YAAY,CAAC,KAAkB,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;YAClB,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAK;AAClB,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACtB,YAAA,CAAC,CAAC;QACJ;IACF;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE;AAClC,QAAA,IAAI,CAAC,eAAe,GAAG,SAAS;AAEhC,QAAA,IAAI,CAAC,mBAAmB,IAAI;AAC5B,QAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS;AAEpC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AAC1B,YAAA,IAAI,CAAC,WAAW,GAAG,SAAS;QAC9B;IACF;AAEQ,IAAA,YAAY,CAAC,GAAqB,EAAA;AACxC,QAAA,MAAM,gBAAgB,GAA+C;AACnE,YAAA,GAAG,EAAE,QAAQ;AACb,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,MAAM,EAAE;SACT;AAED,QAAA,MAAM,kBAAkB,GAAmD;AACzE,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,MAAM,EAAE;SACT;AAED,QAAA,MAAM,OAAO,GAAG,CAAC,GAAqB,KAAuB;YAC3D,OAAO;AACL,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,OAAO,EAAE,GAAG;AACZ,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,QAAQ,EAAE,gBAAgB,CAAC,GAAG;aAC/B;AACH,QAAA,CAAC;AAED,QAAA,MAAM,OAAO,GAAG,CAAC,GAAuB,KAAuB;YAC7D,OAAO;AACL,gBAAA,OAAO,EAAE,kBAAkB,CAAC,GAAG,CAAC;AAChC,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,GAAG;AACb,gBAAA,QAAQ,EAAE;aACX;AACH,QAAA,CAAC;AAED,QAAA,MAAM,GAAG,GAAG,CAAC,IAAsB,KAAuB;YACxD,OAAO;AACL,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,gBAAgB,CAAC,IAAI;aAChC;AACH,QAAA,CAAC;AAED,QAAA,MAAM,GAAG,GAAG,CAAC,IAAsB,KAAuB;YACxD,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,QAAQ,EAAE,gBAAgB,CAAC,IAAI;aAChC;AACH,QAAA,CAAC;AAED,QAAA,MAAM,IAAI,GAAG,CAAC,KAAyB,EAAE,KAAuB,KAAuB;YACrF,OAAO;AACL,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,kBAAkB,CAAC,KAAK,CAAC;AACnC,gBAAA,QAAQ,EAAE;aACX;AACH,QAAA,CAAC;AAED,QAAA,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG;QAEjD,QAAQ,GAAG;AACT,YAAA,KAAK,IAAI;gBACP,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,YAAA,KAAK,IAAI;gBACP,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC9E,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC5B,YAAA,KAAK,KAAK;gBACR,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AACpC,YAAA,KAAK,KAAK;gBACR,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AACpC,YAAA,KAAK,MAAM;gBACT,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;AACpC,YAAA,KAAK,MAAM;gBACT,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;AACpC,YAAA,KAAK,IAAI;gBACP,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AAChE,YAAA,KAAK,IAAI;gBACP,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;AAClF,YAAA,KAAK,IAAI;gBACP,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AACpE,YAAA,KAAK,IAAI;gBACP,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;AACvE,YAAA;AACE,gBAAA,OAAO,EAAE;;IAEf;AAEQ,IAAA,WAAW,CAAC,MAA0B,EAAA;AAC5C,QAAA,IAAI,EAAE,MAAM,YAAY,WAAW,CAAC,EAAE;AACpC,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAc,uBAAuB,CAAC;QAEpE,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI;AACjF,QAAA,MAAM,IAAI,GAAG,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAc,QAAQ,CAAC,GAAG,MAAM;AAEtE,QAAA,OAAO,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI;IACrD;IAEQ,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;YACzE;QACF;AAEA,QAAA,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,WAAW;AAE3C,QAAA,MAAM,OAAO,GAAG,CAAC,KAAiB,KAAU;YAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;YAE3C,IAAI,CAAC,IAAI,EAAE;gBACT;YACF;AAEA,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAK;gBAClB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAEpC,gBAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,oBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;gBAC1B;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC;AAED,QAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAK;AAChC,YAAA,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC;AACnD,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,mBAAmB,GAAG,MAAK;AAC9B,YAAA,cAAc,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC;AACtD,QAAA,CAAC;IACH;IAEQ,aAAa,CACnB,MAAgD,EAChD,OAA8B,EAAA;AAE9B,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;;AAEhB,YAAA,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC;YACzE;QACF;QAEA,MAAM,QAAQ,GACZ,IAAI,CAAC,MAAM,YAAY,WAAW,GAAG,IAAI,CAAC,MAAM,GAAI,IAAI,CAAC,MAAc,CAAC,OAAO;AAEjF,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC3B,aAAA,mBAAmB,CAAC,MAAM,IAAI,QAAQ;aACtC,QAAQ,CAAC,IAAI;aACb,iBAAiB,CAAC,IAAI;aACtB,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,GAAI,CAAC,CAAC;QAElD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YACtC,gBAAgB,EAAE,IAAI,CAAC,iBAAiB;AACxC,YAAA,mBAAmB,EAAE,IAAI;AACzB,YAAA,SAAS,EAAE,KAAK;YAChB,WAAW,EAAE,IAAI,CAAC,QAAQ;YAC1B,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAC3D,YAAA,aAAa,EAAE,kCAAkC;YACjD,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,GAAG,SAAS;AACzF,YAAA,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,IAAI,CAAC;AACd,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC;AACF,aAAA,aAAa;AACb,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACzC,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AAC1B,QAAA,CAAC,CAAC;QAEJ,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,6BAA6B,EAAE,IAAI,CAAC,IAAI,CAAC;QAE5E,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;QACpD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI;QAC/C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAY;QACrD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAc;QACzD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;QACtD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;QACxD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;QAC1D,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe;QAElE,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACvC,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;AACzB,iBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;iBACzC,SAAS,CAAC,MAAK;gBACd,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,CAAC,CAAC;QACN;QAEA,IAAI,CAAC,mBAAmB,EAAE;QAE1B,IAAI,IAAI,CAAC,KAAK,IAAI,gBAAgB,IAAI,MAAM,EAAE;AAC5C,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAC,MAAK;AAC7C,gBAAA,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE;AACpC,YAAA,CAAC,CAAC;AAEF,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC;QACzE;IACF;+GAhWW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,SAAA,CAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,CAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,uBAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,uBAAA,EAAA,UAAA,CAAA,EAAA,KAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,CAAA,EAAA,GAAA,EAAA,CAAA,kBAAA,EAAA,KAAA,CAAA,EAAA,WAAA,EAAA,CAAA,0BAAA,EAAA,aAAA,CAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,CAAA,EAAA,KAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,EAAA,SAAA,CAAA,EAAA,SAAA,EAAA,CAAA,wBAAA,EAAA,WAAA,EAsFoB,gBAAgB,CAAA,EAAA,UAAA,EAAA,CAAA,yBAAA,EAAA,YAAA,EAGf,gBAAgB,4DAGf,gBAAgB,CAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,iBAAA,EAGZ,gBAAgB,CAAA,EAAA,YAAA,EAAA,CAAA,2BAAA,EAAA,cAAA,EA/G7D,qBAAqB,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAgBxB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE;AACX,iBAAA;;sBAkBE;;sBAAY,MAAM;uBAAC,oBAAoB;;sBAcvC,KAAK;uBAAC,eAAe;;sBAmBrB,KAAK;uBAAC,qBAAqB;;sBAK3B,KAAK;uBAAC,qBAAqB;;sBAS3B,KAAK;uBAAC,uBAAuB;;sBAG7B,KAAK;uBAAC,uBAAuB;;sBAG7B,KAAK;uBAAC,oBAAoB;;sBAG1B,KAAK;uBAAC,kBAAkB;;sBAGxB,KAAK;uBAAC,0BAA0B;;sBAGhC,KAAK;uBAAC,qBAAqB;;sBAG3B,KAAK;uBAAC,oBAAoB;;sBAE1B,KAAK;uBAAC,sBAAsB;;sBAE5B,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,KAAK,EAAE,wBAAwB,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGtE,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,KAAK,EAAE,yBAAyB,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGvE,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,KAAK,EAAE,0BAA0B,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGxE,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,KAAK,EAAE,8BAA8B,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAG5E,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,KAAK,EAAE,2BAA2B,EAAE,SAAS,EAAE,qBAAqB,EAAE;;sBAG9E,MAAM;uBAAC,wBAAwB;;;MCxOrB,uBAAuB,CAAA;AADpC,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;AAE1B,QAAA,IAAA,CAAA,aAAa,GAAG,sBAAsB,CACrD,mBAAmB,EACnB,qBAAqB,CACrB;AA0EH,IAAA;AAxES,IAAA,WAAW,CAAC,MAAyB,EAAA;QAC3C,MAAM,YAAY,GAAG,CACnB,UAA8C,EAC9C,IASiB,EACjB,KAAK,GAAG,UAAU,KAChB;YACF,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;gBACnC,OAAO,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC/B,YAAA,CAAC,CAAC;AAEF,YAAA,OAAO,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE;AAC9B,QAAA,CAAC;AAED,QAAA,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAkB,KAAI;AACvC,YAAA,MAAM,EAAE,iBAAiB,EAAE,GAAG,CAAC;YAE/B,MAAM,OAAO,GAAG,YAAY,CAAC,iBAAkB,EAAE,OAAO,CAAC;YACzD,MAAM,aAAa,GAAG,YAAY,CAAC,iBAAkB,EAAE,eAAe,CAAC;YACvE,MAAM,YAAY,GAAG,YAAY,CAAC,iBAAkB,EAAE,qBAAqB,CAAC;YAC5E,MAAM,IAAI,GAAG,YAAY,CAAC,iBAAkB,EAAE,6BAA6B,CAAC;YAC5E,MAAM,KAAK,GAAG,YAAY,CAAC,iBAAkB,EAAE,6BAA6B,CAAC;YAC7E,MAAM,OAAO,GAAG,YAAY,CAAC,iBAAkB,EAAE,SAAS,EAAE,WAAW,CAAC;YACxE,MAAM,OAAO,GAAG,YAAY,CAAC,iBAAkB,EAAE,aAAa,CAAC;YAE/D,OAAO;gBACL,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;gBACpC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;gBACpC,OAAO;gBACP,aAAa;gBACb,YAAY;gBACZ,IAAI;gBACJ,KAAK;gBACL,OAAO;gBACP;aACD;AACH,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,GAAG,CAAC,SAAiB,EAAA;QACnB,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,OAAO,EAAE,CAAC,EAAE,CAAC;QACf;QAEA,OAAO,IAAI,CAAC;aACT,IAAI,CACH,oDAAoD,EACpD;YACE;SACD,EACD;AACE,YAAA,OAAO,EAAE;gBACP,gBAAgB,EAAE,IAAI,CAAC,aAAa;AACpC,gBAAA,kBAAkB,EAChB;AACH;SACF;AAEF,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,IAA6B,KAAI;YACpC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;QACtC,CAAC,CAAC,CACH;IACL;+GA/EW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cADV,MAAM,EAAA,CAAA,CAAA;;4FACnB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACVlC;AACA;;;;AAI6B;AAM7B,MAAM,cAAc,GAAG,OAAO;MAKjB,uBAAuB,CAAA;AAqelC,IAAA,WAAA,GAAA;AApeQ,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAE7B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;QAEhC,IAAA,CAAA,MAAM,GACZ,MAAM,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC1C,IAAI,eAAe,CAAS,IAAI,CAAC,SAAS,IAAI,cAAc,CAAC;QAEvD,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAsC;AACxE,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,YAAY,EAAE,6BAA6B;AAC3C,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,iBAAiB,EAAE,8CAA8C;AACjE,gBAAA,cAAc,EAAE,eAAe;AAC/B,gBAAA,OAAO,EAAE,eAAe;;AAExB,gBAAA,KAAK,EAAE;AACL,oBAAA,KAAK,EAAE,mBAAmB;AAC1B,oBAAA,IAAI,EAAE;AACJ,wBAAA,UAAU,EAAE,kBAAkB;AAC9B,wBAAA,WAAW,EAAE,kBAAkB;AAC/B,wBAAA,YAAY,EAAE,kBAAkB;AAChC,wBAAA,aAAa,EAAE,kBAAkB;AACjC,wBAAA,UAAU,EAAE,aAAa;AACzB,wBAAA,WAAW,EAAE;AACd,qBAAA;AACD,oBAAA,MAAM,EAAE;AACN,wBAAA,WAAW,EAAE,gBAAgB;AAC7B,wBAAA,YAAY,EAAE,eAAe;AAC7B,wBAAA,IAAI,EAAE,sBAAsB;AAC5B,wBAAA,GAAG,EAAE,cAAc;AACnB,wBAAA,KAAK,EAAE;AACR,qBAAA;AACD,oBAAA,GAAG,EAAE;AACH,wBAAA,YAAY,EAAE,yCAAyC;AACvD,wBAAA,MAAM,EAAE,oBAAoB;AAC5B,wBAAA,MAAM,EAAE,kBAAkB;AAC1B,wBAAA,QAAQ,EAAE,kBAAkB;AAC5B,wBAAA,MAAM,EAAE,SAAS;AACjB,wBAAA,KAAK,EAAE,uCAAuC;AAC9C,wBAAA,gBAAgB,EAAE;AACnB;AACF,iBAAA;AACD,gBAAA,YAAY,EAAE;AACZ,oBAAA,GAAG,EAAE,QAAQ;AACb,oBAAA,UAAU,EAAE,kBAAkB;AAC9B,oBAAA,MAAM,EAAE,gBAAgB;AACxB,oBAAA,KAAK,EAAE,gBAAgB;AACvB,oBAAA,MAAM,EAAE,eAAe;AACvB,oBAAA,kBAAkB,EAAE,oBAAoB;AACxC,oBAAA,MAAM,EAAE,WAAW;AACnB,oBAAA,OAAO,EAAE,WAAW;AACpB,oBAAA,YAAY,EAAE,eAAe;AAC7B,oBAAA,UAAU,EAAE,aAAa;AACzB,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,IAAI,EAAE;AACJ,wBAAA,YAAY,EAAE,2BAA2B;AACzC,wBAAA,aAAa,EAAE,wBAAwB;AACvC,wBAAA,eAAe,EAAE,0BAA0B;AAC3C,wBAAA,aAAa,EAAE,wBAAwB;AACvC,wBAAA,cAAc,EAAE,qBAAqB;AACrC,wBAAA,gBAAgB,EAAE,uBAAuB;AACzC,wBAAA,MAAM,EAAE;AACT,qBAAA;AACD,oBAAA,QAAQ,EAAE;AACR,wBAAA,EAAE,EAAE,SAAS;AACb,wBAAA,GAAG,EAAE,aAAa;AAClB,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,QAAQ,EAAE,YAAY;AACtB,wBAAA,WAAW,EAAE,YAAY;AACzB,wBAAA,SAAS,EAAE,aAAa;AACxB,wBAAA,QAAQ,EAAE,OAAO;AACjB,wBAAA,OAAO,EAAE,OAAO;AAChB,wBAAA,EAAE,EAAE,WAAW;AACf,wBAAA,EAAE,EAAE,WAAW;AACf,wBAAA,MAAM,EAAE,UAAU;AAClB,wBAAA,KAAK,EAAE;AACR;AACF,iBAAA;AACD,gBAAA,YAAY,EAAE;AACZ,oBAAA,YAAY,EAAE,gBAAgB;AAC9B,oBAAA,UAAU,EAAE,iBAAiB;AAC7B,oBAAA,OAAO,EAAE,6BAA6B;AACtC,oBAAA,OAAO,EAAE;AACP,wBAAA,MAAM,EAAE,UAAU;AAClB,wBAAA,KAAK,EAAE;AACR,qBAAA;AACD,oBAAA,WAAW,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;AAC3D,oBAAA,MAAM,EAAE;AACN,wBAAA,CAAC,EAAE,SAAS;AACZ,wBAAA,CAAC,EAAE,WAAW;AACd,wBAAA,CAAC,EAAE,OAAO;AACV,wBAAA,CAAC,EAAE,OAAO;AACV,wBAAA,CAAC,EAAE,MAAM;AACT,wBAAA,CAAC,EAAE,OAAO;AACV,wBAAA,CAAC,EAAE,OAAO;AACV,wBAAA,CAAC,EAAE,QAAQ;AACX,wBAAA,CAAC,EAAE,UAAU;AACb,wBAAA,CAAC,EAAE,SAAS;AACZ,wBAAA,EAAE,EAAE,UAAU;AACd,wBAAA,EAAE,EAAE;AACL,qBAAA;AACD,oBAAA,eAAe,EAAE;AACf,wBAAA,MAAM,EAAE,aAAa;AACrB,wBAAA,YAAY,EAAE,iBAAiB;AAC/B,wBAAA,YAAY,EAAE,iBAAiB;AAC/B,wBAAA,YAAY,EAAE,iBAAiB;AAC/B,wBAAA,aAAa,EAAE,iBAAiB;AAChC,wBAAA,cAAc,EAAE,kBAAkB;AAClC,wBAAA,YAAY,EAAE,kBAAkB;AAChC,wBAAA,YAAY,EAAE,kBAAkB;AAChC,wBAAA,YAAY,EAAE,kBAAkB;AAChC,wBAAA,aAAa,EAAE,kBAAkB;AACjC,wBAAA,cAAc,EAAE;AACjB;AACF,iBAAA;AACD,gBAAA,EAAE,EAAE,IAAI;AACR,gBAAA,gBAAgB,EAAE;AAChB,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,MAAM,EAAE,WAAW;AACnB,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,cAAc,EAAE,UAAU;AAC1B,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,KAAK,EAAE,QAAQ;AACf,oBAAA,QAAQ,EAAE;AACX;AACF,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,YAAY,EAAE,8BAA8B;AAC5C,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,iBAAiB,EAAE,iDAAiD;AACpE,gBAAA,cAAc,EAAE,cAAc;AAC9B,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,KAAK,EAAE;AACL,oBAAA,KAAK,EAAE,iBAAiB;AACxB,oBAAA,IAAI,EAAE;AACJ,wBAAA,UAAU,EAAE,kBAAkB;AAC9B,wBAAA,WAAW,EAAE,kBAAkB;AAC/B,wBAAA,YAAY,EAAE,kBAAkB;AAChC,wBAAA,aAAa,EAAE,kBAAkB;AACjC,wBAAA,UAAU,EAAE,aAAa;AACzB,wBAAA,WAAW,EAAE;AACd,qBAAA;AACD,oBAAA,MAAM,EAAE;AACN,wBAAA,WAAW,EAAE,sBAAsB;AACnC,wBAAA,YAAY,EAAE,oBAAoB;AAClC,wBAAA,IAAI,EAAE,oBAAoB;AAC1B,wBAAA,GAAG,EAAE,eAAe;AACpB,wBAAA,KAAK,EAAE;AACR,qBAAA;AACD,oBAAA,GAAG,EAAE;AACH,wBAAA,YAAY,EAAE,4CAA4C;AAC1D,wBAAA,MAAM,EAAE,qBAAqB;AAC7B,wBAAA,MAAM,EAAE,kBAAkB;AAC1B,wBAAA,QAAQ,EAAE,kBAAkB;AAC5B,wBAAA,MAAM,EAAE,SAAS;AACjB,wBAAA,KAAK,EAAE,yCAAyC;AAChD,wBAAA,gBAAgB,EAAE;AACnB;AACF,iBAAA;AACD,gBAAA,YAAY,EAAE;AACZ,oBAAA,GAAG,EAAE,QAAQ;AACb,oBAAA,UAAU,EAAE,gBAAgB;AAC5B,oBAAA,MAAM,EAAE,iBAAiB;AACzB,oBAAA,KAAK,EAAE,iBAAiB;AACxB,oBAAA,MAAM,EAAE,eAAe;AACvB,oBAAA,kBAAkB,EAAE,sBAAsB;AAC1C,oBAAA,MAAM,EAAE,YAAY;AACpB,oBAAA,OAAO,EAAE,WAAW;AACpB,oBAAA,YAAY,EAAE,eAAe;AAC7B,oBAAA,UAAU,EAAE,aAAa;AACzB,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,IAAI,EAAE;AACJ,wBAAA,YAAY,EAAE,0BAA0B;AACxC,wBAAA,aAAa,EAAE,uBAAuB;AACtC,wBAAA,eAAe,EAAE,yBAAyB;AAC1C,wBAAA,aAAa,EAAE,uBAAuB;AACtC,wBAAA,cAAc,EAAE,oBAAoB;AACpC,wBAAA,gBAAgB,EAAE,sBAAsB;AACxC,wBAAA,MAAM,EAAE;AACT,qBAAA;AACD,oBAAA,QAAQ,EAAE;AACR,wBAAA,EAAE,EAAE,UAAU;AACd,wBAAA,GAAG,EAAE,aAAa;AAClB,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,QAAQ,EAAE,aAAa;AACvB,wBAAA,WAAW,EAAE,aAAa;AAC1B,wBAAA,SAAS,EAAE,aAAa;AACxB,wBAAA,QAAQ,EAAE,OAAO;AACjB,wBAAA,OAAO,EAAE,OAAO;AAChB,wBAAA,EAAE,EAAE,WAAW;AACf,wBAAA,EAAE,EAAE,WAAW;AACf,wBAAA,MAAM,EAAE,UAAU;AAClB,wBAAA,KAAK,EAAE;AACR;AACF,iBAAA;AACD,gBAAA,YAAY,EAAE;AACZ,oBAAA,YAAY,EAAE,iBAAiB;AAC/B,oBAAA,UAAU,EAAE,kBAAkB;AAC9B,oBAAA,OAAO,EAAE,2BAA2B;AACpC,oBAAA,OAAO,EAAE;AACP,wBAAA,MAAM,EAAE,UAAU;AAClB,wBAAA,KAAK,EAAE;AACR,qBAAA;AACD,oBAAA,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AACrE,oBAAA,MAAM,EAAE;AACN,wBAAA,CAAC,EAAE,OAAO;AACV,wBAAA,CAAC,EAAE,SAAS;AACZ,wBAAA,CAAC,EAAE,OAAO;AACV,wBAAA,CAAC,EAAE,OAAO;AACV,wBAAA,CAAC,EAAE,MAAM;AACT,wBAAA,CAAC,EAAE,OAAO;AACV,wBAAA,CAAC,EAAE,OAAO;AACV,wBAAA,CAAC,EAAE,QAAQ;AACX,wBAAA,CAAC,EAAE,YAAY;AACf,wBAAA,CAAC,EAAE,SAAS;AACZ,wBAAA,EAAE,EAAE,WAAW;AACf,wBAAA,EAAE,EAAE;AACL,qBAAA;AACD,oBAAA,eAAe,EAAE;AACf,wBAAA,MAAM,EAAE,eAAe;AACvB,wBAAA,YAAY,EAAE,iBAAiB;AAC/B,wBAAA,YAAY,EAAE,iBAAiB;AAC/B,wBAAA,YAAY,EAAE,iBAAiB;AAC/B,wBAAA,aAAa,EAAE,iBAAiB;AAChC,wBAAA,cAAc,EAAE,kBAAkB;AAClC,wBAAA,YAAY,EAAE,kBAAkB;AAChC,wBAAA,YAAY,EAAE,kBAAkB;AAChC,wBAAA,YAAY,EAAE,kBAAkB;AAChC,wBAAA,aAAa,EAAE,kBAAkB;AACjC,wBAAA,cAAc,EAAE;AACjB;AACF,iBAAA;AACD,gBAAA,EAAE,EAAE,GAAG;AACP,gBAAA,gBAAgB,EAAE;AAChB,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,MAAM,EAAE,WAAW;AACnB,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,cAAc,EAAE,UAAU;AAC1B,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,KAAK,EAAE,QAAQ;AACf,oBAAA,QAAQ,EAAE;AACX;AACF,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,YAAY,EAAE,8BAA8B;AAC5C,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,iBAAiB,EAAE,iDAAiD;AACpE,gBAAA,cAAc,EAAE,cAAc;AAC9B,gBAAA,OAAO,EAAE,aAAa;AACtB,gBAAA,KAAK,EAAE;AACL,oBAAA,KAAK,EAAE,iBAAiB;AACxB,oBAAA,IAAI,EAAE;AACJ,wBAAA,UAAU,EAAE,kBAAkB;AAC9B,wBAAA,WAAW,EAAE,kBAAkB;AAC/B,wBAAA,YAAY,EAAE,kBAAkB;AAChC,wBAAA,aAAa,EAAE,kBAAkB;AACjC,wBAAA,UAAU,EAAE,aAAa;AACzB,wBAAA,WAAW,EAAE;AACd,qBAAA;AACD,oBAAA,MAAM,EAAE;AACN,wBAAA,WAAW,EAAE,sBAAsB;AACnC,wBAAA,YAAY,EAAE,oBAAoB;AAClC,wBAAA,IAAI,EAAE,oBAAoB;AAC1B,wBAAA,GAAG,EAAE,eAAe;AACpB,wBAAA,KAAK,EAAE;AACR,qBAAA;AACD,oBAAA,GAAG,EAAE;AACH,wBAAA,YAAY,EAAE,4CAA4C;AAC1D,wBAAA,MAAM,EAAE,qBAAqB;AAC7B,wBAAA,MAAM,EAAE,kBAAkB;AAC1B,wBAAA,QAAQ,EAAE,kBAAkB;AAC5B,wBAAA,MAAM,EAAE,SAAS;AACjB,wBAAA,KAAK,EAAE,yCAAyC;AAChD,wBAAA,gBAAgB,EAAE;AACnB;AACF,iBAAA;AACD,gBAAA,YAAY,EAAE;AACZ,oBAAA,GAAG,EAAE,QAAQ;AACb,oBAAA,UAAU,EAAE,gBAAgB;AAC5B,oBAAA,MAAM,EAAE,iBAAiB;AACzB,oBAAA,KAAK,EAAE,iBAAiB;AACxB,oBAAA,MAAM,EAAE,eAAe;AACvB,oBAAA,kBAAkB,EAAE,sBAAsB;AAC1C,oBAAA,MAAM,EAAE,YAAY;AACpB,oBAAA,OAAO,EAAE,WAAW;AACpB,oBAAA,YAAY,EAAE,eAAe;AAC7B,oBAAA,UAAU,EAAE,aAAa;AACzB,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,IAAI,EAAE;AACJ,wBAAA,YAAY,EAAE,0BAA0B;AACxC,wBAAA,aAAa,EAAE,uBAAuB;AACtC,wBAAA,eAAe,EAAE,yBAAyB;AAC1C,wBAAA,aAAa,EAAE,uBAAuB;AACtC,wBAAA,cAAc,EAAE,oBAAoB;AACpC,wBAAA,gBAAgB,EAAE,sBAAsB;AACxC,wBAAA,MAAM,EAAE;AACT,qBAAA;AACD,oBAAA,QAAQ,EAAE;AACR,wBAAA,EAAE,EAAE,UAAU;AACd,wBAAA,GAAG,EAAE,aAAa;AAClB,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,QAAQ,EAAE,aAAa;AACvB,wBAAA,WAAW,EAAE,aAAa;AAC1B,wBAAA,SAAS,EAAE,aAAa;AACxB,wBAAA,QAAQ,EAAE,OAAO;AACjB,wBAAA,OAAO,EAAE,OAAO;AAChB,wBAAA,EAAE,EAAE,WAAW;AACf,wBAAA,EAAE,EAAE,WAAW;AACf,wBAAA,MAAM,EAAE,UAAU;AAClB,wBAAA,KAAK,EAAE;AACR;AACF,iBAAA;AACD,gBAAA,YAAY,EAAE;AACZ,oBAAA,YAAY,EAAE,iBAAiB;AAC/B,oBAAA,UAAU,EAAE,kBAAkB;AAC9B,oBAAA,OAAO,EAAE,2BAA2B;AACpC,oBAAA,OAAO,EAAE;AACP,wBAAA,MAAM,EAAE,UAAU;AAClB,wBAAA,KAAK,EAAE;AACR,qBAAA;AACD,oBAAA,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AACrE,oBAAA,MAAM,EAAE;AACN,wBAAA,CAAC,EAAE,OAAO;AACV,wBAAA,CAAC,EAAE,SAAS;AACZ,wBAAA,CAAC,EAAE,OAAO;AACV,wBAAA,CAAC,EAAE,OAAO;AACV,wBAAA,CAAC,EAAE,MAAM;AACT,wBAAA,CAAC,EAAE,OAAO;AACV,wBAAA,CAAC,EAAE,OAAO;AACV,wBAAA,CAAC,EAAE,QAAQ;AACX,wBAAA,CAAC,EAAE,YAAY;AACf,wBAAA,CAAC,EAAE,SAAS;AACZ,wBAAA,EAAE,EAAE,WAAW;AACf,wBAAA,EAAE,EAAE;AACL,qBAAA;AACD,oBAAA,eAAe,EAAE;AACf,wBAAA,MAAM,EAAE,eAAe;AACvB,wBAAA,YAAY,EAAE,iBAAiB;AAC/B,wBAAA,YAAY,EAAE,iBAAiB;AAC/B,wBAAA,YAAY,EAAE,iBAAiB;AAC/B,wBAAA,aAAa,EAAE,iBAAiB;AAChC,wBAAA,cAAc,EAAE,kBAAkB;AAClC,wBAAA,YAAY,EAAE,kBAAkB;AAChC,wBAAA,YAAY,EAAE,kBAAkB;AAChC,wBAAA,YAAY,EAAE,kBAAkB;AAChC,wBAAA,aAAa,EAAE,kBAAkB;AACjC,wBAAA,cAAc,EAAE;AACjB;AACF,iBAAA;AACD,gBAAA,EAAE,EAAE,GAAG;AACP,gBAAA,gBAAgB,EAAE;AAChB,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,MAAM,EAAE,WAAW;AACnB,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,cAAc,EAAE,UAAU;AAC1B,oBAAA,MAAM,EAAE,UAAU;AAClB,oBAAA,KAAK,EAAE,QAAQ;AACf,oBAAA,QAAQ,EAAE;AACX;AACF,aAAA;AACD,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,YAAY,EAAE,kBAAkB;AAChC,gBAAA,SAAS,EAAE,SAAS;AACpB,gBAAA,iBAAiB,EAAE,mCAAmC;AACtD,gBAAA,cAAc,EAAE,cAAc;AAC9B,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,KAAK,EAAE;AACL,oBAAA,KAAK,EAAE,aAAa;AACpB,oBAAA,IAAI,EAAE;AACJ,wBAAA,UAAU,EAAE,aAAa;AACzB,wBAAA,WAAW,EAAE,aAAa;AAC1B,wBAAA,YAAY,EAAE,mBAAmB;AACjC,wBAAA,aAAa,EAAE,mBAAmB;AAClC,wBAAA,UAAU,EAAE,cAAc;AAC1B,wBAAA,WAAW,EAAE;AACd,qBAAA;AACD,oBAAA,MAAM,EAAE;AACN,wBAAA,WAAW,EAAE,WAAW;AACxB,wBAAA,YAAY,EAAE,YAAY;AAC1B,wBAAA,IAAI,EAAE,kBAAkB;AACxB,wBAAA,GAAG,EAAE,YAAY;AACjB,wBAAA,KAAK,EAAE;AACR,qBAAA;AACD,oBAAA,GAAG,EAAE;AACH,wBAAA,YAAY,EAAE,8BAA8B;AAC5C,wBAAA,MAAM,EAAE,gBAAgB;AACxB,wBAAA,MAAM,EAAE,gBAAgB;AACxB,wBAAA,QAAQ,EAAE,kBAAkB;AAC5B,wBAAA,MAAM,EAAE,QAAQ;AAChB,wBAAA,KAAK,EAAE,iCAAiC;AACxC,wBAAA,gBAAgB,EAAE;AACnB;AACF,iBAAA;AACD,gBAAA,YAAY,EAAE;AACZ,oBAAA,GAAG,EAAE,QAAQ;AACb,oBAAA,UAAU,EAAE,YAAY;AACxB,oBAAA,MAAM,EAAE,eAAe;AACvB,oBAAA,KAAK,EAAE,eAAe;AACtB,oBAAA,MAAM,EAAE,eAAe;AACvB,oBAAA,kBAAkB,EAAE,kBAAkB;AACtC,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,OAAO,EAAE,SAAS;AAClB,oBAAA,YAAY,EAAE,MAAM;AACpB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,IAAI,EAAE;AACJ,wBAAA,YAAY,EAAE,mBAAmB;AACjC,wBAAA,aAAa,EAAE,oBAAoB;AACnC,wBAAA,eAAe,EAAE,qBAAqB;AACtC,wBAAA,aAAa,EAAE,qBAAqB;AACpC,wBAAA,cAAc,EAAE,sBAAsB;AACtC,wBAAA,gBAAgB,EAAE,uBAAuB;AACzC,wBAAA,MAAM,EAAE;AACT,qBAAA;AACD,oBAAA,QAAQ,EAAE;AACR,wBAAA,EAAE,EAAE,aAAa;AACjB,wBAAA,GAAG,EAAE,iBAAiB;AACtB,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,QAAQ,EAAE,kBAAkB;AAC5B,wBAAA,WAAW,EAAE,aAAa;AAC1B,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,QAAQ,EAAE,UAAU;AACpB,wBAAA,OAAO,EAAE,SAAS;AAClB,wBAAA,EAAE,EAAE,cAAc;AAClB,wBAAA,EAAE,EAAE,WAAW;AACf,wBAAA,MAAM,EAAE,QAAQ;AAChB,wBAAA,KAAK,EAAE;AACR;AACF,iBAAA;AACD,gBAAA,YAAY,EAAE;AACZ,oBAAA,YAAY,EAAE,YAAY;AAC1B,oBAAA,UAAU,EAAE,UAAU;AACtB,oBAAA,OAAO,EAAE,oBAAoB;AAC7B,oBAAA,OAAO,EAAE;AACP,wBAAA,MAAM,EAAE,QAAQ;AAChB,wBAAA,KAAK,EAAE;AACR,qBAAA;AACD,oBAAA,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AACrE,oBAAA,MAAM,EAAE;AACN,wBAAA,CAAC,EAAE,SAAS;AACZ,wBAAA,CAAC,EAAE,UAAU;AACb,wBAAA,CAAC,EAAE,OAAO;AACV,wBAAA,CAAC,EAAE,OAAO;AACV,wBAAA,CAAC,EAAE,KAAK;AACR,wBAAA,CAAC,EAAE,MAAM;AACT,wBAAA,CAAC,EAAE,MAAM;AACT,wBAAA,CAAC,EAAE,QAAQ;AACX,wBAAA,CAAC,EAAE,WAAW;AACd,wBAAA,CAAC,EAAE,SAAS;AACZ,wBAAA,EAAE,EAAE,UAAU;AACd,wBAAA,EAAE,EAAE;AACL,qBAAA;AACD,oBAAA,eAAe,EAAE;AACf,wBAAA,MAAM,EAAE,QAAQ;AAChB,wBAAA,YAAY,EAAE,cAAc;AAC5B,wBAAA,YAAY,EAAE,cAAc;AAC5B,wBAAA,YAAY,EAAE,cAAc;AAC5B,wBAAA,aAAa,EAAE,eAAe;AAC9B,wBAAA,cAAc,EAAE,gBAAgB;AAChC,wBAAA,YAAY,EAAE,cAAc;AAC5B,wBAAA,YAAY,EAAE,cAAc;AAC5B,wBAAA,YAAY,EAAE,cAAc;AAC5B,wBAAA,aAAa,EAAE,eAAe;AAC9B,wBAAA,cAAc,EAAE;AACjB;AACF,iBAAA;AACD,gBAAA,EAAE,EAAE,IAAI;AACR,gBAAA,gBAAgB,EAAE;AAChB,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,MAAM,EAAE,WAAW;AACnB,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,KAAK,EAAE,OAAO;AACd,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,cAAc,EAAE;AACjB;AACF;AACF,SAAA,CAAC;AAGA,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAClE,QAAA,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC3E,YAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;AACjC,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,mBAAmB,CAAC,KAAa,EAAA;AACvC,QAAA,IAAI;YACF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,cAAc;YAClD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACrC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;AAErC,YAAA,MAAM,OAAO,GAAG;AACd,gBAAA,GAAG,WAAW;gBACd,CAAC,MAAM,GAAG;oBACR,GAAG,WAAW,CAAC,MAAM,CAAC;AACtB,oBAAA,GAAG;AACJ;aACF;AAED,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QAC3B;QAAE,OAAO,CAAC,EAAE;;AAEV,YAAA,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAA,CAAE,CAAC;QACxE;IACF;AAEA,IAAA,GAAG,CAAC,GAAW,EAAA;QACb,OAAO,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CACnD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAI;AACnB,YAAA,MAAM,MAAM,GAAG,IAAI,IAAI,cAAc;AACrC,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI;AACnE,QAAA,CAAC,CAAC,EACF,oBAAoB,EAAE,CACvB;IACH;+GAzgBW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA,CAAA;;4FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACFM,MAAM,wBAAwB,GAAG,uBAAuB;SAE/C,qBAAqB,GAAA;AACnC,IAAA,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;QAC5E,OAAO,MAAM,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC,OAAO;IAC5D;AAEA,IAAA,OAAO,KAAK;AACd;AAEA,SAAS,cAAc,GAAA;IACrB,IAAI,qBAAqB,EAAE,EAAE;AAC3B,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,OAAO,MAAM;AACf;AAEA,SAAS,mBAAmB,CAC1B,OAAgB,EAChB,QAA8B,EAAA;AAE9B,IAAA,MAAM,MAAM,GAAG,cAAc,EAAE;IAC/B,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE;AAClD,IAAA,MAAM,GAAG,GAAG,QAAQ,IAAI,cAAc;IAEtC,IAAI,qBAAqB,EAAE,EAAE;AAC3B,QAAA,OAAO,GAAG,CAAC,UAAU,CAAC,KAAK;cACvB,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,kBAAkB;cAC7C,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,kBAAkB,EAAE;IACxD;AAEA,IAAA,MAAM,UAAU,GAAiD;QAC/D,UAAU,EAAE,MAAK;YACf,OAAO,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QACjD,CAAC;QACD,YAAY,EAAE,MAAK;YACjB,OAAO,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,kBAAkB,EAAE;QACxD,CAAC;QACD,WAAW,EAAE,MAAK;YAChB,OAAO,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;QAC/C,CAAC;QACD,aAAa,EAAE,MAAK;YAClB,OAAO,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QACpD,CAAC;QACD,eAAe,EAAE,MAAK;YACpB,OAAO,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,kBAAkB,EAAE;QAC3D,CAAC;QACD,cAAc,EAAE,MAAK;YACnB,OAAO,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;QAClD;KACD;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,cAAc,CAAC;IAE7D,OAAO,OAAO,EAAE;AAClB;AAEA,MAAM,kCAAkC,CAAA;IAGtC,WAAA,CACmB,OAAgB,EAChB,QAA8B,EAAA;QAD9B,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,QAAQ,GAAR,QAAQ;IACxB;AAEH,IAAA,MAAM,CAAC,UAAsB,EAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;IAC9B;IAEA,KAAK,GAAA;AACH,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU;QAElC,IAAI,CAAC,UAAU,EAAE;YACf;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC;AAC9D,QAAA,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;QACxB,KAAK,CAAC,KAAK,EAAE;IACf;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;IAC7B;AACD;AAEK,SAAU,kBAAkB,CAAC,OAAgB,EAAE,QAA8B,EAAA;IACjF,OAAO,OAAO,CAAC,MAAM,CAAC;AACpB,QAAA,WAAW,EAAE,KAAK;AAClB,QAAA,gBAAgB,EAAE,IAAI,kCAAkC,CAAC,OAAO,EAAE,QAAQ;AAC3E,KAAA,CAAC;AACJ;;ACzGA;;;;AAI6B;MA2BhB,sBAAsB,CAAA;AAejC,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI;IAC/B;AAEA,IAAA,WAAA,CAAoB,IAA6B,EAAA;QAA7B,IAAA,CAAA,IAAI,GAAJ,IAAI;AAfd,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAE;QAE/B,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;;AAe3D,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;IACnB;IAEA,KAAK,GAAA;QACH,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;IACjD;AAEA,IAAA,cAAc,CAAC,KAAqB,EAAA;QAClC,IAAI,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AAC5C,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5B;IACF;+GArCW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,MAAA,EAAA,cAAA,EAAA,KAAA,EAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/BnC,mIAMA,EAAA,MAAA,EAAA,CAAA,qvBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDaY,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAYf,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAdlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,OAAA,EACjB,CAAC,gBAAgB,CAAC,EAAA,IAAA,EAGrB;AACJ,wBAAA,aAAa,EAAE,gBAAgB;AAC/B,wBAAA,iBAAiB,EAAE,MAAM;AACzB,wBAAA,gBAAgB,EAAE,KAAK;AACvB,wBAAA,gBAAgB,EAAE,wBAAwB;AAC1C,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,MAAM,EAAE;AACT,qBAAA,EAAA,QAAA,EAAA,mIAAA,EAAA,MAAA,EAAA,CAAA,qvBAAA,CAAA,EAAA;;sBAGA;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;sBAMA;;;AE9CH;;;;AAI6B;;ACJ7B;;;;AAI6B;MA4BhB,sBAAsB,CAAA;AAiBjC,IAAA,WAAA,CACU,gBAAkC,EAClC,UAAsB,EACtB,MAAsB,EACJ,QAAkB,EAAA;QAHpC,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,MAAM,GAAN,MAAM;QACY,IAAA,CAAA,QAAQ,GAAR,QAAQ;QAhBI,IAAA,CAAA,OAAO,GAAG,IAAI;QAE9C,IAAA,CAAA,MAAM,GAAG,CAAC;;IAiBlB;IAEQ,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,gBAAiB,CAAC,QAAQ,CAAC,aAAa,EAAE;QAC/C,IAAI,CAAC,MAAM,GAAG;YACZ,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE;YAC/D,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,aAAa,CAAC,qBAAqB,EAAE;AACpF,YAAA,QAAQ,EAAE;AACR,gBAAA,KAAK,EACH,MAAM,CAAC,UAAU,IAAI,QAAQ,CAAC,eAAe,CAAC,WAAW,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW;AACxF,gBAAA,MAAM,EACJ,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,eAAe,CAAC,YAAY,IAAI,QAAQ,CAAC,IAAI,CAAC;AAChF;SACF;IACH;AAEA;;;;AAIG;AACK,IAAA,eAAe,CAAC,IAAiB,EAAA;QACvC,MAAM,OAAO,GAAG,IAAkD;AAElE,QAAA,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,UAAU,EAAE;YAC7C;QACF;AAEA,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC;AAEtC,QAAA,IAAI;YACF,OAAO,CAAC,WAAW,EAAE;QACvB;AAAE,QAAA,MAAM;;QAER;IACF;IAEQ,aAAa,GAAA;QACnB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,sBAAsB,CAAC;QACrF,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,aAA4B;QACxE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAE1B,QAAA,IAAI,IAAI,CAAC,WAAW,YAAY,WAAW,EAAE;YAC3C,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW;QAC5D;aAAO;YACL,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW;QACxD;QACA,IAAI,CAAC,SAAS,EAAE;AAEhB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC;IAC5C;AAEQ,IAAA,eAAe,CAAC,QAAkB,EAAA;QACxC,QAAQ,QAAQ;AACd,YAAA,KAAK,MAAM;gBACT,IAAI,CAAC,YAAY,EAAE;AACnB,gBAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;oBACxB,IAAI,CAAC,aAAa,EAAE;AACpB,oBAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;wBACxB,IAAI,CAAC,cAAc,EAAE;AACrB,wBAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;4BACxB,IAAI,CAAC,WAAW,EAAE;wBACpB;oBACF;gBACF;gBACA;AACF,YAAA,KAAK,OAAO;gBACV,IAAI,CAAC,aAAa,EAAE;AACpB,gBAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;oBACxB,IAAI,CAAC,YAAY,EAAE;AACnB,oBAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;wBACxB,IAAI,CAAC,cAAc,EAAE;AACrB,wBAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;4BACxB,IAAI,CAAC,WAAW,EAAE;wBACpB;oBACF;gBACF;gBACA;AACF,YAAA,KAAK,KAAK;gBACR,IAAI,CAAC,WAAW,EAAE;AAClB,gBAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;oBACxB,IAAI,CAAC,cAAc,EAAE;AACrB,oBAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;wBACxB,IAAI,CAAC,aAAa,EAAE;AACpB,wBAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;4BACxB,IAAI,CAAC,YAAY,EAAE;wBACrB;oBACF;gBACF;gBACA;AACF,YAAA,KAAK,QAAQ;gBACX,IAAI,CAAC,cAAc,EAAE;AACrB,gBAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;oBACxB,IAAI,CAAC,WAAW,EAAE;AAClB,oBAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;wBACxB,IAAI,CAAC,aAAa,EAAE;AACpB,wBAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;4BACxB,IAAI,CAAC,YAAY,EAAE;wBACrB;oBACF;gBACF;gBACA;YACF;;IAEJ;IAEQ,aAAa,GAAA;QACnB,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM;AAE/C,QAAA,QACE,aAAa,CAAC,IAAI,GAAG,CAAC;YACtB,aAAa,CAAC,GAAG,GAAG,CAAC;YACrB,aAAa,CAAC,IAAI,GAAG,aAAa,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK;YACzD,aAAa,CAAC,GAAG,GAAG,aAAa,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM;IAE9D;IAEQ,YAAY,GAAA;QAClB,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM;AAC/C,QAAA,IAAI,CAAC,gBAAiB,CAAC,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,GAAG,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM;AACxF,QAAA,IAAI,CAAC,gBAAiB,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;AACxE,QAAA,IAAI,CAAC,gBAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,kBAAkB;QAClF,IAAI,CAAC,SAAS,EAAE;IAClB;IAEQ,aAAa,GAAA;AACnB,QAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM;AAChC,QAAA,IAAI,CAAC,gBAAiB,CAAC,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM;AACnE,QAAA,IAAI,CAAC,gBAAiB,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;AACxE,QAAA,IAAI,CAAC,gBAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,kBAAkB;QAClF,IAAI,CAAC,SAAS,EAAE;IAClB;IAEQ,WAAW,GAAA;QACjB,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,MAAM;AAC/C,QAAA,IAAI,CAAC,gBAAiB,CAAC,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC;AACzE,QAAA,IAAI,CAAC,gBAAiB,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,GAAG,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AACvF,QAAA,IAAI,CAAC,gBAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,kBAAkB;QAClF,IAAI,CAAC,SAAS,EAAE;IAClB;IAEQ,cAAc,GAAA;AACpB,QAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM;AAChC,QAAA,IAAI,CAAC,gBAAiB,CAAC,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC;AACzE,QAAA,IAAI,CAAC,gBAAiB,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AACnE,QAAA,IAAI,CAAC,gBAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,kBAAkB;QAClF,IAAI,CAAC,SAAS,EAAE;IAClB;IAEA,IAAI,GAAA;QACF,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAC1C;QACF;QAEA,IAAI,CAAC,aAAa,EAAE;IACtB;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC1B;QACF;AACA,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,EAAE;AACtC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;AACzE,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;gBAC1B;YACF;YACA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAiB,CAAC,QAAQ,CAAC;AACvD,YAAA,IAAI,CAAC,gBAAiB,CAAC,OAAO,EAAE;AAChC,YAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS;YACjC,SAAS,CAAC,WAAW,EAAE;AACzB,QAAA,CAAC,CAAC;IACJ;IAIA,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,EAAE;IACb;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI;gBACF,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;YACxD;YAAE,OAAO,KAAc,EAAE;AACvB,gBAAA,IAAI,KAAK,KAAK,SAAS,EAAE;oBACvB;gBACF;YACF;AACA,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;AAC/B,YAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS;QACnC;IACF;AAxNW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,0GAqBvB,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AArBP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,gLAKb,gBAAgB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,eAAA,EAAA,YAAA,EAAA,eAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FALzB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBATlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,cAAc,EAAE,QAAQ;AACxB,wBAAA,cAAc,EAAE,QAAQ;AACxB,wBAAA,SAAS,EAAE;AACZ;AACF,iBAAA;;0BAsBI,MAAM;2BAAC,QAAQ;;sBApBjB,KAAK;uBAAC,eAAe;;sBAErB;;sBAEA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAiMrC,YAAY;uBAAC,eAAe;;sBAC5B,YAAY;uBAAC,eAAe;;;ACvO/B;;;;AAI6B;;ACJ7B;;;;AAI6B;MAyChB,4BAA4B,CAAA;AAwCvC,IAAA,WAAA,CAA+B,IAA6B,EAAA;QAA7B,IAAA,CAAA,IAAI,GAAJ,IAAI;AAvC1B,QAAA,IAAA,CAAA,OAAO,GAAwB,KAAK,CAAS,EAAE,8EAAC;QAEhD,IAAA,CAAA,QAAQ,GAAwB,KAAK,CAAiB,CAAC,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,CAAA,EAC9D,SAAS,EAAE,CAAC,KAAc,KAAY;AACpC,gBAAA,OAAO,aAAa,CAAC,KAAK,CAAC;AAC7B,YAAA,CAAC,GACD;AAEO,QAAA,IAAA,CAAA,EAAE,GAAwB,KAAK,CACtC,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,yEACpD;QAEQ,IAAA,CAAA,QAAQ,GAA2B,MAAM,EAAQ;QAEjD,IAAA,CAAA,OAAO,GAA6B,MAAM,EAAU;QAEpD,IAAA,CAAA,UAAU,GAA2B,MAAM,EAAQ;AAEzC,QAAA,IAAA,CAAA,IAAI,GAAoC,QAAQ,CACjE,MAAM,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,EACrD,EAAE,WAAW,EAAE,IAAI,EAAE,CACtB;AAEkB,QAAA,IAAA,CAAA,cAAc,GAAmB,QAAQ,CAAS,MAAa;YAChF,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,cAAc;AACrD,QAAA,CAAC,qFAAC;AAEiB,QAAA,IAAA,CAAA,YAAY,GAAmB,QAAQ,CAAS,MAAa;AAC9E,YAAA,OAAO,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AACvC,QAAA,CAAC,mFAAC;AAEiB,QAAA,IAAA,CAAA,MAAM,GAAoB,QAAQ,CAAU,MAAc;AAC3E,YAAA,OAAO,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,GAAG,GAAG;AAC7D,QAAA,CAAC,6EAAC;AAEiB,QAAA,IAAA,CAAA,UAAU,GAAoB,QAAQ,CAAU,MAAc;AAC/E,YAAA,OAAO,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG;AACnC,QAAA,CAAC,iFAAC;;IAIF;IAEU,YAAY,GAAA;QACpB,IAAI,CAAC,eAAe,EAAE;IACxB;IAEU,eAAe,GAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;QACpB,IAAI,CAAC,KAAK,EAAE;IACd;IAEU,iBAAiB,GAAA;AACzB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;IACxB;IAEA,KAAK,GAAA;QACH,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;IACjD;AAEU,IAAA,cAAc,CAAC,KAAqB,EAAA;QAC5C,IAAI,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;YAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QAC9B;IACF;+GAjEW,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,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,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,EAAA,SAAA,EAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7CzC,w9DA2DA,EAAA,MAAA,EAAA,CAAA,+lGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhCY,iBAAiB,wEAAE,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,iBAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAkBxC,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBApBxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,OAAA,EACxB,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,EAAA,aAAA,EAGrC,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,aAAa,EAAE,uBAAuB;AACtC,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,kBAAkB,EAAE,UAAU;AAC9B,wBAAA,oBAAoB,EAAE,QAAQ;AAC9B,wBAAA,kBAAkB,EAAE,UAAU;AAC9B,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,gBAAgB,EAAE,wBAAwB;AAC1C,wBAAA,kBAAkB,EAAE,gBAAgB;AACpC,wBAAA,QAAQ,EAAE;AACX,qBAAA,EAAA,QAAA,EAAA,w9DAAA,EAAA,MAAA,EAAA,CAAA,+lGAAA,CAAA,EAAA;;;AE3CH;;;;AAI6B;AACtB,MAAM,sBAAsB,GAAG;;ACLtC;;;;AAI6B;AAwB7B,MAAM,gBAAgB,GAAG,IAAI;AAE7B,MAAM,GAAG,GAAG,EAAE;AAEd,MAAM,cAAc,GAAG,CAAC;MA6BX,iCAAiC,CAAA;AAkC5C,IAAA,WAAA,GAAA;AAjCmB,QAAA,IAAA,CAAA,QAAQ,GAAwB,KAAK,CAAS,cAAc,+EAAC;AAEvE,QAAA,IAAA,CAAA,KAAK,GAAwC,MAAM,CAAsB,EAAE,4EAAC;AAE5E,QAAA,IAAA,CAAA,QAAQ,GAA4B,MAAM,CAAU,KAAK,+EAAC;AAE1D,QAAA,IAAA,CAAA,QAAQ,GAA4B,MAAM,CAAU,KAAK,+EAAC;AAEhD,QAAA,IAAA,CAAA,IAAI,GAAoC,QAAQ,CACjE,MAAM,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,EACrD,EAAE,WAAW,EAAE,IAAI,EAAE,CACtB;QAEkB,IAAA,CAAA,UAAU,GAAW,cAAc;QAErC,IAAA,CAAA,MAAM,GAAG,SAAS,CAAC,QAAQ,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,IAAI,GAAE,UAAuB,CAAA,EAAA,CAAG;AAE/D,QAAA,IAAA,CAAA,UAAU,GAA2B,MAAM,CAAS,CAAC,iFAAC;AAEtD,QAAA,IAAA,CAAA,QAAQ,GAAwC,MAAM,CAAsB,EAAE,+EAAC;AAE/E,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,GAAG,EAAkB;AAExC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,GAAG,EAAyC;AAE7D,QAAA,IAAA,CAAA,KAAK,GAAmB,QAAQ,CAAS,MAAa;AACrE,YAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM;AAC5B,QAAA,CAAC,4EAAC;QAIe,IAAA,CAAA,gBAAgB,GAAG,wBAAwB;QA+CzC,IAAA,CAAA,MAAM,GAAW,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,6BAA6B,CAAC;AAEzE,QAAA,IAAA,CAAA,QAAQ,GAAoB,QAAQ,CAAU,MAAc;AAC7E,YAAA,OAAO,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;AACzB,QAAA,CAAC,+EAAC;AAEiB,QAAA,IAAA,CAAA,aAAa,GAAoB,QAAQ,CAAU,MAAc;AAClF,YAAA,OAAO,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;AACzB,QAAA,CAAC,oFAAC;AAEiB,QAAA,IAAA,CAAA,WAAW,GAAoB,QAAQ,CAAU,MAAc;AAChF,YAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;AAC7C,QAAA,CAAC,kFAAC;AAEiB,QAAA,IAAA,CAAA,WAAW,GAAoB,QAAQ,CAAU,MAAc;AAChF,YAAA,OAAO,IAAI,CAAC,KAAK,EAAE,GAAG,cAAc;AACtC,QAAA,CAAC,kFAAC;AAEiB,QAAA,IAAA,CAAA,IAAI,GAA+B,QAAQ,CAAqB,MAAK;AACtF,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM;AAC1B,YAAA,MAAM,IAAI,GAAG,IAAI,GAAG,EAA4B;YAEhD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAuB,EAAE,KAAa,KAAU;gBAC7D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACvE,YAAA,CAAC,CAAC;YAEF,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,QAA2B,KAAsB;gBAC3E,QACE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI;AACvB,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC;AAC9C,oBAAA,OAAO,EAAE;AACV,iBAAA;AAEL,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,2EAAC;AAEiB,QAAA,IAAA,CAAA,UAAU,GAAmC,QAAQ,CACtE,MAA6B;AAC3B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;AAC9B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,cAAc,CAAC;AAEtD,YAAA,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;AACrB,gBAAA,OAAO,EAAE;YACX;AAEA,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW;kBAC3B,IAAI,GAAG,GAAG,IAAI,OAAO,GAAG,CAAC;AAC3B,kBAAE,IAAI,GAAG,OAAO,GAAG,GAAG,IAAI,OAAO,GAAG,CAAC,CAAC;YAExC,OAAO;gBACL,4BAA4B,EAAE,CAAA,EAAG,IAAI,CAAA,EAAA,CAAI;gBACzC,oCAAoC,EAAE,CAAA,EAAG,MAAM,CAAA,EAAA;aAChD;AACH,QAAA,CAAC,iFACF;AAEkB,QAAA,IAAA,CAAA,WAAW,GAAmB,QAAQ,CAAS,MAAa;AAC7E,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,YAAA,MAAM,IAAI,GAAG,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM;AAEtD,YAAA,OAAO,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,IAAI,EAAE;AAC3B,QAAA,CAAC,kFAAC;AAEiB,QAAA,IAAA,CAAA,WAAW,GAAmB,QAAQ,CAAS,MAAa;AAC7E,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACxB,YAAA,MAAM,IAAI,GAAG,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM;YAEtD,OAAO,CAAA,EAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE;AAC1C,QAAA,CAAC,kFAAC;AApHA,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAErC,QAAA,MAAM,CAAC,CAAC,SAAS,KAAU;AACzB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;YAEzB,IAAI,CAAC,GAAG,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE;gBACjD;YACF;AAEA,YAAA,MAAM,EAAE,GAAG,GAAG,CAAC,aAAa;AAC5B,YAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAW;gBAC7C,MAAM,MAAM,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC,MAAM;AAChD,gBAAA,IAAI,MAAM,GAAG,CAAC,EAAE;AACd,oBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC;gBAC7B;AACF,YAAA,CAAC,CAAC;AACF,YAAA,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACpB,SAAS,CAAC,MAAW;gBACnB,QAAQ,CAAC,UAAU,EAAE;AACvB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;AAC5E,YAAA,UAAU,CAAC,SAAS,CAAC,MAAW;gBAC9B,IAAI,CAAC,kBAAkB,EAAE;gBACzB,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,CAAC,CAAC;YACF;QACF;QAEA,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;AAEpC,QAAA,MAAM,QAAQ,GAAG,CAAC,KAA0B,KAAU;YACpD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;AAClC,QAAA,CAAC;AACD,QAAA,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC9C,QAAA,UAAU,CAAC,SAAS,CAAC,MAAW;AAC9B,YAAA,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC;YACjD,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,WAAW,EAAE;AACpB,QAAA,CAAC,CAAC;IACJ;IA4EQ,aAAa,GAAA;AACnB,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;AAC5E,YAAA,OAAO,KAAK;QACd;QACA,OAAO,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,OAAO;IACpD;IAEQ,WAAW,GAAA;QACjB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAoC,KAAU;YACrE,YAAY,CAAC,KAAK,CAAC;AACrB,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AACvB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;IAC3B;IAEQ,kBAAkB,GAAA;AACxB,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE;AACpC,YAAA,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;AAChC,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS;QAChC;IACF;IAEQ,oBAAoB,GAAA;QAC1B,IAAI,CAAC,kBAAkB,EAAE;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,MAAW;AACzC,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AACxB,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS;QAChC,CAAC,EAAE,gBAAgB,CAAC;IACtB;IAEU,IAAI,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;YACzB;QACF;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEU,aAAa,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;YACzB;QACF;QACA,IAAI,CAAC,IAAI,EAAE;IACb;IAEU,WAAW,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB;QACF;QACA,IAAI,CAAC,aAAa,EAAE;IACtB;IAEU,YAAY,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;YAClD;QACF;QACA,IAAI,CAAC,kBAAkB,EAAE;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1B;IAEU,cAAc,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;YACzB;QACF;AACA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACnB,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QAC1B;aAAO;YACL,IAAI,CAAC,IAAI,EAAE;QACb;IACF;AAEA,IAAA,GAAG,CAAC,IAAuB,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAyB,KAAyB;YACnE,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAoB,KAAc,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;AACpF,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAyB,KAAyB;YACtE,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAoB,KAAc,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;AACpF,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACvC,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QAC1B;IACF;IAEA,MAAM,CAAC,EAAU,EAAE,OAAgC,EAAA;QACjD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAyB,KAAyB;AACnE,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAoB,KAAuB;AAC1D,gBAAA,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,CAAC;AAC/C,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,MAAM,CAAC,EAAU,EAAA;AACf,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAoB,KAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AAE7E,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YAChB;QACF;AAEA,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;AAE5B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAyB,KAAyB;AACnE,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAoB,KAAa;AACnD,gBAAA,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE;AACpB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAyB,KAAyB;AACtE,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAoB,KAAuB;AAC1D,gBAAA,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,OAAO,GAAG,CAAC;AAClC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,EAAE,EACF,UAAU,CAAC,MAAW;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;AAClB,QAAA,CAAC,EAAE,sBAAsB,CAAC,CAC3B;AAED,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACxC,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QAC1B;IACF;AAEQ,IAAA,OAAO,CAAC,EAAU,EAAA;QACxB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAyB,KAAyB;AACtE,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAoB,KAAa;AACnD,gBAAA,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE;AACpB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;IAC5B;AAEQ,IAAA,SAAS,CAAC,EAAU,EAAA;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;AAErC,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,YAAY,CAAC,KAAK,CAAC;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B;AACA,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;IAC9B;AAEU,IAAA,WAAW,CAAC,IAAuB,EAAA;AAC3C,QAAA,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;IACpC;AAEU,IAAA,YAAY,CAAC,IAAuB,EAAA;AAC5C,QAAA,IAAI,CAAC,QAAQ,IAAI;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IACtB;AAEU,IAAA,cAAc,CAAC,IAAuB,EAAA;AAC9C,QAAA,IAAI,CAAC,UAAU,IAAI;IACrB;AAEU,IAAA,WAAW,CAAC,EAAU,EAAA;AAC9B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAoB,KAAa;AAC/D,YAAA,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE;AACpB,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACf;QACF;AAEA,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;IACzB;+GAtUW,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,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,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAgBU,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7ElE,y9EAqEA,mwKDjBY,4BAA4B,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,IAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAS3B,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAX7C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,EAAA,OAAA,EAC9B,CAAC,4BAA4B,CAAC,EAAA,aAAA,EAGxB,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,aAAa,EAAE;AAChB,qBAAA,EAAA,QAAA,EAAA,y9EAAA,EAAA,MAAA,EAAA,CAAA,2sKAAA,CAAA,EAAA;AAkBmC,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,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,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,QAAQ,OAAE,EAAE,IAAI,GAAE,UAAuB,CAAA,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AE7EjF;;;;AAI6B;MAyBhB,0BAA0B,CAAA;AAkBrC,IAAA,WAAA,GAAA;AAjBQ,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAEzB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAE3B,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,GAAG,EAG7B;AAEK,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,GAAG,EAAoC;AAE3D,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,GAAG,EAAiC;AAEvD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,GAAG,EAAyC;AAEhE,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,GAAG,EAAyC;AAGpE,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAErC,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE;AAC5E,YAAA,UAAU,CAAC,SAAS,CAAC,MAAW;gBAC9B,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,CAAC,CAAC;YACF;QACF;QAEA,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,wBAAwB,CAAC;QAC7D,MAAM,gBAAgB,GAAG,MAAW;YAClC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,KAAU;AAC1C,gBAAA,KAAK,CAAC,UAAU,CAAC,cAAc,EAAE;AACnC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC;AACD,QAAA,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AACtD,QAAA,UAAU,CAAC,SAAS,CAAC,MAAW;AAC9B,YAAA,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,CAAC;YACzD,IAAI,CAAC,QAAQ,EAAE;AACjB,QAAA,CAAC,CAAC;IACJ;IAEQ,QAAQ,GAAA;QACd,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,KAAU;YACzC,YAAY,CAAC,KAAK,CAAC;AACrB,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;QAE1B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,KAAU;YACvC,YAAY,CAAC,KAAK,CAAC;AACrB,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;QAExB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,KAAU;AAC1C,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAC5B,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;QAE1B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,KAAU;AACxC,YAAA,KAAK,CAAC,QAAQ,GAAG,IAAI;AACvB,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;QAEzB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,KAAU;AAC1C,YAAA,IAAI,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE;AAClC,gBAAA,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE;YAC3B;AACA,YAAA,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE;AAC5B,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;IAC7B;AAEQ,IAAA,WAAW,CAAC,QAA8B,EAAA;QAChD,OAAO,QAAQ,IAAI,cAAc;IACnC;AAEQ,IAAA,oBAAoB,CAAC,GAAW,EAAA;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;AAEzC,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,YAAY,CAAC,KAAK,CAAC;AACnB,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC;QAChC;IACF;IAEQ,eAAe,CAAC,GAAW,EAAE,aAAgD,EAAA;AACnF,QAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC;QAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,GAAG,EACH,UAAU,CAAC,MAAW;AACpB,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC;YAE9B,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;gBACtC;YACF;YAEA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;YAE1C,IAAI,CAAC,KAAK,EAAE;gBACV;YACF;AAEA,YAAA,IAAI,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE;AAClC,gBAAA,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE;YAC3B;AACA,YAAA,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE;AAC1B,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC;AACjC,QAAA,CAAC,EAAE,sBAAsB,CAAC,CAC3B;IACH;AAEQ,IAAA,wBAAwB,CAAC,QAA8B,EAAA;QAI7D,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;QAE7C,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC;AAC9B,YAAA,OAAO,QAAQ;QACjB;AAEA,QAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC;QAE9B,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC7D,QAAA,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,iCAAiC,CAAC;QACrE,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;AAC9C,QAAA,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC;AACtC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;AAE1D,QAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE;IACrC;AAEQ,IAAA,iBAAiB,CACvB,EAAU,EACV,MAA2B,EAC3B,eAA2B,EAAA;QAQ3B,OAAO;YACL,EAAE;AACF,YAAA,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;AAC7B,YAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;AAC9B,YAAA,QAAQ,EAAE,eAAe;YACzB,UAAU,EAAE,MAAM,CAAC;SACpB;IACH;AAEQ,IAAA,aAAa,CAAC,MAAgC,EAAA;AACpD,QAAA,IAAI,MAAM,CAAC,OAAO,EAAE;YAClB,MAAM,CAAC,OAAO,EAAE;AAChB,YAAA,MAAM,CAAC,OAAO,GAAG,SAAS;QAC5B;IACF;IAEQ,oBAAoB,CAC1B,QAAyC,EACzC,aAAgD,EAAA;QAEhD,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;YACtC;QACF;AACA,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IACjE;AAEQ,IAAA,aAAa,CACnB,aAAgD,EAChD,EAAU,EACV,QAAyC,EACzC,MAAgC,EAAA;AAEhC,QAAA,OAAO,MAAW;AAChB,YAAA,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAC1B,YAAA,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,aAAa,CAAC;AACpD,QAAA,CAAC;IACH;AAEQ,IAAA,yBAAyB,CAAC,MAA2B,EAAA;AAC3D,QAAA,OAAO,CAAC,MAAM,CAAC,QAAQ;IACzB;AAEQ,IAAA,kBAAkB,CAAC,EAAU,EAAA;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;AAEtC,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,YAAY,CAAC,KAAK,CAAC;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B;IACF;AAEQ,IAAA,aAAa,CAAC,EAAU,EAAE,QAAoB,EAAE,QAAiB,EAAA;AACvE,QAAA,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC,WAAW,CAAC,GAAG,CAClB,EAAE,EACF,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;AAC3B,YAAA,QAAQ,EAAE;AACZ,QAAA,CAAC,EAAE,QAAQ,IAAI,IAAI,CAAC,CACrB;IACH;AAEQ,IAAA,oBAAoB,CAC1B,EAAU,EACV,MAA2B,EAC3B,KAAiB,EAAA;QAEjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AAC9B,YAAA,OAAO,SAAS;QAClB;AAEA,QAAA,MAAM,cAAc,GAAG,MAAM,CAAC,QAA0B;AACxD,QAAA,MAAM,SAAS,GAAG,MAAM,CACtB,MAAK;AACH,YAAA,MAAM,KAAK,GAAG,cAAc,EAAE;AAC9B,YAAA,MAAM,UAAU,GAAG,KAAK,IAAI,GAAG;YAC/B,IAAI,UAAU,IAAI,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,EAAE;gBACxD,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC;YAChD;AACF,QAAA,CAAC,iFACC,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAC1B;AAED,QAAA,OAAO,MAAW;YAChB,SAAS,CAAC,OAAO,EAAE;AACnB,YAAA,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;AAC7B,QAAA,CAAC;IACH;AAEQ,IAAA,uBAAuB,CAC7B,EAAU,EACV,MAA2B,EAC3B,KAAiB,EAAA;QAEjB,MAAM,gBAAgB,GAAG,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;AAC5D,QAAA,MAAM,UAAU,GAAI,MAAM,CAAC,QAAmB,IAAI,GAAG;QAErD,IAAI,gBAAgB,IAAI,UAAU,IAAI,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,EAAE;YAC5E,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC;QAChD;IACF;AAEQ,IAAA,eAAe,CAAC,EAAU,EAAA;QAChC,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,GAAG,EAAE;YACX,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC;QACpC;AACA,QAAA,OAAO,MAAM;IACf;AAEQ,IAAA,cAAc,CAAC,EAAU,EAAA;QAC/B,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QAErC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,KAAK,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE;YAC3B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC;QAClC;AAEA,QAAA,OAAO,KAAK;IACd;AAEQ,IAAA,sBAAsB,CAAC,EAAU,EAAA;AACvC,QAAA,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAE3B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QACvC,IAAI,KAAK,EAAE;AACT,YAAA,KAAK,CAAC,QAAQ,GAAG,IAAI;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B;IACF;AAEQ,IAAA,eAAe,CAAC,EAAU,EAAA;QAMhC,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,EAAE;AACnD,YAAA,MAAM,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC,QAAQ;YACjD,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;YAClE,IAAI,KAAK,EAAE;AACT,gBAAA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE;YACpC;QACF;AACA,QAAA,OAAO,SAAS;IAClB;IAEQ,mBAAmB,CACzB,QAAgB,EAChB,aAAgD,EAAA;QAEhD,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;YACtC;QACF;AACA,QAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,aAAa,CAAC;IAC/C;AAEQ,IAAA,UAAU,CAAC,EAAU,EAAA;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC,KAAK,EAAE;YACV;QACF;QACA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAC1B,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B;AACA,QAAA,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC;IAC/D;AAEA,IAAA,IAAI,CAAC,MAA2B,EAAA;AAC9B,QAAA,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,QAAQ,CAAC;AACvE,QAAA,MAAM,aAAa,GAAG,YAAY,CAAC,QAAQ;AAC3C,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC;cACpB,aAAa,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE;cAC1D,SAAS;QAEb,MAAM,EAAE,GAAG,QAAQ,GAAG,QAAQ,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;AAC7C,QAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;AAChC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC;QAErF,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;QAErC,MAAM,eAAe,GAAG,MAAW;AACjC,YAAA,QAAQ,EAAE;AACV,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;AAC7B,YAAA,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC;AAC/B,YAAA,MAAM,CAAC,QAAQ,IAAI;AACrB,QAAA,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAW;AAClC,YAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;gBAClB;YACF;AACA,YAAA,QAAQ,EAAE;AACV,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;AAC7B,YAAA,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC;AACjC,QAAA,CAAC;QAED,IAAI,QAAQ,EAAE;AACZ,YAAA,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;AAChC,gBAAA,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO;AAC3C,gBAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC;AACvC,aAAA,CAAC;YACF,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC;YAC7E,IAAI,OAAO,EAAE;AACX,gBAAA,OAAO,CAAC,QAAQ,GAAG,eAAe;YACpC;QACF;aAAO;AACL,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,eAAe,CAAC;AAChE,YAAA,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;QACzB;AAEA,QAAA,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,CAAC;QAC9E,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,CAAC;QAE1D,OAAO;YACL,EAAE;YACF,KAAK,EAAE,MAAW;AAChB,gBAAA,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAChB,CAAC;AACD,YAAA,MAAM,EAAE,CAAC,OAAgC,KAAU;AACjD,gBAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;oBAClB;gBACF;gBACA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;gBACrC,IAAI,CAAC,IAAI,EAAE;oBACT;gBACF;gBACA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC;YACxC;SACD;IACH;AAEA,IAAA,KAAK,CAAC,EAAU,EAAA;AACd,QAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;IACrB;IAEA,MAAM,CAAC,EAAU,EAAE,OAAgC,EAAA;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC,KAAK,EAAE;YACV;QACF;QACA,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC;IACzC;IAEA,QAAQ,GAAA;QACN,MAAM,GAAG,GAAa,EAAE;QACxB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,KAAU;AAC1C,YAAA,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAU;AACzD,gBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACnB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,KAAU;AACvB,YAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;AACrB,QAAA,CAAC,CAAC;IACJ;+GArZW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cAFzB,MAAM,EAAA,CAAA,CAAA;;4FAEP,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;AC5BD;;;;AAI6B;MAMhB,oBAAoB,CAAA;AAHjC,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAsB,IAAI,GAAG,EAAE,gFAAC;AAa3D,IAAA;AAXC,IAAA,WAAW,CAAC,EAAU,EAAA;QACpB,OAAO,QAAQ,CAAC,MAAK;YACnB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;AACjC,QAAA,CAAC,CAAC;IACJ;IAEA,cAAc,CAAC,EAAU,EAAE,IAAY,EAAA;QACrC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,KAAI;AAC9B,YAAA,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC;AACrC,QAAA,CAAC,CAAC;IACJ;+GAbW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA,CAAA;;4FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACTD;;;;AAI6B;MA4BhB,qBAAqB,CAAA;AAyBhC,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI;IAC/B;AAEA,IAAA,WAAA,GAAA;QA/BS,IAAA,CAAA,KAAK,GAAsB,SAAS;QAEpC,IAAA,CAAA,IAAI,GAAe,IAAI;QAEvB,IAAA,CAAA,IAAI,GAAqB,SAAS;QAIlC,IAAA,CAAA,UAAU,GAAkC,QAAQ;QAEpD,IAAA,CAAA,SAAS,GAAkB,IAAI;QAE/B,IAAA,CAAA,YAAY,GAAmB,IAAI;QAEnC,IAAA,CAAA,YAAY,GAAkB,IAAI;AAE1B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAEtC,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;;AAe1D,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;IACnB;AAGA,IAAA,OAAO,CAAC,KAAiB,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,KAAK,CAAC,eAAe,EAAE;YACvB,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,wBAAwB,EAAE;QAClC;IACF;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa;IACtC;+GAlDW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChClC,yoBAqBA,EAAA,MAAA,EAAA,CAAA,6nJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDDY,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAYhB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAdjC,SAAS;oCACO,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAC5B,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAClB,eAAe,EAAA,UAAA,EACb,IAAI,EAAA,IAAA,EAGV;AACJ,wBAAA,aAAa,EAAE,eAAe;AAC9B,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,iBAAiB,EAAE;AACpB,qBAAA,EAAA,QAAA,EAAA,yoBAAA,EAAA,MAAA,EAAA,CAAA,6nJAAA,CAAA,EAAA;;sBAGA;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;sBAQA;;sBAcA,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;AEvEnC;;;;AAI6B;;ACJ7B;;;;AAI6B;MA8BhB,oBAAoB,CAAA;AAqB/B,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI;IAC/B;AAEA,IAAA,IACW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,IAAI;IAClB;AAEA,IAAA,WAAA,CAAoB,IAA6B,EAAA;QAA7B,IAAA,CAAA,IAAI,GAAJ,IAAI;QAhCf,IAAA,CAAA,IAAI,GAAuB,cAAc;QAEzC,IAAA,CAAA,IAAI,GAAoB,SAAS;QAEF,IAAA,CAAA,UAAU,GAAY,KAAK;AAMzD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAU;AAE1C,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAU;QAEpC,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;;AAoBzD,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;IACnB;IAEA,KAAK,GAAA;QACH,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;IACjD;AAEA,IAAA,cAAc,CAAC,KAAqB,EAAA;QAClC,IAAI,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;YAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B;IACF;+GAhDW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,mJAOX,gBAAgB,CAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,OAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzCtC,07BAiCA,EAAA,MAAA,EAAA,CAAA,83EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDVY,qBAAqB,qLAAE,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAWvC,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAbhC,SAAS;+BACE,cAAc,EAAA,OAAA,EACf,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,EAAA,aAAA,EAGpC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,aAAa,EAAE,cAAc;AAC7B,wBAAA,gBAAgB,EAAE,wBAAwB;AAC1C,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,MAAM,EAAE;AACT,qBAAA,EAAA,QAAA,EAAA,07BAAA,EAAA,MAAA,EAAA,CAAA,83EAAA,CAAA,EAAA;;sBAGA;;sBAEA;;sBAEA;;sBAEA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAErC;;sBAEA;;sBAEA;;sBAEA;;sBAMA;;sBASA,WAAW;uBAAC,OAAO;;;AEhEtB;;;;AAI6B;AAU7B,MAAM,aAAa,GAAG,GAAG;MAcZ,kBAAkB,CAAA;AAO7B,IAAA,WAAA,GAAA;AANQ,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAIzB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,GAAG,EAAe;AAG3C,QAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAW;YACtC,IAAI,CAAC,QAAQ,EAAE;AACjB,QAAA,CAAC,CAAC;IACJ;IAEQ,QAAQ,GAAA;AACd,QAAA,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,KAAkB,KAAU;AAC9D,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AACrB,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;AACzB,QAAA,IAAI,CAAC,OAAO,GAAG,SAAS;IAC1B;AAEQ,IAAA,OAAO,CAAC,KAAkB,EAAA;AAChC,QAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;YAClB;QACF;AACA,QAAA,KAAK,CAAC,QAAQ,GAAG,IAAI;AAErB,QAAA,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS,EAAE;AACtC,YAAA,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC;AAClC,YAAA,KAAK,CAAC,cAAc,GAAG,SAAS;QAClC;AAEA,QAAA,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE;AACpC,YAAA,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC;AAChC,YAAA,KAAK,CAAC,YAAY,GAAG,SAAS;QAChC;QAEA,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,YAA0B,KAAU;YAC/D,YAAY,CAAC,WAAW,EAAE;AAC5B,QAAA,CAAC,CAAC;AACF,QAAA,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;AAE9B,QAAA,IAAI,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE;AAClC,YAAA,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE;QAC3B;AACA,QAAA,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE;AAE1B,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC;AAE/B,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE;AAC1B,YAAA,IAAI,CAAC,OAAO,GAAG,SAAS;QAC1B;IACF;AAEQ,IAAA,YAAY,CAAC,KAAkB,EAAA;AACrC,QAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;YAClB;QACF;AAEA,QAAA,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE;AAEnC,QAAA,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE;YACpC;QACF;AAEA,QAAA,KAAK,CAAC,YAAY,GAAG,UAAU,CAAC,MAAW;AACzC,YAAA,KAAK,CAAC,YAAY,GAAG,SAAS;AAC9B,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,CAAC,EAAE,aAAa,CAAC;IACnB;IAEQ,0BAA0B,GAAA;AAChC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;QACjC;IACF;IAEQ,sBAAsB,CAC5B,YAAgD,EAChD,WAAwB,EAAA;QAExB,YAAY,CAAC,QAAQ,CAAC,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC;QAC7C,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,IAAI,SAAS;QAC1D,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI;QAC7C,YAAY,CAAC,QAAQ,CAAC,UAAU,GAAG,WAAW,CAAC,UAAU,IAAI,KAAK;QAClE,YAAY,CAAC,QAAQ,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO;QACnD,YAAY,CAAC,QAAQ,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW;QAC3D,YAAY,CAAC,QAAQ,CAAC,UAAU,GAAG,WAAW,CAAC,UAAU;IAC3D;IAEQ,eAAe,CAAC,KAAkB,EAAE,WAAwB,EAAA;AAClE,QAAA,KAAK,CAAC,aAAa,CAAC,IAAI,CACtB,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,MAAW;AAC7D,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;gBACvB;YACF;YACA,WAAW,CAAC,MAAM,EAAE;AACpB,YAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC;QAC7C,CAAC,CAAC,CACH;IACH;IAEQ,kBAAkB,CAAC,KAAkB,EAAE,WAAwB,EAAA;AACrE,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,aAAa,IAAI,IAAI;QACrD,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAC1B;IACF;AAEQ,IAAA,gBAAgB,CAAC,KAAkB,EAAA;AACzC,QAAA,KAAK,CAAC,aAAa,CAAC,IAAI,CACtB,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,MAAW;AACvD,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,CAAC,CAAC,CACH;IACH;IAEQ,sBAAsB,CAAC,KAAkB,EAAE,WAAwB,EAAA;AACzE,QAAA,IAAI,WAAW,CAAC,QAAQ,EAAE;YACxB;QACF;AACA,QAAA,KAAK,CAAC,cAAc,GAAG,UAAU,CAAC,MAAW;AAC3C,YAAA,KAAK,CAAC,cAAc,GAAG,SAAS;AAChC,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AAC1B,QAAA,CAAC,EAAE,WAAW,CAAC,QAAQ,IAAI,IAAI,CAAC;IAClC;AAEA,IAAA,IAAI,CAAC,WAAwB,EAAA;QAC3B,IAAI,CAAC,0BAA0B,EAAE;AAEjC,QAAA,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC;AACzE,QAAA,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,oBAAoB,CAAC;QACxD,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;AAC9C,QAAA,MAAM,KAAK,GAAgB;YACzB,UAAU;YACV,YAAY;AACZ,YAAA,aAAa,EAAE,EAAE;AACjB,YAAA,QAAQ,EAAE;SACX;AAED,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AAEpB,QAAA,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,WAAW,CAAC;AACtD,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC;AACxC,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,WAAW,CAAC;QAE/C,OAAO,YAAY,CAAC,QAAQ;IAC9B;+GArJW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA;;4FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;AC3BD;;;;AAI6B;;ACJ7B;;;;AAI6B;MAMP,sBAAsB,CAAA;+GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAD3C;;;ACTD;;;;AAI6B;MAQhB,sBAAsB,CAAA;AAiBjC,IAAA,WAAA,CAAoB,EAA2B,EAAA;QAA3B,IAAA,CAAA,EAAE,GAAF,EAAE;QAhBd,IAAA,CAAA,YAAY,GAAG,cAAc;QAE5B,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC;AAE7E,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,QAAQ,kFAAU;AAE/B,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACpC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;AAEjC,YAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE;gBACzD,OAAO,IAAI,CAAC,YAAY;YAC1B;AAEA,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,QAAA,CAAC,oFAAC;QAGA,MAAM,CAAC,YAAW;YAChB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;YACtD,IAAI,CAAC,YAAY,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC;AAC/D,QAAA,CAAC,CAAC;IACJ;+GAtBW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,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,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;ACXD;;;;AAI6B;MAMhB,oBAAoB,CAAA;+GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;ACTD;;;;AAI6B;MAMhB,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;ACTD;;;;AAI6B;MAMhB,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;ACTD;;;;AAI6B;MAMhB,oBAAoB,CAAA;+GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;ACTD;;;;AAI6B;MAMhB,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;ACTD;;;;AAI6B;MAShB,qBAAqB,CAAA;AANlC,IAAA,WAAA,GAAA;QAYE,IAAA,CAAA,SAAS,GAAG,KAAK;QAEjB,IAAA,CAAA,MAAM,GAAoB,IAAI;AAW/B,IAAA;IAlBC,IACI,UAAU,CAAC,KAAS,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;IACvB;AAOA,IAAA,OAAO,CAAC,KAAmB,EAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;QACzB;aAAO;AACL,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACpB;IACF;+GAlBW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,CAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,IAAI,EAAE;AACJ,wBAAA,oBAAoB,EAAE;AACvB;AACF,iBAAA;;sBAEE,KAAK;uBAAC,WAAW;;sBASjB,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;ACvBnC;;;;AAI6B;AACvB,SAAU,iBAAiB,CAAC,IAAY,EAAA;AAC5C,IAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,KAAK;AAE9B,IAAA,MAAM,MAAM,GAAG;AACb,QAAA,GAAG,EAAE,IAAI;AACT,QAAA,GAAG,EAAE,GAAG;AACR,QAAA,GAAG,EAAE,GAAG;AACR,QAAA,GAAG,EAAE;KACN,CAAC,QAAQ,CAAC;AAEX,IAAA,OAAO,MAAM;AACf;;AChBA;;;;AAI6B;MAwDhB,wBAAwB,CAAA;AACnC,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI;IAC/B;AA4EA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,iBAAiB,EAAG;IAClC;AAEA,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ;IACtB;AAWA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,OAAO,KAAK;QACd;QACA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,IAAI,KAAK;QACxD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,IAAI,KAAK;QACxD,QACE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB;IAE/F;AAYA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU;IACzD;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,KAAK;IACvC;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,KAAK;IACtC;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,KAAK;IACtC;AAMA,IAAA,WAAA,GAAA;QA9HS,IAAA,CAAA,IAAI,GAAe,IAAI;QAEvB,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,KAAK,qFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEtE,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAU,KAAK,kFAAC;QAEnC,IAAA,CAAA,mBAAmB,GAAG,MAAM,EAAW;QAEtB,IAAA,CAAA,iBAAiB,GAAG,YAAY,CAAC,sBAAsB,yFAAI,WAAW,EAAE,IAAI,EAAA,CAAG;QAE/E,IAAA,CAAA,aAAa,GAAG,YAAY,CAAC,sBAAsB,qFAAI,WAAW,EAAE,IAAI,EAAA,CAAG;QAE3E,IAAA,CAAA,cAAc,GAAG,eAAe,CAAC,oBAAoB,sFAAI,WAAW,EAAE,IAAI,EAAA,CAAG;QAE7E,IAAA,CAAA,eAAe,GAAG,eAAe,CAAC,qBAAqB,uFAAI,WAAW,EAAE,IAAI,EAAA,CAAG;QAE/E,IAAA,CAAA,eAAe,GAAG,eAAe,CAAC,qBAAqB,uFAAI,WAAW,EAAE,IAAI,EAAA,CAAG;QAE/E,IAAA,CAAA,eAAe,GAAG,eAAe,CAAC,qBAAqB,uFAAI,WAAW,EAAE,IAAI,EAAA,CAAG;QAE/E,IAAA,CAAA,aAAa,GAAG,eAAe,CAAC,mBAAmB,qFAAI,WAAW,EAAE,IAAI,EAAA,CAAG;QAE3E,IAAA,CAAA,cAAc,GAAG,eAAe,CAAC,oBAAoB,sFAAI,WAAW,EAAE,IAAI,EAAA,CAAG;AAEvF,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAErB,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAE9C,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;QAElC,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,eAAe,CAAC;QAE1D,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;AAIxD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;QAEhC,IAAA,CAAA,UAAU,GAAmB,IAAI;QAEjC,IAAA,CAAA,gBAAgB,GAAkC,IAAI;QAMrD,IAAA,CAAA,cAAc,GAAG,iBAAiB,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAEjE,IAAA,CAAA,aAAa,GAAG,GAAG;AAEnB,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,+EAAC;AAE3D,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,gFAAC;AAE7D,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,gFAAC;AAE7D,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,gFAAC;AAE7D,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,GAAG,CAAC,8EAAC;AAEzD,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,+EAAC;AAE3D,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,iFAAC;AAEhE,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAClC,YAAA,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnE,QAAA,CAAC,iFAAC;AAUF,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACzB,YAAA,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;AACxB,YAAA,QACE,OAAO,EAAE,IAAI,KAAK,YAAY;gBAC9B,OAAO,EAAE,IAAI,KAAK,cAAc;AAChC,gBAAA,IAAI,CAAC,mBAAmB,EAAE;AAE9B,QAAA,CAAC,iFAAC;AAaF,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;YACxB,QACE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK;AACxC,gBAAA,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;AACtB,gBAAA,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO;iBACpB,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC;AACtC,gBAAA,CAAC,IAAI,CAAC,WAAW,EAAE;AAEvB,QAAA,CAAC,gFAAC;QAkBF,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAU,IAAI,CAAC,WAAW,EAAE,0FAAC;QAEhD,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;;AAInE,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;QAEjB,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAChC,YAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC;AACrC,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;YACxC,IAAI,CAAC,MAAM,EAAE;gBACX;YACF;AAEA,YAAA,MAAM,CAAC,MAAM,GAAG,CAAC,KAAY,KAAI;gBAC/B,KAAK,CAAC,cAAc,EAAE;gBACtB,KAAK,CAAC,eAAe,EAAE;AACzB,YAAA,CAAC;AACH,QAAA,CAAC,CAAC;IACJ;IAEQ,gBAAgB,GAAA;QACtB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAC5C,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QACxB;AAAO,aAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,EAAE;AACjF,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;QACzB;IACF;IAEQ,sBAAsB,GAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,MAAM,KAAK,CAAC,sDAAsD,CAAC;QACrE;IACF;IAEQ,iBAAiB,GAAA;AACvB,QAAA,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;AAExB,QAAA,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE;QACjC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;YACvD,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AACxC,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE;QAEjC,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,YAAY,EAAE;AACvD,YAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC;AACpC,iBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;iBACzC,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AACxC,YAAA,CAAC,CAAC;QACN;IACF;IAEQ,cAAc,GAAA;AACpB,QAAA,MAAM,KAAK,GAAQ,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;AAC3D,QAAA,IAAI,KAAK,CAAC,UAAU,EAAE;YACpB,KAAK,CAAC,UAAU,EAAE;QACpB;aAAO;YACL,KAAK,CAAC,KAAK,EAAE;QACf;IACF;IAEA,kBAAkB,GAAA;QAChB,IAAI,CAAC,sBAAsB,EAAE;QAE7B,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;AAC/C,YAAA,MAAM,IAAI,KAAK,CACb,+FAA+F,CAChG;QACH;IACF;IAEA,qBAAqB,GAAA;QACnB,IAAI,CAAC,sBAAsB,EAAE;QAE7B,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,gBAAgB,EAAE;YAC1C,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO;QACtC;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE;AACjC,QAAA,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE;IACnC;IAEA,iBAAiB,GAAA;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO;AAC/C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU;QACjC,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,GAAG,CAAC;QAEvD,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;QAC/C,MAAM,yBAAyB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB;QAChE,MAAM,SAAS,GAAG,OAAO;QACzB,MAAM,SAAS,GAAG,OAAO;AACzB,QAAA,MAAM,YAAY,GAAG,CAAC,SAAS;QAE/B,IACE,CAAC,IAAI,CAAC,WAAW;YACjB,gBAAgB;YAChB,SAAS;YACT,SAAS;YACT,YAAY;AACZ,YAAA,yBAAyB,EACzB;AACA,YAAA,OAAO,OAAO;QAChB;QAEA,IAAI,eAAe,EAAE;AACnB,YAAA,OAAO,MAAM;QACf;AAEA,QAAA,OAAO,EAAE;IACX;IAEA,UAAU,GAAA;QACR,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE;YAC5C,OAAO,IAAI,CAAC,cAAc;QAC5B;QACA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,EAAE;YAC1C,OAAO,IAAI,CAAC,aAAa;QAC3B;AAEA,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,OAAO,CAAC,KAAiB,EAAA;QACvB,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE;AAChD,QAAA,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI;IAC3B;AAEA,IAAA,cAAc,CAAC,KAAiB,EAAA;QAC9B,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;YAChC,IAAI,CAAC,cAAc,EAAE;QACvB;IACF;AAEA,IAAA,mBAAmB,CAAC,KAAiB,EAAA;QACnC,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;QACpC,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC;QACtC,CAAC,EAAE,CAAC,CAAC;IACP;+GAxSW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAxB,wBAAwB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAUf,gBAAgB,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAGhB,gBAAgB,g3BAWc,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAE1B,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAElB,oBAAoB,qFAEnB,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAErB,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAErB,qBAAqB,mFAEvB,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAElB,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClGxE,8yEAoEA,EAAA,MAAA,EAAA,CAAA,+vHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDRa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAnBpC,SAAS;AACO,YAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B,mBAAmB,EAAA,QAAA,EACnB,iBAAiB,EAAA,IAAA,EAGrB;AACJ,wBAAA,KAAK,EAAE,iBAAiB;AACxB,wBAAA,uBAAuB,EAAE,kBAAkB;AAC3C,wBAAA,iCAAiC,EAAE,iBAAiB;AACpD,wBAAA,iCAAiC,EAAE,aAAa;AAChD,wBAAA,oCAAoC,EAAE,cAAc;AACpD,wBAAA,yBAAyB,EAAE,iBAAiB;AAC5C,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,SAAS,EAAE;AACZ,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,8yEAAA,EAAA,MAAA,EAAA,CAAA,+vHAAA,CAAA,EAAA;;sBAGhB;;sBASA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC;AAQiD,aAAA,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,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,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,sBAAsB,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAEjD,sBAAsB,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAEzC,oBAAoB,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAE1C,qBAAqB,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAE5C,qBAAqB,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAE5C,qBAAqB,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAE9C,mBAAmB,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAEzC,oBAAoB,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AElG/F;;;;AAI6B;MAWhB,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,iBAHjB,wBAAwB,CAAA,EAAA,OAAA,EAAA,CAD7B,YAAY,EAAE,iBAAiB,aAE/B,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAEvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAJtB,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAIX,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,iBAAiB,CAAC;oBAC1C,YAAY,EAAE,CAAC,wBAAwB,CAAC;oBACxC,OAAO,EAAE,CAAC,wBAAwB;AACnC,iBAAA;;;ACdD;;;;AAI6B;;ACJ7B;;;;AAI6B;MA0ChB,qBAAqB,CAAA;AAahC,IAAA,IAAc,WAAW,GAAA;AACvB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AAExB,QAAA,OAAO,IAAI,GAAG,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,CAAA,EAAI,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI;IAClD;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,WAAW,IAAI,EAAE,EAAE,IAAI,EAAE;IAChE;AAgBQ,IAAA,YAAY,CAAC,KAAiC,EAAA;AACpD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,KAAK,CAAC,eAAe,EAAE;YACvB,KAAK,CAAC,cAAc,EAAE;QACxB;aAAO;AACL,YAAA,IAAI,CAAC,MAAM,IAAI;QACjB;IACF;AAEA,IAAA,WAAA,GAAA;AA7CiB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAIzC,IAAA,CAAA,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAO;QAEW,IAAA,CAAA,QAAQ,GAAG,KAAK;QAE/C,IAAA,CAAA,IAAI,GAAG,QAAQ;AAEf,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAyB,SAAS,2EAAC;AAYxD,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,+EAAC;QAEhC,IAAA,CAAA,QAAQ,GAAG,CAAC;AAIZ,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACzB,YAAA,OAAO,IAAI,CAAC,cAAc,EAAE;AAC9B,QAAA,CAAC,iFAAC;QAEO,IAAA,CAAA,EAAE,GAAW,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC;AAEpD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,KAAK,qFAAC;QAYpC,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC1C,QAAA,CAAC,CAAC;IACJ;AAGA,IAAA,OAAO,CAAC,KAAiB,EAAA;AACvB,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IAC1B;AAGA,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK;QAErB,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,GAAG,EAAE;AAClC,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAC1B;IACF;AAEA,IAAA,QAAQ,CAAC,MAAe,EAAA;AACtB,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC;IACjC;+GApEW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAOZ,gBAAgB,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,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,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,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,cAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,OAAA,EAAA,aAAA,EAAA,EAAA,cAAA,EAAA,aAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA3B1B,CAAA;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kgGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EARS,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAqBhB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAxBjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,cACb,IAAI,EAAA,OAAA,EACP,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAClB,CAAA;;;;;;;GAOT,EAAA,aAAA,EAEc,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,aAAa,EAAE,eAAe;AAC9B,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,KAAK,EAAE,aAAa;AACpB,wBAAA,8BAA8B,EAAE,UAAU;AAC1C,wBAAA,8BAA8B,EAAE,cAAc;AAC9C,wBAAA,iBAAiB,EAAE,0BAA0B;AAC7C,wBAAA,SAAS,EAAE;AACZ,qBAAA,EAAA,MAAA,EAAA,CAAA,kgGAAA,CAAA,EAAA;;sBAKA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAIrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAErC;;sBA2CA,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;sBAKhC,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;ACvGrC;;;;AAI6B;;ACJ7B;;;;AAI6B;MA+IhB,2BAA2B,CAAA;AAatC,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE;AACtD,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ;QAChC;QACA,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AAEtB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;AAIA,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK;IAC9F;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;IAIA,IACI,KAAK,CAAC,KAAU,EAAA;QAClB,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,KAAK,KAAK,SAAS,EAAE;AAChD,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;AAEnB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACrB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACxB;IACF;AAEA,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;IACpB;IAIA,WAAA,CACqB,SAAmC,EAC9C,iBAAoC,EAAA;QADzB,IAAA,CAAA,SAAS,GAAT,SAAS;QACpB,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QAzDlB,IAAA,CAAA,QAAQ,GAAG,GAAG;QAEd,IAAA,CAAA,QAAQ,GAAG,CAAC;AAIX,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAE;QAmBvC,IAAA,CAAA,SAAS,GAAY,KAAK;QA4B1B,IAAA,CAAA,MAAM,GAAkB,IAAI;AAW5B,QAAA,IAAA,CAAA,SAAS,GAAqB,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAE;AAE/D,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAEzC,IAAA,CAAA,EAAE,GAAW,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,sBAAsB,CAAC;QAE3D,IAAA,CAAA,OAAO,GAAW,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,4BAA4B,CAAC;QAE/E,IAAA,CAAA,OAAO,GAAY,KAAK;QAEf,IAAA,CAAA,IAAI,GAAW,cAAc;AAE7B,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AAEjC,QAAA,IAAA,CAAA,WAAW,GACnB,MAAM,CAAyE,UAAU,CAAC;AAE5F,QAAA,IAAA,CAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;AAEzB,QAAA,IAAA,CAAA,UAAU,GAAQ,MAAK,EAAE,CAAC;AAUlB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAE;AAEjC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;QAIxC,IAAA,CAAA,mBAAmB,GAAG,CAAC;QAEvB,IAAA,CAAA,WAAW,GAAG,KAAK;QAEnB,IAAA,CAAA,OAAO,GAA6B,EAAE;QAE7B,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;QAElE,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;QAE1E,IAAA,CAAA,OAAO,GAAG,KAAK;QAEf,IAAA,CAAA,UAAU,GAAG,EAAE;QAUf,IAAA,CAAA,YAAY,GAAG,MAAK;YAClB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACvC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC;AApEC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;QACrC;IACF;AAuBA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE;AAC9B,YAAA,OAAO,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,uBAAuB,CAAC;QACxF;AAEA,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,aAAa;IACxC;IA0BQ,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,IAAI,CAAC,IAAI,EAAE;IACxE;IAUA,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC;AACH,cAAE,IAAI,CACJ,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC3B,oBAAoB,CAAC,CAAC,IAAI,EAAE,OAAO,KAAI;AACrC,YAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AACpB,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACtB;YAEA,OAAO,IAAI,KAAK,OAAO;AACzB,QAAA,CAAC,CAAC,EACF,SAAS,CAAC,CAAC,KAAK,KAAI;YAClB,OAAO,IAAI,CAAC;AACV,kBAAE,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CACjC,UAAU,CAAC,MAAK;oBACd,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACzB,gBAAA,CAAC,CAAC;kBAEJ,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACtB,CAAC,CAAC,EACF,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAErC,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,MAAkC,KAAI;gBAC3C,IAAI,CAAC,WAAW,EAAE;AAClB,gBAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI;AAC1B,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACtB;AACD,SAAA,CAAC;AAEJ,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAC,MAAK;AAC7C,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE;AAC3B,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;QAC5D,IAAI,CAAC,WAAW,EAAE;IACpB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE;IACpC;AAEA,IAAA,gBAAgB,CAAC,KAAiB,EAAA;QAChC,KAAK,CAAC,cAAc,EAAE;IACxB;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACpB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1B;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;YACnB,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACxB,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACvB,IAAI,CAAC,WAAW,EAAE;YACpB;QACF;IACF;AAEA,IAAA,OAAO,CAAC,KAAiB,EAAA;AACvB,QAAA,MAAM,IAAI,GAAG,KAAK,EAAE,aAAmC;AACvD,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE;YAChE;QACF;AAEA,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QACxB,IAAI,CAAC,YAAY,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,KAAK,KAAK,SAAS,EAAE;AAChD,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACrB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACxB;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;IACzB;AAEA,IAAA,aAAa,CAAC,KAAY,EAAA;AACxB,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,MAA0B;AAClD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,WAAW,EAAE;IACpB;AAEA,IAAA,QAAQ,CAAC,MAA8B,EAAA;AACrC,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;AACzB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW;QACpC,IAAI,CAAC,YAAY,EAAE;IACrB;AAEA,IAAA,UAAU,CAAC,MAA8B,EAAA;AACvC,QAAA,OAAO,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC,KAAK;IACrC;+GAxPW,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAalB,gBAAgB,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAmBhB,gBAAgB,CAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,kCAAA,EAAA,WAAA,EAAA,iCAAA,EAAA,SAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,SAAA,EA/CzB;;AAET,YAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,2BAA2B;SAC5E,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAzES,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA5EC,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,0BAAA,EAAA,8BAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAuFR,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAhGvC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,OAAA,EACtB;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,qBAAqB;wBACrB,sBAAsB;wBACtB,qBAAqB;wBACrB;qBACD,EAAA,QAAA,EACS,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoET,EAAA,SAAA,EAEU;;AAET,wBAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,6BAA6B;qBAC5E,EAAA,IAAA,EACK;AACJ,wBAAA,oBAAoB,EAAE,uBAAuB;AAC7C,wBAAA,KAAK,EAAE,mBAAmB;AAC1B,wBAAA,oCAAoC,EAAE,WAAW;AACjD,wBAAA,mCAAmC,EAAE,SAAS;AAC9C,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,iBAAiB,EAAE,0BAA0B;AAC7C,wBAAA,SAAS,EAAE,YAAY;AACvB,wBAAA,QAAQ,EAAE;AACX,qBAAA,EAAA,MAAA,EAAA,CAAA,wFAAA,CAAA,EAAA;;0BA+DE;;sBA1DF,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAExB;;sBAEA;;sBAEA;;sBAEA;;sBAEA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAmBrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAYrC;;sBA0EA,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;sBAEhD,SAAS;uBAAC,kBAAkB;;;AC3Q/B;;;;AAI6B;;ACJ7B;;;;AAI6B;MAiIhB,kCAAkC,CAAA;AAW7C,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE;AACtD,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ;QAChC;QACA,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AAEtB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;AAIA,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK;IAC9F;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;IAIA,IACI,KAAK,CAAC,KAAU,EAAA;QAClB,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,KAAK,KAAK,SAAS,EAAE;AAChD,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,gBAAA,IAAI,CAAC,UAAU,GAAG,KAAK;YACzB;AACA,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACrB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACxB;IACF;AAEA,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;IACpB;IAIA,WAAA,CACqB,SAAmC,EAC9C,iBAAoC,EAAA;QADzB,IAAA,CAAA,SAAS,GAAT,SAAS;QACpB,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QAzDlB,IAAA,CAAA,QAAQ,GAAG,GAAG;QAEd,IAAA,CAAA,QAAQ,GAAG,CAAC;AAEX,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAE;QAmBvC,IAAA,CAAA,SAAS,GAAY,KAAK;QA8B1B,IAAA,CAAA,MAAM,GAAkB,IAAI;AAW5B,QAAA,IAAA,CAAA,SAAS,GAAqB,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAE;AAE/D,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAEzC,IAAA,CAAA,EAAE,GAAW,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,8BAA8B,CAAC;QAEnE,IAAA,CAAA,OAAO,GAAW,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,oCAAoC,CAAC;QAEvF,IAAA,CAAA,OAAO,GAAY,KAAK;QAEf,IAAA,CAAA,IAAI,GAAW,sBAAsB;AAErC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AAEjC,QAAA,IAAA,CAAA,WAAW,GACnB,MAAM,CAAyE,UAAU,CAAC;AAE5F,QAAA,IAAA,CAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;AAEzB,QAAA,IAAA,CAAA,UAAU,GAAQ,MAAK,EAAE,CAAC;AAET,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAE1D,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAE;AAEjC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;QAIxC,IAAA,CAAA,mBAAmB,GAAG,CAAC;QAEvB,IAAA,CAAA,WAAW,GAAG,KAAK;QAEnB,IAAA,CAAA,OAAO,GAAsB,EAAE;QAEtB,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;QAElE,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAElF,IAAA,CAAA,OAAO,GAAG,KAAK;QAEf,IAAA,CAAA,UAAU,GAAG,EAAE;QAkBf,IAAA,CAAA,YAAY,GAAG,MAAK;YAClB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACvC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC;AAtEC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;QACrC;IACF;AA6CA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE;AAC9B,YAAA,OAAO,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,uBAAuB,CAAC;QACxF;AAEA,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa;IACvC;IAMQ,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,IAAI,CAAC,IAAI,EAAE;IACxE;IAUA,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC;AACH,cAAE,IAAI,CACJ,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC3B,oBAAoB,CAAC,CAAC,IAAI,EAAE,OAAO,KAAI;AACrC,YAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AACpB,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACtB;YAEA,OAAO,IAAI,KAAK,OAAO;AACzB,QAAA,CAAC,CAAC,EACF,SAAS,CAAC,CAAC,KAAK,KAAI;AAClB,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAC/C,UAAU,CAAC,MAAK;AACd,gBAAA,OAAO,EAAE,CAAC,EAAE,CAAC;YACf,CAAC,CAAC,CACH;QACH,CAAC,CAAC,EACF,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAErC,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,MAAa,KAAI;gBACtB,IAAI,CAAC,WAAW,EAAE;AAClB,gBAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACtB;AACD,SAAA,CAAC;AAEJ,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAC,MAAK;AAC7C,YAAA,OAAO,IAAI,CAAC,WAAW,EAAE;AAC3B,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;QAC5D,IAAI,CAAC,WAAW,EAAE;IACpB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE;IACpC;AAEA,IAAA,gBAAgB,CAAC,KAAiB,EAAA;QAChC,KAAK,CAAC,cAAc,EAAE;IACxB;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACpB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAC1B;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;YACnB,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACxB,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACvB,IAAI,CAAC,WAAW,EAAE;YACpB;QACF;IACF;AAEA,IAAA,OAAO,CAAC,KAAiB,EAAA;AACvB,QAAA,MAAM,IAAI,GAAG,KAAK,EAAE,aAAmC;AACvD,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE;YAChE;QACF;AAEA,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QACxB,IAAI,CAAC,YAAY,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACpB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;IACzB;AAEA,IAAA,aAAa,CAAC,KAAY,EAAA;AACxB,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,MAA0B;AAClD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,WAAW,EAAE;IACpB;AAEA,IAAA,QAAQ,CAAC,MAAuB,EAAA;AAC9B,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM;AACnB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,gBAAgB;QAC1C,IAAI,CAAC,YAAY,EAAE;IACrB;AAEA,IAAA,UAAU,CAAC,MAAuB,EAAA;AAChC,QAAA,OAAO,MAAM,KAAK,IAAI,CAAC,KAAK;IAC9B;+GApPW,kCAAkC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAWzB,gBAAgB,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAmBhB,gBAAgB,CAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,+BAAA,EAAA,0CAAA,EAAA,WAAA,EAAA,yCAAA,EAAA,SAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,EAAA,cAAA,EAAA,2BAAA,EAAA,EAAA,SAAA,EA7CzB;;AAET,YAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,kCAAkC;SACnF,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnES,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8DT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAtEC,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,0BAAA,EAAA,8BAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAiFR,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBA1F9C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,EAAA,OAAA,EAC9B;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,qBAAqB;wBACrB,sBAAsB;wBACtB,qBAAqB;wBACrB;qBACD,EAAA,QAAA,EACS,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DT,EAAA,SAAA,EAEU;;AAET,wBAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,oCAAoC;qBACnF,EAAA,IAAA,EACK;AACJ,wBAAA,oBAAoB,EAAE,+BAA+B;AACrD,wBAAA,KAAK,EAAE,2BAA2B;AAClC,wBAAA,4CAA4C,EAAE,WAAW;AACzD,wBAAA,2CAA2C,EAAE,SAAS;AACtD,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,iBAAiB,EAAE,0BAA0B;AAC7C,wBAAA,SAAS,EAAE,YAAY;AACvB,wBAAA,QAAQ,EAAE;AACX,qBAAA,EAAA,MAAA,EAAA,CAAA,wFAAA,CAAA,EAAA;;0BA+DE;;sBA1DF,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAExB;;sBAEA;;sBAEA;;sBAEA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAmBrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAYrC;;sBA8EA,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;sBAEhD,SAAS;uBAAC,kBAAkB;;;AC/P/B;;;;AAI6B;;ACJ7B;;;;AAI6B;MA6BhB,qBAAqB,CAAA;AAahC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE;IACpB;AAEA,IAAA,WAAA,GAAA;QAjBU,IAAA,CAAA,GAAG,GAAQ,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;AAEvD,QAAA,IAAA,CAAA,IAAI,GAA4B,KAAK,CAAC,IAAkB,2EAAC;AAEzD,QAAA,IAAA,CAAA,GAAG,GAAiC,KAAK,CAAC,QAAQ,yEAAE;QAEpD,IAAA,CAAA,EAAE,GAAoC,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAE;QAE/C,IAAA,CAAA,MAAM,GAAG,GAAG;QAEZ,IAAA,CAAA,UAAU,GAAqB,MAAM;QAQ1C,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,GAAG;YAEhC,IAAI,CAAC,gBAAgB,EAAE;AACzB,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,UAAU,CAAC,IAAY,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC9B;IAEQ,gBAAgB,GAAA;AACtB,QAAA,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,IAAI;AAChC,QAAA,MAAM,KAAK,GAAG,GAAG,EAAE;AAEnB,QAAA,IAAI,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,UAAU,GAAG,MAAM;AACxB,YAAA,IAAI,CAAC,MAAM,GAAI,KAA8B,CAAC,QAAQ;YAEtD;QACF;AAEA,QAAA,IAAI,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,UAAU,GAAG,OAAO;AACzB,YAAA,IAAI,CAAC,MAAM,GAAI,KAA8B,CAAC,QAAQ;YAEtD;QACF;AAEA,QAAA,IAAI,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;AAClC,YAAA,IAAI,CAAC,UAAU,GAAG,MAAM;YACxB,IAAI,CAAC,MAAM,GAAG,UAAU,CAAE,KAA0B,CAAC,IAAI,CAAC;QAC5D;IACF;+GApDW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,4iBCjClC,+UAaA,EAAA,MAAA,EAAA,CAAA,+xBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDoBa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAZjC,SAAS;oCACO,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B,eAAe,mBAGR,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,aAAa,EAAE,eAAe;AAC9B,wBAAA,WAAW,EAAE,KAAK;AAClB,wBAAA,MAAM,EAAE;AACT,qBAAA,EAAA,QAAA,EAAA,+UAAA,EAAA,MAAA,EAAA,CAAA,+xBAAA,CAAA,EAAA;;sBAeA,WAAW;uBAAC,OAAO;;;AE9CtB;;;;AAI6B;;ACJ7B;;;;AAI6B;MAchB,oBAAoB,CAAA;AATjC,IAAA,WAAA,GAAA;AAUmB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAEzC,IAAA,CAAA,EAAE,GAAW,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,eAAe,CAAC;QAEvC,IAAA,CAAA,aAAa,GAAG,EAAE;QA6BxC,IAAA,CAAA,IAAI,GAAe,IAAI;QAIvB,IAAA,CAAA,YAAY,GAAG,KAAK;QAEX,IAAA,CAAA,IAAI,GAAW,EAAE;QAEjB,IAAA,CAAA,IAAI,GAAW,EAAE;AAC3B,IAAA;IApCC,IAAa,IAAI,CAAC,KAAyD,EAAA;AACzE,QAAA,MAAM,MAAM,GAAG;YACb,OAAO,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;YACpD,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;YAClD,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;YAClD,IAAI,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;YACjD,OAAO,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS;SACnD,CAAC,KAAK,CAAC;QAER,IAAI,CAAC,aAAa,GAAG;YACnB,2BAA2B,EAAE,MAAM,EAAE,UAAU;YAC/C,sBAAsB,EAAE,MAAM,EAAE;SACjC;IACH;IAEA,IACI,UAAU,CAAC,KAA4C,EAAA;QACzD,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,aAAa,GAAG;gBACnB,2BAA2B,EAAE,KAAK,EAAE,UAAU;gBAC9C,sBAAsB,EAAE,KAAK,EAAE;aAChC;QACH;IACF;+GA9BW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAqCX,gBAAgB,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,cAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvDtC,mLAUA,EAAA,MAAA,EAAA,CAAA,ujBAAA,CAAA,EAAA,CAAA,CAAA;;4FDQa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAThC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,IAAA,EAGlB;AACJ,wBAAA,aAAa,EAAE,cAAc;AAC7B,wBAAA,WAAW,EAAE;AACd,qBAAA,EAAA,QAAA,EAAA,mLAAA,EAAA,MAAA,EAAA,CAAA,ujBAAA,CAAA,EAAA;;sBAOA,WAAW;uBAAC,OAAO;;sBAEnB;;sBAeA;;sBAUA,WAAW;uBAAC,OAAO;;sBACnB;;sBAGA,WAAW;uBAAC,qBAAqB;;sBACjC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC;;sBAEA;;;AE5DH;;;;AAI6B;;ACJ7B;;;;AAI6B;MAmBhB,yBAAyB,CAAA;AAapC,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI;IAC/B;AAEA,IAAA,WAAA,GAAA;QAjBwC,IAAA,CAAA,QAAQ,GAAY,KAAK;AAEvD,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;QAExB,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;;AAe9D,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;IACnB;AAEA,IAAA,cAAc,CAAC,IAAsB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,EAAE;QACjB;aAAO;YACL,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC;IACF;+GAjCW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAKhB,gBAAgB,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5BtC,qVAaA,oaDAY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAUX,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAZrC,SAAS;+BACE,mBAAmB,EAAA,OAAA,EACpB,CAAC,YAAY,CAAC,iBAGR,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,aAAa,EAAE,mBAAmB;AAClC,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,MAAM,EAAE;AACT,qBAAA,EAAA,QAAA,EAAA,qVAAA,EAAA,MAAA,EAAA,CAAA,6WAAA,CAAA,EAAA;;sBAGA,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAExB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAExB,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAQrC;;;AEpCH;;;;AAI6B;;ACJ7B;;;;AAI6B;MAiGhB,uBAAuB,CAAA;AAzDpC,IAAA,WAAA,GAAA;QAmE0C,IAAA,CAAA,QAAQ,GAAG,KAAK;QAEhB,IAAA,CAAA,aAAa,GAAG,KAAK;QAErB,IAAA,CAAA,QAAQ,GAAG,KAAK;QAEhB,IAAA,CAAA,UAAU,GAAG,IAAI;QAEhD,IAAA,CAAA,IAAI,GAAuB,IAAI;AAE9B,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAW;AAExC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAEvB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAE1C,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAE3B,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAI9B,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,iBAAiB,CAAC;QAEnD,IAAA,CAAA,KAAK,GAAG,KAAK;QAEtB,IAAA,CAAA,SAAS,GAAG,KAAK;AAkCjB,QAAA,IAAA,CAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;AAEzB,QAAA,IAAA,CAAA,UAAU,GAAQ,MAAK,EAAE,CAAC;AAE1B,QAAA,IAAA,CAAA,kBAAkB,GAAQ,MAAK,EAAE,CAAC;QAQlC,IAAA,CAAA,MAAM,GAAG,MAAK;YACZ,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACxB,QAAA,CAAC;AAED,QAAA,IAAA,CAAA,OAAO,GAAG,CAAC,KAAU,KAAI;AACvB,YAAA,IAAI,KAAK,CAAC,aAAa,EAAE;AACvB,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI;YACvB;AACF,QAAA,CAAC;AAsDF,IAAA;AA3GC,IAAA,IAAI,WAAW,GAAA;QACb,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,KAAK;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,KAAK;QAC9C,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,IAAI,OAAO;IAC9C;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;IACxE;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,KAAK;IACvC;AAEA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,KAAK;IACvC;IAEA,QAAQ,GAAA;QACN,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAEpF,IAAI,SAAS,YAAY,oBAAoB,IAAI,SAAS,YAAY,OAAO,EAAE;AAC7E,YAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO;QAClC;AAAO,aAAA,IAAI,SAAS,YAAY,eAAe,EAAE;AAC/C,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,SAA4B,CAAC;AAE7F,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACnF,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,YAAA,CAAC,CAAC;QACJ;IACF;AAQA,IAAA,WAAW,CAAC,OAAY,EAAA;AACtB,QAAA,IAAI,OAAO,CAAC,QAAQ,EAAE;YACpB,IAAI,CAAC,kBAAkB,EAAE;QAC3B;IACF;AAaA,IAAA,QAAQ,CAAC,OAAwB,EAAA;QAC/B,OAAO,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI;IAC5E;AAEA,IAAA,UAAU,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEA,IAAA,yBAAyB,CAAC,EAAc,EAAA;AACtC,QAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE;IAC9B;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IACzB;AAEA,IAAA,aAAa,CAAC,KAAY,EAAA;AACxB,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,MAA0B;AAEjD,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;QAC5B;AAEA,QAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,OAAO;AAC7B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,UAAU,EAAE;IACnB;IAEA,iBAAiB,GAAA;AACf,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;AAEzE,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE;AACtD,YAAA,OAAO,OAAO;QAChB;QAEA,IAAI,eAAe,EAAE;AACnB,YAAA,OAAO,MAAM;QACf;AAEA,QAAA,OAAO,EAAE;IACX;+GAhJW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAUd,gBAAgB,CAAA,EAAA,aAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAEhB,gBAAgB,sCAEhB,gBAAgB,CAAA,EAAA,UAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAEhB,gBAAgB,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,OAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,mCAAA,EAAA,eAAA,EAAA,6BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EA7CzB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAK;;AAE3B,oBAAA,OAAO,uBAAuB;AAChC,gBAAA,CAAC,CAAC;AACF,gBAAA,KAAK,EAAE;AACR,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,aAAa;;AAEtB,gBAAA,WAAW,EAAE,uBAAuB;AACpC,gBAAA,KAAK,EAAE;AACR;AACF,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAegB,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,SAAA,EAGnB,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAGpB,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5GxC,khCAuCA,EAAA,MAAA,EAAA,CAAA,knDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDOY,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAIjD;YACV,OAAO,CAAC,eAAe,EAAE;gBACvB,UAAU,CAAC,QAAQ,EAAE;AACnB,oBAAA,OAAO,CACL,mBAAmB,EACnB,SAAS,CAAC;wBACR,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;wBAC9C,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE;AAC5C,qBAAA,CAAC;iBAEL,CAAC;gBACF,UAAU,CAAC,QAAQ,EAAE;AACnB,oBAAA,OAAO,CACL,mBAAmB,EACnB,SAAS,CAAC;wBACR,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;wBAC5C,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE;AAC7C,qBAAA,CAAC;iBAEL;aACF;AACF,SAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FA8BU,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAzDnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,OAAA,EAClB,CAAC,mBAAmB,EAAE,WAAW,EAAE,iBAAiB,CAAC,EAAA,eAAA,EAC7C,uBAAuB,CAAC,MAAM,EAAA,UAAA,EAGnC;wBACV,OAAO,CAAC,eAAe,EAAE;4BACvB,UAAU,CAAC,QAAQ,EAAE;AACnB,gCAAA,OAAO,CACL,mBAAmB,EACnB,SAAS,CAAC;oCACR,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;oCAC9C,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE;AAC5C,iCAAA,CAAC;6BAEL,CAAC;4BACF,UAAU,CAAC,QAAQ,EAAE;AACnB,gCAAA,OAAO,CACL,mBAAmB,EACnB,SAAS,CAAC;oCACR,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;oCAC5C,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE;AAC7C,iCAAA,CAAC;6BAEL;yBACF;qBACF,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,MAAK;;gCAE3B,OAAA,uBAAA;AACF,4BAAA,CAAC,CAAC;AACF,4BAAA,KAAK,EAAE;AACR,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,aAAa;;AAEtB,4BAAA,WAAW,EAAA,uBAAyB;AACpC,4BAAA,KAAK,EAAE;AACR;qBACF,EAAA,IAAA,EACK;AACJ,wBAAA,aAAa,EAAE,gBAAgB;AAC/B,wBAAA,KAAK,EAAE,eAAe;AACtB,wBAAA,uBAAuB,EAAE,UAAU;AACnC,wBAAA,+BAA+B,EAAE,OAAO;AACxC,wBAAA,+BAA+B,EAAE,WAAW;AAC5C,wBAAA,qCAAqC,EAAE,eAAe;AACtD,wBAAA,+BAA+B,EAAE,aAAa;AAC9C,wBAAA,YAAY,EAAE,qBAAqB;AACnC,wBAAA,YAAY,EAAE,qBAAqB;AACnC,wBAAA,YAAY,EAAE;AACf,qBAAA,EAAA,QAAA,EAAA,khCAAA,EAAA,MAAA,EAAA,CAAA,knDAAA,CAAA,EAAA;;sBAGA,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;sBAG1D,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,oBAAoB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;sBAG3D,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,qBAAqB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;sBAG5D,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAErC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAErC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAErC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAErC;;sBAEA;;sBAcA;;;AEvIH;;;;AAI6B;;ACJ7B;;;;AAI6B;MAmDhB,4BAA4B,CAAA;AAcvC,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE;AACtD,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ;QAChC;QACA,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AAEtB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;AAEA,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI;IAC/B;AAEA,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK;IAC9F;IAEA,IAAI,QAAQ,CAAC,KAAmB,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;IAC/C;AAMA,IAAA,IACI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK;IACnB;IAEA,IAAI,IAAI,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACpB;AAIA,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,KAAK;IACd;AAkBA,IAAA,WAAA,CACU,EAAc,EACd,QAAmB,EACnB,YAA0B,EAAA;QAF1B,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,YAAY,GAAZ,YAAY;AAxFZ,QAAA,IAAA,CAAA,WAAW,GACnB,MAAM,CAAyE,UAAU,CAAC;QAElF,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;AAI3D,QAAA,IAAA,CAAA,YAAY,GAAkB,IAAI,OAAO,EAAQ;QAyChD,IAAA,CAAA,SAAS,GAAG,KAAK;QAWjB,IAAA,CAAA,KAAK,GAAG,MAAM;AAUP,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAE9C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAE7C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAEtC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;QAIhC,IAAA,CAAA,SAAS,GAAG,CAAC;AAErB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAE7D,IAAA,CAAA,OAAO,GAAY,KAAK;;AAQtB,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;IACnB;IAEQ,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE;IAC5C;AAEQ,IAAA,KAAK,CAAC,OAAsB,EAAA;QAClC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;QAC7C,IAAI,CAAC,eAAe,EAAE;IACxB;AAEQ,IAAA,WAAW,CAAC,KAAa,EAAA;QAC/B,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAChC,KAAK,EACL,IAAI,CAAC,aAAa,IAAI,KAAK,EAC3B,EAAE,EACF,OAAO,EACP,IAAI,CAAC,SAAS,IAAI,OAAO,CAC1B;IACH;IAEQ,kBAAkB,GAAA;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK;AAC5C,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;AAC5B,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;YAEtB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AACzC,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,CAAC;AAC7D,gBAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;gBACtC;YACF;YAEA,IAAI,OAAO,GAAG,KAAK;AACnB,YAAA,MAAM,OAAO,GAAG,CAAA,EAAG,KAAK,CAAA,CAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxC,IAAI,CAAA,EAAG,OAAO,CAAA,CAAE,CAAC,MAAM,IAAI,CAAC,EAAE;gBAC5B,OAAO,GAAG,CAAA,EAAG,KAAK,CAAA,CAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;gBAC3C,OAAO,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAA,CAAE;YACtC;YAEA,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YACxF,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;AAChD,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,cAAc,CAAC;AACzE,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;QACxC;IACF;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,kBAAkB,EAAE;AACzB,QAAA,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE;QAEjC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE;AAC3C,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;aACzC,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,kBAAkB,EAAE;AAC3B,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;AAC5B,QAAA,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE;IACnC;IAEA,WAAW,CAAC,EAAE,QAAQ,EAAiB,EAAA;QACrC,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,KAAK,EAAE;QACd;IACF;AAEA,IAAA,YAAY,CAAC,SAAkB,EAAA;AAC7B,QAAA,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO,EAAE;YAC9B;QACF;AAEA,QAAA,IAAI,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC9B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAiC;AAClE,YAAA,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC;QACjC;QAEA,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,CAAC,OAAO,GAAG,SAAS;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE;IAC1C;+GA1LW,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA5B,4BAA4B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAcnB,gBAAgB,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,cAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAvBzB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,sBAAsB;;AAE/B,gBAAA,WAAW,EAAE;AACd;AACF,SAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAGU,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBA1BxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,YAAY;AACnB,wBAAA,6BAA6B,EAAE,UAAU;AACzC,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,YAAY,EAAE,UAAU;AACxB,wBAAA,YAAY,EAAE,UAAU;AACxB,wBAAA,aAAa,EAAE,cAAc;AAC7B,wBAAA,iBAAiB,EAAE,kBAAkB;AACrC,wBAAA,sBAAsB,EAAE,UAAU;AAClC,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,SAAS,EAAE,oBAAoB;AAC/B,wBAAA,YAAY,EAAE,mBAAmB;AACjC,wBAAA,QAAQ,EAAE;AACX,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,sBAAsB;;AAE/B,4BAAA,WAAW,EAAA;AACZ;AACF,qBAAA;AACD,oBAAA,UAAU,EAAE;AACb,iBAAA;;sBAaE;;sBAEA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAiBrC;;sBASA;;sBAaA;;;AC5GH;;;;AAI6B;AAG7B,MAAM,mBAAmB,GAAG;IAC1B,QAAQ;IACR,UAAU;IACV,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP;CACD;AAEK,SAAU,YAAY,CAAC,IAAY,EAAA;AACvC,IAAA,IAAI,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACjF,QAAA,MAAM,KAAK,CAAC,CAAA,YAAA,EAAe,IAAI,CAAA,kBAAA,CAAoB,CAAC;IACtD;AACF;;ACtBA;;;;AAI6B;MA6ChB,oBAAoB,CAAA;AAY/B,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE;AACtD,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ;QAChC;QACA,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AAEtB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;AAEA,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI;IAC/B;AAEA,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK;IAC9F;IAEA,IAAI,QAAQ,CAAC,KAAmB,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;IAC/C;AAMA,IAAA,IACI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK;IACnB;IAEA,IAAI,IAAI,CAAC,KAAa,EAAA;QACpB,YAAY,CAAC,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,MAAM;QAE3B,IAAI,CAAC,WAAW,CAAC,aAAkC,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK;IACxE;AAEA,IAAA,IACI,GAAG,GAAA;QACL,OAAO,IAAI,CAAC,IAAI;IAClB;IAEA,IAAI,GAAG,CAAC,KAAa,EAAA;AACnB,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK;AAEjB,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE;YACxB,IAAI,CAAC,WAAW,CAAC,aAAkC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI;QACtE;IACF;AAEA,IAAA,IACI,GAAG,GAAA;QACL,OAAO,IAAI,CAAC,IAAI;IAClB;IAEA,IAAI,GAAG,CAAC,KAAa,EAAA;AACnB,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK;AAEjB,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE;YACxB,IAAI,CAAC,WAAW,CAAC,aAAkC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI;QACtE;IACF;AAQA,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IACI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ;IACtB;IAEA,IAAI,OAAO,CAAC,KAAS,EAAA;AACnB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;IACtB;AAQA,IAAA,WAAA,GAAA;AAjHU,QAAA,IAAA,CAAA,WAAW,GACnB,MAAM,CAAyE,UAAU,CAAC;QAElF,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;AAIlD,QAAA,IAAA,CAAA,YAAY,GAAkB,IAAI,OAAO,EAAQ;QAyChD,IAAA,CAAA,SAAS,GAAG,KAAK;QAwCjB,IAAA,CAAA,KAAK,GAAG,MAAM;QAmBd,IAAA,CAAA,QAAQ,GAAG,KAAK;AAE1B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAE7D,IAAA,CAAA,OAAO,GAAY,KAAK;;AAItB,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;IACnB;IAEQ,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE;IAC5C;AAEQ,IAAA,KAAK,CAAC,OAAsB,EAAA;QAClC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;QAC7C,IAAI,CAAC,eAAe,EAAE;IACxB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;IAC9B;IAEA,WAAW,CAAC,EAAE,QAAQ,EAAiB,EAAA;QACrC,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,KAAK,EAAE;QACd;IACF;AAEA,IAAA,YAAY,CAAC,SAAkB,EAAA;AAC7B,QAAA,IAAI,SAAS,KAAK,IAAI,CAAC,OAAO,EAAE;YAC9B;QACF;AAEA,QAAA,IAAI,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC9B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAiC;AAElE,YAAA,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC7B,gBAAA,OAAO,CAAC,IAAI,GAAG,MAAM;AACrB,gBAAA,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC;AAC/B,gBAAA,OAAO,CAAC,IAAI,GAAG,QAAQ;YACzB;iBAAO;AACL,gBAAA,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC;YACjC;QACF;QAEA,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,CAAC,OAAO,GAAG,SAAS;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE;IAC1C;+GAxKW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAYX,gBAAgB,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,cAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EArBzB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,sBAAsB;;AAE/B,gBAAA,WAAW,EAAE;AACd;AACF,SAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAGU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBA3BhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4CAA4C;AACtD,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,YAAY;AACnB,wBAAA,aAAa,EAAE,cAAc;AAC7B,wBAAA,6BAA6B,EAAE,UAAU;AACzC,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,YAAY,EAAE,UAAU;AACxB,wBAAA,YAAY,EAAE,UAAU;AACxB,wBAAA,aAAa,EAAE,cAAc;AAC7B,wBAAA,iBAAiB,EAAE,kBAAkB;AACrC,wBAAA,sBAAsB,EAAE,UAAU;AAClC,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,SAAS,EAAE,oBAAoB;AAC/B,wBAAA,YAAY,EAAE,mBAAmB;AACjC,wBAAA,QAAQ,EAAE;AACX,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,sBAAsB;;AAE/B,4BAAA,WAAW,EAAA;AACZ;AACF,qBAAA;AACD,oBAAA,UAAU,EAAE;AACb,iBAAA;;sBAWE;;sBAEA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAiBrC;;sBASA;;sBAaA;;sBAYA;;sBAaA;;sBAuBA;;;ACpJH;;;;AAI6B;MAWhB,iBAAiB,CAAA;+GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAHb,oBAAoB,EAAE,4BAA4B,CAAA,EAAA,OAAA,EAAA,CACvD,oBAAoB,EAAE,4BAA4B,CAAA,EAAA,CAAA,CAAA;gHAEjD,iBAAiB,EAAA,SAAA,EAJjB,CAAC,YAAY,CAAC,EAAA,CAAA,CAAA;;4FAId,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,SAAS,EAAE,CAAC,YAAY,CAAC;AACzB,oBAAA,YAAY,EAAE,CAAC,oBAAoB,EAAE,4BAA4B,CAAC;AAClE,oBAAA,OAAO,EAAE,CAAC,oBAAoB,EAAE,4BAA4B;AAC7D,iBAAA;;;ACdD;;;;AAI6B;;ACJ7B;;;;AAI6B;MA0BhB,yBAAyB,CAAA;AAiBpC,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI;IAC/B;AAEA,IAAA,WAAA,GAAA;QAzBS,IAAA,CAAA,IAAI,GAAyC,SAAS;QAEtD,IAAA,CAAA,IAAI,GAAuB,IAAI;QAE/B,IAAA,CAAA,QAAQ,GAAY,KAAK;QAEzB,IAAA,CAAA,IAAI,GAAG,EAAE;QAIT,IAAA,CAAA,KAAK,GAAsB,SAAS;QAEnC,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC;;AAe/D,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;IACnB;AAGA,IAAA,OAAO,CAAC,KAAU,EAAA;AAChB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,KAAK,CAAC,eAAe,EAAE;YACvB,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,wBAAwB,EAAE;QAClC;IACF;+GAtCW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BtC,+XAcA,EAAA,MAAA,EAAA,CAAA,04FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDKY,YAAY,6HAAE,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAW9B,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAbrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EACrB,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAAA,aAAA,EAG3B,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,aAAa,EAAE,oBAAoB;AACnC,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,MAAM,EAAE;AACT,qBAAA,EAAA,QAAA,EAAA,+XAAA,EAAA,MAAA,EAAA,CAAA,04FAAA,CAAA,EAAA;;sBAGA;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;sBAMA;;sBAcA,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;AE7DnC;;;;AAI6B;;ACJ7B;AACA;;;;AAI6B;AAsC7B,IAAY,gBAWX;AAXD,CAAA,UAAY,gBAAgB,EAAA;AAC1B,IAAA,gBAAA,CAAA,gBAAA,CAAA,cAAA,CAAA,GAAA,CAAA,EAAA,CAAA,GAAA,cAAkB;AAClB,IAAA,gBAAA,CAAA,gBAAA,CAAA,cAAA,CAAA,GAAA,CAAA,EAAA,CAAA,GAAA,cAAkB;AAClB,IAAA,gBAAA,CAAA,gBAAA,CAAA,cAAA,CAAA,GAAA,CAAA,EAAA,CAAA,GAAA,cAAkB;AAClB,IAAA,gBAAA,CAAA,gBAAA,CAAA,eAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,eAAoB;AACpB,IAAA,gBAAA,CAAA,gBAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,GAAA,CAAA,GAAA,gBAAqB;AACrB,IAAA,gBAAA,CAAA,gBAAA,CAAA,cAAA,CAAA,GAAA,EAAA,CAAA,GAAA,cAAiB;AACjB,IAAA,gBAAA,CAAA,gBAAA,CAAA,cAAA,CAAA,GAAA,EAAA,CAAA,GAAA,cAAiB;AACjB,IAAA,gBAAA,CAAA,gBAAA,CAAA,cAAA,CAAA,GAAA,EAAA,CAAA,GAAA,cAAiB;AACjB,IAAA,gBAAA,CAAA,gBAAA,CAAA,eAAA,CAAA,GAAA,GAAA,CAAA,GAAA,eAAmB;AACnB,IAAA,gBAAA,CAAA,gBAAA,CAAA,gBAAA,CAAA,GAAA,GAAA,CAAA,GAAA,gBAAoB;AACtB,CAAC,EAXW,gBAAgB,KAAhB,gBAAgB,GAAA,EAAA,CAAA,CAAA;AAatB,SAAU,eAAe,CAAC,GAAkB,EAAA;AAChD,IAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC3B,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAa,CAAC,EAAE,YAAY,CAAC;IACtD;AAEA,IAAA,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxC;SAEgB,eAAe,GAAA;IAC7B,OAAO;AACL,QAAA,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,YAAY,CAAC;AACvD,QAAA,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,YAAY;KACvD;AACH;AAEM,SAAU,cAAc,CAAC,IAAmB,EAAE,MAA4B,EAAA;IAC9E,IAAI,MAAM,EAAE;AACV,QAAA,IAAI,MAAM,KAAK,UAAU,EAAE;AACzB,YAAA,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3B;aAAO;AACL,YAAA,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3B;IACF;AAEA,IAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC;AACjC,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAE/B,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;AAErC,IAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC;AACxC,IAAA,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAEtC,OAAO;AACL,QAAA,aAAa,EAAE;AACb,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,IAAI,EAAE;AACP,SAAA;AACD,QAAA,cAAc,EAAE;AACd,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,IAAI,EAAE;AACP;KACF;AACH;AAEM,SAAU,gBAAgB,CAC9B,IAAY,EACZ,KAAa,EACb,OAAsB,EACtB,OAAsB,EAAA;IAEtB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACrC,IAAA,MAAM,KAAK,GAAG,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;AAClE,IAAA,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;IAE5D,MAAM,IAAI,GAAuB,EAAE;IACnC,IAAI,SAAS,GAAG,KAAK;IACrB,IAAI,SAAS,GAAG,KAAK;IAErB,IAAI,OAAO,GAAG,KAAK;AACnB,IAAA,OAAO,OAAO,IAAI,GAAG,EAAE;QACrB,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC;QACjD,MAAM,WAAW,GAAG;AAClB,cAAE,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC;cAC3D,KAAK;QACT,IAAI,WAAW,EAAE;YACf,SAAS,GAAG,IAAI;QAClB;QACA,MAAM,UAAU,GAAG;AACjB,cAAE,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC;cAC1D,KAAK;QACT,IAAI,UAAU,EAAE;YACd,SAAS,GAAG,IAAI;QAClB;QAEA,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,cAAc,GAAG,OAAO,GAAG,IAAI;AACrC,YAAA,UAAU,EAAE,CAAC,cAAc,IAAI,WAAW,IAAI,UAAU;AACxD,YAAA,OAAO,EAAE,OAAO,CAAC,OAAO;AACzB,SAAA,CAAC;AACF,QAAA,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/B;IAEA,OAAO;QACL,SAAS;QACT,SAAS;QACT;KACD;AACH;AAEM,SAAU,WAAW,CAAC,OAAY,EAAA;AACtC,IAAA,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO;AAC1B,SAAA,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAI;QAChB,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAClC,IAAA,CAAC;SACA,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AACpB,QAAA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE;AACvB,IAAA,CAAC,CAAC;AACN;;ACzJA;;;;AAI6B;MA4BhB,6BAA6B,CAAA;IAKxC,IAAa,SAAS,CAAC,GAAW,EAAA;AAChC,QAAA,IAAI,CAAC,iBAAiB,GAAG,GAAG;IAC9B;IAEA,IAAa,OAAO,CAAC,GAAW,EAAA;AAC9B,QAAA,IAAI,CAAC,eAAe,GAAG,GAAG;IAC5B;AAgCA,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI;IAC/B;AAEA,IAAA,WAAA,GAAA;AA7BU,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAE;AAE/B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAE;QAE3B,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC;AAIrD,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,IAAI,EAAE;QAM3B,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;;AAiBzE,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;IACnB;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,WAAW,GAAGC,gBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;IAC9F;AAEA,IAAA,OAAO,CAAC,KAAoB,EAAA;QAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAK,EAAE,YAAY,CAAC;AAC9C,QAAA,OAAO,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,KAAK,KAAK;IAC7E;AAEA,IAAA,MAAM,CAAC,KAAoB,EAAA;QACzB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAK,EAAE,YAAY,CAAC;AAC9C,QAAA,OAAO,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,KAAK,KAAK;IACzE;AAEA,IAAA,UAAU,CAAC,KAAoB,EAAA;QAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAK,EAAE,YAAY,CAAC;QAC9C,QACE,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI;aACzD,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC;AACvD,YAAA,KAAK;IAET;AAEA,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,IAAI;AAAE,YAAA,OAAO,KAAK;QACjF,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAK,EAAE,YAAY,CAAC;AAE9C,QAAA,OAAO,gBAAgB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE;AACtC,YAAA,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACvC,YAAA,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe;AACnC,SAAA,CAAC;IACJ;AAEA,IAAA,kBAAkB,CAAC,KAAoB,EAAA;QACrC,IACE,CAAC,IAAI,CAAC,iBAAiB;AACvB,YAAA,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI;YAC5B,CAAC,KAAK,CAAC,IAAI;AACX,YAAA,KAAK,CAAC,UAAU;AAChB,aAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,eAAe,CAAC;AAEhD,YAAA,OAAO,KAAK;QACd,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAK,EAAE,YAAY,CAAC;AAE9C,QAAA,OAAO,gBAAgB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE;AACtC,YAAA,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;YACvC,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI;AACzC,SAAA,CAAC;IACJ;AAEA,IAAA,iBAAiB,CAAC,KAAoB,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe;AAAE,YAAA,OAAO,KAAK;QACrF,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAK,EAAE,YAAY,CAAC;AAC9C,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAK,EAAE,YAAY,CAAC;AAC9D,QAAA,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,GAAG,KAAK,IAAI,KAAK,KAAK;IAC/D;IAEA,YAAY,CAAC,KAAY,EAAE,KAAoB,EAAA;QAC7C,IAAI,KAAK,EAAE,UAAU,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YACpC,KAAK,CAAC,cAAc,EAAE;YACtB;QACF;QAEA,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC;QAC7C,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,eAAe,EAAE;AAClD,YAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;AAC3B,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE;QAC3B;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AAC3B,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;QAC/B;aAAO;AACL,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;QAC7B;AAEA,QAAA,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,eAAe,CAAC;QAEjE,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,eAAe,IAAI,GAAG,EAAE;AACzD,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB;AACpC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe;AAChC,YAAA,IAAI,CAAC,iBAAiB,GAAG,GAAG;AAC5B,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK;QAC9B;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACf,SAAS,EAAE,IAAI,CAAC,iBAAiB;YACjC,OAAO,EAAE,IAAI,CAAC;AACf,SAAA,CAAC;IACJ;+GAjJW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAapB,gBAAgB,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAGhB,gBAAgB,4PChDtC,4sDAsDA,EAAA,MAAA,EAAA,CAAA,21EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED/BY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAStC,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAXzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,WAC1B,CAAC,YAAY,EAAE,yBAAyB,CAAC,EAAA,IAAA,EAG5C;AACJ,wBAAA,aAAa,EAAE,OAAO;AACtB,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,MAAM,EAAE;AACT,qBAAA,EAAA,QAAA,EAAA,4sDAAA,EAAA,MAAA,EAAA,CAAA,21EAAA,CAAA,EAAA;;sBAGA,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAExB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAExB;;sBAIA;;sBAIA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC;;sBAEA;;sBAEA;;sBAEA;;sBAkBA;;;AE3EH;;;;AAI6B;;ACJ7B;;;;AAI6B;MAkBhB,oCAAoC,CAAA;AAO/C,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI;IAC/B;AAQA,IAAA,WAAA,GAAA;AArBU,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAE;QAE7B,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,wCAAwC,CAAC;QAapF,IAAA,CAAA,cAAc,GAAG,EAAE;QAEV,IAAA,CAAA,OAAO,GAAGC,WAAiB,CAACC,gBAAsB,CAAC;QAEnD,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;;AAIzE,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;IACnB;AAEA,IAAA,cAAc,CAAC,EAAE,GAAG,EAAE,KAAK,EAAkC,EAAA;AAC3D,QAAA,IAAI,CAAC,cAAc,GAAG,GAAG;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3B;+GA9BW,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApC,oCAAoC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtBjD,+VAYA,EAAA,MAAA,EAAA,CAAA,kkBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDCY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FASX,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAXhD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,EAAA,OAAA,EAClC,CAAC,YAAY,CAAC,EAAA,IAAA,EAGjB;AACJ,wBAAA,aAAa,EAAE,eAAe;AAC9B,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,MAAM,EAAE;AACT,qBAAA,EAAA,QAAA,EAAA,+VAAA,EAAA,MAAA,EAAA,CAAA,kkBAAA,CAAA,EAAA;;sBAGA;;sBAMA;;;AE7BH;;;;AAI6B;;ACJ7B;;;;AAI6B;MAmDhB,wBAAwB,CAAA;IACnC,IAAa,SAAS,CAAC,GAAW,EAAA;AAChC,QAAA,IAAI,CAAC,gBAAgB,GAAG,GAAG;IAC7B;IAEA,IAAa,OAAO,CAAC,GAAW,EAAA;AAC9B,QAAA,IAAI,CAAC,cAAc,GAAG,GAAG;IAC3B;IAiBA,IAAa,OAAO,CAAC,GAAkB,EAAA;QACrC,IAAI,GAAG,EAAE;YACP,IAAI,CAAC,cAAc,GAAGC,eAAqB,CAAC,GAAG,CAAC;QAClD;IACF;IAEA,IAAa,OAAO,CAAC,GAAkB,EAAA;QACrC,IAAI,GAAG,EAAE;YACP,IAAI,CAAC,cAAc,GAAGA,eAAqB,CAAC,GAAG,CAAC;QAClD;IACF;AAUA,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI;IAC/B;AA0BA,IAAA,WAAA,GAAA;AAzCU,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAE;AAE7B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAE;QAE3B,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;AAaxD,QAAA,IAAA,CAAA,YAAY,GAAW,MAAM,CAAC,UAAU;QAExC,IAAA,CAAA,sBAAsB,GAAG,IAAI;QAE7B,IAAA,CAAA,0BAA0B,GAAG,IAAI;AAExB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,IAAI,EAAE;QAE3B,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC;QAU3E,IAAA,CAAA,iBAAiB,GAAG,KAAK;AAEzB,QAAA,IAAA,CAAA,cAAc,GAAWC,eAAqB,EAAE,CAAC,OAAO;AAExD,QAAA,IAAA,CAAA,cAAc,GAAWA,eAAqB,EAAE,CAAC,OAAO;;AAItD,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;IACnB;IAEQ,mBAAmB,GAAA;AACzB,QAAA,MAAM,SAAS,GAAGC,cAAoB,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,IAAI,EAAE,CAAC;AAC3E,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,aAAa;AAC5C,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,cAAc;IAChD;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE;AAC3B,YAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC/B,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,gBAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK;YACtC;AACA,YAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE;AACnC,gBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;YAChC;QACF;aAAO;AACL,YAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC/B,gBAAA,IAAI,CAAC,eAAe,GAAG,KAAK;AAC5B,gBAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK;YACtC;AACA,YAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE;AACnC,gBAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;YACjC;QACF;IACF;IAEQ,iBAAiB,CAAC,KAAY,EAAE,OAAgB,EAAA;AACtD,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAC9C,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK;QACvB,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;QAC/B,IAAI,CAAA,EAAG,MAAM,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC,MAAM,GAAG,CAAC;YAAE;AAElC,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE;YAC1B,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,KAAK,CAAC,KAAK,GAAG,EAAE;AAChB,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;YAC7B;QACF;AAEA,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;QAE9B,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;QAC/B;aAAO;AACL,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAC7B;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,QAAQ,EAAE;QACjB;IACF;AAGA,IAAA,QAAQ,CAAC,KAAU,EAAA;QACjB,IAAI,CAAC,YAAY,GAAI,KAAK,CAAC,MAAiB,CAAC,UAAU;QACvD,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK;QACrC;AACA,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,YAAA,IAAI,CAAC,0BAA0B,GAAG,KAAK;QACzC;AACA,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAChC,YAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK;AACnC,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI;QAC7B;QAEA,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,gBAAgB,EAAE;IACzB;AAEA,IAAA,YAAY,CAAC,EAAE,SAAS,EAAE,OAAO,EAA0C,EAAA;AACzE,QAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS;AACjC,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO;AAE7B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,QAAQ,EAAE;QACjB;IACF;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,YAAA,SAAS,EAAE,IAAI,CAAC,gBAAgB,IAAI,EAAE;AACtC,YAAA,OAAO,EAAE,IAAI,CAAC,cAAc,IAAI;AACjC,SAAA,CAAC;IACJ;AAEA,IAAA,mBAAmB,CAAC,KAAa,EAAA;AAC/B,QAAA,MAAM,UAAU,GAAG,KAAK,GAAG,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QAE5B,IAAI,UAAU,EAAE;AACd,YAAA,MAAM,QAAQ,GAAGF,eAAqB,CACpC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,MAAM,CAC5D;YAED,IAAI,SAAS,GAAkB,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;YAEtD,IAAI,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE;AAC5C,gBAAA,SAAS,GAAG,IAAI,CAAC,cAAc;YACjC;YAEA,IAAI,CAAC,gBAAgB,GAAGA,eAAqB,CAAC,SAAS,CAAC;YACxD,IAAI,CAAC,cAAc,GAAGA,eAAqB,CAAC,QAAQ,CAAC;QACvD;aAAO;AACL,YAAA,MAAM,QAAQ,GAAGA,eAAqB,CACpC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,CAC5D;YAED,IAAI,OAAO,GAAkB,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;YAEpD,IAAI,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE;AACzC,gBAAA,OAAO,GAAG,IAAI,CAAC,cAAc;YAC/B;YAEA,IAAI,CAAC,gBAAgB,GAAGA,eAAqB,CAAC,QAAQ,CAAC;YACvD,IAAI,CAAC,cAAc,GAAGA,eAAqB,CAAC,OAAO,CAAC;QACtD;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,QAAQ,EAAE;QACjB;IACF;AAEA,IAAA,sBAAsB,CAAC,KAAY,EAAA;AACjC,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC;IACrC;AAEA,IAAA,oBAAoB,CAAC,KAAY,EAAA;AAC/B,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC;IACtC;IAEA,YAAY,CAAC,KAAa,EAAE,OAAgB,EAAA;QAC1C,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;AAC7B,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;QAC1B;aAAO;AACL,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAC7B;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,QAAQ,EAAE;QACjB;IACF;AAEA,IAAA,gBAAgB,CAAC,MAA2B,EAAA;AAC1C,QAAA,IAAI,CAAC,MAAM;YAAE;AACb,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAGE,cAAoB,CAAC,IAAI,EAAE,MAAM,CAAC;AACpD,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,aAAa;AAC5C,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,cAAc;IAChD;+GA5OW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,EASf,gBAAgB,CAAA,EAAA,UAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAGhB,gBAAgB,CAAA,EAAA,WAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAGhB,gBAAgB,CAAA,EAAA,kBAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAGhB,gBAAgB,CAAA,EAAA,uBAAA,EAAA,CAAA,yBAAA,EAAA,yBAAA,EAGhB,gBAAgB,CAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5EtC,47HAkGA,EAAA,MAAA,EAAA,CAAA,muCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED7DI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,EAAA,KAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,eAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,oBAAoB,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,oBAAoB,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,6BAA6B,kNAC7B,oCAAoC,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAU3B,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBArBpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,OAAA,EACpB;wBACP,YAAY;wBACZ,WAAW;wBACX,iBAAiB;wBACjB,qBAAqB;wBACrB,oBAAoB;wBACpB,oBAAoB;wBACpB,qBAAqB;wBACrB,6BAA6B;wBAC7B;qBACD,EAAA,IAAA,EAGK;AACJ,wBAAA,aAAa,EAAE,mBAAmB;AAClC,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,MAAM,EAAE;AACT,qBAAA,EAAA,QAAA,EAAA,47HAAA,EAAA,MAAA,EAAA,CAAA,muCAAA,CAAA,EAAA;;sBAGA;;sBAIA;;sBAIA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC;;sBAMA;;sBAMA;;sBAEA;;sBAMA;;sBA0FA,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;;;AE7L3C;;;;AAI6B;;ACJ7B;;;;AAI6B;MA2BhB,sBAAsB,CAAA;AAOjC,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,EAAE,GAAG,UAAU,GAAG,EAAE,EAAE;IAC9D;AAMA,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI;IAC/B;AAEA,IAAA,WAAA,GAAA;AAxBA,QAAA,IAAA,CAAA,IAAI,GAA4B,KAAK,CAAa,IAAI,2EAAC;QAEvD,IAAA,CAAA,QAAQ,GAA+C,KAAK,CAAC,KAAK,gFAChE,SAAS,EAAE,gBAAgB,EAAA,CAC3B;QAOQ,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;;AAe3D,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;IACnB;+GA5BW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,6jBAPvB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,qXAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAOD,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAZlC,SAAS;oCACO,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B,gBAAgB,cACd,IAAI,EAAA,QAAA,EAEN,EAAE,EAAA,IAAA,EACN;AACJ,wBAAA,aAAa,EAAE,gBAAgB;AAC/B,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,MAAM,EAAE;AACT,qBAAA,EAAA,MAAA,EAAA,CAAA,qXAAA,CAAA,EAAA;;sBASA,WAAW;uBAAC,OAAO;;sBASnB;;;AC/CH;;;;AAI6B;;ACJ7B;;;;AAI6B;MAqDhB,6BAA6B,CAAA;AAqBxC,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI;IAC/B;AAEA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;IAClD;AAEA,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC;IAC/D;AAEA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,YAAY,KAAK,GAAG;IAClC;AAEA,IAAA,WAAA,GAAA;QAzCS,IAAA,CAAA,QAAQ,GAAW,CAAC;QAIpB,IAAA,CAAA,KAAK,GAAsB,SAAS;QAEpC,IAAA,CAAA,IAAI,GAAe,IAAI;QAEvB,IAAA,CAAA,IAAI,GAAqB,SAAS;QAIlC,IAAA,CAAA,QAAQ,GAAG,CAAC,CAAC;AAEZ,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAmC;QAE9D,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC;;AA2BnE,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;IACnB;IAEA,UAAU,GAAA;QACR,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACzC;+GAjDW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,0BAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtC9B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,mvCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA9BS,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,IAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAuCpB,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAzCzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,OAAA,EACzB,CAAC,qBAAqB,CAAC,EAAA,QAAA,EACtB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BT,EAAA,IAAA,EAEK;AACJ,wBAAA,oBAAoB,EAAE,0BAA0B;AAChD,wBAAA,KAAK,EAAE,sBAAsB;AAC7B,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,iBAAiB,EAAE;AACpB,qBAAA,EAAA,MAAA,EAAA,CAAA,mvCAAA,CAAA,EAAA;;sBAGA;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;sBAMA;;;AC9EH;;;;AAI6B;;ACJ7B;;;;AAI6B;;ACJ7B;;;;AAI6B;MAqBhB,sBAAsB,CAAA;AAHnC,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAA+B,IAAI,GAAG,EAAE,+EAAC;AAC1D,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAA8B,IAAI,GAAG,EAAE,qFAAC;AAC/D,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAsB,IAAI,GAAG,EAAE,oFAAC;AACtD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAsB,IAAI,GAAG,EAAE,sFAAC;AAuYjE,IAAA;IArYC,SAAS,CAAC,UAAkB,EAAE,MAAuB,EAAA;QACnD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,KAAI;AAC/B,YAAA,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;AAChC,YAAA,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC;AAC/B,YAAA,OAAO,OAAO;AAChB,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,SAAS,CAAC,UAAkB,EAAA;QAC1B,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC;IACxC;AAEA,IAAA,MAAM,CAAC,UAAkB,EAAA;AACvB,QAAA,OAAO,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxD;AAEA,IAAA,sBAAsB,CAAC,UAAkB,EAAA;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC;AAC9C,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa;AAAE,YAAA,OAAO,EAAE;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE;QACjF,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClF;AAEA,IAAA,gBAAgB,CAAC,UAAkB,EAAA;QACjC,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;IACpD;AAEA,IAAA,aAAa,CAAC,UAAkB,EAAA;AAC9B,QAAA,OAAO,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACpE;IAEA,cAAc,CAAC,UAAkB,EAAE,SAAiB,EAAA;AAClD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;AAC3D,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC;IACjD;IAEA,gBAAgB,CAAC,UAAkB,EAAE,OAAuB,EAAA;QAC1D,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,UAAU,KAAI;AACxC,YAAA,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC;AACrC,YAAA,OAAO,OAAO;AAChB,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,SAAS,CACP,UAAkB,EAClB,MAAoB,EACpB,KAAkG,EAAA;QAElG,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC;YAAE;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,KAAK,CAAC;AAC9D,QAAA,MAAM,YAAY,GAAiB;YACjC,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK;YACL,WAAW;YACX,IAAI,EAAE,MAAM,CAAC;SACd;QACD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,KAAI;AACrC,YAAA,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;YAChC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;AACpD,YAAA,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,GAAG,cAAc,EAAE,YAAY,CAAC,CAAC;AAC1D,YAAA,OAAO,OAAO;AAChB,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,YAAY,CACV,UAAkB,EAClB,SAAiB,EACjB,MAAoB,EACpB,KAAkG,EAAA;QAElG,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,KAAK,CAAC;AAC9D,QAAA,MAAM,aAAa,GAAiB;YAClC,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK;YACL,WAAW;YACX,IAAI,EAAE,MAAM,CAAC;SACd;QACD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,KAAI;AACrC,YAAA,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;YAChC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;AACpD,YAAA,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC;AAClE,YAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAChB,gBAAA,MAAM,UAAU,GAAG,CAAC,GAAG,cAAc,CAAC;AACtC,gBAAA,UAAU,CAAC,KAAK,CAAC,GAAG,aAAa;AACjC,gBAAA,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC;YACrC;AACA,YAAA,OAAO,OAAO;AAChB,QAAA,CAAC,CAAC;IACJ;IAEA,YAAY,CAAC,UAAkB,EAAE,SAAiB,EAAA;QAChD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,KAAI;AACrC,YAAA,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;YAChC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;YACpD,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;AAC1E,YAAA,OAAO,OAAO;AAChB,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,eAAe,CAAC,UAAkB,EAAA;QAChC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,KAAI;AACrC,YAAA,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;AAChC,YAAA,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC;AAC3B,YAAA,OAAO,OAAO;AAChB,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;IACpC;AAEA,IAAA,cAAc,CAAC,UAAkB,EAAA;QAC/B,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;IACnD;AAEA,IAAA,WAAW,CAAC,UAAkB,EAAA;AAC5B,QAAA,OAAO,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACnE;IAEA,cAAc,CAAC,UAAkB,EAAE,KAAa,EAAA;QAC9C,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,KAAI;AACnC,YAAA,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC;AAC/B,YAAA,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC;AAC9B,YAAA,OAAO,OAAO;AAChB,QAAA,CAAC,CAAC;IACJ;;AAIA,IAAA,eAAe,CAAC,UAAkB,EAAA;QAChC,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;IACrD;IAEA,eAAe,CAAC,UAAkB,EAAE,KAAa,EAAA;QAC/C,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,KAAI;AAClC,YAAA,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;AAC5B,YAAA,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC;AAC9B,YAAA,OAAO,OAAO;AAChB,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,iBAAiB,CAAC,UAAkB,EAAA;QAClC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,KAAI;AAClC,YAAA,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;AAC5B,YAAA,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;AAC1B,YAAA,OAAO,OAAO;AAChB,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,QAAQ,CAAC,UAAkB,EAAA;QACzB,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;QACrD,OAAO;AACL,YAAA,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;AACvC,YAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;AAC1C,YAAA,IAAI,YAAY,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE;SACzC;IACH;AAEA,IAAA,KAAK,CAAC,UAAkB,EAAA;AACtB,QAAA,OAAO,QAAQ,CAAC,OAAO;AACrB,YAAA,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;AACvC,YAAA,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;YAC1C,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI;AACnD,SAAA,CAAC,CAAC;IACL;;AAIA;;;;;;;AAOG;AACH,IAAA,0BAA0B,CACxB,UAAkB,EAClB,KAAa,EACb,SAAiB,EAAA;QAEjB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC;AAC9C,QAAA,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM;AAAE,YAAA,OAAO,EAAE;QAE7C,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC;;QAGhD,IAAI,UAAU,GAAG,SAAS;AAC1B,QAAA,OAAO,UAAU,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;AAAE,YAAA,UAAU,EAAE;QACjF,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC;;QAGrD,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,uCAAuC,CAAC;QAChF,IAAI,YAAY,EAAE;AAChB,YAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC;AAChC,YAAA,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC;AACnC,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC;AAClE,YAAA,IAAI,KAAK,EAAE,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE;gBAC3D,OAAO,KAAK,CAAC;qBACV,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;AACzE,qBAAA,GAAG,CAAC,CAAC,CAAC,MAAM;AACX,oBAAA,IAAI,EAAE,OAAgB;oBACtB,KAAK,EAAE,CAAC,CAAC,WAAW;oBACpB,QAAQ,EAAE,CAAC,CAAC,KAAK;oBACjB,WAAW,EAAE,CAAC,CAAC;AAChB,iBAAA,CAAC,CAAC;YACP;AACA,YAAA,OAAO,EAAE;QACX;QAEA,MAAM,KAAK,GAA6B,EAAE;AAC1C,QAAA,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,EAAE;;AAG9C,QAAA,MAAM,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,OAAO,EAAE;QACrE,MAAM,YAAY,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;;AAGjD,QAAA,MAAM,SAAS,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM;AACxD,QAAA,MAAM,UAAU,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM;AACzD,QAAA,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU;;AAGzC,QAAA,MAAM,aAAa,GACjB,YAAY,KAAK,GAAG;AACpB,YAAA,iCAAiC,CAAC,IAAI,CAAC,eAAe,CAAC;QAEzD,IAAI,aAAa,EAAE;YACjB,IAAI,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;AAC7C,gBAAA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;YACpE,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;AAC5C,gBAAA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QACpE;;AAGA,QAAA,IAAI,UAAU,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;AACrE,YAAA,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;QACvE;;AAGA,QAAA,MAAM,CAAC;AACJ,aAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;aACzD,OAAO,CAAC,CAAC,CAAC,KACT,KAAK,CAAC,IAAI,CAAC;AACT,YAAA,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,QAAQ,EAAE,CAAC,CAAC,GAAG;YACf,WAAW,EAAE,CAAC,CAAC,GAAG;YAClB,WAAW,EAAE,CAAC,CAAC;AAChB,SAAA,CAAC,CACH;AAEH,QAAA,OAAO,KAAK;IACd;AAEA;;;;;;;AAOG;AACH,IAAA,iBAAiB,CAAC,GAAW,EAAA;AAC3B,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;AAAE,YAAA,OAAO,EAAE;QAE1B,MAAM,MAAM,GAAyB,EAAE;QACvC,IAAI,CAAC,GAAG,CAAC;AACT,QAAA,IAAI,cAAwC;QAE5C,MAAM,MAAM,GAAG,MAAK;YAClB,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG;AAAE,gBAAA,CAAC,EAAE;AAC9C,QAAA,CAAC;QAED,MAAM,QAAQ,GAAG,MAAa;YAC5B,MAAM,KAAK,GAAG,CAAC;YACf,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG;AAAE,gBAAA,CAAC,EAAE;YAChF,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;AAChC,QAAA,CAAC;QAED,MAAM,UAAU,GAAG,MAA+B;YAChD,MAAM,UAAU,GAA6B,EAAE;AAC/C,YAAA,IAAI,aAAuC;AAC3C,YAAA,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACvC,gBAAA,MAAM,EAAE;gBACR,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG;oBAAE;AACvC,gBAAA,MAAM,IAAI,GAAG,QAAQ,EAAE;gBACvB,IAAI,CAAC,IAAI,EAAE;AAAE,oBAAA,CAAC,EAAE;oBAAE;gBAAU;AAC5B,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;gBAChC,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,EAAE;oBACrC,aAAa,GAAG,KAAqB;gBACvC;qBAAO;oBACL,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,aAAa,CAAC;AAC3D,oBAAA,IAAI,IAAI;AAAE,wBAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC/B,aAAa,GAAG,SAAS;gBAC3B;YACF;AACA,YAAA,OAAO,UAAU;AACnB,QAAA,CAAC;AAED,QAAA,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE;AACrB,YAAA,MAAM,EAAE;AACR,YAAA,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM;gBAAE;AAErB,YAAA,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBAClB,CAAC,EAAE,CAAC;AACJ,gBAAA,MAAM,UAAU,GAAG,UAAU,EAAE;AAC/B,gBAAA,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG;oBAAE,CAAC,EAAE,CAAC;AACxB,gBAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;oBACzB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,cAAc,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;oBACrF,cAAc,GAAG,SAAS;gBAC5B;YACF;iBAAO;AACL,gBAAA,MAAM,IAAI,GAAG,QAAQ,EAAE;gBACvB,IAAI,CAAC,IAAI,EAAE;AAAE,oBAAA,CAAC,EAAE;oBAAE;gBAAU;AAC5B,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;gBAChC,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,EAAE;oBACrC,cAAc,GAAG,KAAqB;gBACxC;qBAAO;oBACL,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC;oBACvD,IAAI,IAAI,EAAE;AACR,wBAAA,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,cAAc,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC7F,cAAc,GAAG,SAAS;oBAC5B;gBACF;YACF;QACF;AAEA,QAAA,OAAO,MAAM;IACf;IAEQ,oBAAoB,CAC1B,KAAa,EACb,SAAwB,EAAA;QAExB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,uCAAuC,CAAC;AAClE,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;QACvB,OAAO;AACL,YAAA,IAAI,SAAS,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;AACnC,YAAA,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACf,YAAA,QAAQ,EAAE,KAAK,CAAC,CAAC,CAA0B;AAC3C,YAAA,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;SACrB;IACH;IAEQ,sBAAsB,CAC5B,MAAoB,EACpB,KAAkG,EAAA;AAElG,QAAA,QAAQ,MAAM,CAAC,IAAI;AACjB,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,KAAe;YAExB,KAAK,MAAM,EAAE;gBACX,MAAM,SAAS,GAAG,KAA+C;gBACjE,IAAI,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,OAAO,EAAE;oBAC5C,OAAO,CAAA,EAAG,SAAS,CAAC,SAAS,MAAM,SAAS,CAAC,OAAO,CAAA,CAAE;gBACxD;AACA,gBAAA,OAAO,EAAE;YACX;YAEA,KAAK,UAAU,EAAE;gBACf,MAAM,aAAa,GAAG,KAAuC;AAC7D,gBAAA,IAAI,aAAa,CAAC,GAAG,KAAK,SAAS,IAAI,aAAa,CAAC,GAAG,KAAK,SAAS,EAAE;oBACtE,OAAO,CAAA,EAAG,aAAa,CAAC,GAAG,MAAM,aAAa,CAAC,GAAG,CAAA,CAAE;gBACtD;AAAO,qBAAA,IAAI,aAAa,CAAC,GAAG,KAAK,SAAS,EAAE;AAC1C,oBAAA,OAAO,CAAA,GAAA,EAAM,aAAa,CAAC,GAAG,EAAE;gBAClC;AAAO,qBAAA,IAAI,aAAa,CAAC,GAAG,KAAK,SAAS,EAAE;AAC1C,oBAAA,OAAO,CAAA,IAAA,EAAO,aAAa,CAAC,GAAG,EAAE;gBACnC;AACA,gBAAA,OAAO,EAAE;YACX;YAEA,KAAK,QAAQ,EAAE;gBACb,MAAM,WAAW,GAAG,KAAiB;gBACrC,IAAI,WAAW,EAAE,MAAM,IAAI,MAAM,CAAC,aAAa,EAAE;AAC/C,oBAAA,OAAO;yBACJ,GAAG,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,EAAE,WAAW,IAAI,GAAG;yBACvF,IAAI,CAAC,IAAI,CAAC;gBACf;AACA,gBAAA,OAAO,EAAE;YACX;AAEA,YAAA;AACE,gBAAA,OAAO,MAAM,CAAC,KAAK,CAAC;;IAE1B;+GA1YW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cAFrB,MAAM,EAAA,CAAA,CAAA;;4FAEP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACxBD;;;;AAI6B;MAuKhB,+BAA+B,CAAA;AAuC1C,IAAA,WAAA,GAAA;AApCQ,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAEjD,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,yEAAU;QAC9B,IAAA,CAAA,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAmB;QACjC,IAAA,CAAA,WAAW,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AAEnB,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAuB;;QAKvE,IAAA,CAAA,YAAY,GAAG,EAAE;QACjB,IAAA,CAAA,UAAU,GAAG,EAAE;QACf,IAAA,CAAA,iBAAiB,GAA6B,EAAE;QAChD,IAAA,CAAA,uBAAuB,GAAG,CAAC,CAAC;;QAG5B,IAAA,CAAA,aAAa,GAAG,KAAK;QACrB,IAAA,CAAA,eAAe,GAAuB,IAAI;AAE1C,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC5B,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;YACpB,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS;AACpE,QAAA,CAAC,oFAAC;AAEF,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,aAAa,IAAI,EAAE,uFAAC;AAE5E,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CACzB,MAAM,IAAI,CAAC,WAAW,EAAE,IAAI,8CAA8C,uFAC3E;AAED,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAC7B,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;AACpB,YAAA,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,KAAK;AACvD,QAAA,CAAC,qFAAC;QAqNF,IAAA,CAAA,SAAS,GAAG,MAAK;AACf,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC5B,QAAA,CAAC;QApNC,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;AACpB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;YACzB,IAAI,CAAC,IAAI,GAAG;gBAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;AAC/C,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;AACN,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;AACpB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;QACzB,IAAI,CAAC,IAAI,GAAG;YAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;AAC7C,QAAA,IAAI,CAAC;YAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;IAC7D;IAEA,eAAe,GAAA;QACb,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE;YAC5C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;QACrD;IACF;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;AACpB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;AACzB,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE;YACrD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;QACjC;IACF;AAEA,IAAA,WAAW,KAAU;;AAIb,IAAA,aAAa,CAAC,KAAa,EAAA;AACjC,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AAAE,YAAA,OAAO,EAAE;;QAG5B,IAAI,KAAK,GAAG,CAAC;AACb,QAAA,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE;YACtB,IAAI,EAAE,KAAK,GAAG;AAAE,gBAAA,KAAK,EAAE;iBAClB,IAAI,EAAE,KAAK,GAAG;AAAE,gBAAA,KAAK,EAAE;YAC5B,IAAI,KAAK,GAAG,CAAC;AAAE,gBAAA,OAAO,2BAA2B;QACnD;QACA,IAAI,KAAK,KAAK,CAAC;AAAE,YAAA,OAAO,2BAA2B;;QAGnD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;QACpE,MAAM,YAAY,GAAG,kCAAkC;AACvD,QAAA,IAAI,KAA6B;AACjC,QAAA,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE;YAClD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5B,gBAAA,OAAO,oBAAoB,KAAK,CAAC,CAAC,CAAC,GAAG;YACxC;QACF;AACA,QAAA,OAAO,EAAE;IACX;;AAIQ,IAAA,WAAW,CAAC,EAAuB,EAAA;AACzC,QAAA,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;QACxB,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAA,EAAA,CAAI;IAC1C;;AAIA,IAAA,YAAY,CAAC,QAA6B,EAAA;AACxC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;AACpB,QAAA,IAAI,CAAC,CAAC;YAAE;AACR,QAAA,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAC/D,CAAC,EACD,QAAQ,CAAC,KAAK,EACd,QAAQ,CAAC,cAAc,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CACjD;IACH;AAEA,IAAA,eAAe,CAAC,QAA6B,EAAA;AAC3C,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;IAC5B;AAEA,IAAA,YAAY,CAAC,QAA6B,EAAA;AACxC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;AACpB,QAAA,IAAI,CAAC,CAAC;YAAE;QACR,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpD,QAAA,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAC/D,CAAC,EACD,QAAQ,CAAC,KAAK,EACd,QAAQ,CAAC,cAAc,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CACjD;IACH;IAEA,SAAS,CAAC,KAAoB,EAAE,QAA6B,EAAA;AAC3D,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;AAC1B,YAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;AAC3B,YAAA,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;YACjC;QACF;QAEA,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;AACrC,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;gBAC7B,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,GAAG,CACrC,IAAI,CAAC,uBAAuB,GAAG,CAAC,EAChC,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAClC;gBACD;YACF;AACA,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;gBAC3B,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC7E;YACF;YACA,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,KAAK,IAAI,CAAC,uBAAuB,IAAI,CAAC,EAAE;gBACvF,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,QAAQ,CAAC;gBACvF;YACF;QACF;;AAGA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,KAAK,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE;YAC7D,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,UAAU,EAAE;QACnB;IACF;IAEA,kBAAkB,CAAC,IAA4B,EAAE,QAA6B,EAAA;AAC5E,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;AACpB,QAAA,IAAI,CAAC,CAAC;YAAE;QAER,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM;AAClE,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC;QAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC;;QAGxD,IAAI,UAAU,GAAG,SAAS;AAC1B,QAAA,OAAO,UAAU,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;AAAE,YAAA,UAAU,EAAE;AAEjF,QAAA,IAAI,WAAmB;AAEvB,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;YACzB,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC;YACrD,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,uCAAuC,CAAC;AAC3E,YAAA,WAAW,GAAG;kBACV,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACvE,kBAAE,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,WAAW;QAC5D;aAAO;AACL,YAAA,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,WAAW;QACtE;AAEA,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,GAAG,SAAS;QAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC;AACvD,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;AAC3B,QAAA,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;QAEjC,UAAU,CAAC,MAAK;YACd,QAAQ,CAAC,KAAK,EAAE;AAChB,YAAA,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM;AACpC,YAAA,QAAQ,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC;AAChD,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC1B,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAC/D,CAAC,EACD,IAAI,CAAC,YAAY,EACjB,SAAS,CACV;AACH,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;QACT,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;AAC3B,YAAA,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC;QACnC,CAAC,EAAE,GAAG,CAAC;IACT;IAEA,UAAU,GAAA;AACR,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;AACpB,QAAA,IAAI,CAAC,CAAC;YAAE;QACR,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QACxC,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,CAAC,UAAU,EAAE;YACjB;QACF;QACA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;QAC7C,IAAI,IAAI,CAAC,UAAU;YAAE;QACrB,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC;AACvD,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACzD;IAEA,UAAU,GAAA;AACR,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE;AACpB,QAAA,IAAI,CAAC;AAAE,YAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACpB,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;QAC3B,IAAI,IAAI,CAAC,cAAc;YAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;AAC5E,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACxD;;AAIA,IAAA,UAAU,CAAC,KAAiB,EAAA;QAC1B,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,wBAAwB,EAAE;AAChC,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,aAA4B;AACzD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;IAC3B;+GAxPW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,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,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,mBAAA,EAAA,qBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,6BAAA,EAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA1HhC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmHT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,okKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA5HC,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,eAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACrB,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,EAAA,KAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,mBAAmB,wDACnB,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,0BAAA,EAAA,8BAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FA4Hb,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAtI3C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAAA,OAAA,EAC5B;wBACP,YAAY;wBACZ,WAAW;wBACX,qBAAqB;wBACrB,iBAAiB;wBACjB,qBAAqB;wBACrB,qBAAqB;wBACrB,mBAAmB;wBACnB;qBACD,EAAA,QAAA,EACS,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmHT,EAAA,IAAA,EAEK;AACJ,wBAAA,oBAAoB,EAAE,6BAA6B;AACnD,wBAAA,KAAK,EAAE;AACR,qBAAA,EAAA,MAAA,EAAA,CAAA,okKAAA,CAAA,EAAA;;sBAWA;;sBAEA,SAAS;uBAAC,YAAY;;;ACtLzB;;;;AAI6B;;ACJ7B;;;;AAI6B;;ACJ7B;;;;AAI6B;AA8E7B,MAAM,UAAU,GAAiE;IAC/E,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,CAAC;IAClE,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC;IAC9C,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC;AACjD,IAAA,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK;CACrB;AAED,MAAM,SAAS,GAAmE;IAChF,IAAI,EAAE,IAAI,GAAG,CAAuB;QAClC,IAAI;QACJ,KAAK;QACL,MAAM;QACN,UAAU;QACV,aAAa;QACb,WAAW;QACX,SAAS;QACT;KACD,CAAC;AACF,IAAA,QAAQ,EAAE,IAAI,GAAG,CAAuB,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AACzF,IAAA,IAAI,EAAE,IAAI,GAAG,CAAuB,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAC5F,MAAM,EAAE,IAAI,GAAG,CAAuB,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC;CAChE;AAED,MAAM,UAAU,GAAG,IAAI,GAAG,CAAwB,CAAC,UAAU,CAAC,CAAC;AAE/D,MAAM,YAAY,GAAG,IAAI,GAAG,CAAwB,CAAC,SAAS,CAAC,CAAC;AAE1D,SAAU,qBAAqB,CAAC,IAAyB,EAAA;AAC7D,IAAA,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE;AACpD;AAEM,SAAU,YAAY,CAC1B,IAAyB,EACzB,SAA2C,EAAA;IAE3C,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE;IACvC,IAAI,CAAC,SAAS,EAAE,MAAM;AAAE,QAAA,OAAO,QAAQ;AAEvC,IAAA,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC;AACjC,IAAA,IAAI,CAAC,SAAS;AAAE,QAAA,OAAO,QAAQ;IAE/B,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,KAAK,KAAI;AAClD,QAAA,OAAO,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,KAAK;AACzE,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,QAAQ;AAC9C;AAEM,SAAU,mBAAmB,CACjC,MAAsE,EACtE,MAAqC,EAAA;AAErC,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,EAAE;AACtB,IAAA,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9E;AAEM,SAAU,OAAO,CAAC,SAAgC,EAAA;AACtD,IAAA,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;AAAE,QAAA,OAAO,CAAC;AACvC,IAAA,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;AAAE,QAAA,OAAO,CAAC;AACzC,IAAA,OAAO,CAAC;AACV;AAEM,SAAU,OAAO,CACrB,IAAyB,EACzB,SAAgC,EAAA;IAEhC,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,MAAM;IAEzD,QAAQ,IAAI;AACV,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,QAAQ;AACjB,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,YAAY,GAAG,UAAU;AAC7D,QAAA;AACE,YAAA,OAAO,OAAO;;AAEpB;AAEM,SAAU,UAAU,CAAC,GAAoB,EAAA;AAC7C,IAAA,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;AAC1E;AAEM,SAAU,WAAW,CAAC,IAAgC,EAAA;AAC1D,IAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;QACzC,OAAO;YACL,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,SAAS,EAAE,GAAG,CAAC,SAAiC;YAChD,QAAQ,EAAE,GAAG,CAAC;SACf;AACH,IAAA,CAAC,CAAC;AACJ;AAEM,SAAU,aAAa,CAC3B,GAAoB,EACpB,SAA+B,EAAA;AAE/B,IAAA,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,SAAS,CAAC;AAC/D,IAAA,IAAI,SAAS;AAAE,QAAA,OAAO,EAAE,GAAG,GAAG,EAAE,SAAS,EAAE;IAC3C,OAAO,EAAE,GAAG,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;AAC5C;AAEM,SAAU,QAAQ,CACtB,GAAoB,EACpB,IAA8E,EAC9E,OAAA,GAA2C,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAA;IAElE,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAiC,CAAC,GAAG,GAAG,CAAC,SAAS,GAAG,EAAE;IAC9F,OAAO,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;AAC7C;;AChMA;;;;AAI6B;AAqB7B;;;;AAIG;AACH,MAAM,SAAS,GAAG,EAAE;AAEpB;;;;;;;;;;;;AAYG;MAiBU,wBAAwB,CAAA;AAiEnC,IAAA,WAAA,GAAA;AAhEiB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AAE9B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAA6B,YAAY,kFAAC;AAE7D,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAsB,QAAQ,2EAAC;;AAG3C,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,4EAAe;AAE9B,QAAA,IAAA,CAAA,OAAO,GAAG,SAAS,CAAC,QAAQ,CAA0B,OAAO,CAAC;;AAG9D,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,CAAC,4EAAC;;AAGjB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,CAAC,8EAAC;;AAGnB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,CAAC,+EAAC;;AAGpB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,CAAC,kFAAC;AAErB,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,iFAAC;AAE9D,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;YAC1B,OAAO,CAAA,EAAG,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,CAAA,CAAA,CAAG;AAC1E,QAAA,CAAC,gFAAC;AAEF;;;;;;AAMG;AACgB,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC7C,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAChC,YAAA,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;AAAE,gBAAA,OAAO,KAAK;AAE1C,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,OAAO,GAAG,KAAK,IAAI,KAAK,CAAC;AAC5D,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;AACvC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;AACzF,YAAA,OAAO,CAAA,EAAG,IAAI,GAAG,QAAQ,IAAI;AAC/B,QAAA,CAAC,kFAAC;;QAOM,IAAA,CAAA,KAAK,GAAG,CAAC;;QAGT,IAAA,CAAA,SAAS,GAAG,IAAI;QAEP,IAAA,CAAA,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE;;QAGzC,IAAA,CAAA,IAAI,GAAoD,IAAI;AAGlE,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACnB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACnB,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;AAChC,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,MAAM,EAAE;IACf;AAEQ,IAAA,MAAM,CAAC,MAAmB,EAAA;QAChC,IAAI,CAAC,MAAM,EAAE;AACb,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM;;;;AAK5B,QAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAK;AAChC,YAAA,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;;;;;AAOnE,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACnE,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC;AACnC,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC;YACzD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AACrF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACrB,IAAI,CAAC,OAAO,EAAE;IAChB;IAEQ,MAAM,GAAA;QACZ,IAAI,CAAC,cAAc,EAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC;AACjE,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS;AAC/B,QAAA,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE;AACjC,QAAA,IAAI,CAAC,cAAc,GAAG,SAAS;QAC/B,IAAI,IAAI,CAAC,KAAK;AAAE,YAAA,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;AAChD,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC;IAChB;AAEA;;;;AAIG;IACK,QAAQ,CAAC,OAAO,GAAG,KAAK,EAAA;AAC9B,QAAA,IAAI,OAAO;AAAE,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QAClC,IAAI,IAAI,CAAC,KAAK;YAAE;QAChB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAK;YAC7C,OAAO,qBAAqB,CAAC,MAAK;AAChC,gBAAA,IAAI,CAAC,KAAK,GAAG,CAAC;gBACd,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEQ,OAAO,GAAA;AACb,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc;AAClC,QAAA,IAAI,CAAC,MAAM;YAAE;QAEb,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY;;;AAItD,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;YACtB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,aAAa;AAC1C,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC;AACrE,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC;AACvE,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC;QAC3E;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;IACtE;AAEU,IAAA,aAAa,CAAC,KAAmB,EAAA;AACzC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc;AAClC,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE;QAEnC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY;QACtD,KAAK,CAAC,cAAc,EAAE;QACrB,KAAK,CAAC,MAAsB,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC;QAEhE,IAAI,CAAC,IAAI,GAAG;AACV,YAAA,KAAK,EAAE,UAAU,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;AACjD,YAAA,aAAa,EAAE,UAAU,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC;SACxD;IACH;AAEU,IAAA,aAAa,CAAC,KAAmB,EAAA;AACzC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM;YAAE;QAE3B,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAClE,QAAA,MAAM,WAAW,GAAG,UAAU,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM;QAC3D,IAAI,WAAW,IAAI,CAAC;YAAE;;;;AAKtB,QAAA,MAAM,KAAK,GAAG,UAAU,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,YAAY;QACnE,MAAM,KAAK,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK;AAC5E,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,KAAK,IAAI,KAAK,GAAG,WAAW,CAAC;AAE3E,QAAA,IAAI,UAAU;AAAE,YAAA,MAAM,CAAC,UAAU,GAAG,WAAW;;AAC1C,YAAA,MAAM,CAAC,SAAS,GAAG,WAAW;IACrC;AAEU,IAAA,WAAW,CAAC,KAAmB,EAAA;QACvC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE;AAChB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;QACf,KAAK,CAAC,MAAsB,CAAC,qBAAqB,GAAG,KAAK,CAAC,SAAS,CAAC;IACxE;;AAGU,IAAA,kBAAkB,CAAC,KAAmB,EAAA;AAC9C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc;QAClC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,IAAI;YAAE;QAEhD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,YAAY;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAClE,QAAA,MAAM,MAAM,GAAG,UAAU,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM;QACtD,IAAI,MAAM,IAAI,CAAC;YAAE;QAEjB,MAAM,KAAK,GAAG,UAAU,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG;AACjF,QAAA,MAAM,KAAK,GAAG,UAAU,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,YAAY;AACnE,QAAA,MAAM,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,YAAY;AAErE,QAAA,MAAM,WAAW,GAAG,CAAC,KAAK,GAAG,MAAM,IAAI,KAAK,GAAG,OAAO,GAAG,CAAC;AAC1D,QAAA,IAAI,UAAU;AAAE,YAAA,MAAM,CAAC,UAAU,GAAG,WAAW;;AAC1C,YAAA,MAAM,CAAC,SAAS,GAAG,WAAW;IACrC;AAEA;;;;;AAKG;IACH,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACrB,IAAI,CAAC,OAAO,EAAE;IAChB;+GAtNW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,08BC7DrC,icAWA,EAAA,MAAA,EAAA,CAAA,2xCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDkDa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAhBpC,SAAS;+BACE,kBAAkB,EAAA,eAAA,EAGX,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,KAAK,EAAE,gBAAgB;AACvB,wBAAA,aAAa,EAAE,MAAM;AACrB,wBAAA,oCAAoC,EAAE,gCAAgC;AACtE,wBAAA,kCAAkC,EAAE,8BAA8B;AAClE,wBAAA,+BAA+B,EAAE,oBAAoB;AACrD,wBAAA,gCAAgC,EAAE,qBAAqB;AACvD,wBAAA,+BAA+B,EAAE;AAClC,qBAAA,EAAA,QAAA,EAAA,icAAA,EAAA,MAAA,EAAA,CAAA,2xCAAA,CAAA,EAAA;wXAYsE,OAAO,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEvEhF;;;;AAI6B;;ACJ7B;;;;AAI6B;MAsBhB,yBAAyB,CAAA;AAZtC,IAAA,WAAA,GAAA;AAaW,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAS,OAAO,iFAAC;AAEnC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,EAAE,kFAAC;QAE/B,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAExD,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAQ;AACnC,IAAA;+GARY,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,orBC1BtC,mWAYA,EAAA,MAAA,EAAA,CAAA,mhGAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDca,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAZrC,SAAS;+BACE,oBAAoB,EAAA,eAAA,EAGb,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,aAAa,EAAE,oBAAoB;AACnC,wBAAA,KAAK,EAAE,kBAAkB;AACzB,wBAAA,oCAAoC,EAAE;AACvC,qBAAA,EAAA,QAAA,EAAA,mWAAA,EAAA,MAAA,EAAA,CAAA,mhGAAA,CAAA,EAAA;;;AExBH;;;;AAI6B;MA+BhB,6BAA6B,CAAA;AAlB1C,IAAA,WAAA,GAAA;AAmBW,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAA+B,MAAM,+EAAC;AAEtD,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAgB,IAAI,+EAAC;AAErC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AAEzB,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAgB,IAAI,kFAAC;QAExC,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAEvD,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAExD,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAExD,IAAA,CAAA,WAAW,GAAG,MAAM,EAAQ;AAMtC,IAAA;IAJW,OAAO,GAAA;QACf,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;IACzB;+GApBW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,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,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,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,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uCAAA,EAAA,YAAA,EAAA,uCAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnC1C,kpBAqBA,EAAA,MAAA,EAAA,CAAA,iyFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDFY,uBAAuB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAgBtB,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAlBzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAAA,OAAA,EAC1B,CAAC,uBAAuB,CAAC,EAAA,eAAA,EAGjB,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,aAAa,EAAE,yBAAyB;AACxC,wBAAA,KAAK,EAAE,uBAAuB;AAC9B,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,yCAAyC,EAAE,YAAY;AACvD,wBAAA,yCAAyC,EAAE,YAAY;AACvD,wBAAA,sBAAsB,EAAE,yBAAyB;AACjD,wBAAA,sBAAsB,EAAE,oBAAoB;AAC5C,wBAAA,SAAS,EAAE;AACZ,qBAAA,EAAA,QAAA,EAAA,kpBAAA,EAAA,MAAA,EAAA,CAAA,iyFAAA,CAAA,EAAA;;;AEjCH;;;;AAI6B;MAkChB,yBAAyB,CAAA;AAyBpC,IAAA,WAAA,GAAA;AAxBiB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AAEtB,QAAA,IAAA,CAAA,MAAM,GAAG,SAAS,CAA0B,OAAO,6EAAC;AAEpD,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,KAAK,mFAAC;QAIpC,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,KAAK,kFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE1D,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAS,EAAE,wFAAC;QAErC,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,IAAI,kFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEzD,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,GAAG,gFAAC;QAE9B,IAAA,CAAA,cAAc,GAAG,MAAM,EAAU;QAEhC,IAAA,CAAA,WAAW,GAAG,EAAE;AAEP,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;YAC3C,OAAO,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;AACjD,QAAA,CAAC,gFAAC;AAGA,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa;AAC1C,YAAA,IAAI,CAAC,KAAK;gBAAE;AAEZ,YAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAK;AAChC,gBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,MAAK;AACvC,oBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;AACpE,gBAAA,CAAC,CAAC;AACF,gBAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;AAC7B,gBAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;oBAC3C,OAAO,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC;AACvC,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;YAEF,SAAS,CAAC,MAAK;AACb,gBAAA,OAAO,IAAI,CAAC,UAAU,EAAE;AAC1B,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEQ,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;IAC5B;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,UAAU,EAAE;IACnB;AAEU,IAAA,aAAa,CAAC,KAAa,EAAA;AACnC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;IACjC;+GA1DW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAzB,yBAAyB,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,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,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,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtCtC,6tBA0BA,EAAA,MAAA,EAAA,CAAA,2iFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDEY,WAAW,onBAAE,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,eAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAA,EAAA,MAAA,EAAA,KAAA,EAAA,KAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAU3E,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAZrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,WACrB,CAAC,WAAW,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,qBAAqB,CAAC,EAAA,eAAA,EAGtE,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,aAAa,EAAE,oBAAoB;AACnC,wBAAA,KAAK,EAAE;AACR,qBAAA,EAAA,QAAA,EAAA,6tBAAA,EAAA,MAAA,EAAA,CAAA,2iFAAA,CAAA,EAAA;8FAK4D,OAAO,EAAA,EAAA,QAAA,EAAA,IAAA,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,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,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,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,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEzCtE;;;;AAI6B;AAS7B,SAAS,YAAY,CACnB,MAAe,EACf,KAAa,EACb,GAAW,EACX,SAAwB,EAAA;AAExB,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG;IACjC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,KAAK,GAAG,GAAG;AACxC,IAAA,MAAM,SAAS,GAAG,SAAS,KAAK,KAAK,GAAG,KAAK,GAAG,OAAO;IAEvD,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CAAC,WAAW,IAAI,CAAC;IAC1D,IAAI,QAAQ,IAAI,CAAC;AAAE,QAAA,OAAO,SAAS;AAEnC,IAAA,MAAM,IAAI,GAAG,CAAC,CAAS,KAAa;QAClC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,QAAQ;AACxC,IAAA,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,CAAC;AAAE,QAAA,OAAO,SAAS;AAErC,IAAA,MAAM,QAAQ,GAAG,SAAS,KAAK,KAAK,GAAG,OAAO,GAAG,KAAK;IACtD,IAAI,IAAI,CAAC,QAAQ,CAAC;AAAE,QAAA,OAAO,QAAQ;AAEnC,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,GAAG,KAAK,CAAC,CAAC;AAC3D;AAEA,SAAS,SAAS,CAAC,IAAiB,EAAA;IAClC,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,SAAS;AAC5C,IAAA,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACjD,IAAA,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;IAC7B,OAAO,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE;AAC/D;AAEA,SAAS,KAAK,CACZ,MAAe,EACf,IAAiB,EACjB,IAAU,EACV,SAAwB,EAAA;AAExB,IAAA,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC;AAC3B,IAAA,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AAClD,IAAA,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAEpD,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,EAAE;IAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,UAAU;IAClD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,WAAW;AAErD,IAAA,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;IACnE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG;IAElC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,SAAS,CAAA,EAAA,CAAI;IACrC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,UAAU,CAAA,EAAA,CAAI;AACzC;AAEA,SAAS,iBAAiB,CAAC,EAAe,EAAA;AACxC,IAAA,IAAI,IAAI,GAAG,EAAE,CAAC,aAAa;IAC3B,OAAO,IAAI,EAAE;QACX,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC;AACvD,QAAA,IAAI,2BAA2B,CAAC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAAE,YAAA,OAAO,IAAI;AACxE,QAAA,IAAI,GAAG,IAAI,CAAC,aAAa;IAC3B;AACA,IAAA,OAAO,IAAI;AACb;AAEA,SAAS,UAAU,CAAC,OAAoB,EAAE,MAAe,EAAA;IACvD,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,YAAY,IAAI,CAAC;IACrD,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,WAAW,IAAI,CAAC;AACpD,IAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;AAAE,QAAA,OAAO,KAAK;IACpC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE;AAAE,QAAA,OAAO,IAAI;IACvD,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE;AAAE,QAAA,OAAO,IAAI;AAEvD,IAAA,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC;AAC3C,IAAA,IAAI,CAAC,QAAQ;AAAE,QAAA,OAAO,KAAK;AAC3B,IAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,qBAAqB,EAAE;IAC7C,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;AAAE,QAAA,OAAO,KAAK;AACrD,IAAA,QACE,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG;AACzB,QAAA,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM;AACzB,QAAA,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI;AACzB,QAAA,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK;AAE7B;AAEA,SAAS,QAAQ,CAAC,IAAiB,EAAA;AACjC,IAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC;IACpC,OAAO;QACL,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;QACrC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI;KACvC;AACH;AAEM,SAAU,UAAU,CACxB,OAAoB,EACpB,IAAiB,EACjB,SAAA,GAA2B,OAAO,EAClC,YAAyB,EAAA;AAEzB,IAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;AAE3B,IAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;AACnB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK;IACzB;IAEA,MAAM,UAAU,GAAG,MAAW;AAC5B,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE;QAC9C,IAAI,YAAY,IAAI,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;AAC/C,YAAA,YAAY,EAAE;YACd;QACF;QACA,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC;AACtC,IAAA,CAAC;AAED,IAAA,MAAM,eAAe,GAAG,CAAC,KAAY,KAAU;AAC7C,QAAA,IAAK,KAAyB,CAAC,YAAY,KAAK,WAAW;AAAE,YAAA,UAAU,EAAE;AAC3E,IAAA,CAAC;AAED,IAAA,MAAM,cAAc,GAAG,CAAC,KAAY,KAAU;AAC5C,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,MAAqB;AACxC,QAAA,IAAI,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;AAAE,YAAA,UAAU,EAAE;AACxC,IAAA,CAAC;AAED,IAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAK;AACvC,QAAA,UAAU,EAAE;AACd,IAAA,CAAC,CAAC;AACF,IAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;AAEtB,IAAA,UAAU,EAAE;AACZ,IAAA,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACjF,IAAA,QAAQ,CAAC,gBAAgB,CAAC,eAAe,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC7F,IAAA,QAAQ,CAAC,gBAAgB,CAAC,cAAc,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3F,IAAA,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhE,IAAA,OAAO,MAAK;QACV,QAAQ,CAAC,UAAU,EAAE;AACrB,QAAA,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACrE,QAAA,QAAQ,CAAC,mBAAmB,CAAC,eAAe,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACjF,QAAA,QAAQ,CAAC,mBAAmB,CAAC,cAAc,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC/E,QAAA,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC;AAClD,IAAA,CAAC;AACH;;ACvJA;;;;AAI6B;MAgChB,4BAA4B,CAAA;AA6BvC,IAAA,WAAA,GAAA;AA5BiB,QAAA,IAAA,CAAA,OAAO,GAA4B,MAAM,CAAC,UAAU,CAAC;AAErD,QAAA,IAAA,CAAA,OAAO,GAAG,SAAS,CAA0B,MAAM,8EAAC;AAE5D,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAgB,IAAI,2EAAC;AAEjC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,EAAE,2EAAC;AAExB,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,EAAE,kFAAC;QAE/B,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC,KAAK,uFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAE/D,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAExD,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,KAAK,4EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAEpD,IAAA,CAAA,YAAY,GAAG,MAAM,EAAW;QAEhC,IAAA,CAAA,cAAc,GAAG,MAAM,EAAQ;AAE/B,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;YAC9B,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;AAC/B,QAAA,CAAC,6EAAC;AAEO,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AAC7B,YAAA,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE;AACzD,QAAA,CAAC,4EAAC;AAGA,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;YACnB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa;AAC1C,YAAA,IAAI,CAAC,IAAI;gBAAE;AAEX,YAAA,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAClE,QAAA,CAAC,CAAC;IACJ;IAEQ,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAc,0BAA0B,CAAC,EAAE,KAAK,EAAE;IAC5F;IAEA,MAAM,GAAA;QACJ,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;AACrB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;QAC1B,IAAI,IAAI,CAAC,eAAe,EAAE;YAAE;QAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACtC;AAEA,IAAA,qBAAqB,CAAC,KAAmB,EAAA;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE;AAClB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;QAC1C,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE;AAC3D,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/B;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE;AAClB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,WAAW,EAAE;IACpB;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,WAAW,EAAE;IACpB;+GAjEW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,w5CCpCzC,irBAuBA,EAAA,MAAA,EAAA,CAAA,+6KAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDaa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAhBxC,SAAS;+BACE,uBAAuB,EAAA,eAAA,EAGhB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,aAAa,EAAE,uBAAuB;AACtC,wBAAA,KAAK,EAAE,qBAAqB;AAC5B,wBAAA,mCAAmC,EAAE,QAAQ;AAC7C,wBAAA,qCAAqC,EAAE,UAAU;AACjD,wBAAA,uCAAuC,EAAE,YAAY;AACrD,wBAAA,wBAAwB,EAAE,+BAA+B;AACzD,wBAAA,2BAA2B,EAAE;AAC9B,qBAAA,EAAA,QAAA,EAAA,irBAAA,EAAA,MAAA,EAAA,CAAA,+6KAAA,CAAA,EAAA;+FAK6D,MAAM,EAAA,EAAA,QAAA,EAAA,IAAA,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,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,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,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEvCtE;;;;AAI6B;MAoChB,4BAA4B,CAAA;AA+BvC,IAAA,WAAA,GAAA;AA9BiB,QAAA,IAAA,CAAA,OAAO,GAA4B,MAAM,CAAC,UAAU,CAAC;AAErD,QAAA,IAAA,CAAA,OAAO,GAAG,SAAS,CAA0B,MAAM,8EAAC;AAE5D,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAA6B,MAAM,8EAAC;AAEnD,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,QAAQ,2EAAC;AAE9B,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,EAAE,2EAAC;AAExB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;QAE7B,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAExD,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,KAAK,qFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAE7D,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,KAAK,4EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEpD,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAuB,IAAI,gFAAC;QAE7C,IAAA,CAAA,YAAY,GAAG,MAAM,EAAW;AAEhC,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,GAAG,IAAI;AACpE,QAAA,CAAC,oFAAC;AAEO,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAgB,MAAK;YACpD,OAAO,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AAC1E,QAAA,CAAC,oFAAC;AAGA,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;YACnB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa;AAC1C,YAAA,IAAI,CAAC,IAAI;gBAAE;AAEX,YAAA,SAAS,CACP,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,MAAK;gBACtE,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;YACtC,CAAC,CAAC,CACH;AACH,QAAA,CAAC,CAAC;IACJ;IAEA,MAAM,GAAA;QACJ,IAAI,IAAI,CAAC,QAAQ,EAAE;YAAE;QACrB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACtC;AAEA,IAAA,qBAAqB,CAAC,KAAmB,EAAA;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE;AAClB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;QAC1C,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE;AAC3D,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/B;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE;AAClB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC;aACV,aAAa,CAAc,iCAAiC;cAC3D,KAAK,EAAE;IACb;+GA9DW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,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,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,EAAA,SAAA,EAAA,EAAA,sBAAA,EAAA,+BAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iCAAA,EAAA,wBAAA,EAAA,iCAAA,EAAA,wBAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxCzC,suBA0BA,EAAA,MAAA,EAAA,CAAA,qyKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDDY,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,IAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAepB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAjBxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,OAAA,EACxB,CAAC,qBAAqB,CAAC,EAAA,eAAA,EAGf,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,aAAa,EAAE,uBAAuB;AACtC,wBAAA,KAAK,EAAE,qBAAqB;AAC5B,wBAAA,mCAAmC,EAAE,sBAAsB;AAC3D,wBAAA,mCAAmC,EAAE,sBAAsB;AAC3D,wBAAA,mCAAmC,EAAE,QAAQ;AAC7C,wBAAA,wBAAwB,EAAE,+BAA+B;AACzD,wBAAA,2BAA2B,EAAE;AAC9B,qBAAA,EAAA,QAAA,EAAA,suBAAA,EAAA,MAAA,EAAA,CAAA,qyKAAA,CAAA,EAAA;+FAK6D,MAAM,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,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,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,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,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,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,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,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AE3CtE;;;;AAI6B;AAE7B,IAAI,OAAO,GAAG,KAAK;AAEnB,IAAI,OAAO,qBAAqB,KAAK,UAAU,EAAE;IAC/C,qBAAqB,CAAC,MAAK;QACzB,qBAAqB,CAAC,MAAK;YACzB,OAAO,GAAG,IAAI;AAChB,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AACJ;SAEgB,UAAU,GAAA;AACxB,IAAA,OAAO,OAAO;AAChB;;AClBA;;;;AAI6B;AAEtB,MAAM,SAAS,GAAG,cAAc;AAEjC,SAAU,WAAW,CAAC,SAAsB,EAAA;AAChD,IAAA,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmB;AACzC,IAAA,SAAS,CAAC,gBAAgB,CAAc,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,CAAG,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;QACvE,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC;AACrC,QAAA,IAAI,EAAE;YAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,qBAAqB,EAAE,CAAC;AACpD,IAAA,CAAC,CAAC;AACF,IAAA,OAAO,MAAM;AACf;SAEgB,WAAW,CACzB,SAAsB,EACtB,MAA4B,EAC5B,WAAmB,EAAA;IAEnB,MAAM,KAAK,GAAkB,EAAE;AAE/B,IAAA,SAAS,CAAC,gBAAgB,CAAc,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,CAAG,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;QACvE,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC;AACrC,QAAA,IAAI,CAAC,EAAE;YAAE;QAET,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AAE3B,QAAA,IAAI,CAAC,IAAI;YAAE;AAEX,QAAA,MAAM,EAAE,GAAG,EAAE,CAAC,qBAAqB,EAAE;QACrC,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI;QAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG;AAC5B,QAAA,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;YAAE;AAE1B,QAAA,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;QAC7B,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,EAAE,CAAA,GAAA,EAAM,EAAE,CAAA,EAAA,CAAI;AACtC,QAAA,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AAChB,IAAA,CAAC,CAAC;AAEF,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE;IAExB,KAAK,SAAS,CAAC,WAAW;AAE1B,IAAA,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;AACnB,QAAA,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC;AAChC,QAAA,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE;AACzB,IAAA,CAAC,CAAC;AACJ;;AClDA;;;;AAI6B;AA+E7B,MAAM,cAAc,GAGd;IACJ,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;IACzE,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;IAC5E,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;IAC9E,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;IAC1E,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;IAC7E,EAAE,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;CAC9E;AAED,MAAM,MAAM,GAAG,8BAA8B;AAE7C,MAAM,mBAAmB,GAAG,YAAY;AAExC,MAAM,sBAAsB,GAAG,YAAY;MA6B9B,wBAAwB,CAAA;AA4HnC,IAAA,WAAA,GAAA;AA3HiB,QAAA,IAAA,CAAA,OAAO,GAA4B,MAAM,CAAC,UAAU,CAAC;AAErD,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAE5B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAE7C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAE7B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC;AAEpC,QAAA,IAAA,CAAA,UAAU,GAAG,SAAS,CAAC,wBAAwB,iFAAC;AAEhD,QAAA,IAAA,CAAA,MAAM,GAAG,SAAS,CAAC,QAAQ,CAA0B,OAAO,CAAC;AAE7D,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAC/B,MAAM,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAClD;QAEO,IAAA,CAAA,YAAY,GAAyC,IAAI;AAEhD,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAiC,EAAE,gFAAC;QAE9D,IAAA,CAAA,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAyB;AAEvC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAiC,EAAE,8EAAC;QAEnD,IAAA,CAAA,eAAe,GAAG,MAAM,EAAkC;AAE1D,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAS,sBAAsB,iFAAC;QAElD,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAExD,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,CAAC,+EAAC;AAEnB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,+EAAC;QAE5B,IAAA,CAAA,UAAU,GAAG,UAAU;AAEb,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAA6B,EAAE,2EAAC;AAE7C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAmB,IAAI,gFAAC;AAE1C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,KAAK,kFAAC;AAE3B,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAgB,IAAI,mFAAC;AAE1C,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,EAAE,qFAAC;AAE3B,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,KAAK,2FAAC;AAEpC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,KAAK,oFAAC;QAEtC,IAAA,CAAA,SAAS,GAAG,EAAE;QAEd,IAAA,CAAA,UAAU,GAAG,EAAE;QAEf,IAAA,CAAA,aAAa,GAAkB,IAAI;QAEnC,IAAA,CAAA,cAAc,GAAkB,IAAI;QAEpC,IAAA,CAAA,YAAY,GAAa,EAAE;QAE3B,IAAA,CAAA,SAAS,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QAE1C,IAAA,CAAA,QAAQ,GAAG,EAAE;AAEJ,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,IAAI,EAAE,8EAAC;AAE5D,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;YACjD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,UAAU;AACxC,YAAA,OAAO,IAAI,GAAG,CACZ,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAClF;AACH,QAAA,CAAC,sFAAC;AAEiB,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AACxC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;YACzB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;YAClC,OAAO;gBACL,GAAG,EAAE,GAAG,KAAK,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;gBAC7B,OAAO,EAAE,GAAG,KAAK,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;AAC1C,gBAAA,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE;AACxB,gBAAA,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,EAAE;AAC1B,gBAAA,eAAe,EAAE,IAAI,GAAG,kBAAkB,CAAC,IAAI,EAAE;AACjD,gBAAA,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,EAAE;AAC1B,gBAAA,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE;AAC5B,gBAAA,SAAS,EAAE,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE;AACrC,gBAAA,OAAO,EAAE,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE;AACjC,gBAAA,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI;aACzB;AACH,QAAA,CAAC,6EAAC;AAEiB,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;YAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,IAAI,EAAE;YACrC,OAAO,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;AAC/E,gBAAA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE;AACxC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,oFAAC;AAEiB,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;YAC5C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YACxD,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACvF,QAAA,CAAC,iFAAC;AAEiB,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;YAC9C,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YACxD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAChE,QAAA,CAAC,mFAAC;AAEiB,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,oFAAC;AAEnE,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAChD,YAAA,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,GAAG,MAAM,GAAG,MAAM;AACnD,QAAA,CAAC,qFAAC;AAEiB,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC7C,YAAA,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,GAAG,QAAQ,GAAG,UAAU;AACzD,QAAA,CAAC,kFAAC;AAEiB,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC/C,YAAA,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,GAAG,cAAc,GAAG,cAAc;AACnE,QAAA,CAAC,oFAAC;QAGA,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE;YAC/B,SAAS,CAAC,MAAK;AACb,gBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;oBAAE;AAC/B,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC5B,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CACX,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;oBACtB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC;oBACrE,OAAO;wBACL,GAAG,EAAE,MAAM,CAAC,GAAG;wBACf,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,IAAI,EAAE,MAAM,EAAE,IAAI;wBAClB,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,SAAS,EAAE,MAAM,CAAC,SAAS;wBAC3B,QAAQ,EAAE,MAAM,CAAC;qBAClB;gBACH,CAAC,CAAC,CACH;gBACD,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAAE;YACtB,SAAS,CAAC,MAAK;AACb,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;gBAC3B,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACrC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAE/C,eAAe,CAAC,MAAK;AACnB,YAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC/D,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC;YAC7C,UAAU,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;AACnD,QAAA,CAAC,CAAC;IACJ;IAEQ,aAAa,CACnB,GAAoB,EACpB,OAAwC,EAAA;QAExC,IAAI,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,GAAG;QACrD,OAAO,EAAE,GAAG,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE;IAC1C;AAEQ,IAAA,YAAY,CAAC,GAAoB,EAAA;AACvC,QAAA,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE;YACnB,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YACxB;QACF;AAEA,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AACnB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACrD;AAEQ,IAAA,SAAS,CAAC,GAAoB,EAAA;QACpC,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;QAE3B,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,QAAQ;AAEpC,QAAA,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AACxB,YAAA,KAAK,QAAQ;gBACX,IAAI,CAAC,YAAY,GAAG,KAAK,EAAE,IAAI,KAAK,WAAW,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE;gBACxE;AACF,YAAA,KAAK,OAAO;AACV,gBAAA,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE;AAC3B,oBAAA,IAAI,CAAC,aAAa,GAAG,KAAK,EAAE,IAAI,KAAK,QAAQ,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI;AAClE,oBAAA,IAAI,CAAC,cAAc,GAAG,MAAM,EAAE,IAAI,KAAK,QAAQ,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI;gBACvE;qBAAO;AACL,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,EAAE,IAAI,KAAK,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,EAAE;AAC1D,oBAAA,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,IAAI,KAAK,MAAM,GAAG,MAAM,CAAC,KAAK,GAAG,EAAE;gBAC/D;gBACA;AACF,YAAA,KAAK,UAAU;AACb,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,EAAE,IAAI,KAAK,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,EAAE;gBACzD;AACF,YAAA,KAAK,YAAY;gBACf,IAAI,CAAC,SAAS,GAAG;AACf,oBAAA,SAAS,EAAE,KAAK,EAAE,IAAI,KAAK,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,EAAE;AACpD,oBAAA,OAAO,EAAE,MAAM,EAAE,IAAI,KAAK,MAAM,GAAG,MAAM,CAAC,KAAK,GAAG;iBACnD;AAED,gBAAA,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS;oBAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;gBAC5D;AACF,YAAA;gBACE;;IAEN;AAEQ,IAAA,SAAS,CAAC,GAAoB,EAAA;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AAE/B,QAAA,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YACxB,KAAK,QAAQ,EAAE;AACb,gBAAA,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;AAAE,oBAAA,OAAO,IAAI;AAC/C,gBAAA,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAChE;YAEA,KAAK,OAAO,EAAE;AACZ,gBAAA,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE;AAC3B,oBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa;AAC/B,oBAAA,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS;AAAE,wBAAA,OAAO,IAAI;AACpD,oBAAA,IAAI,CAAC,KAAK;wBAAE,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAEpD,oBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc;AAC9B,oBAAA,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,SAAS;AAAE,wBAAA,OAAO,IAAI;oBAEhD,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC;oBACxD,OAAO;AACL,wBAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;AAC9B,wBAAA,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI;qBAC9B;gBACH;gBAEA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AAClC,gBAAA,IAAI,CAAC,IAAI;AAAE,oBAAA,OAAO,IAAI;AACtB,gBAAA,IAAI,CAAC,KAAK;oBAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;gBAElD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACpC,gBAAA,IAAI,CAAC,KAAK;AAAE,oBAAA,OAAO,IAAI;gBACvB,OAAO;AACL,oBAAA,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;AAC7B,oBAAA,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK;iBAC7B;YACH;YAEA,KAAK,UAAU,EAAE;gBACf,IAAI,CAAC,IAAI,CAAC,QAAQ;AAAE,oBAAA,OAAO,IAAI;AAC/B,gBAAA,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjD;YAEA,KAAK,YAAY,EAAE;gBACjB,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS;AAC7C,gBAAA,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO;AAAE,oBAAA,OAAO,IAAI;gBACvC,OAAO;AACL,oBAAA,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE;AAClC,oBAAA,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;iBAC/B;YACH;AAEA,YAAA;AACE,gBAAA,OAAO,IAAI;;IAEjB;AAEQ,IAAA,KAAK,CAAC,KAAa,EAAA;AACzB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,IAAI,KAAK;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CACzC,KAAK,EACL,QAAQ,EACR,EAAE,EACF,OAAO,EACP,IAAI,CAAC,SAAS,IAAI,OAAO,CAC1B;QAED,IAAI,MAAM,KAAK,IAAI;AAAE,YAAA,OAAO,EAAE;AAE9B,QAAA,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC;AAE1C,QAAA,OAAO,MAAM,GAAG,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,GAAG,MAAM;IAChD;AAEQ,IAAA,QAAQ,CAAC,GAAW,EAAA;AAC1B,QAAA,IAAI,CAAC,GAAG;AAAE,YAAA,OAAO,EAAE;AACnB,QAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC;QAE5B,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;AAAE,YAAA,OAAO,GAAG;QAC9C,OAAO,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,sBAAsB,CAAC;IACpE;IAEQ,IAAI,CAAC,GAAW,EAAE,IAAuB,EAAA;QAC/C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IACnC;IAEQ,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,UAAU,EAAE;IACnB;AAEQ,IAAA,SAAS,CAAC,SAAiB,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG,KAAK,SAAS,CAAC;IAClE;AAEQ,IAAA,cAAc,CAAC,OAAyC,EAAA;AAC9D,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AACvD,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,CAAC,GAAG,OAAO,CAAC;QAC9B,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9E;IAEQ,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;AACnB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACpB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;AAC/C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEQ,IAAA,UAAU,CAAC,QAAwC,EAAA;QACzD,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACxC,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;AAAE,YAAA,OAAO,KAAK;QACpD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,KAAK,KAAI;AACrC,YAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC7B,YAAA,QACE,MAAM,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG;AACxB,gBAAA,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;AACpC,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC;AAEtE,QAAA,CAAC,CAAC;IACJ;IAEQ,MAAM,GAAA;QACZ,IAAI,CAAC,YAAY,EAAE;QAEnB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAAE;AAEvC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5B,QAAA,IAAI,IAAI,IAAI,CAAC,EAAE;YACb,IAAI,CAAC,OAAO,EAAE;YACd;QACF;AAEA,QAAA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,MAAK;AAClC,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;YACxB,IAAI,CAAC,OAAO,EAAE;QAChB,CAAC,EAAE,IAAI,CAAC;IACV;IAEQ,OAAO,GAAA;QACb,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACxC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;IACpC;IAEQ,YAAY,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI;YAAE;AAChC,QAAA,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC;AAC/B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;IAC1B;IAEQ,eAAe,CAAC,SAAsB,EAAE,OAA0B,EAAA;AACxE,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;AACrB,YAAA,MAAM,IAAI,GAAG,SAAS,CAAC,aAAa,CAAc,CAAA,CAAA,EAAI,SAAS,CAAA,EAAA,EAAK,EAAE,CAAA,EAAA,CAAI,CAAC;AAC3E,YAAA,IAAI,CAAC,IAAI;gBAAE;YACX,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAA,EAAA,CAAI;YACxC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAA,EAAA,CAAI;AACtC,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;AAClC,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,SAAS,CAAC,SAAsB,EAAA;QACtC,MAAM,GAAG,GAAG,SAAS,CAAC,aAAa,CAAc,sBAAsB,CAAC;AACxE,QAAA,IAAI,CAAC,GAAG;YAAE;QAEV,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACrC,QAAA,IAAI,CAAC,IAAI;YAAE;AAEX,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACpE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,IAAI,GAAG,GAAG,CAAC,qBAAqB,EAAE,CAAC,KAAK;QAE5F,IAAI,MAAM,IAAI,CAAC;YAAE;AACjB,QAAA,GAAG,CAAC,UAAU,IAAI,MAAM;IAC1B;AAEQ,IAAA,cAAc,CAAC,GAAgB,EAAA;AACrC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAc,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,CAAG,CAAC,CAAC;AAC7E,QAAA,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE;YACzD,IAAI,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ;AAAE,gBAAA,OAAO,KAAK,CAAC,KAAK,CAAC;QAC/E;AACA,QAAA,OAAO,IAAI;IACb;AAEQ,IAAA,QAAQ,CACd,MAAkB,EAClB,OAAA,GAA6D,EAAE,EAAA;QAE/D,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,OAAO;AAC/C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;AAC5C,QAAA,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC;AACrC,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC;AAExC,QAAA,MAAM,EAAE;QAER,eAAe,CACb,MAAK;AACH,YAAA,IAAI,MAAM;AAAE,gBAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;YACrC,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AACtC,YAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC;QACtC,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAC7B;IACH;IAEQ,iBAAiB,GAAA;AACvB,QAAA,eAAe,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAC3E;IAEQ,YAAY,GAAA;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,aAAa;QACvC,OAAO,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,GAAG,CAAC;IAC9C;IAEQ,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE;QAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IAC7C;AAEU,IAAA,aAAa,CAAC,KAAY,EAAA;AAClC,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,MAA4B;QAC/C,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAAE;QAEvD,IAAI,CAAC,aAAa,EAAE;IACtB;AAEU,IAAA,aAAa,CAAC,QAA+B,EAAA;AACrD,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,EAAE;AACxB,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE;IACjD;IAEU,MAAM,CAAC,MAAc,EAAE,IAAuB,EAAA;AACtD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9B,QAAA,OAAO,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;IAC/D;AAEU,IAAA,cAAc,CAAC,SAAiB,EAAA;AACxC,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC;IACzD;IAEU,YAAY,CAAC,OAAyC,EAAE,KAAa,EAAA;AAC7E,QAAA,OAAO,KAAK,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI;IACrE;AAEU,IAAA,aAAa,CAAC,GAAoB,EAAA;QAC1C,QACE,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AACnC,YAAA,mBAAmB,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC;IAEtE;AAEU,IAAA,QAAQ,CAAC,GAAoB,EAAA;QACrC,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC;IACzC;AAEU,IAAA,eAAe,CAAC,GAAoB,EAAA;QAC5C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,MAAM;IACtC;AAEU,IAAA,OAAO,CAAC,GAAoB,EAAA;QACpC,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC;IACrC;AAEU,IAAA,SAAS,CAAC,GAAoB,EAAA;QACtC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,QAAQ;AAEpC,QAAA,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YACxB,KAAK,QAAQ,EAAE;AACb,gBAAA,IAAI,KAAK,EAAE,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;AAAE,oBAAA,OAAO,EAAE;gBACvE,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC3B,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,QAAQ,IAAI,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACvF;gBACA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACvF,OAAO,MAAM,EAAE,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/C;YAEA,KAAK,OAAO,EAAE;AACZ,gBAAA,MAAM,KAAK,GAAG,CAAC,OAA6B,KAAY;AACtD,oBAAA,IAAI,OAAO,EAAE,IAAI,KAAK,QAAQ;wBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAChE,oBAAA,IAAI,OAAO,EAAE,IAAI,KAAK,MAAM;wBAAE,OAAO,OAAO,CAAC,KAAK;AAClD,oBAAA,OAAO,EAAE;AACX,gBAAA,CAAC;AACD,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AAAE,oBAAA,OAAO,KAAK,CAAC,KAAK,CAAC;gBAC3C,OAAO,CAAA,EAAG,KAAK,CAAC,KAAK,CAAC,CAAA,GAAA,EAAM,KAAK,CAAC,MAAM,CAAC,CAAA,CAAE;YAC7C;AAEA,YAAA,KAAK,UAAU;gBACb,OAAO,KAAK,EAAE,IAAI,KAAK,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;YAEjE,KAAK,YAAY,EAAE;gBACjB,IAAI,KAAK,EAAE,IAAI,KAAK,MAAM,IAAI,MAAM,EAAE,IAAI,KAAK,MAAM;AAAE,oBAAA,OAAO,EAAE;AAChE,gBAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YACzE;AAEA,YAAA;AACE,gBAAA,OAAO,EAAE;;IAEf;AAEU,IAAA,gBAAgB,CAAC,GAAoB,EAAA;AAC7C,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,WAAW,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM;IACrE;AAEU,IAAA,eAAe,CAAC,GAAoB,EAAA;AAC5C,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,aAAa,IAAI,EAAE;IACrD;AAEU,IAAA,SAAS,CAAC,GAAoB,EAAA;AACtC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,EAAE;IAC/C;AAEU,IAAA,SAAS,CAAC,GAAoB,EAAA;AACtC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,EAAE;IAC/C;AAEU,IAAA,gBAAgB,CAAC,KAAa,EAAA;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC;AACvC,QAAA,IAAI,CAAC,MAAM;YAAE;AAEb,QAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;AAEnC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAC5B;YACE,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;AACjB,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,QAAQ,EAAE;AACX,SAAA,EACD,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAC7C;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAK;AACjB,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAE3B,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;YAE1C,IAAI,GAAG,CAAC,SAAS;AAAE,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;;AACpC,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AACjE,QAAA,CAAC,CAAC;QAEF,IAAI,GAAG,CAAC,SAAS;YAAE,IAAI,CAAC,MAAM,EAAE;IAClC;IAEU,gBAAgB,CAAC,GAAoB,EAAE,KAAa,EAAA;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC;AAC1C,QAAA,IAAI,CAAC,MAAM;YAAE;QAEb,IAAI,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE;YAC1B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC;YAC/B;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC;YAAE;AAErC,QAAA,IAAI,CAAC,QAAQ,CACX,MAAK;YACH,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;AAE3B,YAAA,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC;YACtE,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAC7B,QAAQ,CACN,GAAG,EACH;gBACE,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC;AACd,aAAA,EACD,OAAO,CACR,EACD,OAAO,CACR;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;YAEpF,IAAI,IAAI,CAAC,SAAS;AAAE,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;;AACtC,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AAC/D,QAAA,CAAC,EAED,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CACtC;QAED,IAAI,CAAC,MAAM,EAAE;IACf;IAEU,iBAAiB,CAAC,GAAoB,EAAE,SAA+B,EAAA;QAC/E,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC;AAE1C,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAK;AACjB,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;AACpF,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACzB,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE;IACf;AAEU,IAAA,mBAAmB,CAAC,IAAa,EAAA;AACzC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,IAAI;YAAE;AACX,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,UAAU,EAAE;IACnB;IAEU,oBAAoB,CAAC,GAAoB,EAAE,IAAa,EAAA;AAChE,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,CAAC,UAAU,EAAE;YACjB;QACF;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC;IAChC;IAEU,qBAAqB,CAAC,GAAoB,EAAE,IAAa,EAAA;QACjE,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,CAAC,UAAU,EAAE;YACjB;QACF;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC;IACjC;IAEU,iBAAiB,CAAC,GAAoB,EAAE,IAAa,EAAA;QAC7D,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,CAAC,UAAU,EAAE;YACjB;QACF;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC;IAC7B;IAEU,WAAW,CAAC,GAAoB,EAAE,GAAW,EAAA;AACrD,QAAA,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;YAAE;AAEzB,QAAA,IAAI,GAAG,KAAK,QAAQ,EAAE;AACpB,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YAC/C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;YAC9B;QACF;AAEA,QAAA,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC;AAChE,QAAA,IAAI,CAAC,QAAQ;YAAE;AAEf,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;QAEnD,IAAI,CAAC,SAAS,GAAG;AACf,YAAA,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,mBAAmB,CAAC;AAC7C,YAAA,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,mBAAmB;SACzC;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IACnB;IAEU,YAAY,CACpB,GAAoB,EACpB,KAA6C,EAAA;AAE7C,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;QACtB,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE;AACpC,YAAA,UAAU,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;QAC1C;IACF;IAEU,iBAAiB,GAAA;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;IAC7B;AAEU,IAAA,cAAc,CAAC,KAAa,EAAA;QACpC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK;AAClD,cAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,KAAK;cACjD,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;IACnC;AAEU,IAAA,OAAO,CAAC,GAAoB,EAAA;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AACpC,QAAA,IAAI,CAAC,QAAQ;YAAE;AAEf,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAK;YACjB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAI;AACxB,gBAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;AAClF,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE;AACnB,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE;IACf;AAEU,IAAA,QAAQ,CAAC,GAAoB,EAAA;AACrC,QAAA,IAAI,CAAC,QAAQ,CACX,MAAK;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YACvE,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG;AAAE,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AAC/D,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,GAAG,CAAC,GAAG;AAAE,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;YAChE,IAAI,CAAC,UAAU,EAAE;AACnB,QAAA,CAAC,EACD,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CACtC;QAED,IAAI,CAAC,MAAM,EAAE;IACf;IAEU,UAAU,GAAA;AAClB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC;AAEjD,QAAA,IAAI,CAAC,QAAQ,CACX,MAAK;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AACjB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;YAC3B,IAAI,CAAC,UAAU,EAAE;QACnB,CAAC,EACD,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAC3B;QAED,IAAI,CAAC,MAAM,EAAE;IACf;+GA3uBW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,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,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iCAAA,EAAA,YAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,EAAA,SAAA,EATxB,CAAC,YAAY,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAoBe,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3IlE,i3XAuRA,EAAA,MAAA,EAAA,CAAA,ivMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED/KI,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,qBAAqB,qLACrB,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,sBAAsB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,6BAA6B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC7B,4BAA4B,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,4BAA4B,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAC5B,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,eAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACrB,iBAAiB,8aACjB,wBAAwB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAaf,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBA3BpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,OAAA,EACpB;wBACP,WAAW;wBACX,qBAAqB;wBACrB,wBAAwB;wBACxB,sBAAsB;wBACtB,yBAAyB;wBACzB,yBAAyB;wBACzB,6BAA6B;wBAC7B,4BAA4B;wBAC5B,4BAA4B;wBAC5B,qBAAqB;wBACrB,iBAAiB;wBACjB;qBACD,EAAA,SAAA,EAGU,CAAC,YAAY,CAAC,EAAA,eAAA,EACR,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,aAAa,EAAE,mBAAmB;AAClC,wBAAA,KAAK,EAAE,iBAAiB;AACxB,wBAAA,mCAAmC,EAAE;AACtC,qBAAA,EAAA,QAAA,EAAA,i3XAAA,EAAA,MAAA,EAAA,CAAA,ivMAAA,CAAA,EAAA;AAauC,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,wBAAwB,iEAEM,OAAO,EAAA,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,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,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,iBAAA,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,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,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;;AE7I/E;;;;AAI6B;;ACJ7B;;;;AAI6B;MA8ChB,wBAAwB,CAAA;AAiCnC,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE;AACtD,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ;QAChC;QAEA,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AAEtB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;IAIA,IACI,KAAK,CAAC,KAAU,EAAA;QAClB,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,KAAK,KAAK,SAAS,EAAE;AAChD,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YACrB,IAAI,CAAC,UAAU,EAAE;QACnB;IACF;AAEA,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;IACpB;AAIA,IAAA,WAAA,CAAgC,SAAmC,EAAA;QAAnC,IAAA,CAAA,SAAS,GAAT,SAAS;AAjEhC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;QAElC,IAAA,CAAA,IAAI,GAAW,YAAY;QAE3B,IAAA,CAAA,QAAQ,GAAY,KAAK;QAEzB,IAAA,CAAA,OAAO,GAAY,KAAK;QAExB,IAAA,CAAA,EAAE,GAAQ,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;AAE1D,QAAA,IAAA,CAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;AAEzB,QAAA,IAAA,CAAA,UAAU,GAAQ,MAAK,EAAE,CAAC;QAE1B,IAAA,CAAA,MAAM,GAAG,IAAI;AAEd,QAAA,IAAA,CAAA,SAAS,GAAqB,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAE;QAEhF,IAAA,CAAA,OAAO,GAAY,KAAK;AAExB,QAAA,IAAA,CAAA,MAAM,GAAwB,KAAK,CAAS,CAAC,6EAAC;AAE9C,QAAA,IAAA,CAAA,SAAS,GAAwB,KAAK,CAAS,SAAS,gFAAC;AAEzD,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAClC,YAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAI;AACpD,gBAAA,OAAO,EAAE;AACX,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,mFAAC;QAoBF,IAAA,CAAA,SAAS,GAAY,KAAK;AAkBxB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;QACrC;AAEA,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI;QAClC;IACF;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CACjE,uBAAuB,CACT;AAEhB,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,GAAG,EAAE,GAAG,KAAK,CAAC,YAAY,GAAG,EAAE;YAEhE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;gBAC9B,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,CAAA,EAAG,MAAM,CAAA,EAAA,CAAI;gBAClD,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,CAAA,EAAG,MAAM,CAAA,EAAA,CAAI;AACnD,YAAA,CAAC,CAAC;QACJ;IACF;IAEQ,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;YACnB,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;IAEQ,aAAa,GAAA;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;AAEzC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IACvB;AAEQ,IAAA,cAAc,CAAC,KAAuB,EAAA;AAC5C,QAAA,MAAM,IAAI,GAAqB,KAAK,CAAC,kBAAsC;QAE3E,IAAI,EAAE,KAAK,EAAE;IACf;AAEQ,IAAA,kBAAkB,CAAC,KAAuB,EAAA;AAChD,QAAA,MAAM,QAAQ,GAAqB,KAAK,CAAC,sBAA0C;QAEnF,QAAQ,EAAE,KAAK,EAAE;IACnB;AAEQ,IAAA,iBAAiB,CAAC,KAAa,EAAA;QACrC,MAAM,KAAK,GAAa,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE;QAEtE,KAAK,CAAC,OAAO,CAAC,CAAC,KAAa,EAAE,KAAa,KAAI;YAC7C,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK;AACpC,QAAA,CAAC,CAAC;IACJ;IAEO,SAAS,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW;IACnC;IAEO,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE;QACzC;IACF;IAEO,SAAS,CAAC,KAAoB,EAAE,KAAa,EAAA;AAClD,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;QAC9C,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK;AAExC,QAAA,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK;AACrB,QAAA,MAAM,IAAI,GAAwB;YAChC,SAAS,EAAE,MAAW;AACpB,gBAAA,IAAI,KAAK,CAAC,KAAK,KAAK,EAAE,EAAE;AACtB,oBAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;gBAChC;YACF,CAAC;YACD,MAAM,EAAE,MAAW;AACjB,gBAAA,IAAI,KAAK,CAAC,KAAK,KAAK,EAAE,EAAE;AACtB,oBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;gBAC5B;YACF,CAAC;YACD,SAAS,EAAE,MAAW;AACpB,gBAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,oBAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;oBAE9B,KAAK,CAAC,cAAc,EAAE;gBACxB;YACF,CAAC;YACD,OAAO,EAAE,MAAW;AAClB,gBAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,oBAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;oBAE9B,KAAK,CAAC,cAAc,EAAE;gBACxB;YACF,CAAC;YACD,UAAU,EAAE,MAAW;AACrB,gBAAA,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE;AACzB,oBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;oBAE1B,KAAK,CAAC,cAAc,EAAE;gBACxB;YACF,CAAC;YACD,SAAS,EAAE,MAAW;AACpB,gBAAA,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE;AACzB,oBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;oBAE1B,KAAK,CAAC,cAAc,EAAE;gBACxB;YACF;SACD;AAED,QAAA,IAAI,IAAI,CAAC,GAAmB,CAAC,EAAE;AAC7B,YAAA,IAAI,CAAC,GAAmB,CAAC,EAAE;QAC7B;IACF;IAEO,OAAO,CAAC,KAAY,EAAE,KAAa,EAAA;AACxC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAC9C,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK;AAEvB,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;YAE7B,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/B;aAAO;AACL,YAAA,KAAK,CAAC,KAAK,GAAG,KAAK;QACrB;QAEA,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK;QAExC,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE;AACxC,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAC5B;QAEA,IAAI,CAAC,aAAa,EAAE;IACtB;AAEO,IAAA,OAAO,CAAC,KAAqB,EAAA;QAClC,KAAK,CAAC,cAAc,EAAE;AAEtB,QAAA,MAAM,UAAU,GAAW,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE;AAC5E,QAAA,MAAM,KAAK,GAAa,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAEpE,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;YAC7B,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK;AACpC,QAAA,CAAC,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE;AACrC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE;QACtD;QAEA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE;YACtC,IAAI,CAAC,MAAM,EAAE;QACf;QAEA,IAAI,CAAC,aAAa,EAAE;IACtB;IAEO,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;AAEO,IAAA,OAAO,CAAC,KAAiB,EAAA;AAC9B,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;QAE9C,KAAK,CAAC,MAAM,EAAE;QACd,IAAI,CAAC,QAAQ,EAAE;IACjB;AAEO,IAAA,UAAU,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACpB;AAEO,IAAA,gBAAgB,CAAC,EAAO,EAAA;AAC7B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEO,IAAA,iBAAiB,CAAC,EAAO,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEO,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;+GAhQW,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAb,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,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,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAiCf,gBAAgB,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAtCzB;;AAET,YAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,wBAAwB;SACzE,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChDH,6lBAmBA,0gBDoBY,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAWV,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAfpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,OAAA,EAGpB,CAAC,WAAW,CAAC,EAAA,IAAA,EAChB;AACJ,wBAAA,aAAa,EAAE,mBAAmB;AAClC,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,MAAM,EAAE;qBACT,EAAA,SAAA,EACU;;AAET,wBAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,0BAA0B;AACzE,qBAAA,EAAA,QAAA,EAAA,6lBAAA,EAAA,MAAA,EAAA,CAAA,mdAAA,CAAA,EAAA;;0BAsEY;;sBAnCZ,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAoBrC;;sBAaA,YAAY;uBAAC,WAAW;;;AEpH3B;;;;AAI6B;;ACJ7B;;;;AAI6B;MAqFhB,6BAA6B,CAAA;AAaxC,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE;AACtD,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ;QAChC;QACA,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AAEtB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;AAIA,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK;IAC9F;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;IAIA,IACI,KAAK,CAAC,KAAU,EAAA;QAClB,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,KAAK,KAAK,SAAS,EAAE;AAChD,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACrB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACxB;IACF;AAEA,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;IACpB;AAIA,IAAA,WAAA,CAA+B,SAAmC,EAAA;QAAnC,IAAA,CAAA,SAAS,GAAT,SAAS;QArD/B,IAAA,CAAA,QAAQ,GAAG,CAAC;QAEZ,IAAA,CAAA,OAAO,GAAkB,EAAE;QAE3B,IAAA,CAAA,OAAO,GAAkB,EAAE;QAmBpC,IAAA,CAAA,SAAS,GAAY,KAAK;QA4B1B,IAAA,CAAA,MAAM,GAAkB,IAAI;AAQ5B,QAAA,IAAA,CAAA,SAAS,GAAqB,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAE;AAE/D,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAEzC,IAAA,CAAA,EAAE,GAAW,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,0BAA0B,CAAC;QAExE,IAAA,CAAA,OAAO,GAAY,KAAK;QAEf,IAAA,CAAA,IAAI,GAAW,kBAAkB;AAEjC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AAEjC,QAAA,IAAA,CAAA,WAAW,GACnB,MAAM,CAAyE,UAAU,CAAC;AAE5F,QAAA,IAAA,CAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;AAEzB,QAAA,IAAA,CAAA,UAAU,GAAQ,MAAK,EAAE,CAAC;QAE1B,IAAA,CAAA,WAAW,GAAG,KAAK;QAEnB,IAAA,CAAA,SAAS,GAAG,EAAE;QAEd,IAAA,CAAA,OAAO,GAAG,EAAE;QAEZ,IAAA,CAAA,cAAc,GAAW,EAAE;QAE3B,IAAA,CAAA,cAAc,GAAW,EAAE;QAU3B,IAAA,CAAA,YAAY,GAAG,MAAK;AAClB,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;YACxB,IAAI,CAAC,aAAa,EAAE;AACtB,QAAA,CAAC;AA7CC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;QACrC;IACF;AA+BA,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE;AAC9B,YAAA,OAAO,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,uBAAuB,CAAC;QACxF;AAEA,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa;IACvC;AAOA,IAAA,kBAAkB,KAAU;IAE5B,WAAW,CAAC,OAAsB,EAAA,EAAS;AAE3C,IAAA,WAAW,KAAU;AAErB,IAAA,gBAAgB,CAAC,KAAiB,EAAA;QAChC,KAAK,CAAC,cAAc,EAAE;QACtB,IAAI,CAAC,aAAa,EAAE;IACtB;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;YACnB,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;AAEQ,IAAA,WAAW,CAAC,KAAU,EAAA;AAC5B,QAAA,IAAI;AACF,YAAA,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI;AACtC,gBAAA,SAAS,EAAE,EAAE;AACb,gBAAA,OAAO,EAAE;aACV;AACD,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO;QACxB;QAAE,OAAO,CAAC,EAAE;;QAEZ;IACF;IAEQ,aAAa,GAAA;QACnB,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK;AACzC,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC;AACjC,gBAAA,SAAS,EAAE;AACZ,aAAA,CAAC;QACJ;IACF;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;QACnB,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,KAAK,KAAK,SAAS,EAAE;AAChD,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACrB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACxB;IACF;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACzB;IACF;AAEA,IAAA,YAAY,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,YAAA,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK;AACpC,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,YAAA,IAAI,SAAS,IAAI,OAAO,EAAE;gBACxB,IAAI,CAAC,YAAY,EAAE;YACrB;QACF;QAAE,OAAO,CAAC,EAAE;;QAEZ;IACF;+GAhMW,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAapB,gBAAgB,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAmBhB,gBAAgB,CAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,sCAAA,EAAA,WAAA,EAAA,qCAAA,EAAA,SAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,SAAA,EA/CzB;;AAET,YAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,6BAA6B;SAC9E,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhCS,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+IAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAlCC,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,8BACnB,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,0BAAA,EAAA,8BAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FA8Cf,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAtDzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAAA,OAAA,EAC1B;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,qBAAqB;wBACrB,sBAAsB;wBACtB;qBACD,EAAA,QAAA,EACS,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BT,EAAA,SAAA,EAEU;;AAET,wBAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,+BAA+B;qBAC9E,EAAA,IAAA,EACK;AACJ,wBAAA,oBAAoB,EAAE,2BAA2B;AACjD,wBAAA,KAAK,EAAE,uBAAuB;AAC9B,wBAAA,wCAAwC,EAAE,WAAW;AACrD,wBAAA,uCAAuC,EAAE,SAAS;AAClD,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,iBAAiB,EAAE,0BAA0B;AAC7C,wBAAA,SAAS,EAAE,YAAY;AACvB,wBAAA,QAAQ,EAAE;AACX,qBAAA,EAAA,MAAA,EAAA,CAAA,+IAAA,CAAA,EAAA;;0BA8DY;;sBAzDZ,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAExB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAExB;;sBAEA;;sBAEA;;sBAEA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAmBrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAYrC;;;ACrIH;;;;AAI6B;;ACJ7B;;;;AAI6B;MA4FhB,qBAAqB,CAAA;AAmChC,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE;AACtD,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ;QAChC;QACA,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AAEtB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;AAEA,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK;IAC9F;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;IAIA,IACI,KAAK,CAAC,KAAU,EAAA;AAClB,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;AACzB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QACvB;IACF;AAEA,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;IACpB;AAyCA,IAAA,WAAA,CACU,OAAgB,EAChB,iBAAoC,EACpC,gBAAkC,EACtB,SAAmC,EAAA;QAH/C,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QACJ,IAAA,CAAA,SAAS,GAAT,SAAS;QAtGtB,IAAA,CAAA,QAAQ,GAAG,CAAC;AAEX,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAE;QAEZ,IAAA,CAAA,WAAW,GAAG,EAAE;QAG3C,IAAA,CAAA,OAAO,GAAG,KAAK;QAGf,IAAA,CAAA,UAAU,GAAG,IAAI;QAGjB,IAAA,CAAA,iBAAiB,GAAG,EAAE;QAGtB,IAAA,CAAA,IAAI,GAAG,QAAQ;QA2Cf,IAAA,CAAA,MAAM,GAAG,IAAI;QAEb,IAAA,CAAA,aAAa,GAAG,EAAE;QAEV,IAAA,CAAA,UAAU,GAAsB,IAAI;AAEpC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAEvB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAElD,QAAA,IAAA,CAAA,SAAS,GAAqB,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAE;AAEtE,QAAA,IAAA,CAAA,WAAW,GACnB,MAAM,CAAyE,UAAU,CAAC;QAEnF,IAAA,CAAA,QAAQ,GAAY,KAAK;QAElC,IAAA,CAAA,OAAO,GAAY,KAAK;QAExB,IAAA,CAAA,SAAS,GAAY,KAAK;QAEjB,IAAA,CAAA,EAAE,GAAW,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,gBAAgB,CAAC;QAErD,IAAA,CAAA,OAAO,GAAY,KAAK;AAExB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AAElC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAU;QAEzC,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;QAEjE,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;QAE3E,IAAA,CAAA,gBAAgB,GAAG,KAAK;QAExB,IAAA,CAAA,MAAM,GAAG,KAAK;QAEd,IAAA,CAAA,UAAU,GAAG,EAAE;AAoRf,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,KAAU,KAAI;AAC9B,YAAA,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE;gBAC9B,IAAI,CAAC,YAAY,EAAE;YACrB;AACF,QAAA,CAAC;AAmED,QAAA,IAAA,CAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;AAEzB,QAAA,IAAA,CAAA,UAAU,GAAQ,MAAK,EAAE,CAAC;AArVxB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;QACrC;IACF;IAEQ,aAAa,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE;YAC3B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;QAC/C;IACF;IAEQ,cAAc,GAAA;QACpB,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE;AAEnB,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;AAC5B,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,EAAE;gBACjD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAC3B,oBAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;AACjB,wBAAA,GAAG,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;oBAC7D;AACF,gBAAA,CAAC,CAAC;YACJ;iBAAO;gBACL,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAC3B,oBAAA,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC;AAClD,gBAAA,CAAC,CAAC;YACJ;AAEA,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACvC,QAAA,CAAC,CAAC;IACJ;IAEQ,iBAAiB,GAAA;QACvB,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAC9B,gBAAA,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;AACvB,gBAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAClB,oBAAA,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;gBACtD;AACF,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;AACxC,QAAA,CAAC,CAAC;IACJ;IAEQ,YAAY,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE;YACxB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,GAAG,IAAI;AAC9C,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;YAClB,IAAI,CAAC,aAAa,EAAE;QACtB;IACF;IAEQ,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QACpB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,GAAG,KAAK;AAC/C,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACpB,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;IACvC;IAEQ,YAAY,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QACxB;IACF;IAEQ,qBAAqB,GAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,aAAa,CAC3D,IAAI,IAAI,CAAC,EAAE,CAAA,OAAA,CAAS,CACN;YAEhB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAC3B,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,aAAa,CAC3D,IAAI,GAAG,CAAC,EAAE,CAAA,CAAE,CACS;AACvB,gBAAA,IAAI,CAAC,OAAO;oBAAE;AACd,gBAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE;AAC5B,YAAA,CAAC,CAAC;YAEF,UAAU,CAAC,MAAK;gBACd,OAAO,EAAE,KAAK,EAAE;YAClB,CAAC,EAAE,CAAC,CAAC;AACL,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;QAC/B;QAEA,UAAU,CAAC,MAAK;YACd,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAI;AACzC,gBAAA,OAAO,GAAG,CAAC,QAAQ,EAAE;AACvB,YAAA,CAAC,CAAC;YAEF,IAAI,QAAQ,EAAE;AACZ,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,aAAa,CAC3D,IAAI,QAAQ,CAAC,EAAE,CAAA,CAAE,CACH;AAChB,gBAAA,OAAO,EAAE,cAAc,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YACnE;QACF,CAAC,EAAE,CAAC,CAAC;IACP;IAEQ,aAAa,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB;QACF;QAEA,MAAM,MAAM,GAAG,CAAC;AAChB,QAAA,MAAM,SAAS,GAAwB;AACrC,YAAA;AACE,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,OAAO,EAAE;AACV,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,CAAC;AACX;SACF;AAED,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO;AACzB,QAAA,IAAI,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,WAAW;AAE5C,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE;AAC9B,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,uBAAuB,CAAC;YAC1F,MAAM,GAAG,EAAE;AACX,YAAA,KAAK,GAAG,EAAE,CAAC,WAAW;QACxB;AAEA,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC3B,aAAA,QAAQ;aACR,mBAAmB,CAAC,MAAM;aAC1B,aAAa,CAAC,SAAS;aACvB,QAAQ,CAAC,IAAI,CAAC;QAEjB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACpC,gBAAgB;YAChB,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE;YACrD,KAAK;AACL,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,aAAa,EAAE;AAChB,SAAA,CAAC;AAEF,QAAA,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAE9E,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;AAE9B,QAAA,IAAI,CAAC;AACF,aAAA,aAAa;AACb,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;aACzC,SAAS,CAAC,MAAK;AACd,YAAA,OAAO,IAAI,CAAC,aAAa,EAAE;AAC7B,QAAA,CAAC,CAAC;QAEJ,IAAI,CAAC,qBAAqB,EAAE;IAC9B;IAEQ,mBAAmB,GAAA;QACzB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE;AAEnB,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;AAC5B,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,EAAE;YAEjD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,KAAI;AAClD,gBAAA,OAAO,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;AACrD,YAAA,CAAC,CAAC;YAEF,MAAM,SAAS,GAAG,CAAC;AACnB,YAAA,MAAM,eAAe,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;gBACtE,OAAO,GAAG,CAAC,cAAc;AAC3B,YAAA,CAAC,CAAC;AAEF,YAAA,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,GAAG,SAAS;YAElD,IAAI,CAAC,aAAa,GAAG;kBACjB,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,GAAA;AAC/B,kBAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;QAChC;aAAO;YACL,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAI;gBAC/C,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,KAAK;AAC3C,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,aAAa,GAAG,cAAc,GAAG,cAAc,CAAC,cAAc,GAAG,EAAE;QAC1E;AAEA,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;IACvC;AAEQ,IAAA,aAAa,CAAC,MAAc,EAAA;QAClC,IAAI,KAAK,GAAG,KAAK;QACjB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAC3B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,aAAa,CAC3D,IAAI,GAAG,CAAC,EAAE,CAAA,CAAE,CACS;AAEvB,YAAA,IAAI,CAAC,OAAO;gBAAE;AAEd,YAAA,MAAM,OAAO,GAAG,uBAAuB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,QAAQ,CAClE,uBAAuB,CAAC,MAAM,CAAC,CAChC;YACD,IAAI,OAAO,EAAE;gBACX,KAAK,GAAG,IAAI;YACd;AACA,YAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,GAAG,EAAE,GAAG,MAAM;AAC/C,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,KAAK;IAChC;IAEQ,gBAAgB,GAAA;AACtB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,aAAa,CAClE,sBAAsB,CACR;QAEhB,IAAI,cAAc,EAAE;AAClB,YAAA,cAAc,CAAC,SAAS,GAAG,CAAC;QAC9B;IACF;IAEQ,mBAAmB,GAAA;AACzB,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;aACrB,KAAK,CAAC,GAAG;AACT,aAAA,GAAG,CAAC,CAAC,CAAS,KAAI;AACjB,YAAA,OAAO,CAAC,CAAC,IAAI,EAAE;AACjB,QAAA,CAAC;aACA,MAAM,CAAC,OAAO,CAAC;IACpB;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC;AACF,aAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAC5D,aAAA,SAAS,CAAC,CAAC,MAAc,KAAI;AAC5B,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAC5B,QAAA,CAAC,CAAC;IACN;IAEA,kBAAkB,GAAA;QAChB,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,mBAAmB,EAAE;QAE1B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;YACjF,IAAI,CAAC,mBAAmB,EAAE;YAC1B,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,cAAc,EAAE;AACvB,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;QAC3B;IACF;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,IAAI,CAAC,aAAa,EAAE;gBACpB,IAAI,CAAC,UAAU,EAAE;YACnB;iBAAO;gBACL,IAAI,CAAC,YAAY,EAAE;YACrB;QACF;IACF;AAQA,IAAA,YAAY,CAAC,MAA6B,EAAA;AACxC,QAAA,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;YAAE;AAEtC,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;AAC5B,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACzC,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA,EAAG,MAAM,CAAC,KAAK,EAAE,CAAA,CAAE,CAAC;AAEjD,YAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;gBAChB,MAAM,CAAC,IAAI,CAAC,CAAA,EAAG,MAAM,CAAC,KAAK,EAAE,CAAA,CAAE,CAAC;AAChC,gBAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YACvB;iBAAO;AACL,gBAAA,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACvB,gBAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YACxB;YAEA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QAC/B;aAAO;YACL,IAAI,CAAC,KAAK,GAAG,CAAA,EAAG,MAAM,CAAC,KAAK,EAAE,CAAA,CAAE;YAEhC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAC3B,gBAAA,GAAG,CAAC,QAAQ,CAAC,CAAA,EAAG,GAAG,CAAC,KAAK,EAAE,CAAA,CAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA,CAAE,CAAC;AACpD,YAAA,CAAC,CAAC;YAEF,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAChC;QAEA,IAAI,CAAC,mBAAmB,EAAE;IAC5B;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;;;;;;;;;QASnB,IAAI,CAAC,KAAK,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1E,IAAI,CAAC,cAAc,EAAE;QACrB,IAAI,CAAC,mBAAmB,EAAE;IAC5B;AAEA,IAAA,gBAAgB,CAAC,KAAiB,EAAA;QAChC,IAAI,IAAI,CAAC,QAAQ;YAAE;QAEnB,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE;IACxC;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;YACnB,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;AAMA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,UAAU,GAAG,KAAK;;AAEtB,QAAA,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,CAAC;QAC3C,IAAI,cAAc,EAAE,YAAY,KAAK,cAAc,EAAE,aAAa,EAAE;YAClE,UAAU,GAAG,IAAI;YACjB,IAAI,CAAC,aAAa,EAAE;QACtB;QAEA,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;AAEA,IAAA,cAAc,CAAC,KAAY,EAAA;AACzB,QAAA,IAAI;AACF,YAAA,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,MAA0B;AAClD,YAAA,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC;YACrC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QACvC;QAAE,OAAO,CAAC,EAAE;;QAEZ;IACF;+GAlfW,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAQ,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAuBZ,gBAAgB,CAAA,EAAA,UAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAGhB,gBAAgB,4FAShB,gBAAgB,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAiBhB,gBAAgB,CAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,4BAAA,EAAA,WAAA,EAAA,2BAAA,EAAA,SAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,EAAA,cAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EA5FzB;;AAET,YAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,qBAAqB;SACtE,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAoDgB,qBAAqB,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/GxC,8lDAsDA,EAAA,MAAA,EAAA,CAAA,owEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDHY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAU,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,UAAA,EAS/D;YACV,OAAO,CAAC,WAAW,EAAE;gBACnB,UAAU,CAAC,QAAQ,EAAE;AACnB,oBAAA,KAAK,CAAC;AACJ,wBAAA,OAAO,EAAE,CAAC;AACV,wBAAA,SAAS,EAAE;qBACZ,CAAC;AACF,oBAAA,OAAO,CACL,mBAAmB,EACnB,KAAK,CAAC;AACJ,wBAAA,OAAO,EAAE,CAAC;AACV,wBAAA,SAAS,EAAE;AACZ,qBAAA,CAAC;iBAEL,CAAC;AACF,gBAAA,KAAK,CACH,QAAQ,EACR,KAAK,CAAC;AACJ,oBAAA,SAAS,EAAE,YAAY;AACvB,oBAAA,OAAO,EAAE;AACV,iBAAA,CAAC,CACH;AACD,gBAAA,UAAU,CAAC,iBAAiB,EAAE,OAAO,CAAC,mBAAmB,CAAC;aAC3D;AACF,SAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAYU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA/CjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,WAChB,CAAC,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,iBAAiB,CAAC,EAAA,eAAA,EAC3D,uBAAuB,CAAC,MAAM,iBAGhC,iBAAiB,CAAC,IAAI,EAAA,SAAA,EAC1B;;AAET,wBAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,uBAAuB;qBACtE,EAAA,UAAA,EACW;wBACV,OAAO,CAAC,WAAW,EAAE;4BACnB,UAAU,CAAC,QAAQ,EAAE;AACnB,gCAAA,KAAK,CAAC;AACJ,oCAAA,OAAO,EAAE,CAAC;AACV,oCAAA,SAAS,EAAE;iCACZ,CAAC;AACF,gCAAA,OAAO,CACL,mBAAmB,EACnB,KAAK,CAAC;AACJ,oCAAA,OAAO,EAAE,CAAC;AACV,oCAAA,SAAS,EAAE;AACZ,iCAAA,CAAC;6BAEL,CAAC;AACF,4BAAA,KAAK,CACH,QAAQ,EACR,KAAK,CAAC;AACJ,gCAAA,SAAS,EAAE,YAAY;AACvB,gCAAA,OAAO,EAAE;AACV,6BAAA,CAAC,CACH;AACD,4BAAA,UAAU,CAAC,iBAAiB,EAAE,OAAO,CAAC,mBAAmB,CAAC;yBAC3D;qBACF,EAAA,IAAA,EACK;AACJ,wBAAA,aAAa,EAAE,eAAe;AAC9B,wBAAA,KAAK,EAAE,aAAa;AACpB,wBAAA,8BAA8B,EAAE,WAAW;AAC3C,wBAAA,6BAA6B,EAAE,SAAS;AACxC,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,iBAAiB,EAAE,0BAA0B;AAC7C,wBAAA,SAAS,EAAE,YAAY;AACvB,wBAAA,QAAQ,EAAE;AACX,qBAAA,EAAA,QAAA,EAAA,8lDAAA,EAAA,MAAA,EAAA,CAAA,owEAAA,CAAA,EAAA;;0BAyHE;;sBA9GF,SAAS;uBAAC,iBAAiB;;sBAE3B,SAAS;uBAAC,SAAS;;sBAEnB,SAAS;uBAAC,SAAS;;sBAEnB,eAAe;uBAAC,qBAAqB;;sBAErC;;sBAEA;;sBAEA,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAExB,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC;;sBAGA;;sBAGA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAiBrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAYrC;;;AEhKH;;;;AAI6B;;ACJ7B;;;;AAI6B;MAuGhB,yBAAyB,CAAA;AAOpC,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE;AACtD,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ;QAChC;QACA,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AAEtB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;AAIA,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK;IAC9F;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;IAIA,IACI,KAAK,CAAC,KAAU,EAAA;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;IACxB;AAEA,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;IACpB;AAIA,IAAA,WAAA,GAAA;QAjDS,IAAA,CAAA,WAAW,GAAW,EAAE;QAExB,IAAA,CAAA,QAAQ,GAAG,CAAC;QAmBrB,IAAA,CAAA,SAAS,GAAY,KAAK;QA0B1B,IAAA,CAAA,MAAM,GAAkB,IAAI;AAQ5B,QAAA,IAAA,CAAA,SAAS,GAAqB,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAE;AAE/D,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAEjC,QAAA,IAAA,CAAA,cAAc,GAAG,sBAAsB,CACtD,qBAAqB,EACrB,uBAAuB,CACvB;AAEe,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;QAElC,IAAA,CAAA,EAAE,GAAW,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,qBAAqB,CAAC;QAE1D,IAAA,CAAA,OAAO,GAAW,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,2BAA2B,CAAC;QAE9E,IAAA,CAAA,OAAO,GAAY,KAAK;QAEf,IAAA,CAAA,IAAI,GAAW,aAAa;AAE5B,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;QAE3C,IAAA,CAAA,SAAS,GAAc,YAAY;AAChC,aAAA,GAAG,CAAC,CAAC,IAAI,KAAI;YACZ,OAAO;AACL,gBAAA,GAAG,EAAE,IAAI;AACT,gBAAA,IAAI,EAAE,CAAA,CAAA,EAAI,qBAAqB,CAAC,IAAI,CAAC,CAAA,CAAE;AACvC,gBAAA,IAAI,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI;aACvC;AACH,QAAA,CAAC;AACA,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YACb,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,QAAA,CAAC,CAAC;AAEJ,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;QAEpD,IAAA,CAAA,cAAc,GAAG,EAAE;QAEnB,IAAA,CAAA,UAAU,GAAG,KAAK;AAqGlB,QAAA,IAAA,CAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;AAEzB,QAAA,IAAA,CAAA,UAAU,GAAQ,MAAK,EAAE,CAAC;AAjJxB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;QACrC;IACF;AA2CQ,IAAA,sBAAsB,CAAC,IAAY,EAAA;AACzC,QAAA,IAAI;YACF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACrC,YAAA,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YACnE,OAAO,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI;QAC/C;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,IAAI;QACb;IACF;AAEQ,IAAA,uBAAuB,CAAC,IAAY,EAAA;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QAEvC,QACE,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,KAAI;YAC9B,OAAO,OAAO,KAAK,SAAS;AAC9B,QAAA,CAAC,CAAC,IAAI,IAAI;IAEd;IAEQ,yBAAyB,CAAC,KAAa,EAAE,cAAuB,EAAA;AACtE,QAAA,IAAI;YACF,IAAI,cAAc,EAAE;gBAClB,OAAO,IAAI,CAAC,mBAAmB;YACjC;AAEA,YAAA,MAAM,MAAM,GAAG,0BAA0B,CAAC,KAAK,CAAC;YAChD,OAAO,MAAO,CAAC,OAAiB;QAClC;QAAE,OAAO,CAAC,EAAE;;QAEZ;QAEA,OAAO,IAAI,CAAC,mBAAmB;IACjC;AAEQ,IAAA,YAAY,CAAC,KAAa,EAAA;QAChC,MAAM,WAAW,GAAG,CAAA,CAAA,EAAI,qBAAqB,CAAC,IAAI,CAAC,mBAAkC,CAAC,CAAA,CAAE;QAExF,IAAI,CAAC,MAAM,GAAG,CAAA,EAAG,WAAW,CAAA,EAAG,KAAK,EAAE;AACtC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;IAC9B;IAEQ,aAAa,GAAA;AACnB,QAAA,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI;QAC3B,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAkC;YAC3D,MAAM,OAAO,GAAG,gBAAgB,CAAC,WAAY,EAAE,QAAQ,CAAC;AAExD,YAAA,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC;YAC5C,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,OAAQ,CAAC,cAAc,CAAC;AAE7D,YAAA,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC;AACjC,gBAAA,KAAK,EAAE,IAAI;gBACX;AACD,aAAA,CAAC;QACJ;IACF;AAEQ,IAAA,WAAW,CAAC,KAAa,EAAE,cAAc,GAAG,KAAK,EAAA;QACvD,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;YACvB,IAAI,CAAC,aAAa,EAAE;YACpB;QACF;QAEA,MAAM,mBAAmB,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,cAAc,CAAC;QACjF,MAAM,gBAAgB,GAAG,cAAc,IAAI,mBAAmB,KAAK,IAAI,CAAC,mBAAmB;AAE3F,QAAA,IAAI,gBAAgB,IAAI,mBAAmB,EAAE;AAC3C,YAAA,IAAI,CAAC,mBAAmB,GAAG,mBAAmB;QAChD;QAEA,MAAM,WAAW,GAAG,CAAA,CAAA,EAAI,qBAAqB,CAAC,IAAI,CAAC,mBAAkC,CAAC,CAAA,CAAE;QAExF,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;YACvB,IAAI,CAAC,aAAa,EAAE;YACpB;QACF;AAEA,QAAA,IAAI,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;QACrF,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;QAEpD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,mBAAkC,CAAC;QACxE,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC;AAEnD,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;QAE/B,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC,YAAY,EAAE,IAAI,CAAC,mBAAkC,CAAC;QAC3F,IAAI,CAAC,aAAa,EAAE;IACtB;AAQA,IAAA,kBAAkB,KAAU;IAE5B,WAAW,CAAC,OAAsB,EAAA,EAAS;AAE3C,IAAA,WAAW,KAAU;AAErB,IAAA,gBAAgB,CAAC,KAAiB,EAAA;QAChC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE;IACzC;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;YACnB,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QACxB,IAAI,CAAC,aAAa,EAAE;IACtB;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACpB;AAEA,IAAA,aAAa,CAAC,KAAY,EAAA;AACxB,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,MAA0B;AAClD,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IACzB;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAO,EAAE,IAAI,CAAC;QACpC,IAAI,CAAC,aAAa,EAAE;IACtB;IAEA,YAAY,GAAA;AACV,QAAA,IAAI;YACF,MAAM,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,mBAAmB,CAAC;AAE1E,YAAA,IAAI,CAAC,WAAW;AAAE,gBAAA,OAAO,EAAE;YAE3B,MAAM,OAAO,GAAG,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC;AACvD,YAAA,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,OAAQ,CAAC,cAAc,CAAC;YAE3E,OAAO,SAAS,CAAC,MAAM;QACzB;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,EAAE;QACX;IACF;+GAvQW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAOhB,gBAAgB,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAmBhB,gBAAgB,CAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,iCAAA,EAAA,WAAA,EAAA,gCAAA,EAAA,SAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,SAAA,EAzCzB;;AAET,YAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,yBAAyB;SAC1E,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApCS,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8fAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAtCC,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,+BACnB,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,SAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACrB,qBAAqB,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAkDZ,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBA1DrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EACrB;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,qBAAqB;wBACrB,qBAAqB;wBACrB;qBACD,EAAA,QAAA,EACS,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BT,EAAA,SAAA,EAEU;;AAET,wBAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,2BAA2B;qBAC1E,EAAA,IAAA,EACK;AACJ,wBAAA,oBAAoB,EAAE,sBAAsB;AAC5C,wBAAA,KAAK,EAAE,kBAAkB;AACzB,wBAAA,mCAAmC,EAAE,WAAW;AAChD,wBAAA,kCAAkC,EAAE,SAAS;AAC7C,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,iBAAiB,EAAE,0BAA0B;AAC7C,wBAAA,SAAS,EAAE,YAAY;AACvB,wBAAA,QAAQ,EAAE;AACX,qBAAA,EAAA,MAAA,EAAA,CAAA,8fAAA,CAAA,EAAA;;sBAKA;;sBAEA;;sBAEA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAmBrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAYrC;;sBA2DA,YAAY;uBAAC,OAAO;;;AC5MvB;;;;AAI6B;;ACJ7B;;;;AAI6B;MA2DhB,0BAA0B,CAAA;AAkBrC,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE;AACtD,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ;QAChC;QACA,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AAEtB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;AAIA,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK;IAC9F;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;IAIA,IACI,KAAK,CAAC,KAAU,EAAA;QAClB,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,KAAK,KAAK,SAAS,EAAE;AAChD,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACrB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACxB;IACF;AAEA,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;IACpB;AAIA,IAAA,WAAA,GAAA;QA3DS,IAAA,CAAA,QAAQ,GAAW,CAAC;QAEpB,IAAA,CAAA,WAAW,GAAW,EAAE;AAExB,QAAA,IAAA,CAAA,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI;AAE9B,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;QAGvF,IAAA,CAAA,OAAO,GAAG,KAAK;QAEN,IAAA,CAAA,QAAQ,GAAG,CAAC;QAmBrB,IAAA,CAAA,SAAS,GAAY,KAAK;QA2B1B,IAAA,CAAA,MAAM,GAAG,IAAI;AAQH,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAgC;AAErE,QAAA,IAAA,CAAA,SAAS,GAAqB,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAE;AAE/D,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAEzC,IAAA,CAAA,EAAE,GAAW,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,sBAAsB,CAAC;QAEpE,IAAA,CAAA,OAAO,GAAY,KAAK;QAEf,IAAA,CAAA,IAAI,GAAW,EAAE;QAE1B,IAAA,CAAA,QAAQ,GAAY,KAAK;QAEhB,IAAA,CAAA,OAAO,GAAY,KAAK;AAExB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AAwC3C,QAAA,IAAA,CAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;AAEzB,QAAA,IAAA,CAAA,UAAU,GAAQ,MAAK,EAAE,CAAC;AA/DxB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;QACrC;IACF;AAoBQ,IAAA,gBAAgB,CAAC,IAAU,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY;IACvC;AAEQ,IAAA,qBAAqB,CAAC,IAAU,EAAA;AACtC,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;AAC7D,YAAA,OAAO,IAAI;QACb;QACA,MAAM,aAAa,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAEjD,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;AACrD,YAAA,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;AAClD,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC;IAC5C;AAEA,IAAA,gBAAgB,CAAC,KAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE;QACtC;IACF;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;YACnB,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;AAQA,IAAA,kBAAkB,KAAU;IAE5B,WAAW,CAAC,OAAsB,EAAA,EAAS;AAE3C,IAAA,WAAW,KAAU;AAErB,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;AAC1B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,GAAG,UAAU;QACpD;IACF;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACpB;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;QACzC;IACF;AAEA,IAAA,cAAc,CAAC,KAAY,EAAA;AACzB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;QAC9C,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE;YACxB;QACF;QAEA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAEhC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE;QACzC;QAEA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAK,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC;AACjC,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,WAAW,EAAE,cAAc,CAAC,IAAI,CAAC,YAAY;AAC9C,aAAA,CAAC;YACF,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,KAAK,EAAE;YACZ;QACF;QAEA,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAK,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC;AACjC,gBAAA,aAAa,EAAE,IAAI;gBACnB,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI;AACnD,aAAA,CAAC;YACF,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,KAAK,EAAE;YACZ;QACF;QAEA,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC;QAExC,IAAI,CAAC,OAAO,EAAE;AACd,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AAC1B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAK,EAAE,CAAC;QACtD;aAAO;YACL,IAAI,CAAC,KAAK,GAAG;gBACX,QAAQ,EAAE,IAAK,CAAC,IAAI;gBACpB;aACD;QACH;IACF;+GA7MW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,yNAajB,gBAAgB,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAKhB,gBAAgB,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAmBhB,gBAAgB,CAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,kCAAA,EAAA,WAAA,EAAA,iCAAA,EAAA,SAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,SAAA,EApDzB;;AAET,YAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,0BAA0B;SAC3E,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArBS,CAAA;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,iqBAAA,CAAA,EAAA,CAAA,CAAA;;4FAiBU,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBApCtC,SAAS;+BACE,qBAAqB,EAAA,OAAA,EACtB,EAAE,EAAA,QAAA,EACD,CAAA;;;;;;;;;;;;;;;;GAgBT,EAAA,SAAA,EAEU;;AAET,wBAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,4BAA4B;qBAC3E,EAAA,IAAA,EACK;AACJ,wBAAA,oBAAoB,EAAE,uBAAuB;AAC7C,wBAAA,KAAK,EAAE,mBAAmB;AAC1B,wBAAA,oCAAoC,EAAE,WAAW;AACjD,wBAAA,mCAAmC,EAAE,SAAS;AAC9C,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,iBAAiB,EAAE,0BAA0B;AAC7C,wBAAA,SAAS,EAAE,YAAY;AACvB,wBAAA,QAAQ,EAAE;AACX,qBAAA,EAAA,MAAA,EAAA,CAAA,iqBAAA,CAAA,EAAA;;sBAKA,SAAS;uBAAC,WAAW;;sBAErB;;sBAEA;;sBAEA;;sBAEA;;sBAEA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC;;sBAEA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAmBrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAYrC;;sBAqBA;;;ACrIH;;;;AAI6B;;ACJ7B;;;;AAI6B;MAYhB,2BAA2B,CAAA;AARxC,IAAA,WAAA,GAAA;QASW,IAAA,CAAA,OAAO,GAA+B,KAAK;QAEpD,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC;AACxD,IAAA;+GAJY,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA3B,2BAA2B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,qCAAA,EAAA,SAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBARvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8CAA8C;AACxD,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,CAAA,mCAAA,CAAqC;AAChD,wBAAA,WAAW,EAAE;AACd,qBAAA;AACD,oBAAA,UAAU,EAAE;AACb,iBAAA;;sBAEE;;;ACjBH;;;;AAI6B;MAYhB,2BAA2B,CAAA;AARxC,IAAA,WAAA,GAAA;QASE,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC;AACxD,IAAA;+GAFY,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA3B,2BAA2B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBARvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,8CAA8C;AACxD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,oBAAoB;AAC3B,wBAAA,WAAW,EAAE;AACd,qBAAA;AACD,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACfD;;;;AAI6B;MAYhB,4BAA4B,CAAA;AARzC,IAAA,WAAA,GAAA;QASE,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;AACzD,IAAA;+GAFY,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA5B,4BAA4B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gDAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBARxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gDAAgD;AAC1D,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,qBAAqB;AAC5B,wBAAA,WAAW,EAAE;AACd,qBAAA;AACD,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACfD;;;;AAI6B;MAYhB,yBAAyB,CAAA;AARtC,IAAA,WAAA,GAAA;QASE,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC;AACtD,IAAA;+GAFY,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAzB,yBAAyB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,0CAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBARrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0CAA0C;AACpD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,kBAAkB;AACzB,wBAAA,WAAW,EAAE;AACd,qBAAA;AACD,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCRY,iBAAiB,CAAA;AAA9B,IAAA,WAAA,GAAA;QAKE,IAAA,CAAA,UAAU,GAAuB,EAAE;QAEnC,IAAA,CAAA,WAAW,GAAa,IAAI;QAE5B,IAAA,CAAA,aAAa,GAAuB,oBAAoB;QAExD,IAAA,CAAA,YAAY,GAAa,KAAK;QAE9B,IAAA,CAAA,oBAAoB,GAAa,KAAK;QAMtC,IAAA,CAAA,UAAU,GAAa,KAAK;QAE5B,IAAA,CAAA,QAAQ,GASa,eAAe;QAEpC,IAAA,CAAA,IAAI,GAAgB,IAAI;QAExB,IAAA,CAAA,iBAAiB,GAAa,IAAI;IAGpC;AAAC;;AC5CD;;;;AAI6B;MAOhB,cAAc,CAAA;IAyBzB,WAAA,CACW,UAAsB,EACtB,MAAyB,EAAA;QADzB,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,MAAM,GAAN,MAAM;AAVR,QAAA,IAAA,CAAA,MAAM,GAAoB,IAAI,OAAO,EAAO;AAYnD,QAAA,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE;AACnB,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;AACvB,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY;AACvC,QAAA,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,oBAAoB;AACvD,QAAA,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB;AACjD,QAAA,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa,EAAE;AAC/C,QAAA,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa,EAAE;AAC/C,QAAA,IAAI,CAAC,oBAAoB,GAAG,UAAU,CAAC,oBAAoB,EAAE;AAE7D,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC9B,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACrC,gBAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;oBAC1E,KAAK,CAAC,cAAc,EAAE;AACtB,oBAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;gBACvB;AACF,YAAA,CAAC,CAAC;AAEF,YAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAK;AAChC,gBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,oBAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;gBACvB;AACF,YAAA,CAAC,CAAC;QACJ;IACF;AAEA,IAAA,KAAK,CAAC,MAAY,EAAA;AAChB,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAsB;AAEjD,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,aAA4B;YACpD,IAAI,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACpD,MAAM,CAAC,IAAI,EAAE;YACf;AAEA,YAAA,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;YACnF,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YAC1B,CAAC,EAAE,GAAG,CAAC;AACP,YAAA,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;YAC1B,aAAa,CAAC,QAAQ,EAAE;;AAEvB,YAAA,IAAmC,CAAC,iBAAiB,GAAG,IAAK;QAChE;IACF;IAEA,WAAW,GAAA;QACT,OAAO,IAAI,CAAC,MAAM;IACpB;AACD;;MC1BY,oBAAoB,CAAA;AAK/B,IAAA,WAAA,CACU,WAAuB,EACZ,UAAuB,EACvB,QAAyB,EAAA;QAFpC,IAAA,CAAA,WAAW,GAAX,WAAW;QACA,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,QAAQ,GAAR,QAAQ;QAPrB,IAAA,CAAA,uBAAuB,GAAwB,IAAI;AAEnD,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;;IAQhC;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE;QACxC;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,iBAAiB,EAAE;AACpC,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACrE,gBAAA,IAAI,KAAK,YAAY,eAAe,EAAE;oBACpC,IAAI,CAAC,KAAK,EAAE;gBACd;AACF,YAAA,CAAC,CAAC;QACJ;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAChC,YAAA,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE;AAC1C,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI;QACrC;IACF;IAEA,KAAK,GAAA;AACH,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAA4B;AAE7D,QAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;QAEjC,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE;QACxB,CAAC,EAAE,GAAG,CAAC;IACT;+GA1CW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,EAAA,cAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxCrB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8oEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,IAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FASU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBA3ChC,SAAS;AACO,YAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B,cAAc,EAAA,QAAA,EACd,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BT,EAAA,IAAA,EACK;AACJ,wBAAA,KAAK,EAAE,YAAY;AACnB,wBAAA,QAAQ,EAAE,IAAI;AACd,wBAAA,WAAW,EAAE;AACd,qBAAA,EAAA,UAAA,EAEW,KAAK,EAAA,MAAA,EAAA,CAAA,8oEAAA,CAAA,EAAA;;0BASd;;0BACA;;;ACtEL;;;;AAI6B;MAIhB,eAAe,GAAG,IAAI,cAAc,CAAM,eAAe;MACzD,yBAAyB,GAAG,IAAI,cAAc,CACzD,wBAAwB;AAEnB,MAAM,8BAA8B,GAAG,IAAI,cAAc,CAC9D,6BAA6B,CAC9B;AAED;;;;;;AAMG;AACG,SAAU,cAAc,CAAI,KAAyB,EAAE,QAA8B,EAAA;AACzF,IAAA,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM;;IAGpB,OAAO,CAAC,EAAE,EAAE;AACV,QAAA,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpB;AACF;;AC9BA;;;;AAI6B;MA6BhB,gCAAgC,CAAA;IAC3C,WAAA,CACiD,MAAqC,EACpD,QAAwB,EAAA;QADT,IAAA,CAAA,MAAM,GAAN,MAAM;QACrB,IAAA,CAAA,QAAQ,GAAR,QAAQ;;IAG1C;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;IAC3B;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;IACvB;+GAdW,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAEjC,8BAA8B,EAAA,EAAA,EAAA,KAAA,EAC9B,cAAc,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAHb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gCAAgC,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnBjC,CAAA;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,qxCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAGU,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAvB5C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAAA,aAAA,EACtB,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAE3B,CAAA;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA,EAAA,UAAA,EACW,KAAK,EAAA,MAAA,EAAA,CAAA,qxCAAA,CAAA,EAAA;;0BAId,MAAM;2BAAC,8BAA8B;;0BACrC,MAAM;2BAAC,cAAc;;;ACpC1B;;;;AAI6B;MAqBhB,2BAA2B,CAAA;IACtC,WAAA,CAC4C,MAAgC,EAC1C,QAAwB,EAAA;QADd,IAAA,CAAA,MAAM,GAAN,MAAM;QAChB,IAAA,CAAA,QAAQ,GAAR,QAAQ;;IAG1C;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;IAC3B;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;IACvB;+GAdW,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAE5B,yBAAyB,EAAA,EAAA,EAAA,KAAA,EACzB,cAAc,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAHb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAb5B,CAAA;;;;;;;;;;AAUT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,yBAAA,EAAA,QAAA,EAAA,0CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,gDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGU,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAfvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;AAUT,EAAA,CAAA;AACD,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAGI,MAAM;2BAAC,yBAAyB;;0BAChC,MAAM;2BAAC,cAAc;;;AC5B1B;;;;AAI6B;MAgChB,iBAAiB,CAAA;+GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAhB1B,oBAAoB;YACpB,2BAA2B;YAC3B,gCAAgC;YAChC,yBAAyB;YACzB,4BAA4B;YAC5B,2BAA2B;AAC3B,YAAA,2BAA2B,aARnB,YAAY,EAAE,qBAAqB,EAAE,yBAAyB,aAWtE,oBAAoB;YACpB,yBAAyB;YACzB,4BAA4B;YAC5B,2BAA2B;YAC3B,2BAA2B,CAAA,EAAA,CAAA,CAAA;gHAGlB,iBAAiB,EAAA,OAAA,EAAA,CAlBlB,YAAY,EAAyB,yBAAyB,CAAA,EAAA,CAAA,CAAA;;4FAkB7D,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAnB7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,qBAAqB,EAAE,yBAAyB,CAAC;AACzE,oBAAA,YAAY,EAAE;wBACZ,oBAAoB;wBACpB,2BAA2B;wBAC3B,gCAAgC;wBAChC,yBAAyB;wBACzB,4BAA4B;wBAC5B,2BAA2B;wBAC3B;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,oBAAoB;wBACpB,yBAAyB;wBACzB,4BAA4B;wBAC5B,2BAA2B;wBAC3B;AACD;AACF,iBAAA;;;ACnCD;;;;AAI6B;MAqBhB,kBAAkB,CAAA;AAD/B,IAAA,WAAA,GAAA;AAEY,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;AAElC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AAE5B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;QAE1B,IAAA,CAAA,uBAAuB,GAAqB,EAAE;AAE9C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AA+IzF,IAAA;AA7IC,IAAA,IAAc,WAAW,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,uBAAuB;IAC3F;AAEQ,IAAA,gBAAgB,CAAC,MAAyB,EAAA;AAChD,QAAA,IAAI,gBAAgB;QACpB,MAAM,cAAc,GAAG,MAAM;AAC7B,QAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE;YAClC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC;QAC/F;AAAO,aAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,YAAY,EAAE;AAC3C,YAAA,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,kBAAkB,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC;QAC/F;AAAO,aAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,WAAW,EAAE;YAC1C,gBAAgB,GAAG,IAAI,CAAC;AACrB,iBAAA,QAAQ;AACR,iBAAA,MAAM;iBACN,KAAK,CAAC,cAAc;iBACpB,GAAG,CAAC,cAAc,CAAC;QACxB;AAAO,aAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,aAAa,EAAE;AAC5C,YAAA,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,gBAAgB,EAAE;QAC9F;AAAO,aAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,eAAe,EAAE;AAC9C,YAAA,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,kBAAkB,EAAE,CAAC,gBAAgB,EAAE;QAC9F;AAAO,aAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,cAAc,EAAE;AAC7C,YAAA,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,gBAAgB,EAAE;QAC/F;AAAO,aAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,aAAa,EAAE;YAC5C,gBAAgB,GAAG,IAAI,CAAC;AACrB,iBAAA,QAAQ;AACR,iBAAA,MAAM;iBACN,IAAI,CAAC,cAAc;iBACnB,MAAM,CAAC,cAAc,CAAC;QAC3B;AAAO,aAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,eAAe,EAAE;AAC9C,YAAA,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;QAC1F;AAAO,aAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,cAAc,EAAE;YAC7C,gBAAgB,GAAG,IAAI,CAAC;AACrB,iBAAA,QAAQ;AACR,iBAAA,MAAM;iBACN,KAAK,CAAC,cAAc;iBACpB,MAAM,CAAC,cAAc,CAAC;QAC3B;AAEA,QAAA,IAAI,UAAU,GAAG,CAAC,oBAAoB,CAAC;AAEvC,QAAA,IAAI,MAAM,CAAC,UAAU,EAAE;AACrB,YAAA,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC;QAC5C;QAEA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;YACpC,UAAU,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;QACpD;aAAO;AACL,YAAA,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,UAAoB,CAAC;QAC9C;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC;YAC9B,gBAAgB;YAChB,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE;YACtD,UAAU;YACV,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,mBAAmB,EAAE,MAAM,CAAC;AAC7B,SAAA,CAAC;AAEF,QAAA,IAAI,MAAM,CAAC,aAAa,EAAE;AACxB,YAAA,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa;QAC5C;AAEA,QAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;AACnB,YAAA,KAAK,CAAC,KAAK,GAAG,MAAM;QACtB;AACA,QAAA,IAAI,MAAM,CAAC,SAAS,EAAE;AACpB,YAAA,KAAK,CAAC,MAAM,GAAG,MAAM;QACvB;AAEA,QAAA,OAAO,KAAK;IACd;AAEQ,IAAA,cAAc,CACpB,MAAyB,EACzB,SAAyB,EACzB,UAAsB,EACtB,gBAAsC,EAAA;AAEtC,QAAA,MAAM,SAAS,GAAqB;AAClC,YAAA,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE;AAC7C,YAAA,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE;YAChD,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI;SAClD;AAED,QAAA,IAAI,MAAM,CAAC,SAAS,EAAE;YACpB,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;QACrC;AAEA,QAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC;IACjE;IAEA,IAAI,CAAI,SAA2B,EAAE,MAAyB,EAAA;AAC5D,QAAA,MAAM,aAAa,GAAG,IAAI,iBAAiB,EAAE;QAE7C,MAAM,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,EAAE;QACxC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,eAAe,CAAC;QAEpD,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QACnD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC;AAEvD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC;QAElF,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC;QACtE,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC;AAEvD,QAAA,MAAM,gBAAgB,GAAG,YAAY,CAAC,QAAQ,CAAC,aAA4B;AAC3E,QAAA,gBAAgB,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM;AACrC,QAAA,gBAAgB,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM;AACtC,QAAA,QAAQ,CAAC,gBAAgB,GAAG,gBAAgB;AAE3C,QAAA,QAAqC,CAAC,iBAAiB,GAAG,YAAY,CAAC,QAAQ;AAE/E,QAAA,IAAI,CAAC,WAAgC,CAAC,IAAI,CAAC,QAAQ,CAAC;AAErD,QAAA,OAAO,QAAQ;IACjB;IAEA,WAAW,CAAC,MAAgC,EAAE,MAAyB,EAAA;AACrE,QAAA,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC7E,QAAA,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM;QAEhD,OAAO,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,MAAM,CAAC;IACvD;IAEA,gBAAgB,CAAC,MAAqC,EAAE,MAAyB,EAAA;AAC/E,QAAA,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAElF,OAAO,IAAI,CAAC,IAAI,CAAC,gCAAgC,EAAE,MAAM,CAAC;IAC5D;IAEA,QAAQ,GAAA;QACN,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,KAAI;AAC1C,YAAA,OAAO,MAAM,CAAC,KAAK,EAAE;AACvB,QAAA,CAAC,CAAC;AAED,QAAA,IAAI,CAAC,WAAgC,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IAC3E;+GAvJW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cADL,MAAM,EAAA,CAAA,CAAA;;4FACnB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACxBlC;;;;AAI6B;;ACJ7B;;;;AAI6B;MAqDhB,yBAAyB,CAAA;AAWpC,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,MAAM,KAAK,CAAC;IACpC;AAEA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,MAAM,KAAK,CAAC;IACpC;AAEA,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI;IAC/B;AAEA,IAAA,WAAA,GAAA;QAzBU,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC;QAIvD,IAAA,CAAA,QAAQ,GAAa,EAAE;QAEjC,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAY;;AAqB3B,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;IACnB;IAEU,KAAK,GAAA;AACb,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;QAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IACnC;AACU,IAAA,OAAO,CAAC,GAAW,EAAA;QAC3B,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnC;IACF;+GA1CW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA7C1B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8uBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAtCS,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,IAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FA8CpB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAhDrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EACrB,CAAC,qBAAqB,CAAC,EAAA,QAAA,EACtB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCT,EAAA,IAAA,EAEK;AACJ,wBAAA,aAAa,EAAE,oBAAoB;AACnC,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,MAAM,EAAE;AACT,qBAAA,EAAA,MAAA,EAAA,CAAA,8uBAAA,CAAA,EAAA;;sBAGA;;sBAkBA;;;AC5EH;;;;AAI6B;MAyDhB,+BAA+B,CAAA;AAe1C,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI;IAC/B;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,MAAM,KAAK,CAAC;IACpC;AAEA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,MAAM,KAAK,CAAC;IACpC;AAEA,IAAA,WAAA,GAAA;QA/BU,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,4BAA4B,CAAC;QAM/D,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;QAElD,IAAA,CAAA,IAAI,GAAsB,EAAE;QAE5B,IAAA,CAAA,QAAQ,GAAa,EAAE;QAEjC,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAa;;AAqB5B,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;IACnB;IAEA,QAAQ,GAAA;QACN,MAAM,GAAG,GAAG,EAAE;QAEd,MAAM,YAAY,GAAG,OAAO,CAC1B,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAa,EAAE,CAAS,KAAI;AACxD,YAAA,OAAO,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG;QAC1B,CAAC,CAAC,CACH;QAED,IAAI,CAAC,IAAI,GAAG;AACT,aAAA,GAAG,CAAC,CAAC,KAAa,EAAE,KAAa,KAAI;YACpC,OAAO;AACL,gBAAA,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC;aACnD;AACH,QAAA,CAAC;AACA,aAAA,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAChB;IAEU,KAAK,GAAA;AACb,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;QAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;IAC3C;IAEQ,cAAc,GAAA;AACpB,QAAA,MAAM,MAAM,GAAc;AACxB,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,WAAW,EAAE;SACd;QACD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;YACrC,MAAM,CAAC,aAAa,KAAK,GAAG,CAAC,CAAA,CAAqB,CAAC,GAAG,KAAK;AAC7D,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,MAAO;IAChB;AAEU,IAAA,OAAO,CAAC,GAAoB,EAAA;QACpC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA,EAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAA,CAAE,CAAC;YAC7C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;QAC3C;IACF;+GA/EW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,2BAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnChC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8uBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA5BoB,qBAAqB,gLAAhC,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAoCR,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAtC3C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,WAC5B,CAAC,SAAS,EAAE,qBAAqB,CAAC,EAAA,QAAA,EACjC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BT,EAAA,IAAA,EAEK;AACJ,wBAAA,aAAa,EAAE,2BAA2B;AAC1C,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,MAAM,EAAE;AACT,qBAAA,EAAA,MAAA,EAAA,CAAA,8uBAAA,CAAA,EAAA;;sBAKA;;sBAYA;;;AC5EH;;;;AAI6B;;ACJ7B;;;;AAI6B;MAwDhB,0BAA0B,CAAA;AAgBrC,IAAA,IACI,OAAO,GAAA;QACT,OAAO,CAAA,EAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAA,CAAE;IACxC;AAEA,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE;AACtD,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ;QAChC;QACA,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AAEtB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;AAEA,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK;IAC9F;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;IAIA,IACI,KAAK,CAAC,KAAU,EAAA;AAClB,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;AACzB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QACvB;IACF;AAEA,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;IACpB;IAuBA,WAAA,CACU,iBAAoC,EACxB,SAAmC,EAAA;QAD/C,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACL,IAAA,CAAA,SAAS,GAAT,SAAS;QAhFtB,IAAA,CAAA,QAAQ,GAAG,CAAC;AAEX,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAE;AAE7B,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAE;QAE9B,IAAA,CAAA,QAAQ,GAAG,YAAY;QAGhC,IAAA,CAAA,IAAI,GAAe,IAAI;QAgDvB,IAAA,CAAA,MAAM,GAAG,IAAI;AAEL,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAEvB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAElD,QAAA,IAAA,CAAA,SAAS,GAAqB,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAE;AAEtE,QAAA,IAAA,CAAA,WAAW,GACnB,MAAM,CAAyE,UAAU,CAAC;QAE5F,IAAA,CAAA,OAAO,GAAY,KAAK;QAExB,IAAA,CAAA,SAAS,GAAY,KAAK;QAEjB,IAAA,CAAA,EAAE,GAAW,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,qBAAqB,CAAC;AAE1D,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;QAElC,IAAA,CAAA,IAAI,GAAW,cAAc;AA8EtC,QAAA,IAAA,CAAA,SAAS,GAAQ,MAAK,EAAE,CAAC;AAEzB,QAAA,IAAA,CAAA,UAAU,GAAQ,MAAK,EAAE,CAAC;AA1ExB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI;QACrC;IACF;IAEQ,cAAc,GAAA;QACpB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAC3B,oBAAA,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC;AAC1C,gBAAA,CAAC,CAAC;YACJ;AACA,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACvC,QAAA,CAAC,CAAC;IACJ;IAEQ,iBAAiB,GAAA;QACvB,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,KAAI;AAC/B,gBAAA,MAAM,CAAC,IAAI,GAAG,OAAO;AACrB,gBAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAClB,oBAAA,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;gBACtD;AACF,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;QACvC,CAAC,EAAE,CAAC,CAAC;IACP;IAEA,kBAAkB,GAAA;QAChB,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAC7E,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,cAAc,EAAE;AACvB,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,YAAY,CAAC,MAA6B,EAAA;QACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACtC,YAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE;AAC3B,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YAE9B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAC3B,gBAAA,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC;AAC1C,YAAA,CAAC,CAAC;QACJ;IACF;AAEA,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;QAClB,IAAI,CAAC,cAAc,EAAE;IACvB;AAEA,IAAA,gBAAgB,CAAC,KAAiB,EAAA;QAChC,IAAI,IAAI,CAAC,QAAQ;YAAE;AAEnB,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE;IACxC;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;YACnB,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1B;IACF;IAEA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;AAMA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;QAC1B,IAAI,CAAC,iBAAiB,EAAE;IAC1B;+GA9KW,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAxB,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAqBjB,gBAAgB,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAiBhB,gBAAgB,CAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,gCAAA,EAAA,SAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,OAAA,EAAA,cAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,SAAA,EArDzB;;AAET,YAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,0BAA0B;AAC3E,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAegB,qBAAqB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/DxC,oBACA,EAAA,MAAA,EAAA,CAAA,4rBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDuCY,mBAAmB,8BAAE,WAAW,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAoB/B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAtBtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EACrB,CAAC,mBAAmB,EAAE,WAAW,CAAC,EAAA,eAAA,EAC1B,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAGhC,iBAAiB,CAAC,IAAI,EAAA,SAAA,EAC1B;;AAET,wBAAA,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,4BAA4B;qBAC3E,EAAA,IAAA,EACK;AACJ,wBAAA,aAAa,EAAE,oBAAoB;AACnC,wBAAA,KAAK,EAAE,kBAAkB;AACzB,wBAAA,uBAAuB,EAAE,UAAU;AACnC,wBAAA,kCAAkC,EAAE,SAAS;AAC7C,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,iBAAiB,EAAE,0BAA0B;AAC7C,wBAAA,SAAS,EAAE,YAAY;AACvB,wBAAA,QAAQ,EAAE;AACX,qBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,4rBAAA,CAAA,EAAA;;0BAuFE;;sBAlFF,eAAe;uBAAC,qBAAqB;;sBAErC;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;sBAGA,WAAW;uBAAC,OAAO;;sBAKnB,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAiBrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAYrC;;;AE9GH;;;;AAI6B;;ACJ7B;;;;AAI6B;MAgBhB,4BAA4B,CAAA;AAOvC,IAAA,IACW,KAAK,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;AACtB,YAAA,OAAO,OAAO;QAChB;AAEA,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,GAAG,EAAE;AACtB,YAAA,OAAO,MAAM;QACf;AAEA,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,GAAG,EAAE;AAC7C,YAAA,OAAO,QAAQ;QACjB;AAEA,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE;AAC9C,YAAA,OAAO,QAAQ;QACjB;AAEA,QAAA,OAAO,aAAa;IACtB;AAMA,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI;IAC/B;AAEA,IAAA,WAAA,GAAA;QAxCA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AAEvB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;QAEhC,IAAA,CAAA,aAAa,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;QAuBrB,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;;AAelE,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;IACnB;+GA5CW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,ktBCpBzC,2WAeA,EAAA,MAAA,EAAA,CAAA,4rCAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDKa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAZxC,SAAS;AACO,YAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAC5B,EAAE,EAAA,QAAA,EACD,uBAAuB,EAAA,IAAA,EAG3B;AACJ,wBAAA,aAAa,EAAE,uBAAuB;AACtC,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,MAAM,EAAE;AACT,qBAAA,EAAA,QAAA,EAAA,2WAAA,EAAA,MAAA,EAAA,CAAA,4rCAAA,CAAA,EAAA;;sBASA,WAAW;uBAAC,OAAO;;sBAyBnB;;;AEpDH;;;;AAI6B;;ACJ7B;;;;AAI6B;MA0BhB,qBAAqB,CAAA;AAOhC,IAAA,IACW,KAAK,GAAA;QACd,OAAO,CAAA,EAAG,IAAI,CAAC,IAAI,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE;IACxC;AAMA,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI;IAC/B;AAEA,IAAA,WAAA,GAAA;AAxBA,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,0EAAU;AAE/B,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAa,IAAI,2EAAC;QAE9B,IAAA,CAAA,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;QAOb,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;;AAe1D,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;IACnB;+GA5BW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,oqBC9BlC,0GAMA,EAAA,MAAA,EAAA,CAAA,k3BAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FDwBa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAZjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,WAChB,EAAE,EAAA,eAAA,EAGM,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,aAAa,EAAE,eAAe;AAC9B,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,MAAM,EAAE;AACT,qBAAA,EAAA,QAAA,EAAA,0GAAA,EAAA,MAAA,EAAA,CAAA,k3BAAA,CAAA,EAAA;;sBASA,WAAW;uBAAC,OAAO;;sBASnB;;;AE9CH;;;;AAI6B;;ACJ7B;;;;AAI6B;MAwDhB,mBAAmB,CAAA;AA5ChC,IAAA,WAAA,GAAA;QA6CY,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;QAK/C,IAAA,CAAA,KAAK,GAAG,EAAE;QAEV,IAAA,CAAA,IAAI,GAAG,EAAE;QAET,IAAA,CAAA,IAAI,GAAG,EAAE;AAElB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAqB,SAAS,6EAAC;AAE9C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAU,IAAI,kFAAC;AAEnC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAU,KAAK,gFAAC;AAElC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAU,KAAK,gFAAC;AAElC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAU,KAAK,iFAAC;AAEnC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAU,KAAK,+EAAC;AAOlC,IAAA;IALC,kBAAkB,GAAA;QAChB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;AAC7B,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;QAC7B;IACF;+GA5BW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,aAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAIb,mBAAmB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA7C1B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,y6CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyB,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAQU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA5C/B,SAAS;+BACE,aAAa,EAAA,UAAA,EACX,KAAK,EAAA,QAAA,EACP,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCT,EAAA,IAAA,EAEK;AACJ,wBAAA,aAAa,EAAE,aAAa;AAC5B,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,MAAM,EAAE;AACT,qBAAA,EAAA,MAAA,EAAA,CAAA,y6CAAA,CAAA,EAAA;;sBAMA,eAAe;uBAAC,mBAAmB;;sBAEnC;;sBAEA;;sBAEA;;;ACtEH;;;;AAI6B;MA6BhB,sBAAsB,CAAA;AAdnC,IAAA,WAAA,GAAA;QAeY,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;QAIxD,IAAA,CAAA,SAAS,GAA8B,UAAU;QAElD,IAAA,CAAA,GAAG,GAAG,EAAE;QAWP,IAAA,CAAA,WAAW,GAAI,EAAE;AAiD3B,IAAA;IA1DC,IACI,EAAE,CAAC,KAAa,EAAA;AAClB,QAAA,IAAI,CAAC,GAAG,GAAG,KAAK;IAClB;AAEA,IAAA,IAAI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAIA,kBAAkB,GAAA;QAChB,IAAI,CAAC,MAAM,EAAE;IACf;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,MAAM,EAAE;QACf;IACF;IAEA,MAAM,GAAA;QACJ,IAAI,SAAS,GAAG,KAAK;QAErB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;YACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;AAE1B,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,IAAI,CAAC;AAClD,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;gBACpB,SAAS,GAAG,IAAI;YAClB;AAEA,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;gBACtB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AAChC,oBAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,oBAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC;AACxD,oBAAA,IAAI,OAAO,CAAC,SAAS,EAAE,EAAE;wBACvB,SAAS,GAAG,IAAI;oBAClB;oBACA,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;AACpC,gBAAA,CAAC,CAAC;AAEF,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CACjB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAI;AAClC,oBAAA,OAAO,CAAC,CAAC,UAAU,EAAE;gBACvB,CAAC,CAAC,CACH;AAED,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CACf,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAI;AACjC,oBAAA,OAAO,CAAC,CAAC,SAAS,EAAE;gBACtB,CAAC,CAAC,CACH;YACH;iBAAO;gBACL,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;YACjC;AACF,QAAA,CAAC,CAAC;IACJ;+GAlEW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAtB,sBAAsB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAGhB,mBAAmB,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAd1B,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,usEAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAWf,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAdlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,UAAA,EACd,KAAK,EAAA,QAAA,EACP,CAAA,cAAA,CAAgB,EAAA,aAAA,EAEX,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,aAAa,EAAE,gBAAgB;AAC/B,wBAAA,WAAW,EAAE,UAAU;AACvB,wBAAA,MAAM,EAAE,UAAU;AAClB,wBAAA,oBAAoB,EAAE,CAAA,0BAAA;AACvB,qBAAA,EAAA,MAAA,EAAA,CAAA,usEAAA,CAAA,EAAA;;sBAKA,eAAe;uBAAC,mBAAmB;;sBAEnC;;sBAIA;;sBASA;;;ACnDH;;;;AAI6B;MAWhB,mBAAmB,CAAA;+GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAnB,mBAAmB,EAAA,YAAA,EAAA,CAJf,sBAAsB,EAAE,mBAAmB,aAChD,iBAAiB,CAAA,EAAA,OAAA,EAAA,CACjB,sBAAsB,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA;gHAE1C,mBAAmB,EAAA,CAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,sBAAsB,EAAE,mBAAmB,CAAC;oBAC3D,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC5B,oBAAA,OAAO,EAAE,CAAC,sBAAsB,EAAE,mBAAmB;AACtD,iBAAA;;;ACdD;;;;AAI6B;MAkBhB,+BAA+B,CAAA;AAiB1C,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI;IAC/B;AAEA,IAAA,WAAA,GAAA;QAnB2B,IAAA,CAAA,IAAI,GAAY,KAAK;QAErB,IAAA,CAAA,IAAI,GAAY,KAAK;AAEtC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAE;QAE7B,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC;;AAerE,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;IACnB;+GA7BW,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,0BAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtB5C,6jDA+BA,EAAA,MAAA,EAAA,CAAA,2OAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDrBY,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,IAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAYpB,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAb3C,SAAS;8BACC,CAAC,qBAAqB,CAAC,EAAA,aAAA,EACjB,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B,0BAA0B,EAAA,QAAA,EAC1B,wBAAwB,EAAA,IAAA,EAG5B;AACJ,wBAAA,aAAa,EAAE,0BAA0B;AACzC,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,MAAM,EAAE;AACT,qBAAA,EAAA,QAAA,EAAA,6jDAAA,EAAA,MAAA,EAAA,CAAA,2OAAA,CAAA,EAAA;;sBAGA;;sBAEA;;sBAEA;;sBAEA,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAExB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAExB;;sBAMA;;;AEvCH;;;;AAI6B;MAiBhB,8BAA8B,CAAA;AAKzC,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI;IAC/B;AAEA,IAAA,WAAA,GAAA;QAbU,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC;;AAepE,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;IACnB;+GAjBW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,+PCrB3C,+BACA,EAAA,MAAA,EAAA,CAAA,2CAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDoBa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAb1C,SAAS;iCACI,IAAI,EAAA,aAAA,EACD,iBAAiB,CAAC,IAAI,YAC3B,yBAAyB,EAAA,QAAA,EACzB,uBAAuB,EAAA,IAAA,EAG3B;AACJ,wBAAA,aAAa,EAAE,yBAAyB;AACxC,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,MAAM,EAAE;AACT,qBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,2CAAA,CAAA,EAAA;;sBAOA;;;AE1BH;;;;AAI6B;MA2BhB,6BAA6B,CAAA;AAaxC,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI;IAC/B;AAEA,IAAA,WAAA,GAAA;AAjBU,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAE;QAE7B,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC;QAIrE,IAAA,CAAA,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;;AAavB,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;IACnB;+GAzBW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,wBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/B1C,qbAcA,EAAA,MAAA,EAAA,CAAA,4HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDAI,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhB,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,SAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACrB,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,YAAA,EAAA,aAAA,EAAA,MAAA,EAAA,eAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAaZ,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAnBzC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA;wBACP,WAAW;wBACX,mBAAmB;wBACnB,qBAAqB;wBACrB,qBAAqB;wBACrB;AACD,qBAAA,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,YAC3B,wBAAwB,EAAA,QAAA,EACxB,sBAAsB,EAAA,IAAA,EAG1B;AACJ,wBAAA,aAAa,EAAE,wBAAwB;AACvC,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,MAAM,EAAE;AACT,qBAAA,EAAA,QAAA,EAAA,qbAAA,EAAA,MAAA,EAAA,CAAA,4HAAA,CAAA,EAAA;;sBAGA,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAExB;;sBAEA;;sBAQA;;;AE5CH;;;;AAI6B;MAyBhB,wBAAwB,CAAA;AAHrC,IAAA,WAAA,GAAA;AAIW,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAyC,WAAW,CAAC;AAQhF,IAAA;AANC,IAAA,OAAO,sBAAsB,CAC3B,IAAiC,EACjC,IAAa,EAAA;AAEb,QAAA,OAAO,IAAI;IACb;+GARW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;MAeY,8BAA8B,CAAA;AAH3C,IAAA,WAAA,GAAA;AAIW,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAoB,WAAW,CAAC;AAC3D,IAAA;+GAFY,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAH1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;MAQY,0BAA0B,CAAA;AAHvC,IAAA,WAAA,GAAA;QAIW,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,2EAAW,KAAK,EAAE,UAAU,EAAA,CAAG;AAEpD,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU;QAEhC,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,KAAK,mFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE3D,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAS,EAAE,2EAAC;AAExB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,EAAE,4EAAC;AAEzB,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAc,OAAO,4EAAC;QAEnC,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAExD,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAsB,MAAM,+EAAC;QAE7C,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAEvD,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,IAAI,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAEtD,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEvD,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAe,MAAM,6EAAC;AAEpC,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,KAAK,6EAAC;AAErB,QAAA,IAAA,CAAA,IAAI,GAAG,YAAY,EAAC,wBAA2B,4EAAC;AAEhD,QAAA,IAAA,CAAA,UAAU,GAAG,YAAY,CAAC,8BAA8B,iFAAC;AACnE,IAAA;+GA9BY,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,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,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,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,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,cAAA,EAAA,MAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,GA2BR,wBAA2B,CAAA,6FAErB,8BAA8B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FA7BtD,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;AA4B8B,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,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,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,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,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,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,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,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,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,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,cAAA,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,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,wBAA2B,4FAErB,8BAA8B,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;MAMtD,6BAA6B,CAAA;AAH1C,IAAA,WAAA,GAAA;AAIW,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAwC,WAAW,CAAC;AAQ/E,IAAA;AANC,IAAA,OAAO,sBAAsB,CAC3B,IAAsC,EACtC,IAAa,EAAA;AAEb,QAAA,OAAO,IAAI;IACb;+GARW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAHzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;MAeY,yBAAyB,CAAA;AAHtC,IAAA,WAAA,GAAA;AAIW,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAoB,WAAW,CAAC;AAC3D,IAAA;+GAFY,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;MAQY,2BAA2B,CAAA;AAHxC,IAAA,WAAA,GAAA;AAIW,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAoB,WAAW,CAAC;AAC3D,IAAA;+GAFY,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;ACzGD;;;;AAI6B;AAqBvB,SAAU,eAAe,CAC7B,CAAoC,EACpC,CAAoC,EAAA;AAEpC,IAAA,QACE,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QACrB,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;YACtB,QACE,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI;gBAC3B,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM;gBAC/B,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM;QAEnC,CAAC,CAAC;AAEN;AAEM,SAAU,UAAU,CAAC,IAAsB,EAAE,MAAc,EAAA;AAC/D,IAAA,OAAO,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI;AACxD;AAEM,SAAU,WAAW,CAAC,QAAgB,EAAE,MAAuC,EAAA;AACnF,IAAA,IAAI,CAAC,QAAQ;AAAE,QAAA,OAAO,EAAE;IACxB,OAAO,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,WAAW,EAAE,GAAW,KAAI;QACjE,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACtE,IAAA,CAAC,CAAC;AACJ;AAEM,SAAU,SAAS,CAAC,OAA4B,EAAE,GAAW,EAAA;AACjE,IAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;AAC7B,IAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AAAE,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACpC,IAAA,OAAO,IAAI;AACb;AAEM,SAAU,cAAc,CAC5B,OAA4B,EAC5B,IAAuB,EAAA;IAEvB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;IAC3D,IAAI,KAAK,KAAK,CAAC;AAAE,QAAA,OAAO,MAAM;AAC9B,IAAA,OAAO,KAAK,KAAK,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,SAAS;AAClD;AAEM,SAAU,OAAO,CACrB,OAA4B,EAC5B,IAAuB,EACvB,KAAK,GAAG,CAAC,EAAA;AAET,IAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;AAC7B,IAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACnB,QAAA,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE;AACvD,QAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACf,IAAA,CAAC,CAAC;AACF,IAAA,OAAO,IAAI;AACb;AAEM,SAAU,UAAU,CACxB,OAA4B,EAC5B,IAAuB,EAAA;AAEvB,IAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;AAC7B,IAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACvC,IAAA,OAAO,IAAI;AACb;SAEgB,WAAW,CACzB,KAAmB,EACnB,MAA2B,EAC3B,KAAwB,EAAA;IAExB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,CAAC,IAAO,KAAK,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM;IACpE,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACrD;AAEM,SAAU,UAAU,CAAC,QAA2B,EAAE,IAAuB,EAAA;AAC7E,IAAA,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC;AAC1B,IAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC;AAC9F,IAAA,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC;AAC/B;AASA,SAAS,UAAU,CAAC,KAAa,EAAE,IAAuB,EAAA;IACxD,IAAI,GAAG,GAAG,CAAC;AACX,IAAA,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM;AACtB,IAAA,OAAO,GAAG,GAAG,IAAI,EAAE;QACjB,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC;AAC9B,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK;AAAE,YAAA,GAAG,GAAG,GAAG,GAAG,CAAC;;YAC/B,IAAI,GAAG,GAAG;IACjB;AACA,IAAA,OAAO,GAAG;AACZ;AAEM,SAAU,WAAW,CAAC,OAAmB,EAAA;IAC7C,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,OAAO;IAC/D,OAAO,KAAK,GAAG,SAAS,GAAG,WAAW,CAAC,MAAM,GAAG,YAAY;AAC9D;AAEM,SAAU,aAAa,CAAC,KAAa,EAAE,OAAmB,EAAA;AAC9D,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3D,QACE,OAAO,GAAG,OAAO,CAAC,SAAS,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,YAAY;AAEjG;AAEM,SAAU,aAAa,CAAC,MAAc,EAAE,OAAmB,EAAA;IAC/D,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC;AAAE,QAAA,OAAO,CAAC;IAC1D,IAAI,MAAM,IAAI,CAAC;AAAE,QAAA,OAAO,CAAC;IAEzB,IAAI,GAAG,GAAG,CAAC;AACX,IAAA,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC;AAC5B,IAAA,OAAO,GAAG,GAAG,IAAI,EAAE;QACjB,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC;AAClC,QAAA,IAAI,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM;YAAE,GAAG,GAAG,GAAG;;AAC/C,YAAA,IAAI,GAAG,GAAG,GAAG,CAAC;IACrB;AACA,IAAA,OAAO,GAAG;AACZ;AAEM,SAAU,IAAI,CAAC,KAAgC,EAAA;AACnD,IAAA,MAAM,OAAO,GAAG,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IACzE,OAAO,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACtD;;MC/Ia,wBAAwB,CAAA;AAArC,IAAA,WAAA,GAAA;AACmB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAU;AAE5C,QAAA,IAAA,CAAA,mBAAmB,GAAuB,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;QAE3E,IAAA,CAAA,SAAS,GAAoC,IAAI;AAEjD,QAAA,IAAA,CAAA,QAAQ,GAAe;AAC7B,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,YAAY,EAAE,CAAC;AACf,YAAA,WAAW,EAAE;SACd;QAEO,IAAA,CAAA,OAAO,GAAG,CAAC;IA6DrB;AA3DE,IAAA,MAAM,CAAC,QAAkC,EAAA;AACvC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;QACzB,IAAI,CAAC,MAAM,EAAE;IACf;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;IACvB;IAEA,iBAAiB,GAAA;QACf,IAAI,CAAC,MAAM,EAAE;IACf;IAEA,mBAAmB,GAAA;QACjB,IAAI,CAAC,MAAM,EAAE;IACf;IAEA,iBAAiB,GAAA;IACjB;IAEA,uBAAuB,GAAA;IACvB;IAEA,aAAa,CAAC,KAAa,EAAE,QAAwB,EAAA;AACnD,QAAA,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC/E;IAEA,UAAU,CAAC,OAAmB,EAAE,MAAc,EAAA;AAC5C,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;QACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;QAClC,IAAI,CAAC,MAAM,EAAE;IACf;IAEQ,MAAM,GAAA;AACZ,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS;AAC/B,QAAA,IAAI,CAAC,QAAQ;YAAE;AAEf,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ;QAC7B,QAAQ,CAAC,mBAAmB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAElD,QAAA,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,EAAE;AACtB,YAAA,QAAQ,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AAC/C,YAAA,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAC;YACpC;QACF;AAEA,QAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,mBAAmB,EAAE;AAC7C,QAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,EAAE;QACvC,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC;QACnD,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,GAAG,IAAI,EAAE,OAAO,CAAC;AAEzD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC;AACtD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QAEnE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QACzC,QAAQ,CAAC,wBAAwB,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC;IACtC;AACD;;ACpFD;;;;AAI6B;AA4D7B,MAAM,eAAe,GAAG,EAAE;AAC1B,MAAM,YAAY,GAAG,EAAE;AACvB,MAAM,gBAAgB,GAAG,GAAG;AAC5B,MAAM,kBAAkB,GAAG,EAAE;AAC7B,MAAM,wBAAwB,GAAG,EAAE;AACnC,MAAM,qBAAqB,GAAG,CAAC;AAC/B,MAAM,aAAa,GAAG,CAAC;AAEvB,MAAM,gBAAgB,GAAG,EAAE;MAqEd,oBAAoB,CAAA;AAoU/B,IAAA,WAAA,GAAA;AAnUS,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,wBAAwB,EAAE;AAExC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AAEtB,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAY,MAAM,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAEzE,QAAA,IAAA,CAAA,QAAQ,GAAG,eAAe,EAAC,0BAA6B,gFAAC;AAEzD,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;YAC7C,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;AAC1E,QAAA,CAAC,oFAAC;AAEe,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;YAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AAClE,YAAA,OAAO,WAAW,CAAC,KAAK,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AAC1E,QAAA,CAAC,sFAAC;AAEe,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;YAC/C,OAAO,IAAI,CAAC,QAAQ;iBACjB,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU;iBAChC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC;AAC5B,QAAA,CAAC,sFAAC;AAEe,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAC1C,YAAA,OAAO,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;AAChE,QAAA,CAAC,iFAAC;AAEe,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,KAAK,8EAAC;AAEvB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,CAAC,oFAAC;AAEzB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,CAAC,kFAAC;AAEvB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAA0B,UAAU,CAAC;QAM5D,IAAA,CAAA,MAAM,GAAG,CAAC;QAEV,IAAA,CAAA,UAAU,GAAG,IAAI;QAEjB,IAAA,CAAA,YAAY,GAAG,CAAC;QAEhB,IAAA,CAAA,YAAY,GAAG,CAAC;AAEP,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;AACvC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE;AACtC,YAAA,MAAM,aAAa,GAAiB,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,MAAM;AACrF,kBAAE;kBACA,MAAM;YAEV,MAAM,OAAO,GAAG,CAAC,IAA4B,EAAE,EAAU,EAAE,MAAoB,KAAa;gBAC1F,OAAO;oBACL,IAAI;oBACJ,GAAG,EAAE,CAAA,EAAA,EAAK,IAAI,CAAA,CAAE;AAChB,oBAAA,MAAM,EAAE,IAAI;oBACZ,KAAK,EAAE,CAAA,EAAG,EAAE,CAAA,EAAA,CAAI;oBAChB,EAAE;oBACF,MAAM;AACN,oBAAA,MAAM,EAAE,CAAC;AACT,oBAAA,KAAK,EAAE;iBACR;AACH,YAAA,CAAC;YAED,MAAM,KAAK,GAAc,EAAE;AAC3B,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,MAAM,EAAE;AACnC,gBAAA,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC;YAClE;AACA,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;gBACrB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,aAAa,CAAC,CAAC;YACtF;AACA,YAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;gBACzB,KAAK,CAAC,IAAI,CAAC;AACT,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE;oBAClB,MAAM;AACN,oBAAA,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI;AAC7B,oBAAA,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AACxB,oBAAA,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AACpC,oBAAA,MAAM,EAAE,CAAC;AACT,oBAAA,KAAK,EAAE,MAAM,CAAC,KAAK;AACpB,iBAAA,CAAC;AACJ,YAAA,CAAC,CAAC;YAEF,IAAI,UAAU,GAAG,CAAC;AAClB,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACrB,gBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM;oBAAE;AAC5B,gBAAA,IAAI,CAAC,MAAM,GAAG,UAAU;AACxB,gBAAA,UAAU,IAAI,IAAI,CAAC,EAAE;AACvB,YAAA,CAAC,CAAC;YAEF,IAAI,QAAQ,GAAG,CAAC;AAChB,YAAA,CAAC,GAAG,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACpC,gBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO;oBAAE;AAC7B,gBAAA,IAAI,CAAC,MAAM,GAAG,QAAQ;AACtB,gBAAA,QAAQ,IAAI,IAAI,CAAC,EAAE;AACrB,YAAA,CAAC,CAAC;AAEF,YAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE;AACxC,QAAA,CAAC,8EAAC;AAEO,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,0EAAgB;AAErC,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,4EAAsB;QAE7C,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAsB;QAEtC,IAAA,CAAA,aAAa,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAuB;AAE5C,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,+EAAU;AAEpC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAS,EAAE,8EAAC;AAE3B,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAsB,MAAM,oFAAC;AAElD,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAsB,IAAI,GAAG,EAAE,+EAAC;AAEhD,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,CAAC,kFAAC;AAE9B,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAmB,IAAI,2EAAC;QAEpC,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,KAAK,kFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE1D,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAsB,IAAI,GAAG,EAAE,+EAAC;QAEhD,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,KAAK,mFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAE3D,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAExD,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAExD,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,kBAAkB,gFAAC;AAE7C,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAkB,wBAAwB,qFAAC;AAEjE,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAiB,MAAM,oFAAC;AAE7C,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAoB,EAAE,kFAAC;AAE1C,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAoC,EAAE,kFAAC;QAE1D,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAEvD,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,KAAK,+EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEvD,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,EAAE,gFAAC;AAE7B,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAkB,MAAM,mFAAC;QAE7C,IAAA,CAAA,YAAY,GAAG,MAAM,EAAoB;QAEzC,IAAA,CAAA,cAAc,GAAG,MAAM,EAAmC;QAE1D,IAAA,CAAA,mBAAmB,GAAG,MAAM,EAA4B;QAExD,IAAA,CAAA,iBAAiB,GAAG,MAAM,EAAY;QAEtC,IAAA,CAAA,cAAc,GAAG,MAAM,EAA8C;AAE3D,QAAA,IAAA,CAAA,aAAa,GAAG,YAAY,CAAC,yBAAyB,oFAAC;AAEvD,QAAA,IAAA,CAAA,eAAe,GAAG,YAAY,CAAC,2BAA2B,sFAAC;AAE3D,QAAA,IAAA,CAAA,iBAAiB,GAAG,YAAY,EAAC,6BAAgC,yFAAC;AAElE,QAAA,IAAA,CAAA,aAAa,GAAG,SAAS,CAA0B,UAAU,oFAAC;AAE9D,QAAA,IAAA,CAAA,QAAQ,GAAG,SAAS,CAA0B,UAAU,+EAAC;AAEzD,QAAA,IAAA,CAAA,eAAe,GAAG,SAAS,CAAC,wBAAwB,sFAAC;AAErD,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC9C,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE;AACvC,YAAA,IAAI,QAAQ;AAAE,gBAAA,OAAO,QAAQ,CAAC,UAAU,CAAC,aAAa;YACtD,OAAO,IAAI,CAAC,aAAa,EAAE,EAAE,aAAa,IAAI,IAAI;AACpD,QAAA,CAAC,mFAAC;AAEe,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;AACvC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,EAAE;YACjC,OAAO,GAAG,KAAK,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1D,QAAA,CAAC,8EAAC;AAEiB,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;AACzC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAA,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,GAAG;AAC5C,QAAA,CAAC,8EAAC;AAEiB,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;AACzC,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,KAAK;AAErF,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,gBAAgB,CAAC;YAC5D,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,SAAS;AAC3C,QAAA,CAAC,8EAAC;AAEiB,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACjD,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,EAAE;YAE9B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE;AAC9C,YAAA,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI;AACjE,QAAA,CAAC,sFAAC;AAEiB,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAC5C,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,YAAA,MAAM,WAAW,GAAG,QAAQ,CAAC;AAC3B,kBAAE,IAAI,CAAC,QAAQ;AACV,qBAAA,MAAM,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;qBACvC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK;kBAC3B,EAAE;YAEN,OAAO;gBACL,WAAW;AACX,gBAAA,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM;gBAC7B,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;AACxC,gBAAA,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG;aAC1D;AACH,QAAA,CAAC,iFAAC;AAEiB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,KAAK,kFAAC;AAE3B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,IAAI,8EAAC;AAEtB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,IAAI,4EAAC;AAEpB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAgB,IAAI,+EAAC;AAEtC,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,4EAAC;AAE5C,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,uFAAC;AAE5D,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,qFAAC;AAExD,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAC5C,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAAE,gBAAA,OAAO,CAAC;AACjE,YAAA,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1D,QAAA,CAAC,iFAAC;AAEiB,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,KAAK,KAAK,kFAAC;AAEzD,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,KAAK,SAAS,mFAAC;AAE9D,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAClD,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAChC,YAAA,OAAO,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,IAAI,KAAK;AACnD,QAAA,CAAC,uFAAC;AAEiB,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,oFAAC;AAEjE,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAe,MAAK;AACxD,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE;AAC3B,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE;YACnC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,KAAK,MAAM;AAEjD,YAAA,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;gBACpC,OAAO;oBACL,GAAG;oBACH,KAAK;AACL,oBAAA,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;oBACf,UAAU,EAAE,SAAS,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC;iBACjD;AACH,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,+EAAC;AAEiB,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAiB,MAAK;AAC5D,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC/B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;YACvC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,KAAK,MAAM;AACjD,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE;AACnC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE;AAC1B,YAAA,MAAM,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE;AAC1D,YAAA,MAAM,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE;AAC1D,YAAA,MAAM,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,EAAE;YAE9D,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AAClC,gBAAA,MAAM,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG;gBACpD,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;gBACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;gBACnC,IAAI,aAAa,GAAkB,IAAI;AACvC,gBAAA,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU;AAAE,oBAAA,aAAa,GAAG,IAAI,CAAC,aAAa;qBAClE,IAAI,CAAC,UAAU,IAAI,OAAO;AAAE,oBAAA,aAAa,GAAG,IAAI,CAAC,KAAK;gBAE3D,OAAO;AACL,oBAAA,GAAG,IAAI;oBACP,IAAI;oBACJ,aAAa;AACb,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,WAAW,EAAE,SAAS,GAAG,WAAW,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE;oBAC5D,WAAW,EAAE,SAAS,GAAG,WAAW,CAAC,IAAI,GAAG,QAAQ,GAAG,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG;iBAC7E;AACH,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,iFAAC;AAEiB,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC/C,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE;AACrC,YAAA,IAAI,SAAS,KAAK,MAAM,EAAE;AACxB,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;AAC1B,gBAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,qBAAqB,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YACnF;AAEA,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC;YAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,qBAAqB;AAC9F,YAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC;AACpD,QAAA,CAAC,oFAAC;AAEiB,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;YACxC,OAAO;gBACL,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;gBAC1C,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;gBAC5C,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;gBACjC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;gBAC/B,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;gBACnC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC;gBACzC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;gBAClC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC1E,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC;AACjD,gBAAA,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,IAAI;aACnD;AACH,QAAA,CAAC,6EAAC;QAqKQ,IAAA,CAAA,SAAS,GAAG,MAAW;AAC/B,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACzB,QAAA,CAAC;AAES,QAAA,IAAA,CAAA,QAAQ,GAAG,CAAC,MAAc,EAAE,IAAgB,KAAY;YAChE,OAAO,IAAI,CAAC,GAAG;AACjB,QAAA,CAAC;QAxKC,IAAI,CAAC,uBAAuB,EAAE;QAC9B,IAAI,CAAC,kBAAkB,EAAE;AAEzB,QAAA,MAAM,CAAC,CAAC,SAAS,KAAI;AACnB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE;AAClC,YAAA,IAAI,CAAC,MAAM;gBAAE;YACb,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE;YAEtC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAK;AACjD,gBAAA,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC9D,gBAAA,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC5D,gBAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;gBACtB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACrE,gBAAA,OAAO,MAAM;AACf,YAAA,CAAC,CAAC;AAEF,YAAA,IAAI,CAAC,SAAS,GAAG,MAAM;AACvB,YAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;YACzB,IAAI,CAAC,OAAO,EAAE;YAEd,SAAS,CAAC,MAAK;AACb,gBAAA,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBAC9C,QAAQ,CAAC,UAAU,EAAE;AACrB,gBAAA,IAAI,CAAC,SAAS,GAAG,SAAS;gBAC1B,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,IAAI,EAAE;YACX,cAAc,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC3C,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AACjC,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBAAE;YACrB,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC;AACzD,QAAA,CAAC,CAAC;IACJ;IAEQ,IAAI,CAAC,KAAgC,EAAE,GAAW,EAAA;AACxD,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE;IAC3C;AAEQ,IAAA,eAAe,CAAC,MAAiB,EAAA;AACvC,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE;AAC9B,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM;IAC9D;IAEQ,QAAQ,CAAC,OAAO,GAAG,KAAK,EAAA;AAC9B,QAAA,IAAI,OAAO;AAAE,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;QACnC,IAAI,IAAI,CAAC,MAAM;YAAE;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAK;YAC9C,OAAO,qBAAqB,CAAC,MAAK;AAChC,gBAAA,IAAI,CAAC,MAAM,GAAG,CAAC;gBACf,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEQ,WAAW,GAAA;QACjB,IAAI,IAAI,CAAC,MAAM;AAAE,YAAA,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;AAClD,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC;IACjB;IAEQ,OAAO,GAAA;AACb,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS;AACzB,QAAA,IAAI,CAAC,EAAE;YAAE;AAET,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,WAAW;AAClC,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,WAAW;AAElC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAc,yBAAyB,CAAC;YACzE,IAAI,MAAM,EAAE,YAAY;gBAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;YAErE,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAc,OAAO,CAAC;YACrD,IAAI,IAAI,EAAE,YAAY;gBAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;QACjE;QAEA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY;AACvD,QAAA,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU;AAE9B,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC;QAC/E,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,IAAI,QAAQ,IAAI,SAAS,GAAG,CAAC,CAAC;QAE3D,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,aAAa;AAC3C,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ;AAAE,YAAA,IAAI,CAAC,UAAU,GAAG,QAAQ;IACtE;IAEQ,uBAAuB,GAAA;QAC7B,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC7C,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;AACxD,gBAAA,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACvD,YAAA,CAAC,CAAC;YACF,IAAI,IAAI,IAAI,CAAC,UAAU;AAAE,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AAClD,QAAA,CAAC,CAAC;IACJ;IAEQ,YAAY,GAAA;AAClB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;AAC5D,QAAA,OAAO,WAAW,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;IAC/D;IAEQ,kBAAkB,GAAA;QACxB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;YACtC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;YAC7C,OAAO;gBACL,IAAI;AACJ,gBAAA,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,KAAK;AACjC,gBAAA,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI;aAC7B;AACH,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,eAAe,CAAC,IAAyB,EAAA;AAC/C,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACxC;AAEQ,IAAA,UAAU,CAAC,KAAwB,EAAA;AACzC,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;AACxD,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;IACzB;IAEQ,kBAAkB,GAAA;QACxB,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE;YACnC,IAAI,CAAC,QAAQ,CAAC,MAAM;gBAAE;YAEtB,SAAS,CAAC,MAAK;AACb,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM;oBAAE;gBAC7B,IAAI,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBAAE;AAE1D,gBAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACxB,oBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;oBAClD,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;oBAC/B,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AACjC,gBAAA,CAAC,CAAC;gBAEF,IAAI,CAAC,WAAW,CAAC,GAAG,CAClB,UAAU,CACR,IAAI,CAAC,WAAW,EAAE,EAClB,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAClC,CACF;AACH,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE;QAC5B,IAAI,CAAC,WAAW,EAAE;IACpB;AAUU,IAAA,UAAU,CAAC,MAAiB,EAAA;QACpC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC7E;AAEU,IAAA,OAAO,CAAC,MAAwB,EAAA;AACxC,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,KAAK;QACzB,QACE,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAE/F;AAEU,IAAA,OAAO,CAAC,MAAiB,EAAA;QACjC,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,QAAQ,EAAE;IAC7C;AAEU,IAAA,UAAU,CAAC,MAAiB,EAAA;QACpC,OAAO,IAAI,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE;IAC/C;AAEU,IAAA,MAAM,CAAC,MAAiB,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;IAChE;IAEU,YAAY,GAAA;QACpB,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,IAAI,CAAC;IAC3C;AAEU,IAAA,UAAU,CAAC,MAAiB,EAAA;QACpC,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE;QAC5C,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAA,EAAG,IAAI,CAAA,IAAA,CAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAA,EAAG,IAAI,CAAA,KAAA,CAAO,CAAC,EAAE;IAC3F;AAEU,IAAA,WAAW,CAAC,MAAwB,EAAA;QAC5C,OAAO,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAC/D;IAEU,UAAU,CAAC,MAAiB,EAAE,SAAwB,EAAA;AAC9D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE;AAC3B,QAAA,OAAO,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS;IAC7E;IAEU,MAAM,CAAC,MAAiB,EAAE,SAAwB,EAAA;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC;QACpD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC;AAC/E,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;IACzB;IAEU,OAAO,CAAC,MAAiB,EAAE,KAAa,EAAA;AAChD,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AAAE,YAAA,OAAO,KAAK;AAE1C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE;AACtC,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;AAC1D,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AAAE,YAAA,OAAO,KAAK;AACpD,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;IACzE;IAEU,IAAI,CAAC,MAAiB,EAAE,KAAa,EAAA;QAC7C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;YAAE;AAElC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE;AACtC,QAAA,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;AAC1D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;QACjC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAC1C,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AAEnD,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;IACxB;AAEU,IAAA,IAAI,CAAC,MAAiB,EAAA;QAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE;YAAE;AAElD,QAAA,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;QACxE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;IACtC;AAEU,IAAA,SAAS,CAAC,MAAiB,EAAA;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YAAE;AAE1B,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE;AAC3B,QAAA,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;QAEnD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;QAC3E,MAAM,QAAQ,GAAG,CAAC,IAAY,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,MAAM;QACrF,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC,MAAM;AAC3E,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC;AACzE,QAAA,MAAM,WAAW,GAAG,UAAU,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,UAAU;AAElE,QAAA,MAAM,CAAC,MAAM,CACX,GAAG,KAAK,OAAO,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,EAChE,CAAC,EACD,MAAM,CAAC,IAAI,EAAE,CACd;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IACzB;AAEU,IAAA,SAAS,CAAC,IAAgB,EAAA;AAClC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;QAChC,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,gBAAgB,EAAE;QAC3D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO;YAAE;AACxC,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACrD;IAEU,aAAa,GAAA;AACrB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE;QAEnC,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;YACjD,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAChD;QACF;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACnE;AAEU,IAAA,UAAU,CAAC,IAAgB,EAAA;AACnC,QAAA,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC;AACjD,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAC1F;+GAvmBW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,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,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,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,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,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,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,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,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,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,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,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,OAAA,EAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,2BAAA,EAAA,WAAA,EAAA,6BAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,2BAAA,EAAA,EAAA,cAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAdpB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,uBAAuB;gBAChC,UAAU,EAAE,CAAC,KAAoC,KAAK,KAAK,CAAC,eAAe;gBAC3E,IAAI,EAAE,CAAC,oBAAoB;AAC5B;AACF,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,GAe2C,0BAA6B,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA2JzB,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAEvB,2BAA2B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,GAEzB,6BAAgC,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAMrC,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzTzE,s6dAoZA,EAAA,MAAA,EAAA,CAAA,61MAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDlSI,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,gCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,uBAAuB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,sBAAsB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,sBAAsB,khBACtB,wBAAwB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAoBf,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBA9BhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,OAAA,EACf;wBACP,gBAAgB;wBAChB,eAAe;wBACf,uBAAuB;wBACvB,sBAAsB;wBACtB,yBAAyB;wBACzB,qBAAqB;wBACrB,sBAAsB;wBACtB;AACD,qBAAA,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,SAAA,EAC1B;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,uBAAuB;4BAChC,UAAU,EAAE,CAAC,KAAoC,KAAK,KAAK,CAAC,eAAe;AAC3E,4BAAA,IAAI,EAAE,CAAA,oBAAA;AACP;qBACF,EAAA,IAAA,EACK;AACJ,wBAAA,KAAK,EAAE,YAAY;AACnB,wBAAA,6BAA6B,EAAE,WAAW;AAC1C,wBAAA,+BAA+B,EAAE,cAAc;AAC/C,wBAAA,kBAAkB,EAAE;AACrB,qBAAA,EAAA,QAAA,EAAA,s6dAAA,EAAA,MAAA,EAAA,CAAA,61MAAA,CAAA,EAAA;0HAS2C,0BAA6B,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,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,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,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,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,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,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,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,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,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,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,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,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,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,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,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,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,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,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,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,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,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MA2JzB,yBAAyB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAEvB,2BAA2B,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAEzB,6BAAgC,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAEd,UAAU,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAEf,UAAU,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAE5B,wBAAwB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEzTzE;;;;AAI6B;;ACJ7B;;;;AAI6B;MAqBhB,sBAAsB,CAAA;AAGjC,IAAA,IACI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,QAAQ;IACtB;AAEA,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC;IAC/B;AAMA,IAAA,WAAA,CAAgD,MAAc,EAAA;QAAd,IAAA,CAAA,MAAM,GAAN,MAAM;QAhBd,IAAA,CAAA,QAAQ,GAAY,KAAK;AAYzD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAE/B,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,EAAC,UAA6B,EAAC;;IAIlD;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,iBAAiB,EAAE;YAExB,IAAI,CAAC,MAAM,CAAC;AACT,iBAAA,IAAI,CACH,MAAM,CAAC,CAAC,KAAK,KAAI;gBACf,OAAO,KAAK,YAAY,aAAa;YACvC,CAAC,CAAC,EACF,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;iBAEpC,SAAS,CAAC,MAAK;gBACd,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,CAAC,CAAC;QACN;IACF;IAEQ,iBAAiB,GAAA;QACvB,IAAI,IAAI,CAAC,QAAQ;YAAE;AAEnB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;AAElD,QAAA,IAAI,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE;YAC7B,MAAM,QAAQ,GACZ,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,UAAU;AAC9B,iBAAC,UAAU,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAEhE,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC9B;iBAAO;AACL,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;YACjC;QACF;IACF;AAvDW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,kBAiBD,MAAM,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAjB3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,mGACb,gBAAgB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FADzB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAkBc;;0BAAY,MAAM;2BAAC,MAAM;;sBAhBrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAErC,WAAW;uBAAC,gBAAgB;;sBAK5B,WAAW;uBAAC,eAAe;;;ACjC9B;;;;AAI6B;MA0BhB,kBAAkB,CAAA;AAhB/B,IAAA,WAAA,GAAA;QAiBW,IAAA,CAAA,KAAK,GAAW,EAAE;QAEa,IAAA,CAAA,QAAQ,GAAY,KAAK;AAEvD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAU;QAI9C,IAAA,CAAA,UAAU,GAAY,KAAK;AAO5B,IAAA;IALC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAC/B;IACF;+GAfW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAGT,gBAAgB,CAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhB1B,CAAA;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA,CAAA;;4FASU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAhB9B,SAAS;+BACE,YAAY,EAAA,UAAA,EACV,KAAK,EAAA,QAAA,EACP,CAAA;;;;AAIT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;sBAUA;;sBAEA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAErC;;sBAEA;;sBACA,WAAW;uBAAC,gBAAgB;;;ACtC/B;;;;AAI6B;MAoEhB,mBAAmB,CAAA;AA7ChC,IAAA,WAAA,GAAA;QA8CY,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;QAErD,IAAA,CAAA,QAAQ,GAAW,EAAE;QAEU,IAAA,CAAA,SAAS,GAAY,KAAK;QAEzD,IAAA,CAAA,QAAQ,GAA+B,OAAO;AAE7C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAU;QAQ/C,IAAA,CAAA,gBAAgB,GAAG,KAAK;QAExB,IAAA,CAAA,iBAAiB,GAAG,KAAK;QAEzB,IAAA,CAAA,SAAS,GAAG,KAAK;QAEjB,IAAA,CAAA,cAAc,GAAG,CAAC;AAEV,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAqFxC,IAAA;IAjFS,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,YAAA,EAAe,IAAI,CAAC,cAAc,KAAK;QACxF,IAAI,CAAC,kBAAkB,EAAE;IAC3B;IAEQ,kBAAkB,GAAA;QACxB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE;QAE3C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW;QAC7D,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW;AAC/D,QAAA,MAAM,SAAS,GAAG,YAAY,GAAG,WAAW;AAE5C,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,GAAG,CAAC;QAC9B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC;AAC/C,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,GAAG,SAAS,IAAI,SAAS,GAAG,CAAC;IAC3E;AAEQ,IAAA,SAAS,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,kBAAkB,EAAE;IAC3B;IAEQ,kBAAkB,GAAA;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE;QAEhB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YACxB,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ;AAC9C,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,kBAAkB,EAAE;IAC3B;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE;AACzC,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,MAAK;gBAC5C,IAAI,CAAC,kBAAkB,EAAE;AAC3B,YAAA,CAAC,CAAC;YACF,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAC5D;QAEA,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,kBAAkB,EAAE;QAC3B,CAAC,EAAE,CAAC,CAAC;IACP;IAEA,kBAAkB,GAAA;QAChB,IAAI,CAAC,gBAAgB,EAAE;IACzB;IAEA,gBAAgB,GAAA;QACd,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACxB,YAAA,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAa,KAAI;AAChF,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACvB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,kBAAkB,EAAE;IAC3B;IAEA,UAAU,GAAA;QACR,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW;AAC7D,QAAA,MAAM,YAAY,GAAG,WAAW,GAAG,GAAG;AACtC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC;QACrE,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEA,WAAW,GAAA;QACT,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW;QAC7D,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW;AAC/D,QAAA,MAAM,SAAS,GAAG,YAAY,GAAG,WAAW;AAC5C,QAAA,MAAM,YAAY,GAAG,WAAW,GAAG,GAAG;AACtC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC;QAC7E,IAAI,CAAC,oBAAoB,EAAE;IAC7B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE;IACnC;+GA7GW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAKV,gBAAgB,CAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,aAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,SAAA,EAMnB,kBAAkB,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApDzB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kgGAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAQU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA7C/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,cACX,KAAK,EAAA,aAAA,EACF,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAC3B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCT,EAAA,IAAA,EAEK;AACJ,wBAAA,aAAa,EAAE,aAAa;AAC5B,wBAAA,WAAW,EAAE,UAAU;AACvB,wBAAA,MAAM,EAAE;AACT,qBAAA,EAAA,MAAA,EAAA,CAAA,kgGAAA,CAAA,EAAA;;sBAKA;;sBAEA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAErC;;sBAEA;;sBAEA,eAAe;uBAAC,kBAAkB;;sBAElC,SAAS;uBAAC,YAAY;;sBAEtB,SAAS;uBAAC,aAAa;;;ACvF1B;;;;AAI6B;MAUhB,gBAAgB,CAAA;+GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAhB,gBAAgB,EAAA,YAAA,EAAA,CAHZ,mBAAmB,EAAE,kBAAkB,EAAE,sBAAsB,CAAA,EAAA,OAAA,EAAA,CACpE,mBAAmB,EAAE,kBAAkB,EAAE,sBAAsB,CAAA,EAAA,CAAA,CAAA;gHAE9D,gBAAgB,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,sBAAsB,CAAC;AAC/E,oBAAA,OAAO,EAAE,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,sBAAsB;AAC1E,iBAAA;;;ACbD;;;;AAI6B;;ACJ7B;;;;AAI6B;MAwBhB,qBAAqB,CAAA;IAShC,IAAa,KAAK,CAAC,CAA6B,EAAA;AAC9C,QAAA,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACzB,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,MAAM;QAC9B;aAAO;AACL,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC;QACnB;IACF;AAQA,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI;IAC/B;AAEA,IAAA,WAAA,GAAA;QA/BwC,IAAA,CAAA,QAAQ,GAAG,KAAK;QAIxD,IAAA,CAAA,IAAI,GAAuB,IAAI;AAErB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAO;QAU5C,IAAA,CAAA,QAAQ,GAAY,KAAK;QAEf,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;;AAe1D,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;IACnB;AAGA,IAAA,OAAO,CAAC,KAAU,EAAA;QAChB,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;QACvB,KAAK,CAAC,wBAAwB,EAAE;AAEhC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;AAClC,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ;QAChC;IACF;+GA/CW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5BlC,4HAEA,EAAA,MAAA,EAAA,CAAA,usDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDiBY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FASX,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAXjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,OAAA,EAChB,CAAC,YAAY,CAAC,EAAA,IAAA,EAGjB;AACJ,wBAAA,aAAa,EAAE,eAAe;AAC9B,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,MAAM,EAAE;AACT,qBAAA,EAAA,QAAA,EAAA,4HAAA,EAAA,MAAA,EAAA,CAAA,usDAAA,CAAA,EAAA;;sBAGA,WAAW;uBAAC,gBAAgB;;sBAAG;;sBAE/B,WAAW;uBAAC,OAAO;;sBACnB;;sBAGA;;sBAEA;;sBAcA;;sBAcA,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;AEjEnC;;;;AAI6B;;ACJ7B;;;;AAI6B;MAUhB,+BAA+B,CAAA;AAP5C,IAAA,WAAA,GAAA;QAQW,IAAA,CAAA,QAAQ,GAAY,KAAK;AAExB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAE;AAOxC,IAAA;+GAVY,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+BAA+B,wLCd5C,mRAWA,EAAA,MAAA,EAAA,CAAA,qoCAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDGa,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAP3C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAAA,UAAA,EACzB,IAAI,EAAA,aAAA,EAGD,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,mRAAA,EAAA,MAAA,EAAA,CAAA,qoCAAA,CAAA,EAAA;;sBAGpC;;sBAEA;;sBAEA;;sBAIA;;;AEvBH;;;;AAI6B;;ACJ7B;;;;AAI6B;MAgChB,yBAAyB,CAAA;AAgBpC,IAAA,IACW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,IAAI;IAClB;AAMA,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI;IAC/B;AAEA,IAAA,WAAA,GAAA;QA/BS,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAE/B,IAAA,CAAA,IAAI,GAAuB,IAAI;QAEA,IAAA,CAAA,QAAQ,GAAY,KAAK;AAEvD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAO;AAEpC,QAAA,IAAA,CAAA,aAAa,GAAiB,IAAI,YAAY,EAAE;QAU9C,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC;;AAe/D,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;IACnB;IAEA,kBAAkB,GAAA;QAChB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACjC,YAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACb,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;AAClC,YAAA,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;AAClB,YAAA,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;YAE1B,MAAM,YAAY,GAAG,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAc,KAAI;AAC3D,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3B,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC;AACtC,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE;QACxB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YACjC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;AAClC,YAAA,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAC5B,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;IAClC;+GA/DW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAOhB,gBAAgB,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,OAAA,EAAA,YAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAMnB,+BAA+B,kDCjDlD,+BACA,EAAA,MAAA,EAAA,CAAA,mlBAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDmCa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAZrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,WACrB,EAAE,EAAA,aAAA,EAGI,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,aAAa,EAAE,oBAAoB;AACnC,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,MAAM,EAAE;AACT,qBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,mlBAAA,CAAA,EAAA;;sBAGA;;sBAEA;;sBAEA;;sBAEA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAErC;;sBAIA,eAAe;uBAAC,+BAA+B;;sBAG/C,WAAW;uBAAC,OAAO;;sBASnB;;;AE7DH;;;;AAI6B;;ACJ7B;;;;AAI6B;MA8BhB,0BAA0B,CAAA;AASrC,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI;IAC/B;AAEA,IAAA,WAAA,GAAA;AAjBA,QAAA,IAAA,CAAA,KAAK,GAAwB,KAAK,CAAC,QAAQ,2EAAE;AAE7C,QAAA,IAAA,CAAA,IAAI,GAA4B,KAAK,CAAC,IAAkB,2EAAC;QAE/C,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC;;AAehE,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;IACnB;+GArBW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,OAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAb3B,CAAA;;;;;AAKT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4mBAAA,CAAA,EAAA,CAAA,CAAA;;4FAQU,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAhBtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,QAAA,EAErB,CAAA;;;;;GAKT,EAAA,IAAA,EACK;AACJ,wBAAA,aAAa,EAAE,qBAAqB;AACpC,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,SAAS,EAAE;AACZ,qBAAA,EAAA,MAAA,EAAA,CAAA,4mBAAA,CAAA,EAAA;;sBAWA;;;AC3CH;;;;AAI6B;;ACJ7B;;;;AAI6B;MA8ChB,gCAAgC,CAAA;AAiB3C,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;IAEA,IAAI,EAAE,CAAC,KAAa,EAAA;QAClB,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,IAAI,CAAC,IAAI;IAC/B;AAEA,IAAA,WAAA,GAAA;QAzBU,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,6BAA6B,CAAC;AAElE,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAItC,IAAA,CAAA,IAAI,GAAe,IAAI;QAId,IAAA,CAAA,QAAQ,GAAW,EAAE;QAI9B,IAAA,CAAA,IAAI,GAAG,KAAK;QAwBZ,IAAA,CAAA,WAAW,GAAG,MAAK;AACjB,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK;AACnB,QAAA,CAAC;;AAbC,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE;IACnB;AAGA,IAAA,OAAO,CAAC,KAAiB,EAAA;QACvB,KAAK,CAAC,eAAe,EAAE;QACvB,KAAK,CAAC,cAAc,EAAE;AAEtB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;IAClB;+GArCW,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,4BAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA1BjC,CAAA;;;;;;;;;;;;;;;;;;AAkBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,umBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EArBS,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,0BAAA,EAAA,8BAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FA6B/D,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBA/B5C,SAAS;AACO,YAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAC5B,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,sBAAsB,CAAC,EAAA,QAAA,EACjE,4BAA4B,EAAA,QAAA,EAE5B,CAAA;;;;;;;;;;;;;;;;;;GAkBT,EAAA,IAAA,EACK;AACJ,wBAAA,aAAa,EAAE,4BAA4B;AAC3C,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,cAAc,EAAE;AACjB,qBAAA,EAAA,MAAA,EAAA,CAAA,umBAAA,CAAA,EAAA;;sBAOA,WAAW;uBAAC,OAAO;;sBACnB;;sBAGA,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAExB;;sBAMA;;sBAcA,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;ACjFnC;;;;AAI6B;;ACJ7B;;;;AAI6B;;ACJ7B;;;;AAI6B;MAMhB,oBAAoB,CAAA;IAe/B,WAAA,CACU,EAAc,EACd,QAAmB,EAAA;QADnB,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,QAAQ,GAAR,QAAQ;QAhBT,IAAA,CAAA,aAAa,GAAqB,OAAO;QAEzC,IAAA,CAAA,SAAS,GAAuB,IAAI;QAEpC,IAAA,CAAA,WAAW,GAAG,KAAK;QAEnB,IAAA,CAAA,WAAW,GAAW,EAAE;QAExB,IAAA,CAAA,eAAe,GAAkB,IAAI;QAErC,IAAA,CAAA,UAAU,GAAkB,IAAI;QAEjC,IAAA,CAAA,OAAO,GAAuB,IAAI;;IAO1C;IAEA,WAAW,GAAA;QACT,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,IAAI;QAEnD,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,WAAW,EAAE;YAClB;QACF;QAEA,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;YAC7C,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC;YAC3D,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC;QACtD;QAEA,IAAI,CAAC,WAAW,EAAE;IACpB;IAEQ,WAAW,GAAA;AACjB,QAAA,MAAM,EACJ,OAAO,EACP,QAAQ,EACR,WAAW,EACX,SAAS,EACT,UAAU,EACV,aAAa,EACb,eAAe,EAChB,GAAG,IAAI;AAER,QAAA,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;QAC1C,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA,aAAA,EAAgB,SAAS,CAAA,CAAE,CAAC;QACvD,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAA,aAAA,EAAgB,aAAa,CAAA,CAAE,CAAC;AAC3D,QAAA,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,OAAO,EACP,CAAA;AACgC,oCAAA,EAAA,eAAe,IAAI,OAAO,CAAA;AAC/B,+BAAA,EAAA,UAAU,IAAI,OAAO,CAAA;AACzC,YAAA,CAAA,CACR;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,WAAW,CAAC;IACrE;IAEQ,WAAW,GAAA;QACjB,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI;AACtC,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,IAAI,CAAC,OAAO;YAAE;QACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC;QAC/C,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC;AAClD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;IACrB;+GAvEW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;sBAEE;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;;ACrBH;;;;AAI6B;MAOhB,mBAAmB,CAAA;IAC9B,WAAA,CACmB,EAA2B,EAC3B,QAAmB,EAAA;QADnB,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,QAAQ,GAAR,QAAQ;IACxB;IAEH,kBAAkB,GAAA;QAChB,IAAI,CAAC,kBAAkB,EAAE;IAC3B;IAEQ,kBAAkB,GAAA;AACxB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa;QAElC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,8BAA8B,CAAC;AACnE,QAAA,IAAI,QAAQ;YAAE;QAEd,MAAM,MAAM,GAAsB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;QAEvE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;AACpD,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,sBAAsB,EAAE,MAAM,CAAC,CAAC;QACnE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC;QACzD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC;QAEpD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC;QACtD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC;AAEvD,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,CAAC;IAC1D;+GAnCW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCFY,cAAc,CAAA;AACzB,IAAA,WAAA,CAA6B,YAAgD,EAAA;QAAhD,IAAA,CAAA,YAAY,GAAZ,YAAY;;IAEzC;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE;IACpC;AACD;;AChBD;;;;AAI6B;;ACJ7B;;;;AAI6B;;ACJ7B;;AAEG;;"}
|
|
1
|
+
{"version":3,"file":"monkey-style-guide.mjs","sources":["../../../projects/monkey-style-guide/src/utils/id-generator.ts","../../../projects/monkey-style-guide/src/utils/utils.ts","../../../projects/monkey-style-guide/src/utils/icon.ts","../../../projects/monkey-style-guide/src/utils/signal-helpers.ts","../../../projects/monkey-style-guide/src/lib/components/accordion/accordion.component.ts","../../../projects/monkey-style-guide/src/lib/components/accordion/accordion.component.html","../../../projects/monkey-style-guide/src/lib/components/accordion/index.ts","../../../projects/monkey-style-guide/src/lib/components/action-bar/action-bar.component.ts","../../../projects/monkey-style-guide/src/lib/components/action-bar/index.ts","../../../projects/monkey-style-guide/src/lib/components/alert/alert.component.ts","../../../projects/monkey-style-guide/src/lib/components/alert/alert.component.html","../../../projects/monkey-style-guide/src/lib/components/alert/index.ts","../../../projects/monkey-style-guide/src/lib/tokens/index.ts","../../../projects/monkey-style-guide/src/lib/directives/popover.ts","../../../projects/monkey-style-guide/src/lib/services/address.service.ts","../../../projects/monkey-style-guide/src/lib/services/dictionary.service.ts","../../../projects/monkey-style-guide/src/lib/services/toast-overlay.ts","../../../projects/monkey-style-guide/src/lib/components/tooltip/tooltip/tooltip.component.ts","../../../projects/monkey-style-guide/src/lib/components/tooltip/tooltip/tooltip.component.html","../../../projects/monkey-style-guide/src/lib/components/tooltip/tooltip/index.ts","../../../projects/monkey-style-guide/src/lib/components/tooltip/tooltip.directive.ts","../../../projects/monkey-style-guide/src/lib/components/tooltip/index.ts","../../../projects/monkey-style-guide/src/lib/components/download-toast/download-toast.component.ts","../../../projects/monkey-style-guide/src/lib/components/download-toast/download-toast.component.html","../../../projects/monkey-style-guide/src/lib/components/download-toast/download-toast.constants.ts","../../../projects/monkey-style-guide/src/lib/components/download-toast/download-toast-stack.component.ts","../../../projects/monkey-style-guide/src/lib/components/download-toast/download-toast-stack.component.html","../../../projects/monkey-style-guide/src/lib/services/download-toast.service.ts","../../../projects/monkey-style-guide/src/lib/services/stepper.service.ts","../../../projects/monkey-style-guide/src/lib/components/button/button.component.ts","../../../projects/monkey-style-guide/src/lib/components/button/button.component.html","../../../projects/monkey-style-guide/src/lib/components/button/index.ts","../../../projects/monkey-style-guide/src/lib/components/toast/toast.component.ts","../../../projects/monkey-style-guide/src/lib/components/toast/toast.component.html","../../../projects/monkey-style-guide/src/lib/services/toast.service.ts","../../../projects/monkey-style-guide/src/lib/services/index.ts","../../../projects/monkey-style-guide/src/lib/components/form-field/form-field-control.ts","../../../projects/monkey-style-guide/src/lib/directives/display.ts","../../../projects/monkey-style-guide/src/lib/directives/error.ts","../../../projects/monkey-style-guide/src/lib/directives/helper.ts","../../../projects/monkey-style-guide/src/lib/directives/info.ts","../../../projects/monkey-style-guide/src/lib/directives/label.ts","../../../projects/monkey-style-guide/src/lib/directives/prefix.ts","../../../projects/monkey-style-guide/src/lib/directives/suffix.ts","../../../projects/monkey-style-guide/src/lib/components/form-field/utils.ts","../../../projects/monkey-style-guide/src/lib/components/form-field/form-field.component.ts","../../../projects/monkey-style-guide/src/lib/components/form-field/form-field.component.html","../../../projects/monkey-style-guide/src/lib/components/form-field/form-field.module.ts","../../../projects/monkey-style-guide/src/lib/components/form-field/index.ts","../../../projects/monkey-style-guide/src/lib/components/option/option.component.ts","../../../projects/monkey-style-guide/src/lib/components/option/index.ts","../../../projects/monkey-style-guide/src/lib/components/autocomplete/autocomplete.component.ts","../../../projects/monkey-style-guide/src/lib/components/autocomplete/index.ts","../../../projects/monkey-style-guide/src/lib/components/autocomplete-address/autocomplete-address.component.ts","../../../projects/monkey-style-guide/src/lib/components/autocomplete-address/index.ts","../../../projects/monkey-style-guide/src/lib/components/avatar/avatar.component.ts","../../../projects/monkey-style-guide/src/lib/components/avatar/avatar.component.html","../../../projects/monkey-style-guide/src/lib/components/avatar/index.ts","../../../projects/monkey-style-guide/src/lib/components/badge/badge.component.ts","../../../projects/monkey-style-guide/src/lib/components/badge/badge.component.html","../../../projects/monkey-style-guide/src/lib/components/badge/index.ts","../../../projects/monkey-style-guide/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../projects/monkey-style-guide/src/lib/components/breadcrumb/breadcrumb.component.html","../../../projects/monkey-style-guide/src/lib/components/breadcrumb/index.ts","../../../projects/monkey-style-guide/src/lib/components/checkbox/checkbox.component.ts","../../../projects/monkey-style-guide/src/lib/components/checkbox/checkbox.component.html","../../../projects/monkey-style-guide/src/lib/components/checkbox/index.ts","../../../projects/monkey-style-guide/src/lib/components/input/input-currency.directive.ts","../../../projects/monkey-style-guide/src/lib/components/input/validators.ts","../../../projects/monkey-style-guide/src/lib/components/input/input.directive.ts","../../../projects/monkey-style-guide/src/lib/components/input/input.module.ts","../../../projects/monkey-style-guide/src/lib/components/input/index.ts","../../../projects/monkey-style-guide/src/lib/components/icon-button/icon-button.component.ts","../../../projects/monkey-style-guide/src/lib/components/icon-button/icon-button.component.html","../../../projects/monkey-style-guide/src/lib/components/icon-button/index.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/utils.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/month/month.component.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/month/month.component.html","../../../projects/monkey-style-guide/src/lib/components/date-range/month/index.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/quick-actions/quick-actions.component.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/quick-actions/quick-actions.component.html","../../../projects/monkey-style-guide/src/lib/components/date-range/quick-actions/index.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/date-range.component.ts","../../../projects/monkey-style-guide/src/lib/components/date-range/date-range.component.html","../../../projects/monkey-style-guide/src/lib/components/date-range/index.ts","../../../projects/monkey-style-guide/src/lib/components/divider/divider.component.ts","../../../projects/monkey-style-guide/src/lib/components/divider/index.ts","../../../projects/monkey-style-guide/src/lib/components/download-button/download-button.component.ts","../../../projects/monkey-style-guide/src/lib/components/download-button/index.ts","../../../projects/monkey-style-guide/src/lib/components/download-toast/index.ts","../../../projects/monkey-style-guide/src/lib/components/complex-filter-bar/complex-filter-bar.service.ts","../../../projects/monkey-style-guide/src/lib/components/complex-filter-bar/complex-filter-bar.component.ts","../../../projects/monkey-style-guide/src/lib/components/complex-filter-bar/filter-config.interface.ts","../../../projects/monkey-style-guide/src/lib/components/complex-filter-bar/index.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-bar-domain.ts","../../../projects/monkey-style-guide/src/lib/components/scrollbar/scrollbar.component.ts","../../../projects/monkey-style-guide/src/lib/components/scrollbar/scrollbar.component.html","../../../projects/monkey-style-guide/src/lib/components/scrollbar/index.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-chip.component.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-chip.component.html","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-menu-item.component.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-menu-item.component.html","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-menu.component.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-menu.component.html","../../../projects/monkey-style-guide/src/lib/components/filter-bar/anchored-menu.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-segment.component.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-segment.component.html","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-trigger.component.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-trigger.component.html","../../../projects/monkey-style-guide/src/lib/components/filter-bar/first-paint.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/flip.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-bar.component.ts","../../../projects/monkey-style-guide/src/lib/components/filter-bar/filter-bar.component.html","../../../projects/monkey-style-guide/src/lib/components/filter-bar/index.ts","../../../projects/monkey-style-guide/src/lib/components/input-code/input-code.component.ts","../../../projects/monkey-style-guide/src/lib/components/input-code/input-code.component.html","../../../projects/monkey-style-guide/src/lib/components/input-code/index.ts","../../../projects/monkey-style-guide/src/lib/components/input-date-range/input-date-range.component.ts","../../../projects/monkey-style-guide/src/lib/components/input-date-range/index.ts","../../../projects/monkey-style-guide/src/lib/components/select/select.component.ts","../../../projects/monkey-style-guide/src/lib/components/select/select.component.html","../../../projects/monkey-style-guide/src/lib/components/select/index.ts","../../../projects/monkey-style-guide/src/lib/components/input-phone/input-phone.component.ts","../../../projects/monkey-style-guide/src/lib/components/input-phone/index.ts","../../../projects/monkey-style-guide/src/lib/components/input-upload/input-upload.component.ts","../../../projects/monkey-style-guide/src/lib/components/input-upload/index.ts","../../../projects/monkey-style-guide/src/lib/components/modal/directives/actions.ts","../../../projects/monkey-style-guide/src/lib/components/modal/directives/content.ts","../../../projects/monkey-style-guide/src/lib/components/modal/directives/subtitle.ts","../../../projects/monkey-style-guide/src/lib/components/modal/directives/title.ts","../../../projects/monkey-style-guide/src/lib/components/modal/modal-config.ts","../../../projects/monkey-style-guide/src/lib/components/modal/modal-ref.ts","../../../projects/monkey-style-guide/src/lib/components/modal/modal.component.ts","../../../projects/monkey-style-guide/src/lib/components/modal/utils.ts","../../../projects/monkey-style-guide/src/lib/components/modal/components/confirmation.component.ts","../../../projects/monkey-style-guide/src/lib/components/modal/components/default.ts","../../../projects/monkey-style-guide/src/lib/components/modal/modal.module.ts","../../../projects/monkey-style-guide/src/lib/components/modal/modal.service.ts","../../../projects/monkey-style-guide/src/lib/components/modal/index.ts","../../../projects/monkey-style-guide/src/lib/components/pass-number/pass-number.component.ts","../../../projects/monkey-style-guide/src/lib/components/pass-number/pass-secret-number.component.ts","../../../projects/monkey-style-guide/src/lib/components/pass-number/index.ts","../../../projects/monkey-style-guide/src/lib/components/radio-button/radio-button.component.ts","../../../projects/monkey-style-guide/src/lib/components/radio-button/radio-button.component.html","../../../projects/monkey-style-guide/src/lib/components/radio-button/index.ts","../../../projects/monkey-style-guide/src/lib/components/security-level/security-level.component.ts","../../../projects/monkey-style-guide/src/lib/components/security-level/security-level.component.html","../../../projects/monkey-style-guide/src/lib/components/security-level/index.ts","../../../projects/monkey-style-guide/src/lib/components/status/status.component.ts","../../../projects/monkey-style-guide/src/lib/components/status/status.component.html","../../../projects/monkey-style-guide/src/lib/components/status/index.ts","../../../projects/monkey-style-guide/src/lib/components/stepper/step/step.component.ts","../../../projects/monkey-style-guide/src/lib/components/stepper/stepper.component.ts","../../../projects/monkey-style-guide/src/lib/components/stepper/stepper.module.ts","../../../projects/monkey-style-guide/src/lib/components/table/components/pagination-action/pagination-action.ts","../../../projects/monkey-style-guide/src/lib/components/table/components/pagination-action/pagination-action.html","../../../projects/monkey-style-guide/src/lib/components/table/components/pagination-label/pagination-label.ts","../../../projects/monkey-style-guide/src/lib/components/table/components/pagination-label/pagination-label.html","../../../projects/monkey-style-guide/src/lib/components/table/components/pagination-size/pagination-size.ts","../../../projects/monkey-style-guide/src/lib/components/table/components/pagination-size/pagination-size.html","../../../projects/monkey-style-guide/src/lib/components/table/table-column.directive.ts","../../../projects/monkey-style-guide/src/lib/components/table/table-core.ts","../../../projects/monkey-style-guide/src/lib/components/table/table-virtual-scroll.ts","../../../projects/monkey-style-guide/src/lib/components/table/table.component.ts","../../../projects/monkey-style-guide/src/lib/components/table/table.component.html","../../../projects/monkey-style-guide/src/lib/components/table/index.ts","../../../projects/monkey-style-guide/src/lib/components/tabs/tab-link.directive.ts","../../../projects/monkey-style-guide/src/lib/components/tabs/tab.component.ts","../../../projects/monkey-style-guide/src/lib/components/tabs/tabs.component.ts","../../../projects/monkey-style-guide/src/lib/components/tabs/tabs.module.ts","../../../projects/monkey-style-guide/src/lib/components/toast/index.ts","../../../projects/monkey-style-guide/src/lib/components/toggle/toggle.component.ts","../../../projects/monkey-style-guide/src/lib/components/toggle/toggle.component.html","../../../projects/monkey-style-guide/src/lib/components/toggle/index.ts","../../../projects/monkey-style-guide/src/lib/components/toggle-line/toggle-line-button/toggle-line-button.component.ts","../../../projects/monkey-style-guide/src/lib/components/toggle-line/toggle-line-button/toggle-line-button.component.html","../../../projects/monkey-style-guide/src/lib/components/toggle-line/toggle-line-button/index.ts","../../../projects/monkey-style-guide/src/lib/components/toggle-line/toggle-line.component.ts","../../../projects/monkey-style-guide/src/lib/components/toggle-line/toggle-line.component.html","../../../projects/monkey-style-guide/src/lib/components/toggle-line/index.ts","../../../projects/monkey-style-guide/src/lib/components/user-profile/user-profile.component.ts","../../../projects/monkey-style-guide/src/lib/components/user-profile/index.ts","../../../projects/monkey-style-guide/src/lib/components/user-profile-button/user-profile-button.component.ts","../../../projects/monkey-style-guide/src/lib/components/user-profile-button/index.ts","../../../projects/monkey-style-guide/src/lib/components/index.ts","../../../projects/monkey-style-guide/src/lib/directives/badge.ts","../../../projects/monkey-style-guide/src/lib/directives/form.ts","../../../projects/monkey-style-guide/src/lib/interfaces/toast.ts","../../../projects/monkey-style-guide/src/lib/interfaces/index.ts","../../../projects/monkey-style-guide/src/public-api.ts","../../../projects/monkey-style-guide/src/monkey-style-guide.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\nconst counters: Record<string, number> = {};\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class IdGenerator {\r\n getId(prefix: string): string {\r\n if (!Object.prototype.hasOwnProperty.call(counters, prefix)) {\r\n counters[prefix] = 1;\r\n }\r\n\r\n const currentCount = counters[prefix];\r\n counters[prefix] = currentCount + 1;\r\n\r\n return `${prefix}${currentCount}`;\r\n }\r\n}\r\n","export function getRandomString(len: number, charSet?: string): string {\r\n charSet = charSet || 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\r\n\r\n return new Array(len)\r\n .fill('1')\r\n .map(() => {\r\n return charSet?.charAt(Math.floor(Math.random() * charSet.length));\r\n })\r\n .join('');\r\n}\r\n\r\nexport const objHaveProperty = (obj: object, property: string): boolean => {\r\n return typeof obj === 'object' && obj !== null && property in obj;\r\n};\r\n\r\nexport function formatFileSize(bytes: number): string {\r\n if (bytes === 0) return '0 Bytes';\r\n\r\n const k = 1024;\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n\r\n return `${parseFloat((bytes / k ** i).toFixed(2))} ${sizes[i]}`;\r\n}\r\n\r\nexport function getFileExtension(filename: string) {\r\n const name = filename.toLowerCase();\r\n const lastDotIndex = name.lastIndexOf('.');\r\n return lastDotIndex === -1 ? '' : name.slice(lastDotIndex + 1);\r\n}\r\n\r\nexport function sanitizeString(input: string): string {\r\n return input\r\n .replace(/<script.*?>.*?<\\/script>/gi, '')\r\n .replace(/on\\w+=\"[^\"]*\"/gi, '')\r\n .replace(/on\\w+='[^']*'/gi, '')\r\n .replace(/javascript:/gi, '')\r\n .replace(/<\\/?[^>]+>/gi, '')\r\n .trim();\r\n}\r\n\r\nexport function normalizeStringToSearch(text: string): string {\r\n return text\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '')\r\n .toLowerCase();\r\n}\r\n\r\nexport function shuffle<T>(array: T[]): T[] {\r\n for (let i = array.length - 1; i > 0; i--) {\r\n const j = Math.floor(Math.random() * (i + 1));\r\n [array[i], array[j]] = [array[j], array[i]];\r\n }\r\n return array;\r\n}\r\n\r\nexport function clamp(value: number, min: number, max: number): number {\r\n return Math.min(Math.max(value, min), max);\r\n}\r\n\r\nexport function clampProgress(value: unknown): number {\r\n const numeric = Number(value);\r\n\r\n if (Number.isNaN(numeric)) {\r\n return 0;\r\n }\r\n\r\n return clamp(numeric, 0, 100);\r\n}\r\n","/* eslint-disable max-len */\r\nimport { Component, input } from '@angular/core';\r\n\r\ntype IconName =\r\n | 'clear'\r\n | 'calendar'\r\n | 'arrowDown'\r\n | 'arrowRight'\r\n | 'check'\r\n | 'minus'\r\n | 'loading'\r\n | 'searchFail'\r\n | 'search'\r\n | 'addPlus'\r\n | 'googleMaps'\r\n | 'location'\r\n | 'edit';\r\n\r\n@Component({\r\n selector: 'util-icon',\r\n template: `\r\n @switch (name()) {\r\n @case ('clear') {\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" fill=\"none\">\r\n <path\r\n d=\"M7.815 7.277a.802.802 0 0 0-.459.349c-.103.167-.123.529-.038.694.028.055.854.906 1.836 1.89L10.939 12l-1.785 1.79c-.982.985-1.808 1.835-1.836 1.89a.926.926 0 0 0-.051.324c0 .494.414.812.922.707.183-.038.266-.114 2.001-1.844L12 13.062l1.81 1.805c1.731 1.725 1.818 1.806 2 1.844.58.12 1.021-.321.901-.901-.038-.182-.119-.269-1.844-2L13.062 12l1.805-1.81c1.73-1.735 1.806-1.818 1.844-2.001.105-.508-.213-.922-.707-.922a.926.926 0 0 0-.324.051c-.055.028-.905.854-1.89 1.836L12 10.939l-1.79-1.785c-.984-.982-1.826-1.803-1.87-1.825a.99.99 0 0 0-.525-.052\"\r\n fill-rule=\"evenodd\"\r\n fill=\"var(--mecx-color-gray-900)\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('calendar') {\r\n <svg width=\"24\" height=\"24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M7.815 1.277a.8.8 0 0 0-.462.354c-.087.139-.094.198-.107.875l-.013.725-1.347.019c-1.236.018-1.371.026-1.646.107A2.807 2.807 0 0 0 2.352 5.26l-.092.32v13.84l.092.32a2.797 2.797 0 0 0 1.908 1.908l.32.092h14.84l.32-.092a2.797 2.797 0 0 0 1.908-1.908l.092-.32V5.58l-.092-.32a2.807 2.807 0 0 0-1.888-1.903c-.276-.081-.41-.089-1.65-.107l-1.35-.019v-.593c0-.757-.042-.96-.238-1.156-.349-.349-.903-.279-1.169.149-.087.139-.094.198-.107.879l-.014.73H8.76l-.001-.61c-.001-.68-.039-.91-.179-1.094-.159-.209-.502-.325-.765-.259M7.246 5.49c.013.681.02.74.107.879.357.574 1.223.443 1.363-.207.024-.113.044-.475.044-.804V4.76h6.472l.014.73c.013.681.02.74.107.879.357.574 1.223.443 1.363-.207.024-.113.044-.475.044-.804V4.76h1.238c1.452 0 1.525.014 1.876.366.352.351.366.424.366 1.876V8.24H3.756l.012-1.31c.012-1.277.014-1.314.104-1.482.155-.29.475-.562.768-.651.055-.016.661-.032 1.346-.034l1.246-.003.014.73m12.994 9.008c0 4.664-.001 4.742-.081 4.956-.109.29-.415.596-.705.705-.215.08-.28.081-7.454.081-7.159 0-7.239-.001-7.453-.081-.245-.091-.544-.363-.679-.615l-.088-.164-.011-4.81-.01-4.81H20.24v4.738M6.7 12.028a.967.967 0 0 0-.24.126.992.992 0 0 0 .097 1.695 1.005 1.005 0 0 0 1.352-.427c.096-.185.114-.59.035-.797a1.104 1.104 0 0 0-.521-.549c-.154-.07-.507-.094-.723-.048m5 0a.967.967 0 0 0-.24.126.992.992 0 0 0 .097 1.695 1.005 1.005 0 0 0 1.352-.427c.096-.185.114-.59.035-.797a1.104 1.104 0 0 0-.521-.549c-.154-.07-.507-.094-.723-.048m5 0a.967.967 0 0 0-.24.126.992.992 0 0 0 .097 1.695 1.005 1.005 0 0 0 1.352-.427c.096-.185.114-.59.035-.797a1.104 1.104 0 0 0-.521-.549c-.154-.07-.507-.094-.723-.048m-10 4a.967.967 0 0 0-.24.126.992.992 0 0 0 .097 1.695 1.005 1.005 0 0 0 1.352-.427c.096-.185.114-.59.035-.797a1.104 1.104 0 0 0-.521-.549c-.154-.07-.507-.094-.723-.048m5 0a.967.967 0 0 0-.24.126.992.992 0 0 0 .097 1.695 1.005 1.005 0 0 0 1.352-.427c.096-.185.114-.59.035-.797a1.104 1.104 0 0 0-.521-.549c-.154-.07-.507-.094-.723-.048\"\r\n fill-rule=\"evenodd\"\r\n fill=\"var(--mecx-color-gray-900)\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('arrowDown') {\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M8 10L12 14L16 10\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('arrowRight') {\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M19 12H5\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M14 17L19 12\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M14 7L19 12\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('check') {\r\n <svg\r\n width=\"12\"\r\n height=\"12\"\r\n viewBox=\"0 0 12 12\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M9.808 2.528 C 9.752 2.542,9.671 2.574,9.628 2.599 C 9.585 2.625,8.414 3.781,7.025 5.168 L 4.500 7.690 3.475 6.667 C 2.865 6.059,2.414 5.624,2.360 5.594 C 2.137 5.467,1.822 5.478,1.603 5.620 C 1.226 5.863,1.141 6.369,1.419 6.715 C 1.558 6.887,4.068 9.375,4.140 9.411 C 4.366 9.525,4.634 9.525,4.860 9.411 C 4.931 9.376,10.438 3.892,10.581 3.715 C 10.688 3.582,10.742 3.425,10.742 3.250 C 10.742 2.758,10.293 2.410,9.808 2.528 \"\r\n stroke=\"none\"\r\n fill-rule=\"evenodd\"\r\n fill=\"var(--mecx-color-theme-contrast-500\"\r\n ></path>\r\n </svg>\r\n }\r\n\r\n @case ('minus') {\r\n <svg width=\"8\" height=\"2\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M1.333 0.268 C 1.300 0.274,1.225 0.303,1.167 0.332 C 1.054 0.388,0.939 0.490,0.866 0.599 C 0.776 0.732,0.732 0.936,0.757 1.098 C 0.786 1.283,0.848 1.405,0.977 1.532 C 1.071 1.624,1.148 1.673,1.253 1.710 L 1.340 1.740 4.000 1.740 L 6.660 1.740 6.747 1.710 C 6.943 1.642,7.128 1.462,7.200 1.270 C 7.265 1.095,7.265 0.904,7.200 0.730 C 7.118 0.510,6.880 0.308,6.655 0.267 C 6.565 0.250,1.420 0.251,1.333 0.268\"\r\n stroke=\"none\"\r\n fill-rule=\"evenodd\"\r\n fill=\"var(--mecx-color-theme-contrast-500\"\r\n ></path>\r\n </svg>\r\n }\r\n\r\n @case ('loading') {\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <style>\r\n .spinner_ajPY {\r\n transform-origin: center;\r\n animation: spinner_AtaB 0.75s infinite linear;\r\n }\r\n @keyframes spinner_AtaB {\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n </style>\r\n <path\r\n d=\"M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z\"\r\n opacity=\".25\"\r\n />\r\n <path\r\n d=\"M10.14,1.16a11,11,0,0,0-9,8.92A1.59,1.59,0,0,0,2.46,12,1.52,1.52,0,0,0,4.11,10.7a8,8,0,0,1,6.66-6.61A1.42,1.42,0,0,0,12,2.69h0A1.57,1.57,0,0,0,10.14,1.16Z\"\r\n class=\"spinner_ajPY\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('searchFail') {\r\n <svg width=\"24\" height=\"24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n clip-rule=\"evenodd\"\r\n d=\"M18.934 11.467v0c0 4.124-3.343 7.467-7.467 7.467v0C7.343 18.934 4 15.591 4 11.467v0C4 7.343 7.343 4 11.467 4v0c4.124 0 7.467 3.343 7.467 7.467Z\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"m20 20-3.25-3.25M13.815 9.11914 9.119 13.8151M13.815 13.8151 9.119 9.11914\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n }\r\n\r\n @case ('search') {\r\n <svg\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 16 16\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M6.920 1.521 C 4.175 1.717,1.944 3.809,1.558 6.548 C 1.500 6.965,1.500 7.722,1.558 8.120 C 1.945 10.745,3.921 12.721,6.547 13.108 C 6.735 13.136,7.016 13.152,7.333 13.152 C 7.885 13.152,8.225 13.111,8.738 12.985 C 9.504 12.797,10.253 12.439,10.859 11.972 C 10.972 11.885,11.074 11.813,11.085 11.813 C 11.097 11.813,11.677 12.384,12.373 13.082 C 13.070 13.779,13.691 14.381,13.754 14.418 C 14.182 14.673,14.673 14.182,14.418 13.754 C 14.381 13.691,13.779 13.070,13.082 12.373 C 12.384 11.677,11.813 11.097,11.813 11.085 C 11.813 11.074,11.885 10.972,11.972 10.859 C 12.439 10.253,12.797 9.504,12.985 8.738 C 13.111 8.225,13.152 7.885,13.152 7.333 C 13.152 6.782,13.111 6.441,12.985 5.928 C 12.471 3.841,10.826 2.196,8.738 1.681 C 8.150 1.536,7.501 1.479,6.920 1.521 M8.277 2.586 C 10.023 2.962,11.414 4.208,11.943 5.870 C 12.118 6.421,12.145 6.615,12.145 7.333 C 12.145 8.052,12.118 8.246,11.943 8.797 C 11.473 10.272,10.272 11.473,8.797 11.943 C 8.246 12.118,8.052 12.145,7.333 12.145 C 6.615 12.145,6.421 12.118,5.870 11.943 C 4.394 11.473,3.193 10.272,2.724 8.797 C 2.547 8.242,2.521 8.052,2.522 7.333 C 2.522 6.615,2.549 6.419,2.724 5.870 C 3.244 4.236,4.636 2.971,6.320 2.602 C 6.679 2.523,6.858 2.510,7.440 2.520 C 7.898 2.527,8.066 2.540,8.277 2.586 \"\r\n stroke=\"none\"\r\n fill-rule=\"evenodd\"\r\n fill=\"var(--mecx-color-gray-900)\"\r\n ></path>\r\n </svg>\r\n }\r\n\r\n @case ('addPlus') {\r\n <svg\r\n width=\"24\"\r\n height=\"24\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M11.340 2.281 C 7.073 2.553,3.439 5.660,2.499 9.840 C 2.187 11.227,2.187 12.773,2.499 14.160 C 3.317 17.797,6.203 20.683,9.840 21.501 C 11.233 21.814,12.770 21.813,14.176 21.498 C 17.465 20.759,20.161 18.310,21.244 15.076 C 21.795 13.432,21.887 11.556,21.501 9.840 C 20.683 6.203,17.797 3.317,14.160 2.499 C 13.288 2.303,12.254 2.223,11.340 2.281 M12.961 3.802 C 14.493 3.991,16.079 4.659,17.184 5.581 C 18.160 6.395,18.877 7.297,19.404 8.374 C 19.982 9.557,20.240 10.675,20.240 12.000 C 20.240 12.966,20.126 13.689,19.834 14.584 C 18.848 17.602,16.153 19.804,12.961 20.198 C 12.525 20.252,11.475 20.252,11.039 20.198 C 9.507 20.009,7.921 19.341,6.816 18.419 C 5.826 17.593,5.138 16.728,4.598 15.626 C 4.019 14.448,3.760 13.327,3.760 12.000 C 3.760 10.673,4.019 9.552,4.598 8.374 C 5.044 7.464,5.564 6.750,6.285 6.058 C 7.568 4.824,9.221 4.032,10.984 3.806 C 11.379 3.755,12.563 3.753,12.961 3.802 M11.815 7.277 C 11.638 7.321,11.461 7.456,11.353 7.631 L 11.260 7.780 11.248 9.508 L 11.236 11.236 9.505 11.248 L 7.774 11.260 7.612 11.367 C 7.372 11.526,7.267 11.721,7.267 12.007 C 7.267 12.203,7.286 12.270,7.383 12.408 C 7.447 12.499,7.572 12.610,7.660 12.656 C 7.814 12.737,7.886 12.740,9.528 12.752 L 11.236 12.764 11.248 14.492 L 11.260 16.220 11.353 16.369 C 11.710 16.943,12.576 16.812,12.716 16.162 C 12.744 16.031,12.760 15.374,12.760 14.358 L 12.760 12.760 14.358 12.760 C 15.374 12.760,16.031 12.744,16.162 12.716 C 16.904 12.557,16.924 11.471,16.189 11.286 C 16.064 11.255,15.479 11.240,14.382 11.240 L 12.760 11.240 12.759 9.630 C 12.758 8.669,12.741 7.948,12.717 7.841 C 12.623 7.432,12.215 7.177,11.815 7.277 \"\r\n stroke=\"none\"\r\n fill-rule=\"evenodd\"\r\n fill=\"var(--mecx-color-gray-900)\"\r\n ></path>\r\n </svg>\r\n }\r\n\r\n @case ('googleMaps') {\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n width=\"120\"\r\n height=\"22\"\r\n viewBox=\"0 0 264.6 50.86\"\r\n >\r\n <path\r\n d=\"M9.835 37.67a51.38 51.38 0 0 1 4.007 5.91c1.022 1.938 1.448 3.252 2.195 5.587.458 1.29.872 1.675 1.762 1.675.97 0 1.41-.655 1.75-1.668.706-2.205 1.26-3.888 2.134-5.478 1.715-3.07 3.846-5.798 5.94-8.42.567-.742 4.232-5.065 5.882-8.476 0 0 2.028-3.747 2.028-8.98 0-4.895-2-8.29-2-8.29l-5.758 1.542-3.497 9.21-.865 1.27-.173.23-.23.288-.404.46-.577.577-3.114 2.537-7.785 4.495z\"\r\n fill=\"#34a853\"\r\n />\r\n <path\r\n d=\"M1.8 26.17c1.9 4.34 5.564 8.155 8.043 11.503L23.01 22.076s-1.855 2.426-5.22 2.426c-3.748 0-6.776-2.993-6.776-6.767 0-2.588 1.557-4.366 1.557-4.366l-8.938 2.395z\"\r\n fill=\"#fbbc04\"\r\n />\r\n <path\r\n d=\"M23.157.792c4.373 1.41 8.116 4.37 10.38 8.735l-10.523 12.54s1.557-1.81 1.557-4.382c0-3.862-3.252-6.747-6.765-6.747-3.322 0-5.23 2.422-5.23 2.422v-7.9z\"\r\n fill=\"#4285f4\"\r\n />\r\n <path\r\n d=\"M4.212 6.333C6.824 3.208 11.42-.01 17.756-.01c3.074 0 5.39.807 5.39.807l-10.58 12.57H5.07z\"\r\n fill=\"#1a73e8\"\r\n />\r\n <path\r\n d=\"M1.8 26.17S.052 22.747.052 17.788c0-4.687 1.822-8.784 4.16-11.455l8.36 7.035z\"\r\n fill=\"#ea4335\"\r\n />\r\n <g fill=\"#767676\">\r\n <path\r\n d=\"M181.68 41.235V14.508h3.434l9.295 16.275h.15l9.295-16.275h3.434v26.727h-3.434V25.37l.15-4.48h-.15l-8.36 14.67h-2.015l-8.36-14.67h-.15l.15 4.48v15.864zm35.648.56c-1.94 0-3.565-.56-4.87-1.68s-1.96-2.6-1.96-4.442c0-2 .77-3.552 2.314-4.685s3.446-1.698 5.7-1.698c2.016 0 3.67.373 4.965 1.12v-.523c0-1.344-.46-2.42-1.38-3.228s-2.053-1.213-3.398-1.213c-.995 0-1.896.236-2.705.7s-1.362 1.12-1.66 1.94l-3.136-1.343c.423-1.095 1.257-2.1 2.5-3.042s2.886-1.4 4.927-1.4c2.34 0 4.28.685 5.823 2.053s2.314 3.298 2.314 5.787V41.2h-3.284v-2.54h-.15c-1.37 2.1-3.373 3.135-6 3.135zm.56-3.135c1.418 0 2.705-.53 3.863-1.586s1.736-2.3 1.736-3.75c-.97-.797-2.426-1.195-4.367-1.195-1.668 0-2.925.36-3.77 1.083s-1.27 1.568-1.27 2.538c0 .896.386 1.605 1.157 2.128s1.655.784 2.65.784zm21.742 3.135c-1.393 0-2.644-.3-3.75-.896s-1.935-1.344-2.48-2.24h-.15l.15 2.538v8.063h-3.434V22.908h3.286v2.538h.15c.547-.896 1.374-1.642 2.48-2.24s2.358-.896 3.75-.896c2.364 0 4.405.933 6.122 2.8s2.576 4.18 2.576 6.943-.86 5.077-2.576 6.943-3.758 2.8-6.122 2.8zm-.56-3.135c1.593 0 2.96-.604 4.106-1.8s1.717-2.806 1.717-4.797-.572-3.6-1.717-4.797-2.514-1.8-4.106-1.8c-1.617 0-2.993.597-4.125 1.792s-1.697 2.8-1.697 4.815.566 3.62 1.697 4.815 2.507 1.792 4.125 1.792zm18.385 3.135c-2.04 0-3.726-.498-5.058-1.493s-2.3-2.24-2.93-3.733l3.06-1.27c.97 2.3 2.626 3.433 4.966 3.433 1.07 0 1.948-.236 2.632-.7s1.027-1.095 1.027-1.866c0-1.194-.834-2.004-2.502-2.426l-3.695-.895c-1.17-.298-2.277-.865-3.322-1.698s-1.568-1.96-1.568-3.377c0-1.617.715-2.93 2.146-3.94s3.13-1.512 5.095-1.512c1.617 0 3.06.367 4.33 1.1a6.21 6.21 0 0 1 2.725 3.154l-2.987 1.232c-.67-1.617-2.065-2.426-4.18-2.426-1.02 0-1.88.212-2.575.634s-1.045.996-1.045 1.718c0 1.045.8 1.754 2.426 2.128l3.62.858c1.717.398 2.986 1.083 3.807 2.053s1.232 2.066 1.232 3.286c0 1.642-.672 3-2.016 4.106s-3.073 1.642-5.2 1.642zM79.916 25.3H65.83v4.18h10c-.493 5.86-5.37 8.36-9.973 8.36a10.98 10.98 0 0 1-11.029-11.128c0-6.327 4.898-11.2 11.04-11.2 4.74 0 7.53 3.022 7.53 3.022l2.927-3.03s-3.757-4.18-10.607-4.18c-8.723 0-15.473 7.363-15.473 15.316 0 7.792 6.35 15.393 15.696 15.393 8.22 0 14.24-5.632 14.24-13.96 0-1.756-.255-2.772-.255-2.772z\"\r\n />\r\n <use xlink:href=\"#B\" />\r\n <use xlink:href=\"#B\" x=\"21.476\" />\r\n <path\r\n d=\"M134.102 22.327c-5.305 0-9.476 4.647-9.476 9.862 0 5.94 4.834 9.88 9.383 9.88 2.813 0 4.308-1.117 5.414-2.4v1.946c0 3.405-2.068 5.445-5.2 5.445-3.015 0-4.526-2.242-5.052-3.514l-3.793 1.586c1.346 2.845 4.054 5.813 8.878 5.813 5.275 0 9.296-3.322 9.296-10.3v-17.73h-4.138v1.672c-1.272-1.37-3.012-2.265-5.32-2.265zm.384 3.87c2.602 0 5.272 2.22 5.272 6.013 0 3.856-2.665 5.98-5.33 5.98-2.828 0-5.46-2.296-5.46-5.944 0-3.8 2.732-6.05 5.518-6.05zm27.534-3.87c-5.004 0-9.207 3.98-9.207 9.857 0 6.216 4.683 9.904 9.687 9.904 4.176 0 6.74-2.285 8.268-4.332l-3.4-2.27c-.885 1.374-2.366 2.718-4.835 2.718-2.775 0-4.05-1.52-4.84-2.992l13.234-5.5-.687-1.6c-1.28-3.152-4.262-5.784-8.2-5.784zm.172 3.796c1.804 0 3.1.96 3.653 2.108l-8.838 3.694c-.38-2.86 2.328-5.802 5.186-5.802zm-15.7 15.377h4.346V12.4h-4.346z\"\r\n />\r\n </g>\r\n <defs>\r\n <path\r\n id=\"B\"\r\n d=\"M91.48 22.327c-5.78 0-9.922 4.518-9.922 9.788 0 5.348 4.018 9.95 10 9.95 5.407 0 9.836-4.132 9.836-9.836 0-6.537-5.153-9.904-9.904-9.904zm.057 3.877c2.843 0 5.536 2.298 5.536 6 0 3.624-2.683 5.99-5.55 5.99-3.15 0-5.635-2.523-5.635-6.017 0-3.418 2.455-5.972 5.648-5.972z\"\r\n />\r\n </defs>\r\n </svg>\r\n }\r\n\r\n @case ('location') {\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"var(--mecx-color-gray-900)\">\r\n <path\r\n d=\"M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7m0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5\"\r\n ></path>\r\n </svg>\r\n }\r\n\r\n @case ('edit') {\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n clip-rule=\"evenodd\"\r\n d=\"M5.293 15.619L15.619 5.29299C16.009 4.90299 16.642 4.90299 17.032 5.29299L18.708 6.96899C19.098 7.35899 19.098 7.99199 18.708 8.38199L8.381 18.707C8.194 18.895 7.94 19 7.675 19H5V16.325C5 16.06 5.105 15.806 5.293 15.619Z\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M13.75 7.16016L16.84 10.2502\"\r\n stroke=\"var(--mecx-color-gray-900)\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n }\r\n }\r\n `,\r\n styles: [\r\n `\r\n :host {\r\n display: flex;\r\n background-color: transparent;\r\n }\r\n `\r\n ]\r\n})\r\nexport class UtilIconComponent {\r\n name = input.required<IconName | string>();\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { isSignal, Signal } from '@angular/core';\r\n\r\nexport function unwrapSignal(value: number | Signal<number>): number {\r\n if (isSignal(value)) {\r\n return (value as Signal<number>)();\r\n }\r\n\r\n return value as number;\r\n}\r\n\r\nexport function isProgressSignal(value: unknown): value is Signal<number> {\r\n return isSignal(value);\r\n}","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { CommonModule } from '@angular/common';\r\nimport { booleanAttribute, Component, inject, Input, TemplateRef } from '@angular/core';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\n\r\n@Component({\r\n selector: 'monkey-accordion',\r\n imports: [CommonModule, UtilIconComponent],\r\n templateUrl: './accordion.component.html',\r\n styleUrl: './accordion.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-accordion',\r\n '[class.disabled]': 'disabled',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n },\r\n animations: [\r\n trigger('content', [\r\n state(\r\n 'void',\r\n style({\r\n height: '0px'\r\n })\r\n ),\r\n transition(':enter', [\r\n animate(\r\n '300ms ease-in-out',\r\n style({\r\n height: '*'\r\n })\r\n )\r\n ]),\r\n transition(':leave', [\r\n animate(\r\n '300ms ease-in-out',\r\n style({\r\n height: '0px'\r\n })\r\n )\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class MonkeyAccordionComponent {\r\n @Input({ transform: booleanAttribute }) open = false;\r\n\r\n @Input({ transform: booleanAttribute }) disabled = false;\r\n\r\n @Input() set title(data: string | TemplateRef<any>) {\r\n if (data instanceof TemplateRef) {\r\n this.titleRef = data;\r\n } else {\r\n this.titleStr = data;\r\n }\r\n }\r\n\r\n titleStr: string | undefined;\r\n\r\n titleRef: TemplateRef<any> | undefined;\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-accordion-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n onClick() {\r\n if (this.disabled) return;\r\n this.open = !this.open;\r\n }\r\n}\r\n","<div class=\"header\" (click)=\"onClick()\">\r\n <div class=\"title\">\r\n @if (titleRef) {\r\n <ng-container *ngTemplateOutlet=\"titleRef\" />\r\n } @else {\r\n {{ titleStr }}\r\n }\r\n </div>\r\n <util-icon class=\"icon\" name=\"arrowDown\" [class.rotated]=\"open\" />\r\n</div>\r\n<div class=\"content-wrapper\">\r\n @if (open) {\r\n <div [@content]>\r\n <div class=\"content\">\r\n <ng-content />\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './accordion.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, HostBinding, inject, Input, input, ViewEncapsulation } from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-action-bar',\r\n styleUrl: './action-bar.component.scss',\r\n template: `@if (open()) {\r\n @if (label(); as lb) {\r\n <span style=\"font-size: 13px\" data-testid=\"label\">\r\n {{ lb }}\r\n </span>\r\n }\r\n\r\n <ng-content></ng-content>\r\n }`,\r\n host: {\r\n 'data-testid': 'monkey-action-bar',\r\n '[attr.id]': 'id',\r\n '[id]': 'id',\r\n '[class.open]': 'open()'\r\n }\r\n})\r\nexport class MonkeyActionBarComponent {\r\n @HostBinding('class')\r\n get classes() {\r\n return this.position();\r\n }\r\n\r\n label = input<string>();\r\n\r\n position = input<string>();\r\n\r\n open = input<boolean>();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-action-bar-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './action-bar.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n Component,\r\n inject,\r\n Input,\r\n input,\r\n InputSignal,\r\n output,\r\n OutputEmitterRef,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { type MonkeyAlertType } from '../../interfaces';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-alert',\r\n styleUrl: './alert.component.scss',\r\n templateUrl: './alert.component.html',\r\n host: {\r\n 'data-testid': 'monkey-alert',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyAlertComponent {\r\n buttonLabel: InputSignal<string> = input('');\r\n\r\n message: InputSignal<string> = input.required<string>();\r\n\r\n title: InputSignal<string> = input.required<string>();\r\n\r\n type: InputSignal<MonkeyAlertType> = input.required<MonkeyAlertType>();\r\n\r\n onButtonClicked: OutputEmitterRef<void> = output<void>();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-alert-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n icon(type: MonkeyAlertType): string {\r\n const typeIcons = {\r\n alert: 'warning-outline',\r\n default: 'info',\r\n error: 'error-outline',\r\n info: 'info',\r\n success: 'checkmark-big-circle'\r\n };\r\n\r\n return typeIcons[type];\r\n }\r\n}\r\n","<div [class]=\"'monkey-alert__card ' + type()\">\r\n @if (type()) {\r\n <i class=\"mk-i mk-i-{{icon(type())}} {{'monkey-alert__card__type-' + type()}}\"></i>\r\n }\r\n <div class=\"monkey-alert__card__content\">\r\n <h4 class=\"monkey-alert__card__title\">{{ title() }}</h4>\r\n <h5 class=\"monkey-alert__card__message\">{{ message() }}</h5>\r\n @if (buttonLabel()) {\r\n <div>\r\n <a\r\n href=\"javascript:void(0)\"\r\n class=\"mecx-link fw-medium fs-base\"\r\n (click)=\"onButtonClicked.emit()\"\r\n >\r\n <span>{{ buttonLabel() }}</span>\r\n </a>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './alert.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { inject, InjectionToken } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nexport const MECX_I18N_WRAPPER = new InjectionToken<BehaviorSubject<string>>('');\r\nexport const MECX_POPOVER_OPTIONS = new InjectionToken('MECX_POPOVER_OPTIONS');\r\nexport const MECX_COUNTRY_ISO_CODE = new InjectionToken<string>('BR');\r\nexport const MECX_GOOGLE_API_KEY = new InjectionToken<string>('');\r\nexport const MECX_I18N_LANG = new InjectionToken<BehaviorSubject<string>>('MECX_I18N_LANG');\r\n\r\nexport function injectTokenWithWarning<T>(token: InjectionToken<T>, name?: string): T | null {\r\n const value = inject(token, { optional: true });\r\n if (!value) {\r\n // eslint-disable-next-line no-console\r\n console.error(`MECXInjectors -> Token \"${name || token.toString()}\" is not provided.`);\r\n }\r\n return value;\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n ConnectedPosition,\r\n FlexibleConnectedPositionStrategy,\r\n FlexibleConnectedPositionStrategyOrigin,\r\n Overlay,\r\n OverlayPositionBuilder,\r\n OverlayRef\r\n} from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { CommonModule, NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n booleanAttribute,\r\n Component,\r\n ComponentRef,\r\n DestroyRef,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n Inject,\r\n inject,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n Optional,\r\n Output,\r\n TemplateRef,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NavigationStart, Router } from '@angular/router';\r\nimport { filter } from 'rxjs';\r\nimport { UtilIconComponent } from '../../utils';\r\nimport { MonkeyPopoverDir, MonkeyPopoverItemClick, MonkeyPopoverOptions } from '../interfaces';\r\nimport { MECX_POPOVER_OPTIONS } from '../tokens';\r\n\r\n@Component({\r\n selector: 'monkey-popover-content',\r\n imports: [CommonModule, NgTemplateOutlet, UtilIconComponent],\r\n template: `\r\n <div class=\"mecx-popover-container\">\r\n @if (!hideHeader) {\r\n <div class=\"mecx-popover-header\">\r\n @if (title) {\r\n <div>\r\n @if (isTemplate(title)) {\r\n <ng-container *ngTemplateOutlet=\"title\"></ng-container>\r\n } @else {\r\n {{ title }}\r\n }\r\n </div>\r\n }\r\n\r\n @if (!hideClose) {\r\n <util-icon class=\"mecx-popover-close\" name=\"clear\" (click)=\"onClose.next(null)\" />\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"mecx-popover-content\" [class.add-radius]=\"hideHeader\">\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n </div>\r\n\r\n @if (!hideActions) {\r\n @if (actions) {\r\n <div class=\"mecx-popover-actions\">\r\n @if (isTemplate(actions)) {\r\n <ng-container *ngTemplateOutlet=\"actions\"></ng-container>\r\n } @else {\r\n <span>{{ actions }}</span>\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n `\r\n})\r\nexport class MonkeyPopoverContentComponent implements AfterViewInit {\r\n @Input() title?: string | TemplateRef<any>;\r\n\r\n @Input() content!: TemplateRef<any>;\r\n\r\n @Input() actions?: string | TemplateRef<any>;\r\n\r\n @Output() onClose = new EventEmitter();\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideHeader!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideClose!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideActions!: boolean;\r\n\r\n @Input()\r\n enableAutofocus = false;\r\n\r\n constructor(private host: ElementRef<HTMLElement>) {\r\n // not to do\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.enableAutofocus) {\r\n setTimeout(() => {\r\n const focusable = this.host.nativeElement.querySelector<HTMLElement>(\r\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\r\n );\r\n focusable?.focus();\r\n });\r\n }\r\n }\r\n\r\n isTemplate(value: unknown): value is TemplateRef<any> {\r\n return value instanceof TemplateRef;\r\n }\r\n}\r\n\r\ntype HorizontalPosition = 'start' | 'center' | 'end';\r\ntype VerticalPosition = 'top' | 'center' | 'bottom';\r\n\r\nexport function closeOnClickAttribute(value: unknown): boolean | string {\r\n if (value === '' || value === true || value === 'true') {\r\n return true;\r\n }\r\n\r\n if (value == null || value === false || value === 'false') {\r\n return false;\r\n }\r\n\r\n return String(value);\r\n}\r\n\r\n@Directive({\r\n selector: '[monkeyPopover]',\r\n exportAs: 'monkeyPopover'\r\n})\r\nexport class MonkeyPopoverDirective implements OnDestroy {\r\n private readonly _tpl = inject(TemplateRef);\r\n\r\n private readonly _vcr = inject(ViewContainerRef);\r\n\r\n private readonly _el = inject(ElementRef);\r\n\r\n private readonly _zone = inject(NgZone);\r\n\r\n private readonly _overlay = inject(Overlay);\r\n\r\n private readonly _overlayPositionBuilder = inject(OverlayPositionBuilder);\r\n\r\n private readonly _router = inject(Router);\r\n\r\n private readonly _destroyRef = inject(DestroyRef);\r\n\r\n @Optional() @Inject(MECX_POPOVER_OPTIONS) private readonly _options?: MonkeyPopoverOptions;\r\n\r\n private _overlayRef?: OverlayRef;\r\n\r\n private _componentRef?: ComponentRef<MonkeyPopoverContentComponent>;\r\n\r\n private _positionStrategy?: FlexibleConnectedPositionStrategy;\r\n\r\n private _resizeObserver?: ResizeObserver;\r\n\r\n private _removeContentClick?: () => void;\r\n\r\n private _show = false;\r\n\r\n @Input('monkeyPopover')\r\n set popover(show: boolean) {\r\n if (this._show === show) {\r\n return;\r\n }\r\n this._show = show;\r\n if (show) {\r\n setTimeout(() => {\r\n this.createPopover();\r\n }, 0);\r\n } else {\r\n this.disposePopover();\r\n }\r\n }\r\n\r\n get popover(): boolean {\r\n return this._show;\r\n }\r\n\r\n @Input('monkeyPopoverClosed')\r\n closed?: (e?: MouseEvent) => void;\r\n\r\n private _target?: HTMLElement;\r\n\r\n @Input('monkeyPopoverTarget')\r\n set target(value: any | undefined) {\r\n this._target = value;\r\n }\r\n\r\n get target(): HTMLElement | undefined {\r\n return this._target;\r\n }\r\n\r\n @Input('monkeyPopoverMinwidth')\r\n minwidth = false;\r\n\r\n @Input('monkeyPopoverBackdrop')\r\n backdrop = true;\r\n\r\n @Input('monkeyPopoverWatch')\r\n watch = false;\r\n\r\n @Input('monkeyPopoverDir')\r\n dir: MonkeyPopoverDir = 'ltr';\r\n\r\n @Input('monkeyPopoverContextmenu')\r\n contextmenu = false;\r\n\r\n @Input('monkeyPopoverHeight')\r\n height?: number | string;\r\n\r\n @Input('monkeyPopoverTitle') title?: string | TemplateRef<unknown>;\r\n\r\n @Input('monkeyPopoverActions') actions?: string | TemplateRef<unknown>;\r\n\r\n @Input({ alias: 'monkeyPopoverHideClose', transform: booleanAttribute })\r\n hideClose!: boolean;\r\n\r\n @Input({ alias: 'monkeyPopoverHideHeader', transform: booleanAttribute })\r\n hideHeader!: boolean;\r\n\r\n @Input({ alias: 'monkeyPopoverHideActions', transform: booleanAttribute })\r\n hideActions!: boolean;\r\n\r\n @Input({ alias: 'monkeyPopoverEnableAutofocus', transform: booleanAttribute })\r\n enableAutofocus!: boolean;\r\n\r\n @Input({ alias: 'monkeyPopoverCloseOnClick', transform: closeOnClickAttribute })\r\n closeOnClick: boolean | string = false;\r\n\r\n @Output('monkeyPopoverItemClick')\r\n itemClick = new EventEmitter<MonkeyPopoverItemClick>();\r\n\r\n constructor() {\r\n this._router.events\r\n .pipe(\r\n filter((event): event is NavigationStart => {\r\n return event instanceof NavigationStart;\r\n }),\r\n takeUntilDestroyed(this._destroyRef)\r\n )\r\n .subscribe(() => {\r\n this.closePopover();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.disposePopover();\r\n this._resizeObserver?.disconnect();\r\n }\r\n\r\n close(event?: MouseEvent): void {\r\n this.closePopover(event);\r\n }\r\n\r\n private closePopover(event?: MouseEvent): void {\r\n if (this._show) {\r\n this._show = false;\r\n this.disposePopover();\r\n this._zone.run(() => {\r\n this.closed?.(event);\r\n });\r\n }\r\n }\r\n\r\n private disposePopover(): void {\r\n this._resizeObserver?.disconnect();\r\n this._resizeObserver = undefined;\r\n\r\n this._removeContentClick?.();\r\n this._removeContentClick = undefined;\r\n\r\n if (this._overlayRef) {\r\n this._overlayRef.dispose();\r\n this._overlayRef = undefined;\r\n }\r\n }\r\n\r\n private getPositions(dir: MonkeyPopoverDir): ConnectedPosition[] {\r\n const oppositeVertical: Record<VerticalPosition, VerticalPosition> = {\r\n top: 'bottom',\r\n bottom: 'top',\r\n center: 'center'\r\n };\r\n\r\n const oppositeHorizontal: Record<HorizontalPosition, HorizontalPosition> = {\r\n start: 'end',\r\n end: 'start',\r\n center: 'center'\r\n };\r\n\r\n const centerY = (pos: VerticalPosition): ConnectedPosition => {\r\n return {\r\n originX: 'center',\r\n originY: pos,\r\n overlayX: 'center',\r\n overlayY: oppositeVertical[pos]\r\n };\r\n };\r\n\r\n const centerX = (pos: HorizontalPosition): ConnectedPosition => {\r\n return {\r\n originX: oppositeHorizontal[pos],\r\n originY: 'center',\r\n overlayX: pos,\r\n overlayY: 'center'\r\n };\r\n };\r\n\r\n const ltr = (axis: VerticalPosition): ConnectedPosition => {\r\n return {\r\n originX: 'start',\r\n originY: axis,\r\n overlayX: 'start',\r\n overlayY: oppositeVertical[axis]\r\n };\r\n };\r\n\r\n const rtl = (axis: VerticalPosition): ConnectedPosition => {\r\n return {\r\n originX: 'end',\r\n originY: axis,\r\n overlayX: 'end',\r\n overlayY: oppositeVertical[axis]\r\n };\r\n };\r\n\r\n const side = (axisX: HorizontalPosition, axisY: VerticalPosition): ConnectedPosition => {\r\n return {\r\n originX: axisX,\r\n originY: axisY,\r\n overlayX: oppositeHorizontal[axisX],\r\n overlayY: axisY\r\n };\r\n };\r\n\r\n const cmp = dir ?? this._options?.dir ?? this.dir;\r\n\r\n switch (cmp) {\r\n case 'ct':\r\n return [centerY('top'), centerY('bottom'), centerX('start'), centerX('end')];\r\n case 'cr':\r\n return [centerX('end'), centerX('start'), centerY('top'), centerY('bottom')];\r\n case 'cc':\r\n return [centerX('center')];\r\n case 'ltr':\r\n return [ltr('bottom'), ltr('top')];\r\n case 'rtl':\r\n return [rtl('bottom'), rtl('top')];\r\n case 'tltr':\r\n return [ltr('top'), ltr('bottom')];\r\n case 'trtl':\r\n return [rtl('top'), rtl('bottom')];\r\n case 'rt':\r\n return [side('end', 'top'), side('end', 'bottom'), ltr('top')];\r\n case 'rb':\r\n return [side('end', 'bottom'), side('end', 'top'), ltr('bottom'), rtl('bottom')];\r\n case 'lt':\r\n return [side('start', 'top'), side('start', 'bottom'), rtl('top')];\r\n case 'lb':\r\n return [side('start', 'bottom'), side('start', 'top'), rtl('bottom')];\r\n default:\r\n return [];\r\n }\r\n }\r\n\r\n private resolveItem(target: EventTarget | null): HTMLElement | null {\r\n if (!(target instanceof HTMLElement)) {\r\n return null;\r\n }\r\n\r\n const content = target.closest<HTMLElement>('.mecx-popover-content');\r\n\r\n if (!content) {\r\n return null;\r\n }\r\n\r\n const selector = typeof this.closeOnClick === 'string' ? this.closeOnClick : null;\r\n const item = selector ? target.closest<HTMLElement>(selector) : target;\r\n\r\n return item && content.contains(item) ? item : null;\r\n }\r\n\r\n private listenContentClicks(): void {\r\n if (!this._overlayRef || (!this.closeOnClick && !this.itemClick.observed)) {\r\n return;\r\n }\r\n\r\n const { overlayElement } = this._overlayRef;\r\n\r\n const handler = (event: MouseEvent): void => {\r\n const item = this.resolveItem(event.target);\r\n\r\n if (!item) {\r\n return;\r\n }\r\n\r\n this._zone.run(() => {\r\n this.itemClick.emit({ event, item });\r\n\r\n if (this.closeOnClick) {\r\n this.closePopover(event);\r\n }\r\n });\r\n };\r\n\r\n this._zone.runOutsideAngular(() => {\r\n overlayElement.addEventListener('click', handler);\r\n });\r\n\r\n this._removeContentClick = () => {\r\n overlayElement.removeEventListener('click', handler);\r\n };\r\n }\r\n\r\n private createPopover(\r\n origin?: FlexibleConnectedPositionStrategyOrigin,\r\n options?: MonkeyPopoverOptions\r\n ): void {\r\n if (!this.target) {\r\n // eslint-disable-next-line no-console\r\n console.error('MonkeyPopoverDirective -> target element is not defined.');\r\n return;\r\n }\r\n\r\n const originEl =\r\n this.target instanceof HTMLElement ? this.target : (this.target as any).element;\r\n\r\n this._positionStrategy = this._overlayPositionBuilder\r\n .flexibleConnectedTo(origin ?? originEl)\r\n .withPush(true)\r\n .withGrowAfterOpen(true)\r\n .withPositions(this.getPositions(options?.dir!));\r\n\r\n this._overlayRef = this._overlay.create({\r\n positionStrategy: this._positionStrategy,\r\n disposeOnNavigation: true,\r\n direction: 'ltr',\r\n hasBackdrop: this.backdrop,\r\n scrollStrategy: this._overlay.scrollStrategies.reposition(),\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n width: this._options?.minwidth || this.minwidth ? this.target.offsetWidth - 2 : undefined,\r\n maxHeight: '95%',\r\n height: this.height\r\n });\r\n\r\n this._overlayRef\r\n .backdropClick()\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe((event) => {\r\n this.closePopover(event);\r\n });\r\n\r\n const portal = new ComponentPortal(MonkeyPopoverContentComponent, this._vcr);\r\n\r\n this._componentRef = this._overlayRef.attach(portal);\r\n this._componentRef.instance.content = this._tpl;\r\n this._componentRef.instance.title = this.title as any;\r\n this._componentRef.instance.actions = this.actions as any;\r\n this._componentRef.instance.hideClose = this.hideClose;\r\n this._componentRef.instance.hideHeader = this.hideHeader;\r\n this._componentRef.instance.hideActions = this.hideActions;\r\n this._componentRef.instance.enableAutofocus = this.enableAutofocus;\r\n\r\n if (!this.hideClose || !this.hideHeader) {\r\n this._componentRef.instance.onClose\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(() => {\r\n this.closePopover();\r\n });\r\n }\r\n\r\n this.listenContentClicks();\r\n\r\n if (this.watch && 'ResizeObserver' in window) {\r\n this._resizeObserver = new ResizeObserver(() => {\r\n this._overlayRef?.updatePosition();\r\n });\r\n\r\n this._resizeObserver.observe(this._componentRef.location.nativeElement);\r\n }\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { map, of } from 'rxjs';\r\nimport {\r\n MonkeyGoogleApiPlaces,\r\n MonkeyGoogleApiPlacesAddressComponents,\r\n MonkeyGoogleApiPlacesResponse\r\n} from '../interfaces';\r\nimport { injectTokenWithWarning, MECX_GOOGLE_API_KEY } from '../tokens';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MonkeyEcxAddressService {\r\n private readonly _http = inject(HttpClient);\r\n\r\n private readonly _googleApiKey = injectTokenWithWarning(\r\n MECX_GOOGLE_API_KEY,\r\n 'MECX_GOOGLE_API_KEY'\r\n )!;\r\n\r\n private mappingData(places: MonkeyGoogleApiPlaces[]) {\r\n const getComponent = (\r\n components: MonkeyGoogleApiPlacesAddressComponents[],\r\n type:\r\n | 'street_number'\r\n | 'route'\r\n | 'sublocality_level_1'\r\n | 'sublocality'\r\n | 'political'\r\n | 'administrative_area_level_1'\r\n | 'administrative_area_level_2'\r\n | 'country'\r\n | 'postal_code',\r\n field = 'longText'\r\n ) => {\r\n const result = components.find((c) => {\r\n return c.types.includes(type);\r\n });\r\n\r\n return result?.[field] || '';\r\n };\r\n\r\n return places.map((_: MonkeyGoogleApiPlaces) => {\r\n const { addressComponents } = _;\r\n\r\n const address = getComponent(addressComponents!, 'route');\r\n const addressNumber = getComponent(addressComponents!, 'street_number');\r\n const neighborhood = getComponent(addressComponents!, 'sublocality_level_1');\r\n const city = getComponent(addressComponents!, 'administrative_area_level_2');\r\n const state = getComponent(addressComponents!, 'administrative_area_level_1');\r\n const country = getComponent(addressComponents!, 'country', 'shortText');\r\n const zipCode = getComponent(addressComponents!, 'postal_code');\r\n\r\n return {\r\n formattedAddress: _.formattedAddress,\r\n adrFormatAddress: _.adrFormatAddress,\r\n address,\r\n addressNumber,\r\n neighborhood,\r\n city,\r\n state,\r\n country,\r\n zipCode\r\n };\r\n });\r\n }\r\n\r\n get(textQuery: string) {\r\n if (!textQuery) {\r\n return of([]);\r\n }\r\n\r\n return this._http\r\n .post<any>(\r\n 'https://places.googleapis.com/v1/places:searchText',\r\n {\r\n textQuery\r\n },\r\n {\r\n headers: {\r\n 'X-Goog-Api-Key': this._googleApiKey,\r\n 'X-Goog-FieldMask':\r\n 'places.formattedAddress,places.addressComponents,places.displayName,places.adrFormatAddress'\r\n }\r\n }\r\n )\r\n .pipe(\r\n map((resp: MonkeyGoogleApiPlacesResponse) => {\r\n return this.mappingData(resp.places);\r\n })\r\n );\r\n }\r\n}\r\n","/* eslint-disable no-console */\r\n/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { DestroyRef, inject, Injectable, LOCALE_ID } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { BehaviorSubject, combineLatest, distinctUntilChanged, map } from 'rxjs';\r\nimport { MECX_I18N_LANG, MECX_I18N_WRAPPER } from '../tokens';\r\n\r\nconst DEFAULT_LOCALE = 'pt-BR';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MonkeyDictionaryService {\r\n private _localeId = inject(LOCALE_ID);\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private _lang$ =\r\n inject(MECX_I18N_LANG, { optional: true }) ??\r\n new BehaviorSubject<string>(this._localeId || DEFAULT_LOCALE);\r\n\r\n private _data$ = new BehaviorSubject<Record<string, Record<string, any>>>({\r\n 'pt-BR': {\r\n EDIT: 'Editar',\r\n 'NO-RESULTS': 'Nenhum resultado encontrado',\r\n 'NO-DATA': 'Sem dados',\r\n 'NO-DATA-ADDRESS': 'Nenhum endereço encontrado com esta pesquisa',\r\n 'NOT-PROVIDED': 'Não informado',\r\n LOADING: 'Carregando...',\r\n // `{label}`, `{position}` and `{total}` are filled in by the table.\r\n TABLE: {\r\n EMPTY: 'Nenhum resultado.',\r\n SORT: {\r\n 'TEXT-ASC': 'Ordenar de A a Z',\r\n 'TEXT-DESC': 'Ordenar de Z a A',\r\n 'NUMBER-ASC': 'Menor para maior',\r\n 'NUMBER-DESC': 'Maior para menor',\r\n 'DATE-ASC': 'Mais antigo',\r\n 'DATE-DESC': 'Mais recente'\r\n },\r\n COLUMN: {\r\n 'MOVE-LEFT': 'Mover esquerda',\r\n 'MOVE-RIGHT': 'Mover direita',\r\n HIDE: 'Remover visualização',\r\n PIN: 'Fixar coluna',\r\n UNPIN: 'Desfixar coluna'\r\n },\r\n ROW: {\r\n 'SELECT-ALL': 'Selecionar todas as linhas desta página',\r\n SELECT: 'Selecionar {label}',\r\n EXPAND: 'Expandir {label}',\r\n COLLAPSE: 'Recolher {label}',\r\n DETAIL: 'Detalhe',\r\n LIMIT: 'Limite de {max} selecionados atingido',\r\n 'NOT-SELECTABLE': 'Esta linha não pode ser selecionada'\r\n }\r\n },\r\n 'FILTER-BAR': {\r\n ADD: 'Filtro',\r\n 'ADD-ARIA': 'Adicionar filtro',\r\n REMOVE: 'Remover filtro',\r\n CLEAR: 'Limpar filtros',\r\n SEARCH: 'Buscar filtro',\r\n 'SELECT-CONDITION': 'Selecione condição',\r\n SELECT: 'Selecione',\r\n CONFIRM: 'Confirmar',\r\n 'RANGE-FROM': 'Valor inicial',\r\n 'RANGE-TO': 'Valor final',\r\n SELECTED: '{count} selecionados',\r\n DATE: {\r\n 'WEEK-AFTER': '1 semana a partir de hoje',\r\n 'MONTH-AFTER': '1 mês a partir de hoje',\r\n 'QUARTER-AFTER': '3 meses a partir de hoje',\r\n 'WEEK-BEFORE': '1 semana antes de hoje',\r\n 'MONTH-BEFORE': '1 mês antes de hoje',\r\n 'QUARTER-BEFORE': '3 meses antes de hoje',\r\n CUSTOM: 'Personalizado'\r\n },\r\n OPERATOR: {\r\n EQ: 'É igual',\r\n NEQ: 'Não é igual',\r\n LIKE: 'Contém',\r\n NOT_LIKE: 'Não contém',\r\n STARTS_WITH: 'Começa com',\r\n ENDS_WITH: 'Termina com',\r\n IS_EMPTY: 'Vazio',\r\n BETWEEN: 'Entre',\r\n GT: 'Maior que',\r\n LT: 'Menor que',\r\n BEFORE: 'Antes de',\r\n AFTER: 'Depois de'\r\n }\r\n },\r\n 'DATE-RANGE': {\r\n 'START-DATE': 'Data de início',\r\n 'END-DATE': 'Data de término',\r\n INVALID: 'Intervalo de datas inválido',\r\n ACTIONS: {\r\n CANCEL: 'Cancelar',\r\n APPLY: 'Aplicar'\r\n },\r\n 'WEEK-DAYS': ['Dom.', '2ª', '3ª', '4ª', '5ª', '6ª', 'Sab.'],\r\n MONTHS: {\r\n 0: 'Janeiro',\r\n 1: 'Fevereiro',\r\n 2: 'Março',\r\n 3: 'Abril',\r\n 4: 'Maio',\r\n 5: 'Junho',\r\n 6: 'Julho',\r\n 7: 'Agosto',\r\n 8: 'Setembro',\r\n 9: 'Outubro',\r\n 10: 'Novembro',\r\n 11: 'Dezembro'\r\n },\r\n 'QUICK-ACTIONS': {\r\n CUSTOM: 'Customizado',\r\n LAST_30_DAYS: 'Ultimos 30 dias',\r\n LAST_60_DAYS: 'Ultimos 60 dias',\r\n LAST_90_DAYS: 'Ultimos 90 dias',\r\n LAST_6_MONTHS: 'Ultimos 6 meses',\r\n LAST_12_MONTHS: 'Ultimos 12 meses',\r\n NEXT_30_DAYS: 'Próximos 30 dias',\r\n NEXT_60_DAYS: 'Próximos 60 dias',\r\n NEXT_90_DAYS: 'Próximos 90 dias',\r\n NEXT_6_MONTHS: 'Próximos 6 meses',\r\n NEXT_12_MONTHS: 'Próximos 12 meses'\r\n }\r\n },\r\n OR: 'ou',\r\n 'DOWNLOAD-TOAST': {\r\n singular: 'download',\r\n plural: 'downloads',\r\n expand: 'Expandir',\r\n defaultMessage: 'Download',\r\n cancel: 'Cancelar',\r\n close: 'Fechar',\r\n download: 'Baixar'\r\n }\r\n },\r\n 'es-CL': {\r\n EDIT: 'Editar',\r\n 'NO-RESULTS': 'No se encontraron resultados',\r\n 'NO-DATA': 'Sin datos',\r\n 'NO-DATA-ADDRESS': 'No se encontraron direcciones con esta búsqueda',\r\n 'NOT-PROVIDED': 'No informado',\r\n LOADING: 'Cargando...',\r\n TABLE: {\r\n EMPTY: 'Sin resultados.',\r\n SORT: {\r\n 'TEXT-ASC': 'Ordenar de A a Z',\r\n 'TEXT-DESC': 'Ordenar de Z a A',\r\n 'NUMBER-ASC': 'De menor a mayor',\r\n 'NUMBER-DESC': 'De mayor a menor',\r\n 'DATE-ASC': 'Más antiguo',\r\n 'DATE-DESC': 'Más reciente'\r\n },\r\n COLUMN: {\r\n 'MOVE-LEFT': 'Mover a la izquierda',\r\n 'MOVE-RIGHT': 'Mover a la derecha',\r\n HIDE: 'Quitar de la vista',\r\n PIN: 'Fijar columna',\r\n UNPIN: 'Desfijar columna'\r\n },\r\n ROW: {\r\n 'SELECT-ALL': 'Seleccionar todas las filas de esta página',\r\n SELECT: 'Seleccionar {label}',\r\n EXPAND: 'Expandir {label}',\r\n COLLAPSE: 'Contraer {label}',\r\n DETAIL: 'Detalle',\r\n LIMIT: 'Límite de {max} seleccionados alcanzado',\r\n 'NOT-SELECTABLE': 'Esta fila no se puede seleccionar'\r\n }\r\n },\r\n 'FILTER-BAR': {\r\n ADD: 'Filtro',\r\n 'ADD-ARIA': 'Agregar filtro',\r\n REMOVE: 'Eliminar filtro',\r\n CLEAR: 'Limpiar filtros',\r\n SEARCH: 'Buscar filtro',\r\n 'SELECT-CONDITION': 'Seleccione condición',\r\n SELECT: 'Seleccione',\r\n CONFIRM: 'Confirmar',\r\n 'RANGE-FROM': 'Valor inicial',\r\n 'RANGE-TO': 'Valor final',\r\n SELECTED: '{count} seleccionados',\r\n DATE: {\r\n 'WEEK-AFTER': '1 semana a partir de hoy',\r\n 'MONTH-AFTER': '1 mes a partir de hoy',\r\n 'QUARTER-AFTER': '3 meses a partir de hoy',\r\n 'WEEK-BEFORE': '1 semana antes de hoy',\r\n 'MONTH-BEFORE': '1 mes antes de hoy',\r\n 'QUARTER-BEFORE': '3 meses antes de hoy',\r\n CUSTOM: 'Personalizado'\r\n },\r\n OPERATOR: {\r\n EQ: 'Es igual',\r\n NEQ: 'No es igual',\r\n LIKE: 'Contiene',\r\n NOT_LIKE: 'No contiene',\r\n STARTS_WITH: 'Empieza con',\r\n ENDS_WITH: 'Termina con',\r\n IS_EMPTY: 'Vacío',\r\n BETWEEN: 'Entre',\r\n GT: 'Mayor que',\r\n LT: 'Menor que',\r\n BEFORE: 'Antes de',\r\n AFTER: 'Después de'\r\n }\r\n },\r\n 'DATE-RANGE': {\r\n 'START-DATE': 'Fecha de inicio',\r\n 'END-DATE': 'Fecha de termino',\r\n INVALID: 'Rango de fechas no válido',\r\n ACTIONS: {\r\n CANCEL: 'Cancelar',\r\n APPLY: 'Aplicar'\r\n },\r\n 'WEEK-DAYS': ['Dom.', 'Lun.', 'Mar.', 'Mié.', 'Jue.', 'Vie.', 'Sab.'],\r\n MONTHS: {\r\n 0: 'Enero',\r\n 1: 'Febrero',\r\n 2: 'Marzo',\r\n 3: 'Abril',\r\n 4: 'Mayo',\r\n 5: 'Junio',\r\n 6: 'Julio',\r\n 7: 'Agosto',\r\n 8: 'Septiembre',\r\n 9: 'Octubre',\r\n 10: 'Noviembre',\r\n 11: 'Diciembre'\r\n },\r\n 'QUICK-ACTIONS': {\r\n CUSTOM: 'Personalizado',\r\n LAST_30_DAYS: 'Últimos 30 días',\r\n LAST_60_DAYS: 'Últimos 60 días',\r\n LAST_90_DAYS: 'Últimos 90 días',\r\n LAST_6_MONTHS: 'Últimos 6 meses',\r\n LAST_12_MONTHS: 'Últimos 12 meses',\r\n NEXT_30_DAYS: 'Próximos 30 días',\r\n NEXT_60_DAYS: 'Próximos 60 días',\r\n NEXT_90_DAYS: 'Próximos 90 días',\r\n NEXT_6_MONTHS: 'Próximos 6 meses',\r\n NEXT_12_MONTHS: 'Próximos 12 meses'\r\n }\r\n },\r\n OR: 'o',\r\n 'DOWNLOAD-TOAST': {\r\n singular: 'descarga',\r\n plural: 'descargas',\r\n expand: 'Expandir',\r\n defaultMessage: 'Descarga',\r\n cancel: 'Cancelar',\r\n close: 'Cerrar',\r\n download: 'Descargar'\r\n }\r\n },\r\n 'es-MX': {\r\n EDIT: 'Editar',\r\n 'NO-RESULTS': 'No se encontraron resultados',\r\n 'NO-DATA': 'Sin datos',\r\n 'NO-DATA-ADDRESS': 'No se encontraron direcciones con esta búsqueda',\r\n 'NOT-PROVIDED': 'No informado',\r\n LOADING: 'Cargando...',\r\n TABLE: {\r\n EMPTY: 'Sin resultados.',\r\n SORT: {\r\n 'TEXT-ASC': 'Ordenar de A a Z',\r\n 'TEXT-DESC': 'Ordenar de Z a A',\r\n 'NUMBER-ASC': 'De menor a mayor',\r\n 'NUMBER-DESC': 'De mayor a menor',\r\n 'DATE-ASC': 'Más antiguo',\r\n 'DATE-DESC': 'Más reciente'\r\n },\r\n COLUMN: {\r\n 'MOVE-LEFT': 'Mover a la izquierda',\r\n 'MOVE-RIGHT': 'Mover a la derecha',\r\n HIDE: 'Quitar de la vista',\r\n PIN: 'Fijar columna',\r\n UNPIN: 'Desfijar columna'\r\n },\r\n ROW: {\r\n 'SELECT-ALL': 'Seleccionar todas las filas de esta página',\r\n SELECT: 'Seleccionar {label}',\r\n EXPAND: 'Expandir {label}',\r\n COLLAPSE: 'Contraer {label}',\r\n DETAIL: 'Detalle',\r\n LIMIT: 'Límite de {max} seleccionados alcanzado',\r\n 'NOT-SELECTABLE': 'Esta fila no se puede seleccionar'\r\n }\r\n },\r\n 'FILTER-BAR': {\r\n ADD: 'Filtro',\r\n 'ADD-ARIA': 'Agregar filtro',\r\n REMOVE: 'Eliminar filtro',\r\n CLEAR: 'Limpiar filtros',\r\n SEARCH: 'Buscar filtro',\r\n 'SELECT-CONDITION': 'Seleccione condición',\r\n SELECT: 'Seleccione',\r\n CONFIRM: 'Confirmar',\r\n 'RANGE-FROM': 'Valor inicial',\r\n 'RANGE-TO': 'Valor final',\r\n SELECTED: '{count} seleccionados',\r\n DATE: {\r\n 'WEEK-AFTER': '1 semana a partir de hoy',\r\n 'MONTH-AFTER': '1 mes a partir de hoy',\r\n 'QUARTER-AFTER': '3 meses a partir de hoy',\r\n 'WEEK-BEFORE': '1 semana antes de hoy',\r\n 'MONTH-BEFORE': '1 mes antes de hoy',\r\n 'QUARTER-BEFORE': '3 meses antes de hoy',\r\n CUSTOM: 'Personalizado'\r\n },\r\n OPERATOR: {\r\n EQ: 'Es igual',\r\n NEQ: 'No es igual',\r\n LIKE: 'Contiene',\r\n NOT_LIKE: 'No contiene',\r\n STARTS_WITH: 'Empieza con',\r\n ENDS_WITH: 'Termina con',\r\n IS_EMPTY: 'Vacío',\r\n BETWEEN: 'Entre',\r\n GT: 'Mayor que',\r\n LT: 'Menor que',\r\n BEFORE: 'Antes de',\r\n AFTER: 'Después de'\r\n }\r\n },\r\n 'DATE-RANGE': {\r\n 'START-DATE': 'Fecha de inicio',\r\n 'END-DATE': 'Fecha de termino',\r\n INVALID: 'Rango de fechas no válido',\r\n ACTIONS: {\r\n CANCEL: 'Cancelar',\r\n APPLY: 'Aplicar'\r\n },\r\n 'WEEK-DAYS': ['Dom.', 'Lun.', 'Mar.', 'Mié.', 'Jue.', 'Vie.', 'Sab.'],\r\n MONTHS: {\r\n 0: 'Enero',\r\n 1: 'Febrero',\r\n 2: 'Marzo',\r\n 3: 'Abril',\r\n 4: 'Mayo',\r\n 5: 'Junio',\r\n 6: 'Julio',\r\n 7: 'Agosto',\r\n 8: 'Septiembre',\r\n 9: 'Octubre',\r\n 10: 'Noviembre',\r\n 11: 'Diciembre'\r\n },\r\n 'QUICK-ACTIONS': {\r\n CUSTOM: 'Personalizado',\r\n LAST_30_DAYS: 'Últimos 30 días',\r\n LAST_60_DAYS: 'Últimos 60 días',\r\n LAST_90_DAYS: 'Últimos 90 días',\r\n LAST_6_MONTHS: 'Últimos 6 meses',\r\n LAST_12_MONTHS: 'Últimos 12 meses',\r\n NEXT_30_DAYS: 'Próximos 30 días',\r\n NEXT_60_DAYS: 'Próximos 60 días',\r\n NEXT_90_DAYS: 'Próximos 90 días',\r\n NEXT_6_MONTHS: 'Próximos 6 meses',\r\n NEXT_12_MONTHS: 'Próximos 12 meses'\r\n }\r\n },\r\n OR: 'o',\r\n 'DOWNLOAD-TOAST': {\r\n singular: 'descarga',\r\n plural: 'descargas',\r\n expand: 'Expandir',\r\n defaultMessage: 'Descarga',\r\n cancel: 'Cancelar',\r\n close: 'Cerrar',\r\n download: 'Descargar'\r\n }\r\n },\r\n 'en-US': {\r\n EDIT: 'Edit',\r\n 'NO-RESULTS': 'No results found',\r\n 'NO-DATA': 'No data',\r\n 'NO-DATA-ADDRESS': 'No address found with this search',\r\n 'NOT-PROVIDED': 'Not provided',\r\n LOADING: 'Loading...',\r\n TABLE: {\r\n EMPTY: 'No results.',\r\n SORT: {\r\n 'TEXT-ASC': 'Sort A to Z',\r\n 'TEXT-DESC': 'Sort Z to A',\r\n 'NUMBER-ASC': 'Lowest to highest',\r\n 'NUMBER-DESC': 'Highest to lowest',\r\n 'DATE-ASC': 'Oldest first',\r\n 'DATE-DESC': 'Newest first'\r\n },\r\n COLUMN: {\r\n 'MOVE-LEFT': 'Move left',\r\n 'MOVE-RIGHT': 'Move right',\r\n HIDE: 'Remove from view',\r\n PIN: 'Pin column',\r\n UNPIN: 'Unpin column'\r\n },\r\n ROW: {\r\n 'SELECT-ALL': 'Select all rows on this page',\r\n SELECT: 'Select {label}',\r\n EXPAND: 'Expand {label}',\r\n COLLAPSE: 'Collapse {label}',\r\n DETAIL: 'Detail',\r\n LIMIT: 'Limit of {max} selected reached',\r\n 'NOT-SELECTABLE': 'This row cannot be selected'\r\n }\r\n },\r\n 'FILTER-BAR': {\r\n ADD: 'Filter',\r\n 'ADD-ARIA': 'Add filter',\r\n REMOVE: 'Remove filter',\r\n CLEAR: 'Clear filters',\r\n SEARCH: 'Search filter',\r\n 'SELECT-CONDITION': 'Select condition',\r\n SELECT: 'Select',\r\n CONFIRM: 'Confirm',\r\n 'RANGE-FROM': 'From',\r\n 'RANGE-TO': 'To',\r\n SELECTED: '{count} selected',\r\n DATE: {\r\n 'WEEK-AFTER': '1 week from today',\r\n 'MONTH-AFTER': '1 month from today',\r\n 'QUARTER-AFTER': '3 months from today',\r\n 'WEEK-BEFORE': '1 week before today',\r\n 'MONTH-BEFORE': '1 month before today',\r\n 'QUARTER-BEFORE': '3 months before today',\r\n CUSTOM: 'Custom'\r\n },\r\n OPERATOR: {\r\n EQ: 'Is equal to',\r\n NEQ: 'Is not equal to',\r\n LIKE: 'Contains',\r\n NOT_LIKE: 'Does not contain',\r\n STARTS_WITH: 'Starts with',\r\n ENDS_WITH: 'Ends with',\r\n IS_EMPTY: 'Is empty',\r\n BETWEEN: 'Between',\r\n GT: 'Greater than',\r\n LT: 'Less than',\r\n BEFORE: 'Before',\r\n AFTER: 'After'\r\n }\r\n },\r\n 'DATE-RANGE': {\r\n 'START-DATE': 'Start date',\r\n 'END-DATE': 'End Date',\r\n INVALID: 'Invalid date range',\r\n ACTIONS: {\r\n CANCEL: 'Cancel',\r\n APPLY: 'Apply'\r\n },\r\n 'WEEK-DAYS': ['Sun.', 'Mon.', 'Tue.', 'Wed.', 'Thu.', 'Fri.', 'Sat.'],\r\n MONTHS: {\r\n 0: 'January',\r\n 1: 'February',\r\n 2: 'March',\r\n 3: 'April',\r\n 4: 'May',\r\n 5: 'June',\r\n 6: 'July',\r\n 7: 'August',\r\n 8: 'September',\r\n 9: 'October',\r\n 10: 'November',\r\n 11: 'December'\r\n },\r\n 'QUICK-ACTIONS': {\r\n CUSTOM: 'Custom',\r\n LAST_30_DAYS: 'Last 30 days',\r\n LAST_60_DAYS: 'Last 60 days',\r\n LAST_90_DAYS: 'Last 90 days',\r\n LAST_6_MONTHS: 'Last 6 months',\r\n LAST_12_MONTHS: 'Last 12 months',\r\n NEXT_30_DAYS: 'Next 30 days',\r\n NEXT_60_DAYS: 'Next 60 days',\r\n NEXT_90_DAYS: 'Next 90 days',\r\n NEXT_6_MONTHS: 'Next 6 months',\r\n NEXT_12_MONTHS: 'Next 12 months'\r\n }\r\n },\r\n OR: 'or',\r\n 'DOWNLOAD-TOAST': {\r\n singular: 'download',\r\n plural: 'downloads',\r\n expand: 'Expand',\r\n cancel: 'Cancel',\r\n close: 'Close',\r\n download: 'Download',\r\n defaultMessage: 'Download'\r\n }\r\n }\r\n });\r\n\r\n constructor() {\r\n const tokenSubject = inject(MECX_I18N_WRAPPER, { optional: true });\r\n tokenSubject?.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((value) => {\r\n this.handleWrapperValues(value);\r\n });\r\n }\r\n\r\n private handleWrapperValues(value: string) {\r\n try {\r\n const locale = this._lang$.value || DEFAULT_LOCALE;\r\n const wrappedData = JSON.parse(value);\r\n const currentData = this._data$.value;\r\n\r\n const updated = {\r\n ...currentData,\r\n [locale]: {\r\n ...currentData[locale],\r\n ...wrappedData\r\n }\r\n };\r\n\r\n this._data$.next(updated);\r\n } catch (e) {\r\n // eslint-disable-next-line no-console\r\n console.error(`MonkeyDictionaryService - handleWrapperValues -> ${e}`);\r\n }\r\n }\r\n\r\n get(key: string) {\r\n return combineLatest([this._data$, this._lang$]).pipe(\r\n map(([data, lang]) => {\r\n const locale = lang || DEFAULT_LOCALE;\r\n return data[locale]?.[key] ?? data[DEFAULT_LOCALE]?.[key] ?? null;\r\n }),\r\n distinctUntilChanged()\r\n );\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n GlobalPositionStrategy,\r\n Overlay,\r\n OverlayRef,\r\n PositionStrategy\r\n} from '@angular/cdk/overlay';\r\nimport { MonkeyToastPosition } from '../interfaces';\r\n\r\nexport const MOBILE_TOAST_MEDIA_QUERY = '(max-width: 575.98px)';\r\n\r\nexport function isMobileToastViewport(): boolean {\r\n if (typeof window !== 'undefined' && typeof window.matchMedia === 'function') {\r\n return window.matchMedia(MOBILE_TOAST_MEDIA_QUERY).matches;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction getToastOffset(): string {\r\n if (isMobileToastViewport()) {\r\n return '16px';\r\n }\r\n\r\n return '24px';\r\n}\r\n\r\nfunction buildGlobalPosition(\r\n overlay: Overlay,\r\n position?: MonkeyToastPosition\r\n): GlobalPositionStrategy {\r\n const offset = getToastOffset();\r\n const globalPosition = overlay.position().global();\r\n const key = position ?? 'bottom-right';\r\n\r\n if (isMobileToastViewport()) {\r\n return key.startsWith('top')\r\n ? globalPosition.top(offset).centerHorizontally()\r\n : globalPosition.bottom(offset).centerHorizontally();\r\n }\r\n\r\n const strategies: Record<string, () => GlobalPositionStrategy> = {\r\n 'top-left': () => {\r\n return globalPosition.top(offset).start(offset);\r\n },\r\n 'top-center': () => {\r\n return globalPosition.top(offset).centerHorizontally();\r\n },\r\n 'top-right': () => {\r\n return globalPosition.top(offset).end(offset);\r\n },\r\n 'bottom-left': () => {\r\n return globalPosition.bottom(offset).start(offset);\r\n },\r\n 'bottom-center': () => {\r\n return globalPosition.bottom(offset).centerHorizontally();\r\n },\r\n 'bottom-right': () => {\r\n return globalPosition.bottom(offset).end(offset);\r\n }\r\n };\r\n\r\n const factory = strategies[key] ?? strategies['bottom-right'];\r\n\r\n return factory();\r\n}\r\n\r\nclass ViewportAwareToastPositionStrategy implements PositionStrategy {\r\n private overlayRef?: OverlayRef;\r\n\r\n constructor(\r\n private readonly overlay: Overlay,\r\n private readonly position?: MonkeyToastPosition\r\n ) {}\r\n\r\n attach(overlayRef: OverlayRef): void {\r\n this.overlayRef = overlayRef;\r\n }\r\n\r\n apply(): void {\r\n const overlayRef = this.overlayRef;\r\n\r\n if (!overlayRef) {\r\n return;\r\n }\r\n\r\n const fresh = buildGlobalPosition(this.overlay, this.position);\r\n fresh.attach(overlayRef);\r\n fresh.apply();\r\n }\r\n\r\n dispose(): void {\r\n this.overlayRef = undefined;\r\n }\r\n}\r\n\r\nexport function createToastOverlay(overlay: Overlay, position?: MonkeyToastPosition): OverlayRef {\r\n return overlay.create({\r\n hasBackdrop: false,\r\n positionStrategy: new ViewportAwareToastPositionStrategy(overlay, position)\r\n });\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n Output,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\n\r\n@Component({\r\n selector: 'monkey-tooltip',\r\n imports: [NgTemplateOutlet],\r\n templateUrl: './tooltip.component.html',\r\n styleUrl: './tooltip.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-tooltip',\r\n '[style.left.px]': 'left',\r\n '[style.top.px]': 'top',\r\n '(animationend)': 'onAnimationEnd($event)',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyTooltipComponent {\r\n @Input() text: string | undefined;\r\n\r\n @Input() template!: null | TemplateRef<HTMLElement>;\r\n\r\n @Input() left: number | undefined;\r\n\r\n @Input() top: number | undefined;\r\n\r\n @Output() afterClose = new EventEmitter();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-tooltip-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor(private host: ElementRef<HTMLElement>) {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n close() {\r\n this.host.nativeElement.classList.add('closed');\r\n }\r\n\r\n onAnimationEnd(event: AnimationEvent) {\r\n if (event.animationName.includes('fade-out')) {\r\n this.afterClose.emit(true);\r\n }\r\n }\r\n}\r\n","@if (template) {\r\n <ng-container *ngTemplateOutlet=\"template\"> </ng-container>\r\n}\r\n@if (text) {\r\n {{ text }}\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './tooltip.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n ApplicationRef,\r\n booleanAttribute,\r\n ComponentRef,\r\n Directive,\r\n DOCUMENT,\r\n ElementRef,\r\n HostListener,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n TemplateRef,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { MonkeyTooltipComponent } from './tooltip';\r\n\r\ntype Position = 'top' | 'bottom' | 'left' | 'right' | undefined;\r\n\r\n@Directive({\r\n selector: '[monkeyTooltip]',\r\n standalone: true,\r\n host: {\r\n '(mouseenter)': 'show()',\r\n '(mouseleave)': 'hide()',\r\n '(click)': 'hide()'\r\n }\r\n})\r\nexport class MonkeyTooltipDirective implements OnDestroy {\r\n @Input('monkeyTooltip') tooltipText: string | TemplateRef<HTMLElement> | undefined;\r\n\r\n @Input() tooltipPosition: Position;\r\n\r\n @Input({ transform: booleanAttribute }) enabled = true;\r\n\r\n private offset = 8;\r\n\r\n private tooltipComponent?: ComponentRef<MonkeyTooltipComponent>;\r\n\r\n private bounds!: {\r\n elBounds: DOMRect;\r\n tooltipBounds: DOMRect;\r\n viewport: { width: number; height: number };\r\n };\r\n\r\n constructor(\r\n private viewContainerRef: ViewContainerRef,\r\n private elementRef: ElementRef,\r\n private appRef: ApplicationRef,\r\n @Inject(DOCUMENT) private document: Document\r\n ) {\r\n // to do not\r\n }\r\n\r\n private setBounds() {\r\n this.tooltipComponent!.hostView.detectChanges();\r\n this.bounds = {\r\n elBounds: this.elementRef.nativeElement.getBoundingClientRect(),\r\n tooltipBounds: this.tooltipComponent?.location.nativeElement.getBoundingClientRect(),\r\n viewport: {\r\n width:\r\n window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth,\r\n height:\r\n window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * The top layer paints above every stacking context and ignores z-index entirely, so the\r\n * tooltip cannot be covered by an overlay, a modal or application chrome. Browsers without\r\n * the popover API fall back to the z-index in the component styles.\r\n */\r\n private raiseToTopLayer(host: HTMLElement): void {\r\n const popover = host as HTMLElement & { showPopover?: () => void };\r\n\r\n if (typeof popover.showPopover !== 'function') {\r\n return;\r\n }\r\n\r\n host.setAttribute('popover', 'manual');\r\n\r\n try {\r\n popover.showPopover();\r\n } catch {\r\n // Already open, or detached before it could be shown.\r\n }\r\n }\r\n\r\n private createTooltip() {\r\n this.tooltipComponent = this.viewContainerRef.createComponent(MonkeyTooltipComponent);\r\n const host = this.tooltipComponent.location.nativeElement as HTMLElement;\r\n this.document.body.appendChild(host);\r\n this.raiseToTopLayer(host);\r\n\r\n if (this.tooltipText instanceof TemplateRef) {\r\n this.tooltipComponent.instance.template = this.tooltipText;\r\n } else {\r\n this.tooltipComponent.instance.text = this.tooltipText;\r\n }\r\n this.setBounds();\r\n\r\n this.positionTooltip(this.tooltipPosition);\r\n }\r\n\r\n private positionTooltip(position: Position) {\r\n switch (position) {\r\n case 'left':\r\n this.positionLeft();\r\n if (this.isOutOfBounds()) {\r\n this.positionRight();\r\n if (this.isOutOfBounds()) {\r\n this.positionBottom();\r\n if (this.isOutOfBounds()) {\r\n this.positionTop();\r\n }\r\n }\r\n }\r\n break;\r\n case 'right':\r\n this.positionRight();\r\n if (this.isOutOfBounds()) {\r\n this.positionLeft();\r\n if (this.isOutOfBounds()) {\r\n this.positionBottom();\r\n if (this.isOutOfBounds()) {\r\n this.positionTop();\r\n }\r\n }\r\n }\r\n break;\r\n case 'top':\r\n this.positionTop();\r\n if (this.isOutOfBounds()) {\r\n this.positionBottom();\r\n if (this.isOutOfBounds()) {\r\n this.positionRight();\r\n if (this.isOutOfBounds()) {\r\n this.positionLeft();\r\n }\r\n }\r\n }\r\n break;\r\n case 'bottom':\r\n this.positionBottom();\r\n if (this.isOutOfBounds()) {\r\n this.positionTop();\r\n if (this.isOutOfBounds()) {\r\n this.positionRight();\r\n if (this.isOutOfBounds()) {\r\n this.positionLeft();\r\n }\r\n }\r\n }\r\n break;\r\n default:\r\n }\r\n }\r\n\r\n private isOutOfBounds() {\r\n const { tooltipBounds, viewport } = this.bounds;\r\n\r\n return (\r\n tooltipBounds.left < 0 ||\r\n tooltipBounds.top < 0 ||\r\n tooltipBounds.left + tooltipBounds.width > viewport.width ||\r\n tooltipBounds.top + tooltipBounds.height > viewport.height\r\n );\r\n }\r\n\r\n private positionLeft() {\r\n const { elBounds, tooltipBounds } = this.bounds;\r\n this.tooltipComponent!.instance.left = elBounds.left - tooltipBounds.width - this.offset;\r\n this.tooltipComponent!.instance.top = elBounds.top + elBounds.height / 2;\r\n this.tooltipComponent!.location.nativeElement.style.transform = 'translateY(-50%)';\r\n this.setBounds();\r\n }\r\n\r\n private positionRight() {\r\n const { elBounds } = this.bounds;\r\n this.tooltipComponent!.instance.left = elBounds.right + this.offset;\r\n this.tooltipComponent!.instance.top = elBounds.top + elBounds.height / 2;\r\n this.tooltipComponent!.location.nativeElement.style.transform = 'translateY(-50%)';\r\n this.setBounds();\r\n }\r\n\r\n private positionTop() {\r\n const { elBounds, tooltipBounds } = this.bounds;\r\n this.tooltipComponent!.instance.left = elBounds.left + elBounds.width / 2;\r\n this.tooltipComponent!.instance.top = elBounds.top - tooltipBounds.height - this.offset;\r\n this.tooltipComponent!.location.nativeElement.style.transform = 'translateX(-50%)';\r\n this.setBounds();\r\n }\r\n\r\n private positionBottom() {\r\n const { elBounds } = this.bounds;\r\n this.tooltipComponent!.instance.left = elBounds.left + elBounds.width / 2;\r\n this.tooltipComponent!.instance.top = elBounds.bottom + this.offset;\r\n this.tooltipComponent!.location.nativeElement.style.transform = 'translateX(-50%)';\r\n this.setBounds();\r\n }\r\n\r\n show(): void {\r\n if (!this.enabled || this.tooltipComponent) {\r\n return;\r\n }\r\n\r\n this.createTooltip();\r\n }\r\n\r\n hide(): void {\r\n if (!this.tooltipComponent) {\r\n return;\r\n }\r\n this.tooltipComponent.instance.close();\r\n const subscribe = this.tooltipComponent.instance.afterClose.subscribe(() => {\r\n if (!this.tooltipComponent) {\r\n return;\r\n }\r\n this.appRef.detachView(this.tooltipComponent!.hostView);\r\n this.tooltipComponent!.destroy();\r\n this.tooltipComponent = undefined;\r\n subscribe.unsubscribe();\r\n });\r\n }\r\n\r\n @HostListener('window:scroll')\r\n @HostListener('window:resize')\r\n onScroll() {\r\n this.hide();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.tooltipComponent) {\r\n try {\r\n this.appRef.detachView(this.tooltipComponent.hostView);\r\n } catch (error: unknown) {\r\n if (error === undefined) {\r\n return;\r\n }\r\n }\r\n this.tooltipComponent.destroy();\r\n this.tooltipComponent = undefined;\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './tooltip';\r\nexport * from './tooltip.directive';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n ElementRef,\r\n inject,\r\n input,\r\n InputSignal,\r\n output,\r\n OutputEmitterRef,\r\n Signal,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { clampProgress, IdGenerator } from '../../../utils';\r\nimport { UtilIconComponent } from '../../../utils/icon';\r\nimport { MonkeyDictionaryService } from '../../services/dictionary.service';\r\nimport { MonkeyTooltipDirective } from '../tooltip';\r\nimport { MonkeyDownloadToastDictionary } from './download-toast.constants';\r\n\r\n@Component({\r\n selector: 'monkey-download-toast',\r\n imports: [UtilIconComponent, MonkeyTooltipDirective],\r\n templateUrl: './download-toast.component.html',\r\n styleUrl: './download-toast.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n 'data-testid': 'monkey-download-toast',\r\n role: 'status',\r\n '[attr.aria-live]': '\"polite\"',\r\n '[attr.aria-atomic]': '\"true\"',\r\n '[attr.aria-busy]': 'isBusy()',\r\n '[attr.id]': 'id()',\r\n '[id]': 'id()',\r\n '(animationend)': 'onAnimationEnd($event)',\r\n '(keydown.escape)': 'handleEscape()',\r\n tabindex: '0'\r\n }\r\n})\r\nexport class MonkeyDownloadToastComponent {\r\n readonly message: InputSignal<string> = input<string>('');\r\n\r\n readonly progress: InputSignal<number> = input<number, number>(0, {\r\n transform: (value: unknown): number => {\r\n return clampProgress(value);\r\n }\r\n });\r\n\r\n readonly id: InputSignal<string> = input<string>(\r\n inject(IdGenerator).getId('monkey-download-toast-')\r\n );\r\n\r\n readonly onCancel: OutputEmitterRef<void> = output<void>();\r\n\r\n readonly onClose: OutputEmitterRef<string> = output<string>();\r\n\r\n readonly onDownload: OutputEmitterRef<void> = output<void>();\r\n\r\n protected readonly dict: Signal<MonkeyDownloadToastDictionary> = toSignal(\r\n inject(MonkeyDictionaryService).get('DOWNLOAD-TOAST'),\r\n { requireSync: true }\r\n );\r\n\r\n protected readonly displayMessage: Signal<string> = computed<string>((): string => {\r\n return this.message() || this.dict().defaultMessage;\r\n });\r\n\r\n protected readonly safeProgress: Signal<number> = computed<number>((): number => {\r\n return clampProgress(this.progress());\r\n });\r\n\r\n protected readonly isBusy: Signal<boolean> = computed<boolean>((): boolean => {\r\n return this.safeProgress() > 0 && this.safeProgress() < 100;\r\n });\r\n\r\n protected readonly isComplete: Signal<boolean> = computed<boolean>((): boolean => {\r\n return this.safeProgress() >= 100;\r\n });\r\n\r\n constructor(protected readonly host: ElementRef<HTMLElement>) {\r\n // not to do\r\n }\r\n\r\n protected handleEscape(): void {\r\n this.onCancelPressed();\r\n }\r\n\r\n protected onCancelPressed(): void {\r\n this.onCancel.emit();\r\n this.close();\r\n }\r\n\r\n protected onDownloadPressed(): void {\r\n this.onDownload.emit();\r\n }\r\n\r\n close(): void {\r\n this.host.nativeElement.classList.add('closed');\r\n }\r\n\r\n protected onAnimationEnd(event: AnimationEvent): void {\r\n if (event.animationName.includes('fade-out')) {\r\n this.onClose.emit(this.id());\r\n }\r\n }\r\n}","<div class=\"monkey-download-toast\">\n <div class=\"monkey-download-toast__icon-wrap\" aria-hidden=\"true\">\n <i class=\"mk-i mk-i-download fs-sm\"></i>\n </div>\n <div class=\"monkey-download-toast__content\">\n <div\n class=\"monkey-download-toast__title\"\n [attr.id]=\"id() + '-title'\"\n [monkeyTooltip]=\"displayMessage()\"\n tooltipPosition=\"top\"\n >\n {{ displayMessage() }}\n </div>\n <div\n class=\"monkey-download-toast__track\"\n role=\"progressbar\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-valuenow]=\"safeProgress()\"\n [attr.aria-labelledby]=\"id() + '-title'\"\n >\n <div class=\"monkey-download-toast__fill\" [style.width.%]=\"safeProgress()\"></div>\n </div>\n @if (isComplete()) {\n <button\n type=\"button\"\n class=\"monkey-download-toast__action monkey-download-toast__download\"\n [attr.aria-label]=\"dict().download\"\n (click)=\"onDownloadPressed()\"\n (keydown.enter)=\"onDownloadPressed()\"\n (keydown.space)=\"onDownloadPressed(); $event.preventDefault()\"\n >\n {{ dict().download }}\n </button>\n } @else {\n <button\n type=\"button\"\n class=\"monkey-download-toast__action monkey-download-toast__cancel\"\n [attr.aria-label]=\"dict().cancel\"\n (click)=\"onCancelPressed()\"\n (keydown.enter)=\"onCancelPressed()\"\n (keydown.space)=\"onCancelPressed(); $event.preventDefault()\"\n >\n {{ dict().cancel }}\n </button>\n }\n </div>\n <div class=\"monkey-download-toast__actions\">\n <div class=\"monkey-download-toast__divider\" aria-hidden=\"true\"></div>\n <button\n type=\"button\"\n class=\"monkey-download-toast__close\"\n [attr.aria-label]=\"dict().close\"\n (click)=\"onCancelPressed()\"\n >\n <util-icon name=\"clear\" aria-hidden=\"true\"></util-icon>\n </button>\n </div>\n</div>\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nexport const DOWNLOAD_TOAST_EXIT_MS = 200;\n\nexport interface MonkeyDownloadToastDictionary {\n singular: string;\n plural: string;\n expand: string;\n defaultMessage: string;\n cancel: string;\n close: string;\n download: string;\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n input,\n InputSignal,\n signal,\n Signal,\n viewChild,\n ViewEncapsulation,\n WritableSignal\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { IdGenerator, unwrapSignal } from '../../../utils';\nimport { MonkeyDictionaryService } from '../../services/dictionary.service';\nimport { MOBILE_TOAST_MEDIA_QUERY } from '../../services/toast-overlay';\nimport { MonkeyDownloadToastComponent } from './download-toast.component';\nimport { DOWNLOAD_TOAST_EXIT_MS, MonkeyDownloadToastDictionary } from './download-toast.constants';\n\nconst AUTO_COLLAPSE_MS = 3000;\n\nconst GAP = 14;\n\nconst VISIBLE_TOASTS = 3;\n\nexport interface MonkeyDownloadStackItem {\n id: string;\n message: string;\n progress: number | Signal<number>;\n onCancel?: () => void;\n onDownload?: () => void;\n}\n\nexport type MonkeyDownloadStackItemUpdate = Partial<\n Pick<MonkeyDownloadStackItem, 'message' | 'progress'>\n>;\n\ninterface DownloadStackRow {\n item: MonkeyDownloadStackItem;\n depth: number;\n leaving: boolean;\n}\n\n@Component({\n selector: 'monkey-download-toast-stack',\n imports: [MonkeyDownloadToastComponent],\n templateUrl: './download-toast-stack.component.html',\n styleUrl: './download-toast-stack.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'data-testid': 'monkey-download-toast-stack'\n }\n})\nexport class MonkeyDownloadToastStackComponent {\n protected readonly position: InputSignal<string> = input<string>('bottom-right');\n\n readonly items: WritableSignal<MonkeyDownloadStackItem[]> = signal<MonkeyDownloadStackItem[]>([]);\n\n readonly expanded: WritableSignal<boolean> = signal<boolean>(false);\n\n readonly isMobile: WritableSignal<boolean> = signal<boolean>(false);\n\n protected readonly dict: Signal<MonkeyDownloadToastDictionary> = toSignal(\n inject(MonkeyDictionaryService).get('DOWNLOAD-TOAST'),\n { requireSync: true }\n );\n\n protected readonly maxVisible: number = VISIBLE_TOASTS;\n\n private readonly cardEl = viewChild('cardEl', { read: ElementRef<HTMLElement> });\n\n private readonly cardHeight: WritableSignal<number> = signal<number>(0);\n\n private readonly rendered: WritableSignal<MonkeyDownloadStackItem[]> = signal<\n MonkeyDownloadStackItem[]\n >([]);\n\n private readonly leavingDepth = new Map<string, number>();\n\n private readonly exitTimers = new Map<string, ReturnType<typeof setTimeout>>();\n\n private readonly count: Signal<number> = computed<number>((): number => {\n return this.items().length;\n });\n\n private collapseTimer?: ReturnType<typeof setTimeout>;\n\n private readonly mobileMediaQuery = MOBILE_TOAST_MEDIA_QUERY;\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n effect((onCleanup): void => {\n const ref = this.cardEl();\n\n if (!ref || typeof ResizeObserver === 'undefined') {\n return;\n }\n\n const el = ref.nativeElement;\n const observer = new ResizeObserver((): void => {\n const height = el.getBoundingClientRect().height;\n if (height > 0) {\n this.cardHeight.set(height);\n }\n });\n observer.observe(el);\n onCleanup((): void => {\n observer.disconnect();\n });\n });\n\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\n destroyRef.onDestroy((): void => {\n this.cancelAutoCollapse();\n this.cancelExits();\n });\n return;\n }\n\n const mediaList = window.matchMedia(this.mobileMediaQuery);\n this.isMobile.set(mediaList.matches);\n\n const onChange = (event: MediaQueryListEvent): void => {\n this.isMobile.set(event.matches);\n };\n mediaList.addEventListener('change', onChange);\n destroyRef.onDestroy((): void => {\n mediaList.removeEventListener('change', onChange);\n this.cancelAutoCollapse();\n this.cancelExits();\n });\n }\n\n protected readonly listId: string = inject(IdGenerator).getId('monkey-download-toast-list-');\n\n protected readonly hasItems: Signal<boolean> = computed<boolean>((): boolean => {\n return this.count() > 0;\n });\n\n protected readonly isCollapsible: Signal<boolean> = computed<boolean>((): boolean => {\n return this.count() > 1;\n });\n\n protected readonly isCollapsed: Signal<boolean> = computed<boolean>((): boolean => {\n return !this.expanded() && this.count() > 1;\n });\n\n protected readonly showCounter: Signal<boolean> = computed<boolean>((): boolean => {\n return this.count() > VISIBLE_TOASTS;\n });\n\n protected readonly rows: Signal<DownloadStackRow[]> = computed<DownloadStackRow[]>(() => {\n const alive = this.items();\n const total = alive.length;\n const live = new Map<string, DownloadStackRow>();\n\n alive.forEach((item: MonkeyDownloadStackItem, index: number): void => {\n live.set(item.id, { item, depth: total - 1 - index, leaving: false });\n });\n\n return this.rendered().map((snapshot: MonkeyDownloadStackItem): DownloadStackRow => {\n return (\n live.get(snapshot.id) ?? {\n item: snapshot,\n depth: this.leavingDepth.get(snapshot.id) ?? 0,\n leaving: true\n }\n );\n });\n });\n\n protected readonly stackStyle: Signal<Record<string, string>> = computed<Record<string, string>>(\n (): Record<string, string> => {\n const card = this.cardHeight();\n const visible = Math.min(this.count(), VISIBLE_TOASTS);\n\n if (!card || !visible) {\n return {};\n }\n\n const height = this.isCollapsed()\n ? card + GAP * (visible - 1)\n : card * visible + GAP * (visible - 1);\n\n return {\n '--mecx-download-toast-card': `${card}px`,\n '--mecx-download-toast-stack-height': `${height}px`\n };\n }\n );\n\n protected readonly headerLabel: Signal<string> = computed<string>((): string => {\n const count = this.count();\n const dict = this.dict();\n const noun = count === 1 ? dict.singular : dict.plural;\n\n return `${count} ${noun}`;\n });\n\n protected readonly expandLabel: Signal<string> = computed<string>((): string => {\n const count = this.count();\n const dict = this.dict();\n const noun = count === 1 ? dict.singular : dict.plural;\n\n return `${dict.expand} ${count} ${noun}`;\n });\n\n private supportsHover(): boolean {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\n return false;\n }\n return window.matchMedia('(hover: hover)').matches;\n }\n\n private cancelExits(): void {\n this.exitTimers.forEach((timer: ReturnType<typeof setTimeout>): void => {\n clearTimeout(timer);\n });\n this.exitTimers.clear();\n this.leavingDepth.clear();\n }\n\n private cancelAutoCollapse(): void {\n if (this.collapseTimer !== undefined) {\n clearTimeout(this.collapseTimer);\n this.collapseTimer = undefined;\n }\n }\n\n private scheduleAutoCollapse(): void {\n this.cancelAutoCollapse();\n this.collapseTimer = setTimeout((): void => {\n this.expanded.set(false);\n this.collapseTimer = undefined;\n }, AUTO_COLLAPSE_MS);\n }\n\n protected open(): void {\n if (!this.isCollapsible()) {\n return;\n }\n this.expanded.set(true);\n this.scheduleAutoCollapse();\n }\n\n protected onHoverIntent(): void {\n if (!this.supportsHover()) {\n return;\n }\n this.open();\n }\n\n protected onHoverMove(): void {\n if (this.expanded()) {\n return;\n }\n this.onHoverIntent();\n }\n\n protected onHoverLeave(): void {\n if (!this.supportsHover() || !this.isCollapsible()) {\n return;\n }\n this.cancelAutoCollapse();\n this.expanded.set(false);\n }\n\n protected toggleExpanded(): void {\n if (!this.isCollapsible()) {\n return;\n }\n if (this.expanded()) {\n this.cancelAutoCollapse();\n this.expanded.set(false);\n } else {\n this.open();\n }\n }\n\n add(item: MonkeyDownloadStackItem): void {\n this.clearExit(item.id);\n this.items.update((list: MonkeyDownloadStackItem[]): MonkeyDownloadStackItem[] => {\n return [...list.filter((i: MonkeyDownloadStackItem): boolean => i.id !== item.id), item];\n });\n this.rendered.update((list: MonkeyDownloadStackItem[]): MonkeyDownloadStackItem[] => {\n return [...list.filter((i: MonkeyDownloadStackItem): boolean => i.id !== item.id), item];\n });\n if (this.count() > 1 && this.expanded()) {\n this.cancelAutoCollapse();\n this.expanded.set(false);\n }\n }\n\n update(id: string, changes: MonkeyDownloadStackItemUpdate): void {\n this.items.update((list: MonkeyDownloadStackItem[]): MonkeyDownloadStackItem[] => {\n return list.map((i: MonkeyDownloadStackItem): MonkeyDownloadStackItem => {\n return i.id === id ? { ...i, ...changes } : i;\n });\n });\n }\n\n remove(id: string): void {\n const alive = this.items();\n const index = alive.findIndex((i: MonkeyDownloadStackItem): boolean => i.id === id);\n\n if (index === -1) {\n return;\n }\n\n const current = alive[index];\n\n this.leavingDepth.set(id, alive.length - 1 - index);\n this.items.update((list: MonkeyDownloadStackItem[]): MonkeyDownloadStackItem[] => {\n return list.filter((i: MonkeyDownloadStackItem): boolean => {\n return i.id !== id;\n });\n });\n this.rendered.update((list: MonkeyDownloadStackItem[]): MonkeyDownloadStackItem[] => {\n return list.map((i: MonkeyDownloadStackItem): MonkeyDownloadStackItem => {\n return i.id === id ? current : i;\n });\n });\n\n this.exitTimers.set(\n id,\n setTimeout((): void => {\n this.unmount(id);\n }, DOWNLOAD_TOAST_EXIT_MS)\n );\n\n if (this.count() <= 1 && this.expanded()) {\n this.cancelAutoCollapse();\n this.expanded.set(false);\n }\n }\n\n private unmount(id: string): void {\n this.rendered.update((list: MonkeyDownloadStackItem[]): MonkeyDownloadStackItem[] => {\n return list.filter((i: MonkeyDownloadStackItem): boolean => {\n return i.id !== id;\n });\n });\n this.leavingDepth.delete(id);\n this.exitTimers.delete(id);\n }\n\n private clearExit(id: string): void {\n const timer = this.exitTimers.get(id);\n\n if (timer !== undefined) {\n clearTimeout(timer);\n this.exitTimers.delete(id);\n }\n this.leavingDepth.delete(id);\n }\n\n protected getProgress(item: MonkeyDownloadStackItem): number {\n return unwrapSignal(item.progress);\n }\n\n protected handleCancel(item: MonkeyDownloadStackItem): void {\n item.onCancel?.();\n this.remove(item.id);\n }\n\n protected handleDownload(item: MonkeyDownloadStackItem): void {\n item.onDownload?.();\n }\n\n protected handleClose(id: string): void {\n const item = this.items().find((i: MonkeyDownloadStackItem): boolean => {\n return i.id === id;\n });\n\n if (!item) {\n this.remove(id);\n return;\n }\n\n this.handleCancel(item);\n }\n}\n","<div\n class=\"monkey-download-toast-stack\"\n [attr.data-position]=\"position()\"\n [class.monkey-download-toast-stack--top]=\"position().startsWith('top')\"\n [class.monkey-download-toast-stack--collapsed]=\"isCollapsed()\"\n [style]=\"stackStyle()\"\n>\n <div class=\"monkey-download-toast-stack__header-wrap\" [class.has-items]=\"showCounter()\">\n @if (showCounter()) {\n <button\n type=\"button\"\n class=\"monkey-download-toast-stack__header monkey-download-toast-stack__header--toggle\"\n [attr.aria-expanded]=\"isCollapsed() ? 'false' : 'true'\"\n [attr.aria-controls]=\"listId\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n (mouseenter)=\"onHoverIntent()\"\n (focusin)=\"open()\"\n (click)=\"toggleExpanded()\"\n >\n {{ headerLabel() }}\n </button>\n }\n </div>\n <div\n class=\"monkey-download-toast-stack__list\"\n [class.has-items]=\"hasItems()\"\n [attr.id]=\"listId\"\n (mouseenter)=\"onHoverIntent()\"\n (mousemove)=\"onHoverMove()\"\n (mouseleave)=\"onHoverLeave()\"\n >\n @if (isCollapsed()) {\n <button\n type=\"button\"\n class=\"monkey-download-toast-stack__expand\"\n aria-expanded=\"false\"\n [attr.aria-controls]=\"listId\"\n [attr.aria-label]=\"expandLabel()\"\n (mouseenter)=\"onHoverIntent()\"\n (focusin)=\"open()\"\n (click)=\"toggleExpanded()\"\n ></button>\n }\n @for (row of rows(); track row.item.id) {\n <div\n class=\"monkey-download-toast-stack__item\"\n [class.monkey-download-toast-stack__item--behind]=\"\n !row.leaving && row.depth > 0 && isCollapsed()\n \"\n [class.monkey-download-toast-stack__item--hidden]=\"row.depth >= maxVisible\"\n [class.monkey-download-toast-stack__item--leaving]=\"row.leaving\"\n [attr.data-depth]=\"row.depth\"\n [attr.inert]=\"row.leaving || (row.depth > 0 && isCollapsed()) ? '' : null\"\n [attr.aria-hidden]=\"row.leaving || (row.depth > 0 && isCollapsed()) ? 'true' : null\"\n >\n <monkey-download-toast\n #cardEl\n [id]=\"row.item.id\"\n [message]=\"row.item.message\"\n [progress]=\"getProgress(row.item)\"\n (onCancel)=\"handleCancel(row.item)\"\n (onDownload)=\"handleDownload(row.item)\"\n (onClose)=\"handleClose($event)\"\n ></monkey-download-toast>\n </div>\n }\n </div>\n</div>\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport {\r\n ComponentRef,\r\n DestroyRef,\r\n effect,\r\n inject,\r\n Injectable,\r\n Injector,\r\n isSignal,\r\n Signal\r\n} from '@angular/core';\r\nimport { getRandomString } from '../../utils';\r\nimport {\r\n type MonkeyDownloadStackItemUpdate,\r\n MonkeyDownloadToastStackComponent\r\n} from '../components/download-toast/download-toast-stack.component';\r\nimport { DOWNLOAD_TOAST_EXIT_MS } from '../components/download-toast/download-toast.constants';\r\nimport { type MonkeyDownloadToastConfig, type MonkeyToastPosition } from '../interfaces';\r\nimport { createToastOverlay, MOBILE_TOAST_MEDIA_QUERY } from './toast-overlay';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MonkeyDownloadToastService {\r\n private overlay = inject(Overlay);\r\n\r\n private injector = inject(Injector);\r\n\r\n private downloadStacks = new Map<\r\n string,\r\n { overlayRef: OverlayRef; componentRef: ComponentRef<MonkeyDownloadToastStackComponent> }\r\n >();\r\n\r\n private effectHolders = new Map<string, { cleanup?: () => void }>();\r\n\r\n private handleStates = new Map<string, { disposed: boolean }>();\r\n\r\n private disposeTimers = new Map<string, ReturnType<typeof setTimeout>>();\r\n\r\n private closeTimers = new Map<string, ReturnType<typeof setTimeout>>();\r\n\r\n constructor() {\r\n const destroyRef = inject(DestroyRef);\r\n\r\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\r\n destroyRef.onDestroy((): void => {\r\n this.teardown();\r\n });\r\n return;\r\n }\r\n\r\n const mediaList = window.matchMedia(MOBILE_TOAST_MEDIA_QUERY);\r\n const repositionStacks = (): void => {\r\n this.downloadStacks.forEach((stack): void => {\r\n stack.overlayRef.updatePosition();\r\n });\r\n };\r\n mediaList.addEventListener('change', repositionStacks);\r\n destroyRef.onDestroy((): void => {\r\n mediaList.removeEventListener('change', repositionStacks);\r\n this.teardown();\r\n });\r\n }\r\n\r\n private teardown(): void {\r\n this.disposeTimers.forEach((timer): void => {\r\n clearTimeout(timer);\r\n });\r\n this.disposeTimers.clear();\r\n\r\n this.closeTimers.forEach((timer): void => {\r\n clearTimeout(timer);\r\n });\r\n this.closeTimers.clear();\r\n\r\n this.effectHolders.forEach((holder): void => {\r\n this.releaseEffect(holder);\r\n });\r\n this.effectHolders.clear();\r\n\r\n this.handleStates.forEach((state): void => {\r\n state.disposed = true;\r\n });\r\n this.handleStates.clear();\r\n\r\n this.downloadStacks.forEach((stack): void => {\r\n if (stack.overlayRef.hasAttached()) {\r\n stack.overlayRef.detach();\r\n }\r\n stack.overlayRef.dispose();\r\n });\r\n this.downloadStacks.clear();\r\n }\r\n\r\n private getStackKey(position?: MonkeyToastPosition): string {\r\n return position ?? 'bottom-right';\r\n }\r\n\r\n private cancelPendingDispose(key: string): void {\r\n const timer = this.disposeTimers.get(key);\r\n\r\n if (timer !== undefined) {\r\n clearTimeout(timer);\r\n this.disposeTimers.delete(key);\r\n }\r\n }\r\n\r\n private scheduleDispose(key: string, stackInstance: MonkeyDownloadToastStackComponent): void {\r\n this.cancelPendingDispose(key);\r\n this.disposeTimers.set(\r\n key,\r\n setTimeout((): void => {\r\n this.disposeTimers.delete(key);\r\n\r\n if (stackInstance.items().length !== 0) {\r\n return;\r\n }\r\n\r\n const stack = this.downloadStacks.get(key);\r\n\r\n if (!stack) {\r\n return;\r\n }\r\n\r\n if (stack.overlayRef.hasAttached()) {\r\n stack.overlayRef.detach();\r\n }\r\n stack.overlayRef.dispose();\r\n this.downloadStacks.delete(key);\r\n }, DOWNLOAD_TOAST_EXIT_MS)\r\n );\r\n }\r\n\r\n private getOrCreateDownloadStack(position?: MonkeyToastPosition): {\r\n overlayRef: OverlayRef;\r\n componentRef: ComponentRef<MonkeyDownloadToastStackComponent>;\r\n } {\r\n const key = this.getStackKey(position);\r\n const existing = this.downloadStacks.get(key);\r\n\r\n if (existing) {\r\n this.cancelPendingDispose(key);\r\n return existing;\r\n }\r\n\r\n this.cancelPendingDispose(key);\r\n\r\n const overlayRef = createToastOverlay(this.overlay, position);\r\n const portal = new ComponentPortal(MonkeyDownloadToastStackComponent);\r\n const componentRef = overlayRef.attach(portal);\r\n componentRef.setInput('position', key);\r\n this.downloadStacks.set(key, { overlayRef, componentRef });\r\n\r\n return { overlayRef, componentRef };\r\n }\r\n\r\n private buildDownloadItem(\r\n id: string,\r\n config: MonkeyDownloadToastConfig,\r\n wrapperOnCancel: () => void\r\n ): {\r\n id: string;\r\n message: string;\r\n progress: number | Signal<number>;\r\n onCancel: () => void;\r\n onDownload?: () => void;\r\n } {\r\n return {\r\n id,\r\n message: config.message ?? '',\r\n progress: config.progress ?? 0,\r\n onCancel: wrapperOnCancel,\r\n onDownload: config.onDownload\r\n };\r\n }\r\n\r\n private releaseEffect(holder: { cleanup?: () => void }): void {\r\n if (holder.cleanup) {\r\n holder.cleanup();\r\n holder.cleanup = undefined;\r\n }\r\n }\r\n\r\n private tryDisposeEmptyStack(\r\n position: MonkeyToastPosition | undefined,\r\n stackInstance: MonkeyDownloadToastStackComponent\r\n ): void {\r\n if (stackInstance.items().length !== 0) {\r\n return;\r\n }\r\n this.scheduleDispose(this.getStackKey(position), stackInstance);\r\n }\r\n\r\n private buildDoRemove(\r\n stackInstance: MonkeyDownloadToastStackComponent,\r\n id: string,\r\n position: MonkeyToastPosition | undefined,\r\n holder: { cleanup?: () => void }\r\n ): () => void {\r\n return (): void => {\r\n stackInstance.remove(id);\r\n this.releaseEffect(holder);\r\n this.tryDisposeEmptyStack(position, stackInstance);\r\n };\r\n }\r\n\r\n private shouldAutoCloseOnComplete(config: MonkeyDownloadToastConfig): boolean {\r\n return !config.keepOpen;\r\n }\r\n\r\n private cancelPendingClose(id: string): void {\r\n const timer = this.closeTimers.get(id);\r\n\r\n if (timer !== undefined) {\r\n clearTimeout(timer);\r\n this.closeTimers.delete(id);\r\n }\r\n }\r\n\r\n private scheduleClose(id: string, callback: () => void, duration?: number): void {\r\n this.cancelPendingClose(id);\r\n this.closeTimers.set(\r\n id,\r\n setTimeout(() => {\r\n this.closeTimers.delete(id);\r\n callback();\r\n }, duration ?? 4000)\r\n );\r\n }\r\n\r\n private setupSignalAutoClose(\r\n id: string,\r\n config: MonkeyDownloadToastConfig,\r\n close: () => void\r\n ): (() => void) | undefined {\r\n if (!isSignal(config.progress)) {\r\n return undefined;\r\n }\r\n\r\n const signalProgress = config.progress as Signal<number>;\r\n const effectRef = effect(\r\n () => {\r\n const value = signalProgress();\r\n const isComplete = value >= 100;\r\n if (isComplete && this.shouldAutoCloseOnComplete(config)) {\r\n this.scheduleClose(id, close, config.duration);\r\n }\r\n },\r\n { injector: this.injector }\r\n );\r\n\r\n return (): void => {\r\n effectRef.destroy();\r\n this.cancelPendingClose(id);\r\n };\r\n }\r\n\r\n private scheduleNumberAutoClose(\r\n id: string,\r\n config: MonkeyDownloadToastConfig,\r\n close: () => void\r\n ): void {\r\n const isNumberProgress = typeof config.progress === 'number';\r\n const isComplete = (config.progress as number) >= 100;\r\n\r\n if (isNumberProgress && isComplete && this.shouldAutoCloseOnComplete(config)) {\r\n this.scheduleClose(id, close, config.duration);\r\n }\r\n }\r\n\r\n private getEffectHolder(id: string): { cleanup?: () => void } {\r\n let holder = this.effectHolders.get(id);\r\n if (!holder) {\r\n holder = {};\r\n this.effectHolders.set(id, holder);\r\n }\r\n return holder;\r\n }\r\n\r\n private getHandleState(id: string): { disposed: boolean } {\r\n let state = this.handleStates.get(id);\r\n\r\n if (!state) {\r\n state = { disposed: false };\r\n this.handleStates.set(id, state);\r\n }\r\n\r\n return state;\r\n }\r\n\r\n private invalidateHandleStates(id: string): void {\r\n this.cancelPendingClose(id);\r\n\r\n const state = this.handleStates.get(id);\r\n if (state) {\r\n state.disposed = true;\r\n this.handleStates.delete(id);\r\n }\r\n }\r\n\r\n private findStackWithId(id: string):\r\n | {\r\n stackKey: string;\r\n stackInstance: MonkeyDownloadToastStackComponent;\r\n }\r\n | undefined {\r\n for (const [stackKey, stack] of this.downloadStacks) {\r\n const stackInstance = stack.componentRef.instance;\r\n const found = stackInstance.items().find((item) => item.id === id);\r\n if (found) {\r\n return { stackKey, stackInstance };\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n private disposeStackIfEmpty(\r\n stackKey: string,\r\n stackInstance: MonkeyDownloadToastStackComponent\r\n ): void {\r\n if (stackInstance.items().length !== 0) {\r\n return;\r\n }\r\n this.scheduleDispose(stackKey, stackInstance);\r\n }\r\n\r\n private removeById(id: string): void {\r\n const found = this.findStackWithId(id);\r\n if (!found) {\r\n return;\r\n }\r\n const holder = this.effectHolders.get(id);\r\n if (holder) {\r\n this.releaseEffect(holder);\r\n this.effectHolders.delete(id);\r\n }\r\n found.stackInstance.remove(id);\r\n this.invalidateHandleStates(id);\r\n this.disposeStackIfEmpty(found.stackKey, found.stackInstance);\r\n }\r\n\r\n show(config: MonkeyDownloadToastConfig) {\r\n const { componentRef } = this.getOrCreateDownloadStack(config.position);\r\n const stackInstance = componentRef.instance;\r\n const existing = config.id\r\n ? stackInstance.items().find((item) => item.id === config.id)\r\n : undefined;\r\n\r\n const id = existing ? existing.id : (config.id ?? getRandomString(6));\r\n const effectHolder = this.getEffectHolder(id);\r\n this.releaseEffect(effectHolder);\r\n const doRemove = this.buildDoRemove(stackInstance, id, config.position, effectHolder);\r\n\r\n const state = this.getHandleState(id);\r\n\r\n const wrapperOnCancel = (): void => {\r\n doRemove();\r\n this.effectHolders.delete(id);\r\n this.invalidateHandleStates(id);\r\n config.onCancel?.();\r\n };\r\n\r\n const removeAndCleanup = (): void => {\r\n if (state.disposed) {\r\n return;\r\n }\r\n doRemove();\r\n this.effectHolders.delete(id);\r\n this.invalidateHandleStates(id);\r\n };\r\n\r\n if (existing) {\r\n stackInstance.update(existing.id, {\r\n message: config.message ?? existing.message,\r\n progress: config.progress ?? existing.progress\r\n });\r\n const current = stackInstance.items().find((item) => item.id === existing.id);\r\n if (current) {\r\n current.onCancel = wrapperOnCancel;\r\n }\r\n } else {\r\n const item = this.buildDownloadItem(id, config, wrapperOnCancel);\r\n stackInstance.add(item);\r\n }\r\n\r\n effectHolder.cleanup = this.setupSignalAutoClose(id, config, removeAndCleanup);\r\n this.scheduleNumberAutoClose(id, config, removeAndCleanup);\r\n\r\n return {\r\n id,\r\n close: (): void => {\r\n this.close(id);\r\n },\r\n update: (partial: MonkeyDownloadStackItemUpdate): void => {\r\n if (state.disposed) {\r\n return;\r\n }\r\n const live = this.findStackWithId(id);\r\n if (!live) {\r\n return;\r\n }\r\n live.stackInstance.update(id, partial);\r\n }\r\n };\r\n }\r\n\r\n close(id: string): void {\r\n this.removeById(id);\r\n }\r\n\r\n update(id: string, partial: MonkeyDownloadStackItemUpdate): void {\r\n const found = this.findStackWithId(id);\r\n if (!found) {\r\n return;\r\n }\r\n found.stackInstance.update(id, partial);\r\n }\r\n\r\n closeAll(): void {\r\n const ids: string[] = [];\r\n this.downloadStacks.forEach((stack): void => {\r\n stack.componentRef.instance.items().forEach((item): void => {\r\n ids.push(item.id);\r\n });\r\n });\r\n ids.forEach((id): void => {\r\n this.removeById(id);\r\n });\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { computed, Injectable, signal } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MonkeyStepperService {\r\n private _steppers = signal<Map<string, string>>(new Map());\r\n\r\n currentStep(id: string) {\r\n return computed(() => {\r\n return this._steppers().get(id);\r\n });\r\n }\r\n\r\n setCurrentStep(id: string, step: string): void {\r\n this._steppers.update((items) => {\r\n return new Map(items).set(id, step);\r\n });\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n inject,\r\n Input,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { UtilIconComponent } from '../../../utils';\r\nimport { IdGenerator } from '../../../utils/id-generator';\r\nimport { MonkeyButtonColor, MonkeyButtonType } from '../../interfaces/button';\r\nimport { MonkeySize } from '../../interfaces/sizes';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [UtilIconComponent],\r\n selector: 'monkey-button',\r\n standalone: true,\r\n styleUrl: './button.component.scss',\r\n templateUrl: './button.component.html',\r\n host: {\r\n 'data-testid': 'monkey-button',\r\n '[attr.id]': 'id',\r\n '[id]': 'id',\r\n '[attr.tabindex]': 'null'\r\n }\r\n})\r\nexport class MonkeyButtonComponent {\r\n @Input() disabled!: boolean;\r\n\r\n @Input() color: MonkeyButtonColor = 'default';\r\n\r\n @Input() size: MonkeySize = 'md';\r\n\r\n @Input() type: MonkeyButtonType = 'primary';\r\n\r\n @Input() loading!: boolean;\r\n\r\n @Input() nativeType: 'button' | 'submit' | 'reset' = 'submit';\r\n\r\n @Input() ariaLabel: string | null = null;\r\n\r\n @Input() ariaExpanded: boolean | null = null;\r\n\r\n @Input() ariaHasPopup: string | null = null;\r\n\r\n private readonly elementRef = inject(ElementRef);\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-button-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: MouseEvent): void {\r\n if (this.disabled) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n }\r\n }\r\n\r\n get element(): HTMLElement {\r\n return this.elementRef.nativeElement;\r\n }\r\n}\r\n","<button\r\n class=\"mecx-button {{ type }} {{ size }} {{ color }}\"\r\n [attr.type]=\"nativeType\"\r\n [disabled]=\"disabled || loading\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-expanded]=\"ariaExpanded\"\r\n [attr.aria-haspopup]=\"ariaHasPopup\"\r\n>\r\n <div class=\"content\">\r\n @if (!loading) {\r\n <ng-content select=\"[first]\"></ng-content>\r\n }\r\n <span><ng-content></ng-content></span>\r\n @if (!loading) {\r\n <ng-content select=\"[last]\"></ng-content>\r\n }\r\n @if (loading) {\r\n <util-icon class=\"mecx-button-loading\" name=\"loading\" />\r\n }\r\n </div>\r\n</button>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './button.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n booleanAttribute,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n inject,\r\n Input,\r\n Output,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { UtilIconComponent } from '../../../utils';\r\nimport { type MonkeyToastType } from '../../interfaces';\r\nimport { MonkeyButtonComponent } from '../button';\r\n\r\n@Component({\r\n selector: 'monkey-toast',\r\n imports: [MonkeyButtonComponent, UtilIconComponent],\r\n templateUrl: './toast.component.html',\r\n styleUrl: './toast.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n 'data-testid': 'monkey-toast',\r\n '(animationend)': 'onAnimationEnd($event)',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyToastComponent {\r\n @Input() message: string | undefined;\r\n\r\n @Input() icon: string | undefined = 'close-circle';\r\n\r\n @Input() type: MonkeyToastType = 'default';\r\n\r\n @Input({ transform: booleanAttribute }) isClosable: boolean = false;\r\n\r\n @Input() actionLabel: string | undefined;\r\n\r\n @Input() actionIcon: string | undefined;\r\n\r\n @Output() onActionClick = new EventEmitter<string>();\r\n\r\n @Output() onClose = new EventEmitter<string>();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-toast-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n @HostBinding('class')\r\n public get class(): string {\r\n return this.type;\r\n }\r\n\r\n constructor(private host: ElementRef<HTMLElement>) {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n close() {\r\n this.host.nativeElement.classList.add('closed');\r\n }\r\n\r\n onAnimationEnd(event: AnimationEvent) {\r\n if (event.animationName.includes('fade-out')) {\r\n this.onClose.emit(this.id);\r\n }\r\n }\r\n}\r\n","<div class=\"monkey-toast-content\">\r\n @if (icon) {\r\n <i class=\"mk-i mk-i-{{icon}} lg\"></i>\r\n }\r\n <div>\r\n <div class=\"monkey-toast-message\">\r\n {{ message }}\r\n </div>\r\n @if (actionLabel) {\r\n <div class=\"monkey-toast-action\">\r\n <monkey-button\r\n class=\"monkey-toast-btn-action\"\r\n type=\"tertiary\"\r\n size=\"sm\"\r\n (click)=\"onActionClick.emit(id)\"\r\n >\r\n {{ actionLabel }}\r\n @if (actionIcon) {\r\n <i class=\"mk-i mk-i-{{actionIcon}} xs\" first></i>\r\n }\r\n </monkey-button>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n@if (isClosable) {\r\n <div class=\"monkey-toast-actions\">\r\n <div class=\"monkey-toast-divider\" aria-hidden=\"true\"></div>\r\n <div class=\"monkey-toast-close\" (click)=\"close()\">\r\n <util-icon name=\"clear\" />\r\n </div>\r\n </div>\r\n}\r\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, DestroyRef, inject, Injectable } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { getRandomString } from '../../utils';\nimport { MonkeyToastComponent } from '../components/toast/toast.component';\nimport { type MonkeyToastConfig } from '../interfaces';\nimport { createToastOverlay } from './toast-overlay';\n\nconst TOAST_EXIT_MS = 300;\n\ninterface ActiveToast {\n overlayRef: OverlayRef;\n componentRef: ComponentRef<MonkeyToastComponent>;\n subscriptions: Subscription[];\n autoCloseTimer?: ReturnType<typeof setTimeout>;\n releaseTimer?: ReturnType<typeof setTimeout>;\n released: boolean;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MonkeyToastService {\n private overlay = inject(Overlay);\n\n private current?: ActiveToast;\n\n private activeToasts = new Set<ActiveToast>();\n\n constructor() {\n inject(DestroyRef).onDestroy((): void => {\n this.teardown();\n });\n }\n\n private teardown(): void {\n new Set(this.activeToasts).forEach((entry: ActiveToast): void => {\n this.release(entry);\n });\n this.activeToasts.clear();\n this.current = undefined;\n }\n\n private release(entry: ActiveToast): void {\n if (entry.released) {\n return;\n }\n entry.released = true;\n\n if (entry.autoCloseTimer !== undefined) {\n clearTimeout(entry.autoCloseTimer);\n entry.autoCloseTimer = undefined;\n }\n\n if (entry.releaseTimer !== undefined) {\n clearTimeout(entry.releaseTimer);\n entry.releaseTimer = undefined;\n }\n\n entry.subscriptions.forEach((subscription: Subscription): void => {\n subscription.unsubscribe();\n });\n entry.subscriptions.length = 0;\n\n if (entry.overlayRef.hasAttached()) {\n entry.overlayRef.detach();\n }\n entry.overlayRef.dispose();\n\n this.activeToasts.delete(entry);\n\n if (this.current === entry) {\n this.current = undefined;\n }\n }\n\n private requestClose(entry: ActiveToast): void {\n if (entry.released) {\n return;\n }\n\n entry.componentRef.instance.close();\n\n if (entry.releaseTimer !== undefined) {\n return;\n }\n\n entry.releaseTimer = setTimeout((): void => {\n entry.releaseTimer = undefined;\n this.release(entry);\n }, TOAST_EXIT_MS);\n }\n\n private closePreviousToastIfNeeded(): void {\n if (this.current) {\n this.requestClose(this.current);\n }\n }\n\n private configureToastInstance(\n componentRef: ComponentRef<MonkeyToastComponent>,\n toastConfig: MonkeyToastConfig\n ): void {\n componentRef.instance.id = getRandomString(6);\n componentRef.instance.type = toastConfig.type ?? 'default';\n componentRef.instance.icon = toastConfig.icon;\n componentRef.instance.isClosable = toastConfig.isClosable ?? false;\n componentRef.instance.message = toastConfig.message;\n componentRef.instance.actionLabel = toastConfig.actionLabel;\n componentRef.instance.actionIcon = toastConfig.actionIcon;\n }\n\n private bindToastAction(entry: ActiveToast, toastConfig: MonkeyToastConfig): void {\n entry.subscriptions.push(\n entry.componentRef.instance.onActionClick.subscribe((): void => {\n if (!toastConfig.action) {\n return;\n }\n toastConfig.action();\n this.closeToastIfNeeded(entry, toastConfig);\n })\n );\n }\n\n private closeToastIfNeeded(entry: ActiveToast, toastConfig: MonkeyToastConfig): void {\n const shouldClose = toastConfig.closeOnAction ?? true;\n if (shouldClose) {\n this.requestClose(entry);\n }\n }\n\n private bindToastRelease(entry: ActiveToast): void {\n entry.subscriptions.push(\n entry.componentRef.instance.onClose.subscribe((): void => {\n this.release(entry);\n })\n );\n }\n\n private scheduleToastAutoClose(entry: ActiveToast, toastConfig: MonkeyToastConfig): void {\n if (toastConfig.keepOpen) {\n return;\n }\n entry.autoCloseTimer = setTimeout((): void => {\n entry.autoCloseTimer = undefined;\n this.requestClose(entry);\n }, toastConfig.duration ?? 4000);\n }\n\n show(toastConfig: MonkeyToastConfig) {\n this.closePreviousToastIfNeeded();\n\n const overlayRef = createToastOverlay(this.overlay, toastConfig.position);\n const portal = new ComponentPortal(MonkeyToastComponent);\n const componentRef = overlayRef.attach(portal);\n const entry: ActiveToast = {\n overlayRef,\n componentRef,\n subscriptions: [],\n released: false\n };\n\n this.activeToasts.add(entry);\n this.current = entry;\n\n this.configureToastInstance(componentRef, toastConfig);\n this.bindToastAction(entry, toastConfig);\n this.bindToastRelease(entry);\n this.scheduleToastAutoClose(entry, toastConfig);\n\n return componentRef.instance;\n }\n}\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './address.service';\r\nexport * from './dictionary.service';\r\nexport * from './download-toast.service';\r\nexport * from './stepper.service';\r\nexport * from './toast.service';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive } from '@angular/core';\r\nimport { AbstractControlDirective, NgControl } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Directive()\r\nexport abstract class MonkeyFormFieldControl {\r\n readonly id!: string;\r\n\r\n readonly ngControl!: NgControl | AbstractControlDirective | null;\r\n\r\n readonly disabled!: boolean;\r\n\r\n readonly focused!: boolean;\r\n\r\n readonly stateChanges!: Observable<void>;\r\n\r\n readonly type?: string;\r\n\r\n readonly currency?: boolean;\r\n\r\n readonly percent?: boolean;\r\n\r\n abstract onContainerClick(event: MouseEvent): void;\r\n\r\n abstract onClear?(): void;\r\n\r\n loading?: boolean;\r\n\r\n disableToBeDirty?: boolean;\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { computed, Directive, effect, ElementRef, inject, input } from '@angular/core';\r\nimport { firstValueFrom } from 'rxjs';\r\nimport { MonkeyDictionaryService } from '../services/dictionary.service';\r\n\r\n@Directive({\r\n selector: 'monkey-display'\r\n})\r\nexport class MonkeyDisplayDirective {\r\n private fallbackText = 'Not provided';\r\n\r\n readonly i18nDictionary = inject(MonkeyDictionaryService).get('NOT-PROVIDED');\r\n\r\n displayValue = input.required<string>();\r\n\r\n private displayedText = computed(() => {\r\n const value = this.displayValue();\r\n\r\n if (value === null || value === undefined || value === '') {\r\n return this.fallbackText;\r\n }\r\n\r\n return String(value);\r\n });\r\n\r\n constructor(private el: ElementRef<HTMLElement>) {\r\n effect(async () => {\r\n this.el.nativeElement.innerHTML = this.displayedText();\r\n this.fallbackText = await firstValueFrom(this.i18nDictionary);\r\n });\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'monkey-error'\r\n})\r\nexport class MonkeyErrorDirective {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'monkey-helper'\r\n})\r\nexport class MonkeyHelperDirective {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'monkey-info'\r\n})\r\nexport class MonkeyInfoDirective {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'monkey-label'\r\n})\r\nexport class MonkeyLabelDirective {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'monkey-prefix'\r\n})\r\nexport class MonkeyPrefixDirective {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive, HostListener, Input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'monkey-suffix',\r\n host: {\r\n '[class.has-action]': 'hasAction'\r\n }\r\n})\r\nexport class MonkeySuffixDirective {\r\n @Input('hasAction')\r\n set _hasAction(value: '') {\r\n this.hasAction = true;\r\n }\r\n\r\n hasAction = false;\r\n\r\n action: Function | null = null;\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: PointerEvent): void {\r\n if (!this.action) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n } else {\r\n this.action(event);\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport function getCurrencySymbol(code: string) {\r\n const currency = code || 'BRL';\r\n\r\n const symbol = {\r\n BRL: 'R$',\r\n CLP: '$',\r\n MXN: '$',\r\n USD: '$'\r\n }[currency];\r\n\r\n return symbol;\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentChecked,\r\n AfterContentInit,\r\n booleanAttribute,\r\n ChangeDetectorRef,\r\n Component,\r\n computed,\r\n contentChild,\r\n contentChildren,\r\n DEFAULT_CURRENCY_CODE,\r\n DestroyRef,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n Input,\r\n OnDestroy,\r\n output,\r\n signal,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { Subscription } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyDisplayDirective } from '../../directives/display';\r\nimport { MonkeyErrorDirective } from '../../directives/error';\r\nimport { MonkeyHelperDirective } from '../../directives/helper';\r\nimport { MonkeyInfoDirective } from '../../directives/info';\r\nimport { MonkeyLabelDirective } from '../../directives/label';\r\nimport { MonkeyPrefixDirective } from '../../directives/prefix';\r\nimport { MonkeySuffixDirective } from '../../directives/suffix';\r\nimport { MonkeySize } from '../../interfaces';\r\nimport { MonkeyDictionaryService } from '../../services';\r\nimport { MonkeyFormFieldControl } from './form-field-control';\r\nimport { getCurrencySymbol } from './utils';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-form-field',\r\n exportAs: 'monkeyFormField',\r\n templateUrl: './form-field.component.html',\r\n styleUrl: './form-field.component.scss',\r\n host: {\r\n class: 'mecx-form-field',\r\n '[class.mecx-disabled]': 'control.disabled',\r\n '[class.mecx-form-field-focused]': 'control.focused',\r\n '[class.mecx-form-field-invalid]': 'showInvalid',\r\n '[class.mecx-form-field-borderless]': 'hideBorder()',\r\n '[class.no-footer-space]': 'noFooterSpace()',\r\n '[attr.id]': 'id',\r\n '[id]': 'id',\r\n '[class]': 'size'\r\n },\r\n standalone: false\r\n})\r\nexport class MonkeyFormFieldComponent implements AfterContentInit, AfterContentChecked, OnDestroy {\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideAction!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n enableClear!: boolean;\r\n\r\n @Input() size: MonkeySize = 'md';\r\n\r\n readonly noFooterSpace = input(false, { transform: booleanAttribute });\r\n\r\n displayOnly = input<boolean>(false);\r\n\r\n onDisplayOnlyChange = output<boolean>();\r\n\r\n private readonly _formFieldControl = contentChild(MonkeyFormFieldControl, { descendants: true });\r\n\r\n private readonly _displayChild = contentChild(MonkeyDisplayDirective, { descendants: true });\r\n\r\n private readonly _labelChildren = contentChildren(MonkeyLabelDirective, { descendants: true });\r\n\r\n private readonly _helperChildren = contentChildren(MonkeyHelperDirective, { descendants: true });\r\n\r\n private readonly _prefixChildren = contentChildren(MonkeyPrefixDirective, { descendants: true });\r\n\r\n private readonly _suffixChildren = contentChildren(MonkeySuffixDirective, { descendants: true });\r\n\r\n private readonly _infoChildren = contentChildren(MonkeyInfoDirective, { descendants: true });\r\n\r\n private readonly _errorChildren = contentChildren(MonkeyErrorDirective, { descendants: true });\r\n\r\n public elementRef = inject(ElementRef);\r\n\r\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n private readonly _idGenerator = inject(IdGenerator);\r\n\r\n private readonly _labelId = this._idGenerator.getId('monkey-label-');\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-form-field-');\r\n\r\n protected _id!: string;\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private _isFocused: boolean | null = null;\r\n\r\n private _previousControl: MonkeyFormFieldControl | null = null;\r\n\r\n private _stateChanges: Subscription | undefined;\r\n\r\n private _valueChanges: Subscription | undefined;\r\n\r\n readonly currencySymbol = getCurrencySymbol(inject(DEFAULT_CURRENCY_CODE));\r\n\r\n readonly percentSymbol = '%';\r\n\r\n readonly hasLabel = computed(() => this._labelChildren().length > 0);\r\n\r\n readonly hasHelper = computed(() => this._helperChildren().length > 0);\r\n\r\n readonly hasPrefix = computed(() => this._prefixChildren().length > 0);\r\n\r\n readonly hasSuffix = computed(() => this._suffixChildren().length > 0);\r\n\r\n readonly hasInfo = computed(() => this._infoChildren().length > 0);\r\n\r\n readonly hasError = computed(() => this._errorChildren().length > 0);\r\n\r\n readonly showHeader = computed(() => this.hasLabel() || this.hasHelper());\r\n\r\n readonly showFooter = computed(() => {\r\n return !this.noFooterSpace() || this.hasInfo() || this.hasError();\r\n });\r\n\r\n get control(): MonkeyFormFieldControl {\r\n return this._formFieldControl()!;\r\n }\r\n\r\n get labelId(): string {\r\n return this._labelId;\r\n }\r\n\r\n hideBorder = computed(() => {\r\n const { control } = this;\r\n return (\r\n control?.type === 'input-code' ||\r\n control?.type === 'radio-button' ||\r\n this.internalDisplayOnly()\r\n );\r\n });\r\n\r\n get showInvalid(): boolean {\r\n if (this.showLoading) {\r\n return false;\r\n }\r\n const touched = this.control.ngControl?.touched || false;\r\n const invalid = this.control.ngControl?.invalid || false;\r\n return (\r\n this.hasError() && !this._isFocused && touched && invalid && !this.control.disableToBeDirty\r\n );\r\n }\r\n\r\n showClear = computed(() => {\r\n return (\r\n !!this.control.ngControl?.control?.value &&\r\n !this.control.disabled &&\r\n !this.control.loading &&\r\n (!this.hideAction || this.enableClear) &&\r\n !this.displayOnly()\r\n );\r\n });\r\n\r\n get showCalendar(): boolean {\r\n return this.control.type === 'date' && !this.hideAction;\r\n }\r\n\r\n get showCurrency(): boolean {\r\n return this.control.currency || false;\r\n }\r\n\r\n get showPercent(): boolean {\r\n return this.control.percent || false;\r\n }\r\n\r\n get showLoading(): boolean {\r\n return this.control.loading || false;\r\n }\r\n\r\n internalDisplayOnly = signal<boolean>(this.displayOnly());\r\n\r\n readonly editDictionary = inject(MonkeyDictionaryService).get('EDIT');\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n\r\n effect(() => {\r\n const value = this.displayOnly();\r\n this.internalDisplayOnly.set(value);\r\n });\r\n\r\n effect(() => {\r\n const suffix = this._suffixChildren()[0];\r\n if (!suffix) {\r\n return;\r\n }\r\n\r\n suffix.action = (event: Event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n };\r\n });\r\n }\r\n\r\n private updateFocusState() {\r\n if (this.control.focused && !this._isFocused) {\r\n this._isFocused = true;\r\n } else if (!this.control.focused && (this._isFocused || this._isFocused === null)) {\r\n this._isFocused = false;\r\n }\r\n }\r\n\r\n private handleFormFieldControl() {\r\n if (!this.control) {\r\n throw Error('monkey-form-field must have a MonkeyFormFieldControl');\r\n }\r\n }\r\n\r\n private initializeControl() {\r\n const { control } = this;\r\n\r\n this._stateChanges?.unsubscribe();\r\n this._stateChanges = control.stateChanges.subscribe(() => {\r\n this.updateFocusState();\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n\r\n this._valueChanges?.unsubscribe();\r\n\r\n if (control.ngControl && control.ngControl.valueChanges) {\r\n this._valueChanges = control.ngControl.valueChanges\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(() => {\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n private openDatePicker() {\r\n const input: any = document.getElementById(this.control.id);\r\n if (input.showPicker) {\r\n input.showPicker();\r\n } else {\r\n input.focus();\r\n }\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.handleFormFieldControl();\r\n\r\n if (this.displayOnly() && !this._displayChild()) {\r\n throw new Error(\r\n 'monkey-form-field: When `displayOnly` is true, a <monkey-display> element is required inside.'\r\n );\r\n }\r\n }\r\n\r\n ngAfterContentChecked() {\r\n this.handleFormFieldControl();\r\n\r\n if (this.control !== this._previousControl) {\r\n this.initializeControl();\r\n this._previousControl = this.control;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this._stateChanges?.unsubscribe();\r\n this._valueChanges?.unsubscribe();\r\n }\r\n\r\n getFooterMessages(): 'info' | 'error' | '' {\r\n const touched = this.control.ngControl?.touched;\r\n const invalid = this.control.ngControl?.invalid;\r\n const isFocused = this._isFocused;\r\n const hasInfoChildren = this._infoChildren().length > 0;\r\n\r\n const isControlEnabled = !this.control.disabled;\r\n const isControlDisableToBeDirty = !this.control.disableToBeDirty;\r\n const isTouched = touched;\r\n const isInvalid = invalid;\r\n const isNotFocused = !isFocused;\r\n\r\n if (\r\n !this.showLoading &&\r\n isControlEnabled &&\r\n isTouched &&\r\n isInvalid &&\r\n isNotFocused &&\r\n isControlDisableToBeDirty\r\n ) {\r\n return 'error';\r\n }\r\n\r\n if (hasInfoChildren) {\r\n return 'info';\r\n }\r\n\r\n return '';\r\n }\r\n\r\n getSymbols(): string {\r\n if (this.showCurrency && this.currencySymbol) {\r\n return this.currencySymbol;\r\n }\r\n if (this.showPercent && this.percentSymbol) {\r\n return this.percentSymbol;\r\n }\r\n\r\n return '';\r\n }\r\n\r\n onClear(event: MouseEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.control.ngControl?.control?.setValue('');\r\n this.control.ngControl?.control?.markAsTouched();\r\n this.control?.onClear?.();\r\n }\r\n\r\n onOpenCalendar(event: MouseEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (this.control.type === 'date') {\r\n this.openDatePicker();\r\n }\r\n }\r\n\r\n onCancelDisplayOnly(event: MouseEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.internalDisplayOnly.set(false);\r\n this.onDisplayOnlyChange.emit(false);\r\n setTimeout(() => {\r\n this.control.onContainerClick(event);\r\n }, 0);\r\n }\r\n}\r\n","@if (internalDisplayOnly()) {\r\n <div class=\"mecx-form-field-display-only\" (click)=\"onCancelDisplayOnly($event)\">\r\n <div class=\"mecx-form-field-display-only-header\">\r\n <ng-container *ngTemplateOutlet=\"labelTpl\"></ng-container>\r\n </div>\r\n <div class=\"mecx-form-field-display-only-body\">\r\n <ng-content select=\"monkey-display\"></ng-content>\r\n </div>\r\n <div class=\"mecx-form-field-display-only-action\">\r\n {{ editDictionary | async }} <util-icon name=\"edit\" />\r\n </div>\r\n </div>\r\n} @else {\r\n @if (showHeader()) {\r\n <div class=\"mecx-form-field-header\" (click)=\"control.onContainerClick($event)\">\r\n <label [id]=\"labelId\" [attr.for]=\"control.id\">\r\n <ng-container *ngTemplateOutlet=\"labelTpl\"></ng-container>\r\n </label>\r\n <ng-content select=\"monkey-helper\"></ng-content>\r\n </div>\r\n }\r\n\r\n <div class=\"mecx-form-field-body\" (click)=\"control.onContainerClick($event)\">\r\n @if (hasPrefix()) {\r\n <ng-content select=\"monkey-prefix\"></ng-content>\r\n }\r\n @if (getSymbols(); as symbols) {\r\n <div class=\"mecx-form-field-prefix-symbol\">\r\n {{ symbols }}\r\n </div>\r\n }\r\n\r\n <ng-content></ng-content>\r\n\r\n @if (showClear()) {\r\n <util-icon class=\"mecx-clear\" name=\"clear\" (click)=\"onClear($event)\" />\r\n }\r\n @if (showCalendar) {\r\n <util-icon class=\"mecx-calendar\" name=\"calendar\" (click)=\"onOpenCalendar($event)\" />\r\n }\r\n @if (showLoading) {\r\n <util-icon class=\"mecx-form-field-loading\" name=\"loading\" />\r\n }\r\n\r\n @if (hasSuffix()) {\r\n <ng-content select=\"monkey-suffix\"></ng-content>\r\n }\r\n </div>\r\n\r\n @if (showFooter()) {\r\n <div class=\"mecx-form-field-footer\" (click)=\"control.onContainerClick($event)\">\r\n @switch (getFooterMessages()) {\r\n @case ('error') {\r\n <ng-content select=\"monkey-error\"></ng-content>\r\n }\r\n @case ('info') {\r\n <div class=\"mecx-form-field-info\">\r\n <ng-content select=\"monkey-info\"></ng-content>\r\n </div>\r\n }\r\n }\r\n </div>\r\n }\r\n}\r\n\r\n<ng-template #labelTpl>\r\n <ng-content select=\"monkey-label\"></ng-content>\r\n</ng-template>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { UtilIconComponent } from '../../../utils';\r\nimport { MonkeyFormFieldComponent } from './form-field.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule, UtilIconComponent],\r\n declarations: [MonkeyFormFieldComponent],\r\n exports: [MonkeyFormFieldComponent]\r\n})\r\nexport class MonkeyFormFieldModule {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './form-field-control';\r\nexport * from './form-field.component';\r\nexport * from './form-field.module';\r\nexport * from './utils';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n booleanAttribute,\r\n Component,\r\n computed,\r\n effect,\r\n ElementRef,\r\n HostListener,\r\n inject,\r\n Input,\r\n input,\r\n signal,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\nimport { MonkeySize } from '../../interfaces/sizes';\r\n\r\n@Component({\r\n selector: 'monkey-option',\r\n standalone: true,\r\n imports: [UtilIconComponent],\r\n template: `\r\n @if (type === 'checkbox') {\r\n <span class=\"mecx-option-checkbox\">\r\n <util-icon class=\"icon\" name=\"check\" />\r\n </span>\r\n }\r\n <div #content><ng-content /></div>\r\n `,\r\n styleUrls: ['./option.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n 'data-testid': 'monkey-option',\r\n '[attr.id]': 'id',\r\n class: 'mecx-option',\r\n '[class.mecx-option-disabled]': 'disabled',\r\n '[class.mecx-option-selected]': 'isSelected()',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '[class]': 'hostClasses'\r\n }\r\n})\r\nexport class MonkeyOptionComponent {\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n @ViewChild('content', { static: true }) _content: ElementRef<HTMLElement> | undefined;\r\n\r\n readonly value = input<any>();\r\n\r\n @Input({ transform: booleanAttribute }) disabled = false;\r\n\r\n @Input() type = 'select';\r\n\r\n readonly size = input<MonkeySize | undefined>(undefined);\r\n\r\n protected get hostClasses(): string {\r\n const size = this.size();\r\n\r\n return size ? `${this.type} ${size}` : this.type;\r\n }\r\n\r\n get displayContent(): string {\r\n return (this._content?.nativeElement.textContent || '').trim();\r\n }\r\n\r\n selected = input<boolean>(false);\r\n\r\n tabIndex = 0;\r\n\r\n action!: Function;\r\n\r\n isSelected = computed(() => {\r\n return this._selectedState();\r\n });\r\n\r\n readonly id: string = this.idGenerator.getId('mecx-option-');\r\n\r\n private _selectedState = signal(false);\r\n\r\n private handleAction(event: MouseEvent | KeyboardEvent) {\r\n if (this.disabled) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n } else {\r\n this.action?.();\r\n }\r\n }\r\n\r\n constructor() {\r\n effect(() => {\r\n this._selectedState.set(this.selected());\r\n });\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: MouseEvent): void {\r\n this.handleAction(event);\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n handleKeyDown(event: KeyboardEvent): void {\r\n const { key } = event;\r\n\r\n if (key === 'Enter' || key === ' ') {\r\n this.handleAction(event);\r\n }\r\n }\r\n\r\n onSelect(select: boolean) {\r\n this._selectedState.set(select);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './option.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnDestroy,\r\n Optional,\r\n Output,\r\n TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n ReactiveFormsModule,\r\n Validators\r\n} from '@angular/forms';\r\nimport {\r\n catchError,\r\n debounceTime,\r\n distinctUntilChanged,\r\n Observable,\r\n of,\r\n Subject,\r\n switchMap\r\n} from 'rxjs';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\nimport { MonkeyPopoverDirective } from '../../directives/popover';\r\nimport { MonkeyAutocompleteData, MonkeyAutocompleteResponse } from '../../interfaces';\r\nimport { MonkeyDictionaryService } from '../../services';\r\nimport {\r\n MonkeyFormFieldComponent,\r\n MonkeyFormFieldControl,\r\n MonkeyFormFieldModule\r\n} from '../form-field';\r\nimport { MonkeyOptionComponent } from '../option';\r\n\r\n@Component({\r\n selector: 'monkey-autocomplete',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MonkeyFormFieldModule,\r\n MonkeyPopoverDirective,\r\n MonkeyOptionComponent,\r\n UtilIconComponent\r\n ],\r\n template: `\r\n <input\r\n #input\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n class=\"mecx-input\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"placeholder\"\r\n (input)=\"onInputChange($event)\"\r\n (focus)=\"_onFocus()\"\r\n (blur)=\"_onBlur($event)\"\r\n [attr.id]=\"inputId\"\r\n [(ngModel)]=\"searchData\"\r\n />\r\n\r\n <ng-template\r\n [monkeyPopover]=\"showPopOver\"\r\n [monkeyPopoverTarget]=\"elementTarget\"\r\n [monkeyPopoverClosed]=\"closePopOver\"\r\n monkeyPopoverDir=\"ltr\"\r\n [monkeyPopoverBackdrop]=\"false\"\r\n [monkeyPopoverHideHeader]=\"true\"\r\n [monkeyPopoverWatch]=\"true\"\r\n >\r\n <div\r\n #containerWrapper\r\n class=\"mecx-autocomplete-wrapper\"\r\n [style.width.px]=\"initialDisplayWidth\"\r\n >\r\n @if (options.length > 0) {\r\n <div class=\"mecx-autocomplete-options\">\r\n @for (option of options; track option) {\r\n <div\r\n class=\"mecx-autocomplete-option\"\r\n (click)=\"onSelect(option)\"\r\n [class.mecx-autocomplete-selected]=\"isSelected(option)\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n optionTemplate || defaultTemplate;\r\n context: { $implicit: option }\r\n \"\r\n >\r\n </ng-container>\r\n </div>\r\n }\r\n </div>\r\n }\r\n @if (loading) {\r\n <div class=\"mecx-autocomplete-loading\">\r\n <util-icon name=\"loading\" />\r\n {{ loadingDictionary | async }}\r\n </div>\r\n }\r\n @if (!loading && !options.length) {\r\n <div class=\"mecx-autocomplete-no-data\">\r\n <util-icon class=\"mecx-autocomplete-no-data-icon\" name=\"searchFail\" />\r\n {{ noDataDictionary | async }}\r\n </div>\r\n }\r\n </div>\r\n\r\n <ng-template #defaultTemplate let-option>\r\n <monkey-option>\r\n {{ option.description }}\r\n </monkey-option>\r\n </ng-template>\r\n </ng-template>\r\n `,\r\n styleUrl: './autocomplete.component.scss',\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyAutocompleteComponent }\r\n ],\r\n host: {\r\n '[attr.data-testid]': \"'monkey-autocomplete'\",\r\n class: 'mecx-autocomplete',\r\n '[class.mecx-autocomplete-disabled]': '_disabled',\r\n '[class.mecx-autocomplete-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur($event)'\r\n }\r\n})\r\nexport class MonkeyAutocompleteComponent\r\n implements MonkeyFormFieldControl, ControlValueAccessor, AfterContentInit, OnDestroy\r\n{\r\n @Input({ required: true }) placeholder!: string;\r\n\r\n @Input() debounce = 300;\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Input() fetchOptions!: (queryOrLink: string | any) => Observable<MonkeyAutocompleteResponse>;\r\n\r\n @Output() onChange = new EventEmitter();\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _disabled: boolean = false;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n // this.handleValue(value);\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value: string | null = null;\r\n\r\n constructor(\r\n @Optional() public formField: MonkeyFormFieldComponent,\r\n private changeDetectorRef: ChangeDetectorRef\r\n ) {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-autocomplete-');\r\n\r\n readonly inputId: string = this.idGenerator.getId('monkey-autocomplete-input-');\r\n\r\n focused: boolean = false;\r\n\r\n readonly type: string = 'autocomplete';\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n get elementTarget() {\r\n if (this.formField?.elementRef) {\r\n return this.formField?.elementRef.nativeElement.querySelector('.mecx-form-field-body');\r\n }\r\n\r\n return this._elementRef?.nativeElement;\r\n }\r\n\r\n private _searchEvent = new EventEmitter();\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private _resizeObserver?: ResizeObserver;\r\n\r\n initialDisplayWidth = 0;\r\n\r\n showPopOver = false;\r\n\r\n options: MonkeyAutocompleteData[] = [];\r\n\r\n readonly loadingDictionary = inject(MonkeyDictionaryService).get('LOADING');\r\n\r\n readonly noDataDictionary = inject(MonkeyDictionaryService).get('NO-DATA');\r\n\r\n loading = false;\r\n\r\n searchData = '';\r\n\r\n @ContentChild('optionTemplate', { static: false }) optionTemplate?: TemplateRef<any>;\r\n\r\n @ViewChild('containerWrapper') containerWrapper!: ElementRef;\r\n\r\n private updateWidth() {\r\n this.initialDisplayWidth = (this.elementTarget?.offsetWidth || 0) - 12;\r\n }\r\n\r\n closePopOver = () => {\r\n setTimeout(() => {\r\n this.focused = false;\r\n this.showPopOver = false;\r\n this.changeDetectorRef.markForCheck();\r\n });\r\n };\r\n\r\n ngAfterContentInit(): void {\r\n this._searchEvent\r\n ?.pipe(\r\n debounceTime(this.debounce),\r\n distinctUntilChanged((prev, current) => {\r\n if (prev === current) {\r\n this.loading = false;\r\n }\r\n\r\n return prev === current;\r\n }),\r\n switchMap((query) => {\r\n return this.fetchOptions\r\n ? this.fetchOptions(query || '').pipe(\r\n catchError(() => {\r\n return of({ data: [] });\r\n })\r\n )\r\n : of({ data: [] });\r\n }),\r\n takeUntilDestroyed(this._destroyRef)\r\n )\r\n .subscribe({\r\n next: (result: MonkeyAutocompleteResponse) => {\r\n this.openPopOver();\r\n this.options = result.data;\r\n this.loading = false;\r\n }\r\n });\r\n\r\n this._resizeObserver = new ResizeObserver(() => {\r\n return this.updateWidth();\r\n });\r\n this._resizeObserver.observe(this._elementRef.nativeElement);\r\n this.updateWidth();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._resizeObserver?.disconnect();\r\n }\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n event.preventDefault();\r\n }\r\n\r\n onClear(): void {\r\n this.searchData = '';\r\n this._onChange(null);\r\n this.onChange.emit(null);\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n if (this.options.length) {\r\n this.openPopOver();\r\n }\r\n }\r\n }\r\n\r\n _onBlur(event: FocusEvent) {\r\n const next = event?.relatedTarget as HTMLElement | null;\r\n if (next && this.containerWrapper?.nativeElement?.contains(next)) {\r\n return;\r\n }\r\n\r\n this.focused = false;\r\n this.stateChanges.next();\r\n this.closePopOver();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n writeValue(value: any): void {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n }\r\n\r\n openPopOver() {\r\n this.showPopOver = true;\r\n }\r\n\r\n onInputChange(event: Event) {\r\n const { value } = event.target as HTMLInputElement;\r\n this.loading = true;\r\n this._searchEvent.next(value);\r\n this.openPopOver();\r\n }\r\n\r\n onSelect(option: MonkeyAutocompleteData) {\r\n this.value = option.value;\r\n this._onChange(this.value);\r\n this.onChange.emit(this.value);\r\n this.searchData = option.description;\r\n this.closePopOver();\r\n }\r\n\r\n isSelected(option: MonkeyAutocompleteData) {\r\n return option?.value === this.value;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './autocomplete.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChild,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnDestroy,\r\n Optional,\r\n Output,\r\n TemplateRef,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n ReactiveFormsModule,\r\n Validators\r\n} from '@angular/forms';\r\nimport { catchError, debounceTime, distinctUntilChanged, of, Subject, switchMap } from 'rxjs';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\nimport { MonkeyPopoverDirective } from '../../directives/popover';\r\nimport { MonkeyGoogleApiPlaces } from '../../interfaces';\r\nimport { MonkeyDictionaryService, MonkeyEcxAddressService } from '../../services';\r\nimport {\r\n MonkeyFormFieldComponent,\r\n MonkeyFormFieldControl,\r\n MonkeyFormFieldModule\r\n} from '../form-field';\r\nimport { MonkeyOptionComponent } from '../option';\r\n\r\n@Component({\r\n selector: 'monkey-autocomplete-address',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MonkeyFormFieldModule,\r\n MonkeyPopoverDirective,\r\n MonkeyOptionComponent,\r\n UtilIconComponent\r\n ],\r\n template: `\r\n <input\r\n #input\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n class=\"mecx-input\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"placeholder\"\r\n (input)=\"onInputChange($event)\"\r\n (focus)=\"_onFocus()\"\r\n (blur)=\"_onBlur($event)\"\r\n [attr.id]=\"inputId\"\r\n [(ngModel)]=\"searchData\"\r\n />\r\n\r\n <ng-template\r\n [monkeyPopover]=\"showPopOver\"\r\n [monkeyPopoverTarget]=\"elementTarget\"\r\n [monkeyPopoverClosed]=\"closePopOver\"\r\n monkeyPopoverDir=\"ltr\"\r\n [monkeyPopoverBackdrop]=\"false\"\r\n [monkeyPopoverHideHeader]=\"true\"\r\n [monkeyPopoverWatch]=\"true\"\r\n >\r\n <div\r\n #containerWrapper\r\n class=\"mecx-autocomplete-address-wrapper\"\r\n [style.width.px]=\"initialDisplayWidth\"\r\n >\r\n <div class=\"flex-grow-1\">\r\n @if (loading) {\r\n <div class=\"mecx-autocomplete-address-loading\">\r\n <util-icon name=\"loading\" />\r\n {{ loadingDictionary | async }}\r\n </div>\r\n }\r\n @if (options.length > 0) {\r\n <div class=\"mecx-autocomplete-address-options\">\r\n @for (option of options; track option) {\r\n <monkey-option\r\n class=\"mecx-autocomplete-address-option\"\r\n (click)=\"onSelect(option)\"\r\n [class.mecx-option-selected]=\"isSelected(option)\"\r\n >\r\n <util-icon class=\"mecx-autocomplete-address-option-icon\" name=\"location\" />\r\n <span [innerHTML]=\"option.adrFormatAddress\"></span>\r\n </monkey-option>\r\n }\r\n </div>\r\n }\r\n @if (!loading && !options.length) {\r\n <div class=\"mecx-autocomplete-address-no-data\">\r\n <util-icon class=\"mecx-autocomplete-address-no-data-icon\" name=\"searchFail\" />\r\n {{ noDataDictionary | async }}\r\n </div>\r\n }\r\n </div>\r\n <div class=\"mecx-autocomplete-address-footer\">\r\n <util-icon name=\"googleMaps\" />\r\n </div>\r\n </div>\r\n </ng-template>\r\n `,\r\n styleUrl: './autocomplete-address.component.scss',\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyAutocompleteAddressComponent }\r\n ],\r\n host: {\r\n '[attr.data-testid]': \"'monkey-autocomplete-address'\",\r\n class: 'mecx-autocomplete-address',\r\n '[class.mecx-autocomplete-address-disabled]': '_disabled',\r\n '[class.mecx-autocomplete-address-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur($event)'\r\n }\r\n})\r\nexport class MonkeyAutocompleteAddressComponent\r\n implements MonkeyFormFieldControl, ControlValueAccessor, AfterContentInit, OnDestroy\r\n{\r\n @Input({ required: true }) placeholder!: string;\r\n\r\n @Input() debounce = 300;\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Output() onChange = new EventEmitter();\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _disabled: boolean = false;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n if (!this.searchData) {\r\n this.searchData = value;\r\n }\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value: string | null = null;\r\n\r\n constructor(\r\n @Optional() public formField: MonkeyFormFieldComponent,\r\n private changeDetectorRef: ChangeDetectorRef\r\n ) {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-autocomplete-address-');\r\n\r\n readonly inputId: string = this.idGenerator.getId('monkey-autocomplete-address-input-');\r\n\r\n focused: boolean = false;\r\n\r\n readonly type: string = 'autocomplete-address';\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n private readonly _addressService = inject(MonkeyEcxAddressService);\r\n\r\n private _searchEvent = new EventEmitter();\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private _resizeObserver?: ResizeObserver;\r\n\r\n initialDisplayWidth = 0;\r\n\r\n showPopOver = false;\r\n\r\n options: MonkeyGoogleApiPlaces[] = [];\r\n\r\n readonly loadingDictionary = inject(MonkeyDictionaryService).get('LOADING');\r\n\r\n readonly noDataDictionary = inject(MonkeyDictionaryService).get('NO-DATA-ADDRESS');\r\n\r\n loading = false;\r\n\r\n searchData = '';\r\n\r\n get elementTarget() {\r\n if (this.formField?.elementRef) {\r\n return this.formField?.elementRef.nativeElement.querySelector('.mecx-form-field-body');\r\n }\r\n\r\n return this._elementRef.nativeElement;\r\n }\r\n\r\n @ContentChild('optionTemplate', { static: false }) optionTemplate?: TemplateRef<any>;\r\n\r\n @ViewChild('containerWrapper') containerWrapper!: ElementRef;\r\n\r\n private updateWidth() {\r\n this.initialDisplayWidth = (this.elementTarget?.offsetWidth || 0) - 12;\r\n }\r\n\r\n closePopOver = () => {\r\n setTimeout(() => {\r\n this.focused = false;\r\n this.showPopOver = false;\r\n this.changeDetectorRef.markForCheck();\r\n });\r\n };\r\n\r\n ngAfterContentInit(): void {\r\n this._searchEvent\r\n ?.pipe(\r\n debounceTime(this.debounce),\r\n distinctUntilChanged((prev, current) => {\r\n if (prev === current) {\r\n this.loading = false;\r\n }\r\n\r\n return prev === current;\r\n }),\r\n switchMap((query) => {\r\n return this._addressService.get(query || '').pipe(\r\n catchError(() => {\r\n return of([]);\r\n })\r\n );\r\n }),\r\n takeUntilDestroyed(this._destroyRef)\r\n )\r\n .subscribe({\r\n next: (result: any[]) => {\r\n this.openPopOver();\r\n this.options = result;\r\n this.loading = false;\r\n }\r\n });\r\n\r\n this._resizeObserver = new ResizeObserver(() => {\r\n return this.updateWidth();\r\n });\r\n this._resizeObserver.observe(this._elementRef.nativeElement);\r\n this.updateWidth();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._resizeObserver?.disconnect();\r\n }\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n event.preventDefault();\r\n }\r\n\r\n onClear(): void {\r\n this.searchData = '';\r\n this._onChange(null);\r\n this.onChange.emit(null);\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n if (this.options.length) {\r\n this.openPopOver();\r\n }\r\n }\r\n }\r\n\r\n _onBlur(event: FocusEvent) {\r\n const next = event?.relatedTarget as HTMLElement | null;\r\n if (next && this.containerWrapper?.nativeElement?.contains(next)) {\r\n return;\r\n }\r\n\r\n this.focused = false;\r\n this.stateChanges.next();\r\n this.closePopOver();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n openPopOver() {\r\n this.showPopOver = true;\r\n }\r\n\r\n onInputChange(event: Event) {\r\n const { value } = event.target as HTMLInputElement;\r\n this.loading = true;\r\n this._searchEvent.next(value);\r\n this.openPopOver();\r\n }\r\n\r\n onSelect(option: MonkeyGoogleApiPlaces) {\r\n this.value = option;\r\n this._onChange(this.value);\r\n this.onChange.emit(this.value);\r\n this.searchData = option?.formattedAddress;\r\n this.closePopOver();\r\n }\r\n\r\n isSelected(option: MonkeyGoogleApiPlaces) {\r\n return option === this.value;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './autocomplete-address.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n effect,\r\n HostBinding,\r\n inject,\r\n input,\r\n InputSignal,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator, objHaveProperty } from '../../../utils';\r\nimport { MonkeySize } from '../../interfaces';\r\n\r\ntype MonkeyAvatarSrc = { iconName: string } | { imageUrl: string } | { name: string };\r\ntype MonkeyAvatarType = 'icon' | 'image' | 'name';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-avatar',\r\n styleUrl: './avatar.component.scss',\r\n templateUrl: './avatar.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n 'data-testid': 'monkey-avatar',\r\n '[attr.id]': '_id',\r\n '[id]': '_id'\r\n }\r\n})\r\nexport class MonkeyAvatarComponent {\r\n protected _id: any = inject(IdGenerator).getId('monkey-avatar-');\r\n\r\n readonly size: InputSignal<MonkeySize> = input('xs' as MonkeySize);\r\n\r\n readonly src: InputSignal<MonkeyAvatarSrc> = input.required();\r\n\r\n readonly id: InputSignal<string | undefined> = input();\r\n\r\n public avatar = '?';\r\n\r\n public avatarType: MonkeyAvatarType = 'name';\r\n\r\n @HostBinding('class')\r\n get classes(): string {\r\n return this.size();\r\n }\r\n\r\n constructor() {\r\n effect(() => {\r\n this._id = this.id() || this._id;\r\n\r\n this.handleAvatarType();\r\n });\r\n }\r\n\r\n private getInitial(text: string): string {\r\n return text.toUpperCase()[0];\r\n }\r\n\r\n private handleAvatarType(): void {\r\n const { getInitial, src } = this;\r\n const value = src();\r\n\r\n if (objHaveProperty(value, 'iconName')) {\r\n this.avatarType = 'icon';\r\n this.avatar = (value as { iconName: string }).iconName;\r\n\r\n return;\r\n }\r\n\r\n if (objHaveProperty(value, 'imageUrl')) {\r\n this.avatarType = 'image';\r\n this.avatar = (value as { imageUrl: string }).imageUrl;\r\n\r\n return;\r\n }\r\n\r\n if (objHaveProperty(value, 'name')) {\r\n this.avatarType = 'name';\r\n this.avatar = getInitial((value as { name: string }).name);\r\n }\r\n }\r\n}\r\n","@switch (avatarType) {\r\n @case ('name') {\r\n <p [class]=\"size()\">{{ avatar }}</p>\r\n }\r\n\r\n @case ('icon') {\r\n <i class=\"mk-i mk-i-{{ avatar }} {{size()}}\"></i>\r\n }\r\n\r\n @case ('image') {\r\n <img loading=\"lazy\" [alt]=\"'Avatar ' + avatarType\" [class]=\"size()\" [src]=\"avatar\" />\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './avatar.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { booleanAttribute, Component, HostBinding, inject, Input } from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeySize } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'monkey-badge',\r\n templateUrl: './badge.component.html',\r\n styleUrl: './badge.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-badge',\r\n '[attr.id]': 'id'\r\n }\r\n})\r\nexport class MonkeyBadgeComponent {\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-badge-');\r\n\r\n @HostBinding('style') hostVariables = {};\r\n\r\n @Input() set type(value: 'success' | 'alert' | 'error' | 'info' | 'default') {\r\n const styles = {\r\n success: { background: '#F5FFFB', color: '#005236' },\r\n alert: { background: '#FFF8EB', color: '#1F2024' },\r\n error: { background: '#FFECEC', color: '#DB0505' },\r\n info: { background: '#F4EBFF', color: '#2D0264' },\r\n default: { background: '#F1F2F3', color: '#1F2024' }\r\n }[value];\r\n\r\n this.hostVariables = {\r\n '--monkey-badge-background': styles?.background,\r\n '--monkey-badge-color': styles?.color\r\n };\r\n }\r\n\r\n @Input()\r\n set typeColors(value: { background: string; color: string }) {\r\n if (value) {\r\n this.hostVariables = {\r\n '--monkey-badge-background': value?.background,\r\n '--monkey-badge-color': value?.color\r\n };\r\n }\r\n }\r\n\r\n @HostBinding('class')\r\n @Input()\r\n size: MonkeySize = 'sm';\r\n\r\n @HostBinding('class.large-padding')\r\n @Input({ transform: booleanAttribute })\r\n largePadding = false;\r\n\r\n @Input() icon: string = '';\r\n\r\n @Input() text: string = '';\r\n}\r\n","@if (text) {\r\n @if (icon) {\r\n <i class=\"mk-i mk-i-{{icon}}\"></i>\r\n }\r\n <span>\r\n {{ text }}\r\n </span>\r\n} @else {\r\n <ng-content></ng-content>\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './badge.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport { booleanAttribute, Component, inject, Input, ViewEncapsulation } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyBreadcrumb } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'monkey-breadcrumb',\r\n imports: [CommonModule],\r\n templateUrl: './breadcrumb.component.html',\r\n styleUrl: './breadcrumb.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n 'data-testid': 'monkey-breadcrumb',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyBreadcrumbComponent {\r\n @Input({ required: true }) first!: MonkeyBreadcrumb;\r\n\r\n @Input({ required: true }) last!: MonkeyBreadcrumb;\r\n\r\n @Input({ transform: booleanAttribute }) colapsed: boolean = false;\r\n\r\n protected _router = inject(Router);\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-breadcrumb-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n handleNavigate(item: MonkeyBreadcrumb) {\r\n if (item.callback) {\r\n item.callback();\r\n } else {\r\n this._router.navigate([item.path]);\r\n }\r\n }\r\n}\r\n","<div class=\"breadcrumbs\">\r\n <a class=\"first\" (click)=\"handleNavigate(first)\">\r\n {{ first.label | titlecase }}\r\n </a>\r\n <span>/</span>\r\n @if(colapsed){\r\n <span>...</span>\r\n <span>/</span>\r\n }\r\n <a class=\"last\" (click)=\"handleNavigate(last)\">\r\n {{ last.label | titlecase }}\r\n </a>\r\n</div>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './breadcrumb.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { animate, keyframes, style, transition, trigger } from '@angular/animations';\r\nimport {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n DestroyRef,\r\n EventEmitter,\r\n forwardRef,\r\n inject,\r\n Injector,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n QueryList\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n FormControlDirective,\r\n FormControlName,\r\n FormGroupDirective,\r\n FormsModule,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n NgControl,\r\n NgModel,\r\n ReactiveFormsModule,\r\n ValidationErrors,\r\n Validator\r\n} from '@angular/forms';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\nimport { MonkeyHelperDirective } from '../../directives/helper';\r\nimport { MonkeyInfoDirective } from '../../directives/info';\r\nimport { MonkeyLabelDirective } from '../../directives/label';\r\n\r\n@Component({\r\n selector: 'monkey-checkbox',\r\n imports: [ReactiveFormsModule, FormsModule, UtilIconComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.scss'],\r\n animations: [\r\n trigger('iconAnimation', [\r\n transition(':enter', [\r\n animate(\r\n '250ms ease-in-out',\r\n keyframes([\r\n style({ opacity: 0, transform: 'scale(0.7)' }),\r\n style({ opacity: 1, transform: 'scale(1)' })\r\n ])\r\n )\r\n ]),\r\n transition(':leave', [\r\n animate(\r\n '250ms ease-in-out',\r\n keyframes([\r\n style({ opacity: 1, transform: 'scale(1)' }),\r\n style({ opacity: 0, transform: 'scale(.7)' })\r\n ])\r\n )\r\n ])\r\n ])\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => {\r\n // eslint-disable-next-line no-use-before-define\r\n return MonkeyCheckboxComponent;\r\n }),\r\n multi: true\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n // eslint-disable-next-line no-use-before-define\r\n useExisting: MonkeyCheckboxComponent,\r\n multi: true\r\n }\r\n ],\r\n host: {\r\n 'data-testid': 'input-checkbox',\r\n class: 'mecx-checkbox',\r\n '[class.mecx-disabled]': 'disabled',\r\n '[class.mecx-checkbox-checked]': 'value',\r\n '[class.mecx-checkbox-focused]': 'isFocused',\r\n '[class.mecx-checkbox-indeterminate]': 'indeterminate',\r\n '[class.mecx-checkbox-invalid]': 'showInvalid',\r\n '[class.sm]': 'size.includes(\"sm\")',\r\n '[class.md]': 'size.includes(\"md\")',\r\n '[class.lg]': 'size.includes(\"lg\")'\r\n }\r\n})\r\nexport class MonkeyCheckboxComponent implements ControlValueAccessor, OnChanges, OnInit, Validator {\r\n @ContentChildren(MonkeyInfoDirective, { descendants: true })\r\n private infoChildren!: QueryList<MonkeyInfoDirective>;\r\n\r\n @ContentChildren(MonkeyLabelDirective, { descendants: true })\r\n private labelChildren!: QueryList<MonkeyLabelDirective>;\r\n\r\n @ContentChildren(MonkeyHelperDirective, { descendants: true })\r\n private helperChildren!: QueryList<MonkeyHelperDirective>;\r\n\r\n @Input({ transform: booleanAttribute }) disabled = false;\r\n\r\n @Input({ transform: booleanAttribute }) indeterminate = false;\r\n\r\n @Input({ transform: booleanAttribute }) required = false;\r\n\r\n @Input({ transform: booleanAttribute }) showFooter = true;\r\n\r\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\r\n\r\n @Output() onChange = new EventEmitter<boolean>();\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n private injector = inject(Injector);\r\n\r\n private cdr = inject(ChangeDetectorRef);\r\n\r\n control: AbstractControl<any, any> | null | undefined;\r\n\r\n readonly inputId = this.idGenerator.getId('input-checkbox-');\r\n\r\n @Input() value = false;\r\n\r\n isFocused = false;\r\n\r\n get showInvalid(): boolean {\r\n const touched = this.control?.touched || false;\r\n const invalid = this.control?.invalid || false;\r\n return !this.isFocused && touched && invalid;\r\n }\r\n\r\n get hasHeader(): boolean {\r\n return this.labelChildren.length > 0 || this.helperChildren.length > 0;\r\n }\r\n\r\n get isTouched(): boolean {\r\n return this.control?.touched ?? false;\r\n }\r\n\r\n get isInvalid(): boolean {\r\n return this.control?.invalid ?? false;\r\n }\r\n\r\n ngOnInit() {\r\n const ngControl = this.injector.get(NgControl, null, { self: true, optional: true });\r\n\r\n if (ngControl instanceof FormControlDirective || ngControl instanceof NgModel) {\r\n this.control = ngControl.control;\r\n } else if (ngControl instanceof FormControlName) {\r\n this.control = this.injector.get(FormGroupDirective).getControl(ngControl as FormControlName);\r\n\r\n this.control.statusChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n _onValidatorChange: any = () => {};\r\n\r\n ngOnChanges(changes: any) {\r\n if (changes.required) {\r\n this._onValidatorChange();\r\n }\r\n }\r\n\r\n onBlur = () => {\r\n this._onTouched();\r\n this.isFocused = false;\r\n };\r\n\r\n onFocus = (event: any) => {\r\n if (event.relatedTarget) {\r\n this.isFocused = true;\r\n }\r\n };\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.required && control.value !== true ? { required: true } : null;\r\n }\r\n\r\n writeValue(value: boolean): void {\r\n this.value = value;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this._onValidatorChange = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n onChangeEvent(event: Event): void {\r\n const checkbox = event.target as HTMLInputElement;\r\n\r\n if (this.indeterminate) {\r\n this.indeterminate = false;\r\n }\r\n\r\n this.value = checkbox.checked;\r\n this._onChange(this.value);\r\n this.onChange.next(this.value);\r\n this._onTouched();\r\n }\r\n\r\n getFooterMessages(): 'info' | 'error' | '' {\r\n const hasInfoChildren = this.infoChildren && this.infoChildren.length > 0;\r\n\r\n if (!this.disabled && this.isTouched && this.isInvalid) {\r\n return 'error';\r\n }\r\n\r\n if (hasInfoChildren) {\r\n return 'info';\r\n }\r\n\r\n return '';\r\n }\r\n}\r\n","@if (hasHeader) {\r\n <div class=\"header\">\r\n <ng-content select=\"monkey-label\" />\r\n <ng-content select=\"monkey-helper\" />\r\n </div>\r\n}\r\n<label [attr.for]=\"inputId\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"value\"\r\n [indeterminate]=\"indeterminate\"\r\n [disabled]=\"disabled\"\r\n (change)=\"onChangeEvent($event)\"\r\n (blur)=\"onBlur()\"\r\n (focus)=\"onFocus($event)\"\r\n [id]=\"inputId\"\r\n [required]=\"required\"\r\n />\r\n <span class=\"checkbox\">\r\n @if (indeterminate) {\r\n <util-icon class=\"icon\" name=\"minus\" />\r\n } @else if (value) {\r\n <util-icon class=\"icon\" name=\"check\" />\r\n }\r\n </span>\r\n <span class=\"checkbox-label\">\r\n <ng-content></ng-content>\r\n </span>\r\n</label>\r\n@if (showFooter) {\r\n @switch (getFooterMessages()) {\r\n @case ('error') {\r\n <ng-content select=\"monkey-error\" />\r\n }\r\n @case ('info') {\r\n <ng-content select=\"monkey-info\" />\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './checkbox.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { CurrencyPipe } from '@angular/common';\r\nimport {\r\n booleanAttribute,\r\n ChangeDetectorRef,\r\n DEFAULT_CURRENCY_CODE,\r\n DestroyRef,\r\n Directive,\r\n ElementRef,\r\n inject,\r\n Input,\r\n LOCALE_ID,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Renderer2,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NgControl, Validators } from '@angular/forms';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyFormFieldControl } from '../form-field';\r\n\r\n@Directive({\r\n selector: 'input[monkey-input-currency]',\r\n exportAs: 'monkeyInput',\r\n host: {\r\n class: 'mecx-input',\r\n '[class.mecx-input-disabled]': 'disabled',\r\n '[id]': 'id',\r\n '[disabled]': 'disabled',\r\n '[required]': 'required',\r\n '[attr.name]': 'name || null',\r\n '[attr.disabled]': 'disabled || null',\r\n '[attr.aria-required]': 'required',\r\n '[attr.id]': 'id',\r\n '(focus)': 'focusChanged(true)',\r\n '(focusout)': 'focusOutChanged()',\r\n '(blur)': 'focusChanged(false)'\r\n },\r\n providers: [\r\n {\r\n provide: MonkeyFormFieldControl,\r\n // eslint-disable-next-line no-use-before-define\r\n useExisting: MonkeyInputCurrencyDirective\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class MonkeyInputCurrencyDirective\r\n implements MonkeyFormFieldControl, OnChanges, OnInit, OnDestroy\r\n{\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-input-currency-');\r\n\r\n protected _id!: string;\r\n\r\n readonly stateChanges: Subject<void> = new Subject<void>();\r\n\r\n @Input() name!: string;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: BooleanInput) {\r\n this._required = coerceBooleanProperty(value);\r\n }\r\n\r\n protected _required: boolean | undefined;\r\n\r\n protected _disabled = false;\r\n\r\n @Input()\r\n get type(): string {\r\n return this._type;\r\n }\r\n\r\n set type(value: string) {\r\n this._type = value;\r\n }\r\n\r\n protected _type = 'text';\r\n\r\n get currency(): boolean {\r\n return true;\r\n }\r\n\r\n get percent(): boolean {\r\n return false;\r\n }\r\n\r\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n private readonly _currencyCode = inject(DEFAULT_CURRENCY_CODE);\r\n\r\n private readonly _localeId = inject(LOCALE_ID);\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private _valueChanges: Subscription | undefined;\r\n\r\n private _rawValue = 0;\r\n\r\n ngControl = inject(NgControl, { self: true, optional: true });\r\n\r\n focused: boolean = false;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2,\r\n private currencyPipe: CurrencyPipe\r\n ) {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n private markAsUntouched() {\r\n this.ngControl?.control?.markAsUntouched();\r\n }\r\n\r\n private focus(options?: FocusOptions): void {\r\n this._elementRef.nativeElement.focus(options);\r\n this.markAsUntouched();\r\n }\r\n\r\n private formatValue(value: string): string | null {\r\n return this.currencyPipe.transform(\r\n value,\r\n this._currencyCode || 'BRL',\r\n '',\r\n '1.2-2',\r\n this._localeId || 'pt-BR'\r\n );\r\n }\r\n\r\n private handleControlValue() {\r\n const value = this.ngControl?.control?.value;\r\n if (this._rawValue !== value) {\r\n this._rawValue = value;\r\n\r\n if (value === null || value === undefined) {\r\n this.renderer.setProperty(this.el.nativeElement, 'value', '');\r\n this._changeDetectorRef.markForCheck();\r\n return;\r\n }\r\n\r\n let handled = value;\r\n const decimal = `${value}`.split('.')[1];\r\n if (`${decimal}`.length >= 2) {\r\n handled = `${value}`.replace(/[^0-9]/g, '');\r\n handled = `${Number(handled) / 100}`;\r\n }\r\n\r\n this.ngControl?.control?.setValue(Number(handled), { emitEvent: false, onlySelf: true });\r\n const formattedValue = this.formatValue(handled);\r\n this.renderer.setProperty(this.el.nativeElement, 'value', formattedValue);\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.handleControlValue();\r\n this._valueChanges?.unsubscribe();\r\n\r\n this._valueChanges = this.ngControl?.control?.valueChanges\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(() => {\r\n this.handleControlValue();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges.complete();\r\n this._valueChanges?.unsubscribe();\r\n }\r\n\r\n ngOnChanges({ disabled }: SimpleChanges): void {\r\n if (!disabled) {\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n onContainerClick() {\r\n if (!this.focused) {\r\n this.focus();\r\n }\r\n }\r\n\r\n focusChanged(isFocused: boolean) {\r\n if (isFocused === this.focused) {\r\n return;\r\n }\r\n\r\n if (isFocused && this.disabled) {\r\n const element = this._elementRef.nativeElement as HTMLInputElement;\r\n element.setSelectionRange(0, 0);\r\n }\r\n\r\n this.markAsUntouched();\r\n this.focused = isFocused;\r\n this.stateChanges.next();\r\n }\r\n\r\n focusOutChanged() {\r\n this.ngControl?.control?.markAsTouched();\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { getSupportedInputTypes } from '@angular/cdk/platform';\r\n\r\nconst INPUT_INVALID_TYPES = [\r\n 'button',\r\n 'checkbox',\r\n 'file',\r\n 'image',\r\n 'radio',\r\n 'range',\r\n 'reset',\r\n 'submit'\r\n];\r\n\r\nexport function validateType(type: string) {\r\n if (INPUT_INVALID_TYPES.indexOf(type) > -1 || !getSupportedInputTypes().has(type)) {\r\n throw Error(`Input type \"${type}\" isn't supported.`);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport {\r\n booleanAttribute,\r\n Directive,\r\n ElementRef,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { NgControl, Validators } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyFormFieldControl } from '../form-field';\r\nimport { validateType } from './validators';\r\n\r\n@Directive({\r\n selector: 'input[monkey-input],textarea[monkey-input]',\r\n exportAs: 'monkeyInput',\r\n host: {\r\n class: 'mecx-input',\r\n 'data-testid': 'monkey-input',\r\n '[class.mecx-input-disabled]': 'disabled',\r\n '[id]': 'id',\r\n '[disabled]': 'disabled',\r\n '[required]': 'required',\r\n '[attr.name]': 'name || null',\r\n '[attr.disabled]': 'disabled || null',\r\n '[attr.aria-required]': 'required',\r\n '[attr.id]': 'id',\r\n '(focus)': 'focusChanged(true)',\r\n '(focusout)': 'focusOutChanged()',\r\n '(blur)': 'focusChanged(false)'\r\n },\r\n providers: [\r\n {\r\n provide: MonkeyFormFieldControl,\r\n // eslint-disable-next-line no-use-before-define\r\n useExisting: MonkeyInputDirective\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class MonkeyInputDirective implements MonkeyFormFieldControl, OnChanges, OnDestroy {\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-input-');\r\n\r\n protected _id!: string;\r\n\r\n readonly stateChanges: Subject<void> = new Subject<void>();\r\n\r\n @Input() name!: string;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: BooleanInput) {\r\n this._required = coerceBooleanProperty(value);\r\n }\r\n\r\n protected _required: boolean | undefined;\r\n\r\n protected _disabled = false;\r\n\r\n @Input()\r\n get type(): string {\r\n return this._type;\r\n }\r\n\r\n set type(value: string) {\r\n validateType(value);\r\n this._type = value || 'text';\r\n\r\n (this._elementRef.nativeElement as HTMLInputElement).type = this._type;\r\n }\r\n\r\n @Input()\r\n get min(): string {\r\n return this._min;\r\n }\r\n\r\n set min(value: string) {\r\n this._min = value;\r\n\r\n if (this._type === 'date') {\r\n (this._elementRef.nativeElement as HTMLInputElement).min = this._min;\r\n }\r\n }\r\n\r\n @Input()\r\n get max(): string {\r\n return this._max;\r\n }\r\n\r\n set max(value: string) {\r\n this._max = value;\r\n\r\n if (this._type === 'date') {\r\n (this._elementRef.nativeElement as HTMLInputElement).max = this._max;\r\n }\r\n }\r\n\r\n protected _type = 'text';\r\n\r\n protected _min!: string;\r\n\r\n protected _max!: string;\r\n\r\n get currency(): boolean {\r\n return false;\r\n }\r\n\r\n @Input()\r\n get percent(): boolean {\r\n return this._percent;\r\n }\r\n\r\n set percent(value: '') {\r\n this._percent = true;\r\n }\r\n\r\n protected _percent = false;\r\n\r\n ngControl = inject(NgControl, { self: true, optional: true });\r\n\r\n focused: boolean = false;\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n private markAsUntouched() {\r\n this.ngControl?.control?.markAsUntouched();\r\n }\r\n\r\n private focus(options?: FocusOptions): void {\r\n this._elementRef.nativeElement.focus(options);\r\n this.markAsUntouched();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges.complete();\r\n }\r\n\r\n ngOnChanges({ disabled }: SimpleChanges): void {\r\n if (!disabled) {\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n onContainerClick() {\r\n if (!this.focused) {\r\n this.focus();\r\n }\r\n }\r\n\r\n focusChanged(isFocused: boolean) {\r\n if (isFocused === this.focused) {\r\n return;\r\n }\r\n\r\n if (isFocused && this.disabled) {\r\n const element = this._elementRef.nativeElement as HTMLInputElement;\r\n\r\n if (element.type === 'number') {\r\n element.type = 'text';\r\n element.setSelectionRange(0, 0);\r\n element.type = 'number';\r\n } else {\r\n element.setSelectionRange(0, 0);\r\n }\r\n }\r\n\r\n this.markAsUntouched();\r\n this.focused = isFocused;\r\n this.stateChanges.next();\r\n }\r\n\r\n focusOutChanged() {\r\n this.ngControl?.control?.markAsTouched();\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CurrencyPipe } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MonkeyInputCurrencyDirective } from './input-currency.directive';\r\nimport { MonkeyInputDirective } from './input.directive';\r\n\r\n@NgModule({\r\n providers: [CurrencyPipe],\r\n declarations: [MonkeyInputDirective, MonkeyInputCurrencyDirective],\r\n exports: [MonkeyInputDirective, MonkeyInputCurrencyDirective]\r\n})\r\nexport class MonkeyInputModule {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './input-currency.directive';\r\nexport * from './input.directive';\r\nexport * from './input.module';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostListener,\r\n inject,\r\n Input,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\nimport { MonkeyButtonColor } from '../../interfaces/button';\r\n\r\n@Component({\r\n selector: 'monkey-icon-button',\r\n imports: [CommonModule, UtilIconComponent],\r\n templateUrl: './icon-button.component.html',\r\n styleUrl: './icon-button.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n 'data-testid': 'monkey-icon-button',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyIconButtonComponent {\r\n @Input() type: 'primary' | 'secondary' | 'tertiary' = 'primary';\r\n\r\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\r\n\r\n @Input() disabled: boolean = false;\r\n\r\n @Input() icon = '';\r\n\r\n @Input() loading!: boolean;\r\n\r\n @Input() color: MonkeyButtonColor = 'default';\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-icon-button-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: any) {\r\n if (this.disabled) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n }\r\n }\r\n}\r\n","<button\r\n class=\"mecx-icon-button\"\r\n [ngClass]=\"type + ' ' + size + ' ' + color\"\r\n [disabled]=\"disabled || loading\"\r\n>\r\n <div class=\"content\">\r\n @if (loading) {\r\n <util-icon class=\"mecx-icon-loading\" name=\"loading\" />\r\n }\r\n @if (!loading) {\r\n <i class=\"mk-i mk-i-{{icon}} {{size}}\"></i>\r\n }\r\n </div>\r\n</button>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './icon-button.component';\r\n","/* eslint-disable no-unused-vars */\r\n/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n addDays,\r\n addMonths,\r\n addYears,\r\n endOfMonth,\r\n endOfWeek,\r\n format,\r\n getMonth,\r\n getYear,\r\n isAfter,\r\n isBefore,\r\n isSameMonth,\r\n isToday,\r\n parseISO,\r\n startOfMonth,\r\n startOfWeek,\r\n subMonths,\r\n subYears\r\n} from 'date-fns';\r\n\r\nexport interface MonkeyDefaultDates {\r\n minDate: string;\r\n maxDate: string;\r\n}\r\n\r\nexport interface MonkeyWeekDay {\r\n date: Date | null;\r\n isDisabled: boolean;\r\n isToday: boolean;\r\n}\r\n\r\nexport interface MonkeyCalendarWeekDay {\r\n blockNext: boolean;\r\n blockPrev: boolean;\r\n days: (MonkeyWeekDay | null)[];\r\n}\r\n\r\nexport enum MonkeyQuickActionsEnum {\r\n LAST_30_DAYS = -30,\r\n LAST_60_DAYS = -60,\r\n LAST_90_DAYS = -90,\r\n LAST_6_MONTHS = -180,\r\n LAST_12_MONTHS = -365,\r\n NEXT_30_DAYS = 30,\r\n NEXT_60_DAYS = 60,\r\n NEXT_90_DAYS = 90,\r\n NEXT_6_MONTHS = 180,\r\n NEXT_12_MONTHS = 365\r\n}\r\n\r\nexport function parseStringDate(val: Date | string) {\r\n if (typeof val === 'string') {\r\n return format(parseISO(val as string), 'yyyy-MM-dd');\r\n }\r\n\r\n return val.toISOString().split('T')[0];\r\n}\r\n\r\nexport function getDefaultdates(): MonkeyDefaultDates {\r\n return {\r\n minDate: format(subYears(new Date(), 15), 'yyyy-MM-dd'),\r\n maxDate: format(addYears(new Date(), 15), 'yyyy-MM-dd')\r\n };\r\n}\r\n\r\nexport function buildCalendars(date: Date | string, action?: 'previous' | 'next') {\r\n if (action) {\r\n if (action === 'previous') {\r\n date = subMonths(date, 1);\r\n } else {\r\n date = addMonths(date, 1);\r\n }\r\n }\r\n\r\n const firstMonth = getMonth(date);\r\n const firstYear = getYear(date);\r\n\r\n const secondDate = addMonths(date, 1);\r\n\r\n const secondMonth = getMonth(secondDate);\r\n const secondYear = getYear(secondDate);\r\n\r\n return {\r\n firstCalendar: {\r\n month: firstMonth,\r\n year: firstYear\r\n },\r\n secondCalendar: {\r\n month: secondMonth,\r\n year: secondYear\r\n }\r\n };\r\n}\r\n\r\nexport function buildMonthByDays(\r\n year: number,\r\n month: number,\r\n minDate: Date | string,\r\n maxDate: Date | string\r\n): MonkeyCalendarWeekDay {\r\n const date = new Date(year, month, 1);\r\n const start = startOfWeek(startOfMonth(date), { weekStartsOn: 0 });\r\n const end = endOfWeek(endOfMonth(date), { weekStartsOn: 0 });\r\n\r\n const days: (MonkeyWeekDay | null)[] = [];\r\n let blockPrev = false;\r\n let blockNext = false;\r\n\r\n let current = start;\r\n while (current <= end) {\r\n const isCurrentMonth = isSameMonth(current, date);\r\n const isBeforeMin = minDate\r\n ? isBefore(parseStringDate(current), parseStringDate(minDate))\r\n : false;\r\n if (isBeforeMin) {\r\n blockPrev = true;\r\n }\r\n const isAfterMax = maxDate\r\n ? isAfter(parseStringDate(current), parseStringDate(maxDate))\r\n : false;\r\n if (isAfterMax) {\r\n blockNext = true;\r\n }\r\n\r\n days.push({\r\n date: isCurrentMonth ? current : null,\r\n isDisabled: !isCurrentMonth || isBeforeMin || isAfterMax,\r\n isToday: isToday(current)\r\n });\r\n current = addDays(current, 1);\r\n }\r\n\r\n return {\r\n blockPrev,\r\n blockNext,\r\n days\r\n };\r\n}\r\n\r\nexport function getEnumKeys(enumObj: any): any[] {\r\n return Object.entries(enumObj)\r\n .filter(([key]) => {\r\n return Number.isNaN(Number(key));\r\n })\r\n .map(([key, value]) => {\r\n return { key, value };\r\n });\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n booleanAttribute,\r\n Component,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnChanges,\r\n Output\r\n} from '@angular/core';\r\nimport { format, isAfter, isWithinInterval } from 'date-fns';\r\nimport { IdGenerator } from '../../../../utils';\r\nimport { MonkeyDictionaryService } from '../../../services/dictionary.service';\r\nimport { MonkeyIconButtonComponent } from '../../icon-button';\r\nimport * as Utils from '../utils';\r\n\r\n@Component({\r\n selector: 'monkey-date-range-month',\r\n imports: [CommonModule, MonkeyIconButtonComponent],\r\n templateUrl: './month.component.html',\r\n styleUrl: './month.component.scss',\r\n host: {\r\n 'data-testid': 'month',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyDateRangeMonthComponent implements OnChanges {\r\n @Input({ required: true }) month!: number;\r\n\r\n @Input({ required: true }) year!: number;\r\n\r\n @Input() set startDate(val: string) {\r\n this._handledStartDate = val;\r\n }\r\n\r\n @Input() set endDate(val: string) {\r\n this._handledEndDate = val;\r\n }\r\n\r\n @Input({ transform: booleanAttribute })\r\n hidePrevious!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideNext!: boolean;\r\n\r\n @Input() minDate!: string;\r\n\r\n @Input() maxDate!: string;\r\n\r\n @Output() onNavigate = new EventEmitter();\r\n\r\n @Output() onDate = new EventEmitter();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-date-range-month-');\r\n\r\n protected _id!: string;\r\n\r\n private readonly _today = new Date();\r\n\r\n private _handledStartDate!: string;\r\n\r\n private _handledEndDate!: string;\r\n\r\n readonly i18nDictionary = inject(MonkeyDictionaryService).get('DATE-RANGE');\r\n\r\n daysInMonth!: Utils.MonkeyCalendarWeekDay;\r\n\r\n temporaryEndDate!: Utils.MonkeyWeekDay | null;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.daysInMonth = Utils.buildMonthByDays(this.year, this.month, this.minDate, this.maxDate);\r\n }\r\n\r\n isFirst(param: Utils.MonkeyWeekDay): boolean {\r\n const date = format(param.date!, 'yyyy-MM-dd');\r\n return (this._handledStartDate && this._handledStartDate === date) || false;\r\n }\r\n\r\n isLast(param: Utils.MonkeyWeekDay): boolean {\r\n const date = format(param.date!, 'yyyy-MM-dd');\r\n return (this._handledEndDate && this._handledEndDate === date) || false;\r\n }\r\n\r\n isSelected(param: Utils.MonkeyWeekDay): boolean {\r\n const date = format(param.date!, 'yyyy-MM-dd');\r\n return (\r\n (this._handledStartDate && this._handledStartDate === date) ||\r\n (this._handledEndDate && this._handledEndDate === date) ||\r\n false\r\n );\r\n }\r\n\r\n isInRange(param: Utils.MonkeyWeekDay): boolean {\r\n if (!this._handledStartDate || !this._handledEndDate || !param.date) return false;\r\n const date = format(param.date!, 'yyyy-MM-dd');\r\n\r\n return isWithinInterval(new Date(date), {\r\n start: new Date(this._handledStartDate),\r\n end: new Date(this._handledEndDate)\r\n });\r\n }\r\n\r\n isInRangeTemporary(param: Utils.MonkeyWeekDay): boolean {\r\n if (\r\n !this._handledStartDate ||\r\n !this.temporaryEndDate?.date ||\r\n !param.date ||\r\n param.isDisabled ||\r\n (this._handledStartDate && this._handledEndDate)\r\n )\r\n return false;\r\n const date = format(param.date!, 'yyyy-MM-dd');\r\n\r\n return isWithinInterval(new Date(date), {\r\n start: new Date(this._handledStartDate),\r\n end: new Date(this.temporaryEndDate.date)\r\n });\r\n }\r\n\r\n isInLastTemporary(param: Utils.MonkeyWeekDay): boolean {\r\n if (!this.temporaryEndDate?.date || !param.date || this._handledEndDate) return false;\r\n const date = format(param.date!, 'yyyy-MM-dd');\r\n const cmp = format(this.temporaryEndDate?.date!, 'yyyy-MM-dd');\r\n return (this.temporaryEndDate?.date && cmp === date) || false;\r\n }\r\n\r\n onSelectDate(event: Event, param: Utils.MonkeyWeekDay) {\r\n if (param?.isDisabled || !param.date) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n const date = format(param.date, 'yyyy-MM-dd');\r\n if (this._handledStartDate && this._handledEndDate) {\r\n this._handledStartDate = '';\r\n this._handledEndDate = '';\r\n }\r\n\r\n if (!this._handledStartDate) {\r\n this._handledStartDate = date;\r\n } else {\r\n this._handledEndDate = date;\r\n }\r\n\r\n const cmp = isAfter(this._handledStartDate, this._handledEndDate);\r\n\r\n if (this._handledStartDate && this._handledEndDate && cmp) {\r\n const start = this._handledStartDate;\r\n const end = this._handledEndDate;\r\n this._handledStartDate = end;\r\n this._handledEndDate = start;\r\n }\r\n\r\n this.onDate.next({\r\n startDate: this._handledStartDate,\r\n endDate: this._handledEndDate\r\n });\r\n }\r\n}\r\n","@if (i18nDictionary | async; as i18n) {\r\n <div class=\"header\">\r\n @if (!hidePrevious) {\r\n <monkey-icon-button\r\n size=\"sm\"\r\n icon=\"arrow-left\"\r\n type=\"secondary\"\r\n class=\"previous\"\r\n [disabled]=\"daysInMonth.blockPrev\"\r\n (click)=\"onNavigate.next('previous')\"\r\n >\r\n </monkey-icon-button>\r\n }\r\n {{ i18n?.['MONTHS']?.[month] }} {{ year }}\r\n @if (!hideNext) {\r\n <monkey-icon-button\r\n size=\"sm\"\r\n icon=\"arrow-right\"\r\n type=\"secondary\"\r\n class=\"next\"\r\n [disabled]=\"daysInMonth.blockNext\"\r\n (click)=\"onNavigate.next('next')\"\r\n >\r\n </monkey-icon-button>\r\n }\r\n </div>\r\n <div class=\"week-labels\">\r\n @for (day of i18n?.['WEEK-DAYS']; track day) {\r\n <span class=\"day\">{{ day }}</span>\r\n }\r\n </div>\r\n <div class=\"dates\">\r\n @for (day of daysInMonth.days; track $index) {\r\n <div\r\n class=\"day\"\r\n [class.disabled]=\"day!.isDisabled\"\r\n [class.in-range]=\"isInRange(day!)\"\r\n [class.selected]=\"isSelected(day!)\"\r\n [class.first]=\"isFirst(day!)\"\r\n [class.last]=\"isLast(day!)\"\r\n [class.in-range-temporary]=\"isInRangeTemporary(day!)\"\r\n [class.temporary-last]=\"isInLastTemporary(day!)\"\r\n (click)=\"onSelectDate($event, day!)\"\r\n (mouseenter)=\"temporaryEndDate = day!\"\r\n (mouseleave)=\"temporaryEndDate = null\"\r\n >\r\n {{ day!.date | date: 'd' }}\r\n @if (day?.isToday) {\r\n <span class=\"today\"></span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './month.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\nimport { MonkeyDictionaryService } from '../../../services/dictionary.service';\r\nimport * as Utils from '../utils';\r\n\r\n@Component({\r\n selector: 'monkey-date-range-quick-actions',\r\n imports: [CommonModule],\r\n templateUrl: './quick-actions.component.html',\r\n styleUrl: './quick-actions.component.scss',\r\n host: {\r\n 'data-testid': 'quick-actions',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyDateRangeQuickActionsComponent {\r\n @Output() onChange = new EventEmitter();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-date-range-month-quick-actions-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n selectedAction = '';\r\n\r\n readonly actions = Utils.getEnumKeys(Utils.MonkeyQuickActionsEnum);\r\n\r\n readonly i18nDictionary = inject(MonkeyDictionaryService).get('DATE-RANGE');\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n onHandleAction({ key, value }: { key: string; value: number }) {\r\n this.selectedAction = key;\r\n this.onChange.next(value);\r\n }\r\n}\r\n","@if (i18nDictionary | async; as i18n) {\r\n @for (item of actions; track item.key) {\r\n <div\r\n class=\"item\"\r\n [class.selected]=\"item.key === selectedAction\"\r\n (click)=\"onHandleAction(item)\"\r\n [attr.tabindex]=\"$index\"\r\n >\r\n {{ i18n?.['QUICK-ACTIONS']?.[item.key] }}\r\n </div>\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './quick-actions.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n booleanAttribute,\r\n Component,\r\n EventEmitter,\r\n HostListener,\r\n inject,\r\n Input,\r\n OnInit,\r\n Output\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { addDays, isAfter, isBefore, subDays } from 'date-fns';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyErrorDirective } from '../../directives/error';\r\nimport { MonkeyLabelDirective } from '../../directives/label';\r\nimport { MonkeyDictionaryService } from '../../services/dictionary.service';\r\nimport { MonkeyButtonComponent } from '../button';\r\nimport { MonkeyFormFieldModule } from '../form-field';\r\nimport { MonkeyInputModule } from '../input';\r\nimport { MonkeyDateRangeMonthComponent } from './month';\r\nimport { MonkeyDateRangeQuickActionsComponent } from './quick-actions';\r\nimport * as Utils from './utils';\r\n\r\ninterface Calendar {\r\n month: number;\r\n year: number;\r\n}\r\n\r\n@Component({\r\n selector: 'monkey-date-range',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MonkeyInputModule,\r\n MonkeyFormFieldModule,\r\n MonkeyLabelDirective,\r\n MonkeyErrorDirective,\r\n MonkeyButtonComponent,\r\n MonkeyDateRangeMonthComponent,\r\n MonkeyDateRangeQuickActionsComponent\r\n ],\r\n templateUrl: './date-range.component.html',\r\n styleUrl: './date-range.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-date-range',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyDateRangeComponent implements OnInit {\r\n @Input() set startDate(val: string) {\r\n this.handledStartDate = val;\r\n }\r\n\r\n @Input() set endDate(val: string) {\r\n this.handledEndDate = val;\r\n }\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideQuickAction!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideHeader!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideActions!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n hideSecondCalendar!: boolean;\r\n\r\n @Input({ transform: booleanAttribute })\r\n allowFastActionOnHeader!: boolean;\r\n\r\n @Input() set minDate(val: Date | string) {\r\n if (val) {\r\n this.handledMinDate = Utils.parseStringDate(val);\r\n }\r\n }\r\n\r\n @Input() set maxDate(val: Date | string) {\r\n if (val) {\r\n this.handledMaxDate = Utils.parseStringDate(val);\r\n }\r\n }\r\n\r\n @Output() onCancel = new EventEmitter();\r\n\r\n @Output() onDate = new EventEmitter();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-date-range-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n private _screenWidth: number = window.innerWidth;\r\n\r\n private _allowChangeFastAction = true;\r\n\r\n private _allowChangeSecondCalendar = true;\r\n\r\n private readonly _today = new Date();\r\n\r\n readonly i18nDictionary = inject(MonkeyDictionaryService).get('DATE-RANGE');\r\n\r\n handledStartDate!: string;\r\n\r\n handledEndDate!: string;\r\n\r\n firstCalendar!: Calendar;\r\n\r\n secondCalendar!: Calendar;\r\n\r\n isInvalidInterval = false;\r\n\r\n handledMinDate: string = Utils.getDefaultdates().minDate;\r\n\r\n handledMaxDate: string = Utils.getDefaultdates().maxDate;\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n private handleInitialValues() {\r\n const calendars = Utils.buildCalendars(this.handledStartDate || new Date());\r\n this.firstCalendar = calendars.firstCalendar;\r\n this.secondCalendar = calendars.secondCalendar;\r\n }\r\n\r\n private handleProperties() {\r\n if (this._screenWidth < 950) {\r\n if (this._allowChangeFastAction) {\r\n this.hideQuickAction = true;\r\n this.allowFastActionOnHeader = false;\r\n }\r\n if (this._allowChangeSecondCalendar) {\r\n this.hideSecondCalendar = true;\r\n }\r\n } else {\r\n if (this._allowChangeFastAction) {\r\n this.hideQuickAction = false;\r\n this.allowFastActionOnHeader = false;\r\n }\r\n if (this._allowChangeSecondCalendar) {\r\n this.hideSecondCalendar = false;\r\n }\r\n }\r\n }\r\n\r\n private handleInputChange(event: Event, isStart: boolean): void {\r\n const input = event.target as HTMLInputElement;\r\n const { value } = input;\r\n const [year] = value.split('-');\r\n if (`${Number(year)}`.length < 4) return;\r\n\r\n if (!input.checkValidity()) {\r\n event.preventDefault();\r\n input.value = '';\r\n this.isInvalidInterval = true;\r\n return;\r\n }\r\n\r\n this.isInvalidInterval = false;\r\n\r\n if (isStart) {\r\n this.handledStartDate = value;\r\n } else {\r\n this.handledEndDate = value;\r\n }\r\n\r\n if (this.hideActions) {\r\n this.onSubmit();\r\n }\r\n }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event: any) {\r\n this._screenWidth = (event.target as Window).innerWidth;\r\n this.handleProperties();\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.hideQuickAction) {\r\n this._allowChangeFastAction = false;\r\n }\r\n if (this.hideSecondCalendar) {\r\n this._allowChangeSecondCalendar = false;\r\n }\r\n if (this.allowFastActionOnHeader) {\r\n this._allowChangeFastAction = false;\r\n this.hideQuickAction = true;\r\n }\r\n\r\n this.handleInitialValues();\r\n this.handleProperties();\r\n }\r\n\r\n onHandleDate({ startDate, endDate }: { startDate: string; endDate: string }) {\r\n this.handledStartDate = startDate;\r\n this.handledEndDate = endDate;\r\n\r\n if (this.hideActions) {\r\n this.onSubmit();\r\n }\r\n }\r\n\r\n onSubmit() {\r\n this.onDate.next({\r\n startDate: this.handledStartDate ?? '',\r\n endDate: this.handledEndDate ?? ''\r\n });\r\n }\r\n\r\n onHandleQuickAction(event: number) {\r\n const isBackward = event < 0;\r\n const days = Math.abs(event);\r\n\r\n if (isBackward) {\r\n const baseDate = Utils.parseStringDate(\r\n this.handledEndDate || this.handledStartDate || this._today\r\n );\r\n\r\n let startDate: string | Date = subDays(baseDate, days);\r\n\r\n if (isBefore(startDate, this.handledMinDate)) {\r\n startDate = this.handledMinDate;\r\n }\r\n\r\n this.handledStartDate = Utils.parseStringDate(startDate);\r\n this.handledEndDate = Utils.parseStringDate(baseDate);\r\n } else {\r\n const baseDate = Utils.parseStringDate(\r\n this.handledStartDate || this.handledEndDate || this._today\r\n );\r\n\r\n let endDate: string | Date = addDays(baseDate, days);\r\n\r\n if (isAfter(endDate, this.handledMaxDate)) {\r\n endDate = this.handledMaxDate;\r\n }\r\n\r\n this.handledStartDate = Utils.parseStringDate(baseDate);\r\n this.handledEndDate = Utils.parseStringDate(endDate);\r\n }\r\n\r\n if (this.hideActions) {\r\n this.onSubmit();\r\n }\r\n }\r\n\r\n onChangeInputStartDate(event: Event) {\r\n this.handleInputChange(event, true);\r\n }\r\n\r\n onChangeInputEndDate(event: Event) {\r\n this.handleInputChange(event, false);\r\n }\r\n\r\n onDataChange(event: string, isStart: boolean) {\r\n if (isStart) {\r\n this.handledStartDate = event;\r\n this.handledEndDate = '';\r\n } else {\r\n this.handledEndDate = event;\r\n }\r\n\r\n if (this.hideActions) {\r\n this.onSubmit();\r\n }\r\n }\r\n\r\n onHandleNavigate(action: 'previous' | 'next') {\r\n if (!action) return;\r\n const date = new Date(this.firstCalendar.year, this.firstCalendar.month, 1);\r\n const calendars = Utils.buildCalendars(date, action);\r\n this.firstCalendar = calendars.firstCalendar;\r\n this.secondCalendar = calendars.secondCalendar;\r\n }\r\n}\r\n","@if (i18nDictionary | async; as i18n) {\r\n <div class=\"container-date-range-group\">\r\n @if (!hideQuickAction) {\r\n <div class=\"quick-actions\">\r\n <monkey-date-range-quick-actions (onChange)=\"onHandleQuickAction($event)\">\r\n </monkey-date-range-quick-actions>\r\n </div>\r\n }\r\n <div class=\"container-date-range\">\r\n @if (!hideHeader) {\r\n <div class=\"header\" [class.no-quick-action]=\"hideQuickAction\">\r\n @if (allowFastActionOnHeader) {\r\n <div class=\"quick-actions\">\r\n <monkey-date-range-quick-actions (onChange)=\"onHandleQuickAction($event)\">\r\n </monkey-date-range-quick-actions>\r\n </div>\r\n } @else {\r\n <div class=\"inputs\">\r\n <monkey-form-field hideAction enableClear size=\"sm\">\r\n <monkey-label>{{ i18n?.['START-DATE'] }}</monkey-label>\r\n <input\r\n type=\"date\"\r\n monkey-input\r\n id=\"startDate\"\r\n [(ngModel)]=\"handledStartDate\"\r\n (ngModelChange)=\"onDataChange($event, true)\"\r\n [min]=\"handledMinDate\"\r\n [max]=\"handledEndDate ? handledEndDate : handledMaxDate\"\r\n (change)=\"onChangeInputStartDate($event)\"\r\n />\r\n </monkey-form-field>\r\n <monkey-form-field hideAction enableClear size=\"sm\">\r\n <monkey-label>{{ i18n?.['END-DATE'] }}</monkey-label>\r\n <input\r\n type=\"date\"\r\n monkey-input\r\n id=\"endDate\"\r\n [(ngModel)]=\"handledEndDate\"\r\n (ngModelChange)=\"onDataChange($event, false)\"\r\n [min]=\"handledStartDate ? handledStartDate : ''\"\r\n [max]=\"handledMaxDate\"\r\n (change)=\"onChangeInputEndDate($event)\"\r\n />\r\n </monkey-form-field>\r\n </div>\r\n @if (isInvalidInterval) {\r\n <monkey-error>{{ i18n?.['INVALID'] }}</monkey-error>\r\n }\r\n }\r\n </div>\r\n }\r\n <div class=\"body\">\r\n <div class=\"calendars\">\r\n <monkey-date-range-month\r\n [month]=\"firstCalendar.month\"\r\n [year]=\"firstCalendar.year\"\r\n [startDate]=\"handledStartDate\"\r\n [endDate]=\"handledEndDate\"\r\n (onDate)=\"onHandleDate($event)\"\r\n (onNavigate)=\"onHandleNavigate($event)\"\r\n [hideNext]=\"!hideSecondCalendar\"\r\n [minDate]=\"handledMinDate\"\r\n [maxDate]=\"handledMaxDate\"\r\n >\r\n </monkey-date-range-month>\r\n @if (!hideSecondCalendar) {\r\n <monkey-date-range-month\r\n [month]=\"secondCalendar.month\"\r\n [year]=\"secondCalendar.year\"\r\n [startDate]=\"handledStartDate\"\r\n [endDate]=\"handledEndDate\"\r\n (onDate)=\"onHandleDate($event)\"\r\n (onNavigate)=\"onHandleNavigate($event)\"\r\n hidePrevious\r\n [minDate]=\"handledMinDate\"\r\n [maxDate]=\"handledMaxDate\"\r\n >\r\n </monkey-date-range-month>\r\n }\r\n </div>\r\n </div>\r\n @if (!hideActions) {\r\n <div class=\"actions\">\r\n <monkey-button size=\"sm\" type=\"secondary\" (click)=\"onCancel.next(null)\">\r\n {{ i18n?.ACTIONS?.CANCEL }}\r\n </monkey-button>\r\n <monkey-button\r\n size=\"sm\"\r\n (click)=\"onSubmit()\"\r\n [disabled]=\"!this.handledStartDate || !this.handledEndDate\"\r\n >\r\n {{ i18n?.ACTIONS?.APPLY }}\r\n </monkey-button>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './date-range.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n booleanAttribute,\r\n Component,\r\n HostBinding,\r\n inject,\r\n Input,\r\n input,\r\n InputSignal,\r\n InputSignalWithTransform,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeySize } from '../../interfaces';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-divider',\r\n standalone: true,\r\n styleUrl: './divider.component.scss',\r\n template: '',\r\n host: {\r\n 'data-testid': 'monkey-divider',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyDividerComponent {\r\n size: InputSignal<MonkeySize> = input<MonkeySize>('sm');\r\n\r\n vertical: InputSignalWithTransform<boolean, unknown> = input(false, {\r\n transform: booleanAttribute\r\n });\r\n\r\n @HostBinding('class')\r\n get classes(): string {\r\n return `${this.size()} ${this.vertical() ? 'vertical' : ''}`;\r\n }\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-divider-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './divider.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { IdGenerator } from '../../../utils/id-generator';\r\nimport { MonkeyButtonColor, MonkeyButtonType } from '../../interfaces/button';\r\nimport { MonkeySize } from '../../interfaces/sizes';\r\nimport { MonkeyButtonComponent } from '../button';\r\n\r\nexport type MonkeyDownloadButtonChangeEvent = {\r\n // eslint-disable-next-line no-use-before-define\r\n component: MonkeyDownloadButtonComponent;\r\n};\r\n\r\n@Component({\r\n selector: 'monkey-download-button',\r\n imports: [MonkeyButtonComponent],\r\n template: `\r\n <monkey-button\r\n [type]=\"type\"\r\n [color]=\"color\"\r\n [size]=\"size\"\r\n [class.has-progress]=\"hasProgress\"\r\n [disabled]=\"disabled || hasProgress\"\r\n (click)=\"onDownload()\"\r\n class=\"w-100\"\r\n >\r\n <div class=\"content-download\">\r\n @if (!loading) {\r\n <ng-content select=\"[first]\"></ng-content>\r\n }\r\n <span><ng-content></ng-content></span>\r\n @if (!loading) {\r\n <ng-content select=\"[last]\"></ng-content>\r\n }\r\n </div>\r\n\r\n @if (hasProgress) {\r\n <div\r\n class=\"content-download-progress\"\r\n [style.--mecx-button-progress]=\"hasProgress ? safeProgress + '%' : null\"\r\n >\r\n <span [class.pe-2]=\"enablleMargin\">{{ safeProgress }}%</span>\r\n </div>\r\n }\r\n </monkey-button>\r\n `,\r\n styleUrl: './download-button.component.scss',\r\n host: {\r\n '[attr.data-testid]': \"'monkey-download-button'\",\r\n class: 'mecx-download-button',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex'\r\n }\r\n})\r\nexport class MonkeyDownloadButtonComponent {\r\n @Input() progress: number = 0;\r\n\r\n @Input() disabled!: boolean;\r\n\r\n @Input() color: MonkeyButtonColor = 'default';\r\n\r\n @Input() size: MonkeySize = 'md';\r\n\r\n @Input() type: MonkeyButtonType = 'primary';\r\n\r\n @Input() loading!: boolean;\r\n\r\n @Input() tabIndex = -1;\r\n\r\n @Output() onChange = new EventEmitter<MonkeyDownloadButtonChangeEvent>();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-download-button-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n get safeProgress(): number {\r\n return Math.min(Math.max(this.progress, 1), 100);\r\n }\r\n\r\n get hasProgress(): boolean {\r\n return typeof this.progress === 'number' && this.progress > 0;\r\n }\r\n\r\n get enablleMargin(): boolean {\r\n return this.safeProgress === 100;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n onDownload() {\r\n this.onChange.emit({ component: this });\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './download-button.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './download-toast.component';\r\nexport * from './download-toast.constants';\r\nexport * from './download-toast-stack.component';","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport { computed, Injectable, signal } from '@angular/core';\nimport {\n MonkeyActiveFilter,\n MonkeyAutocompleteSuggestion,\n MonkeyComplexFilterCondition,\n MonkeyComplexFilterGroup,\n MonkeyComplexFilterOperator,\n MonkeyComplexFilterBarConfig,\n MonkeyFilterOption\n} from './filter-config.interface';\n\nexport interface MonkeyFilterBarState {\n search: string;\n filters: MonkeyActiveFilter[];\n complexQuery?: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MonkeyFilterBarService {\n private _configs = signal<Map<string, MonkeyComplexFilterBarConfig>>(new Map());\n private _activeFilters = signal<Map<string, MonkeyActiveFilter[]>>(new Map());\n private _searchValues = signal<Map<string, string>>(new Map());\n private _complexQueries = signal<Map<string, string>>(new Map());\n\n setConfig(storageKey: string, config: MonkeyComplexFilterBarConfig): void {\n this._configs.update((configs) => {\n const updated = new Map(configs);\n updated.set(storageKey, config);\n return updated;\n });\n }\n\n getConfig(storageKey: string): MonkeyComplexFilterBarConfig | undefined {\n return this._configs().get(storageKey);\n }\n\n config(storageKey: string) {\n return computed(() => this._configs().get(storageKey));\n }\n\n availableFilterOptions(storageKey: string): MonkeyFilterOption[] {\n const config = this._configs().get(storageKey);\n if (!config || !config.filterOptions) return [];\n const activeKeys = this._activeFilters().get(storageKey)?.map((f) => f.key) || [];\n return config.filterOptions.filter((option) => !activeKeys.includes(option.key));\n }\n\n getActiveFilters(storageKey: string): MonkeyActiveFilter[] {\n return this._activeFilters().get(storageKey) || [];\n }\n\n activeFilters(storageKey: string) {\n return computed(() => this._activeFilters().get(storageKey) || []);\n }\n\n isFilterActive(storageKey: string, filterKey: string): boolean {\n const filters = this._activeFilters().get(storageKey) || [];\n return filters.some((f) => f.key === filterKey);\n }\n\n setActiveFilters(storageKey: string, filters: MonkeyActiveFilter[]): void {\n this._activeFilters.update((filtersMap) => {\n const updated = new Map(filtersMap);\n updated.set(storageKey, [...filters]);\n return updated;\n });\n }\n\n addFilter(\n storageKey: string,\n option: MonkeyFilterOption,\n value: string | { startDate: string; endDate: string } | { min?: number; max?: number } | string[]\n ): void {\n if (this.isFilterActive(storageKey, option.key)) return;\n const displayText = this.formatFilterValuePlain(option, value);\n const activeFilter: MonkeyActiveFilter = {\n key: option.key,\n label: option.label,\n type: option.type,\n value,\n displayText,\n icon: option.icon\n };\n this._activeFilters.update((filters) => {\n const updated = new Map(filters);\n const currentFilters = updated.get(storageKey) || [];\n updated.set(storageKey, [...currentFilters, activeFilter]);\n return updated;\n });\n }\n\n updateFilter(\n storageKey: string,\n filterKey: string,\n option: MonkeyFilterOption,\n value: string | { startDate: string; endDate: string } | { min?: number; max?: number } | string[]\n ): void {\n const displayText = this.formatFilterValuePlain(option, value);\n const updatedFilter: MonkeyActiveFilter = {\n key: option.key,\n label: option.label,\n type: option.type,\n value,\n displayText,\n icon: option.icon\n };\n this._activeFilters.update((filters) => {\n const updated = new Map(filters);\n const currentFilters = updated.get(storageKey) || [];\n const index = currentFilters.findIndex((f) => f.key === filterKey);\n if (index !== -1) {\n const newFilters = [...currentFilters];\n newFilters[index] = updatedFilter;\n updated.set(storageKey, newFilters);\n }\n return updated;\n });\n }\n\n removeFilter(storageKey: string, filterKey: string): void {\n this._activeFilters.update((filters) => {\n const updated = new Map(filters);\n const currentFilters = updated.get(storageKey) || [];\n updated.set(storageKey, currentFilters.filter((f) => f.key !== filterKey));\n return updated;\n });\n }\n\n clearAllFilters(storageKey: string): void {\n this._activeFilters.update((filters) => {\n const updated = new Map(filters);\n updated.set(storageKey, []);\n return updated;\n });\n this.clearComplexQuery(storageKey);\n }\n\n getSearchValue(storageKey: string): string {\n return this._searchValues().get(storageKey) || '';\n }\n\n searchValue(storageKey: string) {\n return computed(() => this._searchValues().get(storageKey) || '');\n }\n\n setSearchValue(storageKey: string, value: string): void {\n this._searchValues.update((values) => {\n const updated = new Map(values);\n updated.set(storageKey, value);\n return updated;\n });\n }\n\n // ─── Complex query ──────────────────────────────────────────────────────────\n\n getComplexQuery(storageKey: string): string {\n return this._complexQueries().get(storageKey) || '';\n }\n\n setComplexQuery(storageKey: string, query: string): void {\n this._complexQueries.update((map) => {\n const updated = new Map(map);\n updated.set(storageKey, query);\n return updated;\n });\n }\n\n clearComplexQuery(storageKey: string): void {\n this._complexQueries.update((map) => {\n const updated = new Map(map);\n updated.delete(storageKey);\n return updated;\n });\n }\n\n getState(storageKey: string): MonkeyFilterBarState {\n const complexQuery = this.getComplexQuery(storageKey);\n return {\n search: this.getSearchValue(storageKey),\n filters: this.getActiveFilters(storageKey),\n ...(complexQuery ? { complexQuery } : {})\n };\n }\n\n state(storageKey: string) {\n return computed(() => ({\n search: this.getSearchValue(storageKey),\n filters: this.getActiveFilters(storageKey),\n complexQuery: this.getComplexQuery(storageKey) || undefined\n }));\n }\n\n // ─── Autocomplete engine ────────────────────────────────────────────────────\n\n /**\n * Returns autocomplete suggestions for the complex filter input.\n *\n * Token resolution (relative to cursorPos):\n * - Scan backwards from cursor over non-whitespace / non-paren chars → currentToken\n * - Token with operator (fieldKey[:<>]valuePrefix) → suggest status values\n * - Token without operator → suggest fields, AND/OR (after a complete term), and ( (at top level)\n */\n getAutocompleteSuggestions(\n storageKey: string,\n query: string,\n cursorPos: number\n ): MonkeyAutocompleteSuggestion[] {\n const config = this._configs().get(storageKey);\n if (!config?.filterOptions?.length) return [];\n\n const textBefore = query.substring(0, cursorPos);\n\n // Current word: scan back over non-whitespace, non-paren characters\n let tokenStart = cursorPos;\n while (tokenStart > 0 && !/[\\s()]/.test(textBefore[tokenStart - 1])) tokenStart--;\n const currentToken = textBefore.substring(tokenStart);\n\n // Token has an operator → suggest status values only\n const withOperator = currentToken.match(/^([a-zA-Z_][a-zA-Z0-9_]*)([:<>])(.*)$/);\n if (withOperator) {\n const fieldKey = withOperator[1];\n const valuePrefix = withOperator[3];\n const field = config.filterOptions.find((o) => o.key === fieldKey);\n if (field?.type === 'status' && field.statusOptions?.length) {\n return field.statusOptions\n .filter((s) => s.value.toLowerCase().startsWith(valuePrefix.toLowerCase()))\n .map((s) => ({\n type: 'value' as const,\n label: s.description,\n sublabel: s.value,\n insertValue: s.value\n }));\n }\n return [];\n }\n\n const items: MonkeyAutocompleteSuggestion[] = [];\n const fieldPrefix = currentToken.toLowerCase();\n\n // What comes just before the current token (trimmed)?\n const textBeforeToken = textBefore.substring(0, tokenStart).trimEnd();\n const lastNonSpace = textBeforeToken.at(-1) ?? '';\n\n // Unmatched open-paren count tells us whether we're inside a group\n const openCount = (textBefore.match(/\\(/g) ?? []).length;\n const closeCount = (textBefore.match(/\\)/g) ?? []).length;\n const parenDepth = openCount - closeCount;\n\n // A complete term or closing group precedes → AND/OR can follow\n const afterComplete =\n lastNonSpace === ')' ||\n /[a-zA-Z_][a-zA-Z0-9_]*[:<>]\\S+$/.test(textBeforeToken);\n\n if (afterComplete) {\n if ('AND'.startsWith(fieldPrefix.toUpperCase()))\n items.push({ type: 'logical', label: 'AND', insertValue: 'AND ' });\n if ('OR'.startsWith(fieldPrefix.toUpperCase()))\n items.push({ type: 'logical', label: 'OR', insertValue: 'OR ' });\n }\n\n // Suggest ( at top-level, but only when not directly after a complete term\n if (parenDepth === 0 && !afterComplete && '('.startsWith(fieldPrefix)) {\n items.push({ type: 'logical', label: '( grupo )', insertValue: '(' });\n }\n\n // Field names matching the current prefix (always, so typing after AND/OR still helps)\n config.filterOptions\n .filter((o) => o.key.toLowerCase().startsWith(fieldPrefix))\n .forEach((o) =>\n items.push({\n type: 'field',\n label: o.label,\n sublabel: o.key,\n insertValue: o.key,\n explanation: o.explanation\n })\n );\n\n return items;\n }\n\n /**\n * Parses a raw complex query string into structured groups.\n * Parenthesised expressions become a single group; bare conditions\n * each become their own single-condition group.\n *\n * Example: `(a:1 OR b:2) AND c:3` →\n * [{ conditions:[{a:1},{logicalOp:OR,b:2}] }, { logicalOp:AND, conditions:[{c:3}] }]\n */\n parseComplexQuery(raw: string): MonkeyComplexFilterGroup[] {\n if (!raw.trim()) return [];\n\n const groups: MonkeyComplexFilterGroup[] = [];\n let i = 0;\n let groupLogicalOp: 'AND' | 'OR' | undefined;\n\n const skipWS = () => {\n while (i < raw.length && raw[i] === ' ') i++;\n };\n\n const readWord = (): string => {\n const start = i;\n while (i < raw.length && raw[i] !== ' ' && raw[i] !== '(' && raw[i] !== ')') i++;\n return raw.substring(start, i);\n };\n\n const parseGroup = (): MonkeyComplexFilterCondition[] => {\n const conditions: MonkeyComplexFilterCondition[] = [];\n let condLogicalOp: 'AND' | 'OR' | undefined;\n while (i < raw.length && raw[i] !== ')') {\n skipWS();\n if (i >= raw.length || raw[i] === ')') break;\n const word = readWord();\n if (!word) { i++; continue; }\n const upper = word.toUpperCase();\n if (upper === 'AND' || upper === 'OR') {\n condLogicalOp = upper as 'AND' | 'OR';\n } else {\n const cond = this._parseConditionToken(word, condLogicalOp);\n if (cond) conditions.push(cond);\n condLogicalOp = undefined;\n }\n }\n return conditions;\n };\n\n while (i < raw.length) {\n skipWS();\n if (i >= raw.length) break;\n\n if (raw[i] === '(') {\n i++; // consume '('\n const conditions = parseGroup();\n if (raw[i] === ')') i++; // consume ')'\n if (conditions.length > 0) {\n groups.push({ ...(groupLogicalOp ? { logicalOp: groupLogicalOp } : {}), conditions });\n groupLogicalOp = undefined;\n }\n } else {\n const word = readWord();\n if (!word) { i++; continue; }\n const upper = word.toUpperCase();\n if (upper === 'AND' || upper === 'OR') {\n groupLogicalOp = upper as 'AND' | 'OR';\n } else {\n const cond = this._parseConditionToken(word, undefined);\n if (cond) {\n groups.push({ ...(groupLogicalOp ? { logicalOp: groupLogicalOp } : {}), conditions: [cond] });\n groupLogicalOp = undefined;\n }\n }\n }\n }\n\n return groups;\n }\n\n private _parseConditionToken(\n token: string,\n logicalOp?: 'AND' | 'OR'\n ): MonkeyComplexFilterCondition | null {\n const match = token.match(/^([a-zA-Z_][a-zA-Z0-9_]*)([:<>])(.+)$/);\n if (!match) return null;\n return {\n ...(logicalOp ? { logicalOp } : {}),\n field: match[1],\n operator: match[2] as MonkeyComplexFilterOperator,\n value: match[3].trim()\n };\n }\n\n private formatFilterValuePlain(\n option: MonkeyFilterOption,\n value: string | { startDate: string; endDate: string } | { min?: number; max?: number } | string[]\n ): string {\n switch (option.type) {\n case 'text':\n return value as string;\n\n case 'date': {\n const dateValue = value as { startDate: string; endDate: string };\n if (dateValue.startDate && dateValue.endDate) {\n return `${dateValue.startDate} - ${dateValue.endDate}`;\n }\n return '';\n }\n\n case 'currency': {\n const currencyValue = value as { min?: number; max?: number };\n if (currencyValue.min !== undefined && currencyValue.max !== undefined) {\n return `${currencyValue.min} - ${currencyValue.max}`;\n } else if (currencyValue.min !== undefined) {\n return `De ${currencyValue.min}`;\n } else if (currencyValue.max !== undefined) {\n return `Até ${currencyValue.max}`;\n }\n return '';\n }\n\n case 'status': {\n const statusValue = value as string[];\n if (statusValue?.length && option.statusOptions) {\n return statusValue\n .map((val) => option.statusOptions?.find((opt) => opt.value === val)?.description || val)\n .join(', ');\n }\n return '';\n }\n\n default:\n return String(value);\n }\n }\n}\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n computed,\r\n effect,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MonkeyInfoDirective } from '../../directives/info';\r\nimport { MonkeyPopoverDirective } from '../../directives/popover';\r\nimport { MonkeyPrefixDirective } from '../../directives/prefix';\r\nimport { MonkeyButtonComponent } from '../button';\r\nimport { MonkeyFormFieldModule } from '../form-field';\r\nimport { MonkeyIconButtonComponent } from '../icon-button';\r\nimport { MonkeyInputModule } from '../input';\r\nimport { MonkeyFilterBarService } from './complex-filter-bar.service';\r\nimport {\r\n MonkeyAutocompleteSuggestion,\r\n MonkeyComplexFilterResult,\r\n MonkeyComplexFilterBarConfig\r\n} from './filter-config.interface';\r\n\r\n@Component({\r\n selector: 'monkey-complex-filter-bar',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MonkeyFormFieldModule,\r\n MonkeyInputModule,\r\n MonkeyButtonComponent,\r\n MonkeyPrefixDirective,\r\n MonkeyInfoDirective,\r\n MonkeyPopoverDirective\r\n ],\r\n template: `\r\n <!-- Query input row -->\r\n <div class=\"complex-filter-bar-row\">\r\n <div class=\"complex-filter-bar-input-wrap\">\r\n <monkey-form-field\r\n class=\"complex-filter-bar-field complex-filter-bar-field--textarea\"\r\n size=\"sm\"\r\n [class.complex-filter-bar-field--invalid]=\"!!queryError\"\r\n >\r\n <textarea\r\n #queryInput\r\n monkey-input\r\n class=\"complex-filter-bar-input\"\r\n rows=\"1\"\r\n autocomplete=\"off\"\r\n [placeholder]=\"queryPlaceholder()\"\r\n [(ngModel)]=\"complexQuery\"\r\n (focus)=\"onInputFocus(queryInput)\"\r\n (input)=\"onTextareaInput(queryInput)\"\r\n (keyup)=\"onQueryInput(queryInput)\"\r\n (keydown)=\"onKeydown($event, queryInput)\"\r\n (blur)=\"onInputBlur()\"\r\n ></textarea>\r\n <monkey-prefix>\r\n <i class=\"mk-i mk-i-search fs-md\"></i>\r\n </monkey-prefix>\r\n <monkey-info>\r\n <span class=\"me-1\">Use : to equal, > to greater then, < to lower then.</span>\r\n <a href=\"javascript:void(0)\" class=\"mecx-link fw-regular fs-12\" (click)=\"onShowDocs($event)\">\r\n <span>Docs</span>\r\n </a>\r\n </monkey-info>\r\n </monkey-form-field>\r\n\r\n @if (queryError) {\r\n <p class=\"complex-filter-bar-error-msg\">{{ queryError }}</p>\r\n }\r\n\r\n @if (autocompleteItems.length > 0) {\r\n <div class=\"complex-filter-bar-autocomplete\">\r\n @for (item of autocompleteItems; track item.insertValue; let i = $index) {\r\n <div\r\n class=\"complex-filter-bar-autocomplete-item\"\r\n [class.active]=\"i === autocompleteActiveIndex\"\r\n (mousedown)=\"onSelectSuggestion(item, queryInput)\"\r\n >\r\n <span class=\"complex-filter-bar-autocomplete-badge complex-filter-bar-autocomplete-badge--{{ item.type }}\">\r\n {{ item.type === 'field' ? 'campo' : item.type === 'logical' ? 'lógico' : 'valor' }}\r\n </span>\r\n <span class=\"complex-filter-bar-autocomplete-label\">{{ item.label }}</span>\r\n @if (item.sublabel) {\r\n <span class=\"complex-filter-bar-autocomplete-sublabel\">{{ item.sublabel }}</span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <monkey-button size=\"sm\" type=\"primary\" [disabled]=\"!!queryError\" (click)=\"applyQuery()\">\r\n Aplicar\r\n </monkey-button>\r\n\r\n <div class=\"complex-filter-bar-extra-actions\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n\r\n <!-- Documentation panel popover -->\r\n <ng-template\r\n [monkeyPopover]=\"showDocsPanel\"\r\n [monkeyPopoverTarget]=\"docsPanelTarget\"\r\n [monkeyPopoverClosed]=\"closeDocs\"\r\n monkeyPopoverDir=\"ltr\"\r\n [monkeyPopoverHideHeader]=\"true\"\r\n >\r\n <div class=\"complex-filter-bar-docs-panel\">\r\n <div class=\"complex-filter-bar-docs-header\">\r\n <i class=\"mk-i mk-i-info fs-md\"></i>\r\n <span>Campos disponíveis</span>\r\n </div>\r\n <div class=\"complex-filter-bar-docs-body\">\r\n @for (opt of allFilterOptions(); track opt.key) {\r\n <div class=\"complex-filter-bar-docs-field\">\r\n <div class=\"complex-filter-bar-docs-field-row\">\r\n <code class=\"complex-filter-bar-docs-key\">{{ opt.key }}</code>\r\n <span class=\"complex-filter-bar-docs-label\">{{ opt.label }}</span>\r\n <div class=\"complex-filter-bar-docs-operators\">\r\n <span class=\"complex-filter-bar-docs-op\">:</span>\r\n @if (opt.type === 'currency' || opt.type === 'date') {\r\n <span class=\"complex-filter-bar-docs-op\">></span>\r\n <span class=\"complex-filter-bar-docs-op\"><</span>\r\n }\r\n </div>\r\n </div>\r\n @if (opt.explanation) {\r\n <p class=\"complex-filter-bar-docs-explanation\">{{ opt.explanation }}</p>\r\n }\r\n @if (opt.type === 'status' && opt.statusOptions) {\r\n <div class=\"complex-filter-bar-docs-values\">\r\n @for (s of opt.statusOptions; track s.value) {\r\n <code class=\"complex-filter-bar-docs-value-badge\">{{ s.value }}</code>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <div class=\"complex-filter-bar-docs-actions\">\r\n <monkey-button size=\"sm\" type=\"secondary\" (click)=\"closeDocs()\">\r\n Fechar\r\n </monkey-button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n `,\r\n styleUrl: './complex-filter-bar.component.scss',\r\n host: {\r\n '[attr.data-testid]': \"'monkey-complex-filter-bar'\",\r\n class: 'mecx-complex-filter-bar'\r\n }\r\n})\r\nexport class MonkeyComplexFilterBarComponent\r\n implements OnInit, OnChanges, AfterViewInit, OnDestroy\r\n{\r\n private _service = inject(MonkeyFilterBarService);\r\n\r\n key = input.required<string>();\r\n config = input<MonkeyComplexFilterBarConfig>();\r\n placeholder = input<string>();\r\n\r\n @Output() complexFilterChange = new EventEmitter<MonkeyComplexFilterResult>();\r\n\r\n @ViewChild('queryInput') private _queryInputRef?: ElementRef<HTMLTextAreaElement>;\r\n\r\n // Input state\r\n complexQuery = '';\r\n queryError = '';\r\n autocompleteItems: MonkeyAutocompleteSuggestion[] = [];\r\n autocompleteActiveIndex = -1;\r\n\r\n // Docs panel state\r\n showDocsPanel = false;\r\n docsPanelTarget: HTMLElement | null = null;\r\n\r\n serviceConfig = computed(() => {\r\n const k = this.key();\r\n return k ? this._service.getConfig(k) ?? this.config() : undefined;\r\n });\r\n\r\n allFilterOptions = computed(() => this.serviceConfig()?.filterOptions ?? []);\r\n\r\n queryPlaceholder = computed(\r\n () => this.placeholder() ?? 'campo:valor AND (campo>valor OR campo<valor)'\r\n );\r\n\r\n hasActiveQuery = computed(() => {\r\n const k = this.key();\r\n return k ? !!this._service.getComplexQuery(k) : false;\r\n });\r\n\r\n constructor() {\r\n effect(() => {\r\n const k = this.key();\r\n const cfg = this.config();\r\n if (k && cfg) this._service.setConfig(k, cfg);\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n const k = this.key();\r\n const cfg = this.config();\r\n if (k && cfg) this._service.setConfig(k, cfg);\r\n if (k) this.complexQuery = this._service.getComplexQuery(k);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.complexQuery && this._queryInputRef) {\r\n this._autoResize(this._queryInputRef.nativeElement);\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const k = this.key();\r\n const cfg = this.config();\r\n if (k && cfg && (changes['key'] || changes['config'])) {\r\n this._service.setConfig(k, cfg);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {}\r\n\r\n // ─── Validation ─────────────────────────────────────────────────────────────\r\n\r\n private validateQuery(query: string): string {\r\n if (!query.trim()) return '';\r\n\r\n // Check balanced parentheses\r\n let depth = 0;\r\n for (const ch of query) {\r\n if (ch === '(') depth++;\r\n else if (ch === ')') depth--;\r\n if (depth < 0) return 'Parênteses desbalanceados';\r\n }\r\n if (depth !== 0) return 'Parênteses desbalanceados';\r\n\r\n // Check field names only on tokens that already have an operator\r\n const validKeys = new Set(this.allFilterOptions().map((o) => o.key));\r\n const tokenPattern = /([a-zA-Z_][a-zA-Z0-9_]*)([:<>])/g;\r\n let match: RegExpExecArray | null;\r\n while ((match = tokenPattern.exec(query)) !== null) {\r\n if (!validKeys.has(match[1])) {\r\n return `Campo inválido: \"${match[1]}\"`;\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n // ─── Textarea helpers ────────────────────────────────────────────────────────\r\n\r\n private _autoResize(el: HTMLTextAreaElement): void {\r\n el.style.height = 'auto';\r\n el.style.height = `${el.scrollHeight}px`;\r\n }\r\n\r\n // ─── Query input handlers ───────────────────────────────────────────────────\r\n\r\n onInputFocus(textarea: HTMLTextAreaElement): void {\r\n const k = this.key();\r\n if (!k) return;\r\n this.autocompleteActiveIndex = -1;\r\n this.autocompleteItems = this._service.getAutocompleteSuggestions(\r\n k,\r\n textarea.value,\r\n textarea.selectionStart ?? textarea.value.length\r\n );\r\n }\r\n\r\n onTextareaInput(textarea: HTMLTextAreaElement): void {\r\n this._autoResize(textarea);\r\n }\r\n\r\n onQueryInput(textarea: HTMLTextAreaElement): void {\r\n const k = this.key();\r\n if (!k) return;\r\n this.queryError = this.validateQuery(textarea.value);\r\n this.autocompleteActiveIndex = -1;\r\n this.autocompleteItems = this._service.getAutocompleteSuggestions(\r\n k,\r\n textarea.value,\r\n textarea.selectionStart ?? textarea.value.length\r\n );\r\n }\r\n\r\n onKeydown(event: KeyboardEvent, textarea: HTMLTextAreaElement): void {\r\n if (event.key === 'Escape') {\r\n this.autocompleteItems = [];\r\n this.autocompleteActiveIndex = -1;\r\n return;\r\n }\r\n\r\n if (this.autocompleteItems.length > 0) {\r\n if (event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n this.autocompleteActiveIndex = Math.min(\r\n this.autocompleteActiveIndex + 1,\r\n this.autocompleteItems.length - 1\r\n );\r\n return;\r\n }\r\n if (event.key === 'ArrowUp') {\r\n event.preventDefault();\r\n this.autocompleteActiveIndex = Math.max(this.autocompleteActiveIndex - 1, -1);\r\n return;\r\n }\r\n if ((event.key === 'Enter' || event.key === 'Tab') && this.autocompleteActiveIndex >= 0) {\r\n event.preventDefault();\r\n this.onSelectSuggestion(this.autocompleteItems[this.autocompleteActiveIndex], textarea);\r\n return;\r\n }\r\n }\r\n\r\n // Ctrl+Enter / Cmd+Enter applies the query; plain Enter inserts a newline\r\n if (event.key === 'Enter' && (event.ctrlKey || event.metaKey)) {\r\n event.preventDefault();\r\n this.applyQuery();\r\n }\r\n }\r\n\r\n onSelectSuggestion(item: MonkeyAutocompleteSuggestion, textarea: HTMLTextAreaElement): void {\r\n const k = this.key();\r\n if (!k) return;\r\n\r\n const cursorPos = textarea.selectionStart ?? textarea.value.length;\r\n const textBefore = this.complexQuery.substring(0, cursorPos);\r\n const textAfter = this.complexQuery.substring(cursorPos);\r\n\r\n // Find start of current token (scan back over non-whitespace, non-paren chars)\r\n let tokenStart = cursorPos;\r\n while (tokenStart > 0 && !/[\\s()]/.test(textBefore[tokenStart - 1])) tokenStart--;\r\n\r\n let replacement: string;\r\n\r\n if (item.type === 'value') {\r\n const currentToken = textBefore.substring(tokenStart);\r\n const opMatch = currentToken.match(/^([a-zA-Z_][a-zA-Z0-9_]*)([:<>])(.*)$/);\r\n replacement = opMatch\r\n ? textBefore.substring(0, tokenStart) + opMatch[1] + opMatch[2] + item.insertValue\r\n : textBefore.substring(0, tokenStart) + item.insertValue;\r\n } else {\r\n replacement = textBefore.substring(0, tokenStart) + item.insertValue;\r\n }\r\n\r\n this.complexQuery = replacement + textAfter;\r\n this.queryError = this.validateQuery(this.complexQuery);\r\n this.autocompleteItems = [];\r\n this.autocompleteActiveIndex = -1;\r\n\r\n setTimeout(() => {\r\n textarea.focus();\r\n const newCursor = replacement.length;\r\n textarea.setSelectionRange(newCursor, newCursor);\r\n this._autoResize(textarea);\r\n this.autocompleteItems = this._service.getAutocompleteSuggestions(\r\n k,\r\n this.complexQuery,\r\n newCursor\r\n );\r\n });\r\n }\r\n\r\n onInputBlur(): void {\r\n setTimeout(() => {\r\n this.autocompleteItems = [];\r\n this.autocompleteActiveIndex = -1;\r\n }, 150);\r\n }\r\n\r\n applyQuery(): void {\r\n const k = this.key();\r\n if (!k) return;\r\n const trimmed = this.complexQuery.trim();\r\n if (!trimmed) {\r\n this.clearQuery();\r\n return;\r\n }\r\n this.queryError = this.validateQuery(trimmed);\r\n if (this.queryError) return;\r\n this._service.setComplexQuery(k, trimmed);\r\n const groups = this._service.parseComplexQuery(trimmed);\r\n this.complexFilterChange.emit({ raw: trimmed, groups });\r\n }\r\n\r\n clearQuery(): void {\r\n const k = this.key();\r\n if (k) this._service.clearComplexQuery(k);\r\n this.complexQuery = '';\r\n this.queryError = '';\r\n this.autocompleteItems = [];\r\n if (this._queryInputRef) this._autoResize(this._queryInputRef.nativeElement);\r\n this.complexFilterChange.emit({ raw: '', groups: [] });\r\n }\r\n\r\n // ─── Docs panel ─────────────────────────────────────────────────────────────\r\n\r\n onShowDocs(event: MouseEvent): void {\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n this.docsPanelTarget = event.currentTarget as HTMLElement;\r\n this.showDocsPanel = true;\r\n }\r\n\r\n closeDocs = () => {\r\n this.showDocsPanel = false;\r\n };\r\n}\r\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\n\nexport type MonkeyFilterType = 'text' | 'date' | 'currency' | 'status';\n\nexport interface MonkeyStatusOption {\n value: string;\n description: string;\n}\n\nexport interface MonkeyFilterOption {\n key: string;\n label: string;\n icon?: string;\n type: MonkeyFilterType;\n placeholder?: string;\n minDate?: Date | string;\n maxDate?: Date | string;\n currency?: string;\n statusOptions?: MonkeyStatusOption[];\n /** Human-readable explanation shown in the complex filter documentation panel */\n explanation?: string;\n}\n\nexport interface MonkeyActiveFilter {\n key: string;\n label: string;\n type: MonkeyFilterType;\n value: string | { startDate: string; endDate: string } | { min?: number; max?: number } | string[];\n displayText: string;\n icon?: string;\n}\n\nexport interface MonkeyComplexFilterBarConfig {\n filterOptions: MonkeyFilterOption[];\n searchPlaceholder?: string;\n}\n\n// ─── Complex filter types ────────────────────────────────────────────────────\n\nexport type MonkeyComplexFilterOperator = ':' | '>' | '<';\n\nexport interface MonkeyComplexFilterCondition {\n logicalOp?: 'AND' | 'OR';\n field: string;\n operator: MonkeyComplexFilterOperator;\n value: string;\n}\n\nexport interface MonkeyComplexFilterGroup {\n /** Logical operator connecting this group to the previous one */\n logicalOp?: 'AND' | 'OR';\n conditions: MonkeyComplexFilterCondition[];\n}\n\nexport interface MonkeyComplexFilterResult {\n raw: string;\n groups: MonkeyComplexFilterGroup[];\n}\n\nexport type MonkeyAutocompleteSuggestionType = 'field' | 'logical' | 'value';\n\nexport interface MonkeyAutocompleteSuggestion {\n type: MonkeyAutocompleteSuggestionType;\n label: string;\n /** Field key shown as secondary text for field suggestions */\n sublabel?: string;\n /** Text spliced into the query when the suggestion is selected */\n insertValue: string;\n explanation?: string;\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nexport * from './complex-filter-bar.component';\nexport * from './complex-filter-bar.service';\nexport * from './filter-config.interface';\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\n\nexport type MonkeyFilterBarType = 'text' | 'date' | 'currency' | 'status';\n\nexport interface MonkeyFilterBarStatusOption {\n readonly value: string;\n readonly description: string;\n}\n\nexport type MonkeyFilterOperator =\n | 'EQ'\n | 'NEQ'\n | 'LIKE'\n | 'NOT_LIKE'\n | 'STARTS_WITH'\n | 'ENDS_WITH'\n | 'IS_EMPTY'\n | 'BETWEEN'\n | 'GT'\n | 'LT'\n | 'BEFORE'\n | 'AFTER';\n\nexport type MonkeyFilterCondition = MonkeyFilterOperator | '';\n\nexport type MonkeyFilterConditionsByType = Partial<\n Record<MonkeyFilterBarType, readonly MonkeyFilterOperator[]>\n>;\n\nexport interface MonkeyFilterBarOption {\n readonly key: string;\n readonly label: string;\n readonly icon?: string;\n readonly type: MonkeyFilterBarType;\n\n readonly placeholder?: string;\n readonly minDate?: Date | string;\n readonly maxDate?: Date | string;\n readonly currency?: string;\n\n readonly statusOptions?: readonly MonkeyFilterBarStatusOption[];\n\n readonly conditions?: readonly MonkeyFilterOperator[];\n}\n\nexport interface MonkeyFilterBarConfig {\n readonly filterOptions: readonly MonkeyFilterBarOption[];\n\n readonly conditions?: MonkeyFilterConditionsByType;\n}\n\nexport type MonkeyFilterArity = 0 | 1 | 2;\n\nexport type MonkeyFilterPanel = 'none' | 'status' | 'field' | 'date-day' | 'date-range';\n\nexport type MonkeyFilterOperand =\n | { readonly kind: 'text'; readonly value: string }\n | { readonly kind: 'number'; readonly value: number }\n | { readonly kind: 'date'; readonly value: string }\n | { readonly kind: 'selection'; readonly values: readonly string[] };\n\nexport interface MonkeyAppliedFilter {\n readonly key: string;\n readonly label: string;\n readonly type: MonkeyFilterBarType;\n readonly condition: MonkeyFilterOperator;\n readonly operands: readonly MonkeyFilterOperand[];\n}\n\nexport interface MonkeyFilterRow {\n readonly key: string;\n readonly label: string;\n readonly icon?: string;\n readonly type: MonkeyFilterBarType;\n readonly condition: MonkeyFilterCondition;\n readonly operands: readonly MonkeyFilterOperand[];\n}\n\nconst CONDITIONS: Record<MonkeyFilterBarType, readonly MonkeyFilterOperator[]> = {\n text: ['LIKE', 'NOT_LIKE', 'STARTS_WITH', 'ENDS_WITH', 'IS_EMPTY'],\n currency: ['EQ', 'NEQ', 'BETWEEN', 'GT', 'LT'],\n date: ['EQ', 'NEQ', 'BETWEEN', 'BEFORE', 'AFTER'],\n status: ['EQ', 'NEQ']\n};\n\nconst SUPPORTED: Record<MonkeyFilterBarType, ReadonlySet<MonkeyFilterOperator>> = {\n text: new Set<MonkeyFilterOperator>([\n 'EQ',\n 'NEQ',\n 'LIKE',\n 'NOT_LIKE',\n 'STARTS_WITH',\n 'ENDS_WITH',\n 'BETWEEN',\n 'IS_EMPTY'\n ]),\n currency: new Set<MonkeyFilterOperator>(['EQ', 'NEQ', 'BETWEEN', 'GT', 'LT', 'IS_EMPTY']),\n date: new Set<MonkeyFilterOperator>(['EQ', 'NEQ', 'BETWEEN', 'BEFORE', 'AFTER', 'IS_EMPTY']),\n status: new Set<MonkeyFilterOperator>(['EQ', 'NEQ', 'IS_EMPTY'])\n};\n\nconst NO_OPERAND = new Set<MonkeyFilterCondition>(['IS_EMPTY']);\n\nconst TWO_OPERANDS = new Set<MonkeyFilterCondition>(['BETWEEN']);\n\nexport function supportedConditionsOf(type: MonkeyFilterBarType): readonly MonkeyFilterOperator[] {\n return SUPPORTED[type] ? [...SUPPORTED[type]] : [];\n}\n\nexport function conditionsOf(\n type: MonkeyFilterBarType,\n requested?: readonly MonkeyFilterOperator[]\n): readonly MonkeyFilterOperator[] {\n const fallback = CONDITIONS[type] ?? [];\n if (!requested?.length) return fallback;\n\n const supported = SUPPORTED[type];\n if (!supported) return fallback;\n\n const picked = requested.filter((operator, index) => {\n return supported.has(operator) && requested.indexOf(operator) === index;\n });\n\n return picked.length > 0 ? picked : fallback;\n}\n\nexport function conditionsForOption(\n option: Pick<MonkeyFilterBarOption, 'type' | 'conditions'> | undefined,\n byType?: MonkeyFilterConditionsByType\n): readonly MonkeyFilterOperator[] {\n if (!option) return [];\n return conditionsOf(option.type, option.conditions ?? byType?.[option.type]);\n}\n\nexport function arityOf(condition: MonkeyFilterCondition): MonkeyFilterArity {\n if (NO_OPERAND.has(condition)) return 0;\n if (TWO_OPERANDS.has(condition)) return 2;\n return 1;\n}\n\nexport function panelOf(\n type: MonkeyFilterBarType,\n condition: MonkeyFilterCondition\n): MonkeyFilterPanel {\n if (!condition || arityOf(condition) === 0) return 'none';\n\n switch (type) {\n case 'status':\n return 'status';\n case 'date':\n return arityOf(condition) === 2 ? 'date-range' : 'date-day';\n default:\n return 'field';\n }\n}\n\nexport function isComplete(row: MonkeyFilterRow): boolean {\n return !!row.condition && row.operands.length === arityOf(row.condition);\n}\n\nexport function appliedFrom(rows: readonly MonkeyFilterRow[]): MonkeyAppliedFilter[] {\n return rows.filter(isComplete).map((row) => {\n return {\n key: row.key,\n label: row.label,\n type: row.type,\n condition: row.condition as MonkeyFilterOperator,\n operands: row.operands\n };\n });\n}\n\nexport function withCondition(\n row: MonkeyFilterRow,\n condition: MonkeyFilterOperator\n): MonkeyFilterRow {\n const sameArity = arityOf(row.condition) === arityOf(condition);\n if (sameArity) return { ...row, condition };\n return { ...row, condition, operands: [] };\n}\n\nexport function withType(\n row: MonkeyFilterRow,\n next: { key: string; label: string; icon?: string; type: MonkeyFilterBarType },\n allowed: readonly MonkeyFilterOperator[] = conditionsOf(next.type)\n): MonkeyFilterRow {\n const condition = allowed.includes(row.condition as MonkeyFilterOperator) ? row.condition : '';\n return { ...next, condition, operands: [] };\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n NgZone,\n OnDestroy,\n signal,\n ViewEncapsulation,\n viewChild\n} from '@angular/core';\n\nexport type MonkeyScrollbarOrientation = 'horizontal' | 'vertical';\n\n/** `small` = 8px track (menus) · `medium` = 16px (page bar, what the table uses). */\nexport type MonkeyScrollbarSize = 'small' | 'medium';\n\n/**\n * Shortest the thumb may get, in px — matches the `--mecx-spaces-medium`\n * floor in the stylesheet. A very long list would otherwise give a 2px thumb,\n * too small to grab.\n */\nconst MIN_THUMB = 24;\n\n/**\n * A DRAWN scrollbar, not the native one styled — a native scrollbar can't\n * live outside the element that scrolls (e.g. below a table's rows, next to\n * its footer), and cross-browser track styling (radius, border) is\n * inconsistent enough that matching a design exactly isn't reliable with\n * `::-webkit-scrollbar`/`scrollbar-color` alone.\n *\n * It does NOT replace real scrolling: `target` keeps its own\n * `overflow: auto`, so keyboard, wheel and trackpad scrolling all keep\n * working — this is a draggable mirror drawn on top. That's also why it's\n * `aria-hidden`: a screen reader user scrolls the real region, and a second\n * widget announcing the same position would only add noise.\n */\n@Component({\n selector: 'monkey-scrollbar',\n templateUrl: './scrollbar.component.html',\n styleUrl: './scrollbar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'mecx-scrollbar',\n 'aria-hidden': 'true',\n '[class.mecx-scrollbar--horizontal]': \"orientation() === 'horizontal'\",\n '[class.mecx-scrollbar--vertical]': \"orientation() === 'vertical'\",\n '[class.mecx-scrollbar--small]': \"size() === 'small'\",\n '[class.mecx-scrollbar--medium]': \"size() === 'medium'\",\n '[class.mecx-scrollbar--inert]': '!scrollable()'\n }\n})\nexport class MonkeyScrollbarComponent implements OnDestroy {\n private readonly _zone = inject(NgZone);\n\n readonly orientation = input<MonkeyScrollbarOrientation>('horizontal');\n\n readonly size = input<MonkeyScrollbarSize>('medium');\n\n /** The element that actually scrolls. */\n readonly target = input.required<HTMLElement>();\n\n private readonly trackEl = viewChild.required<ElementRef<HTMLElement>>('track');\n\n /** Scrollable length of the content, in px. */\n private readonly total = signal(0);\n\n /** Visible length of the viewport, in px. */\n private readonly visible = signal(0);\n\n /** How far the target is scrolled, in px. */\n private readonly scrolled = signal(0);\n\n /** Length of the track the thumb slides along, in px. */\n private readonly trackLength = signal(0);\n\n protected readonly scrollable = computed(() => this.total() - this.visible() > 1);\n\n protected readonly thumbSize = computed(() => {\n const total = this.total();\n return `${total > 0 ? Math.min(1, this.visible() / total) * 100 : 100}%`;\n });\n\n /**\n * A px distance, applied as a `translate`, not as `left`/`top`: moving the\n * thumb then costs a composited transform instead of a layout pass on every\n * scroll frame. It has to be px rather than a percentage of the thumb\n * because the thumb has a minimum length — once that kicks in, a\n * percentage of its own (clamped) size no longer maps to track distance.\n */\n protected readonly thumbOffset = computed(() => {\n const total = this.total();\n const visible = this.visible();\n const track = this.trackLength();\n if (total <= 0 || track <= 0) return '0px';\n\n const thumb = Math.max(MIN_THUMB, (visible / total) * track);\n const free = Math.max(0, track - thumb);\n const progress = Math.min(1, Math.max(0, this.scrolled() / Math.max(1, total - visible)));\n return `${free * progress}px`;\n });\n\n private resizeObserver?: ResizeObserver;\n\n private observedTarget?: HTMLElement;\n\n /** Pending animation frame, 0 when none is queued. */\n private frame = 0;\n\n /** Whether the cached lengths need re-reading on the next frame. */\n private sizeStale = true;\n\n private readonly onScroll = () => this.schedule();\n\n /** Drag state. `null` = nobody is dragging. */\n private drag: { start: number; initialScroll: number } | null = null;\n\n constructor() {\n effect((onCleanup) => {\n const target = this.target();\n this.attach(target);\n onCleanup(() => this.detach());\n });\n }\n\n ngOnDestroy(): void {\n this.detach();\n }\n\n private attach(target: HTMLElement): void {\n this.detach();\n this.observedTarget = target;\n\n // Outside the Angular zone: a zone-patched 'scroll' listener costs a full\n // global change-detection pass per event. The signals `measure()` writes\n // still schedule change detection by themselves.\n this._zone.runOutsideAngular(() => {\n target.addEventListener('scroll', this.onScroll, { passive: true });\n\n // The target AND its content: the bar should disappear when the content\n // shrinks, not only when the container itself is resized — a column\n // removed from the table doesn't resize the scrolling wrapper, only how\n // far it needs to scroll. The track too, so the thumb's px offset stays\n // right when the bar itself changes width.\n this.resizeObserver = new ResizeObserver(() => this.schedule(true));\n this.resizeObserver.observe(target);\n this.resizeObserver.observe(this.trackEl().nativeElement);\n Array.from(target.children).forEach((child) => this.resizeObserver?.observe(child));\n });\n\n this.sizeStale = true;\n this.measure();\n }\n\n private detach(): void {\n this.observedTarget?.removeEventListener('scroll', this.onScroll);\n this.observedTarget = undefined;\n this.resizeObserver?.disconnect();\n this.resizeObserver = undefined;\n if (this.frame) cancelAnimationFrame(this.frame);\n this.frame = 0;\n }\n\n /**\n * Scroll events fire far more often than the screen refreshes, and each\n * measurement reads layout. Coalescing to one read per frame is what keeps\n * a long table from thrashing layout while it scrolls.\n */\n private schedule(resized = false): void {\n if (resized) this.sizeStale = true;\n if (this.frame) return;\n this.frame = this._zone.runOutsideAngular(() => {\n return requestAnimationFrame(() => {\n this.frame = 0;\n this.measure();\n });\n });\n }\n\n private measure(): void {\n const target = this.observedTarget;\n if (!target) return;\n\n const horizontal = this.orientation() === 'horizontal';\n\n // Only the scroll offset changes while scrolling; the lengths can't, so\n // re-reading them per frame would force layout for nothing.\n if (this.sizeStale) {\n this.sizeStale = false;\n const track = this.trackEl().nativeElement;\n this.total.set(horizontal ? target.scrollWidth : target.scrollHeight);\n this.visible.set(horizontal ? target.clientWidth : target.clientHeight);\n this.trackLength.set(horizontal ? track.clientWidth : track.clientHeight);\n }\n\n this.scrolled.set(horizontal ? target.scrollLeft : target.scrollTop);\n }\n\n protected onPointerDown(event: PointerEvent): void {\n const target = this.observedTarget;\n if (!target || !this.scrollable()) return;\n\n const horizontal = this.orientation() === 'horizontal';\n event.preventDefault();\n (event.target as HTMLElement).setPointerCapture(event.pointerId);\n\n this.drag = {\n start: horizontal ? event.clientX : event.clientY,\n initialScroll: horizontal ? target.scrollLeft : target.scrollTop\n };\n }\n\n protected onPointerMove(event: PointerEvent): void {\n const target = this.observedTarget;\n if (!this.drag || !target) return;\n\n const horizontal = this.orientation() === 'horizontal';\n const track = this.trackEl().nativeElement.getBoundingClientRect();\n const trackLength = horizontal ? track.width : track.height;\n if (trackLength <= 0) return;\n\n // One thumb pixel is worth (total / track) content pixels — without this\n // conversion, dragging moves at the wrong speed and the thumb drifts\n // away from the pointer.\n const total = horizontal ? target.scrollWidth : target.scrollHeight;\n const moved = (horizontal ? event.clientX : event.clientY) - this.drag.start;\n const destination = this.drag.initialScroll + moved * (total / trackLength);\n\n if (horizontal) target.scrollLeft = destination;\n else target.scrollTop = destination;\n }\n\n protected onPointerUp(event: PointerEvent): void {\n if (!this.drag) return;\n this.drag = null;\n (event.target as HTMLElement).releasePointerCapture?.(event.pointerId);\n }\n\n /** Clicking the track outside the thumb jumps the content there, centered on the click. */\n protected onTrackPointerDown(event: PointerEvent): void {\n const target = this.observedTarget;\n if (!target || !this.scrollable() || this.drag) return;\n\n const horizontal = this.orientation() === 'horizontal';\n const track = this.trackEl().nativeElement.getBoundingClientRect();\n const length = horizontal ? track.width : track.height;\n if (length <= 0) return;\n\n const point = horizontal ? event.clientX - track.left : event.clientY - track.top;\n const total = horizontal ? target.scrollWidth : target.scrollHeight;\n const visible = horizontal ? target.clientWidth : target.clientHeight;\n\n const destination = (point / length) * total - visible / 2;\n if (horizontal) target.scrollLeft = destination;\n else target.scrollTop = destination;\n }\n\n /**\n * Manual re-measure. Public on purpose: the automatic triggers (scroll,\n * ResizeObserver on the target and its children) cover what the browser\n * reports on its own — this is the escape hatch for what it doesn't, e.g.\n * a target swapped out from under the component.\n */\n remeasure(): void {\n this.sizeStale = true;\n this.measure();\n }\n}\n","<div #track class=\"mecx-scrollbar-track\" (pointerdown)=\"onTrackPointerDown($event)\">\n <div\n class=\"mecx-scrollbar-thumb\"\n [style.--mecx-scrollbar-thumb-size]=\"thumbSize()\"\n [style.--mecx-scrollbar-thumb-offset]=\"thumbOffset()\"\n (pointerdown)=\"onPointerDown($event)\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerup)=\"onPointerUp($event)\"\n (pointercancel)=\"onPointerUp($event)\"\n ></div>\n</div>\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nexport * from './scrollbar.component';\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n ViewEncapsulation\n} from '@angular/core';\n\n@Component({\n selector: 'monkey-filter-chip',\n templateUrl: './filter-chip.component.html',\n styleUrl: './filter-chip.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-testid': 'monkey-filter-chip',\n class: 'mecx-filter-chip',\n '[class.mecx-filter-chip--disabled]': 'disabled()'\n }\n})\nexport class MonkeyFilterChipComponent {\n readonly removeIcon = input<string>('trash');\n\n readonly removeLabel = input<string>('');\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly onRemove = output<void>();\n}\n","<ng-content></ng-content>\n<span class=\"mecx-filter-chip-action\">\n <button\n class=\"mecx-filter-chip-remove\"\n type=\"button\"\n [disabled]=\"disabled() || null\"\n [attr.aria-label]=\"removeLabel()\"\n (click)=\"onRemove.emit()\"\n >\n <i class=\"mk-i mk-i-{{ removeIcon() }}\" aria-hidden=\"true\"></i>\n </button>\n</span>\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n ViewEncapsulation\n} from '@angular/core';\nimport { MonkeyCheckboxComponent } from '../checkbox';\n\nexport type MonkeyFilterMenuItemProperty = 'text' | 'checkbox';\n\n@Component({\n selector: 'monkey-filter-menu-item',\n imports: [MonkeyCheckboxComponent],\n templateUrl: './filter-menu-item.component.html',\n styleUrl: './filter-menu-item.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-testid': 'monkey-filter-menu-item',\n class: 'mecx-filter-menu-item',\n role: 'option',\n '[class.mecx-filter-menu-item--disabled]': 'disabled()',\n '[class.mecx-filter-menu-item--selected]': 'selected()',\n '[attr.aria-selected]': 'selected() || checked()',\n '[attr.aria-disabled]': 'disabled() || null',\n '(click)': 'onClick()'\n }\n})\nexport class MonkeyFilterMenuItemComponent {\n readonly property = input<MonkeyFilterMenuItemProperty>('text');\n\n readonly leadIcon = input<string | null>(null);\n\n readonly label = input<string>('');\n\n readonly description = input<string | null>(null);\n\n readonly checked = input(false, { transform: booleanAttribute });\n\n readonly selected = input(false, { transform: booleanAttribute });\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly onItemClick = output<void>();\n\n protected onClick(): void {\n if (this.disabled()) return;\n this.onItemClick.emit();\n }\n}\n","@if (property() === 'checkbox') {\n <monkey-checkbox\n class=\"mecx-filter-menu-item-checkbox\"\n size=\"sm\"\n [value]=\"checked()\"\n [disabled]=\"disabled()\"\n [showFooter]=\"false\"\n ></monkey-checkbox>\n} @else if (leadIcon()) {\n <i class=\"mk-i mk-i-{{ leadIcon() }} mecx-filter-menu-item-icon\"></i>\n}\n\n<span class=\"mecx-filter-menu-item-text\">\n <span class=\"mecx-filter-menu-item-label\">{{ label() }}</span>\n @if (description()) {\n <span class=\"mecx-filter-menu-item-description\">{{ description() }}</span>\n }\n</span>\n@if (selected()) {\n <i class=\"mk-i mk-i-check mecx-filter-menu-item-check\"></i>\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n NgZone,\n OnDestroy,\n output,\n signal,\n ViewEncapsulation,\n viewChild\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MonkeyPrefixDirective } from '../../directives/prefix';\nimport { MonkeyFormFieldModule } from '../form-field';\nimport { MonkeyInputModule } from '../input';\n\n@Component({\n selector: 'monkey-filter-menu',\n imports: [FormsModule, MonkeyFormFieldModule, MonkeyInputModule, MonkeyPrefixDirective],\n templateUrl: './filter-menu.component.html',\n styleUrl: './filter-menu.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-testid': 'monkey-filter-menu',\n class: 'mecx-filter-menu'\n }\n})\nexport class MonkeyFilterMenuComponent implements OnDestroy {\n private readonly _zone = inject(NgZone);\n\n private readonly _items = viewChild<ElementRef<HTMLElement>>('items');\n\n private readonly _overflowing = signal(false);\n\n private _observer?: ResizeObserver;\n\n readonly showSearch = input(false, { transform: booleanAttribute });\n\n readonly searchPlaceholder = input<string>('');\n\n readonly showScroll = input(true, { transform: booleanAttribute });\n\n readonly maxHeight = input<number>(240);\n\n readonly onSearchChange = output<string>();\n\n protected searchValue = '';\n\n protected readonly scrolling = computed(() => {\n return this.showScroll() && this._overflowing();\n });\n\n constructor() {\n effect((onCleanup) => {\n const items = this._items()?.nativeElement;\n if (!items) return;\n\n this._zone.runOutsideAngular(() => {\n this._observer = new ResizeObserver(() => {\n this._overflowing.set(items.scrollHeight - items.clientHeight > 1);\n });\n this._observer.observe(items);\n Array.from(items.children).forEach((child) => {\n return this._observer?.observe(child);\n });\n });\n\n onCleanup(() => {\n return this.disconnect();\n });\n });\n }\n\n private disconnect(): void {\n this._observer?.disconnect();\n this._observer = undefined;\n }\n\n ngOnDestroy(): void {\n this.disconnect();\n }\n\n protected onSearchInput(value: string): void {\n this.searchValue = value;\n this.onSearchChange.emit(value);\n }\n}\n","@if (showSearch()) {\n <div class=\"mecx-filter-menu-search\">\n <monkey-form-field size=\"sm\" noFooterSpace>\n <input\n type=\"text\"\n monkey-input\n [placeholder]=\"searchPlaceholder()\"\n [ngModel]=\"searchValue\"\n (ngModelChange)=\"onSearchInput($event)\"\n />\n <monkey-prefix>\n <i class=\"mk-i mk-i-search fs-md\"></i>\n </monkey-prefix>\n </monkey-form-field>\n </div>\n}\n\n<div\n #items\n class=\"mecx-filter-menu-items\"\n [class.mecx-filter-menu-items--scroll]=\"showScroll()\"\n [class.mecx-filter-menu-items--scrolling]=\"scrolling()\"\n [style.max-height.px]=\"showScroll() ? maxHeight() : null\"\n>\n <ng-content></ng-content>\n</div>\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\n\ninterface Gaps {\n readonly top: number;\n readonly left: number;\n}\n\nexport type MonkeyMenuAlignment = 'start' | 'end';\n\nfunction horizontalOf(\n target: DOMRect,\n width: number,\n gap: number,\n alignment: MonkeyMenuAlignment\n): number {\n const atStart = target.left + gap;\n const atEnd = target.right - width - gap;\n const preferred = alignment === 'end' ? atEnd : atStart;\n\n const viewport = document.documentElement.clientWidth || 0;\n if (viewport <= 0) return preferred;\n\n const fits = (x: number): boolean => {\n return x >= 0 && x + width <= viewport;\n };\n if (fits(preferred)) return preferred;\n\n const opposite = alignment === 'end' ? atStart : atEnd;\n if (fits(opposite)) return opposite;\n\n return Math.max(0, Math.min(preferred, viewport - width));\n}\n\nfunction ownOffset(menu: HTMLElement): { x: number; y: number } {\n const raw = getComputedStyle(menu).translate;\n if (!raw || raw === 'none') return { x: 0, y: 0 };\n const [x, y] = raw.split(' ');\n return { x: parseFloat(x) || 0, y: parseFloat(y ?? '') || 0 };\n}\n\nfunction place(\n target: DOMRect,\n menu: HTMLElement,\n gaps: Gaps,\n alignment: MonkeyMenuAlignment\n): void {\n const own = ownOffset(menu);\n const appliedTop = parseFloat(menu.style.top) || 0;\n const appliedLeft = parseFloat(menu.style.left) || 0;\n\n const current = menu.getBoundingClientRect();\n const originTop = current.top - own.y - appliedTop;\n const originLeft = current.left - own.x - appliedLeft;\n\n const x = horizontalOf(target, current.width, gaps.left, alignment);\n const y = target.bottom + gaps.top;\n\n menu.style.top = `${y - originTop}px`;\n menu.style.left = `${x - originLeft}px`;\n}\n\nfunction scrollingAncestor(el: HTMLElement): HTMLElement | null {\n let node = el.parentElement;\n while (node) {\n const { overflowX, overflowY } = getComputedStyle(node);\n if (/(auto|scroll|hidden|clip)/.test(overflowX + overflowY)) return node;\n node = node.parentElement;\n }\n return null;\n}\n\nfunction outOfSight(trigger: HTMLElement, target: DOMRect): boolean {\n const vh = document.documentElement.clientHeight || 0;\n const vw = document.documentElement.clientWidth || 0;\n if (vh <= 0 || vw <= 0) return false;\n if (target.bottom <= 0 || target.top >= vh) return true;\n if (target.right <= 0 || target.left >= vw) return true;\n\n const scroller = scrollingAncestor(trigger);\n if (!scroller) return false;\n const rect = scroller.getBoundingClientRect();\n if (rect.width <= 0 || rect.height <= 0) return false;\n return (\n target.bottom <= rect.top ||\n target.top >= rect.bottom ||\n target.right <= rect.left ||\n target.left >= rect.right\n );\n}\n\nfunction readGaps(menu: HTMLElement): Gaps {\n const style = getComputedStyle(menu);\n return {\n top: parseFloat(style.marginTop) || 0,\n left: parseFloat(style.marginLeft) || 0\n };\n}\n\nexport function anchorMenu(\n trigger: HTMLElement,\n menu: HTMLElement,\n alignment: MonkeyMenuAlignment = 'start',\n onOutOfSight?: () => void\n): () => void {\n const gaps = readGaps(menu);\n\n if (!menu.style.top) {\n menu.style.top = '0px';\n menu.style.left = '0px';\n }\n\n const reposition = (): void => {\n const target = trigger.getBoundingClientRect();\n if (onOutOfSight && outOfSight(trigger, target)) {\n onOutOfSight();\n return;\n }\n place(target, menu, gaps, alignment);\n };\n\n const onTransitionEnd = (event: Event): void => {\n if ((event as TransitionEvent).propertyName === 'translate') reposition();\n };\n\n const onAnimationEnd = (event: Event): void => {\n const node = event.target as Node | null;\n if (node?.contains(menu)) reposition();\n };\n\n const observer = new ResizeObserver(() => {\n reposition();\n });\n observer.observe(menu);\n\n reposition();\n document.addEventListener('scroll', reposition, { capture: true, passive: true });\n document.addEventListener('transitionend', onTransitionEnd, { capture: true, passive: true });\n document.addEventListener('animationend', onAnimationEnd, { capture: true, passive: true });\n window.addEventListener('resize', reposition, { passive: true });\n\n return () => {\n observer.disconnect();\n document.removeEventListener('scroll', reposition, { capture: true });\n document.removeEventListener('transitionend', onTransitionEnd, { capture: true });\n document.removeEventListener('animationend', onAnimationEnd, { capture: true });\n window.removeEventListener('resize', reposition);\n };\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n input,\n output,\n ViewEncapsulation,\n viewChild\n} from '@angular/core';\nimport { anchorMenu } from './anchored-menu';\n\n@Component({\n selector: 'monkey-filter-segment',\n templateUrl: './filter-segment.component.html',\n styleUrl: './filter-segment.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-testid': 'monkey-filter-segment',\n class: 'mecx-filter-segment',\n '[class.mecx-filter-segment--open]': 'open()',\n '[class.mecx-filter-segment--filled]': 'filled()',\n '[class.mecx-filter-segment--disabled]': 'disabled()',\n '(document:pointerdown)': 'onDocumentPointerdown($event)',\n '(document:keydown.escape)': 'onEscape()'\n }\n})\nexport class MonkeyFilterSegmentComponent {\n private readonly _hostEl: ElementRef<HTMLElement> = inject(ElementRef);\n\n private readonly _menuEl = viewChild<ElementRef<HTMLElement>>('menu');\n\n readonly icon = input<string | null>(null);\n\n readonly text = input<string>('');\n\n readonly placeholder = input<string>('');\n\n readonly readonlySegment = input(false, { transform: booleanAttribute });\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly open = input(false, { transform: booleanAttribute });\n\n readonly onOpenChange = output<boolean>();\n\n readonly onSegmentClick = output<void>();\n\n readonly filled = computed(() => {\n return this.text().length > 0;\n });\n\n readonly label = computed(() => {\n return this.filled() ? this.text() : this.placeholder();\n });\n\n constructor() {\n effect((onCleanup) => {\n const menu = this._menuEl()?.nativeElement;\n if (!menu) return;\n\n onCleanup(anchorMenu(this._hostEl.nativeElement, menu, 'start'));\n });\n }\n\n private focusButton(): void {\n this._hostEl.nativeElement.querySelector<HTMLElement>('.mecx-filter-segment-btn')?.focus();\n }\n\n toggle(): void {\n if (this.disabled()) return;\n this.onSegmentClick.emit();\n if (this.readonlySegment()) return;\n this.onOpenChange.emit(!this.open());\n }\n\n onDocumentPointerdown(event: PointerEvent): void {\n if (!this.open()) return;\n const target = event.target as Node | null;\n if (target && this._hostEl.nativeElement.contains(target)) return;\n this.onOpenChange.emit(false);\n }\n\n onEscape(): void {\n if (!this.open()) return;\n this.onOpenChange.emit(false);\n this.focusButton();\n }\n\n closeAndFocus(): void {\n this.onOpenChange.emit(false);\n this.focusButton();\n }\n}\n","<button\n class=\"mecx-filter-segment-btn\"\n type=\"button\"\n [disabled]=\"disabled() || null\"\n [attr.aria-expanded]=\"readonlySegment() ? null : open()\"\n [attr.aria-haspopup]=\"readonlySegment() ? null : 'listbox'\"\n (click)=\"toggle()\"\n>\n @if (icon()) {\n <i class=\"mk-i mk-i-{{ icon() }} mecx-filter-segment-icon\" aria-hidden=\"true\"></i>\n }\n <span class=\"mecx-filter-segment-label\">{{ label() }}</span>\n</button>\n@if (open()) {\n <div\n #menu\n class=\"mecx-filter-segment-menu\"\n animate.enter=\"mecx-filter-segment-menu--entering\"\n animate.leave=\"mecx-filter-segment-menu--leaving\"\n >\n <ng-content></ng-content>\n </div>\n}\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n output,\r\n ViewEncapsulation,\r\n viewChild\r\n} from '@angular/core';\r\nimport { MonkeyButtonComponent } from '../button';\r\nimport { anchorMenu, type MonkeyMenuAlignment } from './anchored-menu';\r\n\r\nexport type MonkeyFilterTriggerVariant = 'text' | 'icon';\r\n\r\n@Component({\r\n selector: 'monkey-filter-trigger',\r\n imports: [MonkeyButtonComponent],\r\n templateUrl: './filter-trigger.component.html',\r\n styleUrl: './filter-trigger.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n 'data-testid': 'monkey-filter-trigger',\r\n class: 'mecx-filter-trigger',\r\n '[class.mecx-filter-trigger--text]': 'variant() === \"text\"',\r\n '[class.mecx-filter-trigger--icon]': 'variant() === \"icon\"',\r\n '[class.mecx-filter-trigger--open]': 'open()',\r\n '(document:pointerdown)': 'onDocumentPointerdown($event)',\r\n '(document:keydown.escape)': 'onEscape()'\r\n }\r\n})\r\nexport class MonkeyFilterTriggerComponent {\r\n private readonly _hostEl: ElementRef<HTMLElement> = inject(ElementRef);\r\n\r\n private readonly _menuEl = viewChild<ElementRef<HTMLElement>>('menu');\r\n\r\n readonly variant = input<MonkeyFilterTriggerVariant>('text');\r\n\r\n readonly icon = input<string>('filter');\r\n\r\n readonly text = input<string>('');\r\n\r\n readonly ariaLabel = input<string>('');\r\n\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n readonly immediateExit = input(false, { transform: booleanAttribute });\r\n\r\n readonly open = input(false, { transform: booleanAttribute });\r\n\r\n readonly alignment = input<MonkeyMenuAlignment | null>(null);\r\n\r\n readonly onOpenChange = output<boolean>();\r\n\r\n readonly ariaLabelAttr = computed(() => {\r\n return this.variant() === 'icon' ? this.ariaLabel() || null : null;\r\n });\r\n\r\n readonly menuAlignment = computed<MonkeyMenuAlignment>(() => {\r\n return this.alignment() ?? (this.variant() === 'text' ? 'start' : 'end');\r\n });\r\n\r\n constructor() {\r\n effect((onCleanup) => {\r\n const menu = this._menuEl()?.nativeElement;\r\n if (!menu) return;\r\n\r\n onCleanup(\r\n anchorMenu(this._hostEl.nativeElement, menu, this.menuAlignment(), () => {\r\n return this.onOpenChange.emit(false);\r\n })\r\n );\r\n });\r\n }\r\n\r\n toggle(): void {\r\n if (this.disabled()) return;\r\n this.onOpenChange.emit(!this.open());\r\n }\r\n\r\n onDocumentPointerdown(event: PointerEvent): void {\r\n if (!this.open()) return;\r\n const target = event.target as Node | null;\r\n if (target && this._hostEl.nativeElement.contains(target)) return;\r\n this.onOpenChange.emit(false);\r\n }\r\n\r\n onEscape(): void {\r\n if (!this.open()) return;\r\n this.onOpenChange.emit(false);\r\n this._hostEl.nativeElement\r\n .querySelector<HTMLElement>('.mecx-filter-trigger-btn button')\r\n ?.focus();\r\n }\r\n}\r\n","<monkey-button\n class=\"mecx-filter-trigger-btn\"\n type=\"secondary\"\n size=\"sm\"\n nativeType=\"button\"\n ariaHasPopup=\"listbox\"\n [disabled]=\"disabled()\"\n [ariaExpanded]=\"open()\"\n [ariaLabel]=\"ariaLabelAttr()\"\n (click)=\"toggle()\"\n>\n <i class=\"mk-i mk-i-{{ icon() }} mecx-filter-trigger-icon\" aria-hidden=\"true\"></i>\n @if (variant() === 'text') {\n <span class=\"mecx-filter-trigger-text\">{{ text() }}</span>\n }\n</monkey-button>\n@if (open()) {\n <div\n #menu\n class=\"mecx-filter-trigger-menu\"\n animate.enter=\"mecx-filter-trigger-menu--entering\"\n [animate.leave]=\"immediateExit() ? '' : 'mecx-filter-trigger-menu--leaving'\"\n >\n <ng-content></ng-content>\n </div>\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\n\nlet painted = false;\n\nif (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n painted = true;\n });\n });\n}\n\nexport function appPainted(): boolean {\n return painted;\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\n\nexport const FLIP_ATTR = 'data-flip-id';\n\nexport function measureFlip(container: HTMLElement): Map<string, DOMRect> {\n const before = new Map<string, DOMRect>();\n container.querySelectorAll<HTMLElement>(`[${FLIP_ATTR}]`).forEach((el) => {\n const id = el.getAttribute(FLIP_ATTR);\n if (id) before.set(id, el.getBoundingClientRect());\n });\n return before;\n}\n\nexport function animateFlip(\n container: HTMLElement,\n before: Map<string, DOMRect>,\n frozenClass: string\n): void {\n const moved: HTMLElement[] = [];\n\n container.querySelectorAll<HTMLElement>(`[${FLIP_ATTR}]`).forEach((el) => {\n const id = el.getAttribute(FLIP_ATTR);\n if (!id) return;\n\n const from = before.get(id);\n\n if (!from) return;\n\n const to = el.getBoundingClientRect();\n const dx = from.left - to.left;\n const dy = from.top - to.top;\n if (dx === 0 && dy === 0) return;\n\n el.classList.add(frozenClass);\n el.style.translate = `${dx}px ${dy}px`;\n moved.push(el);\n });\n\n if (moved.length === 0) return;\n\n void container.offsetWidth;\n\n moved.forEach((el) => {\n el.classList.remove(frozenClass);\n el.style.translate = '';\n });\n}\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\n\nimport { CurrencyPipe } from '@angular/common';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DEFAULT_CURRENCY_CODE,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n LOCALE_ID,\n output,\n signal,\n untracked,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { addDays, addMonths, format, parseISO, subDays, subMonths } from 'date-fns';\nimport { MonkeyDictionaryService } from '../../services';\nimport { MonkeyButtonComponent } from '../button';\nimport { MonkeyDateRangeComponent } from '../date-range';\nimport { MonkeyDividerComponent } from '../divider';\nimport { getCurrencySymbol, MonkeyFormFieldModule } from '../form-field';\nimport { MonkeyInputModule } from '../input';\nimport { MonkeyScrollbarComponent } from '../scrollbar';\nimport {\n appliedFrom,\n arityOf,\n conditionsForOption,\n isComplete,\n panelOf,\n withCondition,\n withType,\n type MonkeyAppliedFilter,\n type MonkeyFilterBarConfig,\n type MonkeyFilterBarOption,\n type MonkeyFilterCondition,\n type MonkeyFilterOperand,\n type MonkeyFilterOperator,\n type MonkeyFilterPanel,\n type MonkeyFilterRow\n} from './filter-bar-domain';\nimport { MonkeyFilterChipComponent } from './filter-chip.component';\nimport { MonkeyFilterMenuItemComponent } from './filter-menu-item.component';\nimport { MonkeyFilterMenuComponent } from './filter-menu.component';\nimport { MonkeyFilterSegmentComponent } from './filter-segment.component';\nimport { MonkeyFilterTriggerComponent } from './filter-trigger.component';\nimport { appPainted } from './first-paint';\nimport { animateFlip, FLIP_ATTR, measureFlip } from './flip';\n\ninterface OpenPanel {\n readonly key: string;\n readonly part: 'category' | 'condition' | 'value';\n}\n\ninterface FilterBarText {\n ADD: string;\n 'ADD-ARIA': string;\n REMOVE: string;\n CLEAR: string;\n SEARCH: string;\n 'SELECT-CONDITION': string;\n SELECT: string;\n CONFIRM: string;\n 'RANGE-FROM': string;\n 'RANGE-TO': string;\n SELECTED: string;\n DATE: Record<string, string>;\n OPERATOR: Record<string, string>;\n}\n\nconst DATE_SHORTCUTS: readonly {\n readonly key: string;\n readonly resolve: (today: Date) => { start: Date; end: Date };\n}[] = [\n { key: 'WEEK-AFTER', resolve: (t) => ({ start: t, end: addDays(t, 7) }) },\n { key: 'MONTH-AFTER', resolve: (t) => ({ start: t, end: addMonths(t, 1) }) },\n { key: 'QUARTER-AFTER', resolve: (t) => ({ start: t, end: addMonths(t, 3) }) },\n { key: 'WEEK-BEFORE', resolve: (t) => ({ start: subDays(t, 7), end: t }) },\n { key: 'MONTH-BEFORE', resolve: (t) => ({ start: subMonths(t, 1), end: t }) },\n { key: 'QUARTER-BEFORE', resolve: (t) => ({ start: subMonths(t, 3), end: t }) }\n];\n\nconst FROZEN = 'mecx-filter-bar-slot--frozen';\n\nconst OPERAND_DATE_FORMAT = 'yyyy-MM-dd';\n\nconst DEFAULT_DISPLAY_FORMAT = 'MM/dd/yyyy';\n\n@Component({\n selector: 'monkey-filter-bar',\n imports: [\n FormsModule,\n MonkeyButtonComponent,\n MonkeyDateRangeComponent,\n MonkeyDividerComponent,\n MonkeyFilterChipComponent,\n MonkeyFilterMenuComponent,\n MonkeyFilterMenuItemComponent,\n MonkeyFilterSegmentComponent,\n MonkeyFilterTriggerComponent,\n MonkeyFormFieldModule,\n MonkeyInputModule,\n MonkeyScrollbarComponent\n ],\n templateUrl: './filter-bar.component.html',\n styleUrl: './filter-bar.component.scss',\n providers: [CurrencyPipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-testid': 'monkey-filter-bar',\n class: 'mecx-filter-bar',\n '[class.mecx-filter-bar--disabled]': 'disabled()'\n }\n})\nexport class MonkeyFilterBarComponent {\n private readonly _hostEl: ElementRef<HTMLElement> = inject(ElementRef);\n\n private readonly _injector = inject(Injector);\n\n private readonly _currencyCode = inject(DEFAULT_CURRENCY_CODE);\n\n private readonly _localeId = inject(LOCALE_ID);\n\n private readonly _currencyPipe = inject(CurrencyPipe);\n\n private readonly _scrollbar = viewChild(MonkeyScrollbarComponent);\n\n private readonly _rowEl = viewChild.required<ElementRef<HTMLElement>>('rowEl');\n\n private readonly _text = toSignal<FilterBarText>(\n inject(MonkeyDictionaryService).get('FILTER-BAR')\n );\n\n private _commitTimer: ReturnType<typeof setTimeout> | null = null;\n\n private readonly _reported = signal<readonly MonkeyAppliedFilter[]>([]);\n\n readonly config = input<MonkeyFilterBarConfig>();\n\n readonly filters = input<readonly MonkeyAppliedFilter[]>([]);\n\n readonly onFiltersChange = output<readonly MonkeyAppliedFilter[]>();\n\n readonly dateFormat = input<string>(DEFAULT_DISPLAY_FORMAT);\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly debounce = input(0);\n\n readonly addLabel = input<string>('');\n\n readonly appPainted = appPainted;\n\n protected readonly rows = signal<readonly MonkeyFilterRow[]>([]);\n\n protected readonly openPanel = signal<OpenPanel | null>(null);\n\n protected readonly triggerOpen = signal(false);\n\n protected readonly calendarOpen = signal<string | null>(null);\n\n protected readonly categorySearch = signal('');\n\n protected readonly immediateTriggerExit = signal(false);\n\n protected readonly scrollVisible = signal(false);\n\n protected textValue = '';\n\n protected textValue2 = '';\n\n protected currencyValue: number | null = null;\n\n protected currencyValue2: number | null = null;\n\n protected statusValues: string[] = [];\n\n protected dateRange = { startDate: '', endDate: '' };\n\n protected dayValue = '';\n\n protected readonly options = computed(() => this.config()?.filterOptions ?? []);\n\n protected readonly conditionsByKey = computed(() => {\n const byType = this.config()?.conditions;\n return new Map(\n this.options().map((option) => [option.key, conditionsForOption(option, byType)])\n );\n });\n\n protected readonly labels = computed(() => {\n const text = this._text();\n const add = this.addLabel().trim();\n return {\n add: add || (text?.ADD ?? ''),\n addAria: add || (text?.['ADD-ARIA'] ?? ''),\n clear: text?.CLEAR ?? '',\n search: text?.SEARCH ?? '',\n selectCondition: text?.['SELECT-CONDITION'] ?? '',\n select: text?.SELECT ?? '',\n confirm: text?.CONFIRM ?? '',\n rangeFrom: text?.['RANGE-FROM'] ?? '',\n rangeTo: text?.['RANGE-TO'] ?? '',\n remove: text?.REMOVE ?? ''\n };\n });\n\n protected readonly dateShortcuts = computed(() => {\n const date = this._text()?.DATE ?? {};\n return [...DATE_SHORTCUTS.map((shortcut) => shortcut.key), 'CUSTOM'].map((key) => {\n return { key, label: date[key] ?? '' };\n });\n });\n\n protected readonly addOptions = computed(() => {\n const taken = new Set(this.rows().map((row) => row.key));\n return this.matchingSearch(this.options().filter((option) => !taken.has(option.key)));\n });\n\n protected readonly canAddFilter = computed(() => {\n const taken = new Set(this.rows().map((row) => row.key));\n return this.options().some((option) => !taken.has(option.key));\n });\n\n protected readonly changeOptions = computed(() => this.matchingSearch(this.options()));\n\n protected readonly triggerVariant = computed(() => {\n return this.rows().length === 0 ? 'text' : 'icon';\n });\n\n protected readonly triggerIcon = computed(() => {\n return this.rows().length === 0 ? 'filter' : 'add-plus';\n });\n\n protected readonly triggerFlipId = computed(() => {\n return this.rows().length === 0 ? 'trigger-text' : 'trigger-icon';\n });\n\n constructor() {\n effect(() => {\n const incoming = this.filters();\n untracked(() => {\n if (this.sameAsRows(incoming)) return;\n this._reported.set(incoming);\n this.rows.set(\n incoming.map((filter) => {\n const option = this.options().find((item) => item.key === filter.key);\n return {\n key: filter.key,\n label: filter.label,\n icon: option?.icon,\n type: filter.type,\n condition: filter.condition,\n operands: filter.operands\n };\n })\n );\n this.scheduleRemeasure();\n });\n });\n\n effect(() => {\n if (!this.disabled()) return;\n untracked(() => {\n this.triggerOpen.set(false);\n this.closePanel();\n });\n });\n\n const destroyRef = inject(DestroyRef);\n destroyRef.onDestroy(() => this.cancelCommit());\n\n afterNextRender(() => {\n const observer = new ResizeObserver(() => this.syncScrollbar());\n observer.observe(this._rowEl().nativeElement);\n destroyRef.onDestroy(() => observer.disconnect());\n });\n }\n\n private autoCondition(\n row: MonkeyFilterRow,\n allowed: readonly MonkeyFilterOperator[]\n ): MonkeyFilterRow {\n if (row.condition || allowed.length !== 1) return row;\n return { ...row, condition: allowed[0] };\n }\n\n private askForAnswer(row: MonkeyFilterRow): void {\n if (isComplete(row)) {\n this.resetDraft();\n this.openPanel.set(null);\n return;\n }\n\n this.seedDraft(row);\n this.openPanel.set({ key: row.key, part: 'value' });\n }\n\n private seedDraft(row: MonkeyFilterRow): void {\n this.resetDraft();\n this.calendarOpen.set(null);\n\n const [first, second] = row.operands;\n\n switch (this.panelFor(row)) {\n case 'status':\n this.statusValues = first?.kind === 'selection' ? [...first.values] : [];\n break;\n case 'field':\n if (row.type === 'currency') {\n this.currencyValue = first?.kind === 'number' ? first.value : null;\n this.currencyValue2 = second?.kind === 'number' ? second.value : null;\n } else {\n this.textValue = first?.kind === 'text' ? first.value : '';\n this.textValue2 = second?.kind === 'text' ? second.value : '';\n }\n break;\n case 'date-day':\n this.dayValue = first?.kind === 'date' ? first.value : '';\n break;\n case 'date-range':\n this.dateRange = {\n startDate: first?.kind === 'date' ? first.value : '',\n endDate: second?.kind === 'date' ? second.value : ''\n };\n\n if (this.dateRange.startDate) this.calendarOpen.set(row.key);\n break;\n default:\n break;\n }\n }\n\n private readDraft(row: MonkeyFilterRow): MonkeyFilterOperand[] | null {\n const range = this.isRange(row);\n\n switch (this.panelFor(row)) {\n case 'status': {\n if (this.statusValues.length === 0) return null;\n return [{ kind: 'selection', values: [...this.statusValues] }];\n }\n\n case 'field': {\n if (row.type === 'currency') {\n const from = this.currencyValue;\n if (from === null || from === undefined) return null;\n if (!range) return [{ kind: 'number', value: from }];\n\n const to = this.currencyValue2;\n if (to === null || to === undefined) return null;\n\n const [low, high] = from <= to ? [from, to] : [to, from];\n return [\n { kind: 'number', value: low },\n { kind: 'number', value: high }\n ];\n }\n\n const text = this.textValue.trim();\n if (!text) return null;\n if (!range) return [{ kind: 'text', value: text }];\n\n const text2 = this.textValue2.trim();\n if (!text2) return null;\n return [\n { kind: 'text', value: text },\n { kind: 'text', value: text2 }\n ];\n }\n\n case 'date-day': {\n if (!this.dayValue) return null;\n return [{ kind: 'date', value: this.dayValue }];\n }\n\n case 'date-range': {\n const { startDate, endDate } = this.dateRange;\n if (!startDate || !endDate) return null;\n return [\n { kind: 'date', value: startDate },\n { kind: 'date', value: endDate }\n ];\n }\n\n default:\n return null;\n }\n }\n\n private money(value: number): string {\n const currency = this._currencyCode || 'BRL';\n const amount = this._currencyPipe.transform(\n value,\n currency,\n '',\n '1.2-2',\n this._localeId || 'pt-BR'\n );\n\n if (amount === null) return '';\n\n const symbol = getCurrencySymbol(currency);\n\n return symbol ? `${symbol} ${amount}` : amount;\n }\n\n private showDate(iso: string): string {\n if (!iso) return '';\n const parsed = parseISO(iso);\n\n if (Number.isNaN(parsed.getTime())) return iso;\n return format(parsed, this.dateFormat() || DEFAULT_DISPLAY_FORMAT);\n }\n\n private open(key: string, part: OpenPanel['part']): void {\n this.openPanel.set({ key, part });\n }\n\n private closePanel(): void {\n this.openPanel.set(null);\n this.calendarOpen.set(null);\n this.resetDraft();\n }\n\n private optionFor(optionKey: string): MonkeyFilterBarOption | undefined {\n return this.options().find((option) => option.key === optionKey);\n }\n\n private matchingSearch(options: readonly MonkeyFilterBarOption[]): MonkeyFilterBarOption[] {\n const term = this.categorySearch().trim().toLowerCase();\n if (!term) return [...options];\n return options.filter((option) => option.label.toLowerCase().includes(term));\n }\n\n private resetDraft(): void {\n this.textValue = '';\n this.textValue2 = '';\n this.currencyValue = null;\n this.currencyValue2 = null;\n this.statusValues = [];\n this.dateRange = { startDate: '', endDate: '' };\n this.dayValue = '';\n }\n\n private sameAsRows(incoming: readonly MonkeyAppliedFilter[]): boolean {\n const current = appliedFrom(this.rows());\n if (current.length !== incoming.length) return false;\n return current.every((filter, index) => {\n const other = incoming[index];\n return (\n filter.key === other.key &&\n filter.condition === other.condition &&\n JSON.stringify(filter.operands) === JSON.stringify(other.operands)\n );\n });\n }\n\n private commit(): void {\n this.cancelCommit();\n\n if (this.sameAsRows(this._reported())) return;\n\n const wait = this.debounce();\n if (wait <= 0) {\n this.publish();\n return;\n }\n\n this._commitTimer = setTimeout(() => {\n this._commitTimer = null;\n this.publish();\n }, wait);\n }\n\n private publish(): void {\n const applied = appliedFrom(this.rows());\n this._reported.set(applied);\n this.onFiltersChange.emit(applied);\n }\n\n private cancelCommit(): void {\n if (this._commitTimer === null) return;\n clearTimeout(this._commitTimer);\n this._commitTimer = null;\n }\n\n private releaseFromFlow(container: HTMLElement, leaving: readonly string[]): void {\n leaving.forEach((id) => {\n const slot = container.querySelector<HTMLElement>(`[${FLIP_ATTR}=\"${id}\"]`);\n if (!slot) return;\n slot.style.left = `${slot.offsetLeft}px`;\n slot.style.top = `${slot.offsetTop}px`;\n slot.style.position = 'absolute';\n });\n }\n\n private followEnd(container: HTMLElement): void {\n const row = container.querySelector<HTMLElement>('.mecx-filter-bar-row');\n if (!row) return;\n\n const last = this.lastMovingSlot(row);\n if (!last) return;\n\n const room = parseFloat(getComputedStyle(row).paddingInlineEnd) || 0;\n const excess = last.getBoundingClientRect().right + room - row.getBoundingClientRect().right;\n\n if (excess <= 0) return;\n row.scrollLeft += excess;\n }\n\n private lastMovingSlot(row: HTMLElement): HTMLElement | null {\n const slots = Array.from(row.querySelectorAll<HTMLElement>(`[${FLIP_ATTR}]`));\n for (let index = slots.length - 1; index >= 0; index -= 1) {\n if (getComputedStyle(slots[index]).position !== 'sticky') return slots[index];\n }\n return null;\n }\n\n private withFlip(\n mutate: () => void,\n options: { leaving?: readonly string[]; follow?: boolean } = {}\n ): void {\n const { leaving = [], follow = true } = options;\n const container = this._hostEl.nativeElement;\n const before = measureFlip(container);\n this.releaseFromFlow(container, leaving);\n\n mutate();\n\n afterNextRender(\n () => {\n if (follow) this.followEnd(container);\n this.syncScrollbar();\n animateFlip(container, before, FROZEN);\n this.immediateTriggerExit.set(false);\n },\n { injector: this._injector }\n );\n }\n\n private scheduleRemeasure(): void {\n afterNextRender(() => this.syncScrollbar(), { injector: this._injector });\n }\n\n private rowOverflows(): boolean {\n const row = this._rowEl().nativeElement;\n return row.scrollWidth - row.clientWidth > 1;\n }\n\n private syncScrollbar(): void {\n this._scrollbar()?.remeasure();\n this.scrollVisible.set(this.rowOverflows());\n }\n\n protected onSlotSettled(event: Event): void {\n const slot = event.target as HTMLElement | null;\n if (!slot?.classList.contains('mecx-filter-bar-slot')) return;\n\n this.syncScrollbar();\n }\n\n protected operatorLabel(operator: MonkeyFilterCondition): string {\n if (!operator) return '';\n return this._text()?.OPERATOR?.[operator] ?? '';\n }\n\n protected isOpen(rowKey: string, part: OpenPanel['part']): boolean {\n const panel = this.openPanel();\n return !!panel && panel.key === rowKey && panel.part === part;\n }\n\n protected isFilterActive(optionKey: string): boolean {\n return this.rows().some((row) => row.key === optionKey);\n }\n\n protected needsDivider(options: readonly MonkeyFilterBarOption[], index: number): boolean {\n return index > 0 && options[index].type !== options[index - 1].type;\n }\n\n protected conditionsFor(row: MonkeyFilterRow): readonly MonkeyFilterOperator[] {\n return (\n this.conditionsByKey().get(row.key) ??\n conditionsForOption({ type: row.type }, this.config()?.conditions)\n );\n }\n\n protected panelFor(row: MonkeyFilterRow): MonkeyFilterPanel {\n return panelOf(row.type, row.condition);\n }\n\n protected hasValueSegment(row: MonkeyFilterRow): boolean {\n return this.panelFor(row) !== 'none';\n }\n\n protected isRange(row: MonkeyFilterRow): boolean {\n return arityOf(row.condition) === 2;\n }\n\n protected displayOf(row: MonkeyFilterRow): string {\n const [first, second] = row.operands;\n\n switch (this.panelFor(row)) {\n case 'status': {\n if (first?.kind !== 'selection' || first.values.length === 0) return '';\n if (first.values.length > 1) {\n return (this._text()?.SELECTED ?? '').replace('{count}', String(first.values.length));\n }\n const option = this.statusOptionsOf(row).find((item) => item.value === first.values[0]);\n return option?.description ?? first.values[0];\n }\n\n case 'field': {\n const write = (operand?: MonkeyFilterOperand): string => {\n if (operand?.kind === 'number') return this.money(operand.value);\n if (operand?.kind === 'text') return operand.value;\n return '';\n };\n if (!this.isRange(row)) return write(first);\n return `${write(first)} – ${write(second)}`;\n }\n\n case 'date-day':\n return first?.kind === 'date' ? this.showDate(first.value) : '';\n\n case 'date-range': {\n if (first?.kind !== 'date' || second?.kind !== 'date') return '';\n return `${this.showDate(first.value)} – ${this.showDate(second.value)}`;\n }\n\n default:\n return '';\n }\n }\n\n protected valuePlaceholder(row: MonkeyFilterRow): string {\n return this.optionFor(row.key)?.placeholder ?? this.labels().select;\n }\n\n protected statusOptionsOf(row: MonkeyFilterRow) {\n return this.optionFor(row.key)?.statusOptions ?? [];\n }\n\n protected minDateOf(row: MonkeyFilterRow): Date | string {\n return this.optionFor(row.key)?.minDate ?? '';\n }\n\n protected maxDateOf(row: MonkeyFilterRow): Date | string {\n return this.optionFor(row.key)?.maxDate ?? '';\n }\n\n protected onSelectCategory(index: number): void {\n const option = this.addOptions()[index];\n if (!option) return;\n\n this.immediateTriggerExit.set(true);\n\n const row = this.autoCondition(\n {\n key: option.key,\n label: option.label,\n icon: option.icon,\n type: option.type,\n condition: '',\n operands: []\n },\n this.conditionsByKey().get(option.key) ?? []\n );\n\n this.withFlip(() => {\n this.triggerOpen.set(false);\n this.categorySearch.set('');\n this.resetDraft();\n this.calendarOpen.set(null);\n\n this.rows.update((rows) => [...rows, row]);\n\n if (row.condition) this.askForAnswer(row);\n else this.openPanel.set({ key: option.key, part: 'condition' });\n });\n\n if (row.condition) this.commit();\n }\n\n protected onChangeCategory(row: MonkeyFilterRow, index: number): void {\n const option = this.changeOptions()[index];\n if (!option) return;\n\n if (option.key === row.key) {\n this.open(row.key, 'condition');\n return;\n }\n\n if (this.isFilterActive(option.key)) return;\n\n this.withFlip(\n () => {\n this.resetDraft();\n this.calendarOpen.set(null);\n this.categorySearch.set('');\n\n const allowed = conditionsForOption(option, this.config()?.conditions);\n const next = this.autoCondition(\n withType(\n row,\n {\n key: option.key,\n label: option.label,\n icon: option.icon,\n type: option.type\n },\n allowed\n ),\n allowed\n );\n this.rows.update((rows) => rows.map((item) => (item.key === row.key ? next : item)));\n\n if (next.condition) this.askForAnswer(next);\n else this.openPanel.set({ key: next.key, part: 'condition' });\n },\n\n { leaving: [row.key], follow: false }\n );\n\n this.commit();\n }\n\n protected onSelectCondition(row: MonkeyFilterRow, condition: MonkeyFilterOperator): void {\n const next = withCondition(row, condition);\n\n this.withFlip(() => {\n this.rows.update((rows) => rows.map((item) => (item.key === row.key ? next : item)));\n this.calendarOpen.set(null);\n this.askForAnswer(next);\n });\n\n this.commit();\n }\n\n protected onTriggerOpenChange(open: boolean): void {\n this.categorySearch.set('');\n this.triggerOpen.set(open);\n if (!open) return;\n this.openPanel.set(null);\n this.calendarOpen.set(null);\n this.resetDraft();\n }\n\n protected onCategoryOpenChange(row: MonkeyFilterRow, open: boolean): void {\n this.categorySearch.set('');\n if (!open) {\n this.closePanel();\n return;\n }\n this.triggerOpen.set(false);\n this.open(row.key, 'category');\n }\n\n protected onConditionOpenChange(row: MonkeyFilterRow, open: boolean): void {\n if (!open) {\n this.closePanel();\n return;\n }\n this.triggerOpen.set(false);\n this.open(row.key, 'condition');\n }\n\n protected onValueOpenChange(row: MonkeyFilterRow, open: boolean): void {\n if (!open) {\n this.closePanel();\n return;\n }\n this.triggerOpen.set(false);\n this.seedDraft(row);\n this.open(row.key, 'value');\n }\n\n protected onQuickDate(row: MonkeyFilterRow, key: string): void {\n if (row.type !== 'date') return;\n\n if (key === 'CUSTOM') {\n this.dateRange = { startDate: '', endDate: '' };\n this.calendarOpen.set(row.key);\n return;\n }\n\n const shortcut = DATE_SHORTCUTS.find((item) => item.key === key);\n if (!shortcut) return;\n\n const { start, end } = shortcut.resolve(new Date());\n\n this.dateRange = {\n startDate: format(start, OPERAND_DATE_FORMAT),\n endDate: format(end, OPERAND_DATE_FORMAT)\n };\n this.onApply(row);\n }\n\n protected onDateChange(\n row: MonkeyFilterRow,\n event: { startDate: string; endDate: string }\n ): void {\n this.dateRange = event;\n if (event.startDate && event.endDate) {\n setTimeout(() => this.onApply(row), 100);\n }\n }\n\n protected onBackToShortcuts(): void {\n this.calendarOpen.set(null);\n }\n\n protected onToggleStatus(value: string): void {\n this.statusValues = this.statusValues.includes(value)\n ? this.statusValues.filter((item) => item !== value)\n : [...this.statusValues, value];\n }\n\n protected onApply(row: MonkeyFilterRow): void {\n const operands = this.readDraft(row);\n if (!operands) return;\n\n this.withFlip(() => {\n this.rows.update((rows) => {\n return rows.map((item) => (item.key === row.key ? { ...item, operands } : item));\n });\n this.openPanel.set(null);\n this.calendarOpen.set(null);\n this.resetDraft();\n });\n\n this.commit();\n }\n\n protected onRemove(row: MonkeyFilterRow): void {\n this.withFlip(\n () => {\n this.rows.update((rows) => rows.filter((item) => item.key !== row.key));\n if (this.openPanel()?.key === row.key) this.openPanel.set(null);\n if (this.calendarOpen() === row.key) this.calendarOpen.set(null);\n this.resetDraft();\n },\n { leaving: [row.key], follow: false }\n );\n\n this.commit();\n }\n\n protected onClearAll(): void {\n const leaving = this.rows().map((row) => row.key);\n\n this.withFlip(\n () => {\n this.rows.set([]);\n this.openPanel.set(null);\n this.calendarOpen.set(null);\n this.resetDraft();\n },\n { leaving, follow: false }\n );\n\n this.commit();\n }\n}\n","<div class=\"mecx-filter-bar-line\">\n <div\n #rowEl\n class=\"mecx-filter-bar-row\"\n (animationend)=\"onSlotSettled($event)\"\n (transitionend)=\"onSlotSettled($event)\"\n >\n @for (f of rows(); track f.key) {\n <span\n class=\"mecx-filter-bar-slot\"\n [attr.data-flip-id]=\"f.key\"\n [animate.enter]=\"appPainted() ? 'mecx-filter-bar-slot--entering' : ''\"\n animate.leave=\"mecx-filter-bar-slot--leaving\"\n >\n <monkey-filter-chip\n [removeLabel]=\"labels().remove\"\n [disabled]=\"disabled()\"\n (onRemove)=\"onRemove(f)\"\n >\n <monkey-filter-segment\n [icon]=\"f.icon ?? null\"\n [text]=\"f.label\"\n [disabled]=\"disabled()\"\n [open]=\"isOpen(f.key, 'category')\"\n (onOpenChange)=\"onCategoryOpenChange(f, $event)\"\n >\n @if (isOpen(f.key, 'category')) {\n <monkey-filter-menu\n class=\"mecx-filter-bar-menu-categories\"\n [showSearch]=\"true\"\n [searchPlaceholder]=\"labels().search\"\n (onSearchChange)=\"categorySearch.set($event)\"\n >\n @for (opt of changeOptions(); track opt.key; let i = $index) {\n @if (needsDivider(changeOptions(), i)) {\n <monkey-divider />\n }\n <monkey-filter-menu-item\n [leadIcon]=\"opt.icon ?? null\"\n [label]=\"opt.label\"\n [selected]=\"opt.key === f.key\"\n [disabled]=\"opt.key !== f.key && isFilterActive(opt.key)\"\n (onItemClick)=\"onChangeCategory(f, i)\"\n />\n }\n </monkey-filter-menu>\n }\n </monkey-filter-segment>\n <monkey-filter-segment\n [placeholder]=\"labels().selectCondition\"\n [text]=\"operatorLabel(f.condition)\"\n [disabled]=\"disabled()\"\n [open]=\"isOpen(f.key, 'condition')\"\n (onOpenChange)=\"onConditionOpenChange(f, $event)\"\n >\n @if (isOpen(f.key, 'condition')) {\n <monkey-filter-menu class=\"mecx-filter-bar-menu-conditions\" [showSearch]=\"false\">\n @for (c of conditionsFor(f); track c) {\n <monkey-filter-menu-item\n [label]=\"operatorLabel(c)\"\n [selected]=\"c === f.condition\"\n (onItemClick)=\"onSelectCondition(f, c)\"\n />\n }\n </monkey-filter-menu>\n }\n </monkey-filter-segment>\n @if (hasValueSegment(f)) {\n <monkey-filter-segment\n [placeholder]=\"valuePlaceholder(f)\"\n [text]=\"displayOf(f)\"\n [disabled]=\"disabled()\"\n [open]=\"isOpen(f.key, 'value')\"\n (onOpenChange)=\"onValueOpenChange(f, $event)\"\n >\n @if (isOpen(f.key, 'value')) {\n @switch (panelFor(f)) {\n @case ('status') {\n <monkey-filter-menu class=\"mecx-filter-bar-menu-status\" [showSearch]=\"false\">\n @for (s of statusOptionsOf(f); track s.value) {\n <monkey-filter-menu-item\n property=\"checkbox\"\n [label]=\"s.description\"\n [checked]=\"statusValues.includes(s.value)\"\n (onItemClick)=\"onToggleStatus(s.value)\"\n />\n }\n <div class=\"mecx-filter-bar-panel-actions\">\n <monkey-button type=\"secondary\" size=\"sm\" (click)=\"onApply(f)\">\n {{ labels().confirm }}\n </monkey-button>\n </div>\n </monkey-filter-menu>\n }\n\n @case ('date-day') {\n <monkey-filter-menu class=\"mecx-filter-bar-menu-field\" [showSearch]=\"false\">\n <div class=\"mecx-filter-bar-field\">\n <label class=\"mecx-filter-bar-field-row\">\n <span class=\"mecx-filter-bar-field-label\">{{ f.label }}</span>\n <monkey-form-field size=\"sm\" noFooterSpace>\n <input\n type=\"date\"\n monkey-input\n [(ngModel)]=\"dayValue\"\n (keyup.enter)=\"onApply(f)\"\n />\n </monkey-form-field>\n </label>\n <monkey-button type=\"secondary\" size=\"sm\" (click)=\"onApply(f)\">\n {{ labels().confirm }}\n </monkey-button>\n </div>\n </monkey-filter-menu>\n }\n\n @case ('date-range') {\n @if (calendarOpen() === f.key) {\n <monkey-date-range\n class=\"mecx-filter-bar-calendar\"\n [startDate]=\"dateRange.startDate\"\n [endDate]=\"dateRange.endDate\"\n [minDate]=\"minDateOf(f)\"\n [maxDate]=\"maxDateOf(f)\"\n (onDate)=\"onDateChange(f, $event)\"\n (onCancel)=\"onBackToShortcuts()\"\n ></monkey-date-range>\n } @else {\n <monkey-filter-menu [showSearch]=\"false\">\n @for (shortcut of dateShortcuts(); track shortcut.key) {\n <monkey-filter-menu-item\n [label]=\"shortcut.label\"\n (onItemClick)=\"onQuickDate(f, shortcut.key)\"\n />\n }\n </monkey-filter-menu>\n }\n }\n\n @default {\n <monkey-filter-menu class=\"mecx-filter-bar-menu-field\" [showSearch]=\"false\">\n <div class=\"mecx-filter-bar-field\">\n @if (f.type === 'currency') {\n <label class=\"mecx-filter-bar-field-row\">\n <span class=\"mecx-filter-bar-field-label\">\n {{ isRange(f) ? labels().rangeFrom : f.label }}\n </span>\n <monkey-form-field size=\"sm\" noFooterSpace>\n <input\n type=\"text\"\n monkey-input-currency\n [(ngModel)]=\"currencyValue\"\n (keyup.enter)=\"onApply(f)\"\n />\n </monkey-form-field>\n </label>\n @if (isRange(f)) {\n <label class=\"mecx-filter-bar-field-row\">\n <span class=\"mecx-filter-bar-field-label\">{{\n labels().rangeTo\n }}</span>\n <monkey-form-field size=\"sm\" noFooterSpace>\n <input\n type=\"text\"\n monkey-input-currency\n [(ngModel)]=\"currencyValue2\"\n (keyup.enter)=\"onApply(f)\"\n />\n </monkey-form-field>\n </label>\n }\n } @else {\n <label class=\"mecx-filter-bar-field-row\">\n <span class=\"mecx-filter-bar-field-label\">\n {{ isRange(f) ? labels().rangeFrom : f.label }}\n </span>\n <monkey-form-field size=\"sm\" noFooterSpace>\n <input\n type=\"text\"\n monkey-input\n [placeholder]=\"valuePlaceholder(f)\"\n [(ngModel)]=\"textValue\"\n (keyup.enter)=\"onApply(f)\"\n />\n </monkey-form-field>\n </label>\n @if (isRange(f)) {\n <label class=\"mecx-filter-bar-field-row\">\n <span class=\"mecx-filter-bar-field-label\">{{\n labels().rangeTo\n }}</span>\n <monkey-form-field size=\"sm\" noFooterSpace>\n <input\n type=\"text\"\n monkey-input\n [(ngModel)]=\"textValue2\"\n (keyup.enter)=\"onApply(f)\"\n />\n </monkey-form-field>\n </label>\n }\n }\n\n <monkey-button type=\"secondary\" size=\"sm\" (click)=\"onApply(f)\">\n {{ labels().confirm }}\n </monkey-button>\n </div>\n </monkey-filter-menu>\n }\n }\n }\n </monkey-filter-segment>\n }\n </monkey-filter-chip>\n </span>\n }\n\n @if (canAddFilter()) {\n <span\n class=\"mecx-filter-bar-slot mecx-filter-bar-slot--trigger\"\n [attr.data-flip-id]=\"triggerFlipId()\"\n >\n <monkey-filter-trigger\n [variant]=\"triggerVariant()\"\n [icon]=\"triggerIcon()\"\n [text]=\"labels().add\"\n [ariaLabel]=\"labels().addAria\"\n [disabled]=\"disabled()\"\n [immediateExit]=\"immediateTriggerExit()\"\n [open]=\"triggerOpen()\"\n (onOpenChange)=\"onTriggerOpenChange($event)\"\n >\n @if (triggerOpen()) {\n <monkey-filter-menu\n class=\"mecx-filter-bar-menu-categories\"\n [showSearch]=\"true\"\n [searchPlaceholder]=\"labels().search\"\n (onSearchChange)=\"categorySearch.set($event)\"\n >\n @for (opt of addOptions(); track opt.key; let i = $index) {\n @if (needsDivider(addOptions(), i)) {\n <monkey-divider />\n }\n <monkey-filter-menu-item\n [leadIcon]=\"opt.icon ?? null\"\n [label]=\"opt.label\"\n (onItemClick)=\"onSelectCategory(i)\"\n />\n }\n </monkey-filter-menu>\n }\n </monkey-filter-trigger>\n </span>\n }\n </div>\n @if (scrollVisible()) {\n <monkey-scrollbar\n class=\"mecx-filter-bar-bar\"\n orientation=\"horizontal\"\n [target]=\"rowEl\"\n [animate.enter]=\"appPainted() ? 'mecx-filter-bar-bar--entering' : ''\"\n animate.leave=\"mecx-filter-bar-bar--leaving\"\n />\n }\n\n <div class=\"mecx-filter-bar-tail\">\n @if (rows().length > 0) {\n <div class=\"mecx-filter-bar-actions\">\n <monkey-button type=\"tertiary\" size=\"sm\" [disabled]=\"disabled()\" (click)=\"onClearAll()\">\n {{ labels().clear }}\n </monkey-button>\n </div>\n }\n\n <div class=\"mecx-filter-bar-extra\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nexport * from './filter-bar-domain';\nexport * from './filter-bar.component';\nexport * from './filter-chip.component';\nexport * from './filter-menu.component';\nexport * from './filter-menu-item.component';\nexport * from './filter-segment.component';\nexport * from './filter-trigger.component';\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n Input,\r\n InputSignal,\r\n Optional,\r\n QueryList,\r\n ViewChildren,\r\n booleanAttribute,\r\n computed,\r\n inject,\r\n input\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, FormsModule, NgControl } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyFormFieldComponent, MonkeyFormFieldControl } from '../form-field';\r\n\r\ntype KeyboardKeys = 'Backspace' | 'Delete' | 'ArrowLeft' | 'ArrowUp' | 'ArrowRight' | 'ArrowDown';\r\n\r\ninterface AllowedKeyboardKeys {\r\n Backspace: () => void;\r\n Delete: () => void;\r\n ArrowLeft: () => void;\r\n ArrowUp: () => void;\r\n ArrowRight: () => void;\r\n ArrowDown: () => void;\r\n}\r\n\r\n@Component({\r\n selector: 'monkey-input-code',\r\n styleUrl: './input-code.component.scss',\r\n templateUrl: './input-code.component.html',\r\n imports: [FormsModule],\r\n host: {\r\n 'data-testid': 'monkey-input-code',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n },\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyInputCodeComponent }\r\n ]\r\n})\r\nexport class MonkeyInputCodeComponent\r\n implements ControlValueAccessor, MonkeyFormFieldControl, AfterViewInit\r\n{\r\n readonly stateChanges = new Subject<void>();\r\n\r\n readonly type: string = 'input-code';\r\n\r\n readonly currency: boolean = false;\r\n\r\n readonly percent: boolean = false;\r\n\r\n readonly id: any = inject(IdGenerator).getId('monkey-input-code-');\r\n\r\n private _onChange: any = () => {};\r\n\r\n private _onTouched: any = () => {};\r\n\r\n private _value = null;\r\n\r\n public ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n public focused: boolean = false;\r\n\r\n public length: InputSignal<number> = input<number>(6);\r\n\r\n public inputType: InputSignal<string> = input<string>('numeric');\r\n\r\n public inputIndices = computed(() => {\r\n return Array.from({ length: this.length() }, (_, i) => {\r\n return '';\r\n });\r\n });\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _disabled: boolean = false;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n this._onChange(value);\r\n this._onTouched();\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n @ViewChildren('codeInput') inputs!: QueryList<ElementRef<HTMLInputElement>>;\r\n\r\n constructor(@Optional() private formField: MonkeyFormFieldComponent) {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n\r\n if (this.formField) {\r\n this.formField.hideAction = true;\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.formField) {\r\n const input = this.formField.elementRef.nativeElement.querySelector(\r\n '.mecx-form-field-body'\r\n ) as HTMLElement;\r\n\r\n const height = input.offsetHeight > 40 ? input.offsetHeight : 40;\r\n\r\n this.inputs.forEach((inputEl) => {\r\n inputEl.nativeElement.style.height = `${height}px`;\r\n inputEl.nativeElement.style.width = `${height}px`;\r\n });\r\n }\r\n }\r\n\r\n private _onFocus(): void {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n private propagateCode(): void {\r\n const code = this.inputIndices().join('');\r\n\r\n this.writeValue(code);\r\n }\r\n\r\n private focusNextInput(input: HTMLInputElement): void {\r\n const next: HTMLInputElement = input.nextElementSibling as HTMLInputElement;\r\n\r\n next?.focus();\r\n }\r\n\r\n private focusPreviousInput(input: HTMLInputElement): void {\r\n const previous: HTMLInputElement = input.previousElementSibling as HTMLInputElement;\r\n\r\n previous?.focus();\r\n }\r\n\r\n private setFullInputValue(value: string): void {\r\n const chars: string[] = value?.slice(0, this.length()).split('') || '';\r\n\r\n chars.forEach((digit: string, index: number) => {\r\n this.inputIndices()[index] = digit;\r\n });\r\n }\r\n\r\n public isInvalid(): boolean {\r\n return this.formField.showInvalid;\r\n }\r\n\r\n public onContainerClick(): void {\r\n if (!this._value) {\r\n this.inputs.first.nativeElement.focus();\r\n }\r\n }\r\n\r\n public onKeyDown(event: KeyboardEvent, index: number): void {\r\n const input = event.target as HTMLInputElement;\r\n this.inputIndices()[index] = input.value;\r\n\r\n const { key } = event;\r\n const keys: AllowedKeyboardKeys = {\r\n Backspace: (): void => {\r\n if (input.value === '') {\r\n this.focusPreviousInput(input);\r\n }\r\n },\r\n Delete: (): void => {\r\n if (input.value === '') {\r\n this.focusNextInput(input);\r\n }\r\n },\r\n ArrowLeft: (): void => {\r\n if (index > 0) {\r\n this.focusPreviousInput(input);\r\n\r\n event.preventDefault();\r\n }\r\n },\r\n ArrowUp: (): void => {\r\n if (index > 0) {\r\n this.focusPreviousInput(input);\r\n\r\n event.preventDefault();\r\n }\r\n },\r\n ArrowRight: (): void => {\r\n if (index < this.length()) {\r\n this.focusNextInput(input);\r\n\r\n event.preventDefault();\r\n }\r\n },\r\n ArrowDown: (): void => {\r\n if (index < this.length()) {\r\n this.focusNextInput(input);\r\n\r\n event.preventDefault();\r\n }\r\n }\r\n };\r\n\r\n if (keys[key as KeyboardKeys]) {\r\n keys[key as KeyboardKeys]();\r\n }\r\n }\r\n\r\n public onInput(event: Event, index: number): void {\r\n const input = event.target as HTMLInputElement;\r\n const { value } = input;\r\n\r\n if (value.length > 1) {\r\n this.setFullInputValue(value);\r\n\r\n input.value = value.charAt(0);\r\n } else {\r\n input.value = value;\r\n }\r\n\r\n this.inputIndices()[index] = input.value;\r\n\r\n if (input.value && index < this.length()) {\r\n this.focusNextInput(input);\r\n }\r\n\r\n this.propagateCode();\r\n }\r\n\r\n public onPaste(event: ClipboardEvent): void {\r\n event.preventDefault();\r\n\r\n const pastedData: string = event.clipboardData?.getData('text').trim() ?? '';\r\n const chars: string[] = pastedData.slice(0, this.length()).split('');\r\n\r\n chars.forEach((digit, index) => {\r\n this.inputIndices()[index] = digit;\r\n });\r\n\r\n if (this.inputs.length > chars.length) {\r\n this.inputs.get(chars.length)?.nativeElement.focus();\r\n }\r\n\r\n if (this.inputs.length <= chars.length) {\r\n this.onBlur();\r\n }\r\n\r\n this.propagateCode();\r\n }\r\n\r\n public onBlur(): void {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n\r\n public onFocus(event: FocusEvent): void {\r\n const input = event.target as HTMLInputElement;\r\n\r\n input.select();\r\n this._onFocus();\r\n }\r\n\r\n public writeValue(value: string): void {\r\n this.value = value;\r\n }\r\n\r\n public registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n public registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n public setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n}\r\n","<div class=\"monkey-input-code\">\r\n @for (idx of inputIndices(); track $index; let i = $index) {\r\n <input\r\n #codeInput\r\n class=\"focus\"\r\n autocomplete=\"one-time-code\"\r\n [attr.type]=\"inputType()\"\r\n [disabled]=\"_disabled\"\r\n [attr.maxlength]=\"1\"\r\n [class.invalid]=\"isInvalid()\"\r\n [(ngModel)]=\"inputIndices()[i]\"\r\n (focus)=\"onFocus($event)\"\r\n (input)=\"onInput($event, i)\"\r\n (keydown)=\"onKeyDown($event, i)\"\r\n (paste)=\"onPaste($event)\"\r\n (blur)=\"onBlur()\"\r\n />\r\n }\r\n</div>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './input-code.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n Component,\r\n ElementRef,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Optional,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n ReactiveFormsModule,\r\n Validators\r\n} from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyPopoverDirective } from '../../directives/popover';\r\nimport { MonkeyDateRangeComponent } from '../date-range/date-range.component';\r\nimport {\r\n MonkeyFormFieldComponent,\r\n MonkeyFormFieldControl,\r\n MonkeyFormFieldModule\r\n} from '../form-field';\r\n\r\n@Component({\r\n selector: 'monkey-input-date-range',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MonkeyFormFieldModule,\r\n MonkeyPopoverDirective,\r\n MonkeyDateRangeComponent\r\n ],\r\n template: `\r\n <span #popoverTarget (click)=\"onOpenPopover()\">\r\n @if (startDate) {\r\n {{ startDate | date }} - {{ endDate | date }}\r\n } @else {\r\n {{ placeholder }}\r\n }\r\n </span>\r\n\r\n <ng-template\r\n [monkeyPopover]=\"showPopOver\"\r\n [monkeyPopoverTarget]=\"elementTarget\"\r\n [monkeyPopoverClosed]=\"closePopOver\"\r\n monkeyPopoverDir=\"ltr\"\r\n [monkeyPopoverTitle]=\"title\"\r\n >\r\n <monkey-date-range\r\n hideHeader\r\n hideActions\r\n [startDate]=\"startDate\"\r\n [endDate]=\"endDate\"\r\n (onDate)=\"onHandleDate($event)\"\r\n [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\"\r\n >\r\n </monkey-date-range>\r\n </ng-template>\r\n `,\r\n styleUrl: './input-date-range.component.scss',\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyInputDateRangeComponent }\r\n ],\r\n host: {\r\n '[attr.data-testid]': \"'monkey-input-date-range'\",\r\n class: 'mecx-input-date-range',\r\n '[class.mecx-input-date-range-disabled]': '_disabled',\r\n '[class.mecx-input-date-range-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur()'\r\n }\r\n})\r\nexport class MonkeyInputDateRangeComponent\r\n implements MonkeyFormFieldControl, ControlValueAccessor, AfterContentInit, OnDestroy, OnChanges\r\n{\r\n @Input({ required: true }) placeholder!: string;\r\n\r\n @Input({ required: true }) title!: string;\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Input() minDate: Date | string = '';\r\n\r\n @Input() maxDate: Date | string = '';\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _disabled: boolean = false;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n this.handleValue(value);\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value: string | null = null;\r\n\r\n constructor(@Optional() public formField: MonkeyFormFieldComponent) {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-input-date-range-');\r\n\r\n focused: boolean = false;\r\n\r\n readonly type: string = 'input-date-range';\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n showPopOver = false;\r\n\r\n startDate = '';\r\n\r\n endDate = '';\r\n\r\n handledMinDate: string = '';\r\n\r\n handledMaxDate: string = '';\r\n\r\n get elementTarget() {\r\n if (this.formField?.elementRef) {\r\n return this.formField?.elementRef.nativeElement.querySelector('.mecx-form-field-body');\r\n }\r\n\r\n return this._elementRef.nativeElement;\r\n }\r\n\r\n closePopOver = () => {\r\n this.showPopOver = false;\r\n this.validateValue();\r\n };\r\n\r\n ngAfterContentInit(): void {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {}\r\n\r\n ngOnDestroy(): void {}\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n event.preventDefault();\r\n this.onOpenPopover();\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _onBlur() {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n private handleValue(value: any) {\r\n try {\r\n const { startDate, endDate } = value || {\r\n startDate: '',\r\n endDate: ''\r\n };\r\n this.startDate = startDate;\r\n this.endDate = endDate;\r\n } catch (e) {\r\n // not to do\r\n }\r\n }\r\n\r\n private validateValue() {\r\n const { startDate, endDate } = this.value;\r\n if (!startDate || !endDate) {\r\n this.ngControl?.control?.setErrors({\r\n dateRange: true\r\n });\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n this.handleValue(value);\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n }\r\n\r\n onOpenPopover() {\r\n if (!this.disabled) {\r\n this.showPopOver = true;\r\n }\r\n }\r\n\r\n onHandleDate(event: any) {\r\n try {\r\n this.value = null;\r\n const { startDate, endDate } = event;\r\n this.value = event;\r\n if (startDate && endDate) {\r\n this.closePopOver();\r\n }\r\n } catch (e) {\r\n // not to do\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './input-date-range.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n Output,\r\n QueryList,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChild,\r\n ViewContainerRef,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n ReactiveFormsModule,\r\n Validators\r\n} from '@angular/forms';\r\nimport { debounceTime, Subject } from 'rxjs';\r\nimport { normalizeStringToSearch, sanitizeString, UtilIconComponent } from '../../../utils';\r\nimport { IdGenerator } from '../../../utils/id-generator';\r\nimport { MonkeyDictionaryService } from '../../services/dictionary.service';\r\nimport { MonkeyFormFieldControl } from '../form-field/form-field-control';\r\nimport { MonkeyFormFieldComponent } from '../form-field/form-field.component';\r\nimport { MonkeyOptionComponent } from '../option/option.component';\r\n\r\n@Component({\r\n selector: 'monkey-select',\r\n imports: [CommonModule, ReactiveFormsModule, FormsModule, UtilIconComponent],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: 'select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeySelectComponent }\r\n ],\r\n animations: [\r\n trigger('animation', [\r\n transition(':enter', [\r\n style({\r\n opacity: 0,\r\n transform: 'scaleY(.9)'\r\n }),\r\n animate(\r\n '100ms ease-in-out',\r\n style({\r\n opacity: 1,\r\n transform: 'scaleY(1)'\r\n })\r\n )\r\n ]),\r\n state(\r\n 'closed',\r\n style({\r\n transform: 'scaleY(.9)',\r\n opacity: 0\r\n })\r\n ),\r\n transition('closed <=> open', animate('200ms ease-in-out'))\r\n ])\r\n ],\r\n host: {\r\n 'data-testid': 'monkey-select',\r\n class: 'mecx-select',\r\n '[class.mecx-select-disabled]': '_disabled',\r\n '[class.mecx-select-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur()'\r\n }\r\n})\r\nexport class MonkeySelectComponent\r\n implements\r\n MonkeyFormFieldControl,\r\n ControlValueAccessor,\r\n AfterContentInit,\r\n OnInit,\r\n OnDestroy,\r\n OnChanges\r\n{\r\n @ViewChild('overlayTemplate') overlayTemplate!: TemplateRef<any>;\r\n\r\n @ViewChild('overlay') overlayEl!: ElementRef;\r\n\r\n @ViewChild('trigger') trigger!: ElementRef;\r\n\r\n @ContentChildren(MonkeyOptionComponent) options!: QueryList<MonkeyOptionComponent>;\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Output() onChange = new EventEmitter();\r\n\r\n @Input({ required: true }) placeholder = '';\r\n\r\n @Input({ transform: booleanAttribute })\r\n loading = false;\r\n\r\n @Input({ transform: booleanAttribute })\r\n showSearch = true;\r\n\r\n @Input()\r\n searchPlaceholder = '';\r\n\r\n @Input()\r\n type = 'select';\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value) {\r\n this._value = value;\r\n this._onChange(value);\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value = null;\r\n\r\n labelSelected = '';\r\n\r\n private overlayRef: OverlayRef | null = null;\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n readonly currency: boolean = false;\r\n\r\n focused: boolean = false;\r\n\r\n _disabled: boolean = false;\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-select-');\r\n\r\n readonly percent: boolean = false;\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n readonly searchHandle = new EventEmitter<string>();\r\n\r\n readonly searchDictionary = inject(MonkeyDictionaryService).get('NO-DATA');\r\n\r\n readonly loadingDictionary = inject(MonkeyDictionaryService).get('LOADING');\r\n\r\n showSearchNoData = false;\r\n\r\n isOpen = false;\r\n\r\n searchData = '';\r\n\r\n constructor(\r\n private overlay: Overlay,\r\n private changeDetectorRef: ChangeDetectorRef,\r\n private viewContainerRef: ViewContainerRef,\r\n @Optional() private formField: MonkeyFormFieldComponent\r\n ) {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n private changeControl() {\r\n if (this.formField?.control) {\r\n this.formField.control.loading = this.loading;\r\n }\r\n }\r\n\r\n private changeSelected(): void {\r\n setTimeout(() => {\r\n if (!this.options) return;\r\n\r\n if (this.type === 'checkbox') {\r\n const selectedValues = this.getComparationValue();\r\n this.options.forEach((opt) => {\r\n if (!opt.disabled) {\r\n opt.selected = selectedValues.includes(String(opt.value()));\r\n }\r\n });\r\n } else {\r\n this.options.forEach((opt) => {\r\n opt.onSelect(String(opt.value()) === this.value);\r\n });\r\n }\r\n\r\n this.changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n private initializeOptions() {\r\n setTimeout(() => {\r\n this.options.forEach((option) => {\r\n option.type = this.type;\r\n if (!option.action) {\r\n option.action = this.selectOption.bind(this, option);\r\n }\r\n });\r\n this.changeDetectorRef.detectChanges();\r\n });\r\n }\r\n\r\n private openDropdown(): void {\r\n if (this.options?.length) {\r\n this.formField.control.disableToBeDirty = true;\r\n this.isOpen = true;\r\n this.createOverlay();\r\n }\r\n }\r\n\r\n private closeDropdown() {\r\n this.isOpen = false;\r\n this.focused = false;\r\n this.formField.control.disableToBeDirty = false;\r\n this.searchData = '';\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n private closeOverlay(): void {\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n this.overlayRef = null;\r\n }\r\n }\r\n\r\n private initializeWithOverlay() {\r\n if (this.showSearch) {\r\n const element = this.overlayRef?.overlayElement.querySelector(\r\n `#${this.id}-search`\r\n ) as HTMLElement;\r\n\r\n this.options.forEach((opt) => {\r\n const element = this.overlayRef?.overlayElement.querySelector(\r\n `#${opt.id}`\r\n ) as HTMLElement | null;\r\n if (!element) return;\r\n element.style.display = '';\r\n });\r\n\r\n setTimeout(() => {\r\n element?.focus();\r\n }, 0);\r\n this.showSearchNoData = false;\r\n }\r\n\r\n setTimeout(() => {\r\n const selected = this.options.find((opt) => {\r\n return opt.selected();\r\n });\r\n\r\n if (selected) {\r\n const element = this.overlayRef?.overlayElement.querySelector(\r\n `#${selected.id}`\r\n ) as HTMLElement;\r\n element?.scrollIntoView({ behavior: 'instant', block: 'center' });\r\n }\r\n }, 0);\r\n }\r\n\r\n private createOverlay(): void {\r\n if (this.overlayRef) {\r\n return;\r\n }\r\n\r\n const offset = 4;\r\n const positions: ConnectedPosition[] = [\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetY: offset\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetY: -offset\r\n }\r\n ];\r\n\r\n let anchor = this.trigger;\r\n let width = anchor.nativeElement.offsetWidth;\r\n\r\n if (this.formField?.elementRef) {\r\n const el = this.formField?.elementRef.nativeElement.querySelector('.mecx-form-field-body');\r\n anchor = el;\r\n width = el.offsetWidth;\r\n }\r\n\r\n const positionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(anchor)\r\n .withPositions(positions)\r\n .withPush(true);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n scrollStrategy: this.overlay.scrollStrategies.block(),\r\n width,\r\n hasBackdrop: true,\r\n backdropClass: 'no-class'\r\n });\r\n\r\n const portal = new TemplatePortal(this.overlayTemplate, this.viewContainerRef);\r\n\r\n this.overlayRef.attach(portal);\r\n\r\n this.overlayRef\r\n .backdropClick()\r\n .pipe(takeUntilDestroyed(this._destroyRef))\r\n .subscribe(() => {\r\n return this.closeDropdown();\r\n });\r\n\r\n this.initializeWithOverlay();\r\n }\r\n\r\n private updateSelectedLabel(): void {\r\n if (!this.options) return;\r\n\r\n if (this.type === 'checkbox') {\r\n const selectedValues = this.getComparationValue();\r\n\r\n const selectedOptions = this.options.filter((opt) => {\r\n return selectedValues.includes(String(opt.value()));\r\n });\r\n\r\n const maxToShow = 3;\r\n const displayContents = selectedOptions.slice(0, maxToShow).map((opt) => {\r\n return opt.displayContent;\r\n });\r\n\r\n const hasMore = selectedOptions.length > maxToShow;\r\n\r\n this.labelSelected = hasMore\r\n ? `${displayContents.join(', ')}...`\r\n : displayContents.join(', ');\r\n } else {\r\n const selectedOption = this.options.find((opt) => {\r\n return String(opt.value()) === this.value;\r\n });\r\n this.labelSelected = selectedOption ? selectedOption.displayContent : '';\r\n }\r\n\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n\r\n private executeSearch(search: string): void {\r\n let found = false;\r\n this.options.forEach((opt) => {\r\n const element = this.overlayRef?.overlayElement.querySelector(\r\n `#${opt.id}`\r\n ) as HTMLElement | null;\r\n\r\n if (!element) return;\r\n\r\n const isMatch = normalizeStringToSearch(opt.displayContent).includes(\r\n normalizeStringToSearch(search)\r\n );\r\n if (isMatch) {\r\n found = true;\r\n }\r\n element.style.display = isMatch ? '' : 'none';\r\n });\r\n\r\n this.repositionScroll();\r\n this.showSearchNoData = !found;\r\n }\r\n\r\n private repositionScroll() {\r\n const overlayElement = this.overlayRef?.overlayElement.querySelector(\r\n '.mecx-select-overlay'\r\n ) as HTMLElement;\r\n\r\n if (overlayElement) {\r\n overlayElement.scrollTop = 0;\r\n }\r\n }\r\n\r\n private getComparationValue() {\r\n return (this.value || '')\r\n .split(',')\r\n .map((v: string) => {\r\n return v.trim();\r\n })\r\n .filter(Boolean);\r\n }\r\n\r\n ngOnInit() {\r\n this.searchHandle\r\n .pipe(debounceTime(200), takeUntilDestroyed(this._destroyRef))\r\n .subscribe((search: string) => {\r\n this.executeSearch(search);\r\n });\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.initializeOptions();\r\n this.updateSelectedLabel();\r\n\r\n this.options.changes.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((resp) => {\r\n this.updateSelectedLabel();\r\n this.initializeOptions();\r\n this.changeSelected();\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n }\r\n }\r\n\r\n toggleDropdown(): void {\r\n if (!this.disabled) {\r\n if (this.isOpen) {\r\n this.closeDropdown();\r\n this._onTouched();\r\n } else {\r\n this.openDropdown();\r\n }\r\n }\r\n }\r\n\r\n onAnimationEnd = (event: any) => {\r\n if (event.toState === 'closed') {\r\n this.closeOverlay();\r\n }\r\n };\r\n\r\n selectOption(option: MonkeyOptionComponent): void {\r\n if (option.disabled || this.disabled) return;\r\n\r\n if (this.type === 'checkbox') {\r\n const values = this.getComparationValue();\r\n const index = values.indexOf(`${option.value()}`);\r\n\r\n if (index === -1) {\r\n values.push(`${option.value()}`);\r\n option.onSelect(true);\r\n } else {\r\n values.splice(index, 1);\r\n option.onSelect(false);\r\n }\r\n\r\n this.value = values.join(',');\r\n } else {\r\n this.value = `${option.value()}`;\r\n\r\n this.options.forEach((opt) => {\r\n opt.onSelect(`${opt.value()}` === `${this.value}`);\r\n });\r\n\r\n this.closeDropdown();\r\n this._onChange(this.value);\r\n this.onChange.emit(this.value);\r\n }\r\n\r\n this.updateSelectedLabel();\r\n }\r\n\r\n writeValue(value: any): void {\r\n // Normalized to a string because that's what the value is compared\r\n // against: `updateSelectedLabel` matches `String(opt.value()) ===\r\n // this.value`, and `selectOption` already stores `${option.value()}`.\r\n // Writing the raw value left a NUMBER here, so `'10' === 10` was false,\r\n // no option matched, the label came out empty and the placeholder showed\r\n // instead — a numeric value bound through ngModel/formControl never\r\n // displayed, while picking the same option by hand worked.\r\n // null/undefined are preserved, so \"no selection\" doesn't become \"null\".\r\n this.value = value === null || value === undefined ? value : String(value);\r\n this.changeSelected();\r\n this.updateSelectedLabel();\r\n }\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n if (this.disabled) return;\r\n\r\n this.openDropdown();\r\n this._elementRef.nativeElement.focus();\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _onBlur() {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n let hasChanges = false;\r\n // eslint-disable-next-line dot-notation\r\n const changesLoading = changes?.['loading'];\r\n if (changesLoading?.currentValue !== changesLoading?.previousValue) {\r\n hasChanges = true;\r\n this.changeControl();\r\n }\r\n\r\n if (hasChanges) {\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n onHandleSearch(event: Event) {\r\n try {\r\n const { value } = event.target as HTMLInputElement;\r\n const handled = sanitizeString(value);\r\n this.searchHandle.next(handled || '');\r\n } catch (e) {\r\n // not to do\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"mecx-select-trigger\"\r\n [class.open]=\"isOpen\"\r\n (click)=\"toggleDropdown()\"\r\n role=\"combobox\"\r\n [attr.aria-expanded]=\"isOpen\"\r\n #trigger\r\n>\r\n <div class=\"mecx-select-value\" [class.has-value]=\"value\">\r\n <span>{{ labelSelected || placeholder }}</span>\r\n </div>\r\n\r\n @if (!loading) {\r\n <util-icon class=\"mecx-select-icon\" name=\"arrowDown\" />\r\n }\r\n</div>\r\n\r\n<ng-template #overlayTemplate>\r\n <div class=\"mecx-select-body-overlay\">\r\n @if (showSearch) {\r\n <div class=\"mecx-select-search\">\r\n <util-icon class=\"mecx-select-search-icon\" name=\"search\" />\r\n <input\r\n (input)=\"onHandleSearch($event)\"\r\n type=\"text\"\r\n [id]=\"id + '-search'\"\r\n autocomplete=\"off\"\r\n maxlength=\"50\"\r\n [placeholder]=\"searchPlaceholder\"\r\n [(ngModel)]=\"searchData\"\r\n />\r\n </div>\r\n }\r\n <div\r\n class=\"mecx-select-overlay\"\r\n #overlay\r\n [@animation]=\"isOpen ? 'open' : 'closed'\"\r\n (@animation.done)=\"onAnimationEnd($event)\"\r\n >\r\n <ng-content />\r\n </div>\r\n @if (showSearch && showSearchNoData) {\r\n <div class=\"mecx-select-search-no-data\">\r\n <util-icon class=\"mecx-select-search-no-data-icon\" name=\"searchFail\" />\r\n {{ searchDictionary | async }}\r\n </div>\r\n }\r\n @if (loading) {\r\n <div class=\"mecx-select-search-loading\">\r\n {{ loadingDictionary | async }}\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './select.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n Component,\r\n ElementRef,\r\n inject,\r\n Input,\r\n LOCALE_ID,\r\n OnChanges,\r\n OnDestroy,\r\n QueryList,\r\n SimpleChanges,\r\n ViewChildren\r\n} from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n ReactiveFormsModule,\r\n Validators\r\n} from '@angular/forms';\r\nimport parsePhoneNumberFromString, {\r\n AsYouType,\r\n CountryCode,\r\n getCountries,\r\n getCountryCallingCode,\r\n getExampleNumber\r\n} from 'libphonenumber-js';\r\nimport examples from 'libphonenumber-js/examples.mobile.json';\r\nimport { isValidPhoneNumber } from 'libphonenumber-js/max';\r\nimport { Subject } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { injectTokenWithWarning, MECX_COUNTRY_ISO_CODE } from '../../tokens';\r\nimport { MonkeyFormFieldControl, MonkeyFormFieldModule } from '../form-field';\r\nimport { MonkeyOptionComponent } from '../option';\r\nimport { MonkeySelectComponent } from '../select';\r\n\r\ninterface Country {\r\n iso: string;\r\n code: string;\r\n name: string;\r\n}\r\n\r\n@Component({\r\n selector: 'monkey-input-phone',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MonkeySelectComponent,\r\n MonkeyOptionComponent,\r\n MonkeyFormFieldModule\r\n ],\r\n template: `\r\n <monkey-select\r\n placeholder=\"\"\r\n [disabled]=\"disabled\"\r\n showSearch\r\n [(ngModel)]=\"selectedCallingCode\"\r\n class=\"mecx-phone-select-country\"\r\n (onChange)=\"onCountryChange()\"\r\n >\r\n @for (item of countries; track $index) {\r\n <monkey-option [value]=\"item.iso\">\r\n <div class=\"option-flag\">\r\n <img class=\"img-flag\" [src]=\"'https://flagcdn.com/w20/' + item.iso.toLowerCase() + '.png'\" loading=\"lazy\">\r\n </div>\r\n <div class=\"option-name\">{{ item.name }} {{ item.code }}</div>\r\n </monkey-option>\r\n }\r\n </monkey-select>\r\n <input\r\n #input\r\n type=\"tel\"\r\n class=\"mecx-input\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"placeholder\"\r\n (input)=\"onInputChange($event)\"\r\n [ngModel]=\"phoneFormatted\"\r\n [maxlength]=\"getMaxLength()\"\r\n (focus)=\"_onFocus()\"\r\n (blur)=\"_onBlur()\"\r\n [attr.id]=\"inputId\"\r\n />\r\n `,\r\n styleUrl: './input-phone.component.scss',\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyInputPhoneComponent }\r\n ],\r\n host: {\r\n '[attr.data-testid]': \"'monkey-input-phone'\",\r\n class: 'mecx-input-phone',\r\n '[class.mecx-input-phone-disabled]': '_disabled',\r\n '[class.mecx-input-phone-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur()'\r\n }\r\n})\r\nexport class MonkeyInputPhoneComponent\r\n implements MonkeyFormFieldControl, ControlValueAccessor, AfterContentInit, OnDestroy, OnChanges\r\n{\r\n @Input() placeholder: string = '';\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _disabled: boolean = false;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n this._value = value;\r\n this.formatValue(value);\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value: string | null = null;\r\n\r\n constructor() {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n private readonly countryIsoCode = injectTokenWithWarning(\r\n MECX_COUNTRY_ISO_CODE,\r\n 'MECX_COUNTRY_ISO_CODE'\r\n )!;\r\n\r\n private readonly locale = inject(LOCALE_ID);\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-input-phone-');\r\n\r\n readonly inputId: string = this.idGenerator.getId('monkey-input-phone-input-');\r\n\r\n focused: boolean = false;\r\n\r\n readonly type: string = 'input-phone';\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n countries: Country[] = getCountries()\r\n .map((code) => {\r\n return {\r\n iso: code,\r\n code: `+${getCountryCallingCode(code)}`,\r\n name: this.getCountryNameFromCode(code)\r\n };\r\n })\r\n .sort((a, b) => {\r\n return a.name.localeCompare(b.name);\r\n });\r\n\r\n selectedCallingCode = this.countryIsoCode.toString();\r\n\r\n phoneFormatted = '';\r\n\r\n phoneValid = false;\r\n\r\n @ViewChildren('input') inputs!: QueryList<ElementRef<HTMLInputElement>>;\r\n\r\n private getCountryNameFromCode(code: string) {\r\n try {\r\n const locale = this.locale.toString();\r\n const display = new Intl.DisplayNames([locale], { type: 'region' });\r\n return display.of(code.toUpperCase()) || code;\r\n } catch {\r\n return code;\r\n }\r\n }\r\n\r\n private getCountryByCallingCode(code: string): CountryCode | null {\r\n const cleanCode = code.replace('+', '');\r\n\r\n return (\r\n getCountries().find((country) => {\r\n return country === cleanCode;\r\n }) || null\r\n );\r\n }\r\n\r\n private getCountryFromPhoneNumber(input: string, changedCountry: boolean): string {\r\n try {\r\n if (changedCountry) {\r\n return this.selectedCallingCode;\r\n }\r\n\r\n const parsed = parsePhoneNumberFromString(input);\r\n return parsed!.country as string;\r\n } catch (e) {\r\n // not to do\r\n }\r\n\r\n return this.selectedCallingCode;\r\n }\r\n\r\n private performValue(value: string) {\r\n const countryCode = `+${getCountryCallingCode(this.selectedCallingCode as CountryCode)}`;\r\n\r\n this._value = `${countryCode}${value}`;\r\n this._onChange(this._value);\r\n this._onTouched(this._value);\r\n }\r\n\r\n private validateValue() {\r\n const { phoneValid } = this;\r\n if (!phoneValid) {\r\n const countryCode = this.selectedCallingCode as CountryCode;\r\n const example = getExampleNumber(countryCode!, examples);\r\n\r\n const formatter = new AsYouType(countryCode);\r\n const phoneAllowed = formatter.input(example!.nationalNumber);\r\n\r\n this.ngControl?.control?.setErrors({\r\n phone: true,\r\n phoneAllowed\r\n });\r\n }\r\n }\r\n\r\n private formatValue(value: string, changedCountry = false) {\r\n if (!value) {\r\n this.phoneFormatted = '';\r\n this.phoneValid = false;\r\n this.validateValue();\r\n return;\r\n }\r\n\r\n const detectedCallingCode = this.getCountryFromPhoneNumber(value, changedCountry);\r\n const isCountryChanged = changedCountry || detectedCallingCode !== this.selectedCallingCode;\r\n\r\n if (isCountryChanged && detectedCallingCode) {\r\n this.selectedCallingCode = detectedCallingCode;\r\n }\r\n\r\n const countryCode = `+${getCountryCallingCode(this.selectedCallingCode as CountryCode)}`;\r\n\r\n if (!countryCode) {\r\n this.phoneFormatted = value;\r\n this.phoneValid = false;\r\n this.validateValue();\r\n return;\r\n }\r\n\r\n let nationalPart = value.replace(this.selectedCallingCode, '').replace(/[^\\d+]/g, '');\r\n nationalPart = nationalPart.replace(countryCode, '');\r\n\r\n const formatter = new AsYouType(this.selectedCallingCode as CountryCode);\r\n this.phoneFormatted = formatter.input(nationalPart);\r\n\r\n this.performValue(nationalPart);\r\n\r\n this.phoneValid = isValidPhoneNumber(nationalPart, this.selectedCallingCode as CountryCode);\r\n this.validateValue();\r\n }\r\n\r\n disableToBeDirty?: boolean | undefined;\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n ngAfterContentInit(): void {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {}\r\n\r\n ngOnDestroy(): void {}\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n this.inputs.first.nativeElement.focus();\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _onBlur() {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n this.validateValue();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n onInputChange(event: Event) {\r\n const { value } = event.target as HTMLInputElement;\r\n this.formatValue(value);\r\n }\r\n\r\n onCountryChange() {\r\n this.formatValue(this._value!, true);\r\n this.validateValue();\r\n }\r\n\r\n getMaxLength(): number {\r\n try {\r\n const countryCode = this.getCountryByCallingCode(this.selectedCallingCode);\r\n\r\n if (!countryCode) return 20;\r\n\r\n const example = getExampleNumber(countryCode, examples);\r\n const formatted = new AsYouType(countryCode).input(example!.nationalNumber);\r\n\r\n return formatted.length;\r\n } catch {\r\n return 20;\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './input-phone.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NgControl, Validators } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { formatFileSize, getFileExtension, IdGenerator } from '../../../utils';\r\nimport { MonkeyFormFieldControl } from '../form-field';\r\n\r\n// eslint-disable-next-line no-use-before-define\r\nexport type MonkeyInputUploadChangeEvent = { component: MonkeyInputUploadComponent; file: File };\r\n\r\n@Component({\r\n selector: 'monkey-input-upload',\r\n imports: [],\r\n template: `\r\n <div class=\"mecx-input-upload-value\" [class.has-value]=\"value\">\r\n {{ value?.filename || value?.fileName || placeholder }}\r\n </div>\r\n <input\r\n (change)=\"onFileSelected($event)\"\r\n type=\"file\"\r\n class=\"file-input\"\r\n #fileInput\r\n [accept]=\"allowedExtensions.join(',')\"\r\n />\r\n @if (loading) {\r\n <div class=\"progress\">\r\n <div class=\"progress-bar\" [style.width.%]=\"progress\"></div>\r\n </div>\r\n }\r\n `,\r\n styleUrl: './input-upload.component.scss',\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyInputUploadComponent }\r\n ],\r\n host: {\r\n '[attr.data-testid]': \"'monkey-input-upload'\",\r\n class: 'mecx-input-upload',\r\n '[class.mecx-input-upload-disabled]': '_disabled',\r\n '[class.mecx-input-upload-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur()'\r\n }\r\n})\r\nexport class MonkeyInputUploadComponent\r\n implements MonkeyFormFieldControl, ControlValueAccessor, AfterContentInit, OnDestroy, OnChanges\r\n{\r\n @ViewChild('fileInput') fileInput!: ElementRef<HTMLInputElement>;\r\n\r\n @Input() progress: number = 0;\r\n\r\n @Input() placeholder: string = '';\r\n\r\n @Input() maxSizeBytes = 5 * 1024 * 1024;\r\n\r\n @Input() allowedExtensions = ['.jpg', '.jpeg', '.png', '.pdf', '.txt', '.xls', '.xlsx'];\r\n\r\n @Input({ transform: booleanAttribute })\r\n loading = false;\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _disabled: boolean = false;\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value && value !== undefined) {\r\n this._value = value;\r\n this._onChange(value);\r\n this._onTouched(value);\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value = null;\r\n\r\n constructor() {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n @Output() onChange = new EventEmitter<MonkeyInputUploadChangeEvent>();\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-input-upload-');\r\n\r\n focused: boolean = false;\r\n\r\n readonly type: string = '';\r\n\r\n currency: boolean = false;\r\n\r\n readonly percent: boolean = false;\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n private validateFileSize(file: File): boolean {\r\n return file.size <= this.maxSizeBytes;\r\n }\r\n\r\n private validateFileExtension(file: File): boolean {\r\n if (!this.allowedExtensions || !this.allowedExtensions.length) {\r\n return true;\r\n }\r\n const fileExtension = getFileExtension(file.name);\r\n\r\n const allowedExts = this.allowedExtensions.map((ext) => {\r\n return ext.trim().replace('.', '').toLowerCase();\r\n });\r\n\r\n return allowedExts.includes(fileExtension);\r\n }\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n if (!this.loading) {\r\n this.fileInput.nativeElement.click();\r\n }\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _onBlur() {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n\r\n disableToBeDirty?: boolean | undefined;\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n ngAfterContentInit(): void {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {}\r\n\r\n ngOnDestroy(): void {}\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n if (this.fileInput) {\r\n this.fileInput.nativeElement.disabled = isDisabled;\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n reset(): void {\r\n if (this.fileInput) {\r\n this.fileInput.nativeElement.value = '';\r\n }\r\n }\r\n\r\n onFileSelected(event: Event) {\r\n const input = event.target as HTMLInputElement;\r\n this._onTouched();\r\n if (!input.files?.length) {\r\n return;\r\n }\r\n\r\n const file = input.files.item(0);\r\n\r\n if (this.fileInput) {\r\n this.fileInput.nativeElement.value = '';\r\n }\r\n\r\n if (!this.validateFileSize(file!)) {\r\n this.ngControl?.control?.setErrors({\r\n maxFileSize: true,\r\n sizeAllowed: formatFileSize(this.maxSizeBytes)\r\n });\r\n this._onBlur();\r\n this.reset();\r\n return;\r\n }\r\n\r\n if (!this.validateFileExtension(file!)) {\r\n this.ngControl?.control?.setErrors({\r\n fileExtension: true,\r\n extensionAllowed: this.allowedExtensions.join(', ')\r\n });\r\n this._onBlur();\r\n this.reset();\r\n return;\r\n }\r\n\r\n this.ngControl?.control?.setErrors(null);\r\n\r\n this._onBlur();\r\n if (this.onChange.observed) {\r\n this.onChange.emit({ component: this, file: file! });\r\n } else {\r\n this.value = {\r\n fileName: file!.name,\r\n file\r\n };\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './input-upload.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive, inject, Input } from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\n\r\n@Directive({\r\n selector: 'monkey-modal-actions, [monkey-modal-actions]',\r\n host: {\r\n '[class]': `'mecx-modal-actions align-'+mkAlign`,\r\n '[attr.id]': 'id || null'\r\n },\r\n standalone: false\r\n})\r\nexport class MonkeyModalActionsDirective {\r\n @Input() mkAlign: 'start' | 'center' | 'end' = 'end';\r\n\r\n id = inject(IdGenerator).getId('monkey-modal-actions-');\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive, inject } from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\n\r\n@Directive({\r\n selector: 'monkey-modal-content, [monkey-modal-content]',\r\n host: {\r\n class: 'mecx-modal-content',\r\n '[attr.id]': 'id || null'\r\n },\r\n standalone: false\r\n})\r\nexport class MonkeyModalContentDirective {\r\n id = inject(IdGenerator).getId('monkey-modal-content-');\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive, inject } from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\n\r\n@Directive({\r\n selector: 'monkey-modal-subtitle, [monkey-modal-subtitle]',\r\n host: {\r\n class: 'mecx-modal-subtitle',\r\n '[attr.id]': 'id || null'\r\n },\r\n standalone: false\r\n})\r\nexport class MonkeyModalSubtitleDirective {\r\n id = inject(IdGenerator).getId('monkey-modal-subtitle-');\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive, inject } from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\n\r\n@Directive({\r\n selector: 'monkey-modal-title, [monkey-modal-title]',\r\n host: {\r\n class: 'mecx-modal-title',\r\n '[attr.id]': 'id || null'\r\n },\r\n standalone: false\r\n})\r\nexport class MonkeyModalTitleDirective {\r\n id = inject(IdGenerator).getId('monkey-modal-title-');\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { StaticProvider } from '@angular/core';\r\n\r\nexport class MonkeyModalConfig {\r\n id?: string;\r\n\r\n icon?: string;\r\n\r\n panelClass?: string | string[] = '';\r\n\r\n hasBackdrop?: boolean = true;\r\n\r\n backdropClass?: string | string[] = 'mecx-modal-overlay';\r\n\r\n disableClose?: boolean = false;\r\n\r\n disableBackdropClose?: boolean = false;\r\n\r\n maxWidth?: number | string;\r\n\r\n maxHeight?: number | string;\r\n\r\n fullscreen?: boolean = false;\r\n\r\n position?:\r\n | 'left-top'\r\n | 'center-top'\r\n | 'right-top'\r\n | 'left-center'\r\n | 'center-center'\r\n | 'right-center'\r\n | 'left-bottom'\r\n | 'center-bottom'\r\n | 'right-bottom' = 'center-center';\r\n\r\n data?: any | null = null;\r\n\r\n closeOnNavigation?: boolean = true;\r\n\r\n providers?: StaticProvider[];\r\n}\r\n\r\nexport interface MonkeyModalDefaultConfig {\r\n title: string;\r\n subtitle?: string;\r\n content: string;\r\n cancelLabel: string;\r\n okLabel: string;\r\n}\r\n\r\nexport interface MonkeyModalConfirmationConfig {\r\n title: string;\r\n content: string;\r\n cancelLabel: string;\r\n okLabel: string;\r\n type?: 'error' | 'success' | 'warning';\r\n confirmColor?: 'error' | 'success' | 'theme';\r\n icon?: string;\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { hasModifierKey } from '@angular/cdk/keycodes';\r\nimport { OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentRef } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { MonkeyModalConfig } from './modal-config';\r\n\r\nexport class MonkeyModalRef {\r\n readonly id?: string;\r\n\r\n readonly componentInstance!: any;\r\n\r\n readonly componentRef!: ComponentRef<any> | null;\r\n\r\n readonly icon?: string;\r\n\r\n disableClose: boolean | undefined;\r\n\r\n disableBackdropClose: boolean | undefined;\r\n\r\n closeOnNavigation: boolean | undefined;\r\n\r\n componentElement!: HTMLElement;\r\n\r\n readonly closed: Observable<any> = new Subject<any>();\r\n\r\n readonly backdropClick: Observable<MouseEvent>;\r\n\r\n readonly keydownEvents: Observable<KeyboardEvent>;\r\n\r\n readonly outsidePointerEvents: Observable<MouseEvent>;\r\n\r\n constructor(\r\n readonly overlayRef: OverlayRef,\r\n readonly config: MonkeyModalConfig\r\n ) {\r\n this.id = config.id;\r\n this.icon = config.icon;\r\n this.disableClose = config.disableClose;\r\n this.disableBackdropClose = config.disableBackdropClose;\r\n this.closeOnNavigation = config.closeOnNavigation;\r\n this.backdropClick = overlayRef.backdropClick();\r\n this.keydownEvents = overlayRef.keydownEvents();\r\n this.outsidePointerEvents = overlayRef.outsidePointerEvents();\r\n\r\n if (!this.disableBackdropClose) {\r\n this.keydownEvents.subscribe((event) => {\r\n if (event.key === 'Escape' && !this.disableClose && !hasModifierKey(event)) {\r\n event.preventDefault();\r\n this.close(undefined);\r\n }\r\n });\r\n\r\n this.backdropClick.subscribe(() => {\r\n if (!this.disableClose) {\r\n this.close(undefined);\r\n }\r\n });\r\n }\r\n }\r\n\r\n close(result?: any): void {\r\n if (this.componentInstance) {\r\n const closedSubject = this.closed as Subject<any>;\r\n\r\n const active = document.activeElement as HTMLElement;\r\n if (active && this.componentElement.contains(active)) {\r\n active.blur();\r\n }\r\n\r\n this.componentElement.querySelectorAll('monkey-modal')[0].classList.add('fade-out');\r\n setTimeout(() => {\r\n this.overlayRef.detach();\r\n }, 150);\r\n closedSubject.next(result);\r\n closedSubject.complete();\r\n // eslint-disable-next-line no-multi-assign\r\n (this as { componentInstance: any }).componentInstance = null!;\r\n }\r\n }\r\n\r\n afterClosed(): Observable<any> {\r\n return this.closed;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { OverlayRef } from '@angular/cdk/overlay';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n inject,\r\n OnDestroy,\r\n Optional,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { NavigationStart, Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { MonkeyModalRef } from './modal-ref';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-modal',\r\n template: `\r\n <div class=\"mecx-modal-header\">\r\n <div class=\"mecx-modal-header-group\">\r\n <div class=\"mecx-modal-header-title\">\r\n @if (modalRef?.icon) {\r\n <div class=\"mecx-modal-header-icon\">\r\n <i class=\"mk-i mk-i-{{ modalRef?.icon }}\"></i>\r\n </div>\r\n }\r\n <ng-content select=\"monkey-modal-title\"></ng-content>\r\n <ng-content select=\"[monkey-modal-title]\"></ng-content>\r\n </div>\r\n\r\n <ng-content select=\"monkey-modal-subtitle\"></ng-content>\r\n <ng-content select=\"[monkey-modal-subtitle]\"></ng-content>\r\n </div>\r\n @if (!modalRef?.disableClose) {\r\n <monkey-icon-button\r\n size=\"sm\"\r\n type=\"tertiary\"\r\n icon=\"close\"\r\n class=\"mecx-modal-close\"\r\n (click)=\"close()\"\r\n >\r\n </monkey-icon-button>\r\n }\r\n </div>\r\n <ng-content select=\"monkey-modal-content\"></ng-content>\r\n <ng-content select=\"[monkey-modal-content]\"></ng-content>\r\n <ng-content select=\"monkey-modal-actions\"></ng-content>\r\n <ng-content select=\"[monkey-modal-actions]\"></ng-content>\r\n `,\r\n host: {\r\n class: 'mecx-modal',\r\n tabindex: '-1',\r\n '[attr.id]': 'modalRef?.id || null'\r\n },\r\n styleUrl: './modal.component.scss',\r\n standalone: false\r\n})\r\nexport class MonkeyModalComponent implements AfterViewInit, OnDestroy {\r\n private _navigationSubscription: Subscription | null = null;\r\n\r\n private _router = inject(Router);\r\n\r\n constructor(\r\n private _elementRef: ElementRef,\r\n @Optional() public overlayRef?: OverlayRef,\r\n @Optional() public modalRef?: MonkeyModalRef\r\n ) {\r\n // not to do\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this._elementRef) {\r\n this._elementRef.nativeElement.focus();\r\n }\r\n\r\n if (this.modalRef?.closeOnNavigation) {\r\n this._navigationSubscription = this._router.events.subscribe((event) => {\r\n if (event instanceof NavigationStart) {\r\n this.close();\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this._navigationSubscription) {\r\n this._navigationSubscription.unsubscribe();\r\n this._navigationSubscription = null;\r\n }\r\n }\r\n\r\n close() {\r\n const element = this._elementRef.nativeElement as HTMLElement;\r\n\r\n element.classList.add('fade-out');\r\n\r\n setTimeout(() => {\r\n this.modalRef?.close();\r\n }, 150);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { InjectionToken } from '@angular/core';\r\nimport { MonkeyModalConfirmationConfig, MonkeyModalDefaultConfig } from './modal-config';\r\n\r\nexport const MECX_MODAL_DATA = new InjectionToken<any>('mecxModalData');\r\nexport const MECX_MODAL_DEFAULT_CONFIG = new InjectionToken<MonkeyModalDefaultConfig>(\r\n 'mecxModalDefaultConfig'\r\n);\r\nexport const MECX_MODAL_CONFIRMATION_CONFIG = new InjectionToken<MonkeyModalConfirmationConfig>(\r\n 'mecxModalConfirmationConfig'\r\n);\r\n\r\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.dev/license\r\n */\r\nexport function reverseForEach<T>(items: T[] | readonly T[], callback: (current: T) => void) {\r\n let i = items.length;\r\n\r\n // eslint-disable-next-line no-plusplus\r\n while (i--) {\r\n callback(items[i]);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, Inject, ViewEncapsulation } from '@angular/core';\r\nimport { MonkeyModalConfirmationConfig } from '../modal-config';\r\nimport { MonkeyModalRef } from '../modal-ref';\r\nimport { MECX_MODAL_CONFIRMATION_CONFIG } from '../utils';\r\n\r\n@Component({\r\n selector: 'monkey-modal-confirmation',\r\n encapsulation: ViewEncapsulation.None,\r\n styleUrls: ['./confirmation.component.scss'],\r\n template: `\r\n <monkey-modal class=\"modal-confirmation\">\r\n <monkey-modal-content>\r\n @if (config.icon) {\r\n <div class=\"modal-confirmation-icon {{ config.type }}\">\r\n <i class=\"mk-i mk-i-{{ config.icon }} xxl\"></i>\r\n </div>\r\n }\r\n <div class=\"confirmation-title\" [innerHTML]=\"config.title\"></div>\r\n <div class=\"confirmation-description\" [innerHTML]=\"config.content\"></div>\r\n </monkey-modal-content>\r\n <monkey-modal-actions>\r\n <monkey-button type=\"tertiary\" (click)=\"onClose()\">{{ config.cancelLabel }}</monkey-button>\r\n <monkey-button type=\"primary\" (click)=\"onSubmit()\">{{ config.okLabel }}</monkey-button>\r\n </monkey-modal-actions>\r\n </monkey-modal>\r\n `,\r\n standalone: false\r\n})\r\nexport class MonkeyModalConfirmationComponent {\r\n constructor(\r\n @Inject(MECX_MODAL_CONFIRMATION_CONFIG) public config: MonkeyModalConfirmationConfig,\r\n @Inject(MonkeyModalRef) private modalRef: MonkeyModalRef\r\n ) {\r\n // not to do\r\n }\r\n\r\n onSubmit() {\r\n this.modalRef.close(true);\r\n }\r\n\r\n onClose() {\r\n this.modalRef.close();\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, Inject } from '@angular/core';\r\nimport { MonkeyModalDefaultConfig } from '../modal-config';\r\nimport { MonkeyModalRef } from '../modal-ref';\r\nimport { MECX_MODAL_DEFAULT_CONFIG } from '../utils';\r\n\r\n@Component({\r\n selector: 'monkey-modal-default',\r\n template: `\r\n <monkey-modal>\r\n <monkey-modal-title [innerHTML]=\"config.title\"></monkey-modal-title>\r\n <monkey-modal-subtitle [innerHTML]=\"config.subtitle\"></monkey-modal-subtitle>\r\n <monkey-modal-content [innerHTML]=\"config.content\"></monkey-modal-content>\r\n <monkey-modal-actions mkAlign=\"end\">\r\n <monkey-button type=\"tertiary\" (click)=\"onClose()\">{{ config.cancelLabel }}</monkey-button>\r\n <monkey-button type=\"primary\" (click)=\"onSubmit()\">{{ config.okLabel }}</monkey-button>\r\n </monkey-modal-actions>\r\n </monkey-modal>\r\n `,\r\n standalone: false\r\n})\r\nexport class MonkeyModalDefaultComponent {\r\n constructor(\r\n @Inject(MECX_MODAL_DEFAULT_CONFIG) public config: MonkeyModalDefaultConfig,\r\n @Inject(MonkeyModalRef) private modalRef: MonkeyModalRef\r\n ) {\r\n // not to do\r\n }\r\n\r\n onSubmit() {\r\n this.modalRef.close(true);\r\n }\r\n\r\n onClose() {\r\n this.modalRef.close();\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MonkeyButtonComponent } from '../button';\r\nimport { MonkeyIconButtonComponent } from '../icon-button/icon-button.component';\r\nimport { MonkeyModalConfirmationComponent } from './components/confirmation.component';\r\nimport { MonkeyModalDefaultComponent } from './components/default';\r\nimport { MonkeyModalActionsDirective } from './directives/actions';\r\nimport { MonkeyModalContentDirective } from './directives/content';\r\nimport { MonkeyModalSubtitleDirective } from './directives/subtitle';\r\nimport { MonkeyModalTitleDirective } from './directives/title';\r\nimport { MonkeyModalComponent } from './modal.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule, MonkeyButtonComponent, MonkeyIconButtonComponent],\r\n declarations: [\r\n MonkeyModalComponent,\r\n MonkeyModalDefaultComponent,\r\n MonkeyModalConfirmationComponent,\r\n MonkeyModalTitleDirective,\r\n MonkeyModalSubtitleDirective,\r\n MonkeyModalContentDirective,\r\n MonkeyModalActionsDirective\r\n ],\r\n exports: [\r\n MonkeyModalComponent,\r\n MonkeyModalTitleDirective,\r\n MonkeyModalSubtitleDirective,\r\n MonkeyModalContentDirective,\r\n MonkeyModalActionsDirective\r\n ]\r\n})\r\nexport class MonkeyModalModule {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\r\nimport { inject, Injectable, Injector, StaticProvider } from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyModalConfirmationComponent } from './components/confirmation.component';\r\nimport { MonkeyModalDefaultComponent } from './components/default';\r\nimport {\r\n MonkeyModalConfig,\r\n MonkeyModalConfirmationConfig,\r\n MonkeyModalDefaultConfig\r\n} from './modal-config';\r\nimport { MonkeyModalRef } from './modal-ref';\r\nimport {\r\n MECX_MODAL_CONFIRMATION_CONFIG,\r\n MECX_MODAL_DATA,\r\n MECX_MODAL_DEFAULT_CONFIG,\r\n reverseForEach\r\n} from './utils';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MonkeyModalService {\r\n protected _idGenerator = inject(IdGenerator);\r\n\r\n protected _injector = inject(Injector);\r\n\r\n protected _overlay = inject(Overlay);\r\n\r\n protected _openDialogsAtThisLevel: MonkeyModalRef[] = [];\r\n\r\n protected _parentDialog = inject(MonkeyModalService, { optional: true, skipSelf: true });\r\n\r\n protected get openDialogs(): readonly MonkeyModalRef[] {\r\n return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;\r\n }\r\n\r\n private getOverlayConfig(config: MonkeyModalConfig): OverlayConfig {\r\n let positionStrategy;\r\n const marginStrategy = '20px';\r\n if (config.position === 'left-top') {\r\n positionStrategy = this._overlay.position().global().left(marginStrategy).top(marginStrategy);\r\n } else if (config.position === 'center-top') {\r\n positionStrategy = this._overlay.position().global().centerHorizontally().top(marginStrategy);\r\n } else if (config.position === 'right-top') {\r\n positionStrategy = this._overlay\r\n .position()\r\n .global()\r\n .right(marginStrategy)\r\n .top(marginStrategy);\r\n } else if (config.position === 'left-center') {\r\n positionStrategy = this._overlay.position().global().left(marginStrategy).centerVertically();\r\n } else if (config.position === 'center-center') {\r\n positionStrategy = this._overlay.position().global().centerHorizontally().centerVertically();\r\n } else if (config.position === 'right-center') {\r\n positionStrategy = this._overlay.position().global().right(marginStrategy).centerVertically();\r\n } else if (config.position === 'left-bottom') {\r\n positionStrategy = this._overlay\r\n .position()\r\n .global()\r\n .left(marginStrategy)\r\n .bottom(marginStrategy);\r\n } else if (config.position === 'center-bottom') {\r\n positionStrategy = this._overlay.position().global().centerHorizontally().bottom('20px');\r\n } else if (config.position === 'right-bottom') {\r\n positionStrategy = this._overlay\r\n .position()\r\n .global()\r\n .right(marginStrategy)\r\n .bottom(marginStrategy);\r\n }\r\n\r\n let panelClass = ['monkey-modal-panel'];\r\n\r\n if (config.fullscreen) {\r\n panelClass.push('monkey-modal-fullscreen');\r\n }\r\n\r\n if (Array.isArray(config.panelClass)) {\r\n panelClass = [...panelClass, ...config.panelClass];\r\n } else {\r\n panelClass.push(config.panelClass as string);\r\n }\r\n\r\n const state = new OverlayConfig({\r\n positionStrategy,\r\n scrollStrategy: this._overlay.scrollStrategies.block(),\r\n panelClass,\r\n hasBackdrop: config.hasBackdrop,\r\n maxWidth: config.maxWidth,\r\n maxHeight: config.maxHeight,\r\n disposeOnNavigation: config.closeOnNavigation\r\n });\r\n\r\n if (config.backdropClass) {\r\n state.backdropClass = config.backdropClass;\r\n }\r\n\r\n if (config.maxWidth) {\r\n state.width = '100%';\r\n }\r\n if (config.maxHeight) {\r\n state.height = '100%';\r\n }\r\n\r\n return state;\r\n }\r\n\r\n private createInjector(\r\n config: MonkeyModalConfig,\r\n dialogRef: MonkeyModalRef,\r\n overlayRef: OverlayRef,\r\n fallbackInjector: Injector | undefined\r\n ): Injector {\r\n const providers: StaticProvider[] = [\r\n { provide: OverlayRef, useValue: overlayRef },\r\n { provide: MonkeyModalRef, useValue: dialogRef },\r\n { provide: MECX_MODAL_DATA, useValue: config.data }\r\n ];\r\n\r\n if (config.providers) {\r\n providers.push(...config.providers);\r\n }\r\n\r\n return Injector.create({ parent: fallbackInjector, providers });\r\n }\r\n\r\n open<T>(component: ComponentType<T>, config: MonkeyModalConfig) {\r\n const defaultConfig = new MonkeyModalConfig();\r\n\r\n config = { ...defaultConfig, ...config };\r\n config.id = this._idGenerator.getId('monkey-modal-');\r\n\r\n const overlayConfig = this.getOverlayConfig(config);\r\n const overlayRef = this._overlay.create(overlayConfig);\r\n const modalRef = new MonkeyModalRef(overlayRef, config);\r\n\r\n const injector = this.createInjector(config, modalRef, overlayRef, this._injector);\r\n\r\n const componentPortal = new ComponentPortal(component, null, injector);\r\n const componentRef = overlayRef.attach(componentPortal);\r\n\r\n const componentElement = componentRef.location.nativeElement as HTMLElement;\r\n componentElement.style.width = '100%';\r\n componentElement.style.height = '100%';\r\n modalRef.componentElement = componentElement;\r\n\r\n (modalRef as { componentInstance: T }).componentInstance = componentRef.instance;\r\n\r\n (this.openDialogs as MonkeyModalRef[]).push(modalRef);\r\n\r\n return modalRef;\r\n }\r\n\r\n openDefault(params: MonkeyModalDefaultConfig, config: MonkeyModalConfig) {\r\n config.providers = [{ provide: MECX_MODAL_DEFAULT_CONFIG, useValue: params }];\r\n config.icon = config.icon ? config.icon : 'help';\r\n\r\n return this.open(MonkeyModalDefaultComponent, config);\r\n }\r\n\r\n openConfirmation(params: MonkeyModalConfirmationConfig, config: MonkeyModalConfig) {\r\n config.providers = [{ provide: MECX_MODAL_CONFIRMATION_CONFIG, useValue: params }];\r\n\r\n return this.open(MonkeyModalConfirmationComponent, config);\r\n }\r\n\r\n closeAll(): void {\r\n reverseForEach(this.openDialogs, (dialog) => {\r\n return dialog.close();\r\n });\r\n\r\n (this.openDialogs as MonkeyModalRef[]).splice(0, this.openDialogs.length);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './directives/actions';\r\nexport * from './directives/content';\r\nexport * from './directives/subtitle';\r\nexport * from './directives/title';\r\nexport * from './modal-config';\r\nexport * from './modal-ref';\r\nexport * from './modal.component';\r\nexport * from './modal.module';\r\nexport * from './modal.service';\r\nexport { MECX_MODAL_DATA, MECX_MODAL_DEFAULT_CONFIG } from './utils';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, inject, Input, output } from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyButtonComponent } from '../button';\r\n\r\n@Component({\r\n selector: 'monkey-pass-number',\r\n imports: [MonkeyButtonComponent],\r\n template: `\r\n <div class=\"pin-selected\">\r\n @for (input of [0, 1, 2, 3]; track input) {\r\n <div class=\"pin-input\">\r\n {{ selected[input] }}\r\n </div>\r\n }\r\n </div>\r\n <div class=\"grid\">\r\n @for (pin of [1, 2, 3, 4, 5, 6, 7, 8, 9]; track pin) {\r\n <monkey-button\r\n size=\"lg\"\r\n (click)=\"onPress(pin)\"\r\n [disabled]=\"isDisabledNumbers || disabled\"\r\n color=\"black\"\r\n >\r\n {{ pin }}\r\n </monkey-button>\r\n }\r\n <div></div>\r\n <monkey-button\r\n size=\"lg\"\r\n (click)=\"onPress(0)\"\r\n [disabled]=\"isDisabledNumbers || disabled\"\r\n color=\"black\"\r\n >\r\n 0\r\n </monkey-button>\r\n <monkey-button\r\n size=\"lg\"\r\n type=\"secondary\"\r\n (click)=\"clear()\"\r\n [disabled]=\"isDisabledClear || disabled\"\r\n >\r\n <i class=\"mk-i mk-i-delete\"></i>\r\n </monkey-button>\r\n </div>\r\n `,\r\n styleUrl: './pass-number.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-pass-number',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyPassNumberComponent {\r\n @Input() disabled!: boolean;\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-pass-number-');\r\n\r\n protected _id!: string;\r\n\r\n protected selected: number[] = [];\r\n\r\n onChange = output<number[]>();\r\n\r\n get isDisabledNumbers() {\r\n return this.selected?.length === 4;\r\n }\r\n\r\n get isDisabledClear() {\r\n return this.selected?.length === 0;\r\n }\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n protected clear(): void {\r\n this.selected = [];\r\n this.onChange.emit(this.selected);\r\n }\r\n protected onPress(pin: number): void {\r\n if (this.selected.length < 4) {\r\n this.selected.push(pin);\r\n this.onChange.emit(this.selected);\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { AsyncPipe } from '@angular/common';\r\nimport { Component, inject, Input, OnInit, output } from '@angular/core';\r\nimport { IdGenerator, shuffle } from '../../../utils';\r\nimport { MonkeyDictionaryService } from '../../services';\r\nimport { MonkeyButtonComponent } from '../button';\r\n\r\ntype PinCombinations = {\r\n first: number;\r\n last: number;\r\n};\r\n\r\ntype PinResult = {\r\n passNumber1: string;\r\n passNumber2: string;\r\n passNumber3: string;\r\n passNumber4: string;\r\n};\r\n\r\n@Component({\r\n selector: 'monkey-pass-secret-number',\r\n imports: [AsyncPipe, MonkeyButtonComponent],\r\n template: `\r\n <div class=\"pin-selected\">\r\n @for (input of [0, 1, 2, 3]; track input) {\r\n <div class=\"pin-input\" [class.filled]=\"selected[input]\"></div>\r\n }\r\n </div>\r\n <div class=\"grid\">\r\n @for (pin of pins; track pin) {\r\n <monkey-button\r\n size=\"lg\"\r\n (click)=\"onPress(pin)\"\r\n [disabled]=\"isDisabledNumbers || disabled\"\r\n color=\"black\"\r\n >\r\n {{ pin.first }} {{ orLabel | async }} {{ pin.last }}\r\n </monkey-button>\r\n }\r\n <monkey-button\r\n data-testid=\"clear-button\"\r\n size=\"lg\"\r\n type=\"secondary\"\r\n (click)=\"clear()\"\r\n [disabled]=\"isDisabledClear || disabled\"\r\n >\r\n <i class=\"mk-i mk-i-delete\"></i>\r\n </monkey-button>\r\n </div>\r\n `,\r\n styleUrl: './pass-number.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-pass-secret-number',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyPassSecretNumberComponent implements OnInit {\r\n protected _uid = inject(IdGenerator).getId('monkey-pass-secret-number-');\r\n\r\n @Input() disabled!: boolean;\r\n\r\n protected _id!: string;\r\n\r\n readonly orLabel = inject(MonkeyDictionaryService).get('OR');\r\n\r\n protected pins: PinCombinations[] = [];\r\n\r\n protected selected: string[] = [];\r\n\r\n onChange = output<PinResult>();\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n get isDisabledNumbers() {\r\n return this.selected?.length === 4;\r\n }\r\n\r\n get isDisabledClear() {\r\n return this.selected?.length === 0;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n ngOnInit() {\r\n const qtd = 10;\r\n\r\n const pinPasswords = shuffle(\r\n new Array(qtd).fill(qtd).map((value: number, i: number) => {\r\n return (value * i) / qtd;\r\n })\r\n );\r\n\r\n this.pins = pinPasswords\r\n .map((value: number, index: number) => {\r\n return {\r\n first: value,\r\n last: pinPasswords[pinPasswords.length - index - 1]\r\n };\r\n })\r\n .slice(0, 5);\r\n }\r\n\r\n protected clear(): void {\r\n this.selected = [];\r\n this.onChange.emit(this.getPinPassword());\r\n }\r\n\r\n private getPinPassword(): PinResult {\r\n const result: PinResult = {\r\n passNumber1: '',\r\n passNumber2: '',\r\n passNumber3: '',\r\n passNumber4: ''\r\n };\r\n this.selected.forEach((value, index) => {\r\n result[`passNumber${index + 1}` as keyof PinResult] = value;\r\n });\r\n return result!;\r\n }\r\n\r\n protected onPress(pin: PinCombinations): void {\r\n if (this.selected.length < 4) {\r\n this.selected.push(`${pin.first}${pin.last}`);\r\n this.onChange.emit(this.getPinPassword());\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './pass-number.component';\r\nexport * from './pass-secret-number.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n inject,\r\n Input,\r\n Optional,\r\n Output,\r\n QueryList,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NgControl,\r\n ReactiveFormsModule,\r\n Validators\r\n} from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils/id-generator';\r\nimport { MonkeySize } from '../../interfaces';\r\nimport { MonkeyFormFieldControl } from '../form-field/form-field-control';\r\nimport { MonkeyFormFieldComponent } from '../form-field/form-field.component';\r\nimport { MonkeyOptionComponent } from '../option/option.component';\r\n\r\n@Component({\r\n selector: 'monkey-radiobutton',\r\n imports: [ReactiveFormsModule, FormsModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: 'radio-button.component.html',\r\n styleUrls: ['./radio-button.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n // eslint-disable-next-line no-use-before-define\r\n { provide: MonkeyFormFieldControl, useExisting: MonkeyRadioButtonComponent }\r\n ],\r\n host: {\r\n 'data-testid': 'monkey-radiobutton',\r\n class: 'mecx-radiobutton',\r\n '[class.mecx-disabled]': 'disabled',\r\n '[class.mecx-radiobutton-focused]': 'focused',\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'disabled ? -1 : tabIndex',\r\n '(focus)': '_onFocus()',\r\n '(blur)': '_onBlur()'\r\n }\r\n})\r\nexport class MonkeyRadioButtonComponent\r\n implements MonkeyFormFieldControl, ControlValueAccessor, AfterContentInit\r\n{\r\n @ContentChildren(MonkeyOptionComponent) options!: QueryList<MonkeyOptionComponent>;\r\n\r\n @Input() tabIndex = 0;\r\n\r\n @Output() onChange = new EventEmitter();\r\n\r\n @Output() onSearch = new EventEmitter();\r\n\r\n @Input() position = 'horizontal';\r\n\r\n @Input()\r\n size: MonkeySize = 'lg';\r\n\r\n @HostBinding('class')\r\n get classes() {\r\n return `${this.position} ${this.size}`;\r\n }\r\n\r\n @Input({ transform: booleanAttribute })\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value;\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n @Input({ transform: booleanAttribute })\r\n get required(): boolean {\r\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\r\n }\r\n\r\n set required(value: boolean) {\r\n this._required = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n private _required: boolean | undefined;\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this._value !== value) {\r\n this._value = value;\r\n this._onChange(value);\r\n }\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n _value = null;\r\n\r\n private _destroyRef = inject(DestroyRef);\r\n\r\n private readonly idGenerator = inject(IdGenerator);\r\n\r\n ngControl: NgControl | null = inject(NgControl, { self: true, optional: true })!;\r\n\r\n protected _elementRef =\r\n inject<ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>>(ElementRef);\r\n\r\n focused: boolean = false;\r\n\r\n _disabled: boolean = false;\r\n\r\n readonly id: string = this.idGenerator.getId('monkey-radiobutton-');\r\n\r\n readonly stateChanges = new Subject<void>();\r\n\r\n readonly type: string = 'radio-button';\r\n\r\n constructor(\r\n private changeDetectorRef: ChangeDetectorRef,\r\n @Optional() private formField: MonkeyFormFieldComponent\r\n ) {\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n private changeSelected() {\r\n setTimeout(() => {\r\n if (this.options) {\r\n this.options.forEach((opt) => {\r\n opt.onSelect(opt.value() === this.value);\r\n });\r\n }\r\n this.changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n private initializeOptions() {\r\n setTimeout(() => {\r\n this.options?.forEach((option) => {\r\n option.type = 'radio';\r\n if (!option.action) {\r\n option.action = this.selectOption.bind(this, option);\r\n }\r\n });\r\n this.changeDetectorRef.markForCheck();\r\n }, 0);\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.initializeOptions();\r\n this.options.changes.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\r\n this.initializeOptions();\r\n this.changeSelected();\r\n });\r\n }\r\n\r\n selectOption(option: MonkeyOptionComponent): void {\r\n if (!option.disabled && !this.disabled) {\r\n this.value = option.value();\r\n this._onChange(this.value);\r\n this.onChange.emit(this.value);\r\n\r\n this.options.forEach((opt) => {\r\n opt.onSelect(opt.value() === this.value);\r\n });\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n this.changeSelected();\r\n }\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n if (this.disabled) return;\r\n\r\n this._elementRef.nativeElement.focus();\r\n }\r\n\r\n _onFocus() {\r\n if (!this.disabled) {\r\n this.focused = true;\r\n this._onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n _onBlur() {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n\r\n _onChange: any = () => {};\r\n\r\n _onTouched: any = () => {};\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n this.initializeOptions();\r\n }\r\n}\r\n","<ng-content />\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './radio-button.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, HostBinding, inject, Input, input, ViewEncapsulation } from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [],\r\n selector: 'monkey-security-level',\r\n styleUrl: './security-level.component.scss',\r\n templateUrl: './security-level.component.html',\r\n host: {\r\n 'data-testid': 'monkey-security-level',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeySecurityLevelComponent {\r\n label = input<string>();\r\n\r\n score = input.required<number>();\r\n\r\n strengthLabel = input<string>();\r\n\r\n @HostBinding('class')\r\n public get class(): string {\r\n if (this.score() === 0) {\r\n return 'empty';\r\n }\r\n\r\n if (this.score() < 300) {\r\n return 'weak';\r\n }\r\n\r\n if (this.score() >= 300 && this.score() < 800) {\r\n return 'medium';\r\n }\r\n\r\n if (this.score() >= 800 && this.score() < 1000) {\r\n return 'strong';\r\n }\r\n\r\n return 'very-strong';\r\n }\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-security-level-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","<div class=\"body\">\r\n <div>\r\n @if (label(); as lb) {\r\n <span data-testid=\"label\">\r\n {{ lb }}\r\n </span>\r\n }\r\n @if (strengthLabel(); as strLabel) {\r\n <span data-testid=\"str-label\" class=\"level-info\">\r\n {{ strLabel }}\r\n </span>\r\n }\r\n </div>\r\n <div class=\"bar\"></div>\r\n</div>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './security-level.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostBinding,\r\n inject,\r\n Input,\r\n input\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeySize } from '../../interfaces';\r\n\r\ntype Status = 'default' | 'success' | 'warning' | 'error' | 'question' | 'info';\r\n\r\n@Component({\r\n selector: 'monkey-status',\r\n imports: [],\r\n templateUrl: './status.component.html',\r\n styleUrl: './status.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n 'data-testid': 'monkey-status',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyStatusComponent {\r\n type = input.required<Status>();\r\n\r\n size = input<MonkeySize>('md');\r\n\r\n label = input<string>();\r\n\r\n @HostBinding('class')\r\n public get class(): string {\r\n return `${this.type()} ${this.size()}`;\r\n }\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-status-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","<div class=\"status\"></div>\r\n@if (label(); as lb) {\r\n <span>\r\n {{ lb }}\r\n </span>\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './status.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentInit,\r\n Component,\r\n ContentChildren,\r\n inject,\r\n Input,\r\n QueryList,\r\n signal\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../../utils';\r\n\r\n@Component({\r\n selector: 'monkey-step',\r\n standalone: false,\r\n template: `\r\n <div\r\n class=\"item\"\r\n [class.active]=\"isActive()\"\r\n [class.complete]=\"isComplete()\"\r\n [class.current]=\"isCurrent()\"\r\n [class.substep]=\"isSubStep()\"\r\n >\r\n <div class=\"step\">\r\n <div class=\"number\" [class.icon]=\"!!icon\">\r\n @if (icon) {\r\n <i class=\"mk-i mk-i-{{ icon }} sm\"></i>\r\n } @else if (isComplete()) {\r\n <util-icon name=\"check\" />\r\n } @else {\r\n {{ number() }}\r\n }\r\n </div>\r\n </div>\r\n <div class=\"label\">\r\n <div>{{ label }}</div>\r\n @if (isCurrent()) {\r\n <div class=\"current-icon\">\r\n <i class=\"mk-i mk-i-arrow-line-right sm\"></i>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n @if (hasSubSteps() && (isActive() || isCurrent())) {\r\n <div class=\"substeps\">\r\n <ng-content />\r\n </div>\r\n }\r\n `,\r\n styleUrl: './step.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-step',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyStepComponent implements AfterContentInit {\r\n protected id = inject(IdGenerator).getId('monkey-step-');\r\n\r\n // eslint-disable-next-line no-use-before-define\r\n @ContentChildren(MonkeyStepComponent) subSteps!: QueryList<MonkeyStepComponent>;\r\n\r\n @Input() label = '';\r\n\r\n @Input() step = '';\r\n\r\n @Input() icon = '';\r\n\r\n number = signal<number | undefined>(undefined);\r\n\r\n hasSubSteps = signal<boolean>(true);\r\n\r\n isSubStep = signal<boolean>(false);\r\n\r\n isCurrent = signal<boolean>(false);\r\n\r\n isComplete = signal<boolean>(false);\r\n\r\n isActive = signal<boolean>(false);\r\n\r\n ngAfterContentInit(): void {\r\n if (this.subSteps.length <= 0) {\r\n this.hasSubSteps.set(false);\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChildren,\r\n inject,\r\n Input,\r\n OnChanges,\r\n QueryList,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyStepComponent } from './step/step.component';\r\n\r\n@Component({\r\n selector: 'monkey-stepper',\r\n standalone: false,\r\n template: `<ng-content />`,\r\n styleUrl: './stepper.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n 'data-testid': 'monkey-stepper',\r\n '[attr.id]': 'monkeyId',\r\n '[id]': 'monkeyId',\r\n '[class.horizontal]': `direction === 'horizontal'`\r\n }\r\n})\r\nexport class MonkeyStepperComponent implements AfterContentInit, OnChanges {\r\n protected monkeyId = inject(IdGenerator).getId('monkey-stepper-');\r\n\r\n @ContentChildren(MonkeyStepComponent) steps!: QueryList<MonkeyStepComponent>;\r\n\r\n @Input() direction: 'horizontal' | 'vertical' = 'vertical';\r\n\r\n private _id = '';\r\n\r\n @Input()\r\n set id(value: string) {\r\n this._id = value;\r\n }\r\n\r\n get id() {\r\n return this._id;\r\n }\r\n\r\n @Input() currentStep? = '';\r\n\r\n ngAfterContentInit(): void {\r\n this.render();\r\n }\r\n\r\n ngOnChanges(): void {\r\n if (this.steps) {\r\n this.render();\r\n }\r\n }\r\n\r\n render() {\r\n let stepFound = false;\r\n\r\n this.steps.forEach((step, index) => {\r\n step.number.set(index + 1);\r\n\r\n step.isCurrent.set(this.currentStep === step.step);\r\n if (step.isCurrent()) {\r\n stepFound = true;\r\n }\r\n\r\n if (step.hasSubSteps()) {\r\n step.subSteps.forEach((subStep) => {\r\n subStep.isSubStep.set(true);\r\n subStep.isCurrent.set(this.currentStep === subStep.step);\r\n if (subStep.isCurrent()) {\r\n stepFound = true;\r\n }\r\n subStep.isComplete.set(!stepFound);\r\n });\r\n\r\n step.isComplete.set(\r\n step.subSteps.toArray().every((_) => {\r\n return _.isComplete();\r\n })\r\n );\r\n\r\n step.isActive.set(\r\n step.subSteps.toArray().some((_) => {\r\n return _.isCurrent();\r\n })\r\n );\r\n } else {\r\n step.isComplete.set(!stepFound);\r\n }\r\n });\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { NgModule } from '@angular/core';\r\nimport { UtilIconComponent } from '../../../utils';\r\nimport { MonkeyStepComponent } from './step/step.component';\r\nimport { MonkeyStepperComponent } from './stepper.component';\r\n\r\n@NgModule({\r\n declarations: [MonkeyStepperComponent, MonkeyStepComponent],\r\n imports: [UtilIconComponent],\r\n exports: [MonkeyStepperComponent, MonkeyStepComponent]\r\n})\r\nexport class MonkeyStepperModule {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, EventEmitter, inject, Input, Output, ViewEncapsulation } from '@angular/core';\r\nimport { IdGenerator } from '../../../../../utils';\r\nimport { MonkeyButtonComponent } from '../../../button';\r\n\r\n@Component({\r\n imports: [MonkeyButtonComponent],\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-pagination-action',\r\n exportAs: 'monkeyPaginationAction',\r\n templateUrl: './pagination-action.html',\r\n styleUrl: './pagination-action.scss',\r\n host: {\r\n 'data-testid': 'monkey-pagination-action',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyPaginationActionComponent {\r\n @Input() disabled!: boolean;\r\n\r\n @Input() first!: boolean;\r\n\r\n @Input() last!: boolean;\r\n\r\n @Input({ required: true }) next: boolean = false;\r\n\r\n @Input({ required: true }) prev: boolean = false;\r\n\r\n @Output() onAction = new EventEmitter();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-pagination-action-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","<monkey-button\r\n type=\"secondary\"\r\n size=\"sm\"\r\n (click)=\"onAction.next('prev')\"\r\n [disabled]=\"disabled || !prev\"\r\n>\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M11.670 8.630 C 9.335 10.964,8.550 11.772,8.523 11.870 C 8.501 11.947,8.501 12.053,8.523 12.130 C 8.574 12.316,14.682 18.423,14.870 18.477 C 15.231 18.581,15.581 18.231,15.477 17.869 C 15.450 17.774,14.687 16.987,12.570 14.870 L 9.700 12.000 12.570 9.130 C 14.687 7.013,15.450 6.226,15.477 6.131 C 15.528 5.951,15.464 5.747,15.316 5.623 C 15.219 5.541,15.151 5.520,14.988 5.520 L 14.781 5.520 11.670 8.630 \"\r\n stroke=\"none\"\r\n fill-rule=\"evenodd\"\r\n fill=\"black\"\r\n ></path>\r\n </svg>\r\n</monkey-button>\r\n\r\n<monkey-button\r\n type=\"secondary\"\r\n size=\"sm\"\r\n (click)=\"onAction.next('next')\"\r\n [disabled]=\"disabled || !next\"\r\n>\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M8.751 5.583 C 8.552 5.691,8.459 6.004,8.564 6.213 C 8.588 6.261,9.889 7.583,11.454 9.150 L 14.300 12.000 11.454 14.850 C 9.889 16.418,8.588 17.739,8.564 17.787 C 8.357 18.197,8.823 18.640,9.232 18.423 C 9.363 18.353,15.373 12.337,15.436 12.213 C 15.497 12.092,15.491 11.897,15.423 11.768 C 15.353 11.637,9.337 5.627,9.213 5.564 C 9.092 5.503,8.881 5.512,8.751 5.583 \"\r\n stroke=\"none\"\r\n fill-rule=\"evenodd\"\r\n fill=\"black\"\r\n ></path>\r\n </svg>\r\n</monkey-button>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, inject, Input, ViewEncapsulation } from '@angular/core';\r\nimport { IdGenerator } from '../../../../../utils';\r\n\r\n@Component({\r\n standalone: true,\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-pagination-label',\r\n exportAs: 'monkeyPaginationLabel',\r\n templateUrl: './pagination-label.html',\r\n styleUrl: './pagination-label.scss',\r\n host: {\r\n 'data-testid': 'monkey-pagination-label',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyPaginationLabelComponent {\r\n protected _uid = inject(IdGenerator).getId('monkey-pagination-label-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, EventEmitter, inject, Input, Output, ViewEncapsulation } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { IdGenerator } from '../../../../../utils';\r\nimport { MonkeyFormFieldModule } from '../../../form-field/form-field.module';\r\nimport { MonkeyOptionComponent } from '../../../option/option.component';\r\nimport { MonkeySelectComponent } from '../../../select/select.component';\r\n\r\n@Component({\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MonkeySelectComponent,\r\n MonkeyOptionComponent,\r\n MonkeyFormFieldModule\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n selector: 'monkey-pagination-size',\r\n exportAs: 'monkeyPaginationSize',\r\n templateUrl: './pagination-size.html',\r\n styleUrl: './pagination-size.scss',\r\n host: {\r\n 'data-testid': 'monkey-pagination-size',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyPaginationSizeComponent {\r\n @Input({ required: true }) size!: 10 | 20 | 50 | 100;\r\n\r\n @Input() disabled!: boolean;\r\n\r\n @Output() onChange = new EventEmitter();\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-pagination-size-');\r\n\r\n protected _id!: string;\r\n\r\n sizes = [10, 20, 50, 100];\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n<monkey-form-field hideClear size=\"sm\" noFooterSpace>\r\n <monkey-select\r\n placeholder=\"\"\r\n [ngModel]=\"size\"\r\n (onChange)=\"onChange.next($event)\"\r\n [disabled]=\"disabled\"\r\n [showSearch]=\"false\"\r\n >\r\n @for (item of sizes; track item) {\r\n <monkey-option [value]=\"item\">{{ item }}</monkey-option>\r\n }\r\n </monkey-select>\r\n</monkey-form-field>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n Directive,\r\n TemplateRef,\r\n booleanAttribute,\r\n contentChild,\r\n inject,\r\n input,\r\n model\r\n} from '@angular/core';\r\nimport { MonkeyColumnAlign, MonkeyColumnPinned } from './table-core';\r\n\r\nexport interface MonkeyTableCellContext<T> {\r\n $implicit: T;\r\n row: T;\r\n index: number;\r\n first: boolean;\r\n last: boolean;\r\n}\r\n\r\nexport type MonkeyTableSortKind = 'text' | 'number' | 'date';\r\n\r\n@Directive({\r\n selector: 'ng-template[mkCell]'\r\n})\r\nexport class MonkeyTableCellDirective<T> {\r\n readonly template = inject<TemplateRef<MonkeyTableCellContext<T>>>(TemplateRef);\r\n\r\n static ngTemplateContextGuard<T>(\r\n _dir: MonkeyTableCellDirective<T>,\r\n _ctx: unknown\r\n ): _ctx is MonkeyTableCellContext<T> {\r\n return true;\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: 'ng-template[mkHeaderCell]'\r\n})\r\nexport class MonkeyTableHeaderCellDirective {\r\n readonly template = inject<TemplateRef<void>>(TemplateRef);\r\n}\r\n\r\n@Directive({\r\n selector: 'ng-container[mkColumn]'\r\n})\r\nexport class MonkeyTableColumnDirective<T = any> {\r\n readonly name = input.required<string>({ alias: 'mkColumn' });\r\n\r\n readonly label = input.required<string>();\r\n\r\n readonly labelHidden = input(false, { transform: booleanAttribute });\r\n\r\n readonly unit = input<string>('');\r\n\r\n readonly width = input<string>('');\r\n\r\n readonly align = input<MonkeyColumnAlign>('start');\r\n\r\n readonly sortable = input(false, { transform: booleanAttribute });\r\n\r\n readonly sortKind = input<MonkeyTableSortKind>('text');\r\n\r\n readonly hideable = input(true, { transform: booleanAttribute });\r\n\r\n readonly movable = input(true, { transform: booleanAttribute });\r\n\r\n readonly pinnable = input(true, { transform: booleanAttribute });\r\n\r\n readonly pinned = model<MonkeyColumnPinned>('none');\r\n\r\n readonly hidden = model(false);\r\n\r\n readonly cell = contentChild(MonkeyTableCellDirective<T>);\r\n\r\n readonly headerCell = contentChild(MonkeyTableHeaderCellDirective);\r\n}\r\n\r\n@Directive({\r\n selector: 'ng-template[mkRowDetail]'\r\n})\r\nexport class MonkeyTableRowDetailDirective<T> {\r\n readonly template = inject<TemplateRef<{ $implicit: T; row: T }>>(TemplateRef);\r\n\r\n static ngTemplateContextGuard<T>(\r\n _dir: MonkeyTableRowDetailDirective<T>,\r\n _ctx: unknown\r\n ): _ctx is { $implicit: T; row: T } {\r\n return true;\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: 'ng-template[mkEmpty]'\r\n})\r\nexport class MonkeyTableEmptyDirective {\r\n readonly template = inject<TemplateRef<void>>(TemplateRef);\r\n}\r\n\r\n@Directive({\r\n selector: 'ng-template[mkLoading]'\r\n})\r\nexport class MonkeyTableLoadingDirective {\r\n readonly template = inject<TemplateRef<void>>(TemplateRef);\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\n\r\nexport type MonkeySortDirection = 'asc' | 'desc';\r\n\r\nexport interface MonkeySortState {\r\n column: string;\r\n direction: MonkeySortDirection;\r\n}\r\n\r\nexport type MonkeySelectionState = 'none' | 'partial' | 'all';\r\n\r\nexport type MonkeyColumnAlign = 'start' | 'end';\r\n\r\nexport type MonkeyColumnPinned = 'none' | 'left' | 'right';\r\n\r\nexport interface MonkeyTableColumnState {\r\n name: string;\r\n hidden: boolean;\r\n pinned: MonkeyColumnPinned;\r\n}\r\n\r\nexport function sameColumnState(\r\n a: readonly MonkeyTableColumnState[],\r\n b: readonly MonkeyTableColumnState[]\r\n): boolean {\r\n return (\r\n a.length === b.length &&\r\n a.every((item, index) => {\r\n return (\r\n item.name === b[index].name &&\r\n item.hidden === b[index].hidden &&\r\n item.pinned === b[index].pinned\r\n );\r\n })\r\n );\r\n}\r\n\r\nexport function ariaSortOf(\r\n sort: MonkeySortState | null,\r\n column: string\r\n): MonkeySortDirection | null {\r\n return sort?.column === column ? sort.direction : null;\r\n}\r\n\r\nexport function interpolate(template: string, values: Record<string, string | number>): string {\r\n if (!template) return '';\r\n return template.replace(/\\{(\\w+)\\}/g, (placeholder, key: string) => {\r\n return values[key] === undefined ? placeholder : String(values[key]);\r\n });\r\n}\r\n\r\nexport function toggleKey(current: ReadonlySet<string>, key: string): ReadonlySet<string> {\r\n const next = new Set(current);\r\n if (!next.delete(key)) next.add(key);\r\n return next;\r\n}\r\n\r\nexport function selectionState(\r\n current: ReadonlySet<string>,\r\n keys: readonly string[]\r\n): MonkeySelectionState {\r\n const count = keys.filter((key) => current.has(key)).length;\r\n if (count === 0) return 'none';\r\n return count === keys.length ? 'all' : 'partial';\r\n}\r\n\r\nexport function addKeys(\r\n current: ReadonlySet<string>,\r\n keys: readonly string[],\r\n limit = 0\r\n): ReadonlySet<string> {\r\n const next = new Set(current);\r\n keys.forEach((key) => {\r\n if (limit > 0 && next.size >= limit && !next.has(key)) return;\r\n next.add(key);\r\n });\r\n return next;\r\n}\r\n\r\nexport function removeKeys(\r\n current: ReadonlySet<string>,\r\n keys: readonly string[]\r\n): ReadonlySet<string> {\r\n const next = new Set(current);\r\n keys.forEach((key) => next.delete(key));\r\n return next;\r\n}\r\n\r\nexport function sortByOrder<T>(\r\n items: readonly T[],\r\n nameOf: (item: T) => string,\r\n order: readonly string[]\r\n): T[] {\r\n const position = new Map(order.map((name, index) => [name, index]));\r\n const rank = (item: T) => position.get(nameOf(item)) ?? order.length;\r\n return [...items].sort((a, b) => rank(a) - rank(b));\r\n}\r\n\r\nexport function mergeOrder(previous: readonly string[], next: readonly string[]): string[] {\r\n const incoming = [...next];\r\n const kept = previous.map((name) => (next.includes(name) ? (incoming.shift() ?? name) : name));\r\n return [...kept, ...incoming];\r\n}\r\n\r\nexport interface MonkeyRowMetrics {\r\n count: number;\r\n rowHeight: number;\r\n detailHeight: number;\r\n openIndices: readonly number[];\r\n}\r\n\r\nfunction openBefore(index: number, open: readonly number[]): number {\r\n let low = 0;\r\n let high = open.length;\r\n while (low < high) {\r\n const mid = (low + high) >>> 1;\r\n if (open[mid] < index) low = mid + 1;\r\n else high = mid;\r\n }\r\n return low;\r\n}\r\n\r\nexport function totalHeight(metrics: MonkeyRowMetrics): number {\r\n const { count, rowHeight, detailHeight, openIndices } = metrics;\r\n return count * rowHeight + openIndices.length * detailHeight;\r\n}\r\n\r\nexport function offsetOfIndex(index: number, metrics: MonkeyRowMetrics): number {\r\n const clamped = Math.max(0, Math.min(metrics.count, index));\r\n return (\r\n clamped * metrics.rowHeight + openBefore(clamped, metrics.openIndices) * metrics.detailHeight\r\n );\r\n}\r\n\r\nexport function indexAtOffset(offset: number, metrics: MonkeyRowMetrics): number {\r\n if (metrics.count <= 0 || metrics.rowHeight <= 0) return 0;\r\n if (offset <= 0) return 0;\r\n\r\n let low = 0;\r\n let high = metrics.count - 1;\r\n while (low < high) {\r\n const mid = (low + high + 1) >>> 1;\r\n if (offsetOfIndex(mid, metrics) <= offset) low = mid;\r\n else high = mid - 1;\r\n }\r\n return low;\r\n}\r\n\r\nexport function toPx(width: string | null | undefined): number {\r\n const matched = width ? /^(-?\\d+(?:\\.\\d+)?)px$/.exec(width.trim()) : null;\r\n return matched ? Math.max(0, Number(matched[1])) : 0;\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CdkVirtualScrollViewport, VirtualScrollStrategy } from '@angular/cdk/scrolling';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { indexAtOffset, offsetOfIndex, totalHeight, type MonkeyRowMetrics } from './table-core';\r\n\r\nexport class MonkeyTableVirtualScroll implements VirtualScrollStrategy {\r\n private readonly _indexChange = new Subject<number>();\r\n\r\n readonly scrolledIndexChange: Observable<number> = this._indexChange.asObservable();\r\n\r\n private _viewport: CdkVirtualScrollViewport | null = null;\r\n\r\n private _metrics: MonkeyRowMetrics = {\r\n count: 0,\r\n rowHeight: 1,\r\n detailHeight: 0,\r\n openIndices: []\r\n };\r\n\r\n private _buffer = 6;\r\n\r\n attach(viewport: CdkVirtualScrollViewport): void {\r\n this._viewport = viewport;\r\n this.update();\r\n }\r\n\r\n detach(): void {\r\n this._indexChange.complete();\r\n this._viewport = null;\r\n }\r\n\r\n onContentScrolled(): void {\r\n this.update();\r\n }\r\n\r\n onDataLengthChanged(): void {\r\n this.update();\r\n }\r\n\r\n onContentRendered(): void {\r\n }\r\n\r\n onRenderedOffsetChanged(): void {\r\n }\r\n\r\n scrollToIndex(index: number, behavior: ScrollBehavior): void {\r\n this._viewport?.scrollToOffset(offsetOfIndex(index, this._metrics), behavior);\r\n }\r\n\r\n setMetrics(metrics: MonkeyRowMetrics, buffer: number): void {\r\n this._metrics = metrics;\r\n this._buffer = Math.max(1, buffer);\r\n this.update();\r\n }\r\n\r\n private update(): void {\r\n const viewport = this._viewport;\r\n if (!viewport) return;\r\n\r\n const metrics = this._metrics;\r\n viewport.setTotalContentSize(totalHeight(metrics));\r\n\r\n if (metrics.count <= 0) {\r\n viewport.setRenderedRange({ start: 0, end: 0 });\r\n viewport.setRenderedContentOffset(0);\r\n return;\r\n }\r\n\r\n const offset = viewport.measureScrollOffset();\r\n const size = viewport.getViewportSize();\r\n const firstVisible = indexAtOffset(offset, metrics);\r\n const lastVisible = indexAtOffset(offset + size, metrics);\r\n\r\n const start = Math.max(0, firstVisible - this._buffer);\r\n const end = Math.min(metrics.count, lastVisible + 1 + this._buffer);\r\n\r\n viewport.setRenderedRange({ start, end });\r\n viewport.setRenderedContentOffset(offsetOfIndex(start, metrics));\r\n this._indexChange.next(firstVisible);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n CdkVirtualScrollViewport,\r\n ScrollingModule,\r\n VIRTUAL_SCROLL_STRATEGY\r\n} from '@angular/cdk/scrolling';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n contentChild,\r\n contentChildren,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n model,\r\n NgZone,\r\n OnDestroy,\r\n output,\r\n signal,\r\n untracked,\r\n viewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { MonkeyPopoverDirective } from '../../directives/popover';\r\nimport { MonkeyDictionaryService } from '../../services';\r\nimport { MonkeyCheckboxComponent } from '../checkbox';\r\nimport { MonkeyDividerComponent } from '../divider';\r\nimport { MonkeyIconButtonComponent } from '../icon-button';\r\nimport { MonkeyOptionComponent } from '../option';\r\nimport { MonkeyScrollbarComponent } from '../scrollbar';\r\nimport {\r\n MonkeyTableColumnDirective,\r\n MonkeyTableEmptyDirective,\r\n MonkeyTableLoadingDirective,\r\n MonkeyTableRowDetailDirective\r\n} from './table-column.directive';\r\nimport {\r\n addKeys,\r\n ariaSortOf,\r\n interpolate,\r\n mergeOrder,\r\n removeKeys,\r\n sameColumnState,\r\n selectionState,\r\n sortByOrder,\r\n toggleKey,\r\n toPx,\r\n type MonkeyColumnAlign,\r\n type MonkeyColumnPinned,\r\n type MonkeySortDirection,\r\n type MonkeySortState,\r\n type MonkeyTableColumnState\r\n} from './table-core';\r\nimport { MonkeyTableVirtualScroll } from './table-virtual-scroll';\r\n\r\nconst SELECTION_WIDTH = 44;\r\nconst EXPAND_WIDTH = 32;\r\nconst PINNED_MIN_WIDTH = 768;\r\nconst DEFAULT_ROW_HEIGHT = 65;\r\nconst DEFAULT_MAX_VISIBLE_ROWS = 20;\r\nconst DEFAULT_SKELETON_ROWS = 5;\r\nconst WINDOW_BUFFER = 6;\r\n\r\nconst VIRTUAL_MIN_ROWS = 19;\r\n\r\ninterface TableText {\r\n EMPTY: string;\r\n SORT: Record<string, string>;\r\n COLUMN: Record<string, string>;\r\n ROW: Record<string, string>;\r\n}\r\n\r\ntype Column<T> = MonkeyTableColumnDirective<T>;\r\n\r\ninterface SlotBase {\r\n key: string;\r\n width: string | null;\r\n px: number;\r\n pinned: MonkeyColumnPinned;\r\n offset: number;\r\n align: MonkeyColumnAlign;\r\n}\r\n\r\ntype Slot<T> =\r\n | (SlotBase & { kind: 'data'; column: Column<T> })\r\n | (SlotBase & { kind: 'selection' | 'expand'; column: null });\r\n\r\ninterface RowView<T> {\r\n row: T;\r\n key: string;\r\n index: number;\r\n selectable: boolean;\r\n}\r\n\r\ninterface RenderRow<T> extends RowView<T> {\r\n selected: boolean;\r\n open: boolean;\r\n blockedReason: string | null;\r\n selectLabel: string;\r\n expandLabel: string;\r\n}\r\n\r\n@Component({\r\n selector: 'monkey-table',\r\n imports: [\r\n NgTemplateOutlet,\r\n ScrollingModule,\r\n MonkeyCheckboxComponent,\r\n MonkeyDividerComponent,\r\n MonkeyIconButtonComponent,\r\n MonkeyOptionComponent,\r\n MonkeyPopoverDirective,\r\n MonkeyScrollbarComponent\r\n ],\r\n templateUrl: './table.component.html',\r\n styleUrl: './table.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n {\r\n provide: VIRTUAL_SCROLL_STRATEGY,\r\n useFactory: (table: MonkeyTableComponent<unknown>) => table.virtualStrategy,\r\n deps: [MonkeyTableComponent]\r\n }\r\n ],\r\n host: {\r\n class: 'mecx-table',\r\n '[class.mecx-table--striped]': 'striped()',\r\n '[class.mecx-table--menu-open]': '!!openMenu()',\r\n '[attr.aria-busy]': \"loading() ? 'true' : null\"\r\n }\r\n})\r\nexport class MonkeyTableComponent<T> implements OnDestroy {\r\n readonly virtualStrategy = new MonkeyTableVirtualScroll();\r\n\r\n private readonly _zone = inject(NgZone);\r\n\r\n private readonly _text = toSignal<TableText>(inject(MonkeyDictionaryService).get('TABLE'));\r\n\r\n private readonly _columns = contentChildren(MonkeyTableColumnDirective<T>);\r\n\r\n private readonly _columnByName = computed(() => {\r\n return new Map(this._columns().map((column) => [column.name(), column]));\r\n });\r\n\r\n private readonly _visibleColumns = computed(() => {\r\n const shown = this._columns().filter((column) => !column.hidden());\r\n return sortByOrder(shown, (column) => column.name(), this.columnOrder());\r\n });\r\n\r\n private readonly _selectableKeys = computed(() => {\r\n return this.rowViews()\r\n .filter((view) => view.selectable)\r\n .map((view) => view.key);\r\n });\r\n\r\n private readonly _selection = computed(() => {\r\n return selectionState(this.selected(), this._selectableKeys());\r\n });\r\n\r\n private readonly _narrow = signal(false);\r\n\r\n private readonly _detailHeight = signal(0);\r\n\r\n private readonly _headHeight = signal(0);\r\n\r\n private readonly _host = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n private _scroller?: HTMLElement;\r\n\r\n private _observer?: ResizeObserver;\r\n\r\n private _frame = 0;\r\n\r\n private _sizeStale = true;\r\n\r\n private _clientWidth = 0;\r\n\r\n private _scrollWidth = 0;\r\n\r\n private readonly _layout = computed(() => {\r\n const columns = this._visibleColumns();\r\n const controlPinned: MonkeyColumnPinned = columns.some((column) => column.pinned() === 'left')\r\n ? 'left'\r\n : 'none';\r\n\r\n const control = (\r\n kind: 'selection' | 'expand',\r\n px: number,\r\n pinned: MonkeyColumnPinned\r\n ): Slot<T> => {\r\n return {\r\n kind,\r\n key: `__${kind}`,\r\n column: null,\r\n width: `${px}px`,\r\n px,\r\n pinned,\r\n offset: 0,\r\n align: 'start'\r\n };\r\n };\r\n\r\n const slots: Slot<T>[] = [];\r\n if (this.selectionMode() !== 'none') {\r\n slots.push(control('selection', SELECTION_WIDTH, controlPinned));\r\n }\r\n if (this.expandable()) {\r\n slots.push(control('expand', EXPAND_WIDTH, this._narrow() ? 'none' : controlPinned));\r\n }\r\n columns.forEach((column) => {\r\n slots.push({\r\n kind: 'data',\r\n key: column.name(),\r\n column,\r\n width: column.width() || null,\r\n px: toPx(column.width()),\r\n pinned: this.effectivePinned(column),\r\n offset: 0,\r\n align: column.align()\r\n });\r\n });\r\n\r\n let startWidth = 0;\r\n slots.forEach((slot) => {\r\n if (slot.pinned !== 'left') return;\r\n slot.offset = startWidth;\r\n startWidth += slot.px;\r\n });\r\n\r\n let endWidth = 0;\r\n [...slots].reverse().forEach((slot) => {\r\n if (slot.pinned !== 'right') return;\r\n slot.offset = endWidth;\r\n endWidth += slot.px;\r\n });\r\n\r\n return { slots, startWidth, endWidth };\r\n });\r\n\r\n readonly rows = input.required<readonly T[]>();\r\n\r\n readonly rowKey = input.required<(row: T) => string>();\r\n\r\n readonly rowLabel = input<(row: T) => string>();\r\n\r\n readonly rowSelectable = input<(row: T) => boolean>();\r\n\r\n readonly ariaLabel = input.required<string>();\r\n\r\n readonly caption = input<string>('');\r\n\r\n readonly selectionMode = input<'none' | 'multiple'>('none');\r\n\r\n readonly selected = model<ReadonlySet<string>>(new Set());\r\n\r\n readonly maxSelected = input<number>(0);\r\n\r\n readonly sort = input<MonkeySortState | null>(null);\r\n\r\n readonly expandable = input(false, { transform: booleanAttribute });\r\n\r\n readonly expanded = model<ReadonlySet<string>>(new Set());\r\n\r\n readonly reorderable = input(false, { transform: booleanAttribute });\r\n\r\n readonly hideable = input(false, { transform: booleanAttribute });\r\n\r\n readonly pinnable = input(false, { transform: booleanAttribute });\r\n\r\n readonly rowHeight = input<number>(DEFAULT_ROW_HEIGHT);\r\n\r\n readonly maxVisibleRows = input<number | 'none'>(DEFAULT_MAX_VISIBLE_ROWS);\r\n\r\n readonly virtualScroll = input<'auto' | 'off'>('auto');\r\n\r\n readonly columnOrder = model<readonly string[]>([]);\r\n\r\n readonly columnState = input<readonly MonkeyTableColumnState[]>([]);\r\n\r\n readonly striped = input(false, { transform: booleanAttribute });\r\n\r\n readonly loading = input(false, { transform: booleanAttribute });\r\n\r\n readonly emptyText = input<string>('');\r\n\r\n readonly skeletonRows = input<number | 'auto'>('auto');\r\n\r\n readonly onSortChange = output<MonkeySortState | null>();\r\n\r\n readonly onColumnHidden = output<{ name: string; label: string }>();\r\n\r\n readonly onColumnStateChange = output<MonkeyTableColumnState[]>();\r\n\r\n readonly onSelectionChange = output<string[]>();\r\n\r\n readonly onExpandChange = output<{ row: T; key: string; expanded: boolean }>();\r\n\r\n protected readonly emptyTemplate = contentChild(MonkeyTableEmptyDirective);\r\n\r\n protected readonly loadingTemplate = contentChild(MonkeyTableLoadingDirective);\r\n\r\n protected readonly rowDetailTemplate = contentChild(MonkeyTableRowDetailDirective<T>);\r\n\r\n protected readonly plainScroller = viewChild<ElementRef<HTMLElement>>('scroller');\r\n\r\n protected readonly headClip = viewChild<ElementRef<HTMLElement>>('headClip');\r\n\r\n protected readonly virtualViewport = viewChild(CdkVirtualScrollViewport);\r\n\r\n protected readonly scrollTarget = computed(() => {\r\n const viewport = this.virtualViewport();\r\n if (viewport) return viewport.elementRef.nativeElement;\r\n return this.plainScroller()?.nativeElement ?? null;\r\n });\r\n\r\n private readonly _rowCap = computed(() => {\r\n const cap = this.maxVisibleRows();\r\n return cap === 'none' ? 0 : Math.max(0, Math.floor(cap));\r\n });\r\n\r\n protected readonly bounded = computed(() => {\r\n const cap = this._rowCap();\r\n return cap > 0 && this.rows().length > cap;\r\n });\r\n\r\n protected readonly virtual = computed(() => {\r\n if (this.virtualScroll() === 'off' || !this.bounded() || this.loading()) return false;\r\n\r\n const threshold = Math.max(this._rowCap(), VIRTUAL_MIN_ROWS);\r\n return this.rowViews().length > threshold;\r\n });\r\n\r\n protected readonly effectiveHeight = computed(() => {\r\n if (!this.bounded()) return '';\r\n\r\n const body = this._rowCap() * this.rowHeight();\r\n return `${this.virtual() ? body : body + this._headHeight()}px`;\r\n });\r\n\r\n protected readonly rowMetrics = computed(() => {\r\n const expanded = this.expanded();\r\n const openIndices = expanded.size\r\n ? this.rowViews()\r\n .filter((view) => expanded.has(view.key))\r\n .map((view) => view.index)\r\n : [];\r\n\r\n return {\r\n openIndices,\r\n count: this.rowViews().length,\r\n rowHeight: Math.max(1, this.rowHeight()),\r\n detailHeight: this.expandable() ? this._detailHeight() : 0\r\n };\r\n });\r\n\r\n protected readonly overflowing = signal(false);\r\n\r\n protected readonly atStart = signal(true);\r\n\r\n protected readonly atEnd = signal(true);\r\n\r\n protected readonly openMenu = signal<string | null>(null);\r\n\r\n protected readonly slots = computed(() => this._layout().slots);\r\n\r\n protected readonly pinnedStartWidth = computed(() => this._layout().startWidth);\r\n\r\n protected readonly pinnedEndWidth = computed(() => this._layout().endWidth);\r\n\r\n protected readonly totalWidth = computed(() => {\r\n const slots = this.slots();\r\n if (!slots.length || slots.some((slot) => slot.px <= 0)) return 0;\r\n return slots.reduce((total, slot) => total + slot.px, 0);\r\n });\r\n\r\n protected readonly allSelected = computed(() => this._selection() === 'all');\r\n\r\n protected readonly someSelected = computed(() => this._selection() === 'partial');\r\n\r\n protected readonly atSelectionLimit = computed(() => {\r\n const limit = this.maxSelected();\r\n return limit > 0 && this.selected().size >= limit;\r\n });\r\n\r\n protected readonly hasSelectable = computed(() => this._selectableKeys().length > 0);\r\n\r\n protected readonly rowViews = computed<RowView<T>[]>(() => {\r\n const keyOf = this.rowKey();\r\n const allows = this.rowSelectable();\r\n const canSelect = this.selectionMode() !== 'none';\r\n\r\n return this.rows().map((row, index) => {\r\n return {\r\n row,\r\n index,\r\n key: keyOf(row),\r\n selectable: canSelect && (!allows || allows(row))\r\n };\r\n });\r\n });\r\n\r\n protected readonly renderRows = computed<RenderRow<T>[]>(() => {\r\n const labelOf = this.rowLabel();\r\n const selected = this.selected();\r\n const expanded = this.expanded();\r\n const atLimit = this.atSelectionLimit();\r\n const canSelect = this.selectionMode() !== 'none';\r\n const canExpand = this.expandable();\r\n const text = this.labels();\r\n const select = canSelect ? this.word('ROW', 'SELECT') : '';\r\n const expand = canExpand ? this.word('ROW', 'EXPAND') : '';\r\n const collapse = canExpand ? this.word('ROW', 'COLLAPSE') : '';\r\n\r\n return this.rowViews().map((view) => {\r\n const label = labelOf ? labelOf(view.row) : view.key;\r\n const isSelected = selected.has(view.key);\r\n const open = expanded.has(view.key);\r\n let blockedReason: string | null = null;\r\n if (!isSelected && !view.selectable) blockedReason = text.notSelectable;\r\n else if (!isSelected && atLimit) blockedReason = text.limit;\r\n\r\n return {\r\n ...view,\r\n open,\r\n blockedReason,\r\n selected: isSelected,\r\n selectLabel: canSelect ? interpolate(select, { label }) : '',\r\n expandLabel: canExpand ? interpolate(open ? collapse : expand, { label }) : ''\r\n };\r\n });\r\n });\r\n\r\n protected readonly skeletonRange = computed(() => {\r\n const requested = this.skeletonRows();\r\n if (requested === 'auto') {\r\n const cap = this._rowCap();\r\n return Array.from({ length: cap > 0 ? cap : DEFAULT_SKELETON_ROWS }, (_, i) => i);\r\n }\r\n\r\n const count = Number(requested);\r\n const length = Number.isFinite(count) && count > 0 ? Math.floor(count) : DEFAULT_SKELETON_ROWS;\r\n return Array.from({ length }, (_, index) => index);\r\n });\r\n\r\n protected readonly labels = computed(() => {\r\n return {\r\n moveLeft: this.word('COLUMN', 'MOVE-LEFT'),\r\n moveRight: this.word('COLUMN', 'MOVE-RIGHT'),\r\n hide: this.word('COLUMN', 'HIDE'),\r\n pin: this.word('COLUMN', 'PIN'),\r\n unpin: this.word('COLUMN', 'UNPIN'),\r\n selectAll: this.word('ROW', 'SELECT-ALL'),\r\n detail: this.word('ROW', 'DETAIL'),\r\n limit: interpolate(this.word('ROW', 'LIMIT'), { max: this.maxSelected() }),\r\n notSelectable: this.word('ROW', 'NOT-SELECTABLE'),\r\n empty: this.emptyText() || this._text()?.EMPTY || ''\r\n };\r\n });\r\n\r\n constructor() {\r\n this.closeMenuWhenColumnGone();\r\n this.restoreColumnState();\r\n\r\n effect((onCleanup) => {\r\n const target = this.scrollTarget();\r\n if (!target) return;\r\n const onScroll = () => this.schedule();\r\n\r\n const observer = this._zone.runOutsideAngular(() => {\r\n target.addEventListener('scroll', onScroll, { passive: true });\r\n const resize = new ResizeObserver(() => this.schedule(true));\r\n resize.observe(target);\r\n Array.from(target.children).forEach((child) => resize.observe(child));\r\n return resize;\r\n });\r\n\r\n this._scroller = target;\r\n this._observer = observer;\r\n this.measure();\r\n\r\n onCleanup(() => {\r\n target.removeEventListener('scroll', onScroll);\r\n observer.disconnect();\r\n this._observer = undefined;\r\n this.cancelFrame();\r\n });\r\n });\r\n\r\n effect(() => {\r\n this.slots();\r\n this.rows();\r\n queueMicrotask(() => this.schedule(true));\r\n });\r\n\r\n effect(() => {\r\n const metrics = this.rowMetrics();\r\n if (!this.virtual()) return;\r\n this.virtualStrategy.setMetrics(metrics, WINDOW_BUFFER);\r\n });\r\n }\r\n\r\n private word(group: 'SORT' | 'COLUMN' | 'ROW', key: string): string {\r\n return this._text()?.[group]?.[key] ?? '';\r\n }\r\n\r\n private effectivePinned(column: Column<T>): MonkeyColumnPinned {\r\n const pinned = column.pinned();\r\n return this._narrow() && pinned === 'left' ? 'none' : pinned;\r\n }\r\n\r\n private schedule(resized = false): void {\r\n if (resized) this._sizeStale = true;\r\n if (this._frame) return;\r\n this._frame = this._zone.runOutsideAngular(() => {\r\n return requestAnimationFrame(() => {\r\n this._frame = 0;\r\n this.measure();\r\n });\r\n });\r\n }\r\n\r\n private cancelFrame(): void {\r\n if (this._frame) cancelAnimationFrame(this._frame);\r\n this._frame = 0;\r\n }\r\n\r\n private measure(): void {\r\n const el = this._scroller;\r\n if (!el) return;\r\n\r\n if (this._sizeStale) {\r\n this._sizeStale = false;\r\n this._clientWidth = el.clientWidth;\r\n this._scrollWidth = el.scrollWidth;\r\n\r\n const host = this._host.nativeElement;\r\n const detail = host.querySelector<HTMLElement>('.mecx-table-row--detail');\r\n if (detail?.offsetHeight) this._detailHeight.set(detail.offsetHeight);\r\n\r\n const head = host.querySelector<HTMLElement>('thead');\r\n if (head?.offsetHeight) this._headHeight.set(head.offsetHeight);\r\n }\r\n\r\n const maxScroll = this._scrollWidth - this._clientWidth;\r\n const scrolled = el.scrollLeft;\r\n\r\n this._narrow.set(this._clientWidth > 0 && this._clientWidth < PINNED_MIN_WIDTH);\r\n this.overflowing.set(maxScroll > 1);\r\n this.atStart.set(scrolled <= 1);\r\n this.atEnd.set(maxScroll <= 1 || scrolled >= maxScroll - 1);\r\n\r\n const head = this.headClip()?.nativeElement;\r\n if (head && head.scrollLeft !== scrolled) head.scrollLeft = scrolled;\r\n }\r\n\r\n private closeMenuWhenColumnGone(): void {\r\n effect(() => {\r\n const open = untracked(() => this.openMenu());\r\n const stillThere = this._visibleColumns().some((column) => {\r\n return column.name() === open && this.hasMenu(column);\r\n });\r\n if (open && !stillThere) this.openMenu.set(null);\r\n });\r\n }\r\n\r\n private currentOrder(): string[] {\r\n const names = this._columns().map((column) => column.name());\r\n return sortByOrder(names, (name) => name, this.columnOrder());\r\n }\r\n\r\n private currentColumnState(): MonkeyTableColumnState[] {\r\n return this.currentOrder().map((name) => {\r\n const column = this._columnByName().get(name);\r\n return {\r\n name,\r\n hidden: column?.hidden() ?? false,\r\n pinned: column?.pinned() ?? 'none'\r\n };\r\n });\r\n }\r\n\r\n private commitSelection(next: ReadonlySet<string>): void {\r\n this.selected.set(next);\r\n this.onSelectionChange.emit([...next]);\r\n }\r\n\r\n private applyOrder(order: readonly string[]): void {\r\n this.columnOrder.set(mergeOrder(this.columnOrder(), order));\r\n this.onColumnStateChange.emit(this.currentColumnState());\r\n this.openMenu.set(null);\r\n }\r\n\r\n private restoreColumnState(): void {\r\n effect(() => {\r\n const incoming = this.columnState();\r\n if (!incoming.length) return;\r\n\r\n untracked(() => {\r\n if (!this._columns().length) return;\r\n if (sameColumnState(incoming, this.currentColumnState())) return;\r\n\r\n incoming.forEach((item) => {\r\n const column = this._columnByName().get(item.name);\r\n column?.hidden.set(item.hidden);\r\n column?.pinned.set(item.pinned);\r\n });\r\n\r\n this.columnOrder.set(\r\n mergeOrder(\r\n this.columnOrder(),\r\n incoming.map((item) => item.name)\r\n )\r\n );\r\n });\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._observer?.disconnect();\r\n this.cancelFrame();\r\n }\r\n\r\n protected closeMenu = (): void => {\r\n this.openMenu.set(null);\r\n };\r\n\r\n protected trackKey = (_index: number, view: RowView<T>): string => {\r\n return view.key;\r\n };\r\n\r\n protected toggleMenu(column: Column<T>): void {\r\n this.openMenu.set(this.openMenu() === column.name() ? null : column.name());\r\n }\r\n\r\n protected hasMenu(column: Column<T> | null): boolean {\r\n if (!column) return false;\r\n return (\r\n column.sortable() || this.canReorder(column) || this.canHide(column) || this.canPin(column)\r\n );\r\n }\r\n\r\n protected canHide(column: Column<T>): boolean {\r\n return this.hideable() && column.hideable();\r\n }\r\n\r\n protected canReorder(column: Column<T>): boolean {\r\n return this.reorderable() && column.movable();\r\n }\r\n\r\n protected canPin(column: Column<T>): boolean {\r\n return this.pinnable() && column.pinnable() && !this._narrow();\r\n }\r\n\r\n protected isLastColumn(): boolean {\r\n return this._visibleColumns().length <= 1;\r\n }\r\n\r\n protected sortLabels(column: Column<T>): { asc: string; desc: string } {\r\n const kind = column.sortKind().toUpperCase();\r\n return { asc: this.word('SORT', `${kind}-ASC`), desc: this.word('SORT', `${kind}-DESC`) };\r\n }\r\n\r\n protected ariaSortFor(column: Column<T> | null): string | null {\r\n return column ? ariaSortOf(this.sort(), column.name()) : null;\r\n }\r\n\r\n protected isSortedBy(column: Column<T>, direction: MonkeySortDirection): boolean {\r\n const current = this.sort();\r\n return current?.column === column.name() && current.direction === direction;\r\n }\r\n\r\n protected sortBy(column: Column<T>, direction: MonkeySortDirection): void {\r\n const unchanged = this.isSortedBy(column, direction);\r\n this.onSortChange.emit(unchanged ? null : { column: column.name(), direction });\r\n this.openMenu.set(null);\r\n }\r\n\r\n protected canMove(column: Column<T>, delta: -1 | 1): boolean {\r\n if (!this.canReorder(column)) return false;\r\n\r\n const visible = this._visibleColumns();\r\n const neighbour = visible[visible.indexOf(column) + delta];\r\n if (!neighbour || !neighbour.movable()) return false;\r\n return this.effectivePinned(neighbour) === this.effectivePinned(column);\r\n }\r\n\r\n protected move(column: Column<T>, delta: -1 | 1): void {\r\n if (!this.canMove(column, delta)) return;\r\n\r\n const visible = this._visibleColumns();\r\n const neighbour = visible[visible.indexOf(column) + delta];\r\n const order = this.currentOrder();\r\n const from = order.indexOf(column.name());\r\n const to = order.indexOf(neighbour.name());\r\n [order[from], order[to]] = [order[to], order[from]];\r\n\r\n this.applyOrder(order);\r\n }\r\n\r\n protected hide(column: Column<T>): void {\r\n if (!this.canHide(column) || this.isLastColumn()) return;\r\n\r\n column.hidden.set(true);\r\n this.onColumnHidden.emit({ name: column.name(), label: column.label() });\r\n this.applyOrder(this.currentOrder());\r\n }\r\n\r\n protected togglePin(column: Column<T>): void {\r\n if (!this.canPin(column)) return;\r\n\r\n const was = column.pinned();\r\n column.pinned.set(was === 'none' ? 'left' : 'none');\r\n\r\n const others = this.currentOrder().filter((name) => name !== column.name());\r\n const pinnedOf = (name: string) => this._columnByName().get(name)?.pinned() ?? 'none';\r\n const afterLeft = others.filter((name) => pinnedOf(name) === 'left').length;\r\n const rightStart = others.findIndex((name) => pinnedOf(name) === 'right');\r\n const beforeRight = rightStart === -1 ? others.length : rightStart;\r\n\r\n others.splice(\r\n was === 'right' ? beforeRight : Math.min(afterLeft, beforeRight),\r\n 0,\r\n column.name()\r\n );\r\n this.applyOrder(others);\r\n }\r\n\r\n protected toggleRow(view: RowView<T>): void {\r\n const selected = this.selected();\r\n const blocked = !view.selectable || this.atSelectionLimit();\r\n if (!selected.has(view.key) && blocked) return;\r\n this.commitSelection(toggleKey(selected, view.key));\r\n }\r\n\r\n protected toggleAllRows(): void {\r\n const selected = this.selected();\r\n const keys = this._selectableKeys();\r\n\r\n if (this.allSelected() || this.atSelectionLimit()) {\r\n this.commitSelection(removeKeys(selected, keys));\r\n return;\r\n }\r\n\r\n this.commitSelection(addKeys(selected, keys, this.maxSelected()));\r\n }\r\n\r\n protected toggleOpen(view: RowView<T>): void {\r\n const next = toggleKey(this.expanded(), view.key);\r\n this.expanded.set(next);\r\n this.onExpandChange.emit({ row: view.row, key: view.key, expanded: next.has(view.key) });\r\n }\r\n}\r\n","<div class=\"mecx-table-main\">\n <div class=\"mecx-table-viewport\">\n @if (virtual()) {\n <div #headClip class=\"mecx-table-head-clip\">\n <table\n class=\"mecx-table-grid mecx-table-grid--head\"\n [style.width.px]=\"totalWidth() || null\"\n >\n <ng-container [ngTemplateOutlet]=\"tableHead\" />\n </table>\n </div>\n\n <cdk-virtual-scroll-viewport\n class=\"mecx-table-scroll mecx-table-scroll--virtual\"\n [itemSize]=\"rowHeight()\"\n [minBufferPx]=\"rowHeight() * 6\"\n [maxBufferPx]=\"rowHeight() * 12\"\n [style.height]=\"effectiveHeight()\"\n role=\"region\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.tabindex]=\"overflowing() ? 0 : null\"\n >\n <table\n class=\"mecx-table-grid\"\n [attr.aria-rowcount]=\"rows().length + 1\"\n [style.width.px]=\"totalWidth() || null\"\n >\n <ng-container [ngTemplateOutlet]=\"colGroup\" />\n <tbody class=\"mecx-table-body\">\n <ng-container\n *cdkVirtualFor=\"\n let view of renderRows();\n trackBy: trackKey;\n templateCacheSize: 30\n \"\n >\n <ng-container\n [ngTemplateOutlet]=\"dataRow\"\n [ngTemplateOutletContext]=\"{ $implicit: view }\"\n />\n </ng-container>\n </tbody>\n </table>\n </cdk-virtual-scroll-viewport>\n } @else {\n <div\n #scroller\n class=\"mecx-table-scroll\"\n [class.mecx-table-scroll--vertical]=\"!!effectiveHeight()\"\n [style.max-height]=\"effectiveHeight() || null\"\n role=\"region\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.tabindex]=\"overflowing() ? 0 : null\"\n >\n <table class=\"mecx-table-grid\">\n <ng-container [ngTemplateOutlet]=\"tableHead\" />\n <tbody class=\"mecx-table-body\">\n @if (loading()) {\n @if (loadingTemplate(); as tpl) {\n <tr class=\"mecx-table-row\">\n <td\n class=\"mecx-table-cell mecx-table-cell--wide\"\n [attr.colspan]=\"slots().length\"\n >\n <ng-container [ngTemplateOutlet]=\"tpl.template\" />\n </td>\n </tr>\n } @else {\n @for (line of skeletonRange(); track line) {\n <tr class=\"mecx-table-row\" aria-hidden=\"true\">\n @for (slot of slots(); track slot.key) {\n <td\n class=\"mecx-table-cell\"\n [class.mecx-table-cell--end]=\"slot.align === 'end'\"\n [class.mecx-table-cell--control]=\"slot.kind !== 'data'\"\n [class.mecx-table-cell--pinned]=\"slot.pinned !== 'none'\"\n [style.left.px]=\"slot.pinned === 'left' ? slot.offset : null\"\n [style.right.px]=\"slot.pinned === 'right' ? slot.offset : null\"\n >\n <span class=\"mecx-table-skeleton\"></span>\n </td>\n }\n </tr>\n }\n }\n } @else if (rows().length === 0) {\n <tr class=\"mecx-table-row\">\n <td\n class=\"mecx-table-cell mecx-table-cell--wide\"\n [attr.colspan]=\"slots().length\"\n >\n @if (emptyTemplate(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl.template\" />\n } @else {\n <p class=\"mecx-table-empty\">{{ labels().empty }}</p>\n }\n </td>\n </tr>\n } @else {\n @for (view of renderRows(); track view.key) {\n <ng-container\n [ngTemplateOutlet]=\"dataRow\"\n [ngTemplateOutletContext]=\"{ $implicit: view }\"\n />\n }\n }\n </tbody>\n </table>\n </div>\n }\n\n @if (pinnedStartWidth() > 0) {\n <div\n class=\"mecx-table-pinned-shadow\"\n [class.mecx-table-pinned-shadow--visible]=\"!atStart()\"\n [style.left.px]=\"0\"\n [style.width.px]=\"pinnedStartWidth()\"\n aria-hidden=\"true\"\n ></div>\n }\n @if (pinnedEndWidth() > 0) {\n <div\n class=\"mecx-table-pinned-shadow mecx-table-pinned-shadow--end\"\n [class.mecx-table-pinned-shadow--visible]=\"!atEnd()\"\n [style.right.px]=\"0\"\n [style.width.px]=\"pinnedEndWidth()\"\n aria-hidden=\"true\"\n ></div>\n }\n\n @if (pinnedStartWidth() === 0) {\n <div\n class=\"mecx-table-fade mecx-table-fade--start\"\n [class.mecx-table-fade--visible]=\"!atStart()\"\n aria-hidden=\"true\"\n ></div>\n }\n <div\n class=\"mecx-table-fade\"\n [class.mecx-table-fade--visible]=\"!atEnd()\"\n [style.right.px]=\"pinnedEndWidth()\"\n aria-hidden=\"true\"\n ></div>\n </div>\n\n @if (effectiveHeight() && scrollTarget(); as target) {\n <div class=\"mecx-table-scrollbar-vertical\">\n <monkey-scrollbar orientation=\"vertical\" [target]=\"target\" />\n </div>\n }\n</div>\n\n@if (scrollTarget(); as target) {\n <div class=\"mecx-table-scrollbar\">\n <monkey-scrollbar orientation=\"horizontal\" [target]=\"target\" />\n </div>\n}\n\n<div class=\"mecx-table-footer\">\n <ng-content select=\"monkey-pagination-size\"></ng-content>\n <div class=\"mecx-table-footer-actions\">\n <ng-content select=\"monkey-pagination-label\"></ng-content>\n <ng-content select=\"monkey-pagination-action\"></ng-content>\n </div>\n</div>\n\n<ng-template #colGroup>\n <colgroup>\n @for (slot of slots(); track slot.key) {\n <col [style.width]=\"slot.width\" />\n }\n </colgroup>\n</ng-template>\n\n<ng-template #tableHead>\n @if (caption()) {\n <caption class=\"mecx-table-caption\">\n {{\n caption()\n }}\n </caption>\n }\n\n <ng-container [ngTemplateOutlet]=\"colGroup\" />\n\n <thead>\n <tr class=\"mecx-table-row\">\n @for (slot of slots(); track slot.key) {\n <th\n scope=\"col\"\n class=\"mecx-table-cell mecx-table-cell--head\"\n [class.mecx-table-cell--end]=\"slot.align === 'end'\"\n [class.mecx-table-cell--control]=\"slot.kind !== 'data'\"\n [class.mecx-table-cell--pinned]=\"slot.pinned !== 'none'\"\n [style.left.px]=\"slot.pinned === 'left' ? slot.offset : null\"\n [style.right.px]=\"slot.pinned === 'right' ? slot.offset : null\"\n [class.mecx-table-cell--active]=\"openMenu() === slot.key\"\n [attr.aria-sort]=\"ariaSortFor(slot.column)\"\n >\n @switch (slot.kind) {\n @case ('selection') {\n <label class=\"mecx-table-select-all\">\n <span class=\"mecx-sr-only\">{{ labels().selectAll }}</span>\n <monkey-checkbox\n size=\"sm\"\n [value]=\"allSelected()\"\n [indeterminate]=\"someSelected()\"\n [disabled]=\"loading() || !hasSelectable()\"\n (onChange)=\"toggleAllRows()\"\n />\n </label>\n }\n @case ('expand') {\n <span class=\"mecx-sr-only\">{{ labels().detail }}</span>\n }\n @default {\n @if (hasMenu(slot.column)) {\n <button\n #trigger\n type=\"button\"\n class=\"mecx-table-heading mecx-table-trigger\"\n aria-haspopup=\"menu\"\n [attr.aria-expanded]=\"openMenu() === slot.key\"\n (click)=\"toggleMenu(slot.column)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"heading\"\n [ngTemplateOutletContext]=\"{ $implicit: slot.column }\"\n />\n </button>\n\n <ng-template\n [monkeyPopover]=\"openMenu() === slot.key\"\n [monkeyPopoverTarget]=\"trigger\"\n [monkeyPopoverClosed]=\"closeMenu\"\n monkeyPopoverDir=\"ltr\"\n [monkeyPopoverHideHeader]=\"true\"\n monkeyPopoverCloseOnClick=\"monkey-option\"\n >\n <div class=\"mecx-table-menu\">\n @if (slot.column.sortable()) {\n @let sortText = sortLabels(slot.column);\n <monkey-option\n [selected]=\"isSortedBy(slot.column, 'asc')\"\n (click)=\"sortBy(slot.column, 'asc')\"\n >\n <i class=\"mk-i mk-i-arrows-up-down sm\" aria-hidden=\"true\"></i>\n {{ sortText.asc }}\n </monkey-option>\n <monkey-option\n [selected]=\"isSortedBy(slot.column, 'desc')\"\n (click)=\"sortBy(slot.column, 'desc')\"\n >\n <i class=\"mk-i mk-i-arrows-up-down sm\" aria-hidden=\"true\"></i>\n {{ sortText.desc }}\n </monkey-option>\n }\n\n @if (canReorder(slot.column)) {\n @if (slot.column.sortable()) {\n <monkey-divider />\n }\n <monkey-option\n [disabled]=\"!canMove(slot.column, -1)\"\n (click)=\"move(slot.column, -1)\"\n >\n <i class=\"mk-i mk-i-arrow-line-left sm\" aria-hidden=\"true\"></i>\n {{ labels().moveLeft }}\n </monkey-option>\n <monkey-option\n [disabled]=\"!canMove(slot.column, 1)\"\n (click)=\"move(slot.column, 1)\"\n >\n <i class=\"mk-i mk-i-arrow-line-right sm\" aria-hidden=\"true\"></i>\n {{ labels().moveRight }}\n </monkey-option>\n }\n\n @if (canHide(slot.column) || canPin(slot.column)) {\n @if (slot.column.sortable() || canReorder(slot.column)) {\n <monkey-divider />\n }\n @if (canHide(slot.column)) {\n <monkey-option [disabled]=\"isLastColumn()\" (click)=\"hide(slot.column)\">\n <i class=\"mk-i mk-i-eye-closed sm\" aria-hidden=\"true\"></i>\n {{ labels().hide }}\n </monkey-option>\n }\n @if (canPin(slot.column)) {\n <monkey-option (click)=\"togglePin(slot.column)\">\n <i class=\"mk-i mk-i-pin-navigation sm\" aria-hidden=\"true\"></i>\n {{ slot.column.pinned() !== 'none' ? labels().unpin : labels().pin }}\n </monkey-option>\n }\n }\n </div>\n </ng-template>\n } @else {\n <div class=\"mecx-table-heading\">\n <ng-container\n [ngTemplateOutlet]=\"heading\"\n [ngTemplateOutletContext]=\"{ $implicit: slot.column }\"\n />\n </div>\n }\n }\n }\n </th>\n }\n </tr>\n </thead>\n</ng-template>\n\n<ng-template #dataRow let-view>\n <tr\n class=\"mecx-table-row mecx-table-row--data\"\n [class.mecx-table-row--odd]=\"view.index % 2 === 1\"\n [class.mecx-table-row--selected]=\"view.selected\"\n [attr.aria-rowindex]=\"virtual() ? view.index + 2 : null\"\n [style.height.px]=\"virtual() ? rowHeight() : null\"\n >\n @for (slot of slots(); track slot.key) {\n <td\n class=\"mecx-table-cell\"\n [class.mecx-table-cell--end]=\"slot.align === 'end'\"\n [class.mecx-table-cell--control]=\"slot.kind !== 'data'\"\n [class.mecx-table-cell--pinned]=\"slot.pinned !== 'none'\"\n [style.left.px]=\"slot.pinned === 'left' ? slot.offset : null\"\n [style.right.px]=\"slot.pinned === 'right' ? slot.offset : null\"\n >\n @switch (slot.kind) {\n @case ('selection') {\n <label class=\"mecx-table-select-row\" [attr.title]=\"view.blockedReason\">\n <span class=\"mecx-sr-only\">{{ view.selectLabel }}</span>\n <monkey-checkbox\n size=\"sm\"\n [value]=\"view.selected\"\n [disabled]=\"!!view.blockedReason\"\n (onChange)=\"toggleRow(view)\"\n />\n </label>\n }\n @case ('expand') {\n <monkey-icon-button\n type=\"tertiary\"\n size=\"sm\"\n icon=\"arrow-right\"\n class=\"mecx-table-expand-toggle\"\n [class.mecx-table-expand-toggle--open]=\"view.open\"\n [attr.aria-expanded]=\"view.open\"\n [attr.aria-label]=\"view.expandLabel\"\n (click)=\"toggleOpen(view)\"\n />\n }\n @default {\n @if (slot.column.cell(); as cell) {\n <ng-container\n [ngTemplateOutlet]=\"cell.template\"\n [ngTemplateOutletContext]=\"{\n $implicit: view.row,\n row: view.row,\n index: view.index,\n first: view.index === 0,\n last: view.index === rows().length - 1\n }\"\n />\n }\n }\n }\n </td>\n }\n </tr>\n\n @if (expandable() && view.open) {\n @if (rowDetailTemplate(); as tpl) {\n <tr\n class=\"mecx-table-row mecx-table-row--detail\"\n [class.mecx-table-row--selected]=\"view.selected\"\n >\n <td class=\"mecx-table-cell mecx-table-cell--wide\" [attr.colspan]=\"slots().length\">\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"{ $implicit: view.row, row: view.row }\"\n />\n </td>\n </tr>\n }\n }\n</ng-template>\n\n<ng-template #heading let-column>\n @if (column.headerCell(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl.template\" />\n } @else {\n @if (column.labelHidden()) {\n <span class=\"mecx-sr-only\">{{ column.label() }}</span>\n } @else {\n <span class=\"mecx-table-label\">{{ column.label() }}</span>\n @if (column.unit()) {\n <span class=\"mecx-table-unit\">{{ column.unit() }}</span>\n }\n }\n }\n</ng-template>\n","/** ************************\n * Copyright Monkey Exchange. All Rights Reserved\n * This style guide was developed by Monkey Exchange Team\n * MIT Licence\n ************************* */\nexport * from './components/pagination-action/pagination-action';\nexport * from './components/pagination-label/pagination-label';\nexport * from './components/pagination-size/pagination-size';\nexport * from './table-column.directive';\nexport * from './table-core';\nexport * from './table.component';\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n booleanAttribute,\r\n DestroyRef,\r\n Directive,\r\n ElementRef,\r\n HostBinding,\r\n inject,\r\n Inject,\r\n Input,\r\n OnInit,\r\n Optional\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { filter } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[monkey-tab-link]',\r\n standalone: false\r\n})\r\nexport class MonkeyTabLinkDirective implements OnInit {\r\n @Input({ transform: booleanAttribute }) disabled: boolean = false;\r\n\r\n @HostBinding('class.disabled')\r\n get isDisabled() {\r\n return this.disabled;\r\n }\r\n\r\n @HostBinding('attr.tabindex')\r\n get tabIndex() {\r\n return this.disabled ? -1 : 0;\r\n }\r\n\r\n private destroyRef = inject(DestroyRef);\r\n\r\n private el = inject(ElementRef<HTMLAnchorElement>);\r\n\r\n constructor(@Optional() @Inject(Router) private router: Router) {\r\n // ignore\r\n }\r\n\r\n ngOnInit() {\r\n if (this.router) {\r\n this.updateActiveState();\r\n\r\n this.router.events\r\n .pipe(\r\n filter((event) => {\r\n return event instanceof NavigationEnd;\r\n }),\r\n takeUntilDestroyed(this.destroyRef)\r\n )\r\n .subscribe(() => {\r\n this.updateActiveState();\r\n });\r\n }\r\n }\r\n\r\n private updateActiveState() {\r\n if (this.disabled) return;\r\n\r\n const link = this.el.nativeElement;\r\n const routerLink = link.getAttribute('routerLink');\r\n\r\n if (routerLink && this.router) {\r\n const isActive =\r\n this.router.url === routerLink ||\r\n (routerLink !== '/' && this.router.url.startsWith(routerLink));\r\n\r\n if (isActive) {\r\n link.classList.add('active');\r\n } else {\r\n link.classList.remove('active');\r\n }\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n booleanAttribute,\r\n Component,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'monkey-tab',\r\n standalone: false,\r\n template: `\r\n <button type=\"button\" [disabled]=\"disabled\" (click)=\"handleClick()\">\r\n <ng-content />\r\n </button>\r\n `,\r\n styles: [\r\n `\r\n :host {\r\n display: block;\r\n }\r\n `\r\n ]\r\n})\r\nexport class MonkeyTabComponent {\r\n @Input() value: string = '';\r\n\r\n @Input({ transform: booleanAttribute }) disabled: boolean = false;\r\n\r\n @Output() onClick = new EventEmitter<string>();\r\n\r\n @Input()\r\n @HostBinding('class.selected')\r\n isSelected: boolean = false;\r\n\r\n handleClick() {\r\n if (!this.disabled) {\r\n this.onClick.emit(this.value);\r\n }\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentInit,\r\n AfterViewInit,\r\n booleanAttribute,\r\n Component,\r\n ContentChildren,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n QueryList,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyTabComponent } from './tab.component';\r\n\r\n@Component({\r\n selector: 'monkey-tabs',\r\n standalone: false,\r\n encapsulation: ViewEncapsulation.None,\r\n template: `\r\n @if (hasScroll) {\r\n <button\r\n class=\"scroll-arrow scroll-arrow-left\"\r\n [class.enabled]=\"enabledLeftArrow\"\r\n (click)=\"scrollLeft()\"\r\n type=\"button\"\r\n >\r\n ‹\r\n </button>\r\n }\r\n\r\n <div class=\"monkey-tabs-header\" #tabsHeader>\r\n <div\r\n class=\"monkey-tabs-content\"\r\n [class.full-width]=\"fullWidth\"\r\n [class]=\"position\"\r\n #tabsContent\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n\r\n @if (hasScroll) {\r\n <button\r\n class=\"scroll-arrow scroll-arrow-right\"\r\n [class.enabled]=\"enabledRightArrow\"\r\n (click)=\"scrollRight()\"\r\n type=\"button\"\r\n >\r\n ›\r\n </button>\r\n }\r\n `,\r\n styleUrls: ['./tabs.component.scss'],\r\n host: {\r\n 'data-testid': 'monkey-tabs',\r\n '[attr.id]': 'monkeyId',\r\n '[id]': 'monkeyId'\r\n }\r\n})\r\nexport class MonkeyTabsComponent implements AfterContentInit, AfterViewInit, OnDestroy, OnChanges {\r\n protected monkeyId = inject(IdGenerator).getId('monkey-tabs-');\r\n\r\n @Input() selected: string = '';\r\n\r\n @Input({ transform: booleanAttribute }) fullWidth: boolean = false;\r\n\r\n @Input() position: 'start' | 'center' | 'end' = 'start';\r\n\r\n @Output() onChange = new EventEmitter<string>();\r\n\r\n @ContentChildren(MonkeyTabComponent) tabs!: QueryList<MonkeyTabComponent>;\r\n\r\n @ViewChild('tabsHeader') tabsHeader!: ElementRef<HTMLDivElement>;\r\n\r\n @ViewChild('tabsContent') tabsContent!: ElementRef<HTMLDivElement>;\r\n\r\n enabledLeftArrow = false;\r\n\r\n enabledRightArrow = false;\r\n\r\n hasScroll = false;\r\n\r\n scrollPosition = 0;\r\n\r\n private destroyRef = inject(DestroyRef);\r\n\r\n private resizeObserver?: ResizeObserver;\r\n\r\n private updateScrollPosition() {\r\n this.tabsContent.nativeElement.style.transform = `translateX(-${this.scrollPosition}px)`;\r\n this.updateScrollArrows();\r\n }\r\n\r\n private updateScrollArrows() {\r\n if (!this.tabsHeader || !this.tabsContent) return;\r\n\r\n const headerWidth = this.tabsHeader.nativeElement.offsetWidth;\r\n const contentWidth = this.tabsContent.nativeElement.scrollWidth;\r\n const maxScroll = contentWidth - headerWidth;\r\n\r\n this.hasScroll = maxScroll > 0;\r\n this.enabledLeftArrow = this.scrollPosition > 0;\r\n this.enabledRightArrow = this.scrollPosition < maxScroll && maxScroll > 0;\r\n }\r\n\r\n private selectTab(value: string) {\r\n this.selected = value;\r\n this.onChange.emit(value);\r\n this.updateTabSelection();\r\n }\r\n\r\n private updateTabSelection() {\r\n if (!this.tabs) return;\r\n\r\n this.tabs.forEach((tab) => {\r\n tab.isSelected = tab.value === this.selected;\r\n });\r\n }\r\n\r\n ngOnChanges() {\r\n this.updateTabSelection();\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (typeof ResizeObserver !== 'undefined') {\r\n this.resizeObserver = new ResizeObserver(() => {\r\n this.updateScrollArrows();\r\n });\r\n this.resizeObserver.observe(this.tabsHeader.nativeElement);\r\n }\r\n\r\n setTimeout(() => {\r\n this.updateScrollArrows();\r\n }, 0);\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.updateTabsEvents();\r\n }\r\n\r\n updateTabsEvents() {\r\n this.tabs.forEach((tab) => {\r\n tab.onClick.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((value: string) => {\r\n this.selectTab(value);\r\n });\r\n });\r\n\r\n this.updateTabSelection();\r\n }\r\n\r\n scrollLeft() {\r\n const headerWidth = this.tabsHeader.nativeElement.offsetWidth;\r\n const scrollAmount = headerWidth * 0.8;\r\n this.scrollPosition = Math.max(0, this.scrollPosition - scrollAmount);\r\n this.updateScrollPosition();\r\n }\r\n\r\n scrollRight() {\r\n const headerWidth = this.tabsHeader.nativeElement.offsetWidth;\r\n const contentWidth = this.tabsContent.nativeElement.scrollWidth;\r\n const maxScroll = contentWidth - headerWidth;\r\n const scrollAmount = headerWidth * 0.8;\r\n this.scrollPosition = Math.min(maxScroll, this.scrollPosition + scrollAmount);\r\n this.updateScrollPosition();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.resizeObserver?.disconnect();\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { NgModule } from '@angular/core';\r\nimport { MonkeyTabLinkDirective } from './tab-link.directive';\r\nimport { MonkeyTabComponent } from './tab.component';\r\nimport { MonkeyTabsComponent } from './tabs.component';\r\n\r\n@NgModule({\r\n declarations: [MonkeyTabsComponent, MonkeyTabComponent, MonkeyTabLinkDirective],\r\n exports: [MonkeyTabsComponent, MonkeyTabComponent, MonkeyTabLinkDirective]\r\n})\r\nexport class MonkeyTabsModule {}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './toast.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n EventEmitter,\r\n HostBinding,\r\n HostListener,\r\n inject,\r\n Input,\r\n Output\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\n\r\n@Component({\r\n selector: 'monkey-toggle',\r\n imports: [CommonModule],\r\n templateUrl: './toggle.component.html',\r\n styleUrl: './toggle.component.scss',\r\n host: {\r\n 'data-testid': 'monkey-toggle',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyToggleComponent {\r\n @HostBinding('class.disabled') @Input() disabled = false;\r\n\r\n @HostBinding('class')\r\n @Input()\r\n size: 'lg' | 'md' | 'sm' = 'md';\r\n\r\n @Output() onChange = new EventEmitter<any>();\r\n\r\n @Input() set value(_: boolean | 'true' | 'false') {\r\n if (typeof _ === 'string') {\r\n this._checked = _ === 'true';\r\n } else {\r\n this._checked = _;\r\n }\r\n }\r\n\r\n _checked: boolean = false;\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-toggle-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: any) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n event.stopImmediatePropagation();\r\n\r\n if (!this.disabled) {\r\n this.onChange.next(!this._checked);\r\n this._checked = !this._checked;\r\n }\r\n }\r\n}\r\n","<input type=\"checkbox\" [checked]=\"_checked\" />\r\n<div class=\"slider\" [ngClass]=\"{ checked: _checked }\"></div>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './toggle.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'monkey-toggle-line-button',\r\n standalone: true,\r\n templateUrl: './toggle-line-button.component.html',\r\n styleUrl: './toggle-line-button.component.scss',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class MonkeyToggleLineButtonComponent {\r\n @Input() disabled: boolean = false;\r\n\r\n @Output() onChange = new EventEmitter();\r\n\r\n @Input() value: boolean | undefined;\r\n\r\n checked: boolean | undefined;\r\n\r\n @Input() name: string | undefined;\r\n}\r\n","<input\r\n type=\"radio\"\r\n [name]=\"name\"\r\n [id]=\"value + '-' + name\"\r\n [checked]=\"checked\"\r\n [disabled]=\"disabled\"\r\n (change)=\"onChange.emit(this.value)\"\r\n/>\r\n<label [for]=\"value + '-' + name\">\r\n <ng-content></ng-content>\r\n</label>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './toggle-line-button.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n AfterContentInit,\r\n booleanAttribute,\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n HostBinding,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n QueryList,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { MonkeyToggleLineButtonComponent } from './toggle-line-button';\r\n\r\n@Component({\r\n selector: 'monkey-toggle-line',\r\n imports: [],\r\n templateUrl: './toggle-line.component.html',\r\n styleUrl: './toggle-line.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n 'data-testid': 'monkey-toggle-line',\r\n '[attr.id]': 'id',\r\n '[id]': 'id'\r\n }\r\n})\r\nexport class MonkeyToggleLineComponent implements AfterContentInit, OnDestroy, OnChanges {\r\n @Input() value: boolean | undefined;\r\n\r\n @Input() name = Math.random().toString();\r\n\r\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\r\n\r\n @Input({ transform: booleanAttribute }) disabled: boolean = false;\r\n\r\n @Output() onChange = new EventEmitter<any>();\r\n\r\n private subscriptions: Subscription = new Subscription();\r\n\r\n @ContentChildren(MonkeyToggleLineButtonComponent)\r\n radioButtons!: QueryList<MonkeyToggleLineButtonComponent>;\r\n\r\n @HostBinding('class')\r\n public get class(): string {\r\n return this.size;\r\n }\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-toggle-line-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.radioButtons.forEach((_, i) => {\r\n _.value = !!i;\r\n _.checked = this.value === _.value;\r\n _.name = this.name;\r\n _.disabled = this.disabled;\r\n\r\n const subscription = _.onChange.subscribe((value: boolean) => {\r\n this.onChange.emit(value);\r\n });\r\n this.subscriptions.add(subscription);\r\n });\r\n }\r\n\r\n ngOnChanges(): void {\r\n if (!this.radioButtons) return;\r\n this.radioButtons.forEach((_, i) => {\r\n _.checked = this.value === _.value;\r\n _.disabled = this.disabled;\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.unsubscribe();\r\n }\r\n}\r\n","<ng-content></ng-content>\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './toggle-line-button';\r\nexport * from './toggle-line.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n Component,\r\n inject,\r\n Input,\r\n input,\r\n InputSignal,\r\n output,\r\n OutputEmitterRef,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator } from '../../../utils';\r\nimport { type MonkeyAlertType, MonkeySize } from '../../interfaces';\r\n\r\n@Component({\r\n selector: 'monkey-user-profile',\r\n styleUrl: './user-profile.component.scss',\r\n template: `\r\n <div class=\"icon\">\r\n <i class=\"mk-i mk-i-user-profile {{size()}}\"></i>\r\n </div>\r\n <div class=\"text-truncate\">{{ email() }}</div>\r\n `,\r\n host: {\r\n 'data-testid': 'monkey-user-profile',\r\n '[attr.id]': 'id',\r\n '[id]': 'id',\r\n '[class]': 'size()'\r\n }\r\n})\r\nexport class MonkeyUserProfileComponent {\r\n email: InputSignal<string> = input.required();\r\n\r\n size: InputSignal<MonkeySize> = input('sm' as MonkeySize);\r\n\r\n protected _uid = inject(IdGenerator).getId('monkey-user-profile-');\r\n\r\n protected _id!: string;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './user-profile.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport {\r\n Component,\r\n ElementRef,\r\n HostBinding,\r\n HostListener,\r\n inject,\r\n Input,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { IdGenerator, UtilIconComponent } from '../../../utils';\r\nimport { MonkeyPopoverDirective } from '../../directives/popover';\r\nimport { MonkeySize } from '../../interfaces';\r\nimport { MonkeyAvatarComponent } from '../avatar';\r\n\r\n@Component({\r\n encapsulation: ViewEncapsulation.None,\r\n imports: [MonkeyAvatarComponent, UtilIconComponent, MonkeyPopoverDirective],\r\n selector: 'monkey-user-profile-button',\r\n styleUrl: './user-profile-button.component.scss',\r\n template: `\r\n <monkey-avatar [size]=\"size\" [src]=\"iconName ? { iconName } : { name }\" />\r\n <div class=\"lh-24 text-truncate flex-grow-1 fs-xxs text-gray-900\">\r\n {{ name }}\r\n </div>\r\n <util-icon class=\"arrow\" name=\"arrowDown\" />\r\n\r\n <ng-template\r\n [monkeyPopover]=\"open\"\r\n [monkeyPopoverTarget]=\"elementRef.nativeElement\"\r\n [monkeyPopoverClosed]=\"handleClose\"\r\n monkeyPopoverDir=\"rtl\"\r\n [monkeyPopoverHideHeader]=\"true\"\r\n >\r\n <div class=\"context-menu\" (click)=\"open = false\">\r\n <ng-content />\r\n </div>\r\n </ng-template>\r\n `,\r\n host: {\r\n 'data-testid': 'monkey-user-profile-button',\r\n '[attr.id]': 'id',\r\n '[id]': 'id',\r\n '[class.open]': 'open'\r\n }\r\n})\r\nexport class MonkeyUserProfileButtonComponent {\r\n protected _uid = inject(IdGenerator).getId('monkey-user-profile-button-');\r\n\r\n public elementRef = inject(ElementRef);\r\n\r\n @HostBinding('class')\r\n @Input()\r\n size: MonkeySize = 'xs';\r\n\r\n @Input({ required: true }) name!: string;\r\n\r\n @Input() iconName: string = '';\r\n\r\n protected _id!: string;\r\n\r\n open = false;\r\n\r\n @Input()\r\n get id(): string {\r\n return this._id;\r\n }\r\n\r\n set id(value: string) {\r\n this._id = value || this._uid;\r\n }\r\n\r\n constructor() {\r\n // eslint-disable-next-line no-self-assign\r\n this.id = this.id;\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n this.open = true;\r\n }\r\n\r\n handleClose = () => {\r\n this.open = false;\r\n };\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './user-profile-button.component';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './accordion';\r\nexport * from './action-bar';\r\nexport * from './alert';\r\nexport * from './autocomplete';\r\nexport * from './autocomplete-address';\r\nexport * from './avatar';\r\nexport * from './badge';\r\nexport * from './breadcrumb';\r\nexport * from './button';\r\nexport * from './checkbox';\r\nexport * from './date-range';\r\nexport * from './divider';\r\nexport * from './download-button';\r\nexport * from './download-toast';\r\nexport * from './complex-filter-bar';\r\nexport * from './filter-bar';\r\nexport * from './form-field';\r\nexport * from './icon-button';\r\nexport * from './input';\r\nexport * from './input-code';\r\nexport * from './input-date-range';\r\nexport * from './input-phone';\r\nexport * from './input-upload';\r\nexport * from './modal';\r\nexport * from './option';\r\nexport * from './pass-number';\r\nexport * from './radio-button';\r\nexport * from './scrollbar';\r\nexport * from './security-level';\r\nexport * from './select';\r\nexport * from './status';\r\nexport * from './stepper';\r\nexport * from './table';\r\nexport * from './tabs';\r\nexport * from './toast';\r\nexport * from './toggle';\r\nexport * from './toggle-line';\r\nexport * from './tooltip';\r\nexport * from './user-profile';\r\nexport * from './user-profile-button';\r\n\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { Directive, ElementRef, Input, OnChanges, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[monkeyBadge]'\r\n})\r\nexport class MonkeyBadgeDirective implements OnChanges {\r\n @Input() badgePosition: 'left' | 'right' = 'right';\r\n\r\n @Input() badgeSize: 'sm' | 'md' | 'lg' = 'md';\r\n\r\n @Input() badgeHidden = false;\r\n\r\n @Input() monkeyBadge: string = '';\r\n\r\n @Input() badgeBackground: string | null = null;\r\n\r\n @Input() badgeColor: string | null = null;\r\n\r\n private badgeEl: HTMLElement | null = null;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2\r\n ) {\r\n // not to do\r\n }\r\n\r\n ngOnChanges(): void {\r\n const { badgeHidden, badgeEl, renderer, el } = this;\r\n\r\n if (badgeHidden) {\r\n this.removeBadge();\r\n return;\r\n }\r\n\r\n if (!badgeEl) {\r\n this.badgeEl = renderer.createElement('span');\r\n renderer.setStyle(el.nativeElement, 'position', 'relative');\r\n renderer.appendChild(el.nativeElement, this.badgeEl);\r\n }\r\n\r\n this.updateBadge();\r\n }\r\n\r\n private updateBadge(): void {\r\n const {\r\n badgeEl,\r\n renderer,\r\n monkeyBadge,\r\n badgeSize,\r\n badgeColor,\r\n badgePosition,\r\n badgeBackground\r\n } = this;\r\n\r\n renderer.addClass(badgeEl, 'monkey-badge');\r\n renderer.addClass(badgeEl, `monkey-badge-${badgeSize}`);\r\n renderer.addClass(badgeEl, `monkey-badge-${badgePosition}`);\r\n renderer.setAttribute(\r\n badgeEl,\r\n 'style',\r\n `\r\n --badge-background: ${badgeBackground ?? 'unset'};\r\n --badge-color: ${badgeColor ?? 'unset'}\r\n `\r\n );\r\n\r\n this.renderer.setProperty(this.badgeEl, 'textContent', monkeyBadge);\r\n }\r\n\r\n private removeBadge(): void {\r\n const { renderer, el, badgeEl } = this;\r\n if (!el.nativeElement || !badgeEl) return;\r\n renderer.removeChild(el.nativeElement, badgeEl);\r\n renderer.removeStyle(el.nativeElement, 'position');\r\n this.badgeEl = null;\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { AfterContentInit, Directive, ElementRef, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'form[monkey-form]',\r\n standalone: true\r\n})\r\nexport class MonkeyFormDirective implements AfterContentInit {\r\n constructor(\r\n private readonly el: ElementRef<HTMLElement>,\r\n private readonly renderer: Renderer2\r\n ) {}\r\n\r\n ngAfterContentInit(): void {\r\n this.createSubmitButton();\r\n }\r\n\r\n private createSubmitButton(): void {\r\n const form = this.el.nativeElement;\r\n\r\n const existing = form.querySelector('button[monkey-submit-button]');\r\n if (existing) return;\r\n\r\n const button: HTMLButtonElement = this.renderer.createElement('button');\r\n\r\n this.renderer.setAttribute(button, 'type', 'submit');\r\n this.renderer.setAttribute(button, 'monkey-submit-button', 'true'); // marker\r\n this.renderer.setAttribute(button, 'aria-hidden', 'true');\r\n this.renderer.setAttribute(button, 'tabindex', '-1');\r\n\r\n this.renderer.setStyle(button, 'position', 'absolute');\r\n this.renderer.setStyle(button, 'width', '0');\r\n this.renderer.setStyle(button, 'height', '0');\r\n this.renderer.setStyle(button, 'padding', '0');\r\n this.renderer.setStyle(button, 'margin', '0');\r\n this.renderer.setStyle(button, 'border', 'none');\r\n this.renderer.setStyle(button, 'overflow', 'hidden');\r\n this.renderer.setStyle(button, 'opacity', '0');\r\n this.renderer.setStyle(button, 'pointer-events', 'none');\r\n this.renderer.setStyle(button, 'clip', 'rect(0 0 0 0)');\r\n\r\n this.renderer.appendChild(this.el.nativeElement, button);\r\n }\r\n}\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nimport { ComponentRef, Signal } from '@angular/core';\r\nimport { MonkeyToastComponent } from '../components/toast/toast.component';\r\n\r\nexport class MonkeyToastRef {\r\n constructor(private readonly componentRef: ComponentRef<MonkeyToastComponent>) {\r\n // not to do\r\n }\r\n\r\n close() {\r\n this.componentRef.instance.close();\r\n }\r\n}\r\n\r\nexport type MonkeyToastPosition =\r\n | 'top-center'\r\n | 'top-left'\r\n | 'top-right'\r\n | 'bottom-center'\r\n | 'bottom-left'\r\n | 'bottom-right';\r\n\r\nexport type MonkeyToastType = 'default' | 'success' | 'error' | 'warning' | 'question';\r\n\r\nexport type MonkeyToastConfig = {\r\n type?: MonkeyToastType;\r\n icon?: string;\r\n isClosable?: boolean;\r\n message: string;\r\n position?: MonkeyToastPosition;\r\n duration?: number;\r\n keepOpen?: boolean;\r\n actionLabel?: string;\r\n actionIcon?: string;\r\n action?: () => void;\r\n closeOnAction?: boolean;\r\n};\r\n\r\nexport type MonkeyDownloadToastConfig = Pick<\r\n MonkeyToastConfig,\r\n 'message' | 'position' | 'duration' | 'keepOpen'\r\n> & {\r\n id?: string;\r\n progress?: number | Signal<number>;\r\n onCancel?: () => void;\r\n onDownload?: () => void;\r\n};\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './alert';\r\nexport * from './autocomplete';\r\nexport * from './autocomplete-address';\r\nexport * from './breadcrumb';\r\nexport * from './button';\r\nexport * from './popover';\r\nexport * from './sizes';\r\nexport * from './table';\r\nexport * from './toast';\r\n","/** ************************\r\n * Copyright Monkey Exchange. All Rights Reserved\r\n * This style guide was developed by Monkey Exchange Team\r\n * MIT Licence\r\n ************************* */\r\nexport * from './lib/components';\r\nexport * from './lib/directives/badge';\r\nexport * from './lib/directives/display';\r\nexport * from './lib/directives/error';\r\nexport * from './lib/directives/helper';\r\nexport * from './lib/directives/info';\r\nexport * from './lib/directives/label';\r\nexport * from './lib/directives/popover';\r\nexport * from './lib/directives/prefix';\r\nexport * from './lib/directives/suffix';\r\nexport * from './lib/directives/form';\r\nexport * from './lib/interfaces';\r\nexport * from './lib/services';\r\nexport * from './lib/tokens';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.UtilIconComponent","i1.MonkeyFormFieldComponent","i2","i3","Utils.buildMonthByDays","Utils.getEnumKeys","Utils.MonkeyQuickActionsEnum","Utils.parseStringDate","Utils.getDefaultdates","Utils.buildCalendars","i1","i2.MonkeyInputDirective","i3.MonkeyFormFieldComponent","i4","i2.MonkeyFormFieldComponent","i3.MonkeyInputDirective","i2.MonkeyModalRef","i3.MonkeyIconButtonComponent","i1.MonkeyButtonComponent","i2.MonkeyModalComponent","i3.MonkeyModalContentDirective","i4.MonkeyModalActionsDirective","i3.MonkeyModalTitleDirective","i4.MonkeyModalSubtitleDirective","i5.MonkeyModalContentDirective","i6.MonkeyModalActionsDirective","i1.UtilIconComponent"],"mappings":"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"}
|