UNPKG

ng-zorro-antd

Version:

An enterprise-class UI components based on Ant Design and Angular

280 lines 30.8 kB
import { __decorate } from "tslib"; import { NgIf, NgTemplateOutlet } from '@angular/common'; import { ChangeDetectionStrategy, Component, EventEmitter, Input, Optional, Output, ViewEncapsulation } from '@angular/core'; import { ReplaySubject, Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { WithConfig } from 'ng-zorro-antd/core/config'; import { gridResponsiveMap, NzBreakpointEnum } from 'ng-zorro-antd/core/services'; import { InputBoolean, InputNumber } from 'ng-zorro-antd/core/util'; import { NzPaginationDefaultComponent } from './pagination-default.component'; import { NzPaginationSimpleComponent } from './pagination-simple.component'; import * as i0 from "@angular/core"; import * as i1 from "ng-zorro-antd/i18n"; import * as i2 from "ng-zorro-antd/core/services"; import * as i3 from "ng-zorro-antd/core/config"; import * as i4 from "@angular/cdk/bidi"; const NZ_CONFIG_MODULE_NAME = 'pagination'; export class NzPaginationComponent { validatePageIndex(value, lastIndex) { if (value > lastIndex) { return lastIndex; } else if (value < 1) { return 1; } else { return value; } } onPageIndexChange(index) { const lastIndex = this.getLastIndex(this.nzTotal, this.nzPageSize); const validIndex = this.validatePageIndex(index, lastIndex); if (validIndex !== this.nzPageIndex && !this.nzDisabled) { this.nzPageIndex = validIndex; this.nzPageIndexChange.emit(this.nzPageIndex); } } onPageSizeChange(size) { this.nzPageSize = size; this.nzPageSizeChange.emit(size); const lastIndex = this.getLastIndex(this.nzTotal, this.nzPageSize); if (this.nzPageIndex > lastIndex) { this.onPageIndexChange(lastIndex); } } onTotalChange(total) { const lastIndex = this.getLastIndex(total, this.nzPageSize); if (this.nzPageIndex > lastIndex) { Promise.resolve().then(() => { this.onPageIndexChange(lastIndex); this.cdr.markForCheck(); }); } } getLastIndex(total, pageSize) { return Math.ceil(total / pageSize); } constructor(i18n, cdr, breakpointService, nzConfigService, directionality) { this.i18n = i18n; this.cdr = cdr; this.breakpointService = breakpointService; this.nzConfigService = nzConfigService; this.directionality = directionality; this._nzModuleName = NZ_CONFIG_MODULE_NAME; this.nzPageSizeChange = new EventEmitter(); this.nzPageIndexChange = new EventEmitter(); this.nzShowTotal = null; this.nzItemRender = null; this.nzSize = 'default'; this.nzPageSizeOptions = [10, 20, 30, 40]; this.nzShowSizeChanger = false; this.nzShowQuickJumper = false; this.nzSimple = false; this.nzDisabled = false; this.nzResponsive = false; this.nzHideOnSinglePage = false; this.nzTotal = 0; this.nzPageIndex = 1; this.nzPageSize = 10; this.showPagination = true; this.size = 'default'; this.dir = 'ltr'; this.destroy$ = new Subject(); this.total$ = new ReplaySubject(1); } ngOnInit() { this.i18n.localeChange.pipe(takeUntil(this.destroy$)).subscribe(() => { this.locale = this.i18n.getLocaleData('Pagination'); this.cdr.markForCheck(); }); this.total$.pipe(takeUntil(this.destroy$)).subscribe(total => { this.onTotalChange(total); }); this.breakpointService .subscribe(gridResponsiveMap) .pipe(takeUntil(this.destroy$)) .subscribe(bp => { if (this.nzResponsive) { this.size = bp === NzBreakpointEnum.xs ? 'small' : 'default'; this.cdr.markForCheck(); } }); this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction) => { this.dir = direction; this.cdr.detectChanges(); }); this.dir = this.directionality.value; } ngOnDestroy() { this.destroy$.next(); this.destroy$.complete(); } ngOnChanges(changes) { const { nzHideOnSinglePage, nzTotal, nzPageSize, nzSize } = changes; if (nzTotal) { this.total$.next(this.nzTotal); } if (nzHideOnSinglePage || nzTotal || nzPageSize) { this.showPagination = (this.nzHideOnSinglePage && this.nzTotal > this.nzPageSize) || (this.nzTotal > 0 && !this.nzHideOnSinglePage); } if (nzSize) { this.size = nzSize.currentValue; } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: NzPaginationComponent, deps: [{ token: i1.NzI18nService }, { token: i0.ChangeDetectorRef }, { token: i2.NzBreakpointService }, { token: i3.NzConfigService }, { token: i4.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: NzPaginationComponent, isStandalone: true, selector: "nz-pagination", inputs: { nzShowTotal: "nzShowTotal", nzItemRender: "nzItemRender", nzSize: "nzSize", nzPageSizeOptions: "nzPageSizeOptions", nzShowSizeChanger: "nzShowSizeChanger", nzShowQuickJumper: "nzShowQuickJumper", nzSimple: "nzSimple", nzDisabled: "nzDisabled", nzResponsive: "nzResponsive", nzHideOnSinglePage: "nzHideOnSinglePage", nzTotal: "nzTotal", nzPageIndex: "nzPageIndex", nzPageSize: "nzPageSize" }, outputs: { nzPageSizeChange: "nzPageSizeChange", nzPageIndexChange: "nzPageIndexChange" }, host: { properties: { "class.ant-pagination-simple": "nzSimple", "class.ant-pagination-disabled": "nzDisabled", "class.mini": "!nzSimple && size === 'small'", "class.ant-pagination-rtl": "dir === 'rtl'" }, classAttribute: "ant-pagination" }, exportAs: ["nzPagination"], usesOnChanges: true, ngImport: i0, template: ` <ng-container *ngIf="showPagination"> <ng-container *ngIf="nzSimple; else defaultPagination.template"> <ng-template [ngTemplateOutlet]="simplePagination.template"></ng-template> </ng-container> </ng-container> <nz-pagination-simple #simplePagination [disabled]="nzDisabled" [itemRender]="nzItemRender" [locale]="locale" [pageSize]="nzPageSize" [total]="nzTotal" [pageIndex]="nzPageIndex" (pageIndexChange)="onPageIndexChange($event)" ></nz-pagination-simple> <nz-pagination-default #defaultPagination [nzSize]="size" [itemRender]="nzItemRender" [showTotal]="nzShowTotal" [disabled]="nzDisabled" [locale]="locale" [showSizeChanger]="nzShowSizeChanger" [showQuickJumper]="nzShowQuickJumper" [total]="nzTotal" [pageIndex]="nzPageIndex" [pageSize]="nzPageSize" [pageSizeOptions]="nzPageSizeOptions" (pageIndexChange)="onPageIndexChange($event)" (pageSizeChange)="onPageSizeChange($event)" ></nz-pagination-default> `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NzPaginationSimpleComponent, selector: "nz-pagination-simple", inputs: ["itemRender", "disabled", "locale", "total", "pageIndex", "pageSize"], outputs: ["pageIndexChange"] }, { kind: "component", type: NzPaginationDefaultComponent, selector: "nz-pagination-default", inputs: ["nzSize", "itemRender", "showTotal", "disabled", "locale", "showSizeChanger", "showQuickJumper", "total", "pageIndex", "pageSize", "pageSizeOptions"], outputs: ["pageIndexChange", "pageSizeChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); } } __decorate([ WithConfig() ], NzPaginationComponent.prototype, "nzSize", void 0); __decorate([ WithConfig() ], NzPaginationComponent.prototype, "nzPageSizeOptions", void 0); __decorate([ WithConfig(), InputBoolean() ], NzPaginationComponent.prototype, "nzShowSizeChanger", void 0); __decorate([ WithConfig(), InputBoolean() ], NzPaginationComponent.prototype, "nzShowQuickJumper", void 0); __decorate([ WithConfig(), InputBoolean() ], NzPaginationComponent.prototype, "nzSimple", void 0); __decorate([ InputBoolean() ], NzPaginationComponent.prototype, "nzDisabled", void 0); __decorate([ InputBoolean() ], NzPaginationComponent.prototype, "nzResponsive", void 0); __decorate([ InputBoolean() ], NzPaginationComponent.prototype, "nzHideOnSinglePage", void 0); __decorate([ InputNumber() ], NzPaginationComponent.prototype, "nzTotal", void 0); __decorate([ InputNumber() ], NzPaginationComponent.prototype, "nzPageIndex", void 0); __decorate([ InputNumber() ], NzPaginationComponent.prototype, "nzPageSize", void 0); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: NzPaginationComponent, decorators: [{ type: Component, args: [{ selector: 'nz-pagination', exportAs: 'nzPagination', preserveWhitespaces: false, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: ` <ng-container *ngIf="showPagination"> <ng-container *ngIf="nzSimple; else defaultPagination.template"> <ng-template [ngTemplateOutlet]="simplePagination.template"></ng-template> </ng-container> </ng-container> <nz-pagination-simple #simplePagination [disabled]="nzDisabled" [itemRender]="nzItemRender" [locale]="locale" [pageSize]="nzPageSize" [total]="nzTotal" [pageIndex]="nzPageIndex" (pageIndexChange)="onPageIndexChange($event)" ></nz-pagination-simple> <nz-pagination-default #defaultPagination [nzSize]="size" [itemRender]="nzItemRender" [showTotal]="nzShowTotal" [disabled]="nzDisabled" [locale]="locale" [showSizeChanger]="nzShowSizeChanger" [showQuickJumper]="nzShowQuickJumper" [total]="nzTotal" [pageIndex]="nzPageIndex" [pageSize]="nzPageSize" [pageSizeOptions]="nzPageSizeOptions" (pageIndexChange)="onPageIndexChange($event)" (pageSizeChange)="onPageSizeChange($event)" ></nz-pagination-default> `, host: { class: 'ant-pagination', '[class.ant-pagination-simple]': 'nzSimple', '[class.ant-pagination-disabled]': 'nzDisabled', '[class.mini]': `!nzSimple && size === 'small'`, '[class.ant-pagination-rtl]': `dir === 'rtl'` }, imports: [NgIf, NgTemplateOutlet, NzPaginationSimpleComponent, NzPaginationDefaultComponent], standalone: true }] }], ctorParameters: () => [{ type: i1.NzI18nService }, { type: i0.ChangeDetectorRef }, { type: i2.NzBreakpointService }, { type: i3.NzConfigService }, { type: i4.Directionality, decorators: [{ type: Optional }] }], propDecorators: { nzPageSizeChange: [{ type: Output }], nzPageIndexChange: [{ type: Output }], nzShowTotal: [{ type: Input }], nzItemRender: [{ type: Input }], nzSize: [{ type: Input }], nzPageSizeOptions: [{ type: Input }], nzShowSizeChanger: [{ type: Input }], nzShowQuickJumper: [{ type: Input }], nzSimple: [{ type: Input }], nzDisabled: [{ type: Input }], nzResponsive: [{ type: Input }], nzHideOnSinglePage: [{ type: Input }], nzTotal: [{ type: Input }], nzPageIndex: [{ type: Input }], nzPageSize: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb21wb25lbnRzL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQU1BLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBR04saUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQWdDLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBdUIsTUFBTSw2QkFBNkIsQ0FBQztBQUV2RyxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR3BFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7QUFHNUUsTUFBTSxxQkFBcUIsR0FBZ0IsWUFBWSxDQUFDO0FBbUR4RCxNQUFNLE9BQU8scUJBQXFCO0lBcUNoQyxpQkFBaUIsQ0FBQyxLQUFhLEVBQUUsU0FBaUI7UUFDaEQsSUFBSSxLQUFLLEdBQUcsU0FBUyxFQUFFO1lBQ3JCLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO2FBQU0sSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO1lBQ3BCLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7YUFBTTtZQUNMLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFD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O3lDQXZFUSxnQkFBZ0I7c0JBQWxDLE1BQU07Z0JBQ1ksaUJBQWlCO3NCQUFuQyxNQUFNO2dCQUNFLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDaUIsTUFBTTtzQkFBNUIsS0FBSztnQkFDaUIsaUJBQWlCO3NCQUF2QyxLQUFLO2dCQUNpQyxpQkFBaUI7c0JBQXZELEtBQUs7Z0JBQ2lDLGlCQUFpQjtzQkFBdkQsS0FBSztnQkFDaUMsUUFBUTtzQkFBOUMsS0FBSztnQkFDbUIsVUFBVTtzQkFBbEMsS0FBSztnQkFDbUIsWUFBWTtzQkFBcEMsS0FBSztnQkFDbUIsa0JBQWtCO3NCQUExQyxLQUFLO2dCQUNrQixPQUFPO3NCQUE5QixLQUFLO2dCQUNrQixXQUFXO3NCQUFsQyxLQUFLO2dCQUNrQixVQUFVO3NCQUFqQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgRGlyZWN0aW9uLCBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlcGxheVN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTnpDb25maWdLZXksIE56Q29uZmlnU2VydmljZSwgV2l0aENvbmZpZyB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS9jb25maWcnO1xuaW1wb3J0IHsgZ3JpZFJlc3BvbnNpdmVNYXAsIE56QnJlYWtwb2ludEVudW0sIE56QnJlYWtwb2ludFNlcnZpY2UgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvc2VydmljZXMnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBOdW1iZXJJbnB1dCB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4sIElucHV0TnVtYmVyIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3V0aWwnO1xuaW1wb3J0IHsgTnpJMThuU2VydmljZSwgTnpQYWdpbmF0aW9uSTE4bkludGVyZmFjZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvaTE4bic7XG5cbmltcG9ydCB7IE56UGFnaW5hdGlvbkRlZmF1bHRDb21wb25lbnQgfSBmcm9tICcuL3BhZ2luYXRpb24tZGVmYXVsdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTnpQYWdpbmF0aW9uU2ltcGxlQ29tcG9uZW50IH0gZnJvbSAnLi9wYWdpbmF0aW9uLXNpbXBsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbkl0ZW1SZW5kZXJDb250ZXh0IH0gZnJvbSAnLi9wYWdpbmF0aW9uLnR5cGVzJztcblxuY29uc3QgTlpfQ09ORklHX01PRFVMRV9OQU1FOiBOekNvbmZpZ0tleSA9ICdwYWdpbmF0aW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnotcGFnaW5hdGlvbicsXG4gIGV4cG9ydEFzOiAnbnpQYWdpbmF0aW9uJyxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93UGFnaW5hdGlvblwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm56U2ltcGxlOyBlbHNlIGRlZmF1bHRQYWdpbmF0aW9uLnRlbXBsYXRlXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJzaW1wbGVQYWdpbmF0aW9uLnRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuei1wYWdpbmF0aW9uLXNpbXBsZVxuICAgICAgI3NpbXBsZVBhZ2luYXRpb25cbiAgICAgIFtkaXNhYmxlZF09XCJuekRpc2FibGVkXCJcbiAgICAgIFtpdGVtUmVuZGVyXT1cIm56SXRlbVJlbmRlclwiXG4gICAgICBbbG9jYWxlXT1cImxvY2FsZVwiXG4gICAgICBbcGFnZVNpemVdPVwibnpQYWdlU2l6ZVwiXG4gICAgICBbdG90YWxdPVwibnpUb3RhbFwiXG4gICAgICBbcGFnZUluZGV4XT1cIm56UGFnZUluZGV4XCJcbiAgICAgIChwYWdlSW5kZXhDaGFuZ2UpPVwib25QYWdlSW5kZXhDaGFuZ2UoJGV2ZW50KVwiXG4gICAgPjwvbnotcGFnaW5hdGlvbi1zaW1wbGU+XG4gICAgPG56LXBhZ2luYXRpb24tZGVmYXVsdFxuICAgICAgI2RlZmF1bHRQYWdpbmF0aW9uXG4gICAgICBbbnpTaXplXT1cInNpemVcIlxuICAgICAgW2l0ZW1SZW5kZXJdPVwibnpJdGVtUmVuZGVyXCJcbiAgICAgIFtzaG93VG90YWxdPVwibnpTaG93VG90YWxcIlxuICAgICAgW2Rpc2FibGVkXT1cIm56RGlzYWJsZWRcIlxuICAgICAgW2xvY2FsZV09XCJsb2NhbGVcIlxuICAgICAgW3Nob3dTaXplQ2hhbmdlcl09XCJuelNob3dTaXplQ2hhbmdlclwiXG4gICAgICBbc2hvd1F1aWNrSnVtcGVyXT1cIm56U2hvd1F1aWNrSnVtcGVyXCJcbiAgICAgIFt0b3RhbF09XCJuelRvdGFsXCJcbiAgICAgIFtwYWdlSW5kZXhdPVwibnpQYWdlSW5kZXhcIlxuICAgICAgW3BhZ2VTaXplXT1cIm56UGFnZVNpemVcIlxuICAgICAgW3BhZ2VTaXplT3B0aW9uc109XCJuelBhZ2VTaXplT3B0aW9uc1wiXG4gICAgICAocGFnZUluZGV4Q2hhbmdlKT1cIm9uUGFnZUluZGV4Q2hhbmdlKCRldmVudClcIlxuICAgICAgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgPjwvbnotcGFnaW5hdGlvbi1kZWZhdWx0PlxuICBgLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdhbnQtcGFnaW5hdGlvbicsXG4gICAgJ1tjbGFzcy5hbnQtcGFnaW5hdGlvbi1zaW1wbGVdJzogJ256U2ltcGxlJyxcbiAgICAnW2NsYXNzLmFudC1wYWdpbmF0aW9uLWRpc2FibGVkXSc6ICduekRpc2FibGVkJyxcbiAgICAnW2NsYXNzLm1pbmldJzogYCFuelNpbXBsZSAmJiBzaXplID09PSAnc21hbGwnYCxcbiAgICAnW2NsYXNzLmFudC1wYWdpbmF0aW9uLXJ0bF0nOiBgZGlyID09PSAncnRsJ2BcbiAgfSxcbiAgaW1wb3J0czogW05nSWYsIE5nVGVtcGxhdGVPdXRsZXQsIE56UGFnaW5hdGlvblNpbXBsZUNvbXBvbmVudCwgTnpQYWdpbmF0aW9uRGVmYXVsdENvbXBvbmVudF0sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTnpQYWdpbmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIHJlYWRvbmx5IF9uek1vZHVsZU5hbWU6IE56Q29uZmlnS2V5ID0gTlpfQ09ORklHX01PRFVMRV9OQU1FO1xuXG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uekRpc2FibGVkOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uelNob3dTaXplQ2hhbmdlcjogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpIaWRlT25TaW5nbGVQYWdlOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uelNob3dRdWlja0p1bXBlcjogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpTaW1wbGU6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256UmVzcG9uc2l2ZTogQm9vbGVhbklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbnpUb3RhbDogTnVtYmVySW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uelBhZ2VJbmRleDogTnVtYmVySW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uelBhZ2VTaXplOiBOdW1iZXJJbnB1dDtcblxuICBAT3V0cHV0KCkgcmVhZG9ubHkgbnpQYWdlU2l6ZUNoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSByZWFkb25seSBuelBhZ2VJbmRleENoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIG56U2hvd1RvdGFsOiBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogbnVtYmVyOyByYW5nZTogW251bWJlciwgbnVtYmVyXSB9PiB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBuekl0ZW1SZW5kZXI6IFRlbXBsYXRlUmVmPFBhZ2luYXRpb25JdGVtUmVuZGVyQ29udGV4dD4gfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgQFdpdGhDb25maWcoKSBuelNpemU6ICdkZWZhdWx0JyB8ICdzbWFsbCcgPSAnZGVmYXVsdCc7XG4gIEBJbnB1dCgpIEBXaXRoQ29uZmlnKCkgbnpQYWdlU2l6ZU9wdGlvbnM6IG51bWJlcltdID0gWzEwLCAyMCwgMzAsIDQwXTtcbiAgQElucHV0KCkgQFdpdGhDb25maWcoKSBASW5wdXRCb29sZWFuKCkgbnpTaG93U2l6ZUNoYW5nZXIgPSBmYWxzZTtcbiAgQElucHV0KCkgQFdpdGhDb25maWcoKSBASW5wdXRCb29sZWFuKCkgbnpTaG93UXVpY2tKdW1wZXIgPSBmYWxzZTtcbiAgQElucHV0KCkgQFdpdGhDb25maWcoKSBASW5wdXRCb29sZWFuKCkgbnpTaW1wbGUgPSBmYWxzZTtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56RGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56UmVzcG9uc2l2ZSA9IGZhbHNlO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbnpIaWRlT25TaW5nbGVQYWdlID0gZmFsc2U7XG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigpIG56VG90YWwgPSAwO1xuICBASW5wdXQoKSBASW5wdXROdW1iZXIoKSBuelBhZ2VJbmRleCA9IDE7XG4gIEBJbnB1dCgpIEBJbnB1dE51bWJlcigpIG56UGFnZVNpemUgPSAxMDtcblxuICBzaG93UGFnaW5hdGlvbiA9IHRydWU7XG4gIGxvY2FsZSE6IE56UGFnaW5hdGlvbkkxOG5JbnRlcmZhY2U7XG4gIHNpemU6ICdkZWZhdWx0JyB8ICdzbWFsbCcgPSAnZGVmYXVsdCc7XG4gIGRpcjogRGlyZWN0aW9uID0gJ2x0cic7XG5cbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgdG90YWwkID0gbmV3IFJlcGxheVN1YmplY3Q8bnVtYmVyPigxKTtcblxuICB2YWxpZGF0ZVBhZ2VJbmRleCh2YWx1ZTogbnVtYmVyLCBsYXN0SW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKHZhbHVlID4gbGFzdEluZGV4KSB7XG4gICAgICByZXR1cm4gbGFzdEluZGV4O1xuICAgIH0gZWxzZSBpZiAodmFsdWUgPCAxKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIG9uUGFnZUluZGV4Q2hhbmdlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBsYXN0SW5kZXggPSB0aGlzLmdldExhc3RJbmRleCh0aGlzLm56VG90YWwsIHRoaXMubnpQYWdlU2l6ZSk7XG4gICAgY29uc3QgdmFsaWRJbmRleCA9IHRoaXMudmFsaWRhdGVQYWdlSW5kZXgoaW5kZXgsIGxhc3RJbmRleCk7XG4gICAgaWYgKHZhbGlkSW5kZXggIT09IHRoaXMubnpQYWdlSW5kZXggJiYgIXRoaXMubnpEaXNhYmxlZCkge1xuICAgICAgdGhpcy5uelBhZ2VJbmRleCA9IHZhbGlkSW5kZXg7XG4gICAgICB0aGlzLm56UGFnZUluZGV4Q2hhbmdlLmVtaXQodGhpcy5uelBhZ2VJbmRleCk7XG4gICAgfVxuICB9XG5cbiAgb25QYWdlU2l6ZUNoYW5nZShzaXplOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLm56UGFnZVNpemUgPSBzaXplO1xuICAgIHRoaXMubnpQYWdlU2l6ZUNoYW5nZS5lbWl0KHNpemUpO1xuICAgIGNvbnN0IGxhc3RJbmRleCA9IHRoaXMuZ2V0TGFzdEluZGV4KHRoaXMubnpUb3RhbCwgdGhpcy5uelBhZ2VTaXplKTtcbiAgICBpZiAodGhpcy5uelBhZ2VJbmRleCA+IGxhc3RJbmRleCkge1xuICAgICAgdGhpcy5vblBhZ2VJbmRleENoYW5nZShsYXN0SW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIG9uVG90YWxDaGFuZ2UodG90YWw6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGxhc3RJbmRleCA9IHRoaXMuZ2V0TGFzdEluZGV4KHRvdGFsLCB0aGlzLm56UGFnZVNpemUpO1xuICAgIGlmICh0aGlzLm56UGFnZUluZGV4ID4gbGFzdEluZGV4KSB7XG4gICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5vblBhZ2VJbmRleENoYW5nZShsYXN0SW5kZXgpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldExhc3RJbmRleCh0b3RhbDogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRvdGFsIC8gcGFnZVNpemUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpMThuOiBOekkxOG5TZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGJyZWFrcG9pbnRTZXJ2aWNlOiBOekJyZWFrcG9pbnRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBuekNvbmZpZ1NlcnZpY2U6IE56Q29uZmlnU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGRpcmVjdGlvbmFsaXR5OiBEaXJlY3Rpb25hbGl0eVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pMThuLmxvY2FsZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMubG9jYWxlID0gdGhpcy5pMThuLmdldExvY2FsZURhdGEoJ1BhZ2luYXRpb24nKTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy50b3RhbCQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh0b3RhbCA9PiB7XG4gICAgICB0aGlzLm9uVG90YWxDaGFuZ2UodG90YWwpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5icmVha3BvaW50U2VydmljZVxuICAgICAgLnN1YnNjcmliZShncmlkUmVzcG9uc2l2ZU1hcClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoYnAgPT4ge1xuICAgICAgICBpZiAodGhpcy5uelJlc3BvbnNpdmUpIHtcbiAgICAgICAgICB0aGlzLnNpemUgPSBicCA9PT0gTnpCcmVha3BvaW50RW51bS54cyA/ICdzbWFsbCcgOiAnZGVmYXVsdCc7XG4gICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5kaXJlY3Rpb25hbGl0eS5jaGFuZ2U/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGRpcmVjdGlvbjogRGlyZWN0aW9uKSA9PiB7XG4gICAgICB0aGlzLmRpciA9IGRpcmVjdGlvbjtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZGlyID0gdGhpcy5kaXJlY3Rpb25hbGl0eS52YWx1ZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCB7IG56SGlkZU9uU2luZ2xlUGFnZSwgbnpUb3RhbCwgbnpQYWdlU2l6ZSwgbnpTaXplIH0gPSBjaGFuZ2VzO1xuICAgIGlmIChuelRvdGFsKSB7XG4gICAgICB0aGlzLnRvdGFsJC5uZXh0KHRoaXMubnpUb3RhbCk7XG4gICAgfVxuICAgIGlmIChuekhpZGVPblNpbmdsZVBhZ2UgfHwgbnpUb3RhbCB8fCBuelBhZ2VTaXplKSB7XG4gICAgICB0aGlzLnNob3dQYWdpbmF0aW9uID1cbiAgICAgICAgKHRoaXMubnpIaWRlT25TaW5nbGVQYWdlICYmIHRoaXMubnpUb3RhbCA+IHRoaXMubnpQYWdlU2l6ZSkgfHwgKHRoaXMubnpUb3RhbCA+IDAgJiYgIXRoaXMubnpIaWRlT25TaW5nbGVQYWdlKTtcbiAgICB9XG5cbiAgICBpZiAobnpTaXplKSB7XG4gICAgICB0aGlzLnNpemUgPSBuelNpemUuY3VycmVudFZhbHVlO1xuICAgIH1cbiAgfVxufVxuIl19