@cute-widgets/base 20.0.1

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.
Files changed (183) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/LICENSE.md +191 -0
  3. package/README.md +190 -0
  4. package/abstract/index.d.ts +327 -0
  5. package/alert/index.d.ts +68 -0
  6. package/autocomplete/index.d.ts +442 -0
  7. package/badge/index.d.ts +26 -0
  8. package/bottom-sheet/index.d.ts +231 -0
  9. package/button/index.d.ts +182 -0
  10. package/button-toggle/index.d.ts +225 -0
  11. package/card/index.d.ts +163 -0
  12. package/checkbox/index.d.ts +174 -0
  13. package/chips/index.d.ts +963 -0
  14. package/collapse/index.d.ts +97 -0
  15. package/core/animation/index.d.ts +43 -0
  16. package/core/datetime/index.d.ts +404 -0
  17. package/core/directives/index.d.ts +168 -0
  18. package/core/error/index.d.ts +74 -0
  19. package/core/index.d.ts +1039 -0
  20. package/core/interfaces/index.d.ts +114 -0
  21. package/core/layout/index.d.ts +53 -0
  22. package/core/line/index.d.ts +37 -0
  23. package/core/nav/index.d.ts +321 -0
  24. package/core/observers/index.d.ts +124 -0
  25. package/core/option/index.d.ts +185 -0
  26. package/core/pipes/index.d.ts +53 -0
  27. package/core/ripple/index.d.ts +66 -0
  28. package/core/testing/index.d.ts +154 -0
  29. package/core/theming/index.d.ts +118 -0
  30. package/core/types/index.d.ts +53 -0
  31. package/core/utils/index.d.ts +129 -0
  32. package/cute-widgets-base-20.0.1.tgz +0 -0
  33. package/datepicker/index.d.ts +1817 -0
  34. package/dialog/index.d.ts +484 -0
  35. package/divider/index.d.ts +24 -0
  36. package/expansion/README.md +8 -0
  37. package/expansion/index.d.ts +308 -0
  38. package/fesm2022/cute-widgets-base-abstract.mjs +547 -0
  39. package/fesm2022/cute-widgets-base-abstract.mjs.map +1 -0
  40. package/fesm2022/cute-widgets-base-alert.mjs +198 -0
  41. package/fesm2022/cute-widgets-base-alert.mjs.map +1 -0
  42. package/fesm2022/cute-widgets-base-autocomplete.mjs +1217 -0
  43. package/fesm2022/cute-widgets-base-autocomplete.mjs.map +1 -0
  44. package/fesm2022/cute-widgets-base-badge.mjs +75 -0
  45. package/fesm2022/cute-widgets-base-badge.mjs.map +1 -0
  46. package/fesm2022/cute-widgets-base-bottom-sheet.mjs +416 -0
  47. package/fesm2022/cute-widgets-base-bottom-sheet.mjs.map +1 -0
  48. package/fesm2022/cute-widgets-base-button-toggle.mjs +640 -0
  49. package/fesm2022/cute-widgets-base-button-toggle.mjs.map +1 -0
  50. package/fesm2022/cute-widgets-base-button.mjs +546 -0
  51. package/fesm2022/cute-widgets-base-button.mjs.map +1 -0
  52. package/fesm2022/cute-widgets-base-card.mjs +471 -0
  53. package/fesm2022/cute-widgets-base-card.mjs.map +1 -0
  54. package/fesm2022/cute-widgets-base-checkbox.mjs +390 -0
  55. package/fesm2022/cute-widgets-base-checkbox.mjs.map +1 -0
  56. package/fesm2022/cute-widgets-base-chips.mjs +2360 -0
  57. package/fesm2022/cute-widgets-base-chips.mjs.map +1 -0
  58. package/fesm2022/cute-widgets-base-collapse.mjs +259 -0
  59. package/fesm2022/cute-widgets-base-collapse.mjs.map +1 -0
  60. package/fesm2022/cute-widgets-base-core-animation.mjs +53 -0
  61. package/fesm2022/cute-widgets-base-core-animation.mjs.map +1 -0
  62. package/fesm2022/cute-widgets-base-core-datetime.mjs +568 -0
  63. package/fesm2022/cute-widgets-base-core-datetime.mjs.map +1 -0
  64. package/fesm2022/cute-widgets-base-core-directives.mjs +404 -0
  65. package/fesm2022/cute-widgets-base-core-directives.mjs.map +1 -0
  66. package/fesm2022/cute-widgets-base-core-error.mjs +105 -0
  67. package/fesm2022/cute-widgets-base-core-error.mjs.map +1 -0
  68. package/fesm2022/cute-widgets-base-core-interfaces.mjs +22 -0
  69. package/fesm2022/cute-widgets-base-core-interfaces.mjs.map +1 -0
  70. package/fesm2022/cute-widgets-base-core-layout.mjs +74 -0
  71. package/fesm2022/cute-widgets-base-core-layout.mjs.map +1 -0
  72. package/fesm2022/cute-widgets-base-core-line.mjs +87 -0
  73. package/fesm2022/cute-widgets-base-core-line.mjs.map +1 -0
  74. package/fesm2022/cute-widgets-base-core-nav.mjs +863 -0
  75. package/fesm2022/cute-widgets-base-core-nav.mjs.map +1 -0
  76. package/fesm2022/cute-widgets-base-core-observers.mjs +304 -0
  77. package/fesm2022/cute-widgets-base-core-observers.mjs.map +1 -0
  78. package/fesm2022/cute-widgets-base-core-option.mjs +373 -0
  79. package/fesm2022/cute-widgets-base-core-option.mjs.map +1 -0
  80. package/fesm2022/cute-widgets-base-core-pipes.mjs +97 -0
  81. package/fesm2022/cute-widgets-base-core-pipes.mjs.map +1 -0
  82. package/fesm2022/cute-widgets-base-core-ripple.mjs +172 -0
  83. package/fesm2022/cute-widgets-base-core-ripple.mjs.map +1 -0
  84. package/fesm2022/cute-widgets-base-core-testing.mjs +210 -0
  85. package/fesm2022/cute-widgets-base-core-testing.mjs.map +1 -0
  86. package/fesm2022/cute-widgets-base-core-theming.mjs +314 -0
  87. package/fesm2022/cute-widgets-base-core-theming.mjs.map +1 -0
  88. package/fesm2022/cute-widgets-base-core-types.mjs +22 -0
  89. package/fesm2022/cute-widgets-base-core-types.mjs.map +1 -0
  90. package/fesm2022/cute-widgets-base-core-utils.mjs +257 -0
  91. package/fesm2022/cute-widgets-base-core-utils.mjs.map +1 -0
  92. package/fesm2022/cute-widgets-base-core.mjs +1600 -0
  93. package/fesm2022/cute-widgets-base-core.mjs.map +1 -0
  94. package/fesm2022/cute-widgets-base-datepicker.mjs +4827 -0
  95. package/fesm2022/cute-widgets-base-datepicker.mjs.map +1 -0
  96. package/fesm2022/cute-widgets-base-dialog.mjs +1046 -0
  97. package/fesm2022/cute-widgets-base-dialog.mjs.map +1 -0
  98. package/fesm2022/cute-widgets-base-divider.mjs +86 -0
  99. package/fesm2022/cute-widgets-base-divider.mjs.map +1 -0
  100. package/fesm2022/cute-widgets-base-expansion.mjs +623 -0
  101. package/fesm2022/cute-widgets-base-expansion.mjs.map +1 -0
  102. package/fesm2022/cute-widgets-base-form-field.mjs +969 -0
  103. package/fesm2022/cute-widgets-base-form-field.mjs.map +1 -0
  104. package/fesm2022/cute-widgets-base-grid-list.mjs +715 -0
  105. package/fesm2022/cute-widgets-base-grid-list.mjs.map +1 -0
  106. package/fesm2022/cute-widgets-base-icon.mjs +1105 -0
  107. package/fesm2022/cute-widgets-base-icon.mjs.map +1 -0
  108. package/fesm2022/cute-widgets-base-input.mjs +726 -0
  109. package/fesm2022/cute-widgets-base-input.mjs.map +1 -0
  110. package/fesm2022/cute-widgets-base-layout-container.mjs +95 -0
  111. package/fesm2022/cute-widgets-base-layout-container.mjs.map +1 -0
  112. package/fesm2022/cute-widgets-base-layout-stack.mjs +166 -0
  113. package/fesm2022/cute-widgets-base-layout-stack.mjs.map +1 -0
  114. package/fesm2022/cute-widgets-base-layout.mjs +250 -0
  115. package/fesm2022/cute-widgets-base-layout.mjs.map +1 -0
  116. package/fesm2022/cute-widgets-base-list.mjs +1557 -0
  117. package/fesm2022/cute-widgets-base-list.mjs.map +1 -0
  118. package/fesm2022/cute-widgets-base-menu.mjs +1283 -0
  119. package/fesm2022/cute-widgets-base-menu.mjs.map +1 -0
  120. package/fesm2022/cute-widgets-base-navbar.mjs +359 -0
  121. package/fesm2022/cute-widgets-base-navbar.mjs.map +1 -0
  122. package/fesm2022/cute-widgets-base-paginator.mjs +485 -0
  123. package/fesm2022/cute-widgets-base-paginator.mjs.map +1 -0
  124. package/fesm2022/cute-widgets-base-progress.mjs +321 -0
  125. package/fesm2022/cute-widgets-base-progress.mjs.map +1 -0
  126. package/fesm2022/cute-widgets-base-radio.mjs +637 -0
  127. package/fesm2022/cute-widgets-base-radio.mjs.map +1 -0
  128. package/fesm2022/cute-widgets-base-select.mjs +1208 -0
  129. package/fesm2022/cute-widgets-base-select.mjs.map +1 -0
  130. package/fesm2022/cute-widgets-base-sidenav.mjs +1095 -0
  131. package/fesm2022/cute-widgets-base-sidenav.mjs.map +1 -0
  132. package/fesm2022/cute-widgets-base-slider.mjs +99 -0
  133. package/fesm2022/cute-widgets-base-slider.mjs.map +1 -0
  134. package/fesm2022/cute-widgets-base-snack-bar.mjs +897 -0
  135. package/fesm2022/cute-widgets-base-snack-bar.mjs.map +1 -0
  136. package/fesm2022/cute-widgets-base-sort.mjs +639 -0
  137. package/fesm2022/cute-widgets-base-sort.mjs.map +1 -0
  138. package/fesm2022/cute-widgets-base-spinner.mjs +154 -0
  139. package/fesm2022/cute-widgets-base-spinner.mjs.map +1 -0
  140. package/fesm2022/cute-widgets-base-stepper.mjs +673 -0
  141. package/fesm2022/cute-widgets-base-stepper.mjs.map +1 -0
  142. package/fesm2022/cute-widgets-base-table.mjs +1023 -0
  143. package/fesm2022/cute-widgets-base-table.mjs.map +1 -0
  144. package/fesm2022/cute-widgets-base-tabs.mjs +729 -0
  145. package/fesm2022/cute-widgets-base-tabs.mjs.map +1 -0
  146. package/fesm2022/cute-widgets-base-timepicker.mjs +965 -0
  147. package/fesm2022/cute-widgets-base-timepicker.mjs.map +1 -0
  148. package/fesm2022/cute-widgets-base-toolbar.mjs +120 -0
  149. package/fesm2022/cute-widgets-base-toolbar.mjs.map +1 -0
  150. package/fesm2022/cute-widgets-base-tooltip.mjs +947 -0
  151. package/fesm2022/cute-widgets-base-tooltip.mjs.map +1 -0
  152. package/fesm2022/cute-widgets-base-tree.mjs +598 -0
  153. package/fesm2022/cute-widgets-base-tree.mjs.map +1 -0
  154. package/fesm2022/cute-widgets-base.mjs +68 -0
  155. package/fesm2022/cute-widgets-base.mjs.map +1 -0
  156. package/form-field/index.d.ts +401 -0
  157. package/grid-list/index.d.ts +361 -0
  158. package/icon/index.d.ts +477 -0
  159. package/index.d.ts +3 -0
  160. package/input/index.d.ts +256 -0
  161. package/layout/container/index.d.ts +31 -0
  162. package/layout/index.d.ts +78 -0
  163. package/layout/stack/index.d.ts +52 -0
  164. package/list/index.d.ts +659 -0
  165. package/menu/index.d.ts +497 -0
  166. package/navbar/index.d.ts +91 -0
  167. package/package.json +279 -0
  168. package/paginator/index.d.ts +216 -0
  169. package/progress/index.d.ts +130 -0
  170. package/radio/index.d.ts +259 -0
  171. package/select/index.d.ts +426 -0
  172. package/sidenav/index.d.ts +369 -0
  173. package/slider/index.d.ts +48 -0
  174. package/snack-bar/index.d.ts +374 -0
  175. package/sort/index.d.ts +334 -0
  176. package/spinner/index.d.ts +70 -0
  177. package/stepper/index.d.ts +295 -0
  178. package/table/index.d.ts +395 -0
  179. package/tabs/index.d.ts +307 -0
  180. package/timepicker/index.d.ts +350 -0
  181. package/toolbar/index.d.ts +36 -0
  182. package/tooltip/index.d.ts +299 -0
  183. package/tree/index.d.ts +314 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cute-widgets-base-list.mjs","sources":["../../../../projects/cute-widgets/base/list/src/list-base.directive.ts","../../../../projects/cute-widgets/base/list/src/action-list.component.ts","../../../../projects/cute-widgets/base/list/src/list.ts","../../../../projects/cute-widgets/base/list/src/list-option-types.ts","../../../../projects/cute-widgets/base/list/src/list-item-sections.ts","../../../../projects/cute-widgets/base/list/src/nav-list.directive.ts","../../../../projects/cute-widgets/base/list/src/list-item-base.directive.ts","../../../../projects/cute-widgets/base/list/src/list-item.component.ts","../../../../projects/cute-widgets/base/list/src/list-item.component.html","../../../../projects/cute-widgets/base/list/src/list-option.component.ts","../../../../projects/cute-widgets/base/list/src/list-option.component.html","../../../../projects/cute-widgets/base/list/src/listbox/listbox-option.component.ts","../../../../projects/cute-widgets/base/list/src/listbox/listbox-option.component.html","../../../../projects/cute-widgets/base/list/src/listbox/listbox.component.ts","../../../../projects/cute-widgets/base/list/src/selection-list.component.ts","../../../../projects/cute-widgets/base/list/src/subheader.directive.ts","../../../../projects/cute-widgets/base/list/src/list.module.ts","../../../../projects/cute-widgets/base/list/cute-widgets-base-list.ts"],"sourcesContent":["/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {CuteFocusableControl} from \"@cute-widgets/base/abstract\";\r\nimport {Directive, HostBinding, inject, InjectionToken, Input} from \"@angular/core\";\r\nimport {LayoutBreakpoint, toTextBgCssClass} from \"@cute-widgets/base/core\";\r\n\r\n/** Object that can be used to configure the default options for the list module. */\r\nexport interface CuteListConfig {\r\n /** Whether icon indicators should be hidden for single-selection. */\r\n hideSingleSelectionIndicator?: boolean;\r\n}\r\n\r\n/** Injection token that can be used to provide the default options the list module. */\r\nexport const CUTE_LIST_CONFIG = new InjectionToken<CuteListConfig>('CUTE_LIST_CONFIG');\r\n\r\nlet nextId: number = -1;\r\n\r\n@Directive({\r\n host: {\r\n 'class': 'cute-list-base list-group',\r\n '[class.list-group-flush]': '!!flushBorders',\r\n '[class.list-group-numbered]': 'numbered',\r\n '[class.cute-list-interactive]': '!_isNonInteractive',\r\n '[attr.aria-disabled]': 'disabled',\r\n 'tabindex': '-1',\r\n }\r\n})\r\nexport abstract class CuteListBase extends CuteFocusableControl {\r\n\r\n protected _defaultOptions = inject(CUTE_LIST_CONFIG, {optional: true});\r\n\r\n /** Whether the list and its items are not interactive. */\r\n _isNonInteractive: boolean = true;\r\n\r\n /** Remove some borders and rounded corners to render list group items edge-to-edge in a parent container (e.g., cards) */\r\n @Input() flushBorders: \"full\"|\"partial\"|undefined;\r\n\r\n /** Generate numbered list group items */\r\n @Input() numbered: boolean = false;\r\n\r\n /**\r\n * Whether to apply the layout of list group items from vertical to horizontal across all breakpoints.\r\n * Note that currently, horizontal list groups cannot be combined with `flush` list groups.\r\n */\r\n @Input() horizontal: boolean = false;\r\n /** Makes a list group horizontal responsive starting at the `Breakpoint`s _min-width_. */\r\n @Input() horizontalBreakpoint: LayoutBreakpoint | undefined;\r\n\r\n /**\r\n * Adds `.list-group-horizontal` to change the layout of list group items from vertical to horizontal across all breakpoints.\r\n * Currently, **horizontal list groups cannot be combined with flush list groups.**\r\n */\r\n @HostBinding(\"class\")\r\n get getClassList(): string|undefined {\r\n let classList = [];\r\n if (this.horizontal && !this.flushBorders) {\r\n const horizontalClass = \"list-group-horizontal\";\r\n if (this.horizontalBreakpoint) {\r\n classList.push( horizontalClass+\"-\"+this.horizontalBreakpoint );\r\n } else {\r\n classList.push( horizontalClass );\r\n }\r\n }\r\n if (this.color) {\r\n classList.push( toTextBgCssClass(this.color) );\r\n }\r\n return classList ? classList.join(\" \") : undefined;\r\n }\r\n\r\n protected override generateId(): string {\r\n return `cute-list-${++nextId}`;\r\n }\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\n\r\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\r\nimport {CuteListBase} from './list-base.directive';\r\n\r\n@Component({\r\n selector: 'cute-action-list',\r\n exportAs: 'cuteActionList',\r\n template: '<ng-content></ng-content>',\r\n host: {\r\n 'class': 'cute-action-list',\r\n 'role': 'group',\r\n },\r\n styleUrl: './list.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{provide: CuteListBase, useExisting: CuteActionList}],\r\n standalone: true,\r\n})\r\nexport class CuteActionList extends CuteListBase {\r\n // A navigation list is considered interactive, but does not extend the interactive list\r\n // base class. We do this because as per MDC, items of interactive lists are only reachable\r\n // through keyboard shortcuts. We want all items for the navigation list to be reachable\r\n // through a tab key as we do not intend to provide any special accessibility treatment. The\r\n // accessibility treatment depends on how the end-user will interact with it.\r\n override _isNonInteractive = false;\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {ChangeDetectionStrategy, Component, InjectionToken, ViewEncapsulation} from \"@angular/core\";\r\nimport {CuteListBase} from \"./list-base.directive\";\r\n\r\n/**\r\n * Injection token that can be used to inject instances of `CuteList`. It serves as\r\n * an alternative token to the actual `CuteList` class which could cause unnecessary\r\n * retention of the class and its component metadata.\r\n */\r\nexport const CUTE_LIST = new InjectionToken<CuteList>('CuteList');\r\n\r\n/**\r\n * Flexible and powerful component for displaying a series of content.\r\n */\r\n@Component({\r\n selector: 'cute-list',\r\n exportAs: 'cuteList',\r\n template: '<ng-content></ng-content>',\r\n host: {\r\n 'class': 'cute-list',\r\n },\r\n styleUrls: ['./list.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [{provide: CuteListBase, useExisting: CuteList}],\r\n standalone: true,\r\n})\r\nexport class CuteList extends CuteListBase {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {InjectionToken} from '@angular/core';\r\n\r\n/**\r\n * Type describing possible positions of a checkbox or radio in a list option\r\n * with respect to the list item's text.\r\n */\r\nexport type CuteListOptionTogglePosition = 'before' | 'after';\r\n\r\n/**\r\n * Interface describing a list option. This is used to avoid circular\r\n * dependencies between the list-option and the styler directives.\r\n * @docs-private\r\n */\r\nexport interface ListOption {\r\n _getTogglePosition(): CuteListOptionTogglePosition;\r\n}\r\n\r\n/**\r\n * Injection token that can be used to reference instances of an `ListOption`. It serves\r\n * as an alternative token to an actual implementation which could result in undesired\r\n * retention of the class or circular references breaking runtime execution.\r\n * @docs-private\r\n */\r\nexport const LIST_OPTION = new InjectionToken<ListOption>('ListOption');\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {Directive, ElementRef, inject, Inject, Optional} from \"@angular/core\";\r\nimport {LIST_OPTION, ListOption} from \"./list-option-types\";\r\n\r\n/**\r\n * Directive capturing the title of a list item. A list item usually consists of a\r\n * title and optional secondary or tertiary lines.\r\n *\r\n * Text content for the title never wraps. There can only be a single title per-list item.\r\n */\r\n@Directive({\r\n selector: '[cuteListItemTitle]',\r\n host: {'class': 'cute-list-item-title'},\r\n standalone: true,\r\n})\r\nexport class CuteListItemTitle {\r\n constructor(public _elementRef: ElementRef<HTMLElement>) {}\r\n}\r\n\r\n/**\r\n * Directive capturing a line in a list item. A list item usually consists of a\r\n * title and optional secondary or tertiary lines.\r\n *\r\n * Text content inside a line never wraps. There can be at maximum two lines per list item.\r\n */\r\n@Directive({\r\n selector: '[cuteListItemLine]',\r\n host: {'class': 'cute-list-item-line'},\r\n standalone: true,\r\n})\r\nexport class CuteListItemLine {\r\n constructor(public _elementRef: ElementRef<HTMLElement>) {}\r\n}\r\n\r\n/**\r\n * Directive matching an optional meta-section for list items.\r\n *\r\n * List items can reserve space at the end of an item to display a control,\r\n * button or additional text content.\r\n */\r\n@Directive({\r\n selector: '[cuteListItemMeta]',\r\n host: {'class': 'cute-list-item-meta'},\r\n standalone: true,\r\n})\r\nexport class CuteListItemMeta {}\r\n\r\n/**\r\n * CuteWidgets uses the very intuitively named classes `.cute-list-item__start` and `.cute-list-item__end` to\r\n * position content such as icons or checkboxes/radios that comes either before or after the text\r\n * content respectively. This directive detects the placement of the checkbox/radio and applies the\r\n * correct CuteWidgets class to position the icon/avatar on the opposite side.\r\n */\r\n@Directive({\r\n host: {\r\n '[class.cute-list-item__start]': '_isAlignedAtStart()',\r\n '[class.cute-list-item__end]': '!_isAlignedAtStart()',\r\n }\r\n})\r\nexport abstract class _CuteListItemGraphicBase {\r\n public _listOption = inject<ListOption>(LIST_OPTION, {optional: true});\r\n\r\n _isAlignedAtStart() {\r\n // By default, in all list items, the graphic is aligned at start. In list options,\r\n // the graphic is only aligned at the start if the checkbox/radio is at the end.\r\n return !this._listOption || this._listOption?._getTogglePosition() === 'after';\r\n }\r\n}\r\n\r\n/**\r\n * Directive matching an optional avatar within a list item.\r\n *\r\n * List items can reserve space at the beginning of an item to display an avatar.\r\n */\r\n@Directive({\r\n selector: '[cuteListItemAvatar]',\r\n host: {'class': 'cute-list-item-avatar'},\r\n standalone: true,\r\n})\r\nexport class CuteListItemAvatar extends _CuteListItemGraphicBase {}\r\n\r\n/**\r\n * Directive matching an optional icon within a list item.\r\n *\r\n * List items can reserve space at the beginning of an item to display an icon.\r\n */\r\n@Directive({\r\n selector: '[cuteListItemIcon]',\r\n host: {'class': 'cute-list-item-icon'},\r\n standalone: true,\r\n})\r\nexport class CuteListItemIcon extends _CuteListItemGraphicBase {}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\n\r\nimport {ChangeDetectionStrategy, Component, InjectionToken, ViewEncapsulation} from '@angular/core';\r\nimport {CuteListBase} from './list-base.directive';\r\n\r\n/**\r\n * Injection token that can be used to inject instances of `CuteNavList`. It serves as\r\n * an alternative token to the actual `CuteNavList` class which could cause unnecessary\r\n * retention of the class and its component metadata.\r\n */\r\nexport const CUTE_NAV_LIST = new InjectionToken<CuteNavList>('CuteNavList');\r\n\r\n@Component({\r\n selector: 'cute-nav-list',\r\n exportAs: 'cuteNavList',\r\n template: '<ng-content></ng-content>',\r\n host: {\r\n 'class': 'cute-nav-list nav',\r\n 'role': 'navigation',\r\n },\r\n styleUrl: './list.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {provide: CuteListBase, useExisting: CuteNavList},\r\n {provide: CUTE_NAV_LIST, useExisting: CuteNavList},\r\n ],\r\n standalone: true,\r\n})\r\nexport class CuteNavList extends CuteListBase {\r\n // A navigation list is considered interactive, but does not extend the interactive list\r\n // base class. We do this because as per MDC, items of interactive lists are only reachable\r\n // through keyboard shortcuts. We want all items for the navigation list to be reachable\r\n // through a tab key as we do not intend to provide any special accessibility treatment. The\r\n // accessibility treatment depends on how the end-user will interact with it.\r\n override _isNonInteractive = false;\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n ANIMATION_MODULE_TYPE,\r\n ContentChildren,\r\n Directive, DOCUMENT,\r\n ElementRef, inject,\r\n Input, isDevMode, NgZone,\r\n QueryList\r\n} from \"@angular/core\";\r\nimport {CuteFocusableControl} from \"@cute-widgets/base/abstract\";\r\nimport {CuteListBase} from \"./list-base.directive\";\r\nimport {CuteListItemAvatar, CuteListItemIcon, CuteListItemLine, CuteListItemTitle} from \"./list-item-sections\";\r\nimport {coerceNumberProperty} from \"@angular/cdk/coercion\";\r\nimport {merge, Subscription} from \"rxjs\";\r\nimport {CUTE_NAV_LIST} from './nav-list.directive';\r\nimport {toThemeColor} from '@cute-widgets/base/core';\r\n\r\n@Directive({\r\n host: {\r\n 'class': 'cute-list-item-base list-group-item',\r\n '[class]': 'color ? \"list-group-item-\"+ toThemeColor(color) : \"\"',\r\n //'[class.nav-link]': '_navList',\r\n '[class.list-group-item-action]': '_isInteractiveItem',\r\n '[class.disabled]': 'disabled',\r\n '[attr.aria-disabled]': 'disabled',\r\n '[attr.disabled]': '(_isButtonElement && disabled) || null',\r\n //'[attr.tabindex]': '_isInteractiveItem && !disabled ? 0 : -1',\r\n '(click)': 'onClick($event)',\r\n }\r\n})\r\nexport abstract class CuteListItemBase extends CuteFocusableControl {\r\n\r\n private _document = inject(DOCUMENT);\r\n private _listBase = inject(CuteListBase, {optional: true});\r\n protected _ngZone = inject(NgZone);\r\n protected _navList = inject(CUTE_NAV_LIST, {optional: true});\r\n\r\n protected _isInteractiveItem: boolean = false;\r\n\r\n protected toThemeColor = toThemeColor;\r\n\r\n /** Query list matching list-item line elements. */\r\n abstract _lines: QueryList<CuteListItemLine> | undefined;\r\n\r\n /** Query list matching list-item title elements. */\r\n abstract _titles: QueryList<CuteListItemTitle> | undefined;\r\n\r\n /**\r\n * Element reference to the unscoped content in a list item.\r\n *\r\n * Unscoped content is user-projected text content in a list item that is\r\n * not part of an explicit line or title.\r\n */\r\n abstract _unscopedContent: ElementRef<HTMLSpanElement> | undefined;\r\n\r\n /** Host element for the list item. */\r\n protected _hostElement: HTMLElement;\r\n /** indicate whether the host element is a button or not */\r\n protected _isButtonElement: boolean;\r\n /** Whether animations are disabled. */\r\n protected _noopAnimations: boolean;\r\n /** Whether the list item has unscoped text content. */\r\n _hasUnscopedTextContent: boolean = false;\r\n\r\n private _subscriptions = new Subscription();\r\n\r\n @ContentChildren(CuteListItemAvatar, {descendants: false}) _avatars: QueryList<never> | undefined;\r\n @ContentChildren(CuteListItemIcon, {descendants: false}) _icons: QueryList<never> | undefined;\r\n\r\n /**\r\n * The number of lines this list item should reserve space for. If not specified,\r\n * lines are inferred based on the projected content.\r\n *\r\n * Explicitly specifying the number of lines is useful if you want to acquire additional\r\n * space and enable the wrapping of text. The unscoped text content of a list item will\r\n * always be able to take up the remaining space of the item, unless it represents the title.\r\n *\r\n * A maximum of three lines is supported as per the Material Design specification.\r\n */\r\n @Input()\r\n set lines(lines: number | string | null) {\r\n this._explicitLines = coerceNumberProperty(lines, null);\r\n this._updateItemLines(false);\r\n }\r\n _explicitLines: number | null = null;\r\n\r\n protected constructor(...args: unknown[]);\r\n protected constructor(\r\n ) {\r\n super();\r\n\r\n const animationMode = inject(ANIMATION_MODULE_TYPE, {optional: true});\r\n\r\n this._hostElement = this._nativeElement;\r\n this._isButtonElement = this._hostElement.nodeName.toLowerCase() === 'button';\r\n this._noopAnimations = animationMode === 'NoopAnimations';\r\n\r\n if (this._listBase && !this._listBase._isNonInteractive) {\r\n this._initInteractiveListItem();\r\n }\r\n\r\n // If no type attribute is specified for a host `<button>` element, set it to `button`. If a\r\n // type attribute is already specified, we do nothing. We do this for backwards compatibility.\r\n // TODO: Determine if we intend to continue doing this for the MDC-based list.\r\n // if (this._isButtonElement && !this._hostElement.hasAttribute('type')) {\r\n // this._hostElement.setAttribute('type', 'button');\r\n // }\r\n }\r\n\r\n private _initInteractiveListItem() {\r\n this._isInteractiveItem = true;\r\n this._hostElement.classList.add('cute-list-item-interactive');\r\n // this._rippleRenderer = new RippleRenderer(\r\n // this,\r\n // this._ngZone,\r\n // this._hostElement,\r\n // this._platform,\r\n // );\r\n // this._rippleRenderer.setupTriggerEvents(this._hostElement);\r\n }\r\n\r\n /**\r\n * Subscribes to changes in the projected title and lines.\r\n * Triggers item lines update whenever a change occurs.\r\n */\r\n private _monitorProjectedLinesAndTitle() {\r\n this._ngZone.runOutsideAngular(() => {\r\n this._subscriptions.add(\r\n merge(this._lines!.changes, this._titles!.changes).subscribe(() =>\r\n this._updateItemLines(false),\r\n ),\r\n );\r\n });\r\n }\r\n\r\n /**\r\n * Updates the lines of the list item. Based on the projected user content and optional\r\n * explicit lines setting, the visual appearance of the list item is determined.\r\n *\r\n * This method should be invoked whenever the projected user content changes, or\r\n * when the explicit lines have been updated.\r\n *\r\n * @param recheckUnscopedContent Whether the projected unscoped content should be re-checked.\r\n * The unscoped content is not re-checked for every update as it is a rather expensive check\r\n * for content that is expected to not change very often.\r\n */\r\n _updateItemLines(recheckUnscopedContent: boolean) {\r\n // If the updated is triggered too early before the view and content are initialized,\r\n // we just skip the update. After view initialization, the update is triggered again.\r\n if (!this._lines || !this._titles || !this._unscopedContent) {\r\n return;\r\n }\r\n\r\n // Re-check the DOM for unscoped text content if requested. This needs to\r\n // happen before any computation or sanity checks run as these rely on the\r\n // result of whether there is unscoped text content or not.\r\n if (recheckUnscopedContent) {\r\n this._checkDomForUnscopedTextContent();\r\n }\r\n\r\n // Sanity checks the list item lines and title in the content. This is a dev-mode only\r\n // check that can be dead-code eliminated by Terser in production.\r\n if (isDevMode()) {\r\n sanityCheckListItemContent(this);\r\n }\r\n\r\n const numberOfLines = this._explicitLines ?? this._inferLinesFromContent();\r\n const unscopedContentEl = this._unscopedContent.nativeElement;\r\n\r\n // Update the list item element to reflect the number of lines.\r\n this._hostElement.classList.toggle('cute-list-item-single-line', numberOfLines <= 1);\r\n this._hostElement.classList.toggle('cute-list-item--with-one-line', numberOfLines <= 1);\r\n this._hostElement.classList.toggle('cute-list-item--with-two-lines', numberOfLines === 2);\r\n this._hostElement.classList.toggle('cute-list-item--with-three-lines', numberOfLines === 3);\r\n\r\n // If there is no title and the unscoped content is the only line, the\r\n // unscoped text content will be treated as the title of the list-item.\r\n if (this._hasUnscopedTextContent) {\r\n const treatAsTitle = this._titles.length === 0 && numberOfLines === 1;\r\n unscopedContentEl.classList.toggle('cute-list-item__primary-text', treatAsTitle);\r\n unscopedContentEl.classList.toggle('cute-list-item__secondary-text', !treatAsTitle);\r\n } else {\r\n unscopedContentEl.classList.remove('cute-list-item__primary-text');\r\n unscopedContentEl.classList.remove('cute-list-item__secondary-text');\r\n }\r\n }\r\n\r\n /**\r\n * Infers the number of lines based on the projected user content. This is useful\r\n * if no explicit number of lines has been specified on the list item.\r\n *\r\n * The number of lines is inferred based on whether there is a title, the number of\r\n * additional lines (secondary/tertiary). An additional line is acquired if there is\r\n * unscoped text content.\r\n */\r\n private _inferLinesFromContent() {\r\n let numOfLines = this._titles!.length + this._lines!.length;\r\n if (this._hasUnscopedTextContent) {\r\n numOfLines += 1;\r\n }\r\n return numOfLines;\r\n }\r\n\r\n /** Checks whether the list item has unscoped text content. */\r\n private _checkDomForUnscopedTextContent() {\r\n this._hasUnscopedTextContent = Array.from<ChildNode>(\r\n this._unscopedContent!.nativeElement.childNodes,\r\n )\r\n .filter(node => node.nodeType !== node.COMMENT_NODE)\r\n .some(node => !!(node.textContent && node.textContent.trim()));\r\n }\r\n\r\n /** Whether the list item has icons or avatars. */\r\n _hasIconOrAvatar() {\r\n return !!(this._avatars?.length || this._icons?.length);\r\n }\r\n\r\n protected override generateId(): string {\r\n return \"\";\r\n }\r\n\r\n /**\r\n * \"Use `a`s or `button`s to create actionable list group items...\" (`Bootstrap` docs)\r\n * @returns Whether the list item is actionable\r\n */\r\n protected isActionItem(): boolean {\r\n const tag = this._nativeElement.nodeName.toLowerCase();\r\n return tag === \"a\" || tag === \"button\";\r\n }\r\n\r\n protected onClick(event: MouseEvent): void {\r\n const elem = event.target as HTMLElement;\r\n if (elem instanceof HTMLAnchorElement && elem.hash && elem.hash.startsWith(\"#\")) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n const target = this._document.getElementById(elem.hash.substring(1));\r\n if (target) {\r\n target.scrollIntoView({behavior: \"smooth\", block: \"nearest\"});\r\n }\r\n }\r\n }\r\n\r\n override ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n this._monitorProjectedLinesAndTitle();\r\n this._updateItemLines(true);\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this._subscriptions.unsubscribe();\r\n }\r\n\r\n}\r\n\r\n/**\r\n * Sanity checks the configuration of the list item with respect to the amount\r\n * of lines, whether there is a title, or if there is unscoped text content.\r\n *\r\n * The checks are extracted into a top-level function that can be dead-code\r\n * eliminated by Terser or other optimizers in production mode.\r\n */\r\nfunction sanityCheckListItemContent(item: CuteListItemBase) {\r\n const numTitles = item._titles!.length;\r\n const numLines = item._lines!.length;\r\n\r\n if (numTitles > 1) {\r\n console.warn('A list item cannot have multiple titles.');\r\n }\r\n if (numTitles === 0 && numLines > 0) {\r\n console.warn('A list item line can only be used if there is a list item title.');\r\n }\r\n if (\r\n numTitles === 0 &&\r\n item._hasUnscopedTextContent &&\r\n item._explicitLines !== null &&\r\n item._explicitLines > 1\r\n ) {\r\n console.warn('A list item cannot have wrapping content without a title.');\r\n }\r\n if (numLines > 2 || (numLines === 2 && item._hasUnscopedTextContent)) {\r\n console.warn('A list item can have at maximum three lines.');\r\n }\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChildren, ElementRef,\r\n Input,\r\n QueryList,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport {coerceBooleanProperty} from \"@angular/cdk/coercion\";\r\nimport {CuteListItemBase} from \"./list-item-base.directive\";\r\nimport {CuteListItemTitle, CuteListItemLine, CuteListItemMeta} from \"./list-item-sections\";\r\nimport {CdkObserveContent} from \"@angular/cdk/observers\";\r\n\r\n@Component({\r\n selector: `cute-list-item, a[cute-list-item], button[cute-list-item]`,\r\n templateUrl: './list-item.component.html',\r\n styleUrls: ['./list-item.component.scss'],\r\n exportAs: 'cuteListItem',\r\n host: {\r\n 'class': 'cute-list-item',\r\n '[class.active]': 'activated',\r\n '[attr.aria-current]': '_getAriaCurrent()',\r\n },\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [CdkObserveContent],\r\n})\r\nexport class CuteListItem extends CuteListItemBase {\r\n\r\n @ContentChildren(CuteListItemLine, {descendants: true}) _lines: QueryList<CuteListItemLine> | undefined;\r\n @ContentChildren(CuteListItemTitle, {descendants: true}) _titles: QueryList<CuteListItemTitle> | undefined;\r\n @ContentChildren(CuteListItemMeta, {descendants: true}) _meta: QueryList<CuteListItemMeta> | undefined;\r\n @ViewChild('unscopedContent') _unscopedContent: ElementRef<HTMLSpanElement> | undefined;\r\n @ViewChild('text') _itemText: ElementRef<HTMLElement> | undefined;\r\n\r\n /** Indicates whether an item in a `<cute-nav-list>` is the currently active page. */\r\n @Input()\r\n get activated(): boolean { return this._activated; }\r\n set activated(activated: any) {\r\n this._activated = coerceBooleanProperty(activated);\r\n }\r\n private _activated: boolean = false;\r\n\r\n /**\r\n * Determine the value of `aria-current`. Return 'page' if this item is an activated anchor tag.\r\n * Otherwise, return `null`. This method is safe to use with server-side rendering.\r\n */\r\n protected _getAriaCurrent(): string | null {\r\n return this._hostElement.nodeName === 'A' && this._activated ? 'page' : null;\r\n }\r\n\r\n // protected _hasBothLeadingAndTrailing(): boolean {\r\n // return this._meta.length !== 0 && (this._avatars.length !== 0 || this._icons.length !== 0);\r\n // }\r\n\r\n}\r\n\r\n","<ng-content select=\"[cuteListItemAvatar],[cuteListItemIcon]\"></ng-content>\r\n\r\n<div class=\"cute-list-item-content\">\r\n <ng-content select=\"[cuteListItemTitle]\"></ng-content>\r\n <ng-content select=\"[cuteListItemLine]\"></ng-content>\r\n <span #unscopedContent class=\"cute-list-item-content-unscoped\"\r\n (cdkObserveContent)=\"_updateItemLines(true)\">\r\n <ng-content></ng-content>\r\n </span>\r\n</div>\r\n\r\n<ng-content select=\"[cuteListItemMeta]\"></ng-content>\r\n\r\n<ng-content select=\"cute-divider\"></ng-content>\r\n\r\n<!--\r\n Strong focus indicator element. MDC uses the `::before` pseudo element for the default\r\n focus/hover/selected state, so we need a separate element.\r\n-->\r\n<!--<div class=\"cute-focus-indicator\"></div>-->\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\r\nimport {SelectionModel} from '@angular/cdk/collections';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n EventEmitter, inject,\r\n InjectionToken,\r\n Input,\r\n Output,\r\n QueryList,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {LIST_OPTION, ListOption, CuteListOptionTogglePosition} from './list-option-types';\r\nimport {CuteListBase} from \"./list-base.directive\";\r\nimport {CuteListItemLine, CuteListItemTitle} from \"./list-item-sections\";\r\nimport {CuteListItemBase} from \"./list-item-base.directive\";\r\nimport {CdkObserveContent} from \"@angular/cdk/observers\";\r\nimport {CuteCheckbox} from \"@cute-widgets/base/checkbox\";\r\nimport {CuteRadioButton} from \"@cute-widgets/base/radio\";\r\nimport {NgTemplateOutlet} from \"@angular/common\";\r\nimport {RelativeSize} from \"@cute-widgets/base/core\";\r\n\r\n/**\r\n * Injection token that can be used to reference instances of an `SelectionList`. It serves\r\n * as an alternative token to an actual implementation which would result in circular references.\r\n */\r\nexport const SELECTION_LIST = new InjectionToken<SelectionList>('SelectionList');\r\n\r\n/**\r\n * Interface describing the containing list of a list option. This is used to avoid\r\n * circular dependencies between the list-option and the selection list.\r\n */\r\nexport interface SelectionList extends CuteListBase {\r\n multiple: boolean;\r\n selectedOptions: SelectionModel<CuteListOption>;\r\n hideSingleSelectionIndicator: boolean;\r\n compareWith: (o1: any, o2: any) => boolean;\r\n _value: string[] | null;\r\n _reportValueChange(): void;\r\n _emitChangeEvent(options: CuteListOption[]): void;\r\n _onTouched(): void;\r\n}\r\n\r\n@Component({\r\n selector: 'cute-list-option',\r\n templateUrl: './list-option.component.html',\r\n styleUrls: ['./list-option.component.scss'],\r\n exportAs: 'cuteListOption',\r\n host: {\r\n 'class': 'cute-list-option', // list-group-item-action',\r\n '[class.cute-list-option-separated]': 'hideIndicator',\r\n '[class.cute-list-item--selected]': 'hiddenIndicatorSelected',\r\n '[class.active]': 'hiddenIndicatorSelected',\r\n '[attr.aria-selected]': 'selected',\r\n //'[style.cursor]': '\"pointer\"',\r\n 'role': 'option',\r\n '(blur)': '_handleBlur()',\r\n '(click)': '_toggleOnInteraction()',\r\n },\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n { provide: CuteListItemBase, useExisting: CuteListOption },\r\n { provide: LIST_OPTION, useExisting: CuteListOption },\r\n ],\r\n imports: [\r\n CdkObserveContent,\r\n CuteCheckbox,\r\n CuteRadioButton,\r\n NgTemplateOutlet\r\n ]\r\n})\r\nexport class CuteListOption extends CuteListItemBase implements ListOption {\r\n\r\n protected _selectionList = inject<SelectionList>(SELECTION_LIST);\r\n\r\n @ContentChildren(CuteListItemLine, {descendants: true}) _lines: QueryList<CuteListItemLine> | undefined;\r\n @ContentChildren(CuteListItemTitle, {descendants: true}) _titles: QueryList<CuteListItemTitle> | undefined;\r\n @ViewChild('unscopedContent') _unscopedContent: ElementRef<HTMLSpanElement> | undefined;\r\n\r\n /**\r\n * Emits when the selected state of the option has changed.\r\n * Use to facilitate two-data binding to the `selected` property.\r\n */\r\n @Output()\r\n readonly selectedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n /** Whether the label should appear before or after the checkbox/radio. Defaults to 'after' */\r\n @Input() togglePosition: CuteListOptionTogglePosition = 'after';\r\n\r\n /** Value of the option */\r\n @Input()\r\n get value(): any { return this._value; }\r\n set value(newValue: any) {\r\n if (this.selected && newValue !== this.value && this._inputsInitialized) {\r\n this.selected = false;\r\n }\r\n this._value = newValue;\r\n }\r\n private _value: any;\r\n\r\n /** Whether the option is selected. */\r\n @Input()\r\n get selected(): boolean { return this._selectionList.selectedOptions.isSelected(this); }\r\n set selected(value: BooleanInput) {\r\n const isSelected = coerceBooleanProperty(value);\r\n\r\n if (isSelected !== this._selected) {\r\n this._setSelected(isSelected);\r\n\r\n if (isSelected || this._selectionList.multiple) {\r\n this._selectionList._reportValueChange();\r\n }\r\n }\r\n }\r\n private _selected = false;\r\n\r\n /** Relative size of the internal input element. */\r\n @Input() iconSize: RelativeSize = \"middle\";\r\n\r\n protected get hideIndicator(): boolean {\r\n return !this._selectionList.multiple && this._selectionList.hideSingleSelectionIndicator;\r\n }\r\n\r\n protected get hiddenIndicatorSelected(): boolean {\r\n return this.selected && this.hideIndicator\r\n }\r\n\r\n /**\r\n * This is set to true after the first OnChanges cycle, so we don't\r\n * clear the value of `selected` in the first cycle.\r\n */\r\n private _inputsInitialized = false;\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n\r\n const list = this._selectionList;\r\n\r\n if (list._value && list._value.some(value => list.compareWith(this._value, value))) {\r\n this._setSelected(true);\r\n }\r\n\r\n const wasSelected = this._selected;\r\n\r\n // List options that are selected at initialization can't be reported properly to the form\r\n // control. This is because it takes some time until the selection-list knows about all\r\n // available options. Also, it can happen that the ControlValueAccessor has an initial value\r\n // that should be used instead. Deferring the value change report to the next tick ensures\r\n // that the form control value is not being overwritten.\r\n Promise.resolve().then(() => {\r\n if (this._selected || wasSelected) {\r\n this.selected = true;\r\n this.markForCheck();\r\n }\r\n });\r\n this._inputsInitialized = true;\r\n }\r\n\r\n override ngOnDestroy(): void {\r\n super.ngOnDestroy();\r\n\r\n if (this.selected) {\r\n // We have to delay this until the next tick in order\r\n // to avoid changed after checked errors.\r\n Promise.resolve().then(() => {\r\n this.selected = false;\r\n });\r\n }\r\n }\r\n\r\n /** Toggles the selection state of the option. */\r\n toggle(): void {\r\n this.selected = !this.selected;\r\n }\r\n\r\n /** Gets the text label of the list option. Used for the typeahead functionality in the list. */\r\n override getLabel() {\r\n const titleElement = this._titles?.get(0)?._elementRef.nativeElement;\r\n // If there is no explicit title element, the unscoped text content\r\n // is treated as the list item title.\r\n const labelEl = titleElement || this._unscopedContent?.nativeElement;\r\n return labelEl?.textContent || '';\r\n }\r\n\r\n /** Whether a checkbox is shown at the given position. */\r\n _hasCheckboxAt(position: CuteListOptionTogglePosition): boolean {\r\n return this._selectionList.multiple && this._getTogglePosition() === position;\r\n }\r\n\r\n /** Where a radio indicator is shown at the given position. */\r\n _hasRadioAt(position: CuteListOptionTogglePosition): boolean {\r\n return (\r\n !this._selectionList.multiple &&\r\n this._getTogglePosition() === position &&\r\n !this._selectionList.hideSingleSelectionIndicator\r\n );\r\n }\r\n\r\n /** Whether icons or avatars are shown at the given position. */\r\n _hasIconsOrAvatarsAt(position: 'before' | 'after'): boolean {\r\n return this._hasProjected('icons', position) || this._hasProjected('avatars', position);\r\n }\r\n\r\n /** Gets whether the given type of element is projected at the specified position. */\r\n _hasProjected(type: 'icons' | 'avatars', position: 'before' | 'after'): boolean {\r\n // If the checkbox/radio is shown at the specified position, none of the icons or\r\n // avatars can be shown at the position.\r\n return (\r\n this._getTogglePosition() !== position &&\r\n (type === 'avatars' ? this._avatars?.length !== 0 : this._icons?.length !== 0)\r\n );\r\n }\r\n\r\n _handleBlur() {\r\n this._selectionList._onTouched();\r\n }\r\n\r\n /** Gets the current position of the checkbox/radio. */\r\n _getTogglePosition() {\r\n return this.togglePosition || 'after';\r\n }\r\n\r\n /**\r\n * Sets the selected state of the option.\r\n * @returns Whether the value has changed.\r\n * @internal\r\n */\r\n _setSelected(selected: boolean): boolean {\r\n if (selected === this._selected) {\r\n return false;\r\n }\r\n\r\n this._selected = selected;\r\n\r\n if (selected) {\r\n this._selectionList.selectedOptions.select(this);\r\n } else {\r\n this._selectionList.selectedOptions.deselect(this);\r\n }\r\n\r\n this.selectedChange.emit(selected);\r\n this.markForCheck();\r\n return true;\r\n }\r\n\r\n /**\r\n * Toggles the option's value based on a user interaction.\r\n * @internal\r\n */\r\n _toggleOnInteraction() {\r\n if (!this.disabled) {\r\n if (this._selectionList.multiple) {\r\n this.selected = !this.selected;\r\n this._selectionList._emitChangeEvent([this]);\r\n } else if (!this.selected) {\r\n this.selected = true;\r\n this._selectionList._emitChangeEvent([this]);\r\n }\r\n }\r\n }\r\n\r\n /** Sets the tabindex of the list option. */\r\n _setTabindex(value: number) {\r\n this.setAttribute('tabindex', value + '');\r\n }\r\n}\r\n","<ng-template #icons>\r\n <ng-content select=\"[cuteListItemAvatar],[cuteListItemIcon]\"></ng-content>\r\n</ng-template>\r\n<ng-template #checkbox>\r\n <cute-checkbox tabIndex=\"-1\" [checked]=\"selected\" [disabled]=\"disabled\" [iconSize]=\"iconSize\" class=\"pe-none\"></cute-checkbox>\r\n</ng-template>\r\n<ng-template #radio>\r\n <cute-radio-button tabIndex=\"-1\" [checked]=\"selected\" [disabled]=\"disabled\" [iconSize]=\"iconSize\" class=\"pe-none\"></cute-radio-button>\r\n</ng-template>\r\n\r\n@if (_hasCheckboxAt('before')) {\r\n <!-- Container for the checkbox at start. -->\r\n <span class=\"cute-list-option-checkbox-before\">\r\n <ng-template [ngTemplateOutlet]=\"checkbox\"></ng-template>\r\n </span>\r\n} @else if (_hasRadioAt('before')) {\r\n <!-- Container for the radio at the start. -->\r\n <span class=\"cute-list-option-radio cute-list-option-radio-before\">\r\n <ng-template [ngTemplateOutlet]=\"radio\"></ng-template>\r\n </span>\r\n}\r\n<!-- Conditionally renders icons/avatars before the list item text. -->\r\n@if (_hasIconsOrAvatarsAt('before')) {\r\n <ng-template [ngTemplateOutlet]=\"icons\"></ng-template>\r\n}\r\n\r\n<!-- Text -->\r\n<span class=\"cute-list-item-content\">\r\n <ng-content select=\"[cuteListItemTitle]\"></ng-content>\r\n <ng-content select=\"[cuteListItemLine]\"></ng-content>\r\n <span #unscopedContent class=\"cute-list-item-content-unscoped\"\r\n (cdkObserveContent)=\"_updateItemLines(true)\">\r\n <ng-content></ng-content>\r\n </span>\r\n</span>\r\n\r\n@if (_hasCheckboxAt('after')) {\r\n <!-- Container for the checkbox at the end. -->\r\n <span class=\"cute-list-item__end\">\r\n <ng-template [ngTemplateOutlet]=\"checkbox\"></ng-template>\r\n </span>\r\n} @else if (_hasRadioAt('after')) {\r\n <!-- Container for the radio at the end. -->\r\n <span class=\"cute-list-option-radio cute-list-item__end\">\r\n <ng-template [ngTemplateOutlet]=\"radio\"></ng-template>\r\n </span>\r\n}\r\n\r\n<!-- Conditionally renders icons/avatars after the list item text. -->\r\n@if (_hasIconsOrAvatarsAt('after')) {\r\n <ng-template [ngTemplateOutlet]=\"icons\"></ng-template>\r\n}\r\n\r\n<!-- Divider -->\r\n<ng-content select=\"cute-divider\"></ng-content>\r\n\r\n<!--\r\n Strong focus indicator element. MDC uses the `::before` pseudo element for the default\r\n focus/hover/selected state, so we need a separate element.\r\n-->\r\n<!--<div class=\"cute-focus-indicator\"></div>-->\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {ChangeDetectionStrategy, Component, inject, Input, ViewEncapsulation} from \"@angular/core\";\r\nimport {CdkListboxModule, CdkOption} from \"@angular/cdk/listbox\";\r\nimport {CdkObserveContent} from \"@angular/cdk/observers\";\r\nimport {CuteListBox} from \"./listbox.component\";\r\nimport {CuteListItem} from \"../list-item.component\";\r\n\r\n/**\r\n * An item within a listbox.\r\n *\r\n * @experimental\r\n */\r\n@Component({\r\n selector: 'cute-listbox-option, a[cute-listbox-option], button[cute-listbox-option]',\r\n templateUrl: './listbox-option.component.html',\r\n exportAs: 'cuteListboxOption',\r\n host: {\r\n 'class': 'cute-listbox-option',\r\n '[class.active]': 'selected',\r\n '[class.disabled]': 'disabled',\r\n '[attr.aria-disabled]': 'disabled',\r\n '[attr.aria-selected]': 'selected',\r\n '[attr.aria-current]': '_getAriaCurrent()',\r\n '[attr.role]': 'role',\r\n '[attr.tabindex]': '-1',\r\n },\r\n imports: [CdkListboxModule, CdkObserveContent],\r\n hostDirectives: [\r\n {\r\n directive: CdkOption,\r\n inputs: [\r\n 'cdkOption: value',\r\n 'cdkOptionTypeaheadLabel: typeaheadLabel',\r\n 'cdkOptionDisabled: disabled',\r\n 'tabindex',\r\n 'id',\r\n ],\r\n outputs: [],\r\n }\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuteListBoxOption extends CuteListItem {\r\n\r\n protected cdkOption: CdkOption<any> = inject(CdkOption);\r\n\r\n /** The value of this option */\r\n @Input()\r\n get value(): any {return this.cdkOption.value;}\r\n set value(v: any) {this.cdkOption.value = v;}\r\n\r\n /** Whether the option is selected or not. */\r\n get selected(): boolean {\r\n return this.cdkOption.isSelected();\r\n }\r\n\r\n constructor(protected listBox: CuteListBox) {\r\n super(listBox);\r\n this.role = \"option\";\r\n }\r\n\r\n /** Sets focus to this option */\r\n override focus() {\r\n this.cdkOption.focus();\r\n }\r\n\r\n /** Gets the option's label that is part of the `FocusableOption` interface */\r\n override getLabel(): string {\r\n return this.cdkOption.getLabel();\r\n }\r\n\r\n /** Whether this option is active */\r\n isActive(): boolean {\r\n return this.cdkOption.isActive();\r\n }\r\n\r\n /** Select this option if it is not selected */\r\n select(): void {\r\n this.cdkOption.select();\r\n }\r\n\r\n /** Deselect this option if it is selected */\r\n deselect(): void {\r\n this.cdkOption.deselect();\r\n }\r\n\r\n /** Toggle the selected state of this option */\r\n toggle(): void {\r\n this.cdkOption.toggle();\r\n }\r\n\r\n}\r\n","<ng-content select=\"[cuteListItemAvatar],[cuteListItemIcon]\"></ng-content>\r\n\r\n<span class=\"cute-list-item-content\">\r\n <ng-content select=\"[cuteListItemTitle]\"></ng-content>\r\n <ng-content select=\"[cuteListItemLine]\"></ng-content>\r\n <span #unscopedContent class=\"cute-list-item-content-unscoped\"\r\n (cdkObserveContent)=\"_updateItemLines(true)\">\r\n <ng-content></ng-content>\r\n </span>\r\n </span>\r\n\r\n<ng-content select=\"[cuteListItemMeta]\"></ng-content>\r\n\r\n<ng-content select=\"cute-divider\"></ng-content>\r\n\r\n<!--\r\n Strong focus indicator element. MDC uses the `::before` pseudo element for the default\r\n focus/hover/selected state, so we need a separate element.\r\n-->\r\n<!--<div class=\"cute-focus-indicator\"></div>-->\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChildren,\r\n inject,\r\n InjectionToken, QueryList,\r\n ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport {CdkListboxModule, CdkListbox, CdkOption} from \"@angular/cdk/listbox\";\r\nimport {ListKeyManager} from \"@angular/cdk/a11y\";\r\nimport {ControlValueAccessor} from \"@angular/forms\";\r\nimport {CuteListBase} from \"../list-base.directive\";\r\nimport {CuteListBoxOption} from \"./listbox-option.component\";\r\n\r\n/**\r\n * Injection token that can be used to inject instances of `CuteListBox`. It serves as\r\n * an alternative token to the actual `CuteListBox` class which could cause unnecessary\r\n * retention of the class and its component metadata.\r\n */\r\nexport const CUTE_LISTBOX = new InjectionToken<CuteListBox>('CuteListBox');\r\n\r\n/**\r\n * A component that displays a list of options for users to select from, supporting keyboard navigation,\r\n * single or multiple selection, and screen reader support.\r\n *\r\n * @experimental\r\n */\r\n@Component({\r\n selector: 'cute-listbox',\r\n template: '<ng-content></ng-content>',\r\n styleUrl: '../list.scss',\r\n exportAs: 'cuteListBox',\r\n host: {\r\n '[attr.aria-multiselectable]': 'cdkListbox.multiple',\r\n '[attr.aria-orientation]': 'cdkListbox.orientation',\r\n '[attr.role]': 'role',\r\n '(keydown)': '_handleKeydown($event)',\r\n },\r\n imports: [CdkListboxModule],\r\n hostDirectives: [\r\n { directive: CdkListbox,\r\n inputs: [\r\n 'id',\r\n 'tabindex',\r\n 'cdkListboxMultiple: multiple',\r\n 'cdkListboxValue: value',\r\n 'cdkListboxDisabled: disabled',\r\n 'cdkListboxUseActiveDescendant: useActiveDescendant',\r\n 'cdkListboxOrientation: orientation',\r\n 'cdkListboxNavigationWrapDisabled: navigationWrapDisabled',\r\n 'cdkListboxCompareWith: compareWith',\r\n 'cdkListboxNavigatesDisabledOptions: navigatesDisabledOptions'\r\n ],\r\n outputs: ['cdkListboxValueChange: valueChange']\r\n }\r\n ],\r\n providers: [{ provide: CuteListBase, useExisting: CuteListBox }],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuteListBox extends CuteListBase implements ControlValueAccessor {\r\n\r\n protected readonly cdkListbox: CdkListbox<any> = inject(CdkListbox);\r\n\r\n protected _keyManager: ListKeyManager<CuteListBoxOption> | undefined;\r\n\r\n @ContentChildren(CuteListBoxOption, {descendants: true}) protected _options: QueryList<CuteListBoxOption> | undefined;\r\n\r\n constructor() {\r\n super();\r\n this.role = \"listbox\";\r\n this._isNonInteractive = false;\r\n }\r\n\r\n /** Deselect the given option */\r\n deselect(option: CdkOption): void {\r\n this.cdkListbox.deselect(option);\r\n }\r\n\r\n /** Deselect the given value */\r\n deselectValue(value: any): void {\r\n this.cdkListbox.deselectValue(value);\r\n }\r\n\r\n /** Focus the list-box's host element */\r\n override focus(): void {\r\n this.cdkListbox.focus();\r\n }\r\n\r\n /** Get whether the given option is active. */\r\n isActive(option: CdkOption): boolean {\r\n return this.cdkListbox.isActive(option);\r\n }\r\n\r\n /** Get whether the given option is selected. */\r\n isSelected(option: CdkOption): boolean {\r\n return this.cdkListbox.isSelected(option);\r\n }\r\n\r\n /** Get whether the given value is selected. */\r\n isValueSelected(value: any): boolean {\r\n return this.cdkListbox.isValueSelected(value);\r\n }\r\n\r\n /** Select the given option. */\r\n select(option: CdkOption): void {\r\n this.cdkListbox.select(option);\r\n }\r\n\r\n /** Select the given value. */\r\n selectValue(value: any): void {\r\n this.cdkListbox.selectValue(value);\r\n }\r\n\r\n /** Set the selected state of all options. */\r\n setAllSelected(isSelected: boolean): void {\r\n this.cdkListbox.setAllSelected(isSelected);\r\n }\r\n\r\n /** Toggle the selected state of the given option. */\r\n toggle(option: CdkOption): void {\r\n this.cdkListbox.toggle(option);\r\n }\r\n\r\n /** Toggle the selected state of the given value. */\r\n toggleValue(value: any): void {\r\n this.cdkListbox.toggleValue(value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.cdkListbox.registerOnChange(fn);\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.cdkListbox.registerOnTouched(fn);\r\n }\r\n\r\n writeValue(obj: any): void {\r\n this.cdkListbox.writeValue(obj);\r\n }\r\n\r\n override setDisabledState(newState: boolean): boolean {\r\n if (super.setDisabledState(newState)) {\r\n this.cdkListbox.setDisabledState(newState);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n protected _handleKeydown(event: KeyboardEvent) {\r\n this._keyManager?.onKeydown(event);\r\n }\r\n\r\n override ngAfterContentInit() {\r\n super.ngAfterContentInit();\r\n\r\n if (this._options) {\r\n this._keyManager = new ListKeyManager(this._options);\r\n this._keyManager\r\n .withVerticalOrientation()\r\n .withHomeAndEnd()\r\n .withPageUpDown()\r\n .withWrap()\r\n .withTypeAhead()\r\n .skipPredicate(item => item.disabled);\r\n }\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this._keyManager?.destroy();\r\n }\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {FocusKeyManager} from '@angular/cdk/a11y';\r\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\r\nimport {SelectionModel} from '@angular/cdk/collections';\r\nimport {hasModifierKey} from '@angular/cdk/keycodes';\r\nimport {_getFocusedElementPierceShadowDom} from '@angular/cdk/platform';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n inject,\r\n Input, isDevMode,\r\n NgZone,\r\n Output,\r\n QueryList, signal,\r\n SimpleChanges,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {Subject} from 'rxjs';\r\nimport {takeUntil} from 'rxjs/operators';\r\nimport {CuteListBase} from './list-base.directive';\r\nimport {CuteListOption, SELECTION_LIST, SelectionList} from './list-option.component';\r\n\r\nexport const CUTE_SELECTION_LIST_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CuteSelectionList),\r\n multi: true,\r\n};\r\n\r\n/** Change event that is being fired whenever the selected state of an option changes. */\r\nexport class CuteSelectionListChange {\r\n constructor(\r\n /** Reference to the selection list that emitted the event. */\r\n public source: CuteSelectionList,\r\n /** Reference to the options that have been changed. */\r\n public options: CuteListOption[],\r\n ) {}\r\n}\r\n\r\n@Component({\r\n selector: 'cute-selection-list',\r\n template: '<ng-content></ng-content>',\r\n styleUrls: ['./list.scss'],\r\n exportAs: 'cuteSelectionList',\r\n host: {\r\n 'class': 'cute-selection-list',\r\n '[class.gap-2]': '!multiple && hideSingleSelectionIndicator',\r\n 'role': 'listbox',\r\n '[attr.aria-multiselectable]': 'multiple',\r\n '(keydown)': '_handleKeydown($event)',\r\n },\r\n providers: [\r\n CUTE_SELECTION_LIST_VALUE_ACCESSOR,\r\n {provide: CuteListBase, useExisting: CuteSelectionList},\r\n {provide: SELECTION_LIST, useExisting: CuteSelectionList},\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n})\r\nexport class CuteSelectionList extends CuteListBase\r\n implements SelectionList, ControlValueAccessor\r\n{\r\n _element = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private _ngZone = inject(NgZone);\r\n\r\n private _initialized = false;\r\n private _keyManager: FocusKeyManager<CuteListOption> | undefined;\r\n private _listenerCleanups: (() => void)[] | undefined;\r\n\r\n /** Subject that emits when the component has been destroyed. */\r\n protected readonly _destroyed = new Subject<void>();\r\n\r\n /** Whether the list has been destroyed. */\r\n private _isDestroyed: boolean = false;\r\n\r\n /** View to model callback that should be called whenever the selected options change. */\r\n private _onChange: (value: any) => void = (_: any) => {};\r\n\r\n @ContentChildren(CuteListOption, {descendants: true}) _items: QueryList<CuteListOption> | undefined;\r\n\r\n /** Emits a change event whenever the selected state of an option changes. */\r\n @Output() readonly selectionChange = new EventEmitter<CuteSelectionListChange>();\r\n\r\n /**\r\n * Function used for comparing an option against the selected value when determining which\r\n * options should appear as selected. The first argument is the value of an options. The second\r\n * one is a value from the selected value. A boolean must be returned.\r\n */\r\n @Input() compareWith: (o1: any, o2: any) => boolean = (a1, a2) => a1 === a2;\r\n\r\n /** Whether selection is limited to one or multiple items (default multiple). */\r\n @Input()\r\n get multiple(): boolean { return this._multiple; }\r\n set multiple(value: BooleanInput) {\r\n const newValue = coerceBooleanProperty(value);\r\n\r\n if (newValue !== this._multiple) {\r\n if (isDevMode() && this._initialized) {\r\n throw new Error(\r\n 'Cannot change `multiple` mode of cute-selection-list after initialization.',\r\n );\r\n }\r\n\r\n this._multiple = newValue;\r\n this.selectedOptions = new SelectionModel(this._multiple, this.selectedOptions.selected);\r\n }\r\n }\r\n private _multiple = true;\r\n\r\n /** Whether radio indicator for all list items is hidden. */\r\n @Input()\r\n get hideSingleSelectionIndicator(): boolean { return this._hideSingleSelectionIndicator; }\r\n set hideSingleSelectionIndicator(value: BooleanInput) {\r\n this._hideSingleSelectionIndicator = coerceBooleanProperty(value);\r\n }\r\n private _hideSingleSelectionIndicator: boolean =\r\n this._defaultOptions?.hideSingleSelectionIndicator ?? false;\r\n\r\n /** The currently selected options. */\r\n selectedOptions = new SelectionModel<CuteListOption>(this._multiple);\r\n\r\n /** Keeps track of the currently selected value. */\r\n _value: string[] | null = null;\r\n\r\n /** View to model callback that should be called if the list or its options lost focus. */\r\n _onTouched: () => void = () => {};\r\n\r\n constructor(...args: unknown[]);\r\n constructor() {\r\n super();\r\n this._isNonInteractive = false;\r\n //this.color = \"primary\";\r\n }\r\n\r\n override ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n // Mark the selection list as initialized so that the `multiple`\r\n // binding can no longer be changed.\r\n this._initialized = true;\r\n this._setupRovingTabindex();\r\n\r\n // These events are bound outside the zone, because they don't change\r\n // any change-detected properties, and they can trigger timeouts.\r\n this._ngZone.runOutsideAngular(() => {\r\n this._listenerCleanups = [\r\n this._renderer.listen(this._element.nativeElement, 'focusin', this._handleFocusin),\r\n this._renderer.listen(this._element.nativeElement, 'focusout', this._handleFocusout),\r\n ];\r\n });\r\n\r\n if (this._value) {\r\n this._setOptionsFromValues(this._value);\r\n }\r\n\r\n this._watchForSelectionChange();\r\n }\r\n\r\n override ngOnChanges(changes: SimpleChanges) {\r\n super.ngOnChanges(changes);\r\n const disabledChanges = changes['disabled'];\r\n const disableRippleChanges = changes['disableRipple'];\r\n const hideSingleSelectionIndicatorChanges = changes['hideSingleSelectionIndicator'];\r\n\r\n if (\r\n (disableRippleChanges && !disableRippleChanges.firstChange) ||\r\n (disabledChanges && !disabledChanges.firstChange) ||\r\n (hideSingleSelectionIndicatorChanges && !hideSingleSelectionIndicatorChanges.firstChange)\r\n ) {\r\n this._markOptionsForCheck();\r\n }\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this._keyManager?.destroy();\r\n this._listenerCleanups?.forEach(current => current());\r\n this._destroyed.next();\r\n this._destroyed.complete();\r\n this._isDestroyed = true;\r\n }\r\n\r\n /** Selects all the options. Returns the options that changed as a result. */\r\n selectAll(): CuteListOption[] {\r\n return this._setAllOptionsSelected(true);\r\n }\r\n\r\n /** Deselects all the options. Returns the options that changed as a result. */\r\n deselectAll(): CuteListOption[] {\r\n return this._setAllOptionsSelected(false);\r\n }\r\n\r\n /** Reports a value change to the ControlValueAccessor */\r\n _reportValueChange() {\r\n // Stop reporting value changes after the list has been destroyed. This avoids\r\n // cases where the list might wrongly reset its value once it is removed, but\r\n // the form of control is still live.\r\n if (this.options && !this._isDestroyed) {\r\n const value = this._getSelectedOptionValues();\r\n this._onChange(value);\r\n this._value = value;\r\n }\r\n }\r\n\r\n /** Emits a change event if the selected state of an option changed. */\r\n _emitChangeEvent(options: CuteListOption[]) {\r\n this.selectionChange.emit(new CuteSelectionListChange(this, options));\r\n }\r\n\r\n /** Implemented as part of ControlValueAccessor. */\r\n writeValue(values: string[]): void {\r\n this._value = values;\r\n\r\n if (this.options) {\r\n this._setOptionsFromValues(values || []);\r\n }\r\n }\r\n\r\n /**\r\n * Whether the *entire* selection list is disabled. When true, each list item is also disabled,\r\n * and each list item is removed from the tab order (has tabindex=\"-1\").\r\n */\r\n override getDisabledState(): boolean { return this._selectionListDisabled(); }\r\n /** Implemented as a part of ControlValueAccessor. */\r\n override setDisabledState(value: boolean|BooleanInput): boolean {\r\n // Update the disabled state of this list. Write to `this._selectionListDisabled` instead of\r\n // `super.disabled`. That is to avoid closure compiler compatibility issues with assigning to\r\n // a super property.\r\n this._selectionListDisabled.set( coerceBooleanProperty(value) );\r\n if (this._selectionListDisabled()) {\r\n this._keyManager?.setActiveItem(-1);\r\n }\r\n return true;\r\n }\r\n private _selectionListDisabled = signal(false);\r\n\r\n /** Implemented as part of ControlValueAccessor. */\r\n registerOnChange(fn: (value: any) => void): void {\r\n this._onChange = fn;\r\n }\r\n\r\n /** Implemented as part of ControlValueAccessor. */\r\n registerOnTouched(fn: () => void): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n /** Watches for changes in the selected state of the options and updates the list accordingly. */\r\n private _watchForSelectionChange() {\r\n this.selectedOptions.changed.pipe(takeUntil(this._destroyed)).subscribe(event => {\r\n // Sync external changes to the model back to the options.\r\n for (let item of event.added) {\r\n item.selected = true;\r\n }\r\n\r\n for (let item of event.removed) {\r\n item.selected = false;\r\n }\r\n\r\n if (!this._containsFocus()) {\r\n this._resetActiveOption();\r\n }\r\n });\r\n }\r\n\r\n /** Sets the selected options based on the specified values. */\r\n private _setOptionsFromValues(values: string[]) {\r\n this.options?.forEach(option => option._setSelected(false));\r\n\r\n values.forEach(value => {\r\n const correspondingOption = this.options?.find(option => {\r\n // Skip options that are already in the model. This allows us to handle cases\r\n // where the same primitive value is selected multiple times.\r\n return option.selected ? false : this.compareWith(option.value, value);\r\n });\r\n\r\n if (correspondingOption) {\r\n correspondingOption._setSelected(true);\r\n }\r\n });\r\n }\r\n\r\n /** Returns the values of the selected options. */\r\n private _getSelectedOptionValues(): string[] {\r\n return this.options?.filter(option => option.selected).map(option => option.value) ?? [];\r\n }\r\n\r\n /** Marks all the options to be checked in the next change detection run. */\r\n private _markOptionsForCheck() {\r\n if (this.options) {\r\n this.options.forEach(option => option.markForCheck());\r\n }\r\n }\r\n\r\n /**\r\n * Sets the selected state on all the options\r\n * and emits an event if anything changed.\r\n */\r\n private _setAllOptionsSelected(isSelected: boolean, skipDisabled?: boolean): CuteListOption[] {\r\n // Keep track of whether anything changed, because we only want to\r\n // emit the changed event when something actually changed.\r\n const changedOptions: CuteListOption[] = [];\r\n\r\n this.options?.forEach(option => {\r\n if ((!skipDisabled || !option.disabled) && option._setSelected(isSelected)) {\r\n changedOptions.push(option);\r\n }\r\n });\r\n\r\n if (changedOptions.length) {\r\n this._reportValueChange();\r\n }\r\n\r\n return changedOptions;\r\n }\r\n\r\n // Note: This getter exists for backwards compatibility. The `_items` query list\r\n // cannot be named `options` as it will be picked up by the interactive list base.\r\n /** The option components contained within this selection-list. */\r\n get options(): QueryList<CuteListOption> | undefined {\r\n return this._items;\r\n }\r\n\r\n /** Handles keydown events within the list. */\r\n protected _handleKeydown(event: KeyboardEvent) {\r\n const activeItem = this._keyManager?.activeItem;\r\n\r\n if (\r\n (event.code === \"Enter\" || event.code === \"Space\") &&\r\n !this._keyManager?.isTyping() &&\r\n activeItem &&\r\n !activeItem.disabled\r\n ) {\r\n event.preventDefault();\r\n activeItem._toggleOnInteraction();\r\n } else if (\r\n event.code === \"KeyA\" &&\r\n this.multiple &&\r\n !this._keyManager?.isTyping() &&\r\n hasModifierKey(event, 'ctrlKey')\r\n ) {\r\n const shouldSelect = this.options?.some(option => !option.disabled && !option.selected) || false;\r\n event.preventDefault();\r\n this._emitChangeEvent(this._setAllOptionsSelected(shouldSelect, true));\r\n } else {\r\n this._keyManager?.onKeydown(event);\r\n }\r\n }\r\n\r\n /** Handles focusout events within the list. */\r\n private _handleFocusout = () => {\r\n // Focus takes a while to update, so we have to wrap our call in a timeout.\r\n setTimeout(() => {\r\n if (!this._containsFocus()) {\r\n this._resetActiveOption();\r\n }\r\n });\r\n };\r\n\r\n /** Handles focusin events within the list. */\r\n private _handleFocusin = (event: FocusEvent) => {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n const activeIndex = this._items?.toArray()\r\n .findIndex(item => item.contains(event.target as HTMLElement)) ?? -1;\r\n\r\n if (activeIndex > -1) {\r\n this._setActiveOption(activeIndex);\r\n } else {\r\n this._resetActiveOption();\r\n }\r\n };\r\n\r\n /**\r\n * Sets up the logic for maintaining the roving tabindex.\r\n *\r\n * `skipPredicate` determines if key manager should avoid putting a given list item in the tab\r\n * index. Allow disabled list items to receive focus to align with WAI ARIA recommendation.\r\n * Normally WAI ARIA's instructions are to exclude disabled items from the tab order, but it\r\n * makes a few exceptions for compound widgets.\r\n *\r\n * From [Developing a Keyboard Interface](\r\n * https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/):\r\n * \"For the following composite widget elements, keep them focusable when disabled: Options in a\r\n * Listbox...\"\r\n */\r\n private _setupRovingTabindex() {\r\n if (this._items) {\r\n this._keyManager = new FocusKeyManager<CuteListOption>(this._items as any)\r\n .withHomeAndEnd()\r\n .withTypeAhead()\r\n .withWrap()\r\n .skipPredicate((item) => item.disabled || this.disabled);\r\n\r\n // Set the initial focus.\r\n this._resetActiveOption();\r\n\r\n // Move the tabindex to the currently focused list item.\r\n this._keyManager.change.subscribe(activeItemIndex => this._setActiveOption(activeItemIndex));\r\n\r\n // If the active item is removed from the list, reset back to the first one.\r\n this._items.changes.pipe(takeUntil(this._destroyed)).subscribe(() => {\r\n const activeItem = this._keyManager!.activeItem;\r\n\r\n if (!activeItem || !this._items?.toArray().indexOf(activeItem)) {\r\n this._resetActiveOption();\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Sets an option as active.\r\n * @param index Index of the active option. If set to -1, no option will be active.\r\n */\r\n private _setActiveOption(index: number) {\r\n this._items?.forEach((item, itemIndex) => item._setTabindex(itemIndex === index ? 0 : -1));\r\n this._keyManager?.updateActiveItem(index);\r\n }\r\n\r\n /**\r\n * Resets the active option. When the list is disabled, remove all options from to the tab order.\r\n * Otherwise, focus on the first selected option.\r\n */\r\n private _resetActiveOption() {\r\n if (this.disabled) {\r\n this._setActiveOption(-1);\r\n return;\r\n }\r\n\r\n if (!this._items) {\r\n return;\r\n }\r\n\r\n const activeItem =\r\n this._items.find(item => item.selected && !item.disabled) || this._items.first;\r\n this._setActiveOption(activeItem ? this._items.toArray().indexOf(activeItem) : -1);\r\n }\r\n\r\n /** Returns whether the focus is currently within the list. */\r\n private _containsFocus() {\r\n const activeElement = _getFocusedElementPierceShadowDom();\r\n return activeElement && this._element.nativeElement.contains(activeElement);\r\n }\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {Directive} from '@angular/core';\r\n\r\n/**\r\n * Directive whose purpose is to add the `cute-` CSS styling to this selector.\r\n */\r\n@Directive({\r\n selector: '[cute-subheader], [cuteSubheader]',\r\n // TODO(mmalerba): MDC's subheader font looks identical to the list item font, figure out why and\r\n // make a change in one of the repos to visually distinguish.\r\n host: {'class': 'cute-subheader cute-list-group__subheader'},\r\n standalone: true,\r\n})\r\nexport class CuteListSubheaderCssStyler {}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {NgModule, Type} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {CuteList} from \"./list\";\r\nimport {CuteListItem} from \"./list-item.component\";\r\nimport {\r\n CuteListItemLine,\r\n CuteListItemTitle,\r\n CuteListItemMeta,\r\n CuteListItemAvatar,\r\n CuteListItemIcon\r\n} from \"./list-item-sections\";\r\nimport {CuteListOption} from \"./list-option.component\";\r\nimport {CuteSelectionList} from \"./selection-list.component\";\r\nimport {CuteActionList} from \"./action-list.component\";\r\nimport {CuteNavList} from \"./nav-list.directive\";\r\nimport {CuteListSubheaderCssStyler} from \"./subheader.directive\";\r\nimport {CuteListBox} from \"./listbox/listbox.component\";\r\nimport {CuteListBoxOption} from \"./listbox/listbox-option.component\";\r\n\r\nconst TYPES: (any | Type<any>)[] = [\r\n CuteActionList,\r\n CuteList,\r\n CuteListItem,\r\n CuteListItemLine,\r\n CuteListItemTitle,\r\n CuteListItemMeta,\r\n CuteListItemAvatar,\r\n CuteListItemIcon,\r\n CuteListOption,\r\n CuteListSubheaderCssStyler,\r\n CuteListBox,\r\n CuteListBoxOption,\r\n CuteNavList,\r\n CuteSelectionList,\r\n];\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [ CommonModule, ...TYPES ],\r\n exports: [ ...TYPES]\r\n})\r\nexport class CuteListModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.CuteListBox","i1"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;AAUG;AAWH;MACa,gBAAgB,GAAG,IAAI,cAAc,CAAiB,kBAAkB;AAErF,IAAI,MAAM,GAAW,CAAC,CAAC;AAYjB,MAAgB,YAAa,SAAQ,oBAAoB,CAAA;AAV/D,IAAA,WAAA,GAAA;;QAYY,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,gBAAgB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;;QAGtE,IAAA,CAAA,iBAAiB,GAAY,IAAI;;QAMxB,IAAA,CAAA,QAAQ,GAAY,KAAK;AAElC;;;AAGG;QACM,IAAA,CAAA,UAAU,GAAY,KAAK;AA6BrC,IAAA;AAzBC;;;AAGG;AACH,IAAA,IACI,YAAY,GAAA;QACd,IAAI,SAAS,GAAG,EAAE;QAClB,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACzC,MAAM,eAAe,GAAG,uBAAuB;AAC/C,YAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;gBAC7B,SAAS,CAAC,IAAI,CAAE,eAAe,GAAC,GAAG,GAAC,IAAI,CAAC,oBAAoB,CAAE;YACjE;iBAAO;AACL,gBAAA,SAAS,CAAC,IAAI,CAAE,eAAe,CAAE;YACnC;QACF;AACA,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,SAAS,CAAC,IAAI,CAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAE;QAChD;AACA,QAAA,OAAO,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS;IACpD;IAEmB,UAAU,GAAA;AAC3B,QAAA,OAAO,CAAA,UAAA,EAAa,EAAE,MAAM,CAAA,CAAE;IAChC;+GA5CoB,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,EAAA,cAAA,EAAA,2BAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAVjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,2BAA2B;AACpC,wBAAA,0BAA0B,EAAE,gBAAgB;AAC5C,wBAAA,6BAA6B,EAAE,UAAU;AACzC,wBAAA,+BAA+B,EAAE,oBAAoB;AACrD,wBAAA,sBAAsB,EAAE,UAAU;AAClC,wBAAA,UAAU,EAAE,IAAI;AACjB;AACJ,iBAAA;;sBASE;;sBAGA;;sBAMA;;sBAEA;;sBAMA,WAAW;uBAAC,OAAO;;;AC7DtB;;;;;;;;;;AAUG;AAmBG,MAAO,cAAe,SAAQ,YAAY,CAAA;AAdhD,IAAA,WAAA,GAAA;;;;;;;QAoBW,IAAA,CAAA,iBAAiB,GAAG,KAAK;AACnC,IAAA;+GAPY,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,SAAA,EAHd,CAAC,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAC,CAAC,+EARvD,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6gCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAW1B,cAAc,EAAA,UAAA,EAAA,CAAA;kBAd1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,QAAA,EAClB,gBAAgB,EAAA,QAAA,EAChB,2BAA2B,EAAA,IAAA,EAC/B;AACJ,wBAAA,OAAO,EAAE,kBAAkB;AAC3B,wBAAA,MAAM,EAAE,OAAO;AAChB,qBAAA,EAAA,aAAA,EAEc,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,gBAAgB,EAAC,CAAC,cACrD,IAAI,EAAA,MAAA,EAAA,CAAA,6gCAAA,CAAA,EAAA;;;AC3BlB;;;;;;;;;;AAUG;AAIH;;;;AAIG;MACU,SAAS,GAAG,IAAI,cAAc,CAAW,UAAU;AAEhE;;AAEG;AAcG,MAAO,QAAS,SAAQ,YAAY,CAAA;AAExC,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;IACT;+GAJW,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAR,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EAHR,CAAC,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAC,CAAC,yEAPjD,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6gCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAU1B,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAbpB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,QAAA,EACX,UAAU,EAAA,QAAA,EACV,2BAA2B,EAAA,IAAA,EAC/B;AACJ,wBAAA,OAAO,EAAE,WAAW;AACrB,qBAAA,EAAA,aAAA,EAEc,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,UAAU,EAAC,CAAC,cAC/C,IAAI,EAAA,MAAA,EAAA,CAAA,6gCAAA,CAAA,EAAA;;;ACnClB;;;;;;;;;;AAUG;AAkBH;;;;;AAKG;AACI,MAAM,WAAW,GAAG,IAAI,cAAc,CAAa,YAAY,CAAC;;AClCvE;;;;;;;;;;AAUG;AAIH;;;;;AAKG;MAMU,iBAAiB,CAAA;AAC5B,IAAA,WAAA,CAAmB,WAAoC,EAAA;QAApC,IAAA,CAAA,WAAW,GAAX,WAAW;IAA4B;+GAD/C,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,IAAI,EAAE,EAAC,OAAO,EAAE,sBAAsB,EAAC;AACvC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;AAKD;;;;;AAKG;MAMU,gBAAgB,CAAA;AAC3B,IAAA,WAAA,CAAmB,WAAoC,EAAA;QAApC,IAAA,CAAA,WAAW,GAAX,WAAW;IAA4B;+GAD/C,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,IAAI,EAAE,EAAC,OAAO,EAAE,qBAAqB,EAAC;AACtC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;AAKD;;;;;AAKG;MAMU,gBAAgB,CAAA;+GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,IAAI,EAAE,EAAC,OAAO,EAAE,qBAAqB,EAAC;AACtC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;AAGD;;;;;AAKG;MAOmB,wBAAwB,CAAA;AAN9C,IAAA,WAAA,GAAA;QAOS,IAAA,CAAA,WAAW,GAAG,MAAM,CAAa,WAAW,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;AAOvE,IAAA;IALC,iBAAiB,GAAA;;;AAGf,QAAA,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,kBAAkB,EAAE,KAAK,OAAO;IAChF;+GAPoB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,6BAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAN7C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,IAAI,EAAE;AACF,wBAAA,+BAA+B,EAAE,qBAAqB;AACtD,wBAAA,6BAA6B,EAAE,sBAAsB;AACxD;AACJ,iBAAA;;AAWD;;;;AAIG;AAMG,MAAO,kBAAmB,SAAQ,wBAAwB,CAAA;+GAAnD,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,IAAI,EAAE,EAAC,OAAO,EAAE,uBAAuB,EAAC;AACxC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;AAGD;;;;AAIG;AAMG,MAAO,gBAAiB,SAAQ,wBAAwB,CAAA;+GAAjD,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,IAAI,EAAE,EAAC,OAAO,EAAE,qBAAqB,EAAC;AACtC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACpGD;;;;;;;;;;AAUG;AAKH;;;;AAIG;MACU,aAAa,GAAG,IAAI,cAAc,CAAc,aAAa;AAmBpE,MAAO,WAAY,SAAQ,YAAY,CAAA;AAjB7C,IAAA,WAAA,GAAA;;;;;;;QAuBW,IAAA,CAAA,iBAAiB,GAAG,KAAK;AACnC,IAAA;+GAPY,WAAW,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,YAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,SAAA,EANX;AACT,YAAA,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAC;AACjD,YAAA,EAAC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAC;AACnD,SAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAXS,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6gCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAc1B,WAAW,EAAA,UAAA,EAAA,CAAA;kBAjBvB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,QAAA,EACf,aAAa,EAAA,QAAA,EACb,2BAA2B,EAAA,IAAA,EAC/B;AACJ,wBAAA,OAAO,EAAE,mBAAmB;AAC5B,wBAAA,MAAM,EAAE,YAAY;AACrB,qBAAA,EAAA,aAAA,EAEc,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACT,wBAAA,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,aAAa,EAAC;AACjD,wBAAA,EAAC,OAAO,EAAE,aAAa,EAAE,WAAW,aAAa,EAAC;AACnD,qBAAA,EAAA,UAAA,EACW,IAAI,EAAA,MAAA,EAAA,CAAA,6gCAAA,CAAA,EAAA;;;ACrClB;;;;;;;;;;AAUG;AA8BG,MAAgB,gBAAiB,SAAQ,oBAAoB,CAAA;AAuCjE;;;;;;;;;AASG;IACH,IACI,KAAK,CAAC,KAA6B,EAAA;QACrC,IAAI,CAAC,cAAc,GAAG,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC;AACvD,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IAC9B;AAIA,IAAA,WAAA,GAAA;AAEE,QAAA,KAAK,EAAE;AAzDD,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC5B,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;AAChD,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;QACxB,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,aAAa,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;QAElD,IAAA,CAAA,kBAAkB,GAAY,KAAK;QAEnC,IAAA,CAAA,YAAY,GAAG,YAAY;;QAuBrC,IAAA,CAAA,uBAAuB,GAAY,KAAK;AAEhC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;QAoB3C,IAAA,CAAA,cAAc,GAAkB,IAAI;AAOlC,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,qBAAqB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;AAErE,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc;AACvC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ;AAC7E,QAAA,IAAI,CAAC,eAAe,GAAG,aAAa,KAAK,gBAAgB;QAEzD,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE;YACvD,IAAI,CAAC,wBAAwB,EAAE;QACjC;;;;;;;IAQF;IAEQ,wBAAwB,GAAA;AAC9B,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;QAC9B,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,4BAA4B,CAAC;;;;;;;;IAQ/D;AAEA;;;AAGG;IACK,8BAA8B,GAAA;AACpC,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAK;AAClC,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,KAAK,CAAC,IAAI,CAAC,MAAO,CAAC,OAAO,EAAE,IAAI,CAAC,OAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,MAC3D,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAC7B,CACF;AACH,QAAA,CAAC,CAAC;IACJ;AAEA;;;;;;;;;;AAUG;AACH,IAAA,gBAAgB,CAAC,sBAA+B,EAAA;;;AAG9C,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC3D;QACF;;;;QAKA,IAAI,sBAAsB,EAAE;YAC1B,IAAI,CAAC,+BAA+B,EAAE;QACxC;;;QAIA,IAAI,SAAS,EAAE,EAAE;YACf,0BAA0B,CAAC,IAAI,CAAC;QAClC;QAEA,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC1E,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa;;AAG7D,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,4BAA4B,EAAE,aAAa,IAAI,CAAC,CAAC;AACpF,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,+BAA+B,EAAE,aAAa,IAAI,CAAC,CAAC;AACvF,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,gCAAgC,EAAE,aAAa,KAAK,CAAC,CAAC;AACzF,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,kCAAkC,EAAE,aAAa,KAAK,CAAC,CAAC;;;AAI3F,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAChC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,KAAK,CAAC;YACrE,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,8BAA8B,EAAE,YAAY,CAAC;YAChF,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,gCAAgC,EAAE,CAAC,YAAY,CAAC;QACrF;aAAO;AACL,YAAA,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,8BAA8B,CAAC;AAClE,YAAA,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,gCAAgC,CAAC;QACtE;IACF;AAEA;;;;;;;AAOG;IACK,sBAAsB,GAAA;AAC5B,QAAA,IAAI,UAAU,GAAG,IAAI,CAAC,OAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAO,CAAC,MAAM;AAC3D,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;YAChC,UAAU,IAAI,CAAC;QACjB;AACA,QAAA,OAAO,UAAU;IACnB;;IAGQ,+BAA+B,GAAA;AACrC,QAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC,IAAI,CACvC,IAAI,CAAC,gBAAiB,CAAC,aAAa,CAAC,UAAU;AAE9C,aAAA,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY;aAClD,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IAClE;;IAGA,gBAAgB,GAAA;AACd,QAAA,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;IACzD;IAEmB,UAAU,GAAA;AAC3B,QAAA,OAAO,EAAE;IACX;AAEA;;;AAGG;IACO,YAAY,GAAA;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,EAAE;AACtD,QAAA,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,QAAQ;IACxC;AAEU,IAAA,OAAO,CAAC,KAAiB,EAAA;AACjC,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,MAAqB;AACxC,QAAA,IAAI,IAAI,YAAY,iBAAiB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YAC/E,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;AACvB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACpE,IAAI,MAAM,EAAE;AACV,gBAAA,MAAM,CAAC,cAAc,CAAC,EAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAC,CAAC;YAC/D;QACF;IACF;IAES,eAAe,GAAA;QACtB,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,8BAA8B,EAAE;AACrC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;IAC7B;IAES,WAAW,GAAA;QAClB,KAAK,CAAC,WAAW,EAAE;AACnB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;IACnC;+GA7NoB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,0DAAA,EAAA,8BAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,eAAA,EAAA,wCAAA,EAAA,EAAA,cAAA,EAAA,qCAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAoCnB,kBAAkB,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAClB,gBAAgB,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FArCb,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAbrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,qCAAqC;AAC9C,wBAAA,SAAS,EAAE,sDAAsD;;AAEjE,wBAAA,gCAAgC,EAAE,oBAAoB;AACtD,wBAAA,kBAAkB,EAAE,UAAU;AAC9B,wBAAA,sBAAsB,EAAE,UAAU;AAClC,wBAAA,iBAAiB,EAAE,wCAAwC;;AAE3D,wBAAA,SAAS,EAAE,iBAAiB;AAC7B;AACJ,iBAAA;;sBAqCE,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAC,WAAW,EAAE,KAAK,EAAC;;sBACxD,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAC,WAAW,EAAE,KAAK,EAAC;;sBAYtD;;AAgLH;;;;;;AAMG;AACH,SAAS,0BAA0B,CAAC,IAAsB,EAAA;AACxD,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAQ,CAAC,MAAM;AACtC,IAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAO,CAAC,MAAM;AAEpC,IAAA,IAAI,SAAS,GAAG,CAAC,EAAE;AACjB,QAAA,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC;IAC1D;IACA,IAAI,SAAS,KAAK,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE;AACnC,QAAA,OAAO,CAAC,IAAI,CAAC,kEAAkE,CAAC;IAClF;IACA,IACE,SAAS,KAAK,CAAC;AACf,QAAA,IAAI,CAAC,uBAAuB;QAC5B,IAAI,CAAC,cAAc,KAAK,IAAI;AAC5B,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,EACvB;AACA,QAAA,OAAO,CAAC,IAAI,CAAC,2DAA2D,CAAC;IAC3E;AACA,IAAA,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,uBAAuB,CAAC,EAAE;AACpE,QAAA,OAAO,CAAC,IAAI,CAAC,8CAA8C,CAAC;IAC9D;AACF;;ACrSA;;;;;;;;;;AAUG;AA6BG,MAAO,YAAa,SAAQ,gBAAgB,CAAA;AAdlD,IAAA,WAAA,GAAA;;QA4BU,IAAA,CAAA,UAAU,GAAY,KAAK;AAcpC,IAAA;;IAnBC,IACI,SAAS,KAAc,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC;IACnD,IAAI,SAAS,CAAC,SAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,qBAAqB,CAAC,SAAS,CAAC;IACpD;AAGA;;;AAGG;IACO,eAAe,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,KAAK,GAAG,IAAI,IAAI,CAAC,UAAU,GAAG,MAAM,GAAG,IAAI;IAC9E;+GAtBW,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2DAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAEN,gBAAgB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAChB,iBAAiB,2DACjB,gBAAgB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,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,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3CnC,8wBAoBA,EAAA,MAAA,EAAA,CAAA,i5CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDiBc,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAElB,YAAY,EAAA,UAAA,EAAA,CAAA;kBAdxB,SAAS;+BACI,CAAA,yDAAA,CAA2D,EAAA,QAAA,EAG3D,cAAc,EAAA,IAAA,EAClB;AACJ,wBAAA,OAAO,EAAE,gBAAgB;AACzB,wBAAA,gBAAgB,EAAE,WAAW;AAC7B,wBAAA,qBAAqB,EAAE,mBAAmB;qBAC3C,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,iBAAiB,CAAC,EAAA,QAAA,EAAA,8wBAAA,EAAA,MAAA,EAAA,CAAA,i5CAAA,CAAA,EAAA;;sBAI7B,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC;;sBACrD,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC;;sBACtD,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC;;sBACrD,SAAS;uBAAC,iBAAiB;;sBAC3B,SAAS;uBAAC,MAAM;;sBAGhB;;;AEhDH;;;;;;;;;;AAUG;AA0BH;;;AAGG;MACU,cAAc,GAAG,IAAI,cAAc,CAAgB,eAAe;AA8CzE,MAAO,cAAe,SAAQ,gBAAgB,CAAA;AA7BpD,IAAA,WAAA,GAAA;;AA+BY,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAgB,cAAc,CAAC;AAMhE;;;AAGG;AAEM,QAAA,IAAA,CAAA,cAAc,GAA0B,IAAI,YAAY,EAAW;;QAGnE,IAAA,CAAA,cAAc,GAAiC,OAAO;QA2BvD,IAAA,CAAA,SAAS,GAAG,KAAK;;QAGhB,IAAA,CAAA,QAAQ,GAAiB,QAAQ;AAU1C;;;AAGG;QACK,IAAA,CAAA,kBAAkB,GAAG,KAAK;AAsInC,IAAA;;IA/KC,IACI,KAAK,KAAU,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,KAAK,CAAC,QAAa,EAAA;AACrB,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACvE,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;QACvB;AACA,QAAA,IAAI,CAAC,MAAM,GAAG,QAAQ;IACxB;;AAIA,IAAA,IACI,QAAQ,GAAA,EAAc,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACvF,IAAI,QAAQ,CAAC,KAAmB,EAAA;AAC9B,QAAA,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC;AAE/C,QAAA,IAAI,UAAU,KAAK,IAAI,CAAC,SAAS,EAAE;AACjC,YAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;YAE7B,IAAI,UAAU,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;AAC9C,gBAAA,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE;YAC1C;QACF;IACF;AAMA,IAAA,IAAc,aAAa,GAAA;AACzB,QAAA,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,4BAA4B;IAC1F;AAEA,IAAA,IAAc,uBAAuB,GAAA;AACnC,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa;IAC5C;IAQS,QAAQ,GAAA;QACf,KAAK,CAAC,QAAQ,EAAE;AAEhB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc;QAEhC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;AAClF,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;QACzB;AAEA,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS;;;;;;AAOlC,QAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;AAC1B,YAAA,IAAI,IAAI,CAAC,SAAS,IAAI,WAAW,EAAE;AACjC,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;gBACpB,IAAI,CAAC,YAAY,EAAE;YACrB;AACF,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;IAChC;IAES,WAAW,GAAA;QAClB,KAAK,CAAC,WAAW,EAAE;AAEnB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;;;AAGjB,YAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;AAC1B,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACvB,YAAA,CAAC,CAAC;QACJ;IACF;;IAGA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ;IAChC;;IAGS,QAAQ,GAAA;AACf,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,aAAa;;;QAGpE,MAAM,OAAO,GAAG,YAAY,IAAI,IAAI,CAAC,gBAAgB,EAAE,aAAa;AACpE,QAAA,OAAO,OAAO,EAAE,WAAW,IAAI,EAAE;IACnC;;AAGA,IAAA,cAAc,CAAC,QAAsC,EAAA;AACnD,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE,KAAK,QAAQ;IAC/E;;AAGA,IAAA,WAAW,CAAC,QAAsC,EAAA;AAChD,QAAA,QACE,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ;AAC7B,YAAA,IAAI,CAAC,kBAAkB,EAAE,KAAK,QAAQ;AACtC,YAAA,CAAC,IAAI,CAAC,cAAc,CAAC,4BAA4B;IAErD;;AAGA,IAAA,oBAAoB,CAAC,QAA4B,EAAA;AAC/C,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC;IACzF;;IAGA,aAAa,CAAC,IAAyB,EAAE,QAA4B,EAAA;;;AAGnE,QAAA,QACE,IAAI,CAAC,kBAAkB,EAAE,KAAK,QAAQ;aACrC,IAAI,KAAK,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC;IAElF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;IAClC;;IAGA,kBAAkB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,cAAc,IAAI,OAAO;IACvC;AAEA;;;;AAIG;AACH,IAAA,YAAY,CAAC,QAAiB,EAAA;AAC5B,QAAA,IAAI,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;AAC/B,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;QAEzB,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC;QAClD;aAAO;YACL,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC;QACpD;AAEA,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;QAClC,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,OAAO,IAAI;IACb;AAEA;;;AAGG;IACH,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;AAChC,gBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ;gBAC9B,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC;YAC9C;AAAO,iBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACzB,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;gBACpB,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC;YAC9C;QACF;IACF;;AAGA,IAAA,YAAY,CAAC,KAAa,EAAA;QACxB,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,GAAG,EAAE,CAAC;IAC3C;+GAjMW,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,MAAA,EAAA,eAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kCAAA,EAAA,eAAA,EAAA,gCAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,SAAA,EAXZ;AACP,YAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE;AAC1D,YAAA,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE;AACxD,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAYc,gBAAgB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAChB,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3FpC,86EA6DA,EAAA,MAAA,EAAA,CAAA,6xCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDmBQ,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,YAAY,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,eAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,eAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAGX,cAAc,EAAA,UAAA,EAAA,CAAA;kBA7B1B,SAAS;+BACI,kBAAkB,EAAA,QAAA,EAGlB,gBAAgB,EAAA,IAAA,EACpB;wBACJ,OAAO,EAAE,kBAAkB;AAC3B,wBAAA,oCAAoC,EAAE,eAAe;AACrD,wBAAA,kCAAkC,EAAE,yBAAyB;AAC7D,wBAAA,gBAAgB,EAAE,yBAAyB;AAC3C,wBAAA,sBAAsB,EAAE,UAAU;;AAElC,wBAAA,MAAM,EAAE,QAAQ;AAChB,wBAAA,QAAQ,EAAE,eAAe;AACzB,wBAAA,SAAS,EAAE,wBAAwB;AACpC,qBAAA,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACP,wBAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,gBAAgB,EAAE;AAC1D,wBAAA,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,gBAAgB,EAAE;qBACxD,EAAA,OAAA,EACQ;wBACL,iBAAiB;wBACjB,YAAY;wBACZ,eAAe;wBACf;AACH,qBAAA,EAAA,QAAA,EAAA,86EAAA,EAAA,MAAA,EAAA,CAAA,6xCAAA,CAAA,EAAA;;sBAMF,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC;;sBACrD,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC;;sBACtD,SAAS;uBAAC,iBAAiB;;sBAM3B;;sBAIA;;sBAGA;;sBAWA;;sBAgBA;;;AEpIH;;;;;;;AAOG;AAOH;;;;AAIG;AAgCG,MAAO,iBAAkB,SAAQ,YAAY,CAAA;;IAKjD,IACI,KAAK,GAAA,EAAS,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;AAC9C,IAAA,IAAI,KAAK,CAAC,CAAM,EAAA,EAAG,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;;AAG5C,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;IACpC;AAEA,IAAA,WAAA,CAAsB,OAAoB,EAAA;QACxC,KAAK,CAAC,OAAO,CAAC;QADM,IAAA,CAAA,OAAO,GAAP,OAAO;AAZnB,QAAA,IAAA,CAAA,SAAS,GAAmB,MAAM,CAAC,SAAS,CAAC;AAcrD,QAAA,IAAI,CAAC,IAAI,GAAG,QAAQ;IACtB;;IAGS,KAAK,GAAA;AACZ,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;IACxB;;IAGS,QAAQ,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;IAClC;;IAGA,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;IAClC;;IAGA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;IACzB;;IAGA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;IAC3B;;IAGA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;IACzB;+GA/CW,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,WAAA,EAAA,CAAA,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,0EAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,MAAA,EAAA,eAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,yBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,IAAA,EAAA,IAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClD9B,4zBAoBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDaY,gBAAgB,+BAAE,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAiBlC,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA/B7B,SAAS;+BACE,0EAA0E,EAAA,QAAA,EAE1E,mBAAmB,EAAA,IAAA,EACvB;AACJ,wBAAA,OAAO,EAAE,qBAAqB;AAC9B,wBAAA,gBAAgB,EAAE,UAAU;AAC5B,wBAAA,kBAAkB,EAAE,UAAU;AAC9B,wBAAA,sBAAsB,EAAE,UAAU;AAClC,wBAAA,sBAAsB,EAAE,UAAU;AAClC,wBAAA,qBAAqB,EAAE,mBAAmB;AAC1C,wBAAA,aAAa,EAAE,MAAM;AACrB,wBAAA,iBAAiB,EAAE,IAAI;AACxB,qBAAA,EAAA,OAAA,EACQ,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,EAAA,cAAA,EAC9B;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,SAAS;AACpB,4BAAA,MAAM,EAAE;gCACN,kBAAkB;gCAClB,yCAAyC;gCACzC,6BAA6B;gCAC7B,UAAU;gCACV,IAAI;AACL,6BAAA;AACD,4BAAA,OAAO,EAAE,EAAE;AACZ;AACF,qBAAA,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4zBAAA,EAAA;;sBAO9C;;;AEvDH;;;;;;;AAOG;AAeH;;;;AAIG;MACU,YAAY,GAAG,IAAI,cAAc,CAAc,aAAa;AAEzE;;;;;AAKG;AAkCG,MAAO,WAAY,SAAQ,YAAY,CAAA;AAQ3C,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AAPU,QAAA,IAAA,CAAA,UAAU,GAAoB,MAAM,CAAC,UAAU,CAAC;AAQjE,QAAA,IAAI,CAAC,IAAI,GAAG,SAAS;AACrB,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;IAChC;;AAGA,IAAA,QAAQ,CAAC,MAAiB,EAAA;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;IAClC;;AAGA,IAAA,aAAa,CAAC,KAAU,EAAA;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC;IACtC;;IAGS,KAAK,GAAA;AACZ,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;IACzB;;AAGA,IAAA,QAAQ,CAAC,MAAiB,EAAA;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;IACzC;;AAGA,IAAA,UAAU,CAAC,MAAiB,EAAA;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC;IAC3C;;AAGA,IAAA,eAAe,CAAC,KAAU,EAAA;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC;IAC/C;;AAGA,IAAA,MAAM,CAAC,MAAiB,EAAA;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;IAChC;;AAGA,IAAA,WAAW,CAAC,KAAU,EAAA;AACpB,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC;IACpC;;AAGA,IAAA,cAAc,CAAC,UAAmB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC;IAC5C;;AAGA,IAAA,MAAM,CAAC,MAAiB,EAAA;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;IAChC;;AAGA,IAAA,WAAW,CAAC,KAAU,EAAA;AACpB,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC;IACpC;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;IACtC;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;IACvC;AAEA,IAAA,UAAU,CAAC,GAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC;IACjC;AAES,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AACzC,QAAA,IAAI,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AAC1C,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,KAAK;IACd;AAEU,IAAA,cAAc,CAAC,KAAoB,EAAA;AAC3C,QAAA,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC;IACpC;IAES,kBAAkB,GAAA;QACzB,KAAK,CAAC,kBAAkB,EAAE;AAE1B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,WAAW,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;AACpD,YAAA,IAAI,CAAC;AACF,iBAAA,uBAAuB;AACvB,iBAAA,cAAc;AACd,iBAAA,cAAc;AACd,iBAAA,QAAQ;AACR,iBAAA,aAAa;iBACb,aAAa,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC;QACzC;IACF;IAES,WAAW,GAAA;QAClB,KAAK,CAAC,WAAW,EAAE;AACnB,QAAA,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE;IAC7B;+GA/GW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,WAAW,qQAJX,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAU/C,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,IAAA,EAAA,UAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,+BAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,kCAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,oCAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArCxB,2BAA2B,olCAS3B,gBAAgB,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAsBf,WAAW,EAAA,UAAA,EAAA,CAAA;kBAjCvB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,QAAA,EACd,2BAA2B,EAAA,QAAA,EAE3B,aAAa,EAAA,IAAA,EACjB;AACJ,wBAAA,6BAA6B,EAAE,qBAAqB;AACpD,wBAAA,yBAAyB,EAAE,wBAAwB;AACnD,wBAAA,aAAa,EAAE,MAAM;AACrB,wBAAA,WAAW,EAAE,wBAAwB;qBACtC,EAAA,OAAA,EACQ,CAAC,gBAAgB,CAAC,EAAA,cAAA,EACX;wBACd,EAAE,SAAS,EAAE,UAAU;AACrB,4BAAA,MAAM,EAAE;gCACN,IAAI;gCACJ,UAAU;gCACV,8BAA8B;gCAC9B,wBAAwB;gCACxB,8BAA8B;gCAC9B,oDAAoD;gCACpD,oCAAoC;gCACpC,0DAA0D;gCAC1D,oCAAoC;gCACpC;AACD,6BAAA;4BACD,OAAO,EAAE,CAAC,oCAAoC;AAC/C;AACF,qBAAA,EAAA,SAAA,EACU,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAA,WAAa,EAAE,CAAC,iBACjD,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,6gCAAA,CAAA,EAAA;;sBAQ9C,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC;;;AC1EzD;;;;;;;;;;AAUG;AA2BI,MAAM,kCAAkC,GAAQ;AACrD,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,IAAA,KAAK,EAAE,IAAI;;AAGb;MACa,uBAAuB,CAAA;AAClC,IAAA,WAAA;;IAES,MAAyB;;IAEzB,OAAyB,EAAA;QAFzB,IAAA,CAAA,MAAM,GAAN,MAAM;QAEN,IAAA,CAAA,OAAO,GAAP,OAAO;IACb;AACJ;AAuBK,MAAO,iBAAkB,SAAQ,YAAY,CAAA;;IAgCjD,IACI,QAAQ,KAAc,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;IACjD,IAAI,QAAQ,CAAC,KAAmB,EAAA;AAC9B,QAAA,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC;AAE7C,QAAA,IAAI,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE;AAC/B,YAAA,IAAI,SAAS,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE;AACpC,gBAAA,MAAM,IAAI,KAAK,CACb,4EAA4E,CAC7E;YACH;AAEA,YAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;AACzB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;QAC1F;IACF;;IAIA,IACI,4BAA4B,KAAc,OAAO,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACzF,IAAI,4BAA4B,CAAC,KAAmB,EAAA;AAClD,QAAA,IAAI,CAAC,6BAA6B,GAAG,qBAAqB,CAAC,KAAK,CAAC;IACnE;AAcA,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AAnET,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAA0B,UAAU,CAAC;AAC9C,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;QAExB,IAAA,CAAA,YAAY,GAAG,KAAK;;AAKT,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAQ;;QAG3C,IAAA,CAAA,YAAY,GAAY,KAAK;;AAG7B,QAAA,IAAA,CAAA,SAAS,GAAyB,CAAC,CAAM,KAAI,EAAE,CAAC;;AAKrC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAA2B;AAEhF;;;;AAIG;QACM,IAAA,CAAA,WAAW,GAAkC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;QAmBnE,IAAA,CAAA,SAAS,GAAG,IAAI;QAQhB,IAAA,CAAA,6BAA6B,GACnC,IAAI,CAAC,eAAe,EAAE,4BAA4B,IAAI,KAAK;;QAG7D,IAAA,CAAA,eAAe,GAAG,IAAI,cAAc,CAAiB,IAAI,CAAC,SAAS,CAAC;;QAGpE,IAAA,CAAA,MAAM,GAAoB,IAAI;;AAG9B,QAAA,IAAA,CAAA,UAAU,GAAe,MAAK,EAAE,CAAC;AA4GzB,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAC,KAAK,kEAAC;;QAmHtC,IAAA,CAAA,eAAe,GAAG,MAAK;;YAE7B,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;oBAC1B,IAAI,CAAC,kBAAkB,EAAE;gBAC3B;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC;;AAGO,QAAA,IAAA,CAAA,cAAc,GAAG,CAAC,KAAiB,KAAI;AAC7C,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB;YACF;AAEA,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO;AACT,iBAAA,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAqB,CAAC,CAAC,IAAI,CAAC,CAAC;AAElG,YAAA,IAAI,WAAW,GAAG,CAAC,CAAC,EAAE;AACpB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC;YACpC;iBAAO;gBACL,IAAI,CAAC,kBAAkB,EAAE;YAC3B;AACF,QAAA,CAAC;AAjPC,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;;IAEhC;IAES,eAAe,GAAA;QACtB,KAAK,CAAC,eAAe,EAAE;;;AAGvB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QACxB,IAAI,CAAC,oBAAoB,EAAE;;;AAI3B,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAK;YAClC,IAAI,CAAC,iBAAiB,GAAG;AACvB,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC;AAClF,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC;aACrF;AACH,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC;QACzC;QAEA,IAAI,CAAC,wBAAwB,EAAE;IACjC;AAES,IAAA,WAAW,CAAC,OAAsB,EAAA;AACzC,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;AAC1B,QAAA,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC;AAC3C,QAAA,MAAM,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC;AACrD,QAAA,MAAM,mCAAmC,GAAG,OAAO,CAAC,8BAA8B,CAAC;AAEnF,QAAA,IACE,CAAC,oBAAoB,IAAI,CAAC,oBAAoB,CAAC,WAAW;AAC1D,aAAC,eAAe,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;aAChD,mCAAmC,IAAI,CAAC,mCAAmC,CAAC,WAAW,CAAC,EACzF;YACA,IAAI,CAAC,oBAAoB,EAAE;QAC7B;IACF;IAES,WAAW,GAAA;QAClB,KAAK,CAAC,WAAW,EAAE;AACnB,QAAA,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE;AAC3B,QAAA,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC;AACrD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;IAC1B;;IAGA,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;IAC1C;;IAGA,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;IAC3C;;IAGA,kBAAkB,GAAA;;;;QAIhB,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,wBAAwB,EAAE;AAC7C,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACrB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;QACrB;IACF;;AAGA,IAAA,gBAAgB,CAAC,OAAyB,EAAA;AACxC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvE;;AAGA,IAAA,UAAU,CAAC,MAAgB,EAAA;AACzB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AAEpB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,IAAI,EAAE,CAAC;QAC1C;IACF;AAEA;;;AAGG;IACM,gBAAgB,GAAA,EAAc,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;;AAEpE,IAAA,gBAAgB,CAAC,KAA2B,EAAA;;;;QAInD,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAE,qBAAqB,CAAC,KAAK,CAAC,CAAE;AAC/D,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE;YACjC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;QACrC;AACA,QAAA,OAAO,IAAI;IACb;;AAIA,IAAA,gBAAgB,CAAC,EAAwB,EAAA;AACvC,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;;AAGA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;;IAGQ,wBAAwB,GAAA;AAC9B,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;;AAE9E,YAAA,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AAC5B,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;YACtB;AAEA,YAAA,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE;AAC9B,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;YACvB;AAEA,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;gBAC1B,IAAI,CAAC,kBAAkB,EAAE;YAC3B;AACF,QAAA,CAAC,CAAC;IACJ;;AAGQ,IAAA,qBAAqB,CAAC,MAAgB,EAAA;AAC5C,QAAA,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAE3D,QAAA,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;YACrB,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,IAAG;;;gBAGtD,OAAO,MAAM,CAAC,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;AACxE,YAAA,CAAC,CAAC;YAEF,IAAI,mBAAmB,EAAE;AACvB,gBAAA,mBAAmB,CAAC,YAAY,CAAC,IAAI,CAAC;YACxC;AACF,QAAA,CAAC,CAAC;IACJ;;IAGQ,wBAAwB,GAAA;QAC9B,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;IAC1F;;IAGQ,oBAAoB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACvD;IACF;AAEA;;;AAGG;IACK,sBAAsB,CAAC,UAAmB,EAAE,YAAsB,EAAA;;;QAGxE,MAAM,cAAc,GAAqB,EAAE;AAE3C,QAAA,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,IAAG;AAC7B,YAAA,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;AAC1E,gBAAA,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;YAC7B;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,cAAc,CAAC,MAAM,EAAE;YACzB,IAAI,CAAC,kBAAkB,EAAE;QAC3B;AAEA,QAAA,OAAO,cAAc;IACvB;;;;AAKA,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,MAAM;IACpB;;AAGU,IAAA,cAAc,CAAC,KAAoB,EAAA;AAC3C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,UAAU;AAE/C,QAAA,IACE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;AACjD,YAAA,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE;YAC7B,UAAU;AACV,YAAA,CAAC,UAAU,CAAC,QAAQ,EACpB;YACA,KAAK,CAAC,cAAc,EAAE;YACtB,UAAU,CAAC,oBAAoB,EAAE;QACnC;AAAO,aAAA,IACL,KAAK,CAAC,IAAI,KAAK,MAAM;AACrB,YAAA,IAAI,CAAC,QAAQ;AACb,YAAA,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE;AAC7B,YAAA,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,EAChC;YACA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK;YAChG,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACxE;aAAO;AACL,YAAA,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC;QACpC;IACF;AA4BA;;;;;;;;;;;;AAYG;IACK,oBAAoB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,WAAW,GAAG,IAAI,eAAe,CAAiB,IAAI,CAAC,MAAa;AACtE,iBAAA,cAAc;AACd,iBAAA,aAAa;AACb,iBAAA,QAAQ;AACR,iBAAA,aAAa,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;;YAG1D,IAAI,CAAC,kBAAkB,EAAE;;AAGzB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,IAAI,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;;AAG5F,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAClE,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAY,CAAC,UAAU;AAE/C,gBAAA,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;oBAC9D,IAAI,CAAC,kBAAkB,EAAE;gBAC3B;AACF,YAAA,CAAC,CAAC;QACJ;IACF;AAEA;;;AAGG;AACK,IAAA,gBAAgB,CAAC,KAAa,EAAA;AACpC,QAAA,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC,YAAY,CAAC,SAAS,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1F,QAAA,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,KAAK,CAAC;IAC3C;AAEA;;;AAGG;IACK,kBAAkB,GAAA;AACxB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YACzB;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB;QACF;QAEA,MAAM,UAAU,GACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK;QAChF,IAAI,CAAC,gBAAgB,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACpF;;IAGQ,cAAc,GAAA;AACpB,QAAA,MAAM,aAAa,GAAG,iCAAiC,EAAE;AACzD,QAAA,OAAO,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC;IAC7E;+GAhYW,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,qBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,8BAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,2CAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,SAAA,EATjB;YACT,kCAAkC;AAClC,YAAA,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAC;AACvD,YAAA,EAAC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,iBAAiB,EAAC;SAC1D,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAwBgB,cAAc,6HAtCrB,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6gCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAmB1B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBArB7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,QAAA,EACrB,2BAA2B,EAAA,QAAA,EAE3B,mBAAmB,EAAA,IAAA,EACvB;AACJ,wBAAA,OAAO,EAAE,qBAAqB;AAC9B,wBAAA,eAAe,EAAE,2CAA2C;AAC5D,wBAAA,MAAM,EAAE,SAAS;AACjB,wBAAA,6BAA6B,EAAE,UAAU;AACzC,wBAAA,WAAW,EAAE,wBAAwB;qBACtC,EAAA,SAAA,EACU;wBACT,kCAAkC;AAClC,wBAAA,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,mBAAmB,EAAC;AACvD,wBAAA,EAAC,OAAO,EAAE,cAAc,EAAE,WAAW,mBAAmB,EAAC;qBAC1D,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,cACnC,IAAI,EAAA,MAAA,EAAA,CAAA,6gCAAA,CAAA,EAAA;;sBAqBf,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC;;sBAGnD;;sBAOA;;sBAGA;;sBAmBA;;;AC7HH;;;;;;;;;;AAUG;AAGH;;AAEG;MAQU,0BAA0B,CAAA;+GAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,2CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAPtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mCAAmC;;;AAG7C,oBAAA,IAAI,EAAE,EAAC,OAAO,EAAE,2CAA2C,EAAC;AAC5D,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACtBD;;;;;;;AAOG;AAoBH,MAAM,KAAK,GAAwB;IACjC,cAAc;IACd,QAAQ;IACR,YAAY;IACZ,gBAAgB;IAChB,iBAAiB;IACjB,gBAAgB;IAChB,kBAAkB;IAClB,gBAAgB;IAChB,cAAc;IACd,0BAA0B;IAC1B,WAAW;IACX,iBAAiB;IACjB,WAAW;IACX,iBAAiB;CAClB;MAOY,cAAc,CAAA;+GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAd,cAAc,EAAA,OAAA,EAAA,CAHd,YAAY,EAlBvB,cAAc;YACd,QAAQ;YACR,YAAY;YACZ,gBAAgB;YAChB,iBAAiB;YACjB,gBAAgB;YAChB,kBAAkB;YAClB,gBAAgB;YAChB,cAAc;YACd,0BAA0B;YAC1B,WAAW;YACX,iBAAiB;YACjB,WAAW;AACX,YAAA,iBAAiB,aAbjB,cAAc;YACd,QAAQ;YACR,YAAY;YACZ,gBAAgB;YAChB,iBAAiB;YACjB,gBAAgB;YAChB,kBAAkB;YAClB,gBAAgB;YAChB,cAAc;YACd,0BAA0B;YAC1B,WAAW;YACX,iBAAiB;YACjB,WAAW;YACX,iBAAiB,CAAA,EAAA,CAAA,CAAA;gHAQN,cAAc,EAAA,OAAA,EAAA,CAHd,YAAY,EAVvB,cAAc;YAEd,WAAW;YACX,iBAAiB,CAAA,EAAA,CAAA,CAAA;;4FAUN,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE,CAAE,YAAY,EAAE,GAAG,KAAK,CAAE;AACnC,oBAAA,OAAO,EAAE,CAAE,GAAG,KAAK;AACpB,iBAAA;;;AChDD;;AAEG;;;;"}