UNPKG

ngx-bootstrap

Version:
1 lines 45.1 kB
{"version":3,"file":"ngx-bootstrap-pagination.mjs","sources":["../../../../src/pagination/pagination.config.ts","../../../../src/pagination/pager.component.ts","../../../../src/pagination/pager.component.html","../../../../src/pagination/pagination.component.ts","../../../../src/pagination/pagination.component.html","../../../../src/pagination/pagination.module.ts","../../../../src/pagination/ngx-bootstrap-pagination.ts"],"sourcesContent":["// todo: split\nimport { Injectable } from '@angular/core';\n\nimport { ConfigModel, PagerModel } from './models';\n\n/** Provides default values for Pagination and pager components */\n@Injectable({\n providedIn: 'root'\n})\nexport class PaginationConfig {\n main: Partial<ConfigModel> = {\n itemsPerPage: 10,\n boundaryLinks: false,\n directionLinks: true,\n firstText: 'First',\n previousText: 'Previous',\n nextText: 'Next',\n lastText: 'Last',\n pageBtnClass: '',\n rotate: true\n };\n pager: PagerModel = {\n itemsPerPage: 15,\n previousText: '« Previous',\n nextText: 'Next »',\n pageBtnClass: '',\n align: true\n };\n}\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n OnInit,\n Provider,\n input,\n output,\n effect\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ConfigModel, PagesModel } from './models';\n\nimport { PageChangedEvent } from './pagination.component';\nimport { PaginationConfig } from './pagination.config';\nimport { NgClass } from '@angular/common';\n\nexport const PAGER_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PagerComponent),\n multi: true\n};\n\n@Component({\n selector: 'pager',\n templateUrl: './pager.component.html',\n providers: [PAGER_CONTROL_VALUE_ACCESSOR],\n standalone: true,\n imports: [NgClass]\n})\nexport class PagerComponent implements ControlValueAccessor, OnInit {\n config?: Partial<ConfigModel>;\n /** if `true` aligns each link to the sides of pager */\n align = input<boolean>(false);\n /** limit number for page links in pager */\n maxSize = input<number | undefined>();\n /** if false first and last buttons will be hidden */\n boundaryLinks = input<boolean>(false);\n /** if false previous and next buttons will be hidden */\n directionLinks = input<boolean>(true);\n // labels\n /** first button text */\n firstText = input<string>('First');\n /** previous button text */\n previousText = input<string>('« Previous');\n /** next button text */\n nextText = input<string>('Next »');\n /** last button text */\n lastText = input<string>('Last');\n /** if true current page will in the middle of pages list */\n rotate = input<boolean>(true);\n // css\n /** add class to <code><li\\></code> */\n pageBtnClass = input<string>('');\n\n /** if true pagination component will be disabled */\n disabled = input<boolean>(false);\n\n /** maximum number of items per page. If value less than 1 will display all items on one page */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n itemsPerPageInput = input<number>(15, { alias: 'itemsPerPage' });\n /** total number of items in all pages */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n totalItemsInput = input<number>(0, { alias: 'totalItems' });\n\n /** fired when total pages count changes, $event:number equals to total pages count */\n numPages = output<number>();\n /** fired when page was changed, $event:{page, itemsPerPage} equals to\n * object with current page index and number of items per page\n */\n pageChanged = output<PageChangedEvent>();\n onChange = Function.prototype;\n onTouched = Function.prototype;\n classMap = '';\n pages?: PagesModel[];\n protected inited = false;\n\n constructor(private elementRef: ElementRef,\n paginationConfig: PaginationConfig,\n private changeDetection: ChangeDetectorRef) {\n this.elementRef = elementRef;\n if (!this.config) {\n this.configureOptions(\n Object.assign({}, paginationConfig.main, paginationConfig.pager)\n );\n }\n\n // Watch for itemsPerPage changes\n effect(() => {\n this._itemsPerPage = this.itemsPerPageInput();\n this.totalPages = this.calculateTotalPages();\n });\n\n // Watch for totalItems changes\n effect(() => {\n this._totalItems = this.totalItemsInput();\n this.totalPages = this.calculateTotalPages();\n });\n }\n\n protected _itemsPerPage = 15;\n\n get itemsPerPage(): number {\n return this._itemsPerPage;\n }\n\n protected _totalItems = 0;\n\n get totalItems(): number {\n return this._totalItems;\n }\n\n protected _totalPages = 0;\n\n get totalPages(): number {\n return this._totalPages;\n }\n\n set totalPages(v: number) {\n this._totalPages = v;\n this.numPages.emit(v);\n if (this.inited) {\n this.selectPage(this.page);\n }\n }\n\n protected _page = 1;\n\n get page(): number {\n return this._page;\n }\n\n set page(value: number) {\n const _previous = this._page;\n this._page = value > this.totalPages ? this.totalPages : value || 1;\n this.changeDetection.markForCheck();\n\n if (_previous === this._page || typeof _previous === 'undefined') {\n return;\n }\n\n this.pageChanged.emit({\n page: this._page,\n itemsPerPage: this.itemsPerPage\n });\n }\n\n configureOptions(config: Partial<ConfigModel>): void {\n this.config = Object.assign({}, config);\n }\n\n // Resolved configuration values\n protected _maxSize = 0;\n protected _rotate = true;\n protected _boundaryLinks = false;\n protected _directionLinks = true;\n protected _pageBtnClass = '';\n\n ngOnInit(): void {\n if (typeof window !== 'undefined') {\n this.classMap = this.elementRef.nativeElement.getAttribute('class') || '';\n }\n // watch for maxSize\n const maxSizeVal = this.maxSize();\n this._maxSize = typeof maxSizeVal === 'undefined' ? this.config?.maxSize || 0 : maxSizeVal;\n\n const rotateVal = this.rotate();\n this._rotate = typeof rotateVal === 'undefined' ? !!this.config?.rotate : rotateVal;\n\n const boundaryLinksVal = this.boundaryLinks();\n this._boundaryLinks = typeof boundaryLinksVal === 'undefined' ? !!this.config?.boundaryLinks : boundaryLinksVal;\n\n const directionLinksVal = this.directionLinks();\n this._directionLinks = typeof directionLinksVal === 'undefined' ? !!this.config?.directionLinks : directionLinksVal;\n\n const pageBtnClassVal = this.pageBtnClass();\n this._pageBtnClass = typeof pageBtnClassVal === 'undefined' ? this.config?.pageBtnClass || '' : pageBtnClassVal;\n\n // base class\n if (typeof this.itemsPerPage === 'undefined') {\n this._itemsPerPage = this.config?.itemsPerPage || 0;\n }\n\n this.totalPages = this.calculateTotalPages();\n // this class\n this.pages = this.getPages(this.page, this.totalPages);\n this.inited = true;\n }\n\n writeValue(value: number): void {\n this.page = value;\n this.pages = this.getPages(this.page, this.totalPages);\n }\n\n getText(key: string): string {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const inputVal = (this as any)[`${key}Text`]?.();\n return inputVal || (this as any).config[`${key}Text`];\n }\n\n noPrevious(): boolean {\n return this.page === 1;\n }\n\n noNext(): boolean {\n return this.page === this.totalPages;\n }\n\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n selectPage(page: number, event?: Event): void {\n if (event) {\n event.preventDefault();\n }\n\n if (!this.disabled()) {\n if (event && event.target) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const target: any = event.target;\n target.blur();\n }\n this.writeValue(page);\n this.onChange(this.page);\n }\n }\n\n // Create page object used in template\n protected makePage(num: number,\n text: string,\n active: boolean): { number: number; text: string; active: boolean } {\n return { text, number: num, active };\n }\n\n protected getPages(currentPage: number, totalPages: number): PagesModel[] {\n const pages: PagesModel[] = [];\n const maxSize = this._maxSize;\n const rotate = this._rotate;\n\n // Default page limits\n let startPage = 1;\n let endPage = totalPages;\n const isMaxSized =\n typeof maxSize !== 'undefined' && maxSize < totalPages;\n\n // recompute if maxSize\n if (isMaxSized && maxSize) {\n if (rotate) {\n // Current page is displayed in the middle of the visible ones\n startPage = Math.max(currentPage - Math.floor(maxSize / 2), 1);\n endPage = startPage + maxSize - 1;\n\n // Adjust if limit is exceeded\n if (endPage > totalPages) {\n endPage = totalPages;\n startPage = endPage - maxSize + 1;\n }\n } else {\n // Visible pages are paginated with maxSize\n startPage =\n (Math.ceil(currentPage / maxSize) - 1) * maxSize + 1;\n\n // Adjust last page if limit is exceeded\n endPage = Math.min(startPage + maxSize - 1, totalPages);\n }\n }\n\n // Add page number links\n for (let num = startPage; num <= endPage; num++) {\n const page = this.makePage(num, num.toString(), num === currentPage);\n pages.push(page);\n }\n\n // Add links to move between page sets\n if (isMaxSized && !rotate) {\n if (startPage > 1) {\n const previousPageSet = this.makePage(startPage - 1, '...', false);\n pages.unshift(previousPageSet);\n }\n\n if (endPage < totalPages) {\n const nextPageSet = this.makePage(endPage + 1, '...', false);\n pages.push(nextPageSet);\n }\n }\n\n return pages;\n }\n\n // base class\n protected calculateTotalPages(): number {\n const totalPages =\n this.itemsPerPage < 1\n ? 1\n : Math.ceil(this.totalItems / this.itemsPerPage);\n\n return Math.max(totalPages || 0, 1);\n }\n}\n","<ul class=\"pager\">\n <li [class.disabled]=\"noPrevious()\" [class.previous]=\"align()\"\n [ngClass]=\"{'pull-left': align(), 'float-left': align()}\"\n class=\"{{ _pageBtnClass }}\">\n <a href (click)=\"selectPage(page - 1, $event)\">{{ getText('previous') }}</a>\n </li>\n <li [class.disabled]=\"noNext()\" [class.next]=\"align()\"\n [ngClass]=\"{'pull-right': align(), 'float-right': align()}\"\n class=\"{{ _pageBtnClass }}\">\n <a href (click)=\"selectPage(page + 1, $event)\">{{ getText('next') }}</a>\n </li>\n</ul>\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n OnInit,\n Provider,\n TemplateRef,\n input,\n output,\n effect\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ConfigModel, PagesModel, PaginationLinkContext, PaginationNumberLinkContext } from './models';\n\nimport { PaginationConfig } from './pagination.config';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\n\nexport interface PageChangedEvent {\n itemsPerPage: number;\n page: number;\n}\n\nexport const PAGINATION_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PaginationComponent),\n multi: true\n};\n\n@Component({\n selector: 'pagination',\n templateUrl: './pagination.component.html',\n providers: [PAGINATION_CONTROL_VALUE_ACCESSOR],\n standalone: true,\n imports: [NgClass, NgTemplateOutlet]\n})\nexport class PaginationComponent implements ControlValueAccessor, OnInit {\n config?: Partial<ConfigModel>;\n /** if `true` aligns each link to the sides of pager */\n align = input<boolean>(true);\n /** limit number for page links in pager */\n maxSize = input<number | undefined>();\n /** if false first and last buttons will be hidden */\n boundaryLinks = input<boolean>(false);\n /** if false previous and next buttons will be hidden */\n directionLinks = input<boolean>(true);\n // labels\n /** first button text */\n firstText = input<string | undefined>();\n /** previous button text */\n previousText = input<string | undefined>();\n /** next button text */\n nextText = input<string | undefined>();\n /** last button text */\n lastText = input<string | undefined>();\n /** if true current page will in the middle of pages list */\n rotate = input<boolean>(true);\n // css\n /** add class to <code><li\\></code> */\n pageBtnClass = input<string>('');\n /** if true pagination component will be disabled */\n disabled = input<boolean>(false);\n /** custom template for page link */\n customPageTemplate = input<TemplateRef<PaginationNumberLinkContext> | undefined>();\n /** custom template for next link */\n customNextTemplate = input<TemplateRef<PaginationLinkContext> | undefined>();\n /** custom template for previous link */\n customPreviousTemplate = input<TemplateRef<PaginationLinkContext> | undefined>();\n /** custom template for first link */\n customFirstTemplate = input<TemplateRef<PaginationLinkContext> | undefined>();\n /** custom template for last link */\n customLastTemplate = input<TemplateRef<PaginationLinkContext> | undefined>();\n\n /** maximum number of items per page. If value less than 1 will display all items on one page */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n itemsPerPageInput = input<number>(10, { alias: 'itemsPerPage' });\n /** total number of items in all pages */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n totalItemsInput = input<number>(0, { alias: 'totalItems' });\n\n /** fired when total pages count changes, $event:number equals to total pages count */\n numPages = output<number>();\n /** fired when page was changed, $event:{page, itemsPerPage} equals to object\n * with current page index and number of items per page\n */\n pageChanged = output<PageChangedEvent>();\n onChange = Function.prototype;\n onTouched = Function.prototype;\n classMap = '';\n pages?: PagesModel[];\n protected inited = false;\n\n constructor(\n private elementRef: ElementRef,\n paginationConfig: PaginationConfig,\n private changeDetection: ChangeDetectorRef\n ) {\n this.elementRef = elementRef;\n if (!this.config) {\n this.configureOptions(paginationConfig.main);\n }\n\n // Watch for itemsPerPage changes\n effect(() => {\n this._itemsPerPage = this.itemsPerPageInput();\n this.totalPages = this.calculateTotalPages();\n });\n\n // Watch for totalItems changes\n effect(() => {\n this._totalItems = this.totalItemsInput();\n this.totalPages = this.calculateTotalPages();\n });\n\n // Watch for rotate/maxSize changes\n effect(() => {\n const rotateVal = this.rotate();\n const maxSizeVal = this.maxSize();\n this._rotate = typeof rotateVal === 'undefined' ? !!this.config?.rotate : rotateVal;\n this._maxSize = typeof maxSizeVal === 'undefined' ? this.config?.maxSize || 0 : maxSizeVal;\n if (this.inited) {\n this.pages = this.getPages(this.page, this.totalPages);\n this.changeDetection.markForCheck();\n }\n });\n }\n\n protected _itemsPerPage = 10;\n\n get itemsPerPage(): number {\n return this._itemsPerPage;\n }\n\n protected _totalItems = 0;\n\n get totalItems(): number {\n return this._totalItems;\n }\n\n protected _totalPages = 0;\n\n get totalPages(): number {\n return this._totalPages;\n }\n\n set totalPages(v: number) {\n this._totalPages = v;\n this.numPages.emit(v);\n if (this.inited) {\n this.selectPage(this.page);\n }\n }\n\n protected _page = 1;\n\n get page(): number {\n return this._page;\n }\n\n set page(value: number) {\n const _previous = this._page;\n this._page = value > this.totalPages ? this.totalPages : value || 1;\n this.changeDetection.markForCheck();\n\n if (_previous === this._page || typeof _previous === 'undefined') {\n return;\n }\n\n this.pageChanged.emit({\n page: this._page,\n itemsPerPage: this.itemsPerPage\n });\n }\n\n configureOptions(config: Partial<ConfigModel>): void {\n this.config = Object.assign({}, config);\n }\n\n ngOnInit(): void {\n if (typeof window !== 'undefined') {\n this.classMap = this.elementRef.nativeElement.getAttribute('class') || '';\n }\n\n // watch for maxSize\n const maxSizeVal = this.maxSize();\n const _maxSize = typeof maxSizeVal === 'undefined' ? this.config?.maxSize || 0 : maxSizeVal;\n\n const rotateVal = this.rotate();\n const _rotate = typeof rotateVal === 'undefined' ? !!this.config?.rotate : rotateVal;\n\n const boundaryLinksVal = this.boundaryLinks();\n const _boundaryLinks = typeof boundaryLinksVal === 'undefined' ? !!this.config?.boundaryLinks : boundaryLinksVal;\n\n const directionLinksVal = this.directionLinks();\n const _directionLinks = typeof directionLinksVal === 'undefined' ? !!this.config?.directionLinks : directionLinksVal;\n\n const pageBtnClassVal = this.pageBtnClass();\n const _pageBtnClass = typeof pageBtnClassVal === 'undefined' ? this.config?.pageBtnClass || '' : pageBtnClassVal;\n\n // Store resolved values for use\n this._maxSize = _maxSize;\n this._rotate = _rotate;\n this._boundaryLinks = _boundaryLinks;\n this._directionLinks = _directionLinks;\n this._pageBtnClass = _pageBtnClass;\n\n // base class\n if (typeof this.itemsPerPage === 'undefined') {\n this._itemsPerPage = this.config?.itemsPerPage || 0;\n }\n\n this.totalPages = this.calculateTotalPages();\n // this class\n this.pages = this.getPages(this.page, this.totalPages);\n this.inited = true;\n }\n\n // Resolved configuration values\n protected _maxSize = 0;\n protected _rotate = true;\n protected _boundaryLinks = false;\n protected _directionLinks = true;\n protected _pageBtnClass = '';\n\n writeValue(value: number): void {\n this.page = value;\n this.pages = this.getPages(this.page, this.totalPages);\n }\n\n getText(key: string): string {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const inputVal = (this as any)[`${key}Text`]?.();\n return inputVal || (this as any).config[`${key}Text`];\n }\n\n noPrevious(): boolean {\n return this.page === 1;\n }\n\n noNext(): boolean {\n return this.page === this.totalPages;\n }\n\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n selectPage(page: number, event?: Event): void {\n if (event) {\n event.preventDefault();\n }\n\n if (!this.disabled()) {\n if (event && event.target) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const target: any = event.target;\n target.blur();\n }\n this.writeValue(page);\n this.onChange(this.page);\n }\n }\n\n // Create page object used in template\n protected makePage(\n num: number,\n text: string,\n active: boolean\n ): { number: number; text: string; active: boolean } {\n return { text, number: num, active };\n }\n\n protected getPages(currentPage: number, totalPages: number): PagesModel[] {\n const pages: PagesModel[] = [];\n const maxSize = this._maxSize;\n const rotate = this._rotate;\n\n\n // Default page limits\n let startPage = 1;\n let endPage = totalPages;\n const isMaxSized =\n typeof maxSize !== 'undefined' && maxSize < totalPages;\n\n // recompute if maxSize\n if (isMaxSized && maxSize) {\n if (rotate) {\n // Current page is displayed in the middle of the visible ones\n startPage = Math.max(currentPage - Math.floor(maxSize / 2), 1);\n endPage = startPage + maxSize - 1;\n\n // Adjust if limit is exceeded\n if (endPage > totalPages) {\n endPage = totalPages;\n startPage = endPage - maxSize + 1;\n }\n } else {\n // Visible pages are paginated with maxSize\n startPage =\n (Math.ceil(currentPage / maxSize) - 1) * maxSize + 1;\n\n // Adjust last page if limit is exceeded\n endPage = Math.min(startPage + maxSize - 1, totalPages);\n }\n }\n\n // Add page number links\n for (let num = startPage; num <= endPage; num++) {\n const page = this.makePage(num, num.toString(), num === currentPage);\n pages.push(page);\n }\n\n // Add links to move between page sets\n if (isMaxSized && !rotate) {\n if (startPage > 1) {\n const previousPageSet = this.makePage(startPage - 1, '...', false);\n pages.unshift(previousPageSet);\n }\n\n if (endPage < totalPages) {\n const nextPageSet = this.makePage(endPage + 1, '...', false);\n pages.push(nextPageSet);\n }\n }\n\n return pages;\n }\n\n // base class\n protected calculateTotalPages(): number {\n const totalPages =\n this.itemsPerPage < 1\n ? 1\n : Math.ceil(this.totalItems / this.itemsPerPage);\n\n return Math.max(totalPages || 0, 1);\n }\n}\n","<ul class=\"pagination\" [ngClass]=\"classMap\">\n @if (boundaryLinks()) {\n <li class=\"pagination-first page-item\"\n [class.disabled]=\"noPrevious() || disabled()\">\n <a class=\"page-link\" href (click)=\"selectPage(1, $event)\">\n <ng-container [ngTemplateOutlet]=\"customFirstTemplate() || defaultFirstTemplate\"\n [ngTemplateOutletContext]=\"{disabled: noPrevious() || disabled(), currentPage: page}\">\n </ng-container>\n </a>\n </li>\n }\n\n @if (directionLinks()) {\n <li class=\"pagination-prev page-item\"\n [class.disabled]=\"noPrevious() || disabled()\">\n <a class=\"page-link\" href (click)=\"selectPage(page - 1, $event)\">\n <ng-container [ngTemplateOutlet]=\"customPreviousTemplate() || defaultPreviousTemplate\"\n [ngTemplateOutletContext]=\"{disabled: noPrevious() || disabled(), currentPage: page}\">\n </ng-container>\n </a>\n </li>\n }\n\n @for (pg of pages; track pg) {\n <li\n [class.active]=\"pg.active\"\n [class.disabled]=\"disabled() && !pg.active\"\n class=\"pagination-page page-item\">\n <a class=\"page-link\" href (click)=\"selectPage(pg.number, $event)\">\n <ng-container [ngTemplateOutlet]=\"customPageTemplate() || defaultPageTemplate\"\n [ngTemplateOutletContext]=\"{disabled: disabled(), $implicit: pg, currentPage: page}\">\n </ng-container>\n </a>\n </li>\n }\n\n @if (directionLinks()) {\n <li class=\"pagination-next page-item\"\n [class.disabled]=\"noNext() || disabled()\">\n <a class=\"page-link\" href (click)=\"selectPage(page + 1, $event)\">\n <ng-container [ngTemplateOutlet]=\"customNextTemplate() || defaultNextTemplate\"\n [ngTemplateOutletContext]=\"{disabled: noNext() || disabled(), currentPage: page}\">\n </ng-container>\n </a>\n </li>\n }\n\n @if (boundaryLinks()) {\n <li class=\"pagination-last page-item\"\n [class.disabled]=\"noNext() || disabled()\">\n <a class=\"page-link\" href (click)=\"selectPage(totalPages, $event)\">\n <ng-container [ngTemplateOutlet]=\"customLastTemplate() || defaultLastTemplate\"\n [ngTemplateOutletContext]=\"{disabled: noNext() || disabled(), currentPage: page}\">\n </ng-container>\n </a>\n </li>\n }\n</ul>\n\n<ng-template #defaultPageTemplate let-page>{{ page.text }}</ng-template>\n\n<ng-template #defaultNextTemplate>{{ getText('next') }}</ng-template>\n\n<ng-template #defaultPreviousTemplate>{{ getText('previous') }}</ng-template>\n\n<ng-template #defaultFirstTemplate>{{ getText('first') }}</ng-template>\n\n<ng-template #defaultLastTemplate>{{ getText('last') }}</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { PagerComponent } from './pager.component';\nimport { PaginationComponent } from './pagination.component';\n\n@NgModule({\n imports: [CommonModule, PagerComponent, PaginationComponent],\n exports: [PagerComponent, PaginationComponent]\n})\nexport class PaginationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.PaginationConfig"],"mappings":"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"}