UNPKG

@ng-select/ng-select

Version:

Angular select, multiselect and autocomplete with Signal Forms, Reactive Forms and Template-driven Forms support

1 lines 327 kB
{"version":3,"file":"ng-select-ng-select.mjs","sources":["../../../src/ng-select/lib/directives/ng-templates.directive.ts","../../../src/ng-select/lib/dropdown-panel/dropdown-panel-dom-events.ts","../../../src/ng-select/lib/dropdown-panel/dropdown-position.ts","../../../src/ng-select/lib/dropdown-panel/ng-dropdown-panel.service.ts","../../../src/ng-select/lib/utils/value-utils.ts","../../../src/ng-select/lib/dropdown-panel/ng-dropdown-panel.component.ts","../../../src/ng-select/lib/ng-option.component.ts","../../../src/ng-select/lib/dropdown-panel/dropdown-overlay-container.ts","../../../src/ng-select/lib/dropdown-panel/dropdown-overlay-manager.ts","../../../src/ng-select/lib/dropdown-panel/dropdown-panel-classes.ts","../../../src/ng-select/lib/types/id.ts","../../../src/ng-select/lib/utils/search-helper.ts","../../../src/ng-select/lib/items-list.ts","../../../src/ng-select/lib/selection-model.ts","../../../src/ng-select/lib/services/config.service.ts","../../../src/ng-select/lib/services/console.service.ts","../../../src/ng-select/lib/types/ng-select.types.ts","../../../src/ng-select/lib/ng-select/ng-select-model-value.ts","../../../src/ng-select/lib/ng-select/ng-select.component.ts","../../../src/ng-select/lib/ng-select/ng-select.component.html","../../../src/ng-select/lib/ng-select.module.ts","../../../src/ng-select/public-api.ts","../../../src/ng-select/ng-select-ng-select.ts"],"sourcesContent":["import { Directive, effect, ElementRef, inject, input, TemplateRef } from '@angular/core';\n\n/**\n * @deprecated Default labels are plain text via interpolation. Prefer `{{ label }}` or\n * custom templates (`ng-label-tmp` / `ng-option-tmp`) for rich markup. Kept for public API\n * compatibility; always writes `textContent` (the `escape` input is ignored).\n *\n * @since 3.0.2\n */\n@Directive({\n\tselector: '[ngItemLabel]',\n\tstandalone: true,\n})\nexport class NgItemLabelDirective {\n\tprivate element = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\tngItemLabel = input<string>();\n\t/** @deprecated Ignored — labels are always written as text. */\n\tescape = input(true);\n\n\t/**\n\t * Creates an instance of NgItemLabelDirective.\n\t *\n\t * @since 3.0.2\n\t */\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis.element.nativeElement.textContent = this.ngItemLabel() ?? '';\n\t\t});\n\t}\n}\n\n/**\n * Marks a template as the custom option template for ng-select.\n *\n * @since 3.0.0\n */\n@Directive({\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: '[ng-option-tmp]',\n\tstandalone: true,\n})\nexport class NgOptionTemplateDirective {\n\tpublic readonly template = inject(TemplateRef<any>);\n}\n\n/**\n * Marks a template as the custom optgroup template for ng-select.\n *\n * @since 3.0.0\n */\n@Directive({\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: '[ng-optgroup-tmp]',\n\tstandalone: true,\n})\nexport class NgOptgroupTemplateDirective {\n\tpublic readonly template = inject(TemplateRef<any>);\n}\n\n/**\n * Marks a template as the custom label template for ng-select.\n *\n * @since 3.0.0\n */\n@Directive({\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: '[ng-label-tmp]',\n\tstandalone: true,\n})\nexport class NgLabelTemplateDirective {\n\tpublic readonly template = inject(TemplateRef<any>);\n}\n\n/**\n * Marks a template as the custom multi label template for ng-select.\n *\n * @since 3.0.0\n */\n@Directive({\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: '[ng-multi-label-tmp]',\n\tstandalone: true,\n})\nexport class NgMultiLabelTemplateDirective {\n\tpublic readonly template = inject(TemplateRef<any>);\n}\n\n/**\n * Marks a template as the custom header template for ng-select.\n *\n * @since 3.0.0\n */\n@Directive({\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: '[ng-header-tmp]',\n\tstandalone: true,\n})\nexport class NgHeaderTemplateDirective {\n\tpublic readonly template = inject(TemplateRef<any>);\n}\n\n/**\n * Marks a template as the custom footer template for ng-select.\n *\n * @since 3.0.0\n */\n@Directive({\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: '[ng-footer-tmp]',\n\tstandalone: true,\n})\nexport class NgFooterTemplateDirective {\n\tpublic readonly template = inject(TemplateRef<any>);\n}\n\n/**\n * Marks a template as the custom not found template for ng-select.\n *\n * @since 3.0.0\n */\n@Directive({\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: '[ng-notfound-tmp]',\n\tstandalone: true,\n})\nexport class NgNotFoundTemplateDirective {\n\tpublic readonly template = inject(TemplateRef<any>);\n}\n\n/**\n * Marks a template as the custom placeholder template for ng-select.\n *\n * @since 13.6.0\n */\n@Directive({\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: '[ng-placeholder-tmp]',\n\tstandalone: true,\n})\nexport class NgPlaceholderTemplateDirective {\n\tpublic readonly template = inject(TemplateRef<any>);\n}\n\n/**\n * Marks a template as the custom type to search template for ng-select.\n *\n * @since 3.0.0\n */\n@Directive({\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: '[ng-typetosearch-tmp]',\n\tstandalone: true,\n})\nexport class NgTypeToSearchTemplateDirective {\n\tpublic readonly template = inject(TemplateRef<any>);\n}\n\n/**\n * Marks a template as the custom loading text template for ng-select.\n *\n * @since 3.0.0\n */\n@Directive({\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: '[ng-loadingtext-tmp]',\n\tstandalone: true,\n})\nexport class NgLoadingTextTemplateDirective {\n\tpublic readonly template = inject(TemplateRef<any>);\n}\n\n/**\n * Marks a template as the custom tag template for ng-select.\n *\n * @since 3.0.0\n */\n@Directive({\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: '[ng-tag-tmp]',\n\tstandalone: true,\n})\nexport class NgTagTemplateDirective {\n\tpublic readonly template = inject(TemplateRef<any>);\n}\n\n/**\n * Marks a template as the custom loading spinner template for ng-select.\n *\n * @since 3.0.0\n */\n@Directive({\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: '[ng-loadingspinner-tmp]',\n\tstandalone: true,\n})\nexport class NgLoadingSpinnerTemplateDirective {\n\tpublic readonly template = inject(TemplateRef<any>);\n}\n\n/**\n * Marks a template as the custom clear button template for ng-select.\n *\n * @since 14.2.0\n */\n@Directive({\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: '[ng-clearbutton-tmp]',\n\tstandalone: true,\n})\nexport class NgClearButtonTemplateDirective {\n\tpublic readonly template = inject(TemplateRef<any>);\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { DestroyRef, NgZone } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { animationFrameScheduler, asapScheduler, fromEvent } from 'rxjs';\nimport { auditTime } from 'rxjs/operators';\n\nconst EVENT_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\n\n/**\n * Configures DOM event handling for a rendered dropdown panel.\n *\n * @since 24.0.5\n */\nexport interface DropdownPanelDomEventOptions {\n\tdestroyRef: DestroyRef;\n\tdocument: Document | null;\n\tdropdown: HTMLElement;\n\tonOutsideClick: () => void;\n\toutsideClickEvent: 'click' | 'mousedown';\n\toverlayRef: OverlayRef | null;\n\tselect: HTMLElement;\n\tzone: NgZone;\n}\n\n/**\n * Determines whether an event originated inside the select host or dropdown panel.\n *\n * @param event - The DOM event to inspect.\n * @param select - The ng-select host element.\n * @param dropdown - The rendered dropdown panel element.\n * @returns Whether the event originated inside either element.\n *\n * @since 24.0.5\n */\nexport function isEventInside(event: Event & { path?: EventTarget[] }, select: HTMLElement, dropdown: HTMLElement): boolean {\n\t// composedPath preserves the real origin across shadow DOM boundaries.\n\tconst path = event.path || event.composedPath?.();\n\tif (path?.length) {\n\t\treturn path.includes(select) || path.includes(dropdown);\n\t}\n\treturn select.contains(event.target as Node) || dropdown.contains(event.target as Node);\n}\n\n/**\n * Coordinates document- and host-level DOM events for one rendered dropdown panel.\n *\n * @since 24.0.5\n */\nexport class DropdownPanelDomEvents {\n\tprivate lastMousedownInside = false;\n\n\t/**\n\t * Creates an instance of DropdownPanelDomEvents.\n\t *\n\t * @param options - The options.\n\t *\n\t * @since 24.0.5\n\t */\n\tconstructor(private readonly options: DropdownPanelDomEventOptions) {}\n\n\t/**\n\t * Starts dropdown DOM event monitoring.\n\t *\n\t * @since 24.0.5\n\t */\n\tstart(): void {\n\t\tthis.handleOutsideClick();\n\t\tthis.preventPanelMousedownFocus();\n\t\tthis.handleDocumentScroll();\n\t\tthis.handleSelectResize();\n\t}\n\n\t/**\n\t * Subscribes to the configured outside-click event and closes when appropriate.\n\t *\n\t * @since 24.0.5\n\t */\n\tprivate handleOutsideClick(): void {\n\t\tconst { destroyRef, document, outsideClickEvent, zone } = this.options;\n\t\tif (!document) {\n\t\t\treturn;\n\t\t}\n\n\t\tzone.runOutsideAngular(() => {\n\t\t\t// Track where a click started because opening/focusing can move layout before click.\n\t\t\tif (outsideClickEvent === 'click') {\n\t\t\t\tfromEvent(document, 'mousedown', { capture: true })\n\t\t\t\t\t.pipe(takeUntilDestroyed(destroyRef))\n\t\t\t\t\t.subscribe((event) => (this.lastMousedownInside = isEventInside(event, this.options.select, this.options.dropdown)));\n\t\t\t}\n\n\t\t\tfromEvent(document, outsideClickEvent, { capture: true })\n\t\t\t\t.pipe(takeUntilDestroyed(destroyRef))\n\t\t\t\t.subscribe((event) => this.checkToClose(event));\n\t\t});\n\t}\n\n\t/**\n\t * Closes the dropdown when an event originated outside the select and panel.\n\t *\n\t * @param event - The DOM event to process.\n\t *\n\t * @since 24.0.5\n\t */\n\tprivate checkToClose(event: Event): void {\n\t\tconst pressStartedInside = this.lastMousedownInside;\n\t\tthis.lastMousedownInside = false;\n\t\tif (pressStartedInside || isEventInside(event, this.options.select, this.options.dropdown)) {\n\t\t\treturn;\n\t\t}\n\t\tthis.options.zone.run(this.options.onOutsideClick);\n\t}\n\n\t/**\n\t * Prevents panel mouse interactions from stealing input focus.\n\t *\n\t * @since 24.0.5\n\t */\n\tprivate preventPanelMousedownFocus(): void {\n\t\tconst { destroyRef, dropdown, zone } = this.options;\n\t\tzone.runOutsideAngular(() => {\n\t\t\tfromEvent<MouseEvent>(dropdown, 'mousedown')\n\t\t\t\t.pipe(takeUntilDestroyed(destroyRef))\n\t\t\t\t.subscribe((event) => {\n\t\t\t\t\tif ((event.target as HTMLElement).tagName !== 'INPUT') {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Repositions the overlay when the document or an ancestor scrolls.\n\t *\n\t * @since 24.0.5\n\t */\n\tprivate handleDocumentScroll(): void {\n\t\tconst { destroyRef, document, dropdown, overlayRef, zone } = this.options;\n\t\tif (!document || !overlayRef) {\n\t\t\treturn;\n\t\t}\n\n\t\tzone.runOutsideAngular(() => {\n\t\t\t// Capture sees window and arbitrary ancestor scroll containers, even without cdkScrollable.\n\t\t\tfromEvent(document, 'scroll', { capture: true, passive: true })\n\t\t\t\t.pipe(takeUntilDestroyed(destroyRef), auditTime(0, EVENT_SCHEDULER))\n\t\t\t\t.subscribe((event) => {\n\t\t\t\t\tconst target = event.target as Node | null;\n\t\t\t\t\tif (!target || !dropdown.contains(target)) {\n\t\t\t\t\t\toverlayRef.updatePosition();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Keeps the overlay width and position synchronized with the select host.\n\t *\n\t * @since 24.0.5\n\t */\n\tprivate handleSelectResize(): void {\n\t\tconst { destroyRef, overlayRef, select, zone } = this.options;\n\t\tif (!overlayRef || typeof ResizeObserver === 'undefined') {\n\t\t\treturn;\n\t\t}\n\n\t\tzone.runOutsideAngular(() => {\n\t\t\tconst observer = new ResizeObserver(() => {\n\t\t\t\toverlayRef.updateSize({ width: select.getBoundingClientRect().width });\n\t\t\t\toverlayRef.updatePosition();\n\t\t\t});\n\t\t\tobserver.observe(select);\n\t\t\tdestroyRef.onDestroy(() => observer.disconnect());\n\t\t});\n\t}\n}\n","import { ConnectedPosition, ConnectionPositionPair } from '@angular/cdk/overlay';\n\nimport { DropdownPosition } from '../types/ng-select.types';\n\nconst DROPDOWN_POSITION_BELOW: ConnectedPosition = { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' };\nconst DROPDOWN_POSITION_ABOVE: ConnectedPosition = { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' };\nconst DROPDOWN_POSITION_AFTER: ConnectedPosition = { originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top' };\nconst DROPDOWN_POSITION_BEFORE: ConnectedPosition = { originX: 'start', originY: 'top', overlayX: 'end', overlayY: 'top' };\n\nexport const DROPDOWN_POSITIONS: Readonly<Record<DropdownPosition, readonly ConnectedPosition[]>> = {\n\t// 'auto' prefers below and flips above when the panel does not fit the viewport;\n\t// the fit check measures the rendered overlay, so header/footer templates and\n\t// item count are accounted for (#2687, #2575)\n\tauto: [DROPDOWN_POSITION_BELOW, DROPDOWN_POSITION_ABOVE],\n\tbottom: [DROPDOWN_POSITION_BELOW],\n\ttop: [DROPDOWN_POSITION_ABOVE],\n\tright: [DROPDOWN_POSITION_AFTER],\n\tleft: [DROPDOWN_POSITION_BEFORE],\n};\n\nexport const DROPDOWN_CSS_POSITIONS: readonly DropdownPosition[] = ['top', 'right', 'bottom', 'left'];\n\n/**\n * Converts a CDK connection pair into the matching ng-select dropdown position.\n *\n * @param pair - The active CDK overlay connection pair.\n * @returns The corresponding ng-select dropdown position.\n *\n * @since 24.0.5\n */\nexport function connectionPairToDropdownPosition(pair: ConnectionPositionPair): DropdownPosition {\n\tif (pair.originY === 'bottom' && pair.overlayY === 'top') {\n\t\treturn 'bottom';\n\t}\n\tif (pair.originY === 'top' && pair.overlayY === 'bottom') {\n\t\treturn 'top';\n\t}\n\tif (pair.originX === 'end' && pair.overlayX === 'start') {\n\t\treturn 'right';\n\t}\n\tif (pair.originX === 'start' && pair.overlayX === 'end') {\n\t\treturn 'left';\n\t}\n\treturn 'bottom';\n}\n","import { Injectable } from '@angular/core';\n\n/**\n * Describes the rendered range and spacer sizes for virtual scrolling.\n *\n * @since 3.0.0\n */\nexport interface ItemsRangeResult {\n\tscrollHeight: number;\n\ttopPadding: number;\n\tstart: number;\n\tend: number;\n}\n\n/**\n * Describes measured option, group, and viewport dimensions.\n *\n * @since 3.0.0\n */\nexport interface PanelDimensions {\n\t/** Height of a regular option row (non-group). */\n\titemHeight: number;\n\t/** Height of a group header row. Falls back to itemHeight when unset/equal. */\n\tgroupHeight: number;\n\tpanelHeight: number;\n\titemsPerViewport: number;\n}\n\n/**\n * Minimal shape needed to distinguish group headers from options.\n *\n * @since 23.9.0\n */\nexport interface VirtualScrollItem {\n\tchildren?: unknown;\n}\n\n/**\n * Calculates dropdown panel dimensions, virtual-scroll ranges, and scroll offsets.\n *\n * @since 3.0.0\n */\n@Injectable()\nexport class NgDropdownPanelService {\n\tprivate _dimensions: PanelDimensions = {\n\t\titemHeight: 0,\n\t\tgroupHeight: 0,\n\t\tpanelHeight: 0,\n\t\titemsPerViewport: 0,\n\t};\n\n\t/**\n\t * Gets the currently measured panel dimensions.\n\t *\n\t * @returns The dimensions.\n\t *\n\t * @since 3.0.0\n\t */\n\tget dimensions() {\n\t\treturn this._dimensions;\n\t}\n\n\t/**\n\t * Calculates the virtual-scroll item range and spacer sizes.\n\t *\n\t * @param scrollPos - The scroll pos.\n\t * @param itemsLength - The items length.\n\t * @param buffer - The buffer.\n\t * @param items - The options to process.\n\t * @returns The rendered range and spacer sizes.\n\t *\n\t * @since 3.0.0\n\t */\n\tcalculateItems(scrollPos: number, itemsLength: number, buffer: number, items?: readonly VirtualScrollItem[]): ItemsRangeResult {\n\t\tconst d = this._dimensions;\n\t\tconst useVariableHeights = !!items && d.groupHeight > 0 && d.groupHeight !== d.itemHeight;\n\n\t\tif (useVariableHeights) {\n\t\t\treturn this._calculateItemsVariable(scrollPos, items, buffer);\n\t\t}\n\n\t\tconst scrollHeight = d.itemHeight * itemsLength;\n\n\t\tconst scrollTop = Math.max(0, scrollPos);\n\t\tconst indexByScrollTop = (scrollTop / scrollHeight) * itemsLength;\n\t\tlet end = Math.min(itemsLength, Math.ceil(indexByScrollTop) + (d.itemsPerViewport + 1));\n\n\t\tconst maxStartEnd = end;\n\t\tconst maxStart = Math.max(0, maxStartEnd - d.itemsPerViewport);\n\t\tlet start = Math.min(maxStart, Math.floor(indexByScrollTop));\n\n\t\tlet topPadding = d.itemHeight * Math.ceil(start) - d.itemHeight * Math.min(start, buffer);\n\t\ttopPadding = !isNaN(topPadding) ? topPadding : 0;\n\t\tstart = !isNaN(start) ? start : -1;\n\t\tend = !isNaN(end) ? end : -1;\n\t\tstart -= buffer;\n\t\tstart = Math.max(0, start);\n\t\tend += buffer;\n\t\tend = Math.min(itemsLength, end);\n\n\t\treturn {\n\t\t\ttopPadding,\n\t\t\tscrollHeight,\n\t\t\tstart,\n\t\t\tend,\n\t\t};\n\t}\n\n\t/**\n\t * Stores the measured item, group, and panel dimensions.\n\t *\n\t * @param itemHeight - The item height.\n\t * @param panelHeight - The panel height.\n\t * @param groupHeight - The group height.\n\t *\n\t * @since 3.0.0\n\t */\n\tsetDimensions(itemHeight: number, panelHeight: number, groupHeight: number = itemHeight) {\n\t\tconst effectiveItemHeight = itemHeight > 0 ? itemHeight : groupHeight;\n\t\tconst itemsPerViewport = effectiveItemHeight > 0 ? Math.max(1, Math.floor(panelHeight / effectiveItemHeight)) : 0;\n\t\tthis._dimensions = {\n\t\t\titemHeight,\n\t\t\tgroupHeight: groupHeight > 0 ? groupHeight : itemHeight,\n\t\t\tpanelHeight,\n\t\t\titemsPerViewport,\n\t\t};\n\t}\n\n\t/**\n\t * Returns the measured height for an option or group.\n\t *\n\t * @param item - The option to process.\n\t * @returns The row height in pixels.\n\t *\n\t * @since 23.9.0\n\t */\n\tgetItemHeight(item: VirtualScrollItem | null | undefined): number {\n\t\tconst d = this._dimensions;\n\t\tif (item?.children) {\n\t\t\treturn d.groupHeight || d.itemHeight;\n\t\t}\n\t\treturn d.itemHeight || d.groupHeight;\n\t}\n\n\t/**\n\t * Calculates an item’s vertical offset within the full option list.\n\t *\n\t * @param items - The options to process.\n\t * @param index - The index.\n\t * @returns The vertical offset in pixels.\n\t *\n\t * @since 23.9.0\n\t */\n\tgetItemOffset(items: readonly VirtualScrollItem[], index: number): number {\n\t\tlet offset = 0;\n\t\tconst end = Math.max(0, Math.min(index, items.length));\n\t\tfor (let i = 0; i < end; i++) {\n\t\t\toffset += this.getItemHeight(items[i]);\n\t\t}\n\t\treturn offset;\n\t}\n\n\t/**\n\t * Calculates the total virtual-scroll content height.\n\t *\n\t * @param items - The options to process.\n\t * @returns The total scroll height in pixels.\n\t *\n\t * @since 23.9.0\n\t */\n\tgetScrollHeight(items: readonly VirtualScrollItem[]): number {\n\t\treturn this.getItemOffset(items, items.length);\n\t}\n\n\t/**\n\t * Calculates the scroll position needed to reveal an item.\n\t *\n\t * @param itemTop - The item top.\n\t * @param itemHeight - The item height.\n\t * @param lastScroll - The last scroll.\n\t *\n\t * @since 3.0.0\n\t */\n\tgetScrollTo(itemTop: number, itemHeight: number, lastScroll: number) {\n\t\tconst { panelHeight } = this.dimensions;\n\t\tconst itemBottom = itemTop + itemHeight;\n\t\tconst top = lastScroll;\n\t\tconst bottom = top + panelHeight;\n\n\t\tif (panelHeight >= itemBottom && lastScroll === itemTop) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (itemBottom > bottom) {\n\t\t\treturn top + itemBottom - bottom;\n\t\t} else if (itemTop <= top) {\n\t\t\treturn itemTop;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Calculates a virtual-scroll range for variable-height rows.\n\t *\n\t * @param scrollPos - The scroll pos.\n\t * @param items - The options to process.\n\t * @param buffer - The buffer.\n\t * @returns The calculate items variable result.\n\t *\n\t * @since 23.9.0\n\t */\n\tprivate _calculateItemsVariable(scrollPos: number, items: readonly VirtualScrollItem[], buffer: number): ItemsRangeResult {\n\t\tconst { panelHeight } = this._dimensions;\n\t\tconst itemsLength = items.length;\n\t\tconst scrollHeight = this.getScrollHeight(items);\n\t\tconst scrollTop = Math.max(0, scrollPos);\n\n\t\tlet accumulated = 0;\n\t\tlet start = 0;\n\t\tfor (let i = 0; i < itemsLength; i++) {\n\t\t\tconst height = this.getItemHeight(items[i]);\n\t\t\tif (accumulated + height > scrollTop) {\n\t\t\t\tstart = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\taccumulated += height;\n\t\t\tstart = i + 1;\n\t\t}\n\n\t\tlet end = start;\n\t\tlet visibleHeight = 0;\n\t\twhile (end < itemsLength && visibleHeight < panelHeight) {\n\t\t\tvisibleHeight += this.getItemHeight(items[end]);\n\t\t\tend++;\n\t\t}\n\t\t// Match the uniform path's +1 viewport slack so the last partially-visible row is included.\n\t\tend = Math.min(itemsLength, end + 1);\n\n\t\tconst bufferedStart = Math.max(0, start - buffer);\n\t\tconst bufferedEnd = Math.min(itemsLength, end + buffer);\n\t\tconst topPadding = this.getItemOffset(items, bufferedStart);\n\n\t\treturn {\n\t\t\ttopPadding,\n\t\t\tscrollHeight,\n\t\t\tstart: bufferedStart,\n\t\t\tend: bufferedEnd,\n\t\t};\n\t}\n}\n","/**\n * Determines whether a value is neither `undefined` nor `null`.\n *\n * @param value - The value to process.\n *\n * @since 3.0.0\n */\nexport function isDefined(value: any) {\n\treturn value !== undefined && value !== null;\n}\n\n/**\n * Determines whether a value is a non-null object.\n *\n * @param value - The value to process.\n *\n * @since 3.0.0\n */\nexport function isObject(value: any) {\n\treturn typeof value === 'object' && isDefined(value);\n}\n\n/**\n * Determines whether a value is promise-like.\n *\n * @param value - The value to process.\n *\n * @since 3.0.0\n */\nexport function isPromise(value: any) {\n\treturn value instanceof Promise;\n}\n\n/**\n * Determines whether a value is a function.\n *\n * @param value - The value to process.\n *\n * @since 3.0.0\n */\nexport function isFunction(value: any) {\n\treturn value instanceof Function;\n}\n","import { FlexibleConnectedPositionStrategy, OverlayRef } from '@angular/cdk/overlay';\nimport { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport {\n\tbooleanAttribute,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tDestroyRef,\n\tElementRef,\n\tinject,\n\tinput,\n\tNgZone,\n\tOnChanges,\n\tOnInit,\n\toutput,\n\tRenderer2,\n\tSimpleChanges,\n\tTemplateRef,\n\tviewChild,\n\tViewEncapsulation,\n} from '@angular/core';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { animationFrameScheduler, asapScheduler, fromEvent } from 'rxjs';\nimport { auditTime } from 'rxjs/operators';\nimport { DropdownPanelDomEvents } from './dropdown-panel-dom-events';\nimport { connectionPairToDropdownPosition, DROPDOWN_CSS_POSITIONS } from './dropdown-position';\nimport { NgDropdownPanelService, PanelDimensions } from './ng-dropdown-panel.service';\n\nimport { DropdownPosition, NgOption } from '../types/ng-select.types';\nimport { isDefined } from '../utils/value-utils';\n\nconst SCROLL_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\n\n/**\n * Renders, positions, and virtualizes the dropdown option panel.\n *\n * @since 3.0.0\n */\n@Component({\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\tselector: 'ng-dropdown-panel',\n\ttemplate: `\n\t\t@if (headerTemplate()) {\n\t\t\t<div class=\"ng-dropdown-header\">\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"headerTemplate()\" [ngTemplateOutletContext]=\"{ searchTerm: filterValue() }\" />\n\t\t\t</div>\n\t\t}\n\t\t<div #scroll role=\"listbox\" class=\"ng-dropdown-panel-items scroll-host\" [attr.id]=\"listboxId()\" [attr.aria-label]=\"ariaLabelDropdown()\">\n\t\t\t<div #padding [class.total-padding]=\"virtualScroll()\"></div>\n\t\t\t<div #content [class.scrollable-content]=\"virtualScroll() && items().length\">\n\t\t\t\t<ng-content />\n\t\t\t</div>\n\t\t</div>\n\t\t@if (footerTemplate()) {\n\t\t\t<div class=\"ng-dropdown-footer\">\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"footerTemplate()\" [ngTemplateOutletContext]=\"{ searchTerm: filterValue() }\" />\n\t\t\t</div>\n\t\t}\n\t`,\n\timports: [NgTemplateOutlet],\n})\nexport class NgDropdownPanelComponent implements OnInit, OnChanges {\n\treadonly items = input<NgOption[]>([]);\n\treadonly showAddTag = input(false, { transform: booleanAttribute });\n\treadonly markedItem = input<NgOption>(undefined);\n\treadonly position = input<DropdownPosition>('auto');\n\treadonly bufferAmount = input<number>(undefined);\n\treadonly virtualScroll = input(false, { transform: booleanAttribute });\n\treadonly headerTemplate = input<TemplateRef<any> | undefined>(undefined);\n\treadonly footerTemplate = input<TemplateRef<any> | undefined>(undefined);\n\treadonly filterValue = input<string>(null);\n\treadonly ariaLabelDropdown = input<string | null>(null);\n\treadonly listboxId = input<string | null>(null);\n\t/**\n\t * Which DOM event to listen to for outside click detection\n\t */\n\treadonly outsideClickEvent = input<'click' | 'mousedown'>('click');\n\t/** @deprecated Has no effect: the CDK overlay renders in the native Popover API top layer automatically in supporting browsers. Will be removed in a future major version. */\n\treadonly popover = input(false, { transform: booleanAttribute });\n\t/** Overlay hosting this panel. Used to request repositioning when the rendered content changes. */\n\treadonly overlayRef = input<OverlayRef | null>(null);\n\t/** Host `ng-select` element. The panel's DOM lives in the overlay, so the host cannot be derived from the DOM tree. */\n\treadonly selectElement = input<HTMLElement>(undefined);\n\treadonly update = output<any[]>();\n\treadonly scroll = output<{\n\t\tstart: number;\n\t\tend: number;\n\t}>();\n\treadonly scrollToEnd = output<void>();\n\treadonly outsideClick = output<void>();\n\tprivate _renderer = inject(Renderer2);\n\tprivate _zone = inject(NgZone);\n\tprivate _panelService = inject(NgDropdownPanelService);\n\tprivate _document = inject(DOCUMENT, { optional: true })!;\n\tprivate _destroyRef = inject(DestroyRef);\n\tprivate _dropdown = inject(ElementRef<HTMLElement>).nativeElement;\n\tprivate readonly contentElementRef = viewChild('content', { read: ElementRef });\n\tprivate readonly scrollElementRef = viewChild('scroll', { read: ElementRef });\n\tprivate readonly paddingElementRef = viewChild('padding', { read: ElementRef });\n\n\tprivate readonly _virtualPadding = computed(() => this.paddingElementRef()?.nativeElement);\n\tprivate readonly _scrollablePanel = computed(() => this.scrollElementRef()?.nativeElement);\n\tprivate readonly _contentPanel = computed(() => this.contentElementRef()?.nativeElement);\n\n\tprivate _select: HTMLElement | undefined;\n\tprivate _scrollToEndFired = false;\n\tprivate _updateScrollHeight = false;\n\tprivate _lastScrollPosition = 0;\n\n\tprivate _currentPosition: DropdownPosition;\n\n\t/**\n\t * Gets the panel position selected by the overlay strategy.\n\t *\n\t * @returns The current position.\n\t *\n\t * @since 3.0.0\n\t */\n\tget currentPosition(): DropdownPosition {\n\t\treturn this._currentPosition;\n\t}\n\n\tprivate _itemsLength: number;\n\n\t/**\n\t * Gets the number of rows available to the panel.\n\t *\n\t * @returns The items length.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate get itemsLength() {\n\t\treturn this._itemsLength;\n\t}\n\n\t/**\n\t * Updates the cached item count and resets dependent virtual-scroll state.\n\t *\n\t * @param value - The value to process.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate set itemsLength(value: number) {\n\t\tif (value !== this._itemsLength) {\n\t\t\tthis._itemsLength = value;\n\t\t\tthis._onItemsLengthChanged();\n\t\t}\n\t}\n\n\t/**\n\t * Gets the rendered range’s starting vertical offset.\n\t *\n\t * @returns The start offset.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate get _startOffset() {\n\t\tif (this.markedItem()) {\n\t\t\tconst { panelHeight } = this._panelService.dimensions;\n\t\t\tconst offset = this._panelService.getItemOffset(this.items(), this.markedItem().index);\n\t\t\treturn panelHeight > offset ? 0 : offset;\n\t\t}\n\t\treturn 0;\n\t}\n\n\t/**\n\t * Initializes the instance after Angular has assigned its inputs.\n\t *\n\t * @since 3.0.0\n\t */\n\tngOnInit() {\n\t\tthis._select = this.selectElement() ?? this._dropdown.parentElement;\n\t\tthis._handleScroll();\n\t\tnew DropdownPanelDomEvents({\n\t\t\tdestroyRef: this._destroyRef,\n\t\t\tdocument: this._document,\n\t\t\tdropdown: this._dropdown,\n\t\t\tonOutsideClick: () => this.outsideClick.emit(),\n\t\t\toutsideClickEvent: this.outsideClickEvent() ?? 'click',\n\t\t\toverlayRef: this.overlayRef(),\n\t\t\tselect: this._select,\n\t\t\tzone: this._zone,\n\t\t}).start();\n\t\tthis._subscribeOverlayPosition();\n\t}\n\n\t/**\n\t * Responds to Angular input changes.\n\t *\n\t * @param changes - The changed Angular inputs.\n\t *\n\t * @since 3.0.0\n\t */\n\tngOnChanges(changes: SimpleChanges) {\n\t\tif (changes.items) {\n\t\t\tconst change = changes.items;\n\t\t\tthis._onItemsOrShowAddTagChange(change.currentValue, this.showAddTag(), change.firstChange);\n\t\t}\n\t\tif (changes.showAddTag) {\n\t\t\tconst change = changes.showAddTag;\n\t\t\tthis._onItemsOrShowAddTagChange(this.items(), change.currentValue, change.firstChange);\n\t\t}\n\t}\n\n\t/**\n\t * Scrolls until the requested option is visible.\n\t *\n\t * @param option - The option to process.\n\t * @param startFromOption - The start from option.\n\t *\n\t * @since 3.0.0\n\t */\n\tscrollTo(option: NgOption, startFromOption = false) {\n\t\tif (!option) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst index = this.items().indexOf(option);\n\t\tif (index < 0 || index >= this.itemsLength) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet scrollTo;\n\t\tif (this.virtualScroll()) {\n\t\t\tconst items = this.items();\n\t\t\tconst itemHeight = this._panelService.getItemHeight(option);\n\t\t\tconst itemTop = this._panelService.getItemOffset(items, index);\n\t\t\tscrollTo = this._panelService.getScrollTo(itemTop, itemHeight, this._lastScrollPosition);\n\t\t} else {\n\t\t\tconst item: HTMLElement = this._dropdown.querySelector(`#${option.htmlId}`);\n\t\t\tif (!item) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst lastScroll = startFromOption ? item.offsetTop : this._lastScrollPosition;\n\t\t\tscrollTo = this._panelService.getScrollTo(item.offsetTop, item.clientHeight, lastScroll);\n\t\t}\n\n\t\tif (isDefined(scrollTo)) {\n\t\t\tthis._scrollablePanel().scrollTop = scrollTo;\n\t\t\t// Programmatic scrollTop may not emit `scroll` in time; sync the range now (#2744)\n\t\t\tif (this.virtualScroll()) {\n\t\t\t\tthis._onContentScrolled(scrollTo);\n\t\t\t} else {\n\t\t\t\tthis._lastScrollPosition = scrollTo;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Scrolls to the add-tag row.\n\t *\n\t * @since 3.0.0\n\t */\n\tscrollToTag() {\n\t\tconst panel = this._scrollablePanel();\n\t\tpanel.scrollTop = panel.scrollHeight - panel.clientHeight;\n\t}\n\n\t/**\n\t * Requests that the overlay strategy recalculate the panel position.\n\t *\n\t * @since 3.0.0\n\t */\n\tadjustPosition() {\n\t\tthis.overlayRef()?.updatePosition();\n\t}\n\n\t/**\n\t * Applies the position chosen by the overlay's position strategy to the panel and host\n\t * as `ng-select-top` / `ng-select-bottom` (and `-left` / `-right`) classes, which the\n\t * shipped themes use for borders, radius and spacing.\n\t *\n\t * @since 23.7.0\n\t */\n\tprivate _setCurrentPosition(position: DropdownPosition) {\n\t\tthis._currentPosition = position;\n\t\tif (DROPDOWN_CSS_POSITIONS.includes(position)) {\n\t\t\tthis._updateDropdownClass(position);\n\t\t} else {\n\t\t\tthis._updateDropdownClass('bottom');\n\t\t}\n\t}\n\n\t/**\n\t * Positions the freshly rendered panel. The overlay measures the real DOM, so header and\n\t * footer templates and the actual item count are part of the auto placement decision\n\t * (#2575). Only then is the panel made visible to avoid a flash at a stale position.\n\t *\n\t * @since 23.7.0\n\t */\n\tprivate _positionDropdown() {\n\t\tconst overlayRef = this.overlayRef();\n\t\tif (overlayRef) {\n\t\t\t// Apply position and emit positionChanges before the panel is visible\n\t\t\toverlayRef.updatePosition();\n\t\t} else if (!isDefined(this._currentPosition)) {\n\t\t\t// Standalone usage without an overlay: reflect the configured side directly\n\t\t\tthis._setCurrentPosition(this.position() === 'auto' ? 'bottom' : this.position());\n\t\t}\n\n\t\tthis._dropdown.style.opacity = '1';\n\t}\n\n\t/**\n\t * Subscribes to CDK overlay position changes.\n\t *\n\t * @since 23.7.0\n\t */\n\tprivate _subscribeOverlayPosition() {\n\t\tconst strategy = this.overlayRef()?.getConfig().positionStrategy;\n\t\tif (!(strategy instanceof FlexibleConnectedPositionStrategy)) {\n\t\t\treturn;\n\t\t}\n\n\t\tstrategy.positionChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((change) => {\n\t\t\tthis._setCurrentPosition(connectionPairToDropdownPosition(change.connectionPair));\n\t\t});\n\t}\n\n\t/**\n\t * Updates the position-specific CSS class on the panel.\n\t *\n\t * @param currentPosition - The current position.\n\t *\n\t * @since 7.4.0\n\t */\n\tprivate _updateDropdownClass(currentPosition: string) {\n\t\tDROPDOWN_CSS_POSITIONS.forEach((position) => {\n\t\t\tconst REMOVE_CSS_CLASS = `ng-select-${position}`;\n\t\t\tthis._renderer.removeClass(this._dropdown, REMOVE_CSS_CLASS);\n\t\t\tthis._renderer.removeClass(this._select, REMOVE_CSS_CLASS);\n\t\t});\n\n\t\tconst ADD_CSS_CLASS = `ng-select-${currentPosition}`;\n\t\tthis._renderer.addClass(this._dropdown, ADD_CSS_CLASS);\n\t\tthis._renderer.addClass(this._select, ADD_CSS_CLASS);\n\t}\n\n\t/**\n\t * Subscribes to panel scrolling outside Angular change detection.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _handleScroll() {\n\t\tthis._zone.runOutsideAngular(() => {\n\t\t\tconst scrollablePanel = this._scrollablePanel();\n\t\t\tif (!scrollablePanel) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfromEvent(scrollablePanel, 'scroll')\n\t\t\t\t.pipe(takeUntilDestroyed(this._destroyRef), auditTime(0, SCROLL_SCHEDULER))\n\t\t\t\t.subscribe(() => {\n\t\t\t\t\tthis._onContentScrolled(scrollablePanel.scrollTop);\n\t\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Refreshes rendered items when options or add-tag visibility changes.\n\t *\n\t * @param items - The options to process.\n\t * @param showAddTag - The show add tag.\n\t * @param firstChange - The first change.\n\t *\n\t * @since 20.6.2\n\t */\n\tprivate _onItemsOrShowAddTagChange(items: NgOption[] = [], showAddTag: boolean, firstChange: boolean) {\n\t\tthis._scrollToEndFired = false;\n\t\tthis.itemsLength = items.length;\n\t\tif (showAddTag && items.length) {\n\t\t\tthis.itemsLength++;\n\t\t}\n\n\t\tif (this.virtualScroll()) {\n\t\t\tthis._updateItemsRange(firstChange);\n\t\t} else {\n\t\t\tthis._setVirtualHeight();\n\t\t\tthis._updateItems(firstChange);\n\t\t}\n\t}\n\n\t/**\n\t * Rebuilds the rendered option collection and virtual-scroll measurements.\n\t *\n\t * @param firstChange - The first change.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _updateItems(firstChange: boolean) {\n\t\tthis.update.emit(this.items());\n\n\t\tthis._zone.runOutsideAngular(() => {\n\t\t\tPromise.resolve().then(() => {\n\t\t\t\t// Panel may have opened empty; refresh height for scrollTo math (#2744)\n\t\t\t\tthis._syncPanelHeightFromDom();\n\t\t\t\tif (!firstChange) {\n\t\t\t\t\t// Re-anchor so a top-placed panel grows upward and `auto` can flip (#2092)\n\t\t\t\t\tthis.overlayRef()?.updatePosition();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._positionDropdown();\n\t\t\t\tthis.scrollTo(this.markedItem(), firstChange);\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Recalculates the rendered virtual-scroll range.\n\t *\n\t * @param firstChange - The first change.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _updateItemsRange(firstChange: boolean) {\n\t\tthis._zone.runOutsideAngular(() => {\n\t\t\tthis._measureDimensions().then(() => {\n\t\t\t\tconst scrollTop = firstChange ? this._startOffset : (this._scrollablePanel()?.scrollTop ?? 0);\n\t\t\t\tif (!firstChange) {\n\t\t\t\t\t// Items changed at an unchanged scrollTop; bypass the same-position guard (#2880)\n\t\t\t\t\tthis._lastScrollPosition = -1;\n\t\t\t\t}\n\t\t\t\tthis._renderItemsRange(scrollTop);\n\t\t\t\tif (!firstChange) {\n\t\t\t\t\tthis._lastScrollPosition = scrollTop;\n\t\t\t\t}\n\n\t\t\t\t// Sync panelHeight after the first paint; re-render if viewport capacity grew (#2744)\n\t\t\t\tconst itemsPerViewportBefore = this._panelService.dimensions.itemsPerViewport;\n\t\t\t\tthis._syncPanelHeightFromDom();\n\t\t\t\tif (this._panelService.dimensions.itemsPerViewport !== itemsPerViewportBefore) {\n\t\t\t\t\tconst currentScrollTop = this._scrollablePanel()?.scrollTop ?? scrollTop;\n\t\t\t\t\tthis._lastScrollPosition = -1;\n\t\t\t\t\tthis._renderItemsRange(currentScrollTop);\n\t\t\t\t\tthis._lastScrollPosition = currentScrollTop;\n\t\t\t\t}\n\n\t\t\t\tif (firstChange) {\n\t\t\t\t\tthis._positionDropdown();\n\t\t\t\t} else {\n\t\t\t\t\tthis.overlayRef()?.updatePosition();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Updates cached panelHeight from the live scrollport, preserving row-height measurements.\n\t *\n\t * @since 23.9.0\n\t */\n\tprivate _syncPanelHeightFromDom() {\n\t\tconst panel = this._scrollablePanel();\n\t\tif (!panel) {\n\t\t\treturn;\n\t\t}\n\t\tconst panelHeight = panel.clientHeight;\n\t\tif (panelHeight <= 0) {\n\t\t\treturn;\n\t\t}\n\t\tconst { itemHeight, groupHeight } = this._panelService.dimensions;\n\t\tthis._panelService.setDimensions(itemHeight, panelHeight, groupHeight);\n\t}\n\n\t/**\n\t * Updates virtual-scroll state for a new scroll position.\n\t *\n\t * @param scrollTop - The scroll top.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _onContentScrolled(scrollTop: number) {\n\t\tif (this.virtualScroll()) {\n\t\t\tthis._renderItemsRange(scrollTop);\n\t\t}\n\t\tthis._lastScrollPosition = scrollTop;\n\t\tthis._fireScrollToEnd(scrollTop);\n\t}\n\n\t/**\n\t * Updates the virtual-scroll spacer height.\n\t *\n\t * @param height - The height.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _updateVirtualHeight(height: number) {\n\t\tif (this._updateScrollHeight) {\n\t\t\tthis._virtualPadding().style.height = `${height}px`;\n\t\t\tthis._updateScrollHeight = false;\n\t\t}\n\t}\n\n\t/**\n\t * Measures and applies the virtual-scroll spacer height.\n\t *\n\t * @since 5.0.1\n\t */\n\tprivate _setVirtualHeight() {\n\t\tif (!this._virtualPadding()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._virtualPadding().style.height = `0px`;\n\t}\n\n\t/**\n\t * Resets virtual-scroll state after the item count changes.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _onItemsLengthChanged() {\n\t\tthis._updateScrollHeight = true;\n\t}\n\n\t/**\n\t * Renders the virtual-scroll range for the current scroll position.\n\t *\n\t * @param scrollTop - The scroll top.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _renderItemsRange(scrollTop = null) {\n\t\tif (scrollTop && this._lastScrollPosition === scrollTop) {\n\t\t\treturn;\n\t\t}\n\n\t\tscrollTop = scrollTop || this._scrollablePanel().scrollTop;\n\t\tconst range = this._panelService.calculateItems(scrollTop, this.itemsLength, this.bufferAmount(), this.items());\n\t\tthis._updateVirtualHeight(range.scrollHeight);\n\t\tthis._contentPanel().style.transform = `translateY(${range.topPadding}px)`;\n\n\t\t// Outputs must stay template-bound: the template listener schedules CD under zoneless\n\t\tthis._zone.run(() => {\n\t\t\tthis.update.emit(this.items().slice(range.start, range.end));\n\t\t\tthis.scroll.emit({ start: range.start, end: range.end });\n\t\t});\n\n\t\tif (isDefined(scrollTop) && this._lastScrollPosition === 0) {\n\t\t\tthis._scrollablePanel().scrollTop = scrollTop;\n\t\t\tthis._lastScrollPosition = scrollTop;\n\t\t}\n\t}\n\n\t/**\n\t * Measures option, group, and viewport dimensions after rendering.\n\t *\n\t * @returns The measure dimensions result.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _measureDimensions(): Promise<PanelDimensions> {\n\t\tif (this._panelService.dimensions.itemHeight > 0 || this.itemsLength === 0) {\n\t\t\treturn Promise.resolve(this._panelService.dimensions);\n\t\t}\n\n\t\tconst items = this.items();\n\t\tconst firstGroup = items.find((item) => !!item.children);\n\t\tconst firstOption = items.find((item) => !item.children);\n\t\tconst toMeasure = [firstGroup, firstOption].filter((item): item is NgOption => !!item);\n\t\tif (toMeasure.length === 0) {\n\t\t\treturn Promise.resolve(this._panelService.dimensions);\n\t\t}\n\n\t\t// Emitted items render in the same CD pass; measure both a group and an option (#2762)\n\t\tthis._zone.run(() => this.update.emit(toMeasure));\n\n\t\treturn Promise.resolve()\n\t\t\t.then(() => this._readMeasuredDimensions(items, firstOption, firstGroup))\n\t\t\t.then((dims) => {\n\t\t\t\tif (dims.itemHeight > 0) {\n\t\t\t\t\treturn dims;\n\t\t\t\t}\n\t\t\t\t// Options may not have painted yet; retry once next frame (#2744)\n\t\t\t\treturn new Promise<PanelDimensions>((resolve) => {\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\tthis._zone.run(() => this.update.emit(toMeasure));\n\t\t\t\t\t\tPromise.resolve().then(() => resolve(this._readMeasuredDimensions(items, firstOption, firstGroup)));\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\t/**\n\t * Reads option, group, and viewport dimensions from rendered elements.\n\t *\n\t * @param items - The options to process.\n\t * @param firstOption - The first option.\n\t * @param firstGroup - The first group.\n\t * @returns The read measured dimensions result.\n\t *\n\t * @since 23.9.0\n\t */\n\tprivate _readMeasuredDimensions(items: NgOption[], firstOption: NgOption | undefined, firstGroup: NgOption | undefined): PanelDimensions {\n\t\tconst optionEl = firstOption ? this._dropdown.querySelector(`#${firstOption.htmlId}`) : null;\n\t\tconst groupEl = firstGroup ? this._dropdown.querySelector(`#${firstGroup.htmlId}`) : null;\n\t\tif (!optionEl && !groupEl) {\n\t\t\treturn this._panelService.dimensions;\n\t\t}\n\n\t\tconst measuredOptionHeight = optionEl?.offsetHeight ?? 0;\n\t\tconst measuredGroupHeight = groupEl?.offsetHeight ?? 0;\n\t\tconst optionHeight = measuredOptionHeight || measuredGroupHeight;\n\t\tconst groupHeight = measuredGroupHeight || measuredOptionHeight;\n\n\t\tconst panelHeight = this._scrollablePanel().clientHeight;\n\t\tthis._panelService.setDimensions(optionHeight, panelHeight, groupHeight);\n\t\tthis._virtualPadding().style.height = `${this._panelService.getScrollHeight(items)}px`;\n\n\t\treturn this._panelService.dimensions;\n\t}\n\n\t/**\n\t * Emits `scrollToEnd` once the viewport reaches the end of the content.\n\t *\n\t * @param scrollTop - The scroll top.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _fireScrollToEnd(scrollTop: number) {\n\t\tif (this._scrollToEndFired || scrollTop === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst padding = this.virtualScroll() ? this._virtualPadding() : this._contentPanel();\n\n\t\tif (scrollTop + this._dropdown.clientHeight >= padding.clientHeight - 1) {\n\t\t\tthis._zone.run(() => this.scrollToEnd.emit());\n\t\t\tthis._scrollToEndFired = true;\n\t\t}\n\t}\n}\n","import { afterEveryRender, booleanAttribute, ChangeDetectionStrategy, Component, ElementRef, inject, input, OnInit, signal } from '@angular/core';\n\n/**\n * Declares an option for ng-select declared via HTML. Use the value input to bind the option's value and the element content as its label.\n *\n * @since 3.0.0\n */\n@Component({\n\tselector: 'ng-option',\n\tstandalone: true,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplate: `<ng-content />`,\n})\nexport class NgOptionComponent implements OnInit {\n\t/** Value bound to the option. The projected element content is used as the option's label. */\n\tpublic readonly value = input<any>();\n\t/** Whether the option is disabled and cannot be selected. */\n\tpublic readonly disabled = input(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\tpublic readonly elementRef = inject(ElementRef<HTMLElement>);\n\n\tpublic readonly label = signal<string>('');\n\tpublic readonly classes = signal<string>('');\n\n\t/** True when this component's inputs are initialized (after first change detection). */\n\tpublic readonly isInitialized = signal<boolean>(false);\n\n\t/**\n\t * Creates an instance of NgOptionComponent.\n\t *\n\t * @since 3.0.0\n\t */\n\tconstructor() {\n\t\tafterEveryRender(() => {\n\t\t\tconst element = this.elementRef.nativeElement;\n\t\t\t// textContent (not innerHTML): default labels are plain text, like Material viewValue.\n\t\t\tconst currentLabel = (element.textContent || '').trim();\n\t\t\tif (currentLabel !== this.label()) {\n\t\t\t\tthis.label.set(currentLabel);\n\t\t\t}\n\n\t\t\tconst currentClasses = Array.from(element.classList)\n\t\t\t\t.filter((className) => className !== 'ng-star-inserted')\n\t\t\t\t.join(' ');\n\t\t\tif (currentClasses !== this.classes()) {\n\t\t\t\tthis.classes.set(currentClasses);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Initializes the instance after Angular has assigned its inputs.\n\t *\n\t * @since 21.5.2\n\t */\n\tngOnInit(): void {\n\t\tthis.isInitialized.set(true);\n\t}\n}\n","import { OverlayContainer } from '@angular/cdk/overlay';\n\n/**\n * Provides an overlay container that preserves DOM containment when `appendTo` is configured.\n *\n * @since 24.0.5\n */\nexport class NgSelectAppendToOverlayContainer extends OverlayContainer {\n\t/**\n\t * Creates an instance of NgSelectAppendToOverlayContainer.\n\t *\n\t * @param appendToHost - The append to host.\n\t *\n\t * @since 24.0.5\n\t */\n\tconstructor(private readonly appendToHost: HTMLElement) {\n\t\tsuper();\n\t}\n\n\t/**\n\t * Creates the CDK overlay container inside the configured append target.\n\t *\n\t * @since 24.0.5\n\t */\n\tprotected override _createContainer(): void {\n\t\tsuper._createContainer();\n\t\tthis.appendToHost.appendChild(this._containerElement);\n\t}\n}\n","import {\n\tcreateFlexibleConnectedPositionStrategy,\n\tcreateNoopScrollStrategy,\n\tcreateOverlayRef,\n\tFlexibleConnectedPositionStrategy,\n\tOverlayContainer,\n\tOverlayRef,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Injector, runInInjectionContext, TemplateRef, ViewContainerRef } from '@angular/core';\n\nimport { DropdownPosition } from '../types/ng-select.types';\nimport { NgSelectAppendToOverlayContainer } from './dropdown-overlay-container';\nimport { DROPDOWN_POSITIONS } from './dropdown-position';\n\n/**\n * Describes the state required to open and position an ng-select dropdown overlay.\n *\n * @since 24.0.5\n */\nexport interface DropdownOverlayOpenRequest {\n\tappendTo: string | null;\n\tbeforeAttach?: (overlayRef: OverlayRef) => void;\n\torigin: HTMLElement;\n\tposition: DropdownPosition;\n\ttemplate: TemplateRef<unknown>;\n\tviewContainer: ViewContainerRef;\n}\n\n/**\n * Owns the CDK overlay resources used by one ng-select instance.\n *\n * @since 24.0.5\n */\nexport class DropdownOverlayManager {\n\toverlayRef: OverlayRef | null = null;\n\n\tprivate positionStrategy: FlexibleConnectedPositionStrategy | null = null;\n\tprivate portal: TemplatePortal | null = null;\n\tprivate overlayAppendTo: string | null = null;\n\tprivate overlayAppendToHost: HTMLElement | null = null;\n\tprivate appendToContainer: NgSelectAppendToOverlayContainer | null = null;\n\n\t/**\n\t * Creates an instance of DropdownOverlayManager.\n\t *\n\t * @param injector - The injector.\n\t * @param document - The document.\n\t * @param selectElement - The select element.\n\t *\n\t * @since 24.0.5\n\t */\n\tconstructor(\n\t\tprivate readonly injector: Injector,\n\t\tprivate readonly document: Document,\n\t\tprivate readonly selectElement: HTMLElement,\n\t) {}\n\n\t/**\n\t * Opens the dropdown panel.\n\t *\n\t * @param request - The request.\n\t * @returns The attached overlay reference.\n\t *\n\t * @since 24.0.5\n\t */\n\topen(request: DropdownOverlayOpenRequest): OverlayRef {\n\t\tconst overlayRef = this.ensureOverlay(request.origin, request.appendTo);\n\t\tthis.positionStrategy.withPositions([...(DROPDOWN_POSITIONS[request.position] ?? DROPDOWN_POSITIONS.auto)]);\n\t\t// Direction is snapshotted per open, matching the previous appendTo behavior.\n\t\toverlayRef.setDirection(this.document.documentElement?.dir === 'rtl' ? 'rtl' : 'ltr');\n\t\toverlayRef.updateSize({ width: request.origin.getBoundingClientRect().width });\n\t\t// The parent binds this reference into the portal content, so publish it before attachment.\n\t\trequest.beforeAttach?.(overlayRef);\n\n\t\tif (overlayRef.hasAttached()) {\n\t\t\toverlayRef.updatePosition();\n\t\t\treturn overlayRef;\n\t\t}\n\n\t\tthis.portal ??= new TemplatePortal(request.template, request.viewContainer);\n\t\toverlayRef.attach(this.portal);\n\t\treturn overlayRef;\n\t}\n\n\t/**\n\t * Closes the dropdown panel.\n\t *\n\t * @since 24.0.5\n\t */\n\tclose(): void {\n\t\tthis.overlayRef?.detach();\n\t}\n\n\t/**\n\t * Disposes the owned overlay resources.\n\t *\n\t * @since 24.0.5\n\t */\n\tdestroy(): void {\n\t\tthis.overlayRef?.dispose();\n\t\tthis.overlayRef = null;\n\t\tthis.positionStrategy = null;\n\t\tthis.overlayAppendToHost = null;\n\t\tthis.appendToContainer?.ngOnDestroy();\n\t\tthis.appendToContainer = null;\n\t}\n\n\t/**\n\t * Returns the existing overlay or creates one for the requested host.\n\t *\n\t * @param origin - The origin.\n\t * @param appendTo - The append to.\n\t * @returns The reusable overlay reference.\n\t *\n\t * @since 24.0.5\n\t */\n\tprivate ensureOverlay(origin: HTMLElement, appendTo: string | null): OverlayRef {\n\t\t// Resolve on each open so a selector keeps working when its matching element is replaced.\n\t\tconst appendToHost = appendTo ? this.resolveAppendToHost(appendTo) : null;\n\t\tif (this.overlayRef && (appendTo !== this.overlayAppendTo || appendToHost !== this.overlayAppendToHost)) {\n\t\t\tthis.destroy();\n\t\t}\n\n\t\tif (!this.overlayRef) {\n\t\t\tlet injector = this.injector;\n\t\t\tif (appendToHost) {\n\t\t\t\tthis.appendToContainer = runInInjectionContext(this.injector, () => new NgSelectAppendToOverlayContainer(appendToHost));\n\t\t\t\tinjector = Injector.create({\n\t\t\t\t\tparent: this.injector,\n\t\t\t\t\tproviders: [{ provide: OverlayContainer, useValue: this.appendToContainer }],\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.positionStrategy = createFlexibleConnectedPositionStrategy(injector, origin).withFlexibleDimensions(false).withPush(false);\n\t\t\tif (appendToHost) {\n\t\t\t\t// Supporting browsers paint in the Popover API top layer. The host still controls\n\t\t\t\t// DOM containment for ancestor-scoped styles and focus enclosure.\n\t\t\t\tthis.positionStrategy.withPopoverLocation({ type: 'parent', element: appendToHost });\n\t\t\t}\n\n\t\t\tthis.overlayAppendTo = appendTo;\n\t\t\tthis.overlayAppendToHost = appendToHost;\n\t\t\tthis.overlayRef = createOverlayRef(injector, {\n\t\t\t\tpositionStrategy: this.positionStrategy,\n\t\t\t\t// The panel handles ancestor scrolling, including containers without cdkScrollable.\n\t\t\t\tscrollStrategy: createNoopScrollStrategy(),\n\t\t\t\t// No panel animation needs to delay synchronous DOM removal.\n\t\t\t\tdisableAnimations: true,\n\t\t\t});\n\t\t}\n\n\t\treturn this.overlayRef;\n\t}\n\n\t/**\n\t * Resolves the configured `appendTo` selector within the select root.\n\t *\n\t * @param selector - The CSS selector to resolve.\n\t * @returns The element matching the selector.\n\t *\n\t * @since 24.0.5\n\t */\n\tprivate resolveAppendToHost(selector: string): HTMLElement {\n\t\tconst root = this.selectElement.getRootNode();\n\t\tconst scope = typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot ? root : this.document;\n\t\tconst host = scope.querySelector<HTMLElement>(selector);\n\t\tif (!host) {\n\t\t\tthrow new Error(`appendTo selector ${selector} did not found any parent element`);\n\t\t}\n\t\treturn host;\n\t}\n}\n","/**\n * Represents the class value formats accepted by ng-select and Angular's NgClass directive.\n *\n * @since 24.0.5\n */\nexport type ClassValue = string | string[] | Set<string> | Record<string, any>;\n\nconst INTERNAL_HOST_CLASSES = new Set([\n\t'ng-select',\n\t'ng-select-single',\n\t'ng-select-multiple',\n\t'ng-select-typeahead',\n\t'ng-select-taggable',\n\t'ng-select-searchable',\n\t'ng-select-clearable',\n\t'ng-select-opened',\n\t'ng-select-filtered',\n\t'ng-select-disabled',\n\t'ng-select-focused',\n\t'ng-select-top',\n\t'ng-select-bottom',\n\t'ng-select-left',\n\t'ng-select-right',\n]);\n\nconst ANGULAR_MANAGED_HOST_CLASSES = new Set([\n\t'ng-star-inserted',\n\t'ng-untouched',\n\t'ng-touched',\n\t'ng-pristine',\n\t'ng-dirty',\n\t'ng-valid',\n\t'ng-invalid',\n\t'ng-pending',\n\t'ng-submitted',\n]);\n\n/**\n * Reads consumer-provided classes from the ng-select host while excluding internal Angular and component state classes.\n *\n * @param element - The ng-select host element.\n * @returns A space-separated list of consumer-provided classes.\n *\n * @since 24.0.5\n */\nexport function readConsumerHostClasses(element: HTMLElement): string {\n\treturn Array.from(element.classList)\n\t\t.filter((className) => !INTERNAL_HOST_CLASSES.has(className) && !ANGULAR_MANAGED_HOST_CLASSES.has(className))\n\t\t.join(' ');\n}\n\n/**\n * Normalizes and merges supported class value formats into a unique class string.\n *\n * @param values - Class values to normalize and merge.\n * @returns A space-separated list of unique class names.\n *\n * @since 24.0.5\n */\nexport function mergeClassValues(...values: readonly (ClassValue | null | undefined)[]): string {\n\tconst classes = new Set<string>();\n\tfor (const value of values) {\n\t\tcollectClasses(classes, value);\n\t}\n\treturn Array.from(classes).join(' ');\n}\n\n/**\n * Adds normalized class values to the target set.\n *\n * @param target - The target.\n * @param value - The value to process.\n *\n * @since 24.0.5\n */\nfunction collectClasses(target: Set<string>, value: ClassValue | null | undefined): void {\n\tif (!value) {\n\t\treturn;\n\t}\n\n\tif (typeof value === 'string') {\n\t\tcollectClassString(target, value);\n\t\treturn;\n\t}\n\n\tif (Array.isArray(value) || value instanceof Set) {\n\t\tfor (const className of value) {\n\t\t\tcollectClassString(target, className);\n\t\t}\n\t\treturn;\n\t}\n\n\tfor (const [classNames, enabled] of Object.entries(value)) {\n\t\tif (enabled) {\n\t\t\tcollectClassString(target, classNames);\n\t\t}\n\t}\n}\n\n/**\n * Splits a class string and adds its non-empty names to the target set.\n *\n * @param target - The target.\n * @param value - The value to process.\n *\n * @since 24.0.5\n */\nfunction collectClassString(target: Set<string>, value: string): void {\n\tfor (const className of value.split(/\\s+/)) {\n\t\tif (className) {\n\t\t\ttarget.add(className);\n\t\t}\n\t}\n}\n","/**\n * Creates a unique identifier for an ng-select element.\n *\n * @since 3.0.0\n */\nexport function newId() {\n\t// First character is an 'a', it's good practice to tag id to begin with a letter\n\treturn 'axxxxxxxxxxx'.replace(/[x]/g, () => {\n\t\tconst val = (Math.random() * 16) | 0;\n\t\treturn val.toString(16);\n\t});\n}\n","const diacritics = {\n\t'\\u24B6': 'A',\n\t'\\uFF21': 'A',\n\t'\\u00C0': 'A',\n\t'\\u00C1': 'A',\n\t'\\u00C2': 'A',\n\t'\\u1EA6': 'A',\n\t'\\u1EA4': 'A',\n\t'\\u1EAA': 'A',\n\t'\\u1EA8': 'A',\n\t'\\u00C3': 'A',\n\t'\\u0100': 'A',\n\t'\\u0102': 'A',\n\t'\\u1EB0': 'A',\n\t'\\u1EAE': 'A',\n\t'\\u1EB4': 'A',\n\t'\\u1EB2': 'A',\n\t'\\u0226': 'A',\n\t'\\u01E0': 'A',\n\t'\\u00C4': 'A',\n\t'\\u01DE': 'A',\n\t'\\u1EA2': 'A',\n\t'\\u00C5': 'A',\n\t'\\u01FA': 'A',\n\t'\\u01CD': 'A',\n\t'\\u0200': 'A',\n\t'\\u0202': 'A',\n\t'\\u1EA0': 'A',\n\t'\\u1EAC': 'A',\n\t'\\u1EB6': 'A',\n\t'\\u1E00': 'A',\n\t'\\u0104': 'A',\n\t'\\u023A': 'A',\n\t'\\u2C6F': 'A',\n\t'\\uA732': 'AA',\n\t'\\u00C6': 'AE',\n\t'\\u01FC': 'AE',\n\t'\\u01E2': 'AE',\n\t'\\uA734': 'AO',\n\t'\\uA736': 'AU',\n\t'\\uA738': 'AV',\n\t'\\uA73A': 'AV',\n\t'\\uA73C': 'AY',\n\t'\\u24B7': 'B',\n\t'\\uFF22': 'B',\n\t'\\u1E02': 'B',\n\t'\\u1E04': 'B',\n\t'\\u1E06': 'B',\n\t'\\u0243': 'B',\n\t'\\u0182': 'B',\n\t'\\u0181': 'B',\n\t'\\u24B8': 'C',\n\t'\\uFF23': 'C',\n\t'\\u0106': 'C',\n\t'\\u0108': 'C',\n\t'\\u010A': 'C',\n\t'\\u010C': 'C',\n\t'\\u00C7': 'C',\n\t'\\u1E08': 'C',\n\t'\\u0187': 'C',\n\t'\\u023B': 'C',\n\t'\\uA73E': 'C',\n\t'\\u24B9': 'D',\n\t'\\uFF24': 'D',\n\t'\\u1E0A': 'D',\n\t'\\u010E': 'D',\n\t'\\u1E0C': 'D',\n\t'\\u1E10': 'D',\n\t'\\u1E12': 'D',\n\t'\\u1E0E': 'D',\n\t'\\u0110': 'D',\n\t'\\u018B': 'D',\n\t'\\u018A': 'D',\n\t'\\u0189': 'D',\n\t'\\uA779': 'D',\n\t'\\u01F1': 'DZ',\n\t'\\u01C4': 'DZ',\n\t'\\u01F2': 'Dz',\n\t'\\u01C5': 'Dz',\n\t'\\u24BA': 'E',\n\t'\\uFF25': 'E',\n\t'\\u00C8': 'E',\n\t'\\u00C9': 'E',\n\t'\\u00CA': 'E',\n\t'\\u1EC0': 'E',\n\t'\\u1EBE': 'E',\n\t'\\u1EC4': 'E',\n\t'\\u1EC2': 'E',\n\t'\\u1EBC': 'E',\n\t'\\u0112': 'E',\n\t'\\u1E14': 'E',\n\t'\\u1E16': 'E',\n\t'\\u0114': 'E',\n\t'\\u0116': 'E',\n\t'\\u00CB': 'E',\n\t'\\u1EBA': 'E',\n\t'\\u011A': 'E',\n\t'\\u0204': 'E',\n\t'\\u0206': 'E',\n\t'\\u1EB8': 'E',\n\t'\\u1EC6': 'E',\n\t'\\u0228': 'E',\n\t'\\u1E1C': 'E',\n\t'\\u0118': 'E',\n\t'\\u1E18': 'E',\n\t'\\u1E1A': 'E',\n\t'\\u0190': 'E',\n\t'\\u018E': 'E',\n\t'\\u24BB': 'F',\n\t'\\uFF26': 'F',\n\t'\\u1E1E': 'F',\n\t'\\u0191': 'F',\n\t'\\uA77B': 'F',\n\t'\\u24BC': 'G',\n\t'\\uFF27': 'G',\n\t'\\u01F4': 'G',\n\t'\\u011C': 'G',\n\t'\\u1E20': 'G',\n\t'\\u011E': 'G',\n\t'\\u0120': 'G',\n\t'\\u01E6': 'G',\n\t'\\u0122': 'G',\n\t'\\u01E4': 'G',\n\t'\\u0193': 'G',\n\t'\\uA7A0': 'G',\n\t'\\uA77D': 'G',\n\t'\\uA77E': 'G',\n\t'\\u24BD': 'H',\n\t'\\uFF28': 'H',\n\t'\\u0124': 'H',\n\t'\\u1E22': 'H',\n\t'\\u1E26': 'H',\n\t'\\u021E': 'H',\n\t'\\u1E24': 'H',\n\t'\\u1E28': 'H',\n\t'\\u1E2A': 'H',\n\t'\\u0126': 'H',\n\t'\\u2C67': 'H',\n\t'\\u2C75': 'H',\n\t'\\uA78D': 'H',\n\t'\\u24BE': 'I',\n\t'\\uFF29': 'I',\n\t'\\u00CC': 'I',\n\t'\\u00CD': 'I',\n\t'\\u00CE': 'I',\n\t'\\u0128': 'I',\n\t'\\u012A': 'I',\n\t'\\u012C': 'I',\n\t'\\u0130': 'I',\n\t'\\u00CF': 'I',\n\t'\\u1E2E': 'I',\n\t'\\u1EC8': 'I',\n\t'\\u01CF': 'I',\n\t'\\u0208': 'I',\n\t'\\u020A': 'I',\n\t'\\u1ECA': 'I',\n\t'\\u012E': 'I',\n\t'\\u1E2C': 'I',\n\t'\\u0197': 'I',\n\t'\\u24BF': 'J',\n\t'\\uFF2A': 'J',\n\t'\\u0134': 'J',\n\t'\\u0248': 'J',\n\t'\\u24C0': 'K',\n\t'\\uFF2B': 'K',\n\t'\\u1E30': 'K',\n\t'\\u01E8': 'K',\n\t'\\u1E32': 'K',\n\t'\\u0136': 'K',\n\t'\\u1E34': 'K',\n\t'\\u0198': 'K',\n\t'\\u2C69': 'K',\n\t'\\uA740': 'K',\n\t'\\uA742': 'K',\n\t'\\uA744': 'K',\n\t'\\uA7A2': 'K',\n\t'\\u24C1': 'L',\n\t'\\uFF2C': 'L',\n\t'\\u013F': 'L',\n\t'\\u0139': 'L',\n\t'\\u013D': 'L',\n\t'\\u1E36': 'L',\n\t'\\u1E38': 'L',\n\t'\\u013B': 'L',\n\t'\\u1E3C': 'L',\n\t'\\u1E3A': 'L',\n\t'\\u0141': 'L',\n\t'\\u023D': 'L',\n\t'\\u2C62': 'L',\n\t'\\u2C60': 'L',\n\t'\\uA748': 'L',\n\t'\\uA746': 'L',\n\t'\\uA780': 'L',\n\t'\\u01C7': 'LJ',\n\t'\\u01C8': 'Lj',\n\t'\\u24C2': 'M',\n\t'\\uFF2D': 'M',\n\t'\\u1E3E': 'M',\n\t'\\u1E40': 'M',\n\t'\\u1E42': 'M',\n\t'\\u2C6E': 'M',\n\t'\\u019C': 'M',\n\t'\\u24C3': 'N',\n\t'\\uFF2E': 'N',\n\t'\\u01F8': 'N',\n\t'\\u0143': 'N',\n\t'\\u00D1': 'N',\n\t'\\u1E44': 'N',\n\t'\\u0147': 'N',\n\t'\\u1E46': 'N',\n\t'\\u0145': 'N',\n\t'\\u1E4A': 'N',\n\t'\\u1E48': 'N',\n\t'\\u0220': 'N',\n\t'\\u019D': 'N',\n\t'\\uA790': 'N',\n\t'\\uA7A4': 'N',\n\t'\\u01CA': 'NJ',\n\t'\\u01CB': 'Nj',\n\t'\\u24C4': 'O',\n\t'\\uFF2F': 'O',\n\t'\\u00D2': 'O',\n\t'\\u00D3': 'O',\n\t'\\u00D4': 'O',\n\t'\\u1ED2': 'O',\n\t'\\u1ED0': 'O',\n\t'\\u1ED6': 'O',\n\t'\\u1ED4': 'O',\n\t'\\u00D5': 'O',\n\t'\\u1E4C': 'O',\n\t'\\u022C': 'O',\n\t'\\u1E4E': 'O',\n\t'\\u014C': 'O',\n\t'\\u1E50': 'O',\n\t'\\u1E52': 'O',\n\t'\\u014E': 'O',\n\t'\\u022E': 'O',\n\t'\\u0230': 'O',\n\t'\\u00D6': 'O',\n\t'\\u022A': 'O',\n\t'\\u1ECE': 'O',\n\t'\\u0150': 'O',\n\t'\\u01D1': 'O',\n\t'\\u020C': 'O',\n\t'\\u020E': 'O',\n\t'\\u01A0': 'O',\n\t'\\u1EDC': 'O',\n\t'\\u1EDA': 'O',\n\t'\\u1EE0': 'O',\n\t'\\u1EDE': 'O',\n\t'\\u1EE2': 'O',\n\t'\\u1ECC': 'O',\n\t'\\u1ED8': 'O',\n\t'\\u01EA': 'O',\n\t'\\u01EC': 'O',\n\t'\\u00D8': 'O',\n\t'\\u01FE': 'O',\n\t'\\u0186': 'O',\n\t'\\u019F': 'O',\n\t'\\uA74A': 'O',\n\t'\\uA74C': 'O',\n\t'\\u01A2': 'OI',\n\t'\\uA74E': 'OO',\n\t'\\u0222': 'OU',\n\t'\\u24C5': 'P',\n\t'\\uFF30': 'P',\n\t'\\u1E54': 'P',\n\t'\\u1E56': 'P',\n\t'\\u01A4': 'P',\n\t'\\u2C63': 'P',\n\t'\\uA750': 'P',\n\t'\\uA752': 'P',\n\t'\\uA754': 'P',\n\t'\\u24C6': 'Q',\n\t'\\uFF31': 'Q',\n\t'\\uA756': 'Q',\n\t'\\uA758': 'Q',\n\t'\\u024A': 'Q',\n\t'\\u24C7': 'R',\n\t'\\uFF32': 'R',\n\t'\\u0154': 'R',\n\t'\\u1E58': 'R',\n\t'\\u0158': 'R',\n\t'\\u0210': 'R',\n\t'\\u0212': 'R',\n\t'\\u1E5A': 'R',\n\t'\\u1E5C': 'R',\n\t'\\u0156': 'R',\n\t'\\u1E5E': 'R',\n\t'\\u024C': 'R',\n\t'\\u2C64': 'R',\n\t'\\uA75A': 'R',\n\t'\\uA7A6': 'R',\n\t'\\uA782': 'R',\n\t'\\u24C8': 'S',\n\t'\\uFF33': 'S',\n\t'\\u1E9E': 'S',\n\t'\\u015A': 'S',\n\t'\\u1E64': 'S',\n\t'\\u015C': 'S',\n\t'\\u1E60': 'S',\n\t'\\u0160': 'S',\n\t'\\u1E66': 'S',\n\t'\\u1E62': 'S',\n\t'\\u1E68': 'S',\n\t'\\u0218': 'S',\n\t'\\u015E': 'S',\n\t'\\u2C7E': 'S',\n\t'\\uA7A8': 'S',\n\t'\\uA784': 'S',\n\t'\\u24C9': 'T',\n\t'\\uFF34': 'T',\n\t'\\u1E6A': 'T',\n\t'\\u0164': 'T',\n\t'\\u1E6C': 'T',\n\t'\\u021A': 'T',\n\t'\\u0162': 'T',\n\t'\\u1E70': 'T',\n\t'\\u1E6E': 'T',\n\t'\\u0166': 'T',\n\t'\\u01AC': 'T',\n\t'\\u01AE': 'T',\n\t'\\u023E': 'T',\n\t'\\uA786': 'T',\n\t'\\uA728': 'TZ',\n\t'\\u24CA': 'U',\n\t'\\uFF35': 'U',\n\t'\\u00D9': 'U',\n\t'\\u00DA': 'U',\n\t'\\u00DB': 'U',\n\t'\\u0168': 'U',\n\t'\\u1E78': 'U',\n\t'\\u016A': 'U',\n\t'\\u1E7A': 'U',\n\t'\\u016C': 'U',\n\t'\\u00DC': 'U',\n\t'\\u01DB': 'U',\n\t'\\u01D7': 'U',\n\t'\\u01D5': 'U',\n\t'\\u01D9': 'U',\n\t'\\u1EE6': 'U',\n\t'\\u016E': 'U',\n\t'\\u0170': 'U',\n\t'\\u01D3': 'U',\n\t'\\u0214': 'U',\n\t'\\u0216': 'U',\n\t'\\u01AF': 'U',\n\t'\\u1EEA': 'U',\n\t'\\u1EE8': 'U',\n\t'\\u1EEE': 'U',\n\t'\\u1EEC': 'U',\n\t'\\u1EF0': 'U',\n\t'\\u1EE4': 'U',\n\t'\\u1E72': 'U',\n\t'\\u0172': 'U',\n\t'\\u1E76': 'U',\n\t'\\u1E74': 'U',\n\t'\\u0244': 'U',\n\t'\\u24CB': 'V',\n\t'\\uFF36': 'V',\n\t'\\u1E7C': 'V',\n\t'\\u1E7E': 'V',\n\t'\\u01B2': 'V',\n\t'\\uA75E': 'V',\n\t'\\u0245': 'V',\n\t'\\uA760': 'VY',\n\t'\\u24CC': 'W',\n\t'\\uFF37': 'W',\n\t'\\u1E80': 'W',\n\t'\\u1E82': 'W',\n\t'\\u0174': 'W',\n\t'\\u1E86': 'W',\n\t'\\u1E84': 'W',\n\t'\\u1E88': 'W',\n\t'\\u2C72': 'W',\n\t'\\u24CD': 'X',\n\t'\\uFF38': 'X',\n\t'\\u1E8A': 'X',\n\t'\\u1E8C': 'X',\n\t'\\u24CE': 'Y',\n\t'\\uFF39': 'Y',\n\t'\\u1EF2': 'Y',\n\t'\\u00DD': 'Y',\n\t'\\u0176': 'Y',\n\t'\\u1EF8': 'Y',\n\t'\\u0232': 'Y',\n\t'\\u1E8E': 'Y',\n\t'\\u0178': 'Y',\n\t'\\u1EF6': 'Y',\n\t'\\u1EF4': 'Y',\n\t'\\u01B3': 'Y',\n\t'\\u024E': 'Y',\n\t'\\u1EFE': 'Y',\n\t'\\u24CF': 'Z',\n\t'\\uFF3A': 'Z',\n\t'\\u0179': 'Z',\n\t'\\u1E90': 'Z',\n\t'\\u017B': 'Z',\n\t'\\u017D': 'Z',\n\t'\\u1E92': 'Z',\n\t'\\u1E94': 'Z',\n\t'\\u01B5': 'Z',\n\t'\\u0224': 'Z',\n\t'\\u2C7F': 'Z',\n\t'\\u2C6B': 'Z',\n\t'\\uA762': 'Z',\n\t'\\u24D0': 'a',\n\t'\\uFF41': 'a',\n\t'\\u1E9A': 'a',\n\t'\\u00E0': 'a',\n\t'\\u00E1': 'a',\n\t'\\u00E2': 'a',\n\t'\\u1EA7': 'a',\n\t'\\u1EA5': 'a',\n\t'\\u1EAB': 'a',\n\t'\\u1EA9': 'a',\n\t'\\u00E3': 'a',\n\t'\\u0101': 'a',\n\t'\\u0103': 'a',\n\t'\\u1EB1': 'a',\n\t'\\u1EAF': 'a',\n\t'\\u1EB5': 'a',\n\t'\\u1EB3': 'a',\n\t'\\u0227': 'a',\n\t'\\u01E1': 'a',\n\t'\\u00E4': 'a',\n\t'\\u01DF': 'a',\n\t'\\u1EA3': 'a',\n\t'\\u00E5': 'a',\n\t'\\u01FB': 'a',\n\t'\\u01CE': 'a',\n\t'\\u0201': 'a',\n\t'\\u0203': 'a',\n\t'\\u1EA1': 'a',\n\t'\\u1EAD': 'a',\n\t'\\u1EB7': 'a',\n\t'\\u1E01': 'a',\n\t'\\u0105': 'a',\n\t'\\u2C65': 'a',\n\t'\\u0250': 'a',\n\t'\\uA733': 'aa',\n\t'\\u00E6': 'ae',\n\t'\\u01FD': 'ae',\n\t'\\u01E3': 'ae',\n\t'\\uA735': 'ao',\n\t'\\uA737': 'au',\n\t'\\uA739': 'av',\n\t'\\uA73B': 'av',\n\t'\\uA73D': 'ay',\n\t'\\u24D1': 'b',\n\t'\\uFF42': 'b',\n\t'\\u1E03': 'b',\n\t'\\u1E05': 'b',\n\t'\\u1E07': 'b',\n\t'\\u0180': 'b',\n\t'\\u0183': 'b',\n\t'\\u0253': 'b',\n\t'\\u24D2': 'c',\n\t'\\uFF43': 'c',\n\t'\\u0107': 'c',\n\t'\\u0109': 'c',\n\t'\\u010B': 'c',\n\t'\\u010D': 'c',\n\t'\\u00E7': 'c',\n\t'\\u1E09': 'c',\n\t'\\u0188': 'c',\n\t'\\u023C': 'c',\n\t'\\uA73F': 'c',\n\t'\\u2184': 'c',\n\t'\\u24D3': 'd',\n\t'\\uFF44': 'd',\n\t'\\u1E0B': 'd',\n\t'\\u010F': 'd',\n\t'\\u1E0D': 'd',\n\t'\\u1E11': 'd',\n\t'\\u1E13': 'd',\n\t'\\u1E0F': 'd',\n\t'\\u0111': 'd',\n\t'\\u018C': 'd',\n\t'\\u0256': 'd',\n\t'\\u0257': 'd',\n\t'\\uA77A': 'd',\n\t'\\u01F3': 'dz',\n\t'\\u01C6': 'dz',\n\t'\\u24D4': 'e',\n\t'\\uFF45': 'e',\n\t'\\u00E8': 'e',\n\t'\\u00E9': 'e',\n\t'\\u00EA': 'e',\n\t'\\u1EC1': 'e',\n\t'\\u1EBF': 'e',\n\t'\\u1EC5': 'e',\n\t'\\u1EC3': 'e',\n\t'\\u1EBD': 'e',\n\t'\\u0113': 'e',\n\t'\\u1E15': 'e',\n\t'\\u1E17': 'e',\n\t'\\u0115': 'e',\n\t'\\u0117': 'e',\n\t'\\u00EB': 'e',\n\t'\\u1EBB': 'e',\n\t'\\u011B': 'e',\n\t'\\u0205': 'e',\n\t'\\u0207': 'e',\n\t'\\u1EB9': 'e',\n\t'\\u1EC7': 'e',\n\t'\\u0229': 'e',\n\t'\\u1E1D': 'e',\n\t'\\u0119': 'e',\n\t'\\u1E19': 'e',\n\t'\\u1E1B': 'e',\n\t'\\u0247': 'e',\n\t'\\u025B': 'e',\n\t'\\u01DD': 'e',\n\t'\\u24D5': 'f',\n\t'\\uFF46': 'f',\n\t'\\u1E1F': 'f',\n\t'\\u0192': 'f',\n\t'\\uA77C': 'f',\n\t'\\u24D6': 'g',\n\t'\\uFF47': 'g',\n\t'\\u01F5': 'g',\n\t'\\u011D': 'g',\n\t'\\u1E21': 'g',\n\t'\\u011F': 'g',\n\t'\\u0121': 'g',\n\t'\\u01E7': 'g',\n\t'\\u0123': 'g',\n\t'\\u01E5': 'g',\n\t'\\u0260': 'g',\n\t'\\uA7A1': 'g',\n\t'\\u1D79': 'g',\n\t'\\uA77F': 'g',\n\t'\\u24D7': 'h',\n\t'\\uFF48': 'h',\n\t'\\u0125': 'h',\n\t'\\u1E23': 'h',\n\t'\\u1E27': 'h',\n\t'\\u021F': 'h',\n\t'\\u1E25': 'h',\n\t'\\u1E29': 'h',\n\t'\\u1E2B': 'h',\n\t'\\u1E96': 'h',\n\t'\\u0127': 'h',\n\t'\\u2C68': 'h',\n\t'\\u2C76': 'h',\n\t'\\u0265': 'h',\n\t'\\u0195': 'hv',\n\t'\\u24D8': 'i',\n\t'\\uFF49': 'i',\n\t'\\u00EC': 'i',\n\t'\\u00ED': 'i',\n\t'\\u00EE': 'i',\n\t'\\u0129': 'i',\n\t'\\u012B': 'i',\n\t'\\u012D': 'i',\n\t'\\u00EF': 'i',\n\t'\\u1E2F': 'i',\n\t'\\u1EC9': 'i',\n\t'\\u01D0': 'i',\n\t'\\u0209': 'i',\n\t'\\u020B': 'i',\n\t'\\u1ECB': 'i',\n\t'\\u012F': 'i',\n\t'\\u1E2D': 'i',\n\t'\\u0268': 'i',\n\t'\\u0131': 'i',\n\t'\\u24D9': 'j',\n\t'\\uFF4A': 'j',\n\t'\\u0135': 'j',\n\t'\\u01F0': 'j',\n\t'\\u0249': 'j',\n\t'\\u24DA': 'k',\n\t'\\uFF4B': 'k',\n\t'\\u1E31': 'k',\n\t'\\u01E9': 'k',\n\t'\\u1E33': 'k',\n\t'\\u0137': 'k',\n\t'\\u1E35': 'k',\n\t'\\u0199': 'k',\n\t'\\u2C6A': 'k',\n\t'\\uA741': 'k',\n\t'\\uA743': 'k',\n\t'\\uA745': 'k',\n\t'\\uA7A3': 'k',\n\t'\\u24DB': 'l',\n\t'\\uFF4C': 'l',\n\t'\\u0140': 'l',\n\t'\\u013A': 'l',\n\t'\\u013E': 'l',\n\t'\\u1E37': 'l',\n\t'\\u1E39': 'l',\n\t'\\u013C': 'l',\n\t'\\u1E3D': 'l',\n\t'\\u1E3B': 'l',\n\t'\\u017F': 'l',\n\t'\\u0142': 'l',\n\t'\\u019A': 'l',\n\t'\\u026B': 'l',\n\t'\\u2C61': 'l',\n\t'\\uA749': 'l',\n\t'\\uA781': 'l',\n\t'\\uA747': 'l',\n\t'\\u01C9': 'lj',\n\t'\\u24DC': 'm',\n\t'\\uFF4D': 'm',\n\t'\\u1E3F': 'm',\n\t'\\u1E41': 'm',\n\t'\\u1E43': 'm',\n\t'\\u0271': 'm',\n\t'\\u026F': 'm',\n\t'\\u24DD': 'n',\n\t'\\uFF4E': 'n',\n\t'\\u01F9': 'n',\n\t'\\u0144': 'n',\n\t'\\u00F1': 'n',\n\t'\\u1E45': 'n',\n\t'\\u0148': 'n',\n\t'\\u1E47': 'n',\n\t'\\u0146': 'n',\n\t'\\u1E4B': 'n',\n\t'\\u1E49': 'n',\n\t'\\u019E': 'n',\n\t'\\u0272': 'n',\n\t'\\u0149': 'n',\n\t'\\uA791': 'n',\n\t'\\uA7A5': 'n',\n\t'\\u01CC': 'nj',\n\t'\\u24DE': 'o',\n\t'\\uFF4F': 'o',\n\t'\\u00F2': 'o',\n\t'\\u00F3': 'o',\n\t'\\u00F4': 'o',\n\t'\\u1ED3': 'o',\n\t'\\u1ED1': 'o',\n\t'\\u1ED7': 'o',\n\t'\\u1ED5': 'o',\n\t'\\u00F5': 'o',\n\t'\\u1E4D': 'o',\n\t'\\u022D': 'o',\n\t'\\u1E4F': 'o',\n\t'\\u014D': 'o',\n\t'\\u1E51': 'o',\n\t'\\u1E53': 'o',\n\t'\\u014F': 'o',\n\t'\\u022F': 'o',\n\t'\\u0231': 'o',\n\t'\\u00F6': 'o',\n\t'\\u022B': 'o',\n\t'\\u1ECF': 'o',\n\t'\\u0151': 'o',\n\t'\\u01D2': 'o',\n\t'\\u020D': 'o',\n\t'\\u020F': 'o',\n\t'\\u01A1': 'o',\n\t'\\u1EDD': 'o',\n\t'\\u1EDB': 'o',\n\t'\\u1EE1': 'o',\n\t'\\u1EDF': 'o',\n\t'\\u1EE3': 'o',\n\t'\\u1ECD': 'o',\n\t'\\u1ED9': 'o',\n\t'\\u01EB': 'o',\n\t'\\u01ED': 'o',\n\t'\\u00F8': 'o',\n\t'\\u01FF': 'o',\n\t'\\u0254': 'o',\n\t'\\uA74B': 'o',\n\t'\\uA74D': 'o',\n\t'\\u0275': 'o',\n\t'\\u01A3': 'oi',\n\t'\\u0223': 'ou',\n\t'\\uA74F': 'oo',\n\t'\\u24DF': 'p',\n\t'\\uFF50': 'p',\n\t'\\u1E55': 'p',\n\t'\\u1E57': 'p',\n\t'\\u01A5': 'p',\n\t'\\u1D7D': 'p',\n\t'\\uA751': 'p',\n\t'\\uA753': 'p',\n\t'\\uA755': 'p',\n\t'\\u24E0': 'q',\n\t'\\uFF51': 'q',\n\t'\\u024B': 'q',\n\t'\\uA757': 'q',\n\t'\\uA759': 'q',\n\t'\\u24E1': 'r',\n\t'\\uFF52': 'r',\n\t'\\u0155': 'r',\n\t'\\u1E59': 'r',\n\t'\\u0159': 'r',\n\t'\\u0211': 'r',\n\t'\\u0213': 'r',\n\t'\\u1E5B': 'r',\n\t'\\u1E5D': 'r',\n\t'\\u0157': 'r',\n\t'\\u1E5F': 'r',\n\t'\\u024D': 'r',\n\t'\\u027D': 'r',\n\t'\\uA75B': 'r',\n\t'\\uA7A7': 'r',\n\t'\\uA783': 'r',\n\t'\\u24E2': 's',\n\t'\\uFF53': 's',\n\t'\\u00DF': 's',\n\t'\\u015B': 's',\n\t'\\u1E65': 's',\n\t'\\u015D': 's',\n\t'\\u1E61': 's',\n\t'\\u0161': 's',\n\t'\\u1E67': 's',\n\t'\\u1E63': 's',\n\t'\\u1E69': 's',\n\t'\\u0219': 's',\n\t'\\u015F': 's',\n\t'\\u023F': 's',\n\t'\\uA7A9': 's',\n\t'\\uA785': 's',\n\t'\\u1E9B': 's',\n\t'\\u24E3': 't',\n\t'\\uFF54': 't',\n\t'\\u1E6B': 't',\n\t'\\u1E97': 't',\n\t'\\u0165': 't',\n\t'\\u1E6D': 't',\n\t'\\u021B': 't',\n\t'\\u0163': 't',\n\t'\\u1E71': 't',\n\t'\\u1E6F': 't',\n\t'\\u0167': 't',\n\t'\\u01AD': 't',\n\t'\\u0288': 't',\n\t'\\u2C66': 't',\n\t'\\uA787': 't',\n\t'\\uA729': 'tz',\n\t'\\u24E4': 'u',\n\t'\\uFF55': 'u',\n\t'\\u00F9': 'u',\n\t'\\u00FA': 'u',\n\t'\\u00FB': 'u',\n\t'\\u0169': 'u',\n\t'\\u1E79': 'u',\n\t'\\u016B': 'u',\n\t'\\u1E7B': 'u',\n\t'\\u016D': 'u',\n\t'\\u00FC': 'u',\n\t'\\u01DC': 'u',\n\t'\\u01D8': 'u',\n\t'\\u01D6': 'u',\n\t'\\u01DA': 'u',\n\t'\\u1EE7': 'u',\n\t'\\u016F': 'u',\n\t'\\u0171': 'u',\n\t'\\u01D4': 'u',\n\t'\\u0215': 'u',\n\t'\\u0217': 'u',\n\t'\\u01B0': 'u',\n\t'\\u1EEB': 'u',\n\t'\\u1EE9': 'u',\n\t'\\u1EEF': 'u',\n\t'\\u1EED': 'u',\n\t'\\u1EF1': 'u',\n\t'\\u1EE5': 'u',\n\t'\\u1E73': 'u',\n\t'\\u0173': 'u',\n\t'\\u1E77': 'u',\n\t'\\u1E75': 'u',\n\t'\\u0289': 'u',\n\t'\\u24E5': 'v',\n\t'\\uFF56': 'v',\n\t'\\u1E7D': 'v',\n\t'\\u1E7F': 'v',\n\t'\\u028B': 'v',\n\t'\\uA75F': 'v',\n\t'\\u028C': 'v',\n\t'\\uA761': 'vy',\n\t'\\u24E6': 'w',\n\t'\\uFF57': 'w',\n\t'\\u1E81': 'w',\n\t'\\u1E83': 'w',\n\t'\\u0175': 'w',\n\t'\\u1E87': 'w',\n\t'\\u1E85': 'w',\n\t'\\u1E98': 'w',\n\t'\\u1E89': 'w',\n\t'\\u2C73': 'w',\n\t'\\u24E7': 'x',\n\t'\\uFF58': 'x',\n\t'\\u1E8B': 'x',\n\t'\\u1E8D': 'x',\n\t'\\u24E8': 'y',\n\t'\\uFF59': 'y',\n\t'\\u1EF3': 'y',\n\t'\\u00FD': 'y',\n\t'\\u0177': 'y',\n\t'\\u1EF9': 'y',\n\t'\\u0233': 'y',\n\t'\\u1E8F': 'y',\n\t'\\u00FF': 'y',\n\t'\\u1EF7': 'y',\n\t'\\u1E99': 'y',\n\t'\\u1EF5': 'y',\n\t'\\u01B4': 'y',\n\t'\\u024F': 'y',\n\t'\\u1EFF': 'y',\n\t'\\u24E9': 'z',\n\t'\\uFF5A': 'z',\n\t'\\u017A': 'z',\n\t'\\u1E91': 'z',\n\t'\\u017C': 'z',\n\t'\\u017E': 'z',\n\t'\\u1E93': 'z',\n\t'\\u1E95': 'z',\n\t'\\u01B6': 'z',\n\t'\\u0225': 'z',\n\t'\\u0240': 'z',\n\t'\\u2C6C': 'z',\n\t'\\uA763': 'z',\n\t'\\u0386': '\\u0391',\n\t'\\u0388': '\\u0395',\n\t'\\u0389': '\\u0397',\n\t'\\u038A': '\\u0399',\n\t'\\u03AA': '\\u0399',\n\t'\\u038C': '\\u039F',\n\t'\\u038E': '\\u03A5',\n\t'\\u03AB': '\\u03A5',\n\t'\\u038F': '\\u03A9',\n\t'\\u03AC': '\\u03B1',\n\t'\\u03AD': '\\u03B5',\n\t'\\u03AE': '\\u03B7',\n\t'\\u03AF': '\\u03B9',\n\t'\\u03CA': '\\u03B9',\n\t'\\u0390': '\\u03B9',\n\t'\\u03CC': '\\u03BF',\n\t'\\u03CD': '\\u03C5',\n\t'\\u03CB': '\\u03C5',\n\t'\\u03B0': '\\u03C5',\n\t'\\u03C9': '\\u03C9',\n\t'\\u03C2': '\\u03C3',\n};\n\n/**\n * Normalizes accented and special characters for case-insensitive option searching.\n *\n * @param text - The text.\n * @returns The strip special chars result.\n *\n * @since 3.0.0\n */\nexport function stripSpecialChars(text: string): string {\n\tconst match = (a: string): string => diacritics[a] || a;\n\t// eslint-disable-next-line no-control-regex\n\treturn text.replace(/[^\\u0000-\\u007E]/g, match);\n}\n","import { NgSelectComponent } from './ng-select/ng-select.component';\nimport { SelectionModel } from './selection-model';\nimport { newId } from './types/id';\nimport { NgOption } from './types/ng-select.types';\nimport * as searchHelper from './utils/search-helper';\nimport { isDefined, isFunction, isObject } from './utils/value-utils';\n\ntype OptionGroups = Map<string | NgOption, NgOption[]>;\n\n/**\n * Manages source, filtered, grouped, marked, and selected options for an ng-select instance.\n *\n * @since 3.0.0\n */\nexport class ItemsList {\n\tprivate _groups: OptionGroups;\n\n\t/**\n\t * Creates an instance of ItemsList.\n\t *\n\t * @param _ngSelect - The ng select.\n\t * @param _selectionModel - The selection model.\n\t *\n\t * @since 3.0.0\n\t */\n\tconstructor(\n\t\tprivate _ngSelect: NgSelectComponent,\n\t\tprivate _selectionModel: SelectionModel,\n\t) {}\n\n\tprivate _items: NgOption[] = [];\n\n\t/**\n\t * Gets the items.\n\t *\n\t * @returns The items.\n\t *\n\t * @since 3.0.0\n\t */\n\tget items(): NgOption[] {\n\t\treturn this._items;\n\t}\n\n\tprivate _filteredItems: NgOption[] = [];\n\n\t/**\n\t * Gets the filtered items.\n\t *\n\t * @returns The filtered items.\n\t *\n\t * @since 3.0.0\n\t */\n\tget filteredItems(): NgOption[] {\n\t\treturn this._filteredItems;\n\t}\n\n\tprivate _markedIndex = -1;\n\n\t/**\n\t * Gets the marked index.\n\t *\n\t * @returns The marked index.\n\t *\n\t * @since 3.0.0\n\t */\n\tget markedIndex(): number {\n\t\treturn this._markedIndex;\n\t}\n\n\t/**\n\t * Gets the selected items.\n\t *\n\t * @returns The selected items.\n\t *\n\t * @since 3.0.0\n\t */\n\tget selectedItems() {\n\t\treturn this._selectionModel.value;\n\t}\n\n\t/**\n\t * Gets the marked item.\n\t *\n\t * @returns The marked item.\n\t *\n\t * @since 3.0.0\n\t */\n\tget markedItem(): NgOption {\n\t\treturn this._filteredItems[this._markedIndex];\n\t}\n\n\t/**\n\t * Determines whether every available option is already selected.\n\t *\n\t * @returns Whether no items to select.\n\t *\n\t * @since 3.0.0\n\t */\n\tget noItemsToSelect(): boolean {\n\t\treturn this._ngSelect.hideSelected() && this._items.length === this.selectedItems.length;\n\t}\n\n\t/**\n\t * Determines whether the configured selection limit has been reached.\n\t *\n\t * @returns Whether max items selected.\n\t *\n\t * @since 3.0.0\n\t */\n\tget maxItemsSelected(): boolean {\n\t\treturn this._ngSelect.multiple() && this._ngSelect.maxSelectedItems() <= this.selectedItems.length;\n\t}\n\n\t/**\n\t * Gets the last selected item.\n\t *\n\t * @returns The last selected item.\n\t *\n\t * @since 3.0.0\n\t */\n\tget lastSelectedItem() {\n\t\tlet i = this.selectedItems.length - 1;\n\t\tfor (; i >= 0; i--) {\n\t\t\tconst item = this.selectedItems[i];\n\t\t\tif (!item.disabled) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\t/**\n\t * Maps and groups a new immutable collection of source items.\n\t *\n\t * @param items - The options to process.\n\t *\n\t * @since 3.0.0\n\t */\n\tsetItems(items: readonly any[]) {\n\t\tthis._items = items.map((item, index) => this.mapItem(item, index));\n\t\tconst groupBy = this._ngSelect.groupBy();\n\t\tif (groupBy) {\n\t\t\tthis._groups = this._groupBy(this._items, groupBy);\n\t\t\tthis._items = this._flatten(this._groups);\n\t\t} else {\n\t\t\tthis._groups = new Map();\n\t\t\tthis._groups.set(undefined, this._items);\n\t\t}\n\t\tthis._filteredItems = [...this._items];\n\t}\n\n\t/**\n\t * Selects an option according to the active selection mode.\n\t *\n\t * @param item - The option to process.\n\t *\n\t * @since 3.0.0\n\t */\n\tselect(item: NgOption) {\n\t\tif (item.selected || this.maxItemsSelected) {\n\t\t\treturn;\n\t\t}\n\t\tconst multiple = this._ngSelect.multiple();\n\t\tif (!multiple) {\n\t\t\tthis.clearSelected(false);\n\t\t}\n\n\t\tthis._selectionModel.select(item, multiple, this._ngSelect.selectableGroupAsModel());\n\t\tif (this._ngSelect.hideSelected()) {\n\t\t\tthis._hideSelected(item);\n\t\t}\n\t}\n\n\t/**\n\t * Removes an option from the current selection.\n\t *\n\t * @param item - The option to process.\n\t *\n\t * @since 3.0.0\n\t */\n\tunselect(item: NgOption) {\n\t\tif (!item.selected) {\n\t\t\treturn;\n\t\t}\n\t\tconst multiple = this._ngSelect.multiple();\n\t\tthis._selectionModel.unselect(item, multiple);\n\t\tif (this._ngSelect.hideSelected() && isDefined(item.index) && multiple) {\n\t\t\tthis._showSelected(item);\n\t\t}\n\t}\n\n\t/**\n\t * Finds the option matching a model value.\n\t *\n\t * @param value - The value to process.\n\t * @returns The matching option, when one exists.\n\t *\n\t * @since 3.0.0\n\t */\n\tfindItem(value: any): NgOption {\n\t\tlet findBy: (item: NgOption) => boolean;\n\t\tif (this._ngSelect.compareWith()) {\n\t\t\tfindBy = (item) => this._ngSelect.compareWith()(item.value, value);\n\t\t} else if (this._ngSelect.bindValue()) {\n\t\t\tfindBy = (item) => !item.children && this.resolveNested(item.value, this._ngSelect.bindValue()) === value;\n\t\t} else {\n\t\t\tfindBy = (item) => item.value === value || (!item.children && item.label && item.label === this.resolveNested(value, this._ngSelect.bindLabel()));\n\t\t}\n\t\treturn this._items.find((item) => findBy(item));\n\t}\n\n\t/**\n\t * Maps and appends a new option to the list.\n\t *\n\t * @param item - The option to process.\n\t *\n\t * @since 3.0.0\n\t */\n\taddItem(item: any) {\n\t\tconst option = this.mapItem(item, this._items.length);\n\t\tthis._items.push(option);\n\t\tthis._filteredItems.push(option);\n\t\treturn option;\n\t}\n\n\t/**\n\t * Clears selected options while optionally retaining disabled selections.\n\t *\n\t * @param keepDisabled - The keep disabled.\n\t *\n\t * @since 3.0.0\n\t */\n\tclearSelected(keepDisabled: boolean) {\n\t\tthis._selectionModel.clear(keepDisabled);\n\t\tthis._items.forEach((item) => {\n\t\t\titem.selected = keepDisabled && item.selected && item.disabled;\n\t\t\titem.marked = false;\n\t\t});\n\t\tif (this._ngSelect.hideSelected()) {\n\t\t\tthis.resetFilteredItems();\n\t\t}\n\t}\n\n\t/**\n\t * Finds an option using a case-insensitive label comparison.\n\t *\n\t * @param term - The term.\n\t *\n\t * @since 3.0.0\n\t */\n\tfindByLabel(term: string) {\n\t\tterm = searchHelper.stripSpecialChars(term).toLocaleLowerCase();\n\t\treturn this.filteredItems.find((item) => {\n\t\t\tconst label = searchHelper.stripSpecialChars(item.label).toLocaleLowerCase();\n\t\t\treturn label.substr(0, term.length) === term;\n\t\t});\n\t}\n\n\t/**\n\t * Filters the available options using the current search configuration.\n\t *\n\t * @param term - The term.\n\t *\n\t * @since 3.0.0\n\t */\n\tfilter(term: string): void {\n\t\tif (!term) {\n\t\t\tthis.resetFilteredItems();\n\t\t\treturn;\n\t\t}\n\n\t\tthis._filteredItems = [];\n\t\tterm = this._ngSelect.searchFn() ? term : searchHelper.stripSpecialChars(term).toLocaleLowerCase();\n\t\tconst match = this._ngSelect.searchFn() || this._defaultSearchFn;\n\t\tconst hideSelected = this._ngSelect.hideSelected();\n\n\t\tfor (const key of Array.from(this._groups.keys())) {\n\t\t\tconst matchedItems = [];\n\t\t\tfor (const item of this._groups.get(key)) {\n\t\t\t\tif (hideSelected && ((item.parent && item.parent.selected) || item.selected)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst searchItem = this._ngSelect.searchFn() ? item.value : item;\n\t\t\t\tif (match(term, searchItem)) {\n\t\t\t\t\tmatchedItems.push(item);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (matchedItems.length > 0) {\n\t\t\t\tconst [last] = matchedItems.slice(-1);\n\t\t\t\tif (last.parent) {\n\t\t\t\t\tconst head = this._items.find((x) => x === last.parent);\n\t\t\t\t\tthis._filteredItems.push(head);\n\t\t\t\t}\n\t\t\t\tthis._filteredItems.push(...matchedItems);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Restores the unfiltered option collection.\n\t *\n\t * @since 3.0.0\n\t */\n\tresetFilteredItems() {\n\t\tif (this._filteredItems.length === this._items.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._ngSelect.hideSelected() && this.selectedItems.length > 0) {\n\t\t\tthis._filteredItems = this._items.filter((x) => !x.selected);\n\t\t} else {\n\t\t\tthis._filteredItems = this._items;\n\t\t}\n\t}\n\n\t/**\n\t * Clears the currently marked option.\n\t *\n\t * @since 3.0.0\n\t */\n\tunmarkItem() {\n\t\tthis._markedIndex = -1;\n\t}\n\n\t/**\n\t * Marks the next enabled option.\n\t *\n\t * @since 3.0.0\n\t */\n\tmarkNextItem() {\n\t\tthis._stepToItem(+1);\n\t}\n\n\t/**\n\t * Marks the previous enabled option.\n\t *\n\t * @since 3.0.0\n\t */\n\tmarkPreviousItem() {\n\t\tthis._stepToItem(-1);\n\t}\n\n\t/**\n\t * Marks a specific option for keyboard interaction.\n\t *\n\t * @param item - The option to process.\n\t *\n\t * @since 3.0.0\n\t */\n\tmarkItem(item: NgOption) {\n\t\tthis._markedIndex = this._filteredItems.indexOf(item);\n\t}\n\n\t/**\n\t * Marks the selected option or the configured default option.\n\t *\n\t * @param markDefault - The mark default.\n\t *\n\t * @since 3.0.0\n\t */\n\tmarkSelectedOrDefault(markDefault?: boolean) {\n\t\tif (this._filteredItems.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst lastMarkedIndex = this._getLastMarkedIndex();\n\t\tif (lastMarkedIndex > -1) {\n\t\t\tthis._markedIndex = lastMarkedIndex;\n\t\t} else {\n\t\t\tthis._markedIndex = markDefault ? this.filteredItems.findIndex((x) => !x.disabled) : -1;\n\t\t}\n\t}\n\n\t/**\n\t * Resolves a dot-separated property path from an option value.\n\t *\n\t * @param option - The option to process.\n\t * @param key - The key.\n\t * @returns The resolved nested value.\n\t *\n\t * @since 3.0.0\n\t */\n\tresolveNested(option: any, key: string): any {\n\t\tif (!isObject(option)) {\n\t\t\treturn option;\n\t\t}\n\t\tif (!key) {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (key.indexOf('.') === -1) {\n\t\t\treturn option[key];\n\t\t} else {\n\t\t\tconst keys: string[] = key.split('.');\n\t\t\tlet value = option;\n\t\t\tfor (let i = 0, len = keys.length; i < len; ++i) {\n\t\t\t\tif (value == null) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tvalue = value[keys[i]];\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t}\n\n\t/**\n\t * Maps a source value to the internal option representation.\n\t *\n\t * @param item - The option to process.\n\t * @param index - The index.\n\t * @returns The mapped internal option.\n\t *\n\t * @since 3.0.0\n\t */\n\tmapItem(item: any, index: number): NgOption {\n\t\tconst hasNgOptionLabel = isObject(item) && '$ngOptionLabel' in item;\n\t\tconst hasNgOptionValue = isObject(item) && '$ngOptionValue' in item;\n\t\tconst hasNgOptionClasses = isObject(item) && '$ngOptionClasses' in item;\n\t\tconst label = hasNgOptionLabel ? item.$ngOptionLabel : this.resolveNested(item, this._ngSelect.bindLabel());\n\t\tconst value = hasNgOptionValue ? item.$ngOptionValue : item;\n\t\treturn {\n\t\t\tindex,\n\t\t\tlabel: isDefined(label) ? label.toString() : '',\n\t\t\tvalue,\n\t\t\tdisabled: item && item.disabled ? item.disabled : false,\n\t\t\tclasses: hasNgOptionClasses ? item.$ngOptionClasses : '',\n\t\t\thtmlId: `${this._ngSelect.dropdownId}-${index}`,\n\t\t};\n\t}\n\n\t/**\n\t * Remaps selected values after the source collection changes.\n\t *\n\t * @since 3.0.0\n\t */\n\tmapSelectedItems() {\n\t\tconst multiple = this._ngSelect.multiple();\n\t\tfor (const selected of this.selectedItems) {\n\t\t\tconst bindValue = this._ngSelect.bindValue();\n\t\t\tconst value = bindValue ? this.resolveNested(selected.value, bindValue) : selected.value;\n\t\t\tconst valueFound = isDefined(value);\n\t\t\tlet item = valueFound ? this.findItem(value) : null;\n\n\t\t\tif (!item && !valueFound && this._ngSelect.compareWith()) {\n\t\t\t\titem = this._items.find((item) => this._ngSelect.compareWith()(item.value, selected.value));\n\t\t\t}\n\n\t\t\tthis._selectionModel.unselect(selected, multiple);\n\t\t\tif (item?.selected) {\n\t\t\t\t// Already re-selected by an earlier iteration (duplicate value); drop the placeholder only\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis._selectionModel.select(item || selected, multiple, this._ngSelect.selectableGroupAsModel());\n\t\t}\n\n\t\tif (this._ngSelect.hideSelected()) {\n\t\t\tthis._filteredItems = this.filteredItems.filter((x) => this.selectedItems.indexOf(x) === -1);\n\t\t}\n\t}\n\n\t/**\n\t * Restores a selected option to the visible filtered collection.\n\t *\n\t * @param item - The option to process.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _showSelected(item: NgOption) {\n\t\tthis._filteredItems.push(item);\n\t\tif (item.parent) {\n\t\t\tconst parent = item.parent;\n\t\t\tconst parentExists = this._filteredItems.find((x) => x === parent);\n\t\t\tif (!parentExists) {\n\t\t\t\tthis._filteredItems.push(parent);\n\t\t\t}\n\t\t} else if (item.children) {\n\t\t\tfor (const child of item.children) {\n\t\t\t\tchild.selected = false;\n\t\t\t\tthis._filteredItems.push(child);\n\t\t\t}\n\t\t}\n\t\tthis._filteredItems = [...this._filteredItems.sort((a, b) => a.index - b.index)];\n\t}\n\n\t/**\n\t * Removes a selected option from the visible filtered collection.\n\t *\n\t * @param item - The option to process.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _hideSelected(item: NgOption) {\n\t\tthis._filteredItems = this._filteredItems.filter((x) => x !== item);\n\t\tif (item.parent) {\n\t\t\tconst children = item.parent.children;\n\t\t\tif (children.every((x) => x.selected)) {\n\t\t\t\tthis._filteredItems = this._filteredItems.filter((x) => x !== item.parent);\n\t\t\t}\n\t\t} else if (item.children) {\n\t\t\tthis._filteredItems = this.filteredItems.filter((x) => x.parent !== item);\n\t\t}\n\t}\n\n\t/**\n\t * Matches an option using the default normalized-label search.\n\t *\n\t * @param search - The search.\n\t * @param opt - The opt.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _defaultSearchFn(search: string, opt: NgOption) {\n\t\tconst label = searchHelper.stripSpecialChars(opt.label).toLocaleLowerCase();\n\t\treturn label.indexOf(search) > -1;\n\t}\n\n\t/**\n\t * Calculates the next enabled option index.\n\t *\n\t * @param steps - The steps.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _getNextItemIndex(steps: number) {\n\t\tif (steps > 0) {\n\t\t\treturn this._markedIndex >= this._filteredItems.length - 1 ? 0 : this._markedIndex + 1;\n\t\t}\n\t\treturn this._markedIndex <= 0 ? this._filteredItems.length - 1 : this._markedIndex - 1;\n\t}\n\n\t/**\n\t * Moves the marked index by the requested number of enabled options.\n\t *\n\t * @param steps - The steps.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _stepToItem(steps: number) {\n\t\tif (this._filteredItems.length === 0 || this._filteredItems.every((x) => x.disabled)) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._markedIndex = this._getNextItemIndex(steps);\n\t\tif (this.markedItem.disabled) {\n\t\t\tthis._stepToItem(steps);\n\t\t}\n\t}\n\n\t/**\n\t * Returns the index that should remain marked after filtering changes.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _getLastMarkedIndex() {\n\t\tif (this._ngSelect.hideSelected()) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tif (this._markedIndex > -1 && this.markedItem === undefined) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tconst selectedIndex = this._getFirstSelectedIndex();\n\t\tif (this.lastSelectedItem && selectedIndex < 0) {\n\t\t\treturn -1;\n\t\t}\n\n\t\treturn selectedIndex > -1 ? selectedIndex : this.markedIndex;\n\t}\n\n\t/**\n\t * Index of the first selected, non-disabled option in filtered list order.\n\t * Per the WAI-ARIA listbox pattern, focus lands on the first selected option when the list opens.\n\t *\n\t * @since 23.3.0\n\t */\n\tprivate _getFirstSelectedIndex() {\n\t\tlet index = -1;\n\t\tfor (const selected of this.selectedItems) {\n\t\t\tif (selected.disabled) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst i = this._filteredItems.indexOf(selected);\n\t\t\tif (i > -1 && (index === -1 || i < index)) {\n\t\t\t\tindex = i;\n\t\t\t}\n\t\t}\n\t\treturn index;\n\t}\n\n\t/**\n\t * Groups mapped options using a property name or grouping function.\n\t *\n\t * @param items - The options to process.\n\t * @param prop - The prop.\n\t * @returns The group by result.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _groupBy(items: NgOption[], prop: string | ((value: any) => any)): OptionGroups {\n\t\tconst groups = new Map<string | NgOption, NgOption[]>();\n\t\tif (items.length === 0) {\n\t\t\treturn groups;\n\t\t}\n\n\t\t// Check if items are already grouped by given key.\n\t\tconst firstValue = items[0].value;\n\t\tif (firstValue != null && Array.isArray(firstValue[<string>prop])) {\n\t\t\tfor (const item of items) {\n\t\t\t\tconst children = (item.value?.[<string>prop] || []).map((x, index) => this.mapItem(x, index));\n\t\t\t\tgroups.set(item, children);\n\t\t\t}\n\t\t\treturn groups;\n\t\t}\n\n\t\tconst isFnKey = isFunction(this._ngSelect.groupBy());\n\t\tconst keyFn = (item: NgOption) => {\n\t\t\tconst key = isFnKey ? (<(value: any) => any>prop)(item.value) : item.value?.[<string>prop];\n\t\t\treturn isDefined(key) ? key : undefined;\n\t\t};\n\n\t\t// Group items by key.\n\t\tfor (const item of items) {\n\t\t\tconst key = keyFn(item);\n\t\t\tconst group = groups.get(key);\n\t\t\tif (group) {\n\t\t\t\tgroup.push(item);\n\t\t\t} else {\n\t\t\t\tgroups.set(key, [item]);\n\t\t\t}\n\t\t}\n\t\treturn groups;\n\t}\n\n\t/**\n\t * Flattens option groups into the render order used by the dropdown.\n\t *\n\t * @param groups - The groups.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _flatten(groups: OptionGroups) {\n\t\tconst isGroupByFn = isFunction(this._ngSelect.groupBy());\n\t\tconst items = [];\n\t\tfor (const key of Array.from(groups.keys())) {\n\t\t\tlet i = items.length;\n\t\t\tif (key === undefined) {\n\t\t\t\tconst withoutGroup = groups.get(undefined) || [];\n\t\t\t\titems.push(\n\t\t\t\t\t...withoutGroup.map((x) => {\n\t\t\t\t\t\tx.index = i++;\n\t\t\t\t\t\tx.htmlId = `${this._ngSelect.dropdownId}-${x.index}`;\n\t\t\t\t\t\treturn x;\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst isObjectKey = isObject(key);\n\t\t\tconst parent: NgOption = {\n\t\t\t\tlabel: isObjectKey ? '' : String(key),\n\t\t\t\tchildren: undefined,\n\t\t\t\tparent: null,\n\t\t\t\tindex: i++,\n\t\t\t\tdisabled: !this._ngSelect.selectableGroup(),\n\t\t\t\thtmlId: newId(),\n\t\t\t};\n\t\t\tconst groupKey = isGroupByFn ? this._ngSelect.bindLabel() : <string>this._ngSelect.groupBy();\n\t\t\tconst groupValue =\n\t\t\t\tthis._ngSelect.groupValue() ||\n\t\t\t\t(() => {\n\t\t\t\t\tif (isObjectKey) {\n\t\t\t\t\t\treturn (<NgOption>key).value;\n\t\t\t\t\t}\n\t\t\t\t\treturn { [groupKey]: key };\n\t\t\t\t});\n\t\t\tconst children = groups.get(key).map((x) => {\n\t\t\t\tx.parent = parent;\n\t\t\t\tx.children = undefined;\n\t\t\t\tx.index = i++;\n\t\t\t\tx.htmlId = `${this._ngSelect.dropdownId}-${x.index}`;\n\t\t\t\treturn x;\n\t\t\t});\n\t\t\tparent.children = children;\n\t\t\tparent.value = groupValue(\n\t\t\t\tkey,\n\t\t\t\tchildren.map((x) => x.value),\n\t\t\t);\n\t\t\titems.push(parent);\n\t\t\titems.push(...children);\n\t\t}\n\t\treturn items;\n\t}\n}\n","import { NgOption } from './types/ng-select.types';\n\nexport type SelectionModelFactory = () => SelectionModel;\n\n/**\n * Creates the default selection model used by ng-select.\n *\n * @since 3.0.0\n */\nexport function DefaultSelectionModelFactory() {\n\treturn new DefaultSelectionModel();\n}\n\n/**\n * Defines the selection model contract used by ng-select.\n *\n * @since 3.0.0\n */\nexport interface SelectionModel {\n\tvalue: NgOption[];\n\t/**\n\t * Selects an option according to the active selection mode.\n\t *\n\t * @param item - The option to process.\n\t * @param multiple - Whether multiple selection is enabled.\n\t * @param selectableGroupAsModel - Whether a selectable group is represented by its group value.\n\t *\n\t * @since 3.0.0\n\t */\n\tselect(item: NgOption, multiple: boolean, selectableGroupAsModel: boolean);\n\t/**\n\t * Removes an option from the current selection.\n\t *\n\t * @param item - The option to process.\n\t * @param multiple - Whether multiple selection is enabled.\n\t *\n\t * @since 3.0.0\n\t */\n\tunselect(item: NgOption, multiple: boolean);\n\t/**\n\t * Clears the current selection.\n\t *\n\t * @param keepDisabled - Whether disabled options should remain selected.\n\t *\n\t * @since 3.0.0\n\t */\n\tclear(keepDisabled: boolean);\n}\n\n/**\n * Implements the default single, multiple, and grouped option selection behavior.\n *\n * @since 3.0.0\n */\nexport class DefaultSelectionModel implements SelectionModel {\n\tprivate _selected: NgOption[] = [];\n\n\t/**\n\t * Gets the currently selected options.\n\t *\n\t * @returns The value.\n\t *\n\t * @since 3.0.0\n\t */\n\tget value(): NgOption[] {\n\t\treturn this._selected;\n\t}\n\n\t/**\n\t * Selects an option according to the active selection mode.\n\t *\n\t * @param item - The option to process.\n\t * @param multiple - Whether multiple selection is enabled.\n\t * @param groupAsModel - Whether a selectable group is represented by its group value.\n\t *\n\t * @since 3.0.0\n\t */\n\tselect(item: NgOption, multiple: boolean, groupAsModel: boolean) {\n\t\titem.selected = true;\n\t\tif (!item.children || (!multiple && groupAsModel)) {\n\t\t\tthis._selected.push(item);\n\t\t}\n\t\tif (multiple) {\n\t\t\tif (item.parent) {\n\t\t\t\tconst childrenCount = item.parent.children.length;\n\t\t\t\tconst selectedCount = item.parent.children.filter((x) => x.selected).length;\n\t\t\t\titem.parent.selected = childrenCount === selectedCount;\n\t\t\t} else if (item.children) {\n\t\t\t\tthis._setChildrenSelectedState(item.children, true);\n\t\t\t\tthis._removeChildren(item);\n\t\t\t\tif (groupAsModel && this._activeChildren(item)) {\n\t\t\t\t\tthis._selected = [...this._selected.filter((x) => x.parent !== item), item];\n\t\t\t\t} else {\n\t\t\t\t\tthis._selected = [...this._selected, ...item.children.filter((x) => !x.disabled)];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Removes an option from the current selection.\n\t *\n\t * @param item - The option to process.\n\t * @param multiple - Whether multiple selection is enabled.\n\t *\n\t * @since 3.0.0\n\t */\n\tunselect(item: NgOption, multiple: boolean) {\n\t\tthis._selected = this._selected.filter((x) => x !== item);\n\t\titem.selected = false;\n\t\tif (multiple) {\n\t\t\tif (item.parent && item.parent.selected) {\n\t\t\t\tconst children = item.parent.children;\n\t\t\t\tthis._removeParent(item.parent);\n\t\t\t\tthis._removeChildren(item.parent);\n\t\t\t\tthis._selected.push(...children.filter((x) => x !== item && !x.disabled));\n\t\t\t\titem.parent.selected = false;\n\t\t\t} else if (item.children) {\n\t\t\t\tthis._setChildrenSelectedState(item.children, false);\n\t\t\t\tthis._removeChildren(item);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Clears the current selection.\n\t *\n\t * @param keepDisabled - Whether disabled options should remain selected.\n\t *\n\t * @since 3.0.0\n\t */\n\tclear(keepDisabled: boolean) {\n\t\tthis._selected = keepDisabled ? this._selected.filter((x) => x.disabled) : [];\n\t}\n\n\t/**\n\t * Applies a selected state to every enabled child option.\n\t *\n\t * @param children - The children.\n\t * @param selected - Whether the children should be selected.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _setChildrenSelectedState(children: NgOption[], selected: boolean) {\n\t\tfor (const child of children) {\n\t\t\tif (child.disabled) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tchild.selected = selected;\n\t\t}\n\t}\n\n\t/**\n\t * Removes a group’s child options from the selected collection.\n\t *\n\t * @param parent - The parent.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _removeChildren(parent: NgOption) {\n\t\tthis._selected = [...this._selected.filter((x) => x.parent !== parent), ...parent.children.filter((x) => x.parent === parent && x.disabled && x.selected)];\n\t}\n\n\t/**\n\t * Removes a group option from the selected collection.\n\t *\n\t * @param parent - The parent.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _removeParent(parent: NgOption) {\n\t\tthis._selected = this._selected.filter((x) => x !== parent);\n\t}\n\n\t/**\n\t * Determines whether a group contains active child options.\n\t *\n\t * @param item - The option to process.\n\t * @returns Whether active children.\n\t *\n\t * @since 3.7.0\n\t */\n\tprivate _activeChildren(item: NgOption): boolean {\n\t\treturn item.children.every((x) => !x.disabled || x.selected);\n\t}\n}\n","import { Injectable } from '@angular/core';\n\n/**\n * Configuration provider for the NgSelect component. You can inject this service and provide application wide configuration.\n *\n * @since 3.0.0\n */\n@Injectable({ providedIn: 'root' })\nexport class NgSelectConfig {\n\t/** Placeholder text. */\n\tplaceholder: string;\n\t/** Set placeholder visible even when an item is selected. */\n\tfixedPlaceholder = true;\n\t/** Set custom text when filter returns empty result. */\n\tnotFoundText = 'No items found';\n\t/** Set custom text when using Typeahead. */\n\ttypeToSearchText = 'Type to search';\n\t/** Set custom text when using tagging. */\n\taddTagText = 'Add item';\n\t/** Set custom text when loading items. */\n\tloadingText = 'Loading...';\n\t/** Set custom text for clear all icon title. */\n\tclearAllText = 'Clear all';\n\t/** Set custom text prefixed to the option label in the aria-label of the remove icon on selected values (multiple mode). */\n\tremoveText = 'Remove';\n\t/** Set custom aria-label for the dropdown options list. */\n\tariaLabelDropdown = 'Options List';\n\t/** Disable virtual scroll for the dropdown panel. */\n\tdisableVirtualScroll = true;\n\t/** Open dropdown using enter. */\n\topenOnEnter = true;\n\t/** Append the dropdown overlay of every select to any element using a css selector. Painting and positioning are unaffected; the target determines DOM containment (ancestor-scoped styles, focus enclosure). */\n\tappendTo: string;\n\t/** Object property to use for selected model. By default binds to whole object. */\n\tbindValue: string;\n\t/** Object property to use for label. */\n\tbindLabel: string;\n\t/** Allows to select dropdown appearance. Set to `outline` or `fill` for Material form-field styles (applies only to Material theme). */\n\tappearance = 'underline';\n\t/** Clears search input when item is selected. */\n\tclearSearchOnAdd: boolean;\n\t/** Deselects a selected item when it is clicked in the dropdown. */\n\tdeselectOnClick: boolean;\n\t/** Control tab navigation behavior for the clear button. */\n\ttabFocusOnClear = true;\n\t/**\n\t * Controls which DOM event is used to detect outside clicks for closing the dropdown.\n\t * Defaults to 'click'. Set to 'mousedown' to handle early outside interactions\n\t * (useful when backdrops load on click and would otherwise close the dropdown).\n\t */\n\toutsideClickEvent: 'click' | 'mousedown' = 'click';\n}\n","import { Injectable } from '@angular/core';\n\n/**\n * Reports developer-facing warnings through the configured console.\n *\n * @since 3.0.0\n */\n@Injectable({ providedIn: 'root' })\nexport class ConsoleService {\n\t/**\n\t * Writes a developer-facing warning to the console.\n\t *\n\t * @param message - The message.\n\t *\n\t * @since 3.0.0\n\t */\n\twarn(message: string) {\n\t\tconsole.warn(message);\n\t}\n}\n","/**\n * Defines the ng option contract used by ng-select.\n *\n * @since 3.0.0\n */\nexport interface NgOption {\n\t[name: string]: any;\n\n\tindex?: number;\n\thtmlId?: string;\n\tselected?: boolean;\n\tdisabled?: boolean;\n\tmarked?: boolean;\n\tlabel?: string;\n\tvalue?: string | any;\n\tclasses?: string;\n\tparent?: NgOption;\n\tchildren?: NgOption[];\n}\n\nexport enum KeyCode {\n\tTab = 'Tab',\n\tEnter = 'Enter',\n\tEsc = 'Escape',\n\tSpace = ' ',\n\tArrowUp = 'ArrowUp',\n\tArrowDown = 'ArrowDown',\n\tBackspace = 'Backspace',\n}\n\nexport type DropdownPosition = 'top' | 'right' | 'bottom' | 'left' | 'auto';\n","import { NgOption } from '../types/ng-select.types';\nimport { isDefined, isObject } from '../utils/value-utils';\n\n/**\n * Describes the bindings that affect conversion between selected options and model values.\n *\n * @since 24.0.5\n */\nexport interface ModelBindingOptions {\n\tbindLabel: string;\n\tbindValue: string | null | undefined;\n\tcompareWith: ((a: any, b: any) => boolean) | null | undefined;\n\tgroupBy: string | ((value: any) => any) | null | undefined;\n\thasGroupValue: boolean;\n\tmultiple: boolean;\n}\n\n/**\n * Represents the result of validating a value supplied through ControlValueAccessor.\n *\n * @since 24.0.5\n */\nexport interface ModelValidationResult {\n\tvalid: boolean;\n\twarning?: string;\n}\n\n/**\n * Validates a model value against the select's multiple-selection and value-binding configuration.\n *\n * @param value - The model value supplied to the select.\n * @param options - The binding options used to validate the value.\n * @returns The validation result and an optional warning for invalid bindings.\n *\n * @since 24.0.5\n */\nexport function validateWriteValue(value: any, options: Pick<ModelBindingOptions, 'bindValue' | 'compareWith' | 'multiple'>): ModelValidationResult {\n\tif (!isDefined(value) || (options.multiple && value === '') || (Array.isArray(value) && value.length === 0)) {\n\t\treturn { valid: false };\n\t}\n\n\tif (options.multiple && !Array.isArray(value)) {\n\t\treturn { valid: false, warning: 'Multiple select form value should be an array.' };\n\t}\n\n\tconst values = options.multiple ? value : [value];\n\tconst invalidBinding = values.find((item: any) => !isDefined(options.compareWith) && isObject(item) && options.bindValue);\n\tif (invalidBinding) {\n\t\treturn {\n\t\t\tvalid: false,\n\t\t\twarning: `Setting object(${JSON.stringify(invalidBinding)}) as your model with bindValue is not allowed unless [compareWith] is used.`,\n\t\t};\n\t}\n\n\treturn { valid: true };\n}\n\n/**\n * Creates an option value for a model value that does not match an existing item.\n *\n * @param value - The unmatched model value.\n * @param bindLabel - The property used as the option label.\n * @param bindValue - The property used as the bound model value.\n * @returns The value in the shape expected by the items list.\n *\n * @since 24.0.5\n */\nexport function createUnmatchedOptionValue(value: any, bindLabel: string, bindValue: string | null | undefined): any {\n\tif (isObject(value) || !bindValue) {\n\t\treturn value;\n\t}\n\treturn {\n\t\t[bindLabel]: null,\n\t\t[bindValue]: value,\n\t};\n}\n\n/**\n * Converts selected options into the values emitted through the component model.\n *\n * @param selectedItems - The currently selected options.\n * @param options - The bindings that determine how option values are mapped.\n * @param resolveNested - Resolves a nested property from an option value.\n * @returns The model values corresponding to the selected options.\n *\n * @since 24.0.5\n */\nexport function selectedItemsToModel(\n\tselectedItems: readonly NgOption[],\n\toptions: Pick<ModelBindingOptions, 'bindValue' | 'groupBy' | 'hasGroupValue'>,\n\tresolveNested: (option: any, key: string) => any,\n): any[] {\n\treturn selectedItems.map((item) => {\n\t\tif (!options.bindValue) {\n\t\t\treturn item.value;\n\t\t}\n\t\tif (item.children) {\n\t\t\tconst groupKey = options.hasGroupValue ? options.bindValue : (options.groupBy as string);\n\t\t\treturn item.value[groupKey || (options.groupBy as string)];\n\t\t}\n\t\treturn resolveNested(item.value, options.bindValue);\n\t});\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { DOCUMENT } from '@angular/common';\nimport {\n\tafterEveryRender,\n\tAfterViewInit,\n\tbooleanAttribute,\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tcomputed,\n\tcontentChild,\n\tcontentChildren,\n\tDestroyRef,\n\teffect,\n\tElementRef,\n\tforwardRef,\n\tHostAttributeToken,\n\tHostListener,\n\tinject,\n\tInjectionToken,\n\tInjector,\n\tinput,\n\tisDevMode,\n\tlinkedSignal,\n\tmodel,\n\tnumberAttribute,\n\tOnChanges,\n\tOnInit,\n\toutput,\n\tsignal,\n\tSimpleChanges,\n\tTemplateRef,\n\tuntracked,\n\tviewChild,\n\tViewContainerRef,\n\tViewEncapsulation,\n} from '@angular/core';\nimport { EventPhase } from '@angular/core/primitives/event-dispatch';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { debounceTime, filter, map, tap } from 'rxjs/operators';\n\nimport {\n\tNgClearButtonTemplateDirective,\n\tNgFooterTemplateDirective,\n\tNgHeaderTemplateDirective,\n\tNgLabelTemplateDirective,\n\tNgLoadingSpinnerTemplateDirective,\n\tNgLoadingTextTemplateDirective,\n\tNgMultiLabelTemplateDirective,\n\tNgNotFoundTemplateDirective,\n\tNgOptgroupTemplateDirective,\n\tNgOptionTemplateDirective,\n\tNgPlaceholderTemplateDirective,\n\tNgTagTemplateDirective,\n\tNgTypeToSearchTemplateDirective,\n} from '../directives/ng-templates.directive';\n\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DropdownOverlayManager } from '../dropdown-panel/dropdown-overlay-manager';\nimport { ClassValue, mergeClassValues, readConsumerHostClasses } from '../dropdown-panel/dropdown-panel-classes';\nimport { NgDropdownPanelComponent } from '../dropdown-panel/ng-dropdown-panel.component';\nimport { NgDropdownPanelService } from '../dropdown-panel/ng-dropdown-panel.service';\nimport { ItemsList } from '../items-list';\nimport { NgOptionComponent } from '../ng-option.component';\nimport { DefaultSelectionModelFactory, SelectionModelFactory } from '../selection-model';\nimport { NgSelectConfig } from '../services/config.service';\nimport { ConsoleService } from '../services/console.service';\nimport { newId } from '../types/id';\nimport { DropdownPosition, KeyCode, NgOption } from '../types/ng-select.types';\nimport { isDefined, isFunction, isObject, isPromise } from '../utils/value-utils';\nimport { createUnmatchedOptionValue, selectedItemsToModel, validateWriteValue } from './ng-select-model-value';\n\n/** DI token for SelectionModel implementation. You can provide custom implementation changing selection behaviour. */\nexport const SELECTION_MODEL_FACTORY = new InjectionToken<SelectionModelFactory>('ng-select-selection-model');\nexport type AddTagFn = (term: string) => any | Promise<any>;\nexport type CompareWithFn = (a: any, b: any) => boolean;\nexport type GroupValueFn = (key: string | any, children: any[]) => string | any;\n/**\n * Transforms an optional attribute value while preserving `undefined`.\n *\n * @param value - The value to process.\n * @returns The optional boolean attribute result.\n *\n * @since 22.0.0\n */\nfunction optionalBooleanAttribute(value: unknown): boolean | undefined {\n\treturn value == null ? undefined : booleanAttribute(value);\n}\n\n/**\n * Provides select, multiselect, autocomplete, keyboard, accessibility, and Signal, Reactive, and Template-driven Forms behavior.\n *\n * @since 3.0.0\n */\n@Component({\n\tselector: 'ng-select',\n\texportAs: 'ngSelect',\n\ttemplateUrl: './ng-select.component.html',\n\tstyleUrls: ['./ng-select.component.scss'],\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => NgSelectComponent),\n\t\t\tmulti: true,\n\t\t},\n\t\tNgDropdownPanelService,\n\t],\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgClass, NgTemplateOutlet, NgDropdownPanelComponent],\n\thost: {\n\t\t'[class.ng-select]': 'true',\n\t\t'[class.ng-select-single]': '!multiple()',\n\t\t'[class.ng-select-typeahead]': 'typeahead()',\n\t\t'[class.ng-select-multiple]': 'multiple()',\n\t\t'[class.ng-select-taggable]': 'addTag()',\n\t\t'[class.ng-select-searchable]': 'searchable()',\n\t\t'[class.ng-select-clearable]': 'clearable()',\n\t\t'[class.ng-select-opened]': 'isOpen()',\n\t\t'[class.ng-select-filtered]': 'filtered',\n\t\t'[class.ng-select-disabled]': 'disabled()',\n\t},\n})\nexport class NgSelectComponent implements OnChanges, OnInit, AfterViewInit, ControlValueAccessor {\n\treadonly classes = inject(new HostAttributeToken('class'), { optional: true });\n\treadonly config = inject(NgSelectConfig);\n\t// signals\n\tpublic readonly _disabled = signal<boolean>(false);\n\t// inputs: underscored input() + alias + linkedSignal() for stable public names (back compat)\n\treadonly _ariaLabelDropdown = input<string>(undefined, { alias: 'ariaLabelDropdown' });\n\treadonly ariaLabelDropdown = linkedSignal(() => this._ariaLabelDropdown());\n\treadonly _ariaLabel = input<string | undefined>(undefined, { alias: 'ariaLabel' });\n\treadonly ariaLabel = linkedSignal(() => this._ariaLabel());\n\t/** Marks first item as focused when opening/filtering. */\n\treadonly _markFirst = input(true, { alias: 'markFirst', transform: booleanAttribute });\n\treadonly markFirst = linkedSignal(() => this._markFirst());\n\t/** Placeholder text. */\n\treadonly _placeholder = input<string>(this.config.placeholder, { alias: 'placeholder' });\n\treadonly placeholder = linkedSignal(() => this._placeholder());\n\t/** Set placeholder visible even when an item is selected */\n\treadonly _fixedPlaceholder = input<boolean>(this.config.fixedPlaceholder, { alias: 'fixedPlaceholder' });\n\treadonly fixedPlaceholder = linkedSignal(() => this._fixedPlaceholder());\n\t/** Set custom text when filter returns empty result */\n\treadonly _notFoundText = input<string>(undefined, { alias: 'notFoundText' });\n\treadonly notFoundText = linkedSignal(() => this._notFoundText());\n\t/** Set custom text when using Typeahead */\n\treadonly _typeToSearchText = input<string>(undefined, { alias: 'typeToSearchText' });\n\treadonly typeToSearchText = linkedSignal(() => this._typeToSearchText());\n\t/** Prevent opening of ng-select on right mouse click */\n\treadonly _preventToggleOnRightClick = input<boolean>(false, { alias: 'preventToggleOnRightClick' });\n\treadonly preventToggleOnRightClick = linkedSignal(() => this._preventToggleOnRightClick());\n\t/** Set custom text when using tagging */\n\treadonly _addTagText = input<string>(undefined, { alias: 'addTagText' });\n\treadonly addTagText = linkedSignal(() => this._addTagText());\n\t/** Set custom text when for loading items */\n\treadonly _loadingText = input<string>(undefined, { alias: 'loadingText' });\n\treadonly loadingText = linkedSignal(() => this._loadingText());\n\t/** Set custom text for clear all icon title */\n\treadonly _clearAllText = input<string>(undefined, { alias: 'clearAllText' });\n\treadonly clearAllText = linkedSignal(() => this._clearAllText());\n\t/** Set custom text prefixed to the option label in the aria-label of the remove icon on selected values (multiple mode) */\n\treadonly _removeText = input<string>(undefined, { alias: 'removeText' });\n\treadonly removeText = linkedSignal(() => this._removeText());\n\t/** Set the dropdown position on open */\n\treadonly _dropdownPosition = input<DropdownPosition>('auto', { alias: 'dropdownPosition' });\n\treadonly dropdownPosition = linkedSignal(() => this._dropdownPosition());\n\t/**\n\t * Append the dropdown overlay to any element using a css selector, resolved against the\n\t * select's own root (document or shadow root). The panel keeps its viewport-based\n\t * positioning and top-layer painting; the target controls where the overlay lives in the\n\t * DOM — ancestor-scoped styles, stacking context and focus containment. Defaults to the\n\t * document body.\n\t */\n\treadonly _appendTo = input<string>(undefined, { alias: 'appendTo' });\n\treadonly appendTo = linkedSignal(() => this._appendTo());\n\t/** Configure which DOM event type is used for outside click detection. Use `'mousedown'` to fix issues with backdrop/loading overlays that appear on dropdown open */\n\treadonly _outsideClickEvent = input<'click' | 'mousedown'>(this.config.outsideClickEvent ?? 'click', { alias: 'outsideClickEvent' });\n\treadonly outsideClickEvent = linkedSignal(() => this._outsideClickEvent());\n\t/** You can set the loading state from the outside (e.g. async items loading) */\n\treadonly _loading = input(false, { alias: 'loading', transform: booleanAttribute });\n\treadonly loading = linkedSignal(() => this._loading());\n\t/** Whether to close the menu when a value is selected */\n\treadonly _closeOnSelect = input(true, { alias: 'closeOnSelect', transform: booleanAttribute });\n\treadonly closeOnSelect = linkedSignal(() => this._closeOnSelect());\n\t/** Allows to hide selected items. */\n\treadonly _hideSelected = input(false, { alias: 'hideSelected', transform: booleanAttribute });\n\treadonly hideSelected = linkedSignal(() => this._hideSelected());\n\t/** Select marked dropdown item using tab. Default `false` */\n\treadonly _selectOnTab = input(false, { alias: 'selectOnTab', transform: booleanAttribute });\n\treadonly selectOnTab = linkedSignal(() => this._selectOnTab());\n\t/** Open dropdown using enter. Default `true` */\n\treadonly _openOnEnter = input(undefined, { alias: 'openOnEnter', transform: booleanAttribute });\n\treadonly openOnEnter = linkedSignal(() => this._openOnEnter());\n\t/** When multiple = true, allows to set a limit number of selection. */\n\treadonly _maxSelectedItems = input<number, unknown>(undefined, { alias: 'maxSelectedItems', transform: numberAttribute });\n\treadonly maxSelectedItems = linkedSignal(() => this._maxSelectedItems());\n\t/** Allow to group items by key or function expression */\n\treadonly _groupBy = input<string | ((value: any) => any)>(undefined, { alias: 'groupBy' });\n\treadonly groupBy = linkedSignal(() => this._groupBy());\n\t/** Function expression to provide group value */\n\treadonly _groupValue = input<GroupValueFn>(undefined, { alias: 'groupValue' });\n\treadonly groupValue = linkedSignal(() => this._groupValue());\n\t/** Used in virtual scrolling, the `bufferAmount` property controls the number of items preloaded in the background to ensure smoother and more seamless scrolling. */\n\treadonly _bufferAmount = input(4, { alias: 'bufferAmount', transform: numberAttribute });\n\treadonly bufferAmount = linkedSignal(() => this._bufferAmount());\n\t/** Enable virtual scroll for better performance when rendering a lot of data */\n\treadonly _virtualScroll = input<boolean | undefined, unknown>(undefined, {\n\t\talias: 'virtualScroll',\n\t\ttransform: optionalBooleanAttribute,\n\t});\n\treadonly virtualScroll = linkedSignal(() => this._virtualScroll());\n\treadonly dropdownVirtualScroll = computed(() => {\n\t\tconst value = this._virtualScroll();\n\t\treturn isDefined(value) ? value : this.isVirtualScrollDisabled(this.config);\n\t});\n\t/** Allow to select group when groupBy is used */\n\treadonly _selectableGroup = input(false, { alias: 'selectableGroup', transform: booleanAttribute });\n\treadonly selectableGroup = linkedSignal(() => this._selectableGroup());\n\t/** Control tab navigation behavior for the clear button. Default `true` */\n\treadonly _tabFocusOnClearButton = input<boolean | undefined>(undefined, { alias: 'tabFocusOnClearButton' });\n\treadonly tabFocusOnClearButton = linkedSignal(() => this._tabFocusOnClearButton());\n\t/** Indicates whether to select all children or group itself */\n\treadonly _selectableGroupAsModel = input(true, { alias: 'selectableGroupAsModel', transform: booleanAttribute });\n\treadonly selectableGroupAsModel = linkedSignal(() => this._selectableGroupAsModel());\n\t/** Allow to filter by custom search function */\n\treadonly _searchFn = input(null, { alias: 'searchFn' });\n\treadonly searchFn = linkedSignal(() => this._searchFn());\n\t/** Provide custom trackBy function */\n\treadonly _trackByFn = input(null, { alias: 'trackByFn' });\n\treadonly trackByFn = linkedSignal(() => this._trackByFn());\n\t/** Clear selected values one by one when clicking backspace. Default `true` */\n\treadonly _clearOnBackspace = input(true, { alias: 'clearOnBackspace', transform: booleanAttribute });\n\treadonly clearOnBackspace = linkedSignal(() => this._clearOnBackspace());\n\t/** Id to associate control with label. */\n\treadonly _labelForId = input(null, { alias: 'labelForId' });\n\treadonly labelForId = linkedSignal(() => this._labelForId());\n\t/** Pass custom attributes to underlying `input` element */\n\treadonly _inputAttrs = input<Record<string, string>>({}, { alias: 'inputAttrs' });\n\treadonly inputAttrs = linkedSignal(() => this._inputAttrs());\n\t/** Set tabindex on ng-select */\n\treadonly _tabIndex = input<number, unknown>(undefined, { alias: 'tabIndex', transform: numberAttribute });\n\treadonly tabIndex = linkedSignal(() => this._tabIndex());\n\t/** Prevent user changes while preserving the current selection. */\n\treadonly _readonly = input(false, { alias: 'readonly', transform: booleanAttribute });\n\treadonly readonly = linkedSignal(() => this._readonly());\n\t/** Whether items should be filtered while composition started */\n\treadonly _searchWhileComposing = input(true, { alias: 'searchWhileComposing', transform: booleanAttribute });\n\treadonly searchWhileComposing = linkedSignal(() => this._searchWhileComposing());\n\t/** Minimum term length to start a search. Should be used with `typeahead` */\n\treadonly _minTermLength = input(0, { alias: 'minTermLength', transform: numberAttribute });\n\treadonly minTermLength = linkedSignal(() => this._minTermLength());\n\t/** Allow to edit search query if option selected. Default `false`. Works only if multiple is `false`. */\n\treadonly _editableSearchTerm = input(false, { alias: 'editableSearchTerm', transform: booleanAttribute });\n\treadonly editableSearchTerm = linkedSignal(() => this._editableSearchTerm());\n\treadonly _ngClass = input<ClassValue | null>(null, { alias: 'ngClass' });\n\treadonly ngClass = linkedSignal(() => this._ngClass());\n\t/** Additional CSS classes applied to the dropdown panel. Merged with mirrored host `class`, `[class]`, and `[ngClass]` values. */\n\treadonly _panelClass = input<ClassValue | null>(null, { alias: 'panelClass' });\n\treadonly panelClass = linkedSignal(() => this._panelClass());\n\t/** Custom autocomplete or advanced filter. */\n\treadonly _typeahead = input<Subject<string>>(undefined, { alias: 'typeahead' });\n\treadonly typeahead = linkedSignal(() => this._typeahead());\n\t/** Allows to select multiple items. */\n\treadonly _multiple = input(false, { alias: 'multiple', transform: booleanAttribute });\n\treadonly multiple = linkedSignal(() => this._multiple());\n\t/** Allows to create custom options. */\n\treadonly _addTag = input<boolean | AddTagFn>(false, { alias: 'addTag' });\n\treadonly addTag = linkedSignal(() => this._addTag());\n\t/** Allow to search for value. Default `true` */\n\treadonly _searchable = input(true, { alias: 'searchable', transform: booleanAttribute });\n\treadonly searchable = linkedSignal(() => this._searchable());\n\t/** Allow to clear selected value. Default `true` */\n\treadonly _clearable = input(true, { alias: 'clearable', transform: booleanAttribute });\n\treadonly clearable = linkedSignal(() => this._clearable());\n\treadonly _clearKeepsDisabledOptions = input(true, { alias: 'clearKeepsDisabledOptions', transform: booleanAttribute });\n\treadonly clearKeepsDisabledOptions = linkedSignal(() => this._clearKeepsDisabledOptions());\n\t/** Deselects a selected item when it is clicked in the dropdown. Default `false`. Default `true` when **multiple** is `true` */\n\treadonly _deselectOnClick = input<boolean>(undefined, { alias: 'deselectOnClick' });\n\treadonly deselectOnClick = linkedSignal(() => this._deselectOnClick());\n\t/** Clears search input when item is selected. Default `true`. Default `false` when **closeOnSelect** is `false` */\n\treadonly _clearSearchOnAdd = input(undefined, { alias: 'clearSearchOnAdd' });\n\treadonly clearSearchOnAdd = linkedSignal(() => this._clearSearchOnAdd());\n\t/** A function to compare the option values with the selected values. The first argument is a value from an option. The second is a value from the selection(model). A boolean should be returned. */\n\treadonly _compareWith = input(undefined, {\n\t\talias: 'compareWith',\n\t\ttransform: (fn: CompareWithFn | undefined) => {\n\t\t\tif (fn !== undefined && fn !== null && !isFunction(fn)) {\n\t\t\t\tthrow Error('`compareWith` must be a function.');\n\t\t\t}\n\t\t\treturn fn;\n\t\t},\n\t});\n\treadonly compareWith = linkedSignal(() => this._compareWith());\n\t/** Provide custom keyDown function. Executed before default handler. Return false to suppress execution of default key down handlers */\n\treadonly _keyDownFn = input<(_: KeyboardEvent) => boolean>((_: KeyboardEvent) => true, { alias: 'keyDownFn' });\n\treadonly keyDownFn = linkedSignal(() => this._keyDownFn());\n\t/** @deprecated Has no effect: the CDK overlay renders in the native Popover API top layer automatically in supporting browsers. Will be removed in a future major version. */\n\treadonly _popover = input(false, { alias: 'popover', transform: booleanAttribute });\n\t/** @deprecated Has no effect: the CDK overlay renders in the native Popover API top layer automatically in supporting browsers. Will be removed in a future major version. */\n\treadonly popover = linkedSignal(() => this._popover());\n\t// models\n\t/** Object property to use for label. Default `label` */\n\treadonly bindLabel = model<string>(undefined);\n\t/** Object property to use for selected model. By default binds to whole object. */\n\treadonly bindValue = model<string>(undefined);\n\t/** Allows to select dropdown appearance. Set to `outline` or `fill` for Material form-field styles (applies only to Material theme) */\n\treadonly appearance = model<string>(undefined);\n\t/** Allows manual control of dropdown opening and closing. `true` - won't close. `false` - won't open. */\n\treadonly isOpen = model<boolean | undefined>(false);\n\t/** Items array */\n\treadonly items = model<readonly any[]>([]);\n\t// output events\n\t/** Fired on select blur */\n\treadonly blurEvent = output<any>({ alias: 'blur' });\n\t/** Fired on select focus */\n\treadonly focusEvent = output<any>({ alias: 'focus' });\n\t/** Fired on model change. Outputs whole model */\n\treadonly changeEvent = output<any>({ alias: 'change' });\n\t/** Fired on select dropdown open */\n\treadonly openEvent = output({ alias: 'open' });\n\t/** Fired on select dropdown close */\n\treadonly closeEvent = output({ alias: 'close' });\n\t/** Fired while typing search term. Outputs search term with filtered items */\n\treadonly searchEvent = output<{\n\t\tterm: string;\n\t\titems: any[];\n\t}>({ alias: 'search' });\n\t/** Fired on clear icon click */\n\treadonly clearEvent = output({ alias: 'clear' });\n\t/** Fired when item is added while `[multiple]=\"true\"`. Outputs added item */\n\treadonly addEvent = output<any>({ alias: 'add' });\n\t/** Fired when item is removed while `[multiple]=\"true\"` */\n\treadonly removeEvent = output<any>({ alias: 'remove' });\n\t/** Fired when scrolled (only when `[virtualScroll]=\"true\"`). Provides the start and end index of the currently available items. Can be used for loading more items in chunks before the user has scrolled all the way to the bottom of the list. */\n\treadonly scroll = output<{\n\t\tstart: number;\n\t\tend: number;\n\t}>({ alias: 'scroll' });\n\t/** Fired when scrolled to the end of items. Can be used for loading more items in chunks. */\n\treadonly scrollToEnd = output<any>({ alias: 'scrollToEnd' });\n\t// computed\n\treadonly disabled = computed(() => this.readonly() || this._disabled());\n\treadonly clearSearchOnAddValue = computed(() => {\n\t\tif (isDefined(this.clearSearchOnAdd())) {\n\t\t\treturn this.clearSearchOnAdd();\n\t\t}\n\t\tif (isDefined(this.config.clearSearchOnAdd)) {\n\t\t\treturn this.config.clearSearchOnAdd;\n\t\t}\n\t\treturn this.closeOnSelect();\n\t});\n\treadonly deselectOnClickValue = computed(() => {\n\t\tif (isDefined(this.deselectOnClick())) {\n\t\t\treturn this.deselectOnClick();\n\t\t}\n\t\tif (isDefined(this.config.deselectOnClick)) {\n\t\t\treturn this.config.deselectOnClick;\n\t\t}\n\t\treturn this.multiple();\n\t});\n\t// content child queries\n\treadonly optionTemplate = contentChild(NgOptionTemplateDirective, { read: TemplateRef });\n\treadonly optgroupTemplate = contentChild(NgOptgroupTemplateDirective, { read: TemplateRef });\n\treadonly labelTemplate = contentChild(NgLabelTemplateDirective, { read: TemplateRef });\n\treadonly multiLabelTemplate = contentChild(NgMultiLabelTemplateDirective, { read: TemplateRef });\n\treadonly headerTemplate = contentChild(NgHeaderTemplateDirective, { read: TemplateRef });\n\treadonly footerTemplate = contentChild(NgFooterTemplateDirective, { read: TemplateRef });\n\treadonly notFoundTemplate = contentChild(NgNotFoundTemplateDirective, { read: TemplateRef });\n\treadonly placeholderTemplate = contentChild(NgPlaceholderTemplateDirective, { read: TemplateRef });\n\treadonly typeToSearchTemplate = contentChild(NgTypeToSearchTemplateDirective, { read: TemplateRef });\n\treadonly loadingTextTemplate = contentChild(NgLoadingTextTemplateDirective, { read: TemplateRef });\n\treadonly tagTemplate = contentChild(NgTagTemplateDirective, { read: TemplateRef });\n\treadonly loadingSpinnerTemplate = contentChild(NgLoadingSpinnerTemplateDirective, { read: TemplateRef });\n\treadonly clearButtonTemplate = contentChild(NgClearButtonTemplateDirective, { read: TemplateRef });\n\treadonly ngOptions = contentChildren(NgOptionComponent, { descendants: true });\n\t// view children queries\n\treadonly dropdownPanel = viewChild(forwardRef(() => NgDropdownPanelComponent));\n\treadonly searchInput = viewChild<ElementRef<HTMLInputElement>>('searchInput');\n\treadonly clearButton = viewChild<ElementRef<HTMLSpanElement>>('clearButton');\n\tprivate readonly _dropdownTemplate = viewChild<TemplateRef<any>>('dropdownTemplate');\n\t// The portal's embedded view is anchored at the template's own container so it stays\n\t// part of this component's logical view tree (DI, view queries, detectChanges) while\n\t// its DOM nodes live in the CDK overlay\n\tprivate readonly _dropdownOutlet = viewChild('dropdownTemplate', { read: ViewContainerRef });\n\tprivate readonly _selectContainer = viewChild<ElementRef<HTMLDivElement>>('selectContainer');\n\t// public variables\n\treadonly dropdownId = newId();\n\treadonly element: HTMLElement;\n\t/** Width of the notched-outline gap for the floated label in the material outline appearance */\n\treadonly outlineNotchWidth = signal(0);\n\t// variables\n\titemsList: ItemsList;\n\tviewPortItems: NgOption[] = [];\n\ttabFocusOnClear = signal<boolean>(true);\n\tprivate readonly _cd = inject(ChangeDetectorRef);\n\tprivate readonly _console = inject(ConsoleService);\n\tprivate readonly _destroyRef = inject(DestroyRef);\n\tprivate readonly autoFocus = inject(new HostAttributeToken('autofocus'), { optional: true });\n\t/** Overlay hosting the dropdown panel while open. Bound into the panel so it can request repositioning. */\n\tprotected dropdownOverlayRef: OverlayRef | null = null;\n\t// private variables\n\tprivate readonly _defaultLabel = 'label';\n\tprivate readonly _editableSearchTermActive = computed(() => this.editableSearchTerm() && !this.multiple());\n\tprivate readonly _document = inject(DOCUMENT);\n\tprivate _injector = inject(Injector);\n\tprivate readonly _dropdownOverlay: DropdownOverlayManager;\n\tprivate _isComposing = false;\n\tprivate _itemsAreUsed: boolean;\n\tprivate readonly _keyPress$ = new Subject<string>();\n\tprivate _manualOpen: boolean;\n\tprivate _pressedKeys: string[] = [];\n\tprivate _primitive: any;\n\t/** Last value written via `writeValue` or emitted via `_updateNgModel`; re-applied when mode/bindings change. */\n\tprivate _lastWrittenValue: any | any[] = null;\n\tprivate readonly _searchTerm = signal<string>(null);\n\tprivate readonly _validTerm = computed(() => {\n\t\tconst term = this._searchTerm()?.trim();\n\t\treturn term && term.length >= this.minTermLength();\n\t});\n\t/** Consumer classes on the host from static `class` and `[class]` bindings. */\n\tprivate readonly _consumerHostClasses = signal<string | null>(null);\n\t/** Classes forwarded to the overlay panel (mirrored host classes + `panelClass`). */\n\treadonly panelClasses = computed(() => {\n\t\treturn mergeClassValues(\n\t\t\t// Preserve explicitly declared static classes even when they share a name with\n\t\t\t// a framework-managed class that is otherwise filtered from the observed host.\n\t\t\tthis.classes,\n\t\t\tthis._consumerHostClasses(),\n\t\t\t// Keep supporting `[ngClass]` when it binds only to this component input and\n\t\t\t// no NgClass directive is present in the consumer's template scope.\n\t\t\tthis.ngClass(),\n\t\t\tthis.panelClass(),\n\t\t);\n\t});\n\n\t/**\n\t * Creates an instance of NgSelectComponent.\n\t *\n\t * @since 3.0.0\n\t */\n\tconstructor() {\n\t\tconst config = this.config;\n\t\tconst newSelectionModel = inject<SelectionModelFactory | undefined>(SELECTION_MODEL_FACTORY, { optional: true });\n\t\tconst _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\t\tthis._mergeGlobalConfig(config);\n\t\tthis.itemsList = new ItemsList(this, newSelectionModel ? newSelectionModel() : DefaultSelectionModelFactory());\n\t\tthis.element = _elementRef.nativeElement;\n\t\tthis._dropdownOverlay = new DropdownOverlayManager(this._injector, this._document, this.element);\n\t\tthis._handleSignalChanges();\n\t\tafterEveryRender({\n\t\t\tread: () => this._measureOutlineNotch(),\n\t\t});\n\t\tafterEveryRender({\n\t\t\tread: () => {\n\t\t\t\tconst consumerClasses = readConsumerHostClasses(this.element);\n\t\t\t\tconst normalized = consumerClasses || null;\n\t\t\t\tif (normalized !== this._consumerHostClasses()) {\n\t\t\t\t\tthis._consumerHostClasses.set(normalized);\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\t\tthis._destroyRef.onDestroy(() => {\n\t\t\tthis._dropdownOverlay.destroy();\n\t\t\tthis.dropdownOverlayRef = null;\n\t\t});\n\t}\n\n\t/**\n\t * Measures the placeholder label so the notched outline can leave a real gap in the border\n\t * for the floated label instead of masking it with an opaque background (material theme).\n\t * The 0.75 factor matches the `scale(0.75)` the material theme applies to the floated label.\n\t *\n\t * @since 23.2.3\n\t */\n\tprivate _measureOutlineNotch() {\n\t\tif (this.appearance() !== 'outline') {\n\t\t\treturn;\n\t\t}\n\t\tconst label = this.element.querySelector<HTMLElement>('.ng-select-container > .ng-value-container .ng-placeholder');\n\t\tconst width = label ? label.offsetWidth * 0.75 : 0;\n\t\tif (width !== this.outlineNotchWidth()) {\n\t\t\tthis.outlineNotchWidth.set(width);\n\t\t}\n\t}\n\n\tprivate _focused: boolean;\n\n\t/**\n\t * Gets whether the component currently owns focus.\n\t *\n\t * @returns The focused.\n\t *\n\t * @since 20.4.2\n\t */\n\tget focused() {\n\t\treturn this._focused;\n\t}\n\n\t/**\n\t * Gets whether search filtering or text composition is active.\n\t *\n\t * @returns The filtered.\n\t *\n\t * @since 3.0.0\n\t */\n\tget filtered() {\n\t\treturn (!!this.searchTerm && this.searchable()) || this._isComposing;\n\t}\n\n\t/**\n\t * Gets the search term.\n\t *\n\t * @returns The search term.\n\t *\n\t * @since 20.4.2\n\t */\n\tget searchTerm() {\n\t\treturn this._searchTerm();\n\t}\n\n\t/**\n\t * Gets the selected items.\n\t *\n\t * @returns The selected items.\n\t *\n\t * @since 3.0.0\n\t */\n\tget selectedItems(): NgOption[] {\n\t\treturn this.itemsList.selectedItems;\n\t}\n\n\t/**\n\t * Gets the selected values.\n\t *\n\t * @returns The selected values.\n\t *\n\t * @since 3.0.0\n\t */\n\tget selectedValues() {\n\t\treturn this.selectedItems.map((x) => x.value);\n\t}\n\n\t/**\n\t * Determines whether the component has selected values.\n\t *\n\t * @returns Whether has value.\n\t *\n\t * @since 3.0.0\n\t */\n\tget hasValue() {\n\t\treturn this.selectedItems.length > 0;\n\t}\n\n\t/**\n\t * Gets the current panel position.\n\t *\n\t * @returns The current panel position.\n\t *\n\t * @since 3.0.0\n\t */\n\tget currentPanelPosition(): DropdownPosition {\n\t\tif (this.dropdownPanel()) {\n\t\t\treturn this.dropdownPanel().currentPosition;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\t/**\n\t * Determines whether the add-tag option should be displayed.\n\t *\n\t * @returns Whether show add tag.\n\t *\n\t * @since 3.0.0\n\t */\n\tget showAddTag() {\n\t\tif (!this._validTerm()) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst term = this.searchTerm.toLowerCase().trim();\n\t\treturn (\n\t\t\tthis.addTag() &&\n\t\t\t!this.itemsList.filteredItems.some((x) => x.label.toLowerCase() === term) &&\n\t\t\t((!this.hideSelected() && this.isOpen()) || !this.selectedItems.some((x) => x.label.toLowerCase() === term)) &&\n\t\t\t!this.loading()\n\t\t);\n\t}\n\n\tclearItem = (item: any) => {\n\t\tconst option = this.selectedItems.find((x) => x.value === item);\n\t\tthis.unselect(option);\n\t};\n\n\t/**\n\t * Initializes the instance after Angular has assigned its inputs.\n\t *\n\t * @since 3.0.0\n\t */\n\tngOnInit() {\n\t\tthis._handleKeyPresses();\n\t\tthis._setInputAttributes();\n\t\tthis._warnDeprecatedInputs();\n\t}\n\n\t/**\n\t * Responds to Angular input changes.\n\t *\n\t * @param changes - The changed Angular inputs.\n\t *\n\t * @since 3.0.0\n\t */\n\tngOnChanges(changes: SimpleChanges) {\n\t\tconst itemsChange = changes.items;\n\t\tconst isOpenChange = changes.isOpen;\n\t\tconst groupByChange = changes._groupBy ?? changes.groupBy;\n\n\t\tif (itemsChange?.firstChange) {\n\t\t\tthis._itemsAreUsed = true;\n\t\t\tthis._setItems(itemsChange.currentValue || []);\n\t\t}\n\n\t\tif (isOpenChange) {\n\t\t\tthis._manualOpen = isDefined(isOpenChange.currentValue);\n\t\t}\n\n\t\tif (groupByChange?.firstChange && !itemsChange) {\n\t\t\tthis._setItems([...this.items()]);\n\t\t}\n\n\t\tthis._setTabFocusOnClear();\n\t}\n\n\t/**\n\t * Completes initialization that depends on rendered view children.\n\t *\n\t * @since 3.0.0\n\t */\n\tngAfterViewInit() {\n\t\tif (!this._itemsAreUsed) {\n\t\t\tthis._setItemsFromNgOptions();\n\t\t}\n\n\t\tif (isDefined(this.autoFocus)) {\n\t\t\tthis.focus();\n\t\t}\n\t}\n\n\t/**\n\t * Routes a keyboard event to the appropriate ng-select interaction handler.\n\t *\n\t * @param $event - The DOM event to process.\n\t *\n\t * @since 3.0.0\n\t */\n\t@HostListener('keydown', ['$event'])\n\thandleKeyDown($event: KeyboardEvent) {\n\t\tconst keyName = $event.key;\n\t\tif (Object.values(KeyCode).includes(keyName as KeyCode)) {\n\t\t\tif (this.keyDownFn()($event) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.handleKeyCode($event);\n\t\t} else if (keyName && keyName.length === 1) {\n\t\t\tthis._keyPress$.next(keyName.toLocaleLowerCase());\n\t\t}\n\t}\n\n\t/**\n\t * Handles navigation and selection key codes.\n\t *\n\t * @param $event - The DOM event to process.\n\t *\n\t * @since 3.1.1\n\t */\n\thandleKeyCode($event: KeyboardEvent) {\n\t\tconst target = $event.target;\n\n\t\tif (this.clearButton() && this.clearButton().nativeElement === target) {\n\t\t\tthis.handleKeyCodeClear($event);\n\t\t} else {\n\t\t\tthis.handleKeyCodeInput($event);\n\t\t}\n\t}\n\n\t/**\n\t * Handles keyboard interaction originating from the search input.\n\t *\n\t * @param $event - The DOM event to process.\n\t *\n\t * @since 11.1.2\n\t */\n\thandleKeyCodeInput($event: KeyboardEvent) {\n\t\tswitch ($event.key) {\n\t\t\tcase KeyCode.ArrowDown:\n\t\t\t\tthis._handleArrowDown($event);\n\t\t\t\tbreak;\n\t\t\tcase KeyCode.ArrowUp:\n\t\t\t\tthis._handleArrowUp($event);\n\t\t\t\tbreak;\n\t\t\tcase KeyCode.Space:\n\t\t\t\tthis._handleSpace($event);\n\t\t\t\tbreak;\n\t\t\tcase KeyCode.Enter:\n\t\t\t\tthis._handleEnter($event);\n\t\t\t\tbreak;\n\t\t\tcase KeyCode.Tab:\n\t\t\t\tthis._handleTab($event);\n\t\t\t\tbreak;\n\t\t\tcase KeyCode.Esc:\n\t\t\t\t// Only consume Escape when it closes the dropdown so parent overlays/dialogs can still handle Escape when already closed\n\t\t\t\tif (!this.isOpen() || this._manualOpen) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.close();\n\t\t\t\t$event.preventDefault();\n\t\t\t\tbreak;\n\t\t\tcase KeyCode.Backspace:\n\t\t\t\tthis._handleBackspace();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/**\n\t * Handles keyboard interaction on the clear control.\n\t *\n\t * @param $event - The DOM event to process.\n\t *\n\t * @since 11.1.2\n\t */\n\thandleKeyCodeClear($event: KeyboardEvent) {\n\t\tswitch ($event.key) {\n\t\t\tcase KeyCode.Enter:\n\t\t\tcase KeyCode.Space:\n\t\t\t\tthis.handleClearClick();\n\t\t\t\t$event.preventDefault();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/**\n\t * Handles keyboard removal of a selected value.\n\t *\n\t * @param $event - The DOM event to process.\n\t * @param item - The option to process.\n\t *\n\t * @since 23.3.0\n\t */\n\thandleRemoveKeydown($event: KeyboardEvent, item: NgOption) {\n\t\tif (item.disabled) {\n\t\t\treturn;\n\t\t}\n\t\tif ($event.key === KeyCode.Enter || $event.key === KeyCode.Space) {\n\t\t\t$event.preventDefault();\n\t\t\t$event.stopPropagation();\n\t\t\tthis.unselect(item);\n\t\t}\n\t}\n\n\t/**\n\t * Handles pointer interaction within the select container.\n\t *\n\t * @param $event - The DOM event to process.\n\t *\n\t * @since 3.0.0\n\t */\n\thandleMousedown($event: MouseEvent) {\n\t\tif (this.disabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.preventToggleOnRightClick() && $event.button === 2) {\n\t\t\treturn false;\n\t\t}\n\t\tconst target = $event.target as HTMLElement;\n\n\t\t// Allow highlighting/copying the selected label when search is disabled.\n\t\t// Skipping preventDefault + toggle lets the browser start a text selection.\n\t\t// See https://github.com/ng-select/ng-select/issues/2669\n\t\tconst onSelectedValue = !!target.closest?.('.ng-value');\n\t\tconst onValueIcon = target.classList.contains('ng-value-icon') || !!target.closest?.('.ng-value-icon');\n\t\tif (!this.searchable() && onSelectedValue && !onValueIcon) {\n\t\t\tif (!this._focused) {\n\t\t\t\tthis.focus();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Skip during Angular event replay (SSR hydration): preventDefault has no effect\n\t\t// after browser dispatch and throws — see https://github.com/ng-select/ng-select/issues/2549\n\t\tif (target.tagName !== 'INPUT' && $event.eventPhase !== EventPhase.REPLAY) {\n\t\t\t$event.preventDefault();\n\t\t}\n\n\t\tif (target.classList.contains('ng-clear-wrapper')) {\n\t\t\t// Don't handle clear on mousedown - let click event handle it\n\t\t\treturn;\n\t\t}\n\n\t\tif (target.classList.contains('ng-arrow-wrapper')) {\n\t\t\tthis.handleArrowClick();\n\t\t\treturn;\n\t\t}\n\n\t\tif (target.classList.contains('ng-value-icon')) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this._focused) {\n\t\t\tthis.focus();\n\t\t}\n\n\t\tif (this.searchable()) {\n\t\t\tthis.open();\n\t\t} else {\n\t\t\tthis.toggle();\n\t\t}\n\t}\n\n\t/**\n\t * Toggles the dropdown from the arrow control.\n\t *\n\t * @since 3.0.0\n\t */\n\thandleArrowClick() {\n\t\tif (this.isOpen()) {\n\t\t\tthis.close();\n\t\t} else {\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\t/**\n\t * Clears the model from a pointer interaction.\n\t *\n\t * @param _event - The DOM event to process.\n\t *\n\t * @since 3.0.0\n\t */\n\thandleClearClick(_event?: MouseEvent) {\n\t\tif (this.hasValue) {\n\t\t\tthis.itemsList.clearSelected(this.clearKeepsDisabledOptions());\n\t\t\tthis._updateNgModel();\n\t\t}\n\t\tthis._clearSearch();\n\t\tthis.focus();\n\t\tthis.clearEvent.emit();\n\n\t\tthis._onSelectionChanged();\n\t}\n\n\t/**\n\t * Clears the selected model values and resets the search state.\n\t *\n\t * @since 3.0.0\n\t */\n\tclearModel() {\n\t\tif (!this.clearable()) {\n\t\t\treturn;\n\t\t}\n\t\tthis.itemsList.clearSelected(false);\n\t\tthis._updateNgModel();\n\t}\n\n\t/**\n\t * Writes a ControlValueAccessor model value into the component.\n\t *\n\t * @param value - The value to process.\n\t *\n\t * @since 3.0.0\n\t */\n\twriteValue(value: any | any[]): void {\n\t\tthis._lastWrittenValue = value;\n\t\tthis.itemsList.clearSelected(false);\n\t\tthis._handleWriteValue(value);\n\t\tif (this._editableSearchTermActive()) {\n\t\t\tthis._setSearchTermFromItems();\n\t\t}\n\t\tthis._cd.markForCheck();\n\t}\n\n\t/**\n\t * Registers the ControlValueAccessor model-change callback.\n\t *\n\t * @param fn - The fn.\n\t *\n\t * @since 3.0.0\n\t */\n\tregisterOnChange(fn: any): void {\n\t\tthis._onChange = fn;\n\t}\n\n\t/**\n\t * Registers the ControlValueAccessor touched callback.\n\t *\n\t * @param fn - The fn.\n\t *\n\t * @since 3.0.0\n\t */\n\tregisterOnTouched(fn: any): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\t/**\n\t * Updates the disabled state supplied by Angular forms.\n\t *\n\t * @param state - The state.\n\t *\n\t * @since 3.0.0\n\t */\n\tsetDisabledState(state: boolean): void {\n\t\tthis._disabled.set(state);\n\t\tthis._cd.markForCheck();\n\t}\n\n\t/**\n\t * Toggles the dropdown panel.\n\t *\n\t * @since 3.0.0\n\t */\n\ttoggle() {\n\t\tif (!this.isOpen()) {\n\t\t\tthis.open();\n\t\t} else {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\t/**\n\t * Opens the select dropdown panel\n\t *\n\t * @since 3.0.0\n\t */\n\topen() {\n\t\tif (this.disabled() || this.isOpen() || this._manualOpen) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.typeahead()?.observed && !this.addTag() && this.itemsList.noItemsToSelect) {\n\t\t\treturn;\n\t\t}\n\t\tthis.isOpen.set(true);\n\t\tthis.itemsList.markSelectedOrDefault(this.markFirst());\n\t\tthis.openEvent.emit();\n\t\tif (!this.searchTerm) {\n\t\t\tthis.focus();\n\t\t}\n\t\t// Attach synchronously (effects only flush on the next tick): consumers expect the\n\t\t// panel to be in the DOM right after open() returns\n\t\tthis._syncDropdownOverlay();\n\t\tthis.detectChanges();\n\t}\n\n\t/**\n\t * Closes the select dropdown panel\n\t *\n\t * @since 3.0.0\n\t */\n\tclose() {\n\t\tif (!this.isOpen() || this._manualOpen) {\n\t\t\treturn;\n\t\t}\n\t\tthis.isOpen.set(false);\n\t\tthis._isComposing = false;\n\t\tif (!this._editableSearchTermActive()) {\n\t\t\tthis._clearSearch();\n\t\t} else {\n\t\t\tthis.itemsList.resetFilteredItems();\n\t\t}\n\t\tthis.itemsList.unmarkItem();\n\t\tthis._onTouched();\n\t\tthis.closeEvent.emit();\n\t\t// Detach synchronously (effects only flush on the next tick): the panel must leave\n\t\t// the DOM without relying on zone-triggered change detection (#2765)\n\t\tthis._syncDropdownOverlay();\n\t\tthis.detectChanges();\n\t}\n\n\t/**\n\t * Selects or unselects an option based on its current state.\n\t *\n\t * @param item - The option to process.\n\t *\n\t * @since 3.0.0\n\t */\n\ttoggleItem(item: NgOption) {\n\t\tif (!item || item.disabled || this.disabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.deselectOnClickValue() && item.selected) {\n\t\t\tthis.unselect(item);\n\t\t} else {\n\t\t\tthis.select(item);\n\t\t}\n\n\t\tif (this._editableSearchTermActive()) {\n\t\t\tthis._setSearchTermFromItems();\n\t\t}\n\t}\n\n\t/**\n\t * Selects an option according to the active selection mode.\n\t *\n\t * @param item - The option to process.\n\t *\n\t * @since 3.0.0\n\t */\n\tselect(item: NgOption) {\n\t\tif (!item.selected) {\n\t\t\tthis.itemsList.select(item);\n\t\t\tif (this.clearSearchOnAddValue() && !this._editableSearchTermActive()) {\n\t\t\t\tthis._clearSearch();\n\t\t\t}\n\n\t\t\tthis._updateNgModel();\n\t\t\tif (this.multiple()) {\n\t\t\t\tthis.addEvent.emit(item.value);\n\t\t\t}\n\t\t}\n\n\t\tif (this.closeOnSelect() || this.itemsList.noItemsToSelect) {\n\t\t\tthis.close();\n\t\t}\n\n\t\tthis._onSelectionChanged();\n\t}\n\n\t/**\n\t * Focuses the select element\n\t *\n\t * @since 3.0.0\n\t */\n\tfocus() {\n\t\tthis.searchInput().nativeElement.focus();\n\t}\n\n\t/**\n\t * Blurs the select element\n\t *\n\t * @since 3.0.0\n\t */\n\tblur() {\n\t\tthis.searchInput().nativeElement.blur();\n\t}\n\n\t/**\n\t * Removes an option from the current selection.\n\t *\n\t * @param item - The option to process.\n\t *\n\t * @since 3.0.0\n\t */\n\tunselect(item: NgOption) {\n\t\tif (!item || this.disabled() || item.disabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.itemsList.unselect(item);\n\t\tthis.focus();\n\t\tthis._updateNgModel();\n\t\tthis.removeEvent.emit(item.value);\n\t\tthis._onSelectionChanged();\n\t}\n\n\t/**\n\t * Creates and selects an option from the current search term.\n\t *\n\t * @since 3.0.0\n\t */\n\tselectTag() {\n\t\tlet tag;\n\t\tif (isFunction(this.addTag())) {\n\t\t\ttag = (<AddTagFn>this.addTag())(this.searchTerm);\n\t\t} else {\n\t\t\ttag = this._primitive ? this.searchTerm : { [this.bindLabel()]: this.searchTerm };\n\t\t}\n\n\t\tconst handleTag = (item) => (this.typeahead()?.observed || !this.isOpen() ? this.itemsList.mapItem(item, null) : this.itemsList.addItem(item));\n\t\tif (isPromise(tag)) {\n\t\t\ttag.then((item) => this.select(handleTag(item))).catch(() => {});\n\t\t} else if (tag) {\n\t\t\tthis.select(handleTag(tag));\n\t\t}\n\t}\n\n\t/**\n\t * Determines whether the clear control should be displayed.\n\t *\n\t * @since 3.0.0\n\t */\n\tshowClear() {\n\t\treturn this.clearable() && (this.hasValue || this.searchTerm) && !this.disabled();\n\t}\n\n\t/**\n\t * Moves keyboard focus to the clear control.\n\t *\n\t * @since 11.1.2\n\t */\n\tfocusOnClear() {\n\t\tthis.blur();\n\t\tif (this.clearButton()) {\n\t\t\tthis.clearButton().nativeElement.focus();\n\t\t}\n\t}\n\n\ttrackByOption = (_: number, item: NgOption) => {\n\t\tif (this.trackByFn()) {\n\t\t\treturn this.trackByFn()(item.value);\n\t\t}\n\n\t\treturn item;\n\t};\n\n\t/**\n\t * Determines whether the empty-results message should be displayed.\n\t *\n\t * @since 3.0.0\n\t */\n\tshowNoItemsFound() {\n\t\tconst empty = this.itemsList.filteredItems.length === 0;\n\t\treturn (\n\t\t\t((empty && !this.typeahead()?.observed && !this.loading()) || (empty && this.typeahead()?.observed && this._validTerm() && !this.loading())) &&\n\t\t\t!this.showAddTag\n\t\t);\n\t}\n\n\t/**\n\t * Determines whether the type-to-search prompt should be displayed.\n\t *\n\t * @since 3.0.0\n\t */\n\tshowTypeToSearch() {\n\t\tconst empty = this.itemsList.filteredItems.length === 0;\n\t\treturn empty && this.typeahead()?.observed && !this._validTerm() && !this.loading();\n\t}\n\n\t/**\n\t * Marks the start of an input method editor composition.\n\t *\n\t * @since 3.0.5\n\t */\n\tonCompositionStart() {\n\t\tthis._isComposing = true;\n\t}\n\n\t/**\n\t * Finishes input method editor composition and applies the search term.\n\t *\n\t * @param term - The term.\n\t *\n\t * @since 3.0.5\n\t */\n\tonCompositionEnd(term: string) {\n\t\tthis._isComposing = false;\n\t\tif (this.searchWhileComposing()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.filter(term);\n\t}\n\n\t/**\n\t * Filters the available options using the current search configuration.\n\t *\n\t * @param term - The term.\n\t *\n\t * @since 3.0.0\n\t */\n\tfilter(term: string) {\n\t\tif (this._isComposing && !this.searchWhileComposing()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._searchTerm.set(term);\n\t\tif (this.typeahead()?.observed && (this._validTerm() || this.minTermLength() === 0)) {\n\t\t\tthis.typeahead().next(term);\n\t\t}\n\n\t\tif (!this.typeahead()?.observed) {\n\t\t\tthis.itemsList.filter(term);\n\t\t\tif (this.isOpen()) {\n\t\t\t\tthis.itemsList.markSelectedOrDefault(this.markFirst());\n\t\t\t}\n\t\t}\n\n\t\tthis.searchEvent.emit({ term, items: this.itemsList.filteredItems.map((x) => x.value) });\n\t\tthis.open();\n\t}\n\n\t/**\n\t * Handles focus entering the search input.\n\t *\n\t * @param $event - The DOM event to process.\n\t *\n\t * @since 3.0.0\n\t */\n\tonInputFocus($event: FocusEvent) {\n\t\tif (this._focused) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._editableSearchTermActive()) {\n\t\t\tthis._setSearchTermFromItems();\n\t\t}\n\n\t\tthis.element.classList.add('ng-select-focused');\n\t\tthis.focusEvent.emit($event);\n\t\tthis._focused = true;\n\t}\n\n\t/**\n\t * Handles focus leaving the search input.\n\t *\n\t * @param $event - The DOM event to process.\n\t *\n\t * @since 3.0.0\n\t */\n\tonInputBlur($event: FocusEvent) {\n\t\tthis.element.classList.remove('ng-select-focused');\n\t\tthis.blurEvent.emit($event);\n\t\tif (!this.isOpen() && !this.disabled()) {\n\t\t\tthis._onTouched();\n\t\t}\n\t\tif (this._editableSearchTermActive()) {\n\t\t\tthis._setSearchTermFromItems();\n\t\t}\n\t\tthis._focused = false;\n\t}\n\n\t/**\n\t * Marks an option when pointer interaction hovers it.\n\t *\n\t * @param item - The option to process.\n\t *\n\t * @since 3.0.0\n\t */\n\tonItemHover(item: NgOption) {\n\t\tif (item.disabled) {\n\t\t\treturn;\n\t\t}\n\t\tthis.itemsList.markItem(item);\n\t}\n\n\t/**\n\t * Requests an OnPush change-detection pass.\n\t *\n\t * @since 3.0.0\n\t */\n\tdetectChanges() {\n\t\tif (!(<any>this._cd).destroyed) {\n\t\t\tthis._cd.detectChanges();\n\t\t}\n\t}\n\n\tprivate _onChange = (_: any) => {};\n\n\tprivate _onTouched = () => {};\n\n\t/**\n\t * Registers effects that synchronize signal-based inputs with component state.\n\t *\n\t * @since 23.0.4\n\t */\n\tprivate _handleSignalChanges() {\n\t\tlet itemsInitialized = false;\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tconst items = this.items();\n\n\t\t\t\tif (!itemsInitialized) {\n\t\t\t\t\titemsInitialized = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tthis._itemsAreUsed = true;\n\t\t\t\t\tthis._setItems(items || []);\n\t\t\t\t});\n\t\t\t},\n\t\t\t{ injector: this._injector },\n\t\t);\n\n\t\tlet multipleInitialized = false;\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tthis.multiple();\n\n\t\t\t\tif (!multipleInitialized) {\n\t\t\t\t\tmultipleInitialized = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tconst written = this._lastWrittenValue;\n\t\t\t\t\tthis._resyncSelectionFromWrittenValue();\n\t\t\t\t\tconst hadValue = isDefined(written) && !(Array.isArray(written) && written.length === 0);\n\t\t\t\t\tif (hadValue && !this.hasValue) {\n\t\t\t\t\t\t// The retained value cannot be represented in the new mode; emit the cleared value\n\t\t\t\t\t\t// so the form model and the UI stay in sync\n\t\t\t\t\t\tthis._updateNgModel();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\t{ injector: this._injector },\n\t\t);\n\n\t\t// Re-map the retained form value when the value binding or comparator changes.\n\t\t// bindLabel is intentionally not tracked: _setItems writes it and would loop.\n\t\tlet bindingsInitialized = false;\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tthis.bindValue();\n\t\t\t\tthis.compareWith();\n\n\t\t\t\tif (!bindingsInitialized) {\n\t\t\t\t\tbindingsInitialized = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tuntracked(() => this._resyncSelectionFromWrittenValue());\n\t\t\t},\n\t\t\t{ injector: this._injector },\n\t\t);\n\n\t\tlet groupByInitialized = false;\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tthis.groupBy();\n\n\t\t\t\tif (!groupByInitialized) {\n\t\t\t\t\tgroupByInitialized = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tuntracked(() => this._setItems([...this.items()]));\n\t\t\t},\n\t\t\t{ injector: this._injector },\n\t\t);\n\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tthis.inputAttrs();\n\t\t\t\tconst input = this.searchInput();\n\n\t\t\t\tif (!input) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tuntracked(() => this._setInputAttributes());\n\t\t\t},\n\t\t\t{ injector: this._injector },\n\t\t);\n\n\t\t// open()/close() sync the overlay imperatively; this effect covers the paths that\n\t\t// bypass them — an [isOpen] binding (manual mode), programmatic isOpen.set(), and\n\t\t// dropdownPosition changes while open\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tthis.isOpen();\n\t\t\t\tthis.dropdownPosition();\n\t\t\t\t// Track the template query too: with [isOpen] pre-set, the first run can happen\n\t\t\t\t// before view children resolve, and this re-runs the effect once they do\n\t\t\t\tthis._dropdownTemplate();\n\n\t\t\t\tuntracked(() => this._syncDropdownOverlay());\n\t\t\t},\n\t\t\t{ injector: this._injector },\n\t\t);\n\t}\n\n\t/**\n\t * Restores the editable search term from the selected option.\n\t *\n\t * @since 3.7.3\n\t */\n\tprivate _setSearchTermFromItems() {\n\t\tconst selected = this.selectedItems?.[0];\n\t\tthis._searchTerm.set(selected?.label ?? null);\n\t}\n\n\t/**\n\t * Re-applies the last written form value against the current mode and bindings.\n\t *\n\t * @since 24.0.5\n\t */\n\tprivate _resyncSelectionFromWrittenValue() {\n\t\tthis.itemsList.clearSelected(false);\n\t\tthis._handleWriteValue(this._lastWrittenValue);\n\t\tif (this._editableSearchTermActive()) {\n\t\t\tthis._setSearchTermFromItems();\n\t\t}\n\t\tthis._cd.markForCheck();\n\t}\n\n\t/**\n\t * Maps the bound items collection into the internal option list.\n\t *\n\t * @param items - The options to process.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _setItems(items: readonly any[]) {\n\t\tconst firstItem = items[0];\n\t\tthis.bindLabel.set(this.bindLabel() || this._defaultLabel);\n\t\tthis._primitive = isDefined(firstItem) ? !isObject(firstItem) : this._primitive || this.bindLabel() === this._defaultLabel;\n\t\tthis.itemsList.setItems(items);\n\t\tif (items.length > 0 && this.hasValue) {\n\t\t\tthis.itemsList.mapSelectedItems();\n\t\t}\n\t\tif (this.isOpen() && isDefined(this.searchTerm) && !this.typeahead()?.observed) {\n\t\t\tthis.itemsList.filter(this.searchTerm);\n\t\t}\n\t\tif (this.typeahead()?.observed || this.isOpen()) {\n\t\t\tthis.itemsList.markSelectedOrDefault(this.markFirst());\n\t\t}\n\t}\n\n\t/**\n\t * Maps projected `ng-option` components into the internal option list.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _setItemsFromNgOptions() {\n\t\teffect(\n\t\t\t() => {\n\t\t\t\tconst options = this.ngOptions();\n\t\t\t\t// Wait until all ng-option inputs are initialized (avoids _groupBy crash when values load async)\n\t\t\t\tif (options.length > 0 && !options.every((opt) => opt.isInitialized())) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.bindLabel.set(this._defaultLabel);\n\t\t\t\tconst items = options.map((option) => ({\n\t\t\t\t\t$ngOptionValue: option.value(),\n\t\t\t\t\t$ngOptionLabel: option.label(),\n\t\t\t\t\t$ngOptionClasses: option.classes(),\n\t\t\t\t\tdisabled: option.disabled(),\n\t\t\t\t}));\n\t\t\t\tthis.items.set(items);\n\t\t\t\tthis.itemsList.setItems(items);\n\t\t\t\tif (this.hasValue) {\n\t\t\t\t\tthis.itemsList.mapSelectedItems();\n\t\t\t\t}\n\t\t\t\tthis._cd.detectChanges();\n\n\t\t\t\toptions\n\t\t\t\t\t// find item for each option\n\t\t\t\t\t.map((option) => ({\n\t\t\t\t\t\toption,\n\t\t\t\t\t\titem: this.itemsList.findItem(option.value()),\n\t\t\t\t\t}))\n\t\t\t\t\t// filter non found items\n\t\t\t\t\t.filter(({ item }) => isDefined(item))\n\t\t\t\t\t// process to update disabled and label\n\t\t\t\t\t.forEach(({ option, item }) => {\n\t\t\t\t\t\titem.disabled = option.disabled();\n\t\t\t\t\t\titem.label = option.label() || item.label;\n\t\t\t\t\t\titem.classes = option.classes();\n\t\t\t\t\t});\n\t\t\t},\n\t\t\t{ injector: this._injector },\n\t\t);\n\t}\n\n\t/**\n\t * Maps a valid external model value into selected options.\n\t *\n\t * @param value - The form value.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _handleWriteValue(value: any | any[]) {\n\t\tconst validation = validateWriteValue(value, {\n\t\t\tbindValue: this.bindValue(),\n\t\t\tcompareWith: this.compareWith(),\n\t\t\tmultiple: this.multiple(),\n\t\t});\n\t\tif (!validation.valid) {\n\t\t\tif (validation.warning) {\n\t\t\t\tthis._console.warn(validation.warning);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tconst select = (val: any) => {\n\t\t\tlet item = this.itemsList.findItem(val);\n\t\t\tif (item) {\n\t\t\t\tthis.itemsList.select(item);\n\t\t\t} else {\n\t\t\t\titem = createUnmatchedOptionValue(val, this.bindLabel() || this._defaultLabel, this.bindValue());\n\t\t\t\tthis.itemsList.select(this.itemsList.mapItem(item, null));\n\t\t\t}\n\t\t};\n\n\t\tif (this.multiple()) {\n\t\t\t(<any[]>value).forEach((item) => select(item));\n\t\t} else {\n\t\t\tselect(value);\n\t\t}\n\t}\n\n\t/**\n\t * Matches typed characters to options for keyboard navigation.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _handleKeyPresses() {\n\t\tif (this.searchable()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._keyPress$\n\t\t\t.pipe(\n\t\t\t\ttakeUntilDestroyed(this._destroyRef),\n\t\t\t\ttap((letter) => this._pressedKeys.push(letter)),\n\t\t\t\tdebounceTime(200),\n\t\t\t\tfilter(() => this._pressedKeys.length > 0),\n\t\t\t\tmap(() => this._pressedKeys.join('')),\n\t\t\t)\n\t\t\t.subscribe((term) => {\n\t\t\t\tconst item = this.itemsList.findByLabel(term);\n\t\t\t\tif (item) {\n\t\t\t\t\tif (this.isOpen()) {\n\t\t\t\t\t\tif (!item.disabled) {\n\t\t\t\t\t\t\tthis.itemsList.markItem(item);\n\t\t\t\t\t\t\tthis._scrollToMarked();\n\t\t\t\t\t\t\t// Required under zoneless CD: this subscription fires from a debounce\n\t\t\t\t\t\t\t// timer, which schedules nothing by itself\n\t\t\t\t\t\t\tthis._cd.markForCheck();\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.select(item);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._pressedKeys = [];\n\t\t\t});\n\t}\n\n\t/**\n\t * Applies configured attributes to the native search input.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _setInputAttributes() {\n\t\tconst input = this.searchInput().nativeElement;\n\t\tconst attributes = {\n\t\t\ttype: 'text',\n\t\t\tautocorrect: 'off',\n\t\t\tautocapitalize: 'off',\n\t\t\tautocomplete: 'off',\n\t\t\t...this.inputAttrs(),\n\t\t};\n\n\t\tfor (const key of Object.keys(attributes)) {\n\t\t\tinput.setAttribute(key, attributes[key]);\n\t\t}\n\t}\n\n\t/**\n\t * Updates whether Tab should move focus to the clear control.\n\t *\n\t * @since 15.1.0\n\t */\n\tprivate _setTabFocusOnClear() {\n\t\tthis.tabFocusOnClear.set(isDefined(this.tabFocusOnClearButton()) ? !!this.tabFocusOnClearButton() : this.config.tabFocusOnClear);\n\t}\n\n\t/**\n\t * Builds and emits the current ControlValueAccessor model value.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _updateNgModel() {\n\t\tconst model = selectedItemsToModel(\n\t\t\tthis.selectedItems,\n\t\t\t{\n\t\t\t\tbindValue: this.bindValue(),\n\t\t\t\tgroupBy: this.groupBy(),\n\t\t\t\thasGroupValue: !!this.groupValue(),\n\t\t\t},\n\t\t\t(value, key) => this.itemsList.resolveNested(value, key),\n\t\t);\n\n\t\tconst selected = this.selectedItems.map((x) => x.value);\n\t\tif (this.multiple()) {\n\t\t\tthis._lastWrittenValue = model;\n\t\t\tthis._onChange(model);\n\t\t\tthis.changeEvent.emit(selected);\n\t\t} else {\n\t\t\tconst single = isDefined(model[0]) ? model[0] : null;\n\t\t\tthis._lastWrittenValue = single;\n\t\t\tthis._onChange(single);\n\t\t\tthis.changeEvent.emit(selected[0]);\n\t\t}\n\n\t\t// Required under zoneless CD: sole notifier for the programmatic selection\n\t\t// APIs (select/unselect/clearModel/clearItem) called from non-Angular contexts\n\t\tthis._cd.markForCheck();\n\t}\n\n\t/**\n\t * Clears the current search term when configuration permits it.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _clearSearch() {\n\t\tif (!this.searchTerm) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._changeSearch(null);\n\t\tthis.itemsList.resetFilteredItems();\n\t}\n\n\t/**\n\t * Updates the search term and emits the search event.\n\t *\n\t * @param searchTerm - The search term.\n\t *\n\t * @since 3.0.6\n\t */\n\tprivate _changeSearch(searchTerm: string) {\n\t\tthis._searchTerm.set(searchTerm);\n\t}\n\n\t/**\n\t * Scrolls the dropdown to the currently marked option.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _scrollToMarked() {\n\t\tif (!this.isOpen() || !this.dropdownPanel()) {\n\t\t\treturn;\n\t\t}\n\t\tthis.dropdownPanel().scrollTo(this.itemsList.markedItem);\n\t}\n\n\t/**\n\t * Scrolls the dropdown to the add-tag option.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _scrollToTag() {\n\t\tif (!this.isOpen() || !this.dropdownPanel()) {\n\t\t\treturn;\n\t\t}\n\t\tthis.dropdownPanel().scrollToTag();\n\t}\n\n\t/**\n\t * Synchronizes search and close behavior after selection changes.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _onSelectionChanged() {\n\t\tif (this.isOpen() && this.deselectOnClickValue()) {\n\t\t\t// Make sure items are rendered.\n\t\t\tthis._cd.detectChanges();\n\t\t\tthis.dropdownPanel()?.adjustPosition();\n\t\t}\n\t}\n\n\t/**\n\t * Attaches or detaches the dropdown overlay to match the current open state. Idempotent.\n\t *\n\t * @since 23.7.0\n\t */\n\tprivate _syncDropdownOverlay() {\n\t\tconst template = this._dropdownTemplate();\n\t\tconst viewContainer = this._dropdownOutlet();\n\t\tif (!template || !viewContainer) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.isOpen()) {\n\t\t\tthis._dropdownOverlay.open({\n\t\t\t\tappendTo: this.appendTo() ?? this.config.appendTo ?? null,\n\t\t\t\tbeforeAttach: (overlayRef) => (this.dropdownOverlayRef = overlayRef),\n\t\t\t\torigin: this._dropdownOrigin(),\n\t\t\t\tposition: this.dropdownPosition(),\n\t\t\t\ttemplate,\n\t\t\t\tviewContainer,\n\t\t\t});\n\t\t} else {\n\t\t\tthis._dropdownOverlay.close();\n\t\t}\n\t}\n\n\t/**\n\t * The dropdown anchors to the `.ng-select-container` box, not the host: themes may pad\n\t * the host below the container (material reserves 1.25em of subscript space under the\n\t * underline), and the panel must sit flush against the visible field — the same anchor\n\t * the pre-overlay `appendTo` positioning used.\n\t *\n\t * @since 23.7.0\n\t */\n\tprivate _dropdownOrigin(): HTMLElement {\n\t\treturn this._selectContainer()?.nativeElement ?? this.element;\n\t}\n\n\t/**\n\t * Reports development-mode warnings for deprecated inputs.\n\t *\n\t * @since 23.7.0\n\t */\n\tprivate _warnDeprecatedInputs() {\n\t\tif (!isDevMode()) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.popover()) {\n\t\t\tthis._console.warn(\n\t\t\t\t'[ng-select] `popover` is deprecated and has no effect: the dropdown panel now renders in an Angular CDK overlay, which uses the native Popover API top layer automatically in supporting browsers.',\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Handles Tab selection, clear-control focus, and close behavior.\n\t *\n\t * @param $event - The DOM event to process.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _handleTab($event: KeyboardEvent) {\n\t\tif (this.isOpen() === false) {\n\t\t\tif (this.showClear() && !$event.shiftKey && this.tabFocusOnClear()) {\n\t\t\t\tthis.focusOnClear();\n\t\t\t\t$event.preventDefault();\n\t\t\t} else if (!this.addTag()) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (this.selectOnTab()) {\n\t\t\tif (this.itemsList.markedItem) {\n\t\t\t\tthis.toggleItem(this.itemsList.markedItem);\n\t\t\t\t$event.preventDefault();\n\t\t\t} else if (this.showAddTag) {\n\t\t\t\tthis.selectTag();\n\t\t\t\t$event.preventDefault();\n\t\t\t} else {\n\t\t\t\tthis.close();\n\t\t\t}\n\t\t} else {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\t/**\n\t * Handles Enter selection and dropdown opening.\n\t *\n\t * @param $event - The DOM event to process.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _handleEnter($event: KeyboardEvent) {\n\t\tconst openOnEnter = this.openOnEnter() ?? this.config.openOnEnter;\n\t\tif (this.isOpen() || this._manualOpen) {\n\t\t\tif (this.itemsList.markedItem) {\n\t\t\t\tthis.toggleItem(this.itemsList.markedItem);\n\t\t\t} else if (this.showAddTag) {\n\t\t\t\tthis.selectTag();\n\t\t\t}\n\t\t} else if (openOnEnter) {\n\t\t\tthis.open();\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\t$event.preventDefault();\n\t}\n\n\t/**\n\t * Handles Space selection and dropdown opening.\n\t *\n\t * @param $event - The DOM event to process.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _handleSpace($event: KeyboardEvent) {\n\t\tif (this.isOpen() || this._manualOpen) {\n\t\t\treturn;\n\t\t}\n\t\tthis.open();\n\t\t$event.preventDefault();\n\t}\n\n\t/**\n\t * Moves the marked option down or opens the dropdown.\n\t *\n\t * @param $event - The DOM event to process.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _handleArrowDown($event: KeyboardEvent) {\n\t\tif (this._nextItemIsTag(+1)) {\n\t\t\tthis.itemsList.unmarkItem();\n\t\t\tthis._scrollToTag();\n\t\t} else {\n\t\t\tthis.itemsList.markNextItem();\n\t\t\tthis._scrollToMarked();\n\t\t}\n\t\tthis.open();\n\t\t$event.preventDefault();\n\t}\n\n\t/**\n\t * Moves the marked option up or opens the dropdown.\n\t *\n\t * @param $event - The DOM event to process.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _handleArrowUp($event: KeyboardEvent) {\n\t\tif (!this.isOpen()) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this._nextItemIsTag(-1)) {\n\t\t\tthis.itemsList.unmarkItem();\n\t\t\tthis._scrollToTag();\n\t\t} else {\n\t\t\tthis.itemsList.markPreviousItem();\n\t\t\tthis._scrollToMarked();\n\t\t}\n\t\t$event.preventDefault();\n\t}\n\n\t/**\n\t * Determines whether the next keyboard target is the add-tag option.\n\t *\n\t * @param nextStep - The next step.\n\t * @returns Whether next item is tag.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _nextItemIsTag(nextStep: number): boolean {\n\t\tconst nextIndex = this.itemsList.markedIndex + nextStep;\n\t\treturn this.addTag() && this.searchTerm && this.itemsList.markedItem && (nextIndex < 0 || nextIndex === this.itemsList.filteredItems.length);\n\t}\n\n\t/**\n\t * Removes the last selected value when Backspace clearing is enabled.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _handleBackspace() {\n\t\tif (this.searchTerm || !this.clearable() || !this.clearOnBackspace() || !this.hasValue) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.multiple()) {\n\t\t\tthis.unselect(this.itemsList.lastSelectedItem);\n\t\t} else {\n\t\t\tthis.clearModel();\n\t\t}\n\t}\n\n\t/**\n\t * Applies configured global defaults that were not set locally.\n\t *\n\t * @param config - The global ng-select configuration.\n\t *\n\t * @since 3.0.0\n\t */\n\tprivate _mergeGlobalConfig(config: NgSelectConfig) {\n\t\tthis.bindValue.set(this.bindValue() || config.bindValue);\n\t\tthis.bindLabel.set(this.bindLabel() || config.bindLabel || this._defaultLabel);\n\t\tthis.appearance.set(this.appearance() || config.appearance);\n\t\tthis._setTabFocusOnClear();\n\t}\n\n\t/**\n\t * Gets virtual scroll value from input or from config\n\t *\n\t *  @param config NgSelectConfig object\n\t *\n\t *  @returns `true` if virtual scroll is enabled, `false` otherwise\n\t *\n\t * @since 14.7.0\n\t */\n\tprivate getVirtualScroll(config: NgSelectConfig): boolean {\n\t\treturn isDefined(this._virtualScroll()) ? this._virtualScroll()! : this.isVirtualScrollDisabled(config);\n\t}\n\n\t/**\n\t * Gets disableVirtualScroll value from input or from config\n\t *\n\t *  @param config NgSelectConfig object\n\t *\n\t *  @returns `true` if disableVirtualScroll is enabled, `false` otherwise\n\t *\n\t * @since 14.7.0\n\t */\n\tprivate isVirtualScrollDisabled(config: NgSelectConfig) {\n\t\treturn isDefined(config.disableVirtualScroll) ? !config.disableVirtualScroll : false;\n\t}\n}\n","<div\n\t#selectContainer\n\t(mousedown)=\"handleMousedown($event)\"\n\t[class.ng-appearance-outline]=\"appearance() === 'outline'\"\n\t[class.ng-appearance-fill]=\"appearance() === 'fill'\"\n\t[class.ng-has-value]=\"hasValue\"\n\tclass=\"ng-select-container\">\n\t<div class=\"ng-value-container\">\n\t\t@if ((selectedItems.length === 0 && !searchTerm) || (fixedPlaceholder() ?? config.fixedPlaceholder)) {\n\t\t\t<ng-template #defaultPlaceholderTemplate>\n\t\t\t\t<div class=\"ng-placeholder\">{{ placeholder() ?? config.placeholder }}</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template [ngTemplateOutlet]=\"placeholderTemplate() || defaultPlaceholderTemplate\"> </ng-template>\n\t\t}\n\n\t\t@if ((!multiLabelTemplate() || !multiple()) && selectedItems.length > 0) {\n\t\t\t@for (item of selectedItems; track trackByOption($index, item)) {\n\t\t\t\t<div [class.ng-value-disabled]=\"item.disabled\" class=\"ng-value\">\n\t\t\t\t\t<ng-template #defaultLabelTemplate>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclass=\"ng-value-icon left\"\n\t\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t\t\t[attr.aria-label]=\"(removeText() ?? config.removeText) + ' ' + item.label\"\n\t\t\t\t\t\t\t(click)=\"unselect(item)\"\n\t\t\t\t\t\t\t(keydown)=\"handleRemoveKeydown($event, item)\"\n\t\t\t\t\t\t\t>×</span\n\t\t\t\t\t\t>\n\t\t\t\t\t\t<span class=\"ng-value-label\">{{ item.label }}</span>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template\n\t\t\t\t\t\t[ngTemplateOutlet]=\"labelTemplate() || defaultLabelTemplate\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ item: item.value, clear: clearItem, label: item.label }\">\n\t\t\t\t\t</ng-template>\n\t\t\t\t</div>\n\t\t\t}\n\t\t}\n\n\t\t@if (multiple() && multiLabelTemplate() && selectedValues.length > 0) {\n\t\t\t<ng-template [ngTemplateOutlet]=\"multiLabelTemplate()\" [ngTemplateOutletContext]=\"{ items: selectedValues, clear: clearItem }\"> </ng-template>\n\t\t}\n\n\t\t<div class=\"ng-input\">\n\t\t\t<input\n\t\t\t\t#searchInput\n\t\t\t\t(blur)=\"onInputBlur($event)\"\n\t\t\t\t(change)=\"$event.stopPropagation()\"\n\t\t\t\t(compositionend)=\"onCompositionEnd(searchInput.value)\"\n\t\t\t\t(compositionstart)=\"onCompositionStart()\"\n\t\t\t\t(focus)=\"onInputFocus($event)\"\n\t\t\t\t(input)=\"filter(searchInput.value)\"\n\t\t\t\t[attr.aria-activedescendant]=\"isOpen() ? itemsList?.markedItem?.htmlId : null\"\n\t\t\t\t[attr.aria-controls]=\"isOpen() ? dropdownId : null\"\n\t\t\t\t[attr.aria-expanded]=\"isOpen()\"\n\t\t\t\t[attr.aria-label]=\"ariaLabel()\"\n\t\t\t\t[attr.id]=\"labelForId()\"\n\t\t\t\t[attr.tabindex]=\"tabIndex()\"\n\t\t\t\t[disabled]=\"disabled()\"\n\t\t\t\t[readOnly]=\"!searchable() || itemsList.maxItemsSelected\"\n\t\t\t\t[value]=\"searchTerm ?? ''\"\n\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\trole=\"combobox\" />\n\t\t</div>\n\t</div>\n\n\t@if (loading()) {\n\t\t<ng-template #defaultLoadingSpinnerTemplate>\n\t\t\t<div class=\"ng-spinner-loader\"></div>\n\t\t</ng-template>\n\t\t<ng-template [ngTemplateOutlet]=\"loadingSpinnerTemplate() || defaultLoadingSpinnerTemplate\"></ng-template>\n\t}\n\n\t@if (showClear()) {\n\t\t<span\n\t\t\tclass=\"ng-clear-wrapper\"\n\t\t\trole=\"button\"\n\t\t\ttabindex=\"0\"\n\t\t\t[attr.tabindex]=\"tabFocusOnClear() ? 0 : -1\"\n\t\t\t[attr.aria-label]=\"clearAllText() || config.clearAllText\"\n\t\t\ttitle=\"{{ clearAllText() || config.clearAllText }}\"\n\t\t\t#clearButton\n\t\t\t(click)=\"handleClearClick($event)\">\n\t\t\t@if (clearButtonTemplate()) {\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"clearButtonTemplate()\"></ng-container>\n\t\t\t} @else {\n\t\t\t\t<span class=\"ng-clear\" aria-hidden=\"true\">×</span>\n\t\t\t}\n\t\t</span>\n\t}\n\n\t<span class=\"ng-arrow-wrapper\">\n\t\t<span class=\"ng-arrow\"></span>\n\t</span>\n\n\t@if (appearance() === 'outline') {\n\t\t<div class=\"ng-notched-outline\" aria-hidden=\"true\">\n\t\t\t<div class=\"ng-notched-outline-leading\"></div>\n\t\t\t<div class=\"ng-notched-outline-notch\" [style.width.px]=\"outlineNotchWidth()\"></div>\n\t\t\t<div class=\"ng-notched-outline-trailing\"></div>\n\t\t</div>\n\t}\n</div>\n\n<!-- Rendered through a TemplatePortal into the CDK overlay while the select is open;\n     the embedded view stays part of this component's view tree, only the DOM moves. -->\n<ng-template #dropdownTemplate>\n\t<ng-dropdown-panel\n\t\tclass=\"ng-dropdown-panel\"\n\t\t[virtualScroll]=\"dropdownVirtualScroll()\"\n\t\t[bufferAmount]=\"bufferAmount()\"\n\t\t[position]=\"dropdownPosition()\"\n\t\t[outsideClickEvent]=\"outsideClickEvent()\"\n\t\t[headerTemplate]=\"headerTemplate()\"\n\t\t[footerTemplate]=\"footerTemplate()\"\n\t\t[filterValue]=\"searchTerm\"\n\t\t[items]=\"itemsList.filteredItems\"\n\t\t[showAddTag]=\"showAddTag\"\n\t\t[markedItem]=\"itemsList.markedItem\"\n\t\t(update)=\"viewPortItems = $event\"\n\t\t(scroll)=\"scroll.emit($event)\"\n\t\t(scrollToEnd)=\"scrollToEnd.emit($event)\"\n\t\t(outsideClick)=\"close()\"\n\t\t[class.ng-select-multiple]=\"multiple()\"\n\t\t[class]=\"panelClasses()\"\n\t\t[listboxId]=\"dropdownId\"\n\t\t[ariaLabelDropdown]=\"ariaLabelDropdown() ?? config.ariaLabelDropdown\"\n\t\t[overlayRef]=\"dropdownOverlayRef\"\n\t\t[selectElement]=\"element\">\n\t\t<ng-container>\n\t\t\t@for (item of viewPortItems; track trackByOption($index, item)) {\n\t\t\t\t<!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus, @angular-eslint/template/mouse-events-have-key-events -->\n\t\t\t\t<div\n\t\t\t\t\t[attr.role]=\"item.children ? 'group' : 'option'\"\n\t\t\t\t\t(click)=\"toggleItem(item)\"\n\t\t\t\t\t(mouseover)=\"onItemHover(item)\"\n\t\t\t\t\t[ngClass]=\"item.classes\"\n\t\t\t\t\t[class.ng-option-disabled]=\"item.disabled\"\n\t\t\t\t\t[class.ng-option-selected]=\"item.selected\"\n\t\t\t\t\t[class.ng-optgroup]=\"item.children\"\n\t\t\t\t\t[class.ng-option]=\"!item.children\"\n\t\t\t\t\t[class.ng-option-child]=\"!!item.parent\"\n\t\t\t\t\t[class.ng-option-marked]=\"item === itemsList.markedItem\"\n\t\t\t\t\t[attr.aria-selected]=\"item.selected\"\n\t\t\t\t\t[attr.id]=\"item?.htmlId\"\n\t\t\t\t\t[attr.aria-setsize]=\"itemsList.filteredItems.length\"\n\t\t\t\t\t[attr.aria-posinset]=\"itemsList.filteredItems.indexOf(item) + 1 || null\">\n\t\t\t\t\t<ng-template #defaultOptionTemplate>\n\t\t\t\t\t\t<span class=\"ng-option-label\">{{ item.label }}</span>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template\n\t\t\t\t\t\t[ngTemplateOutlet]=\"item.children ? optgroupTemplate() || defaultOptionTemplate : optionTemplate() || defaultOptionTemplate\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ item: item.value, item$: item, index: item.index, searchTerm: searchTerm }\">\n\t\t\t\t\t</ng-template>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\t@if (showAddTag) {\n\t\t\t\t<!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus, @angular-eslint/template/mouse-events-have-key-events -->\n\t\t\t\t<div\n\t\t\t\t\tclass=\"ng-option\"\n\t\t\t\t\t[class.ng-option-marked]=\"!itemsList.markedItem\"\n\t\t\t\t\t(mouseover)=\"itemsList.unmarkItem()\"\n\t\t\t\t\trole=\"option\"\n\t\t\t\t\t[attr.aria-selected]=\"false\"\n\t\t\t\t\t(click)=\"selectTag()\">\n\t\t\t\t\t<ng-template #defaultTagTemplate>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t><span class=\"ng-tag-label\">{{ addTagText() || config.addTagText }}</span\n\t\t\t\t\t\t\t>\"{{ searchTerm }}\"</span\n\t\t\t\t\t\t>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"tagTemplate() || defaultTagTemplate\" [ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\"> </ng-template>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</ng-container>\n\t\t@if (showNoItemsFound()) {\n\t\t\t<ng-template #defaultNotFoundTemplate>\n\t\t\t\t<div class=\"ng-option ng-option-disabled\">{{ notFoundText() ?? config.notFoundText }}</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template [ngTemplateOutlet]=\"notFoundTemplate() || defaultNotFoundTemplate\" [ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n\t\t\t</ng-template>\n\t\t}\n\t\t@if (showTypeToSearch()) {\n\t\t\t<ng-template #defaultTypeToSearchTemplate>\n\t\t\t\t<div class=\"ng-option ng-option-disabled\">{{ typeToSearchText() || config.typeToSearchText }}</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template [ngTemplateOutlet]=\"typeToSearchTemplate() || defaultTypeToSearchTemplate\"></ng-template>\n\t\t}\n\t\t@if (loading() && itemsList.filteredItems.length === 0) {\n\t\t\t<ng-template #defaultLoadingTextTemplate>\n\t\t\t\t<div class=\"ng-option ng-option-disabled\">{{ loadingText() || config.loadingText }}</div>\n\t\t\t</ng-template>\n\t\t\t<ng-template [ngTemplateOutlet]=\"loadingTextTemplate() || defaultLoadingTextTemplate\" [ngTemplateOutletContext]=\"{ searchTerm: searchTerm }\">\n\t\t\t</ng-template>\n\t\t}\n\t</ng-dropdown-panel>\n</ng-template>\n\n<!-- Always present aria-live region -->\n<div aria-atomic=\"true\" aria-live=\"polite\" class=\"ng-visually-hidden\" role=\"status\">\n\t@if (isOpen()) {\n\t\t@if (showNoItemsFound()) {\n\t\t\t{{ notFoundText() ?? config.notFoundText }}\n\t\t} @else if (showTypeToSearch()) {\n\t\t\t{{ typeToSearchText() || config.typeToSearchText }}\n\t\t} @else if (loading() && itemsList.filteredItems.length === 0) {\n\t\t\t{{ loadingText() || config.loadingText }}\n\t\t} @else if (itemsList.markedItem) {\n\t\t\t{{ itemsList.markedItem.label }}\n\t\t}\n\t}\n</div>\n","import { NgModule } from '@angular/core';\nimport {\n\tNgClearButtonTemplateDirective,\n\tNgFooterTemplateDirective,\n\tNgHeaderTemplateDirective,\n\tNgItemLabelDirective,\n\tNgLabelTemplateDirective,\n\tNgLoadingSpinnerTemplateDirective,\n\tNgLoadingTextTemplateDirective,\n\tNgMultiLabelTemplateDirective,\n\tNgNotFoundTemplateDirective,\n\tNgOptgroupTemplateDirective,\n\tNgOptionTemplateDirective,\n\tNgPlaceholderTemplateDirective,\n\tNgTagTemplateDirective,\n\tNgTypeToSearchTemplateDirective,\n} from './directives/ng-templates.directive';\nimport { NgDropdownPanelComponent } from './dropdown-panel/ng-dropdown-panel.component';\nimport { NgOptionComponent } from './ng-option.component';\nimport { NgSelectComponent, SELECTION_MODEL_FACTORY } from './ng-select/ng-select.component';\nimport { DefaultSelectionModelFactory } from './selection-model';\n\n/**\n * Provides the compatibility NgModule wrapper for the standalone ng-select declarations.\n *\n * @since 3.0.0\n */\n@NgModule({\n\timports: [\n\t\tNgDropdownPanelComponent,\n\t\tNgOptionComponent,\n\t\tNgSelectComponent,\n\t\tNgOptgroupTemplateDirective,\n\t\tNgOptionTemplateDirective,\n\t\tNgLabelTemplateDirective,\n\t\tNgMultiLabelTemplateDirective,\n\t\tNgHeaderTemplateDirective,\n\t\tNgFooterTemplateDirective,\n\t\tNgPlaceholderTemplateDirective,\n\t\tNgClearButtonTemplateDirective,\n\t\tNgNotFoundTemplateDirective,\n\t\tNgTypeToSearchTemplateDirective,\n\t\tNgLoadingTextTemplateDirective,\n\t\tNgTagTemplateDirective,\n\t\tNgLoadingSpinnerTemplateDirective,\n\t\tNgItemLabelDirective,\n\t],\n\texports: [\n\t\tNgSelectComponent,\n\t\tNgOptionComponent,\n\t\tNgOptgroupTemplateDirective,\n\t\tNgOptionTemplateDirective,\n\t\tNgLabelTemplateDirective,\n\t\tNgMultiLabelTemplateDirective,\n\t\tNgHeaderTemplateDirective,\n\t\tNgFooterTemplateDirective,\n\t\tNgPlaceholderTemplateDirective,\n\t\tNgNotFoundTemplateDirective,\n\t\tNgTypeToSearchTemplateDirective,\n\t\tNgLoadingTextTemplateDirective,\n\t\tNgTagTemplateDirective,\n\t\tNgLoadingSpinnerTemplateDirective,\n\t\tNgClearButtonTemplateDirective,\n\t],\n\tproviders: provideNgSelect(),\n})\nexport class NgSelectModule {}\n\n/**\n * Provides the default ng-select selection-model dependency.\n *\n * @since 15.2.0\n */\nexport function provideNgSelect() {\n\treturn [\n\t\t{\n\t\t\tprovide: SELECTION_MODEL_FACTORY,\n\t\t\tuseValue: DefaultSelectionModelFactory,\n\t\t},\n\t];\n}\n","/*\n * Public API Surface of ng-select\n */\n\nexport {\n\tNgClearButtonTemplateDirective,\n\tNgFooterTemplateDirective,\n\tNgHeaderTemplateDirective,\n\tNgItemLabelDirective,\n\tNgLabelTemplateDirective,\n\tNgLoadingSpinnerTemplateDirective,\n\tNgLoadingTextTemplateDirective,\n\tNgMultiLabelTemplateDirective,\n\tNgNotFoundTemplateDirective,\n\tNgOptgroupTemplateDirective,\n\tNgOptionTemplateDirective,\n\tNgPlaceholderTemplateDirective,\n\tNgTagTemplateDirective,\n\tNgTypeToSearchTemplateDirective,\n} from './lib/directives/ng-templates.directive';\nexport { NgDropdownPanelComponent } from './lib/dropdown-panel/ng-dropdown-panel.component';\nexport { NgDropdownPanelService } from './lib/dropdown-panel/ng-dropdown-panel.service';\nexport { NgOptionComponent } from './lib/ng-option.component';\nexport { NgSelectModule } from './lib/ng-select.module';\nexport { NgSelectComponent, SELECTION_MODEL_FACTORY } from './lib/ng-select/ng-select.component';\nexport { DefaultSelectionModel, DefaultSelectionModelFactory, SelectionModel } from './lib/selection-model';\nexport { NgSelectConfig } from './lib/services/config.service';\nexport { ConsoleService } from './lib/services/console.service';\nexport { DropdownPosition, NgOption } from './lib/types/ng-select.types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["searchHelper.stripSpecialChars"],"mappings":"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,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb,IAAA,QAAQ,EAAE,GAAG;AACb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"}