{"version":3,"file":"fundamental-ngx-core-pagination.mjs","sources":["../../../../libs/core/pagination/pagination.service.ts","../../../../libs/core/pagination/pagination.component.ts","../../../../libs/core/pagination/pagination.component.html","../../../../libs/core/pagination/pagination.module.ts","../../../../libs/core/pagination/fundamental-ngx-core-pagination.ts"],"sourcesContent":["import { Injectable, isDevMode } from '@angular/core';\n\nimport { range } from '@fundamental-ngx/cdk/utils';\nimport { Pagination } from './pagination.model';\n\n/** Constant representing the number of pages which appear before and after current page. */\nconst CORNER_DISPLAY_PAGES = 1;\nconst SIDE_CURRENT_DISPLAY_PAGES = 2;\n\n/**\n * Service that is used to retrieve all the pages, the number of pages, and to validate the pagination object.\n */\n@Injectable()\nexport class PaginationService {\n    /** @hidden */\n    public readonly moreElementValue = -1;\n\n    /**\n     * Returns a number array representing the pages of the pagination object.\n     * Array length always the same and configured by CORNER_DISPLAY_PAGES & SIDE_CURRENT_DISPLAY_PAGES.\n     * @param pagination An object of type *Pagination*.\n     */\n    getPages(pagination: Pagination): number[] {\n        if (!pagination.currentPage) {\n            pagination.currentPage = 1;\n        }\n\n        this.validate(pagination);\n\n        const totalPages = this.getTotalPages(pagination);\n        const pages = range(totalPages, (i) => i + 1);\n\n        // +1 for current page, +2 for \"more\" elements - after start & before end pages\n        const pagesToDisplay = CORNER_DISPLAY_PAGES * 2 + SIDE_CURRENT_DISPLAY_PAGES * 2 + 1 + 2;\n\n        if (pages.length <= pagesToDisplay) {\n            return pages;\n        }\n\n        const pagesBefore = pagination.currentPage - 1;\n        const pagesAfter = totalPages - pagination.currentPage;\n        const minimalPagesGap = Math.round(pagesToDisplay / 2);\n\n        if (pagesBefore < minimalPagesGap) {\n            return [\n                ...pages.slice(0, pagesToDisplay - 2),\n                this.moreElementValue,\n                ...pages.slice(totalPages - CORNER_DISPLAY_PAGES)\n            ];\n        }\n\n        if (pagesAfter < minimalPagesGap) {\n            return [\n                ...pages.slice(0, CORNER_DISPLAY_PAGES),\n                this.moreElementValue,\n                ...pages.slice(totalPages - pagesToDisplay + 2)\n            ];\n        }\n\n        return [\n            ...pages.slice(0, CORNER_DISPLAY_PAGES),\n            this.moreElementValue,\n            ...pages.slice(\n                pagination.currentPage - SIDE_CURRENT_DISPLAY_PAGES - 1,\n                pagination.currentPage + SIDE_CURRENT_DISPLAY_PAGES\n            ),\n            this.moreElementValue,\n            ...pages.slice(totalPages - CORNER_DISPLAY_PAGES)\n        ];\n    }\n\n    /**\n     * Retrieves the total number of pages.\n     * @param pagination An object of type *Pagination*.\n     */\n    getTotalPages(pagination: Pagination): number {\n        if (!pagination.itemsPerPage) {\n            return 0;\n        }\n\n        return Math.ceil(pagination.totalItems / pagination.itemsPerPage);\n    }\n\n    /**\n     * Provides validation for the pagination object.\n     * @param pagination An object of type *Pagination*.\n     */\n    validate(pagination: Pagination): void {\n        if (isDevMode()) {\n            if (isNaN(pagination.totalItems) || pagination.totalItems <= 0) {\n                console.warn(\n                    `\"totalItems\" must be a number greater than zero but got \"${pagination.totalItems}\". This warning only appears in development mode.`\n                );\n            }\n\n            if (isNaN(pagination.itemsPerPage!) || pagination.itemsPerPage! <= 0) {\n                console.warn(\n                    `\"itemsPerPage\" must be a number greater than zero but got \"${pagination.itemsPerPage}\". This warning only appears in development mode.`\n                );\n            }\n        }\n    }\n}\n","import { FocusableOption, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { coerceArray, coerceNumberProperty } from '@angular/cdk/coercion';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Output,\n    QueryList,\n    SimpleChanges,\n    TemplateRef,\n    ViewChild,\n    ViewChildren,\n    ViewEncapsulation,\n    booleanAttribute,\n    effect,\n    inject\n} from '@angular/core';\nimport { FormsModule, NgModel } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { FocusKeyManagerItemDirective, FocusKeyManagerListDirective, RtlService } from '@fundamental-ngx/cdk/utils';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { OnlyDigitsDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { FormControlComponent, FormLabelComponent } from '@fundamental-ngx/core/form';\nimport { OptionComponent, SelectComponent } from '@fundamental-ngx/core/select';\nimport { FD_LANGUAGE_SIGNAL, FdTranslatePipe, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { Pagination } from './pagination.model';\nimport { PaginationService } from './pagination.service';\n\n/** Constant representing the default number of items per page. */\nconst DEFAULT_ITEMS_PER_PAGE = 10;\n\ninterface CurrentShowing {\n    from: number;\n    to: number;\n    totalCount: number;\n}\n\nlet paginationUniqueId = 0;\n\n/**\n * The component that is used to provide navigation between paged information.\n * ```html\n * <fd-pagination\n *          [totalItems]=\"50\"\n *          [itemsPerPage]=\"10\"\n *          [currentPage]=\"3\">\n * </fd-pagination>\n * ```\n */\n@Component({\n    selector: 'fd-pagination',\n    templateUrl: './pagination.component.html',\n    providers: [PaginationService, contentDensityObserverProviders()],\n    host: {\n        class: 'fd-pagination',\n        '[class.fd-pagination--mobile]': 'mobile',\n        '[class.fd-pagination--short]': '_lastPage <= 9'\n    },\n    encapsulation: ViewEncapsulation.None,\n    styleUrl: './pagination.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    preserveWhitespaces: true,\n    imports: [\n        NgTemplateOutlet,\n        FocusKeyManagerListDirective,\n        ButtonComponent,\n        FocusKeyManagerItemDirective,\n        FormLabelComponent,\n        FormsModule,\n        FormControlComponent,\n        OnlyDigitsDirective,\n        SelectComponent,\n        OptionComponent,\n        FdTranslatePipe\n    ]\n})\nexport class PaginationComponent implements OnChanges, AfterViewInit, OnDestroy {\n    /** @hidden */\n    @ViewChild(FocusKeyManagerListDirective)\n    readonly _focusKeyManagerList: FocusKeyManagerListDirective;\n\n    /** @hidden */\n    @ViewChildren(FocusKeyManagerItemDirective)\n    readonly _focusKeyManagerItems: QueryList<FocusKeyManagerItemDirective>;\n\n    /** @hidden */\n    @ViewChild('pageInputElement', { read: ElementRef })\n    readonly _pageInputElement: ElementRef;\n\n    /** @hidden */\n    @ViewChild('currentPageElement', { read: ElementRef })\n    readonly _currentPageElement: ElementRef;\n\n    /** Id for the pagination component. If omitted, a unique one is generated. */\n    @Input()\n    id: string = 'fd-pagination-' + paginationUniqueId++;\n\n    /** Whether component should be shown in the mobile mode. */\n    @Input({ transform: booleanAttribute })\n    mobile = false;\n\n    /** Represents the total number of items. */\n    @Input()\n    totalItems: number;\n\n    /** Represents the current page number. */\n    @Input()\n    set currentPage(value: number) {\n        this._currentPage = Math.floor(coerceNumberProperty(value, 1));\n    }\n    get currentPage(): number {\n        return this._currentPage;\n    }\n\n    /** Represents the number of items per page. */\n    @Input()\n    set itemsPerPage(value: number) {\n        value = Math.floor(coerceNumberProperty(value, DEFAULT_ITEMS_PER_PAGE));\n\n        this._itemsPerPage = Math.max(value, 1);\n\n        this._updateDisplayedPageSizeOptions();\n    }\n    get itemsPerPage(): number {\n        return this._itemsPerPage;\n    }\n\n    /**\n     * The custom template show range of item by current page of items.\n     * It has higher priority than `itemsPerPageOptions` property.\n     */\n    @Input()\n    itemsPerPageTemplate: TemplateRef<any>;\n\n    /** Represents the options for items per page. */\n    @Input()\n    set itemsPerPageOptions(value: number[]) {\n        this._itemsPerPageOptions = coerceArray<number>(value)\n            .map((v) => coerceNumberProperty(v, 0))\n            .map((v) => Math.floor(v))\n            .filter((v) => v > 0)\n            .sort((a, b) => a - b);\n\n        this._updateDisplayedPageSizeOptions();\n    }\n    get itemsPerPageOptions(): number[] {\n        return this._itemsPerPageOptions;\n    }\n\n    /** Whether to display the total number of items. */\n    @Input()\n    displayTotalItems = true;\n\n    /**\n     * The template show range of item by current page of items.\n     * Default view: Showing {{ from }}-{{ to }} of {{ of }}\n     */\n    @Input()\n    displayTextTemplate: TemplateRef<any>;\n\n    /** Event emitted when the page is changed. */\n    @Output()\n    pageChangeStart = new EventEmitter<number>();\n\n    /** Event emitted when items per page option is changed.*/\n    @Output()\n    itemsPerPageChange = new EventEmitter<number>();\n\n    /** @hidden */\n    _pages: number[] = [];\n\n    /** @hidden */\n    _pagesBeforeCurrent: number[];\n\n    /** @hidden */\n    _pagesAfterCurrent: number[];\n\n    /**\n     * Retrieves an object that represents\n     * the total number of items, the current page, and the number of items per page.\n     */\n    get paginationObject(): Pagination {\n        return {\n            totalItems: this.totalItems,\n            currentPage: this.currentPage,\n            itemsPerPage: this.itemsPerPage\n        };\n    }\n\n    /** @hidden */\n    get _lastPage(): number {\n        return this.paginationService.getTotalPages(this.paginationObject);\n    }\n\n    /** @hidden */\n    get isFirstPage(): boolean {\n        return this.currentPage === 1;\n    }\n\n    /** @hidden */\n    get isLastPage(): boolean {\n        return this.currentPage === this.paginationService.getTotalPages(this.paginationObject);\n    }\n\n    /** @hidden */\n    get _totalPages(): number {\n        return this.paginationService.getTotalPages(this.paginationObject);\n    }\n\n    /** @hidden */\n    get _totalPagesElementId(): string {\n        return this.id + '__total';\n    }\n\n    /** @hidden */\n    get _moreElementValue(): number {\n        return this.paginationService.moreElementValue;\n    }\n\n    /** @hidden */\n    _currentShowing: CurrentShowing = {\n        from: 0,\n        to: 0,\n        totalCount: 0\n    };\n\n    /** @hidden */\n    _displayedPageSizeOptions: number[] = [];\n\n    /** @hidden */\n    private _itemsPerPage: number = DEFAULT_ITEMS_PER_PAGE;\n\n    /** @hidden */\n    private _itemsPerPageOptions: number[] = [];\n\n    /** @hidden */\n    private _currentPage = 1;\n\n    /** @hidden */\n    private _subscriptions = new Subscription();\n\n    /** @hidden */\n    private _translationResolver = new TranslationResolver();\n\n    /** @hidden */\n    private readonly _rtlService = inject(RtlService, { optional: true });\n\n    /** @hidden */\n    private readonly _languageSignal = inject(FD_LANGUAGE_SIGNAL);\n\n    /** @hidden */\n    constructor(\n        private readonly paginationService: PaginationService,\n        private readonly _cdr: ChangeDetectorRef,\n        private readonly _liveAnnouncer: LiveAnnouncer,\n        readonly _contentDensityObserver: ContentDensityObserver\n    ) {\n        // React to RTL changes\n        effect(() => {\n            this._rtlService?.rtl();\n            this._refreshPages();\n        });\n    }\n\n    /** @hidden */\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes?.currentPage) {\n            this.currentPage = changes.currentPage.currentValue;\n        }\n        if (!this.currentPage || this.currentPage < 1) {\n            this.currentPage = 1;\n        } else {\n            const totalPages = this.paginationService.getTotalPages(this.paginationObject);\n            if (this.currentPage > totalPages) {\n                this.currentPage = totalPages;\n            }\n        }\n        this._refreshPages();\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._focusKeyManagerList?.focusKeyManager?.withVerticalOrientation(false);\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._subscriptions.unsubscribe();\n    }\n\n    /** @hidden */\n    skipItemPredicate(item: ElementRef & FocusableOption): boolean {\n        return (\n            getComputedStyle(item.nativeElement).display === 'none' ||\n            item.nativeElement.getAttribute('disabled') === 'true'\n        );\n    }\n\n    /**\n     * Navigates to a specific page.\n     * @param page The page to navigate to.\n     * @param event The mouse event (optional).\n     */\n    goToPage(page: number, event?: Event): void {\n        if (page > this._lastPage || page < 1) {\n            return;\n        }\n\n        this._refreshPages();\n\n        if (event) {\n            this._focusCurrentPage();\n        }\n\n        this.pageChangeStart.emit(page);\n\n        this._announcePage(page);\n    }\n\n    /** Navigates to the first page */\n    goToFirstPage(): void {\n        this.goToPage(1);\n    }\n\n    /**\n     * Navigates to a previous page.\n     */\n    previousPage(): void {\n        this.goToPage(this.currentPage - 1);\n    }\n\n    /**\n     * Navigates to the next page.\n     */\n    nextPage(): void {\n        this.goToPage(this.currentPage + 1);\n    }\n\n    /** Navigates to the last page */\n    goToLastPage(): void {\n        this.goToPage(this._lastPage);\n    }\n\n    /** @hidden */\n    _onChangePerPage = (event: number): void => {\n        this.itemsPerPage = event;\n        this.itemsPerPageChange.emit(this.itemsPerPage);\n\n        this._refreshPages();\n\n        const maxPage = this._pages[this._pages.length - 1];\n        if (this.currentPage > maxPage) {\n            this.pageChangeStart.emit(maxPage);\n        }\n    };\n\n    /** @hidden */\n    _restoreInputValue(model: NgModel): void {\n        model.reset(this.currentPage);\n        this._cdr.markForCheck();\n    }\n\n    /** @hidden */\n    private _refreshPages(): void {\n        const pagination = this.paginationObject;\n\n        this._pages = this.paginationService.getPages(pagination);\n\n        const currentPageIndex = this._pages.findIndex((page) => page === this.currentPage);\n\n        this._pagesBeforeCurrent = this._pages.slice(0, currentPageIndex);\n        this._pagesAfterCurrent = this._pages.slice(currentPageIndex + 1);\n\n        const itemsPerPage = pagination.itemsPerPage ?? DEFAULT_ITEMS_PER_PAGE;\n\n        this._currentShowing = {\n            from: this.currentPage - 1 === 0 ? 1 : (this.currentPage - 1) * itemsPerPage + 1,\n            to: Math.min((this.currentPage - 1) * itemsPerPage + itemsPerPage, this.totalItems),\n            totalCount: this.totalItems\n        };\n\n        this._cdr.markForCheck();\n    }\n\n    /** Focus current page link/input using FocusKeyManager\n     * @hidden\n     */\n    private _focusCurrentPage(): void {\n        const currentPageNativeElement =\n            getComputedStyle(this._currentPageElement.nativeElement).display === 'none'\n                ? this._pageInputElement.nativeElement\n                : this._currentPageElement.nativeElement;\n\n        const index = this._focusKeyManagerItems\n            .toArray()\n            .findIndex((elem) => elem.nativeElement === currentPageNativeElement);\n\n        this._focusKeyManagerList.focusItem(index);\n    }\n\n    /**\n     * Updates the list of page size options to display to the user. Includes making sure that\n     * the page size is an option and that the list is sorted.\n     */\n    private _updateDisplayedPageSizeOptions(): void {\n        // If no page size is provided, use the first page size option or the default page size.\n        if (!this.itemsPerPage) {\n            this._itemsPerPage = this.itemsPerPageOptions.length ? this.itemsPerPageOptions[0] : DEFAULT_ITEMS_PER_PAGE;\n        }\n\n        this._displayedPageSizeOptions = this.itemsPerPageOptions?.slice() ?? [];\n\n        if (!this._displayedPageSizeOptions.includes(this.itemsPerPage)) {\n            this._displayedPageSizeOptions.push(this.itemsPerPage);\n        }\n\n        this._displayedPageSizeOptions.sort((a, b) => a - b);\n        this._cdr.markForCheck();\n    }\n\n    /** @hidden */\n    private async _announcePage(page: number): Promise<void> {\n        await this._liveAnnouncer.announce(\n            this._translationResolver.resolve(this._languageSignal(), 'corePagination.currentPageAriaLabel', {\n                pageNumber: page,\n                totalCount: this.totalItems\n            })\n        );\n    }\n}\n","@if (totalItems) {\n    @if (itemsPerPageTemplate || itemsPerPageOptions.length) {\n        <div class=\"fd-pagination__per-page\">\n            <!-- note, that we're checking for the length of \"itemsPerPageOptions\", but using \"_displayedPageSizeOptions\" as \"pageOptions\" -->\n            <!-- these 2 can be different, as \"_displayedPageSizeOptions\" may also include \"itemsPerPage\" if it's not included in options -->\n            <ng-template\n                [ngTemplateOutlet]=\"itemsPerPageTemplate || perPage\"\n                [ngTemplateOutletContext]=\"{ onSelect: _onChangePerPage, pageOptions: _displayedPageSizeOptions }\"\n            ></ng-template>\n        </div>\n    }\n    @if (totalItems >= itemsPerPage) {\n        <nav\n            fdkFocusKeyManagerList\n            orientation=\"horizontal\"\n            [skipPredicate]=\"skipItemPredicate\"\n            class=\"fd-pagination__nav\"\n            [attr.aria-label]=\"('corePagination.ariaLabel' | fdTranslate)()\"\n            [attr.aria-labelledby]=\"displayTotalItems ? _totalPagesElementId : null\"\n        >\n            <button\n                fdkFocusKeyManagerItem\n                fd-button\n                fdType=\"transparent\"\n                glyph=\"media-rewind\"\n                [disabled]=\"isFirstPage\"\n                [ariaLabel]=\"('corePagination.firstLabel' | fdTranslate)()\"\n                [title]=\"('corePagination.firstLabel' | fdTranslate)()\"\n                class=\"fd-pagination__button fd-pagination__button--mobile\"\n                [attr.aria-disabled]=\"isFirstPage\"\n                (click)=\"goToFirstPage()\"\n                (keyup.enter)=\"goToFirstPage()\"\n                (keydown.space)=\"$event.preventDefault()\"\n                (keyup.space)=\"goToFirstPage()\"\n            ></button>\n            <button\n                fdkFocusKeyManagerItem\n                fd-button\n                fdType=\"transparent\"\n                glyph=\"navigation-left-arrow\"\n                [disabled]=\"isFirstPage\"\n                [ariaLabel]=\"('corePagination.previousLabel' | fdTranslate)()\"\n                [title]=\"('corePagination.previousLabel' | fdTranslate)()\"\n                class=\"fd-pagination__button\"\n                [attr.aria-disabled]=\"isFirstPage\"\n                (click)=\"previousPage()\"\n                (keyup.enter)=\"previousPage()\"\n                (keydown.space)=\"$event.preventDefault()\"\n                (keyup.space)=\"previousPage()\"\n            ></button>\n            <!-- Duplicated to preserve the items order for keyboard navigation -->\n            @for (page of _pagesBeforeCurrent; track page) {\n                @if (page !== _moreElementValue) {\n                    <button\n                        fdkFocusKeyManagerItem\n                        fd-button\n                        fdType=\"transparent\"\n                        [ariaLabel]=\"('corePagination.pageLabel' | fdTranslate: { pageNumber: page })()\"\n                        [title]=\"('corePagination.pageLabel' | fdTranslate: { pageNumber: page })()\"\n                        class=\"fd-pagination__link\"\n                        (click)=\"goToPage(page)\"\n                        (keyup.enter)=\"goToPage(page, $event)\"\n                        (keydown.space)=\"$event.preventDefault()\"\n                        (keyup.space)=\"goToPage(page, $event)\"\n                    >\n                        {{ page }}\n                    </button>\n                } @else {\n                    <span class=\"fd-pagination__more\" aria-hidden=\"true\" aria-label=\"...\" role=\"presentation\"></span>\n                }\n            }\n            <button\n                #currentPageElement\n                fdkFocusKeyManagerItem\n                fd-button\n                fdType=\"transparent\"\n                [ariaLabel]=\"('corePagination.pageLabel' | fdTranslate: { pageNumber: currentPage })()\"\n                class=\"fd-pagination__link is-active\"\n                [attr.aria-current]=\"true\"\n            >\n                {{ currentPage }}\n            </button>\n            <label fd-form-label class=\"fd-pagination__label\">\n                {{ ('corePagination.labelBeforeInputMobile' | fdTranslate)() }}\n            </label>\n            <input\n                #pageInputElement\n                fdkFocusKeyManagerItem\n                fd-form-control\n                fdkOnlyDigits\n                required\n                size=\"1\"\n                min=\"1\"\n                type=\"number\"\n                [max]=\"_lastPage\"\n                [state]=\"currentPageModel.invalid ? 'error' : null\"\n                class=\"fd-pagination__input\"\n                #currentPageModel=\"ngModel\"\n                [ngModel]=\"currentPage\"\n                [ariaLabel]=\"\n                    (\n                        'corePagination.inputAriaLabel'\n                        | fdTranslate: { pageNumber: currentPage, totalCount: _totalPages }\n                    )()\n                \"\n                (keydown.enter)=\"goToPage(currentPageModel.value)\"\n                (keydown.space)=\"goToPage(currentPageModel.value)\"\n                (blur)=\"_restoreInputValue(currentPageModel)\"\n            />\n            <label fd-form-label class=\"fd-pagination__label\">\n                {{\n                    (\n                        'corePagination.labelAfterInputMobile'\n                        | fdTranslate: { pageNumber: currentPage, totalCount: _totalPages }\n                    )()\n                }}\n            </label>\n            <!-- Duplicated to preserve the items order for keyboard navigation -->\n            @for (page of _pagesAfterCurrent; track page) {\n                @if (page !== _moreElementValue) {\n                    <button\n                        fdkFocusKeyManagerItem\n                        fd-button\n                        fdType=\"transparent\"\n                        [ariaLabel]=\"('corePagination.pageLabel' | fdTranslate: { pageNumber: page })()\"\n                        [title]=\"('corePagination.pageLabel' | fdTranslate: { pageNumber: page })()\"\n                        class=\"fd-pagination__link\"\n                        (click)=\"goToPage(page)\"\n                        (keyup.enter)=\"goToPage(page, $event)\"\n                        (keydown.space)=\"$event.preventDefault()\"\n                        (keyup.space)=\"goToPage(page, $event)\"\n                    >\n                        {{ page }}\n                    </button>\n                } @else {\n                    <span class=\"fd-pagination__more\" aria-hidden=\"true\" aria-label=\"...\" role=\"presentation\"></span>\n                }\n            }\n            <button\n                fdkFocusKeyManagerItem\n                fd-button\n                fdType=\"transparent\"\n                glyph=\"navigation-right-arrow\"\n                [disabled]=\"isLastPage\"\n                [ariaLabel]=\"('corePagination.nextLabel' | fdTranslate)()\"\n                [title]=\"('corePagination.nextLabel' | fdTranslate)()\"\n                class=\"fd-pagination__button\"\n                [attr.aria-disabled]=\"isLastPage\"\n                (click)=\"nextPage()\"\n                (keyup.enter)=\"nextPage()\"\n                (keydown.space)=\"$event.preventDefault()\"\n                (keyup.space)=\"nextPage()\"\n            ></button>\n            <button\n                fdkFocusKeyManagerItem\n                fd-button\n                fdType=\"transparent\"\n                glyph=\"media-forward\"\n                [disabled]=\"isLastPage\"\n                [ariaLabel]=\"('corePagination.lastLabel' | fdTranslate)()\"\n                [title]=\"('corePagination.lastLabel' | fdTranslate)()\"\n                class=\"fd-pagination__button fd-pagination__button--mobile\"\n                [attr.aria-disabled]=\"isLastPage\"\n                (click)=\"goToLastPage()\"\n                (keyup.enter)=\"goToLastPage()\"\n                (keydown.space)=\"$event.preventDefault()\"\n                (keyup.space)=\"goToLastPage()\"\n            ></button>\n        </nav>\n    }\n    @if (displayTotalItems) {\n        <span class=\"fd-pagination__total\" [attr.id]=\"_totalPagesElementId\">\n            <ng-template\n                [ngTemplateOutlet]=\"displayTextTemplate || total\"\n                [ngTemplateOutletContext]=\"{ showing: _currentShowing }\"\n            ></ng-template>\n        </span>\n    }\n}\n<ng-template #more>\n    <span class=\"fd-pagination__more\" aria-hidden=\"true\" aria-label=\"...\" role=\"presentation\"></span>\n</ng-template>\n<ng-template #total let-showing=\"showing\">\n    <span fd-form-label class=\"fd-pagination__total-label\">\n        {{ ('corePagination.totalResultsLabel' | fdTranslate: _currentShowing)() }}\n    </span>\n</ng-template>\n<ng-template #perPage let-pageOptions=\"pageOptions\">\n    <label fd-form-label class=\"fd-pagination__per-page-label\">\n        {{ ('corePagination.itemsPerPageLabel' | fdTranslate)() }}\n    </label>\n    <fd-select class=\"fd-pagination__per-page-select\" [value]=\"itemsPerPage\" (valueChange)=\"_onChangePerPage($event)\">\n        @for (option of pageOptions; track option) {\n            <li fd-option [value]=\"option\">{{ option }}</li>\n        }\n    </fd-select>\n</ng-template>\n","import { NgModule } from '@angular/core';\n\nimport { PaginationComponent } from './pagination.component';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [PaginationComponent],\n    exports: [PaginationComponent]\n})\nexport class PaginationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.PaginationService"],"mappings":";;;;;;;;;;;;;;;;AAKA;AACA,MAAM,oBAAoB,GAAG,CAAC;AAC9B,MAAM,0BAA0B,GAAG,CAAC;AAEpC;;AAEG;MAEU,iBAAiB,CAAA;AAD9B,IAAA,WAAA,GAAA;;QAGoB,IAAA,CAAA,gBAAgB,GAAG,CAAC,CAAC;AAuFxC,IAAA;AArFG;;;;AAIG;AACH,IAAA,QAAQ,CAAC,UAAsB,EAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;AACzB,YAAA,UAAU,CAAC,WAAW,GAAG,CAAC;QAC9B;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QAEzB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;AACjD,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;AAG7C,QAAA,MAAM,cAAc,GAAG,oBAAoB,GAAG,CAAC,GAAG,0BAA0B,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AAExF,QAAA,IAAI,KAAK,CAAC,MAAM,IAAI,cAAc,EAAE;AAChC,YAAA,OAAO,KAAK;QAChB;AAEA,QAAA,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,GAAG,CAAC;AAC9C,QAAA,MAAM,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC,WAAW;QACtD,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;AAEtD,QAAA,IAAI,WAAW,GAAG,eAAe,EAAE;YAC/B,OAAO;gBACH,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,GAAG,CAAC,CAAC;AACrC,gBAAA,IAAI,CAAC,gBAAgB;AACrB,gBAAA,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,oBAAoB;aACnD;QACL;AAEA,QAAA,IAAI,UAAU,GAAG,eAAe,EAAE;YAC9B,OAAO;AACH,gBAAA,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC;AACvC,gBAAA,IAAI,CAAC,gBAAgB;gBACrB,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,cAAc,GAAG,CAAC;aACjD;QACL;QAEA,OAAO;AACH,YAAA,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC;AACvC,YAAA,IAAI,CAAC,gBAAgB;AACrB,YAAA,GAAG,KAAK,CAAC,KAAK,CACV,UAAU,CAAC,WAAW,GAAG,0BAA0B,GAAG,CAAC,EACvD,UAAU,CAAC,WAAW,GAAG,0BAA0B,CACtD;AACD,YAAA,IAAI,CAAC,gBAAgB;AACrB,YAAA,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,oBAAoB;SACnD;IACL;AAEA;;;AAGG;AACH,IAAA,aAAa,CAAC,UAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;AAC1B,YAAA,OAAO,CAAC;QACZ;AAEA,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,YAAY,CAAC;IACrE;AAEA;;;AAGG;AACH,IAAA,QAAQ,CAAC,UAAsB,EAAA;QAC3B,IAAI,SAAS,EAAE,EAAE;AACb,YAAA,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,UAAU,IAAI,CAAC,EAAE;gBAC5D,OAAO,CAAC,IAAI,CACR,CAAA,yDAAA,EAA4D,UAAU,CAAC,UAAU,CAAA,iDAAA,CAAmD,CACvI;YACL;AAEA,YAAA,IAAI,KAAK,CAAC,UAAU,CAAC,YAAa,CAAC,IAAI,UAAU,CAAC,YAAa,IAAI,CAAC,EAAE;gBAClE,OAAO,CAAC,IAAI,CACR,CAAA,2DAAA,EAA8D,UAAU,CAAC,YAAY,CAAA,iDAAA,CAAmD,CAC3I;YACL;QACJ;IACJ;8GAxFS,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAjB,iBAAiB,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B;;;AC0BD;AACA,MAAM,sBAAsB,GAAG,EAAE;AAQjC,IAAI,kBAAkB,GAAG,CAAC;AAE1B;;;;;;;;;AASG;MA4BU,mBAAmB,CAAA;;IA8B5B,IACI,WAAW,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAClE;AACA,IAAA,IAAI,WAAW,GAAA;QACX,OAAO,IAAI,CAAC,YAAY;IAC5B;;IAGA,IACI,YAAY,CAAC,KAAa,EAAA;AAC1B,QAAA,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;QAEvE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QAEvC,IAAI,CAAC,+BAA+B,EAAE;IAC1C;AACA,IAAA,IAAI,YAAY,GAAA;QACZ,OAAO,IAAI,CAAC,aAAa;IAC7B;;IAUA,IACI,mBAAmB,CAAC,KAAe,EAAA;AACnC,QAAA,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAS,KAAK;AAChD,aAAA,GAAG,CAAC,CAAC,CAAC,KAAK,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC;AACrC,aAAA,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aACxB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AACnB,aAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE1B,IAAI,CAAC,+BAA+B,EAAE;IAC1C;AACA,IAAA,IAAI,mBAAmB,GAAA;QACnB,OAAO,IAAI,CAAC,oBAAoB;IACpC;AA8BA;;;AAGG;AACH,IAAA,IAAI,gBAAgB,GAAA;QAChB,OAAO;YACH,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC;SACtB;IACL;;AAGA,IAAA,IAAI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACtE;;AAGA,IAAA,IAAI,WAAW,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,WAAW,KAAK,CAAC;IACjC;;AAGA,IAAA,IAAI,UAAU,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC;IAC3F;;AAGA,IAAA,IAAI,WAAW,GAAA;QACX,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACtE;;AAGA,IAAA,IAAI,oBAAoB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,EAAE,GAAG,SAAS;IAC9B;;AAGA,IAAA,IAAI,iBAAiB,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,gBAAgB;IAClD;;AAkCA,IAAA,WAAA,CACqB,iBAAoC,EACpC,IAAuB,EACvB,cAA6B,EACrC,uBAA+C,EAAA;QAHvC,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,cAAc,GAAd,cAAc;QACtB,IAAA,CAAA,uBAAuB,GAAvB,uBAAuB;;AAhKpC,QAAA,IAAA,CAAA,EAAE,GAAW,gBAAgB,GAAG,kBAAkB,EAAE;;QAIpD,IAAA,CAAA,MAAM,GAAG,KAAK;;QAoDd,IAAA,CAAA,iBAAiB,GAAG,IAAI;;AAWxB,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAU;;AAI5C,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAU;;QAG/C,IAAA,CAAA,MAAM,GAAa,EAAE;;AAmDrB,QAAA,IAAA,CAAA,eAAe,GAAmB;AAC9B,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,EAAE,EAAE,CAAC;AACL,YAAA,UAAU,EAAE;SACf;;QAGD,IAAA,CAAA,yBAAyB,GAAa,EAAE;;QAGhC,IAAA,CAAA,aAAa,GAAW,sBAAsB;;QAG9C,IAAA,CAAA,oBAAoB,GAAa,EAAE;;QAGnC,IAAA,CAAA,YAAY,GAAG,CAAC;;AAGhB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;;AAGnC,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,mBAAmB,EAAE;;QAGvC,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAGpD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;;AAgG7D,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,KAAa,KAAU;AACvC,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;YACzB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;YAE/C,IAAI,CAAC,aAAa,EAAE;AAEpB,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AACnD,YAAA,IAAI,IAAI,CAAC,WAAW,GAAG,OAAO,EAAE;AAC5B,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;YACtC;AACJ,QAAA,CAAC;;QAhGG,MAAM,CAAC,MAAK;AACR,YAAA,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;YACvB,IAAI,CAAC,aAAa,EAAE;AACxB,QAAA,CAAC,CAAC;IACN;;AAGA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,EAAE,WAAW,EAAE;YACtB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,YAAY;QACvD;QACA,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE;AAC3C,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC;QACxB;aAAO;AACH,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAC9E,YAAA,IAAI,IAAI,CAAC,WAAW,GAAG,UAAU,EAAE;AAC/B,gBAAA,IAAI,CAAC,WAAW,GAAG,UAAU;YACjC;QACJ;QACA,IAAI,CAAC,aAAa,EAAE;IACxB;;IAGA,eAAe,GAAA;QACX,IAAI,CAAC,oBAAoB,EAAE,eAAe,EAAE,uBAAuB,CAAC,KAAK,CAAC;IAC9E;;IAGA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;IACrC;;AAGA,IAAA,iBAAiB,CAAC,IAAkC,EAAA;QAChD,QACI,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,KAAK,MAAM;YACvD,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,MAAM;IAE9D;AAEA;;;;AAIG;IACH,QAAQ,CAAC,IAAY,EAAE,KAAa,EAAA;QAChC,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,GAAG,CAAC,EAAE;YACnC;QACJ;QAEA,IAAI,CAAC,aAAa,EAAE;QAEpB,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,iBAAiB,EAAE;QAC5B;AAEA,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAE/B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;IAC5B;;IAGA,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpB;AAEA;;AAEG;IACH,YAAY,GAAA;QACR,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACvC;AAEA;;AAEG;IACH,QAAQ,GAAA;QACJ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACvC;;IAGA,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;IACjC;;AAgBA,IAAA,kBAAkB,CAAC,KAAc,EAAA;AAC7B,QAAA,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;IAC5B;;IAGQ,aAAa,GAAA;AACjB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB;QAExC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC;AAEzD,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC;AAEnF,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC;AACjE,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC;AAEjE,QAAA,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,IAAI,sBAAsB;QAEtE,IAAI,CAAC,eAAe,GAAG;YACnB,IAAI,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,YAAY,GAAG,CAAC;YAChF,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,YAAY,GAAG,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC;YACnF,UAAU,EAAE,IAAI,CAAC;SACpB;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;IAC5B;AAEA;;AAEG;IACK,iBAAiB,GAAA;AACrB,QAAA,MAAM,wBAAwB,GAC1B,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,OAAO,KAAK;AACjE,cAAE,IAAI,CAAC,iBAAiB,CAAC;AACzB,cAAE,IAAI,CAAC,mBAAmB,CAAC,aAAa;AAEhD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC;AACd,aAAA,OAAO;AACP,aAAA,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,KAAK,wBAAwB,CAAC;AAEzE,QAAA,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,KAAK,CAAC;IAC9C;AAEA;;;AAGG;IACK,+BAA+B,GAAA;;AAEnC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACpB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,sBAAsB;QAC/G;QAEA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE;AAExE,QAAA,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YAC7D,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1D;AAEA,QAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;IAC5B;;IAGQ,MAAM,aAAa,CAAC,IAAY,EAAA;AACpC,QAAA,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAC9B,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,qCAAqC,EAAE;AAC7F,YAAA,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,IAAI,CAAC;AACpB,SAAA,CAAC,CACL;IACL;8GAhWS,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,kGAsBR,gBAAgB,CAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,gBAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EA9CzB,CAAC,iBAAiB,EAAE,+BAA+B,EAAE,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA0BtD,4BAA4B,mIAQA,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAIR,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,SAAA,EARrC,4BAA4B,qEC5F9C,ouSAqMA,EAAA,MAAA,EAAA,CAAA,0oOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED5HQ,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,4BAA4B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,eAAe,sIACf,4BAA4B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,kBAAkB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,yBAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wIAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gHAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,oBAAoB,iKACpB,mBAAmB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,eAAe,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,WAAA,EAAA,OAAA,EAAA,QAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,EAAA,OAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,eAAe,iIACf,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAGV,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA3B/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,aAEd,CAAC,iBAAiB,EAAE,+BAA+B,EAAE,CAAC,EAAA,IAAA,EAC3D;AACF,wBAAA,KAAK,EAAE,eAAe;AACtB,wBAAA,+BAA+B,EAAE,QAAQ;AACzC,wBAAA,8BAA8B,EAAE;qBACnC,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,EAAA,eAAA,EAEpB,uBAAuB,CAAC,MAAM,EAAA,mBAAA,EAC1B,IAAI,EAAA,OAAA,EAChB;wBACL,gBAAgB;wBAChB,4BAA4B;wBAC5B,eAAe;wBACf,4BAA4B;wBAC5B,kBAAkB;wBAClB,WAAW;wBACX,oBAAoB;wBACpB,mBAAmB;wBACnB,eAAe;wBACf,eAAe;wBACf;AACH,qBAAA,EAAA,QAAA,EAAA,ouSAAA,EAAA,MAAA,EAAA,CAAA,0oOAAA,CAAA,EAAA;;sBAIA,SAAS;uBAAC,4BAA4B;;sBAItC,YAAY;uBAAC,4BAA4B;;sBAIzC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;sBAIlD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,oBAAoB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;sBAIpD;;sBAIA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAIrC;;sBAIA;;sBASA;;sBAgBA;;sBAIA;;sBAeA;;sBAOA;;sBAIA;;sBAIA;;;AE3KL;;;AAGG;MAKU,gBAAgB,CAAA;8GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAhB,gBAAgB,EAAA,OAAA,EAAA,CAHf,mBAAmB,CAAA,EAAA,OAAA,EAAA,CACnB,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAEpB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAHf,mBAAmB,CAAA,EAAA,CAAA,CAAA;;2FAGpB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,mBAAmB,CAAC;oBAC9B,OAAO,EAAE,CAAC,mBAAmB;AAChC,iBAAA;;;ACXD;;AAEG;;;;"}