UNPKG

ng-zorro-antd

Version:

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

149 lines 18.1 kB
/** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ import { isPlatformBrowser, NgIf } from '@angular/common'; import { ChangeDetectionStrategy, Component, Input, ViewChild, Output, EventEmitter, Inject, PLATFORM_ID } from '@angular/core'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { NzButtonModule } from 'ng-zorro-antd/button'; import { NzIconModule } from 'ng-zorro-antd/icon'; import { NzSpinModule } from 'ng-zorro-antd/spin'; import { drawCanvas, plotQRCodeData } from './qrcode'; import * as i0 from "@angular/core"; import * as i1 from "ng-zorro-antd/i18n"; import * as i2 from "ng-zorro-antd/spin"; import * as i3 from "ng-zorro-antd/button"; import * as i4 from "ng-zorro-antd/core/transition-patch"; import * as i5 from "ng-zorro-antd/icon"; export class NzQRCodeComponent { constructor(i18n, el, cdr, platformId) { this.i18n = i18n; this.el = el; this.cdr = cdr; this.platformId = platformId; this.nzValue = ''; this.nzPadding = 0; this.nzColor = '#000000'; this.nzBgColor = '#FFFFFF'; this.nzSize = 160; this.nzIcon = ''; this.nzIconSize = 40; this.nzBordered = true; this.nzStatus = 'active'; this.nzLevel = 'M'; this.nzRefresh = new EventEmitter(); // https://github.com/angular/universal-starter/issues/538#issuecomment-365518693 // canvas is not supported by the SSR DOM this.isBrowser = true; this.destroy$ = new Subject(); this.isBrowser = isPlatformBrowser(this.platformId); this.cdr.markForCheck(); } ngOnInit() { this.el.nativeElement.style.backgroundColor = this.nzBgColor; this.i18n.localeChange.pipe(takeUntil(this.destroy$)).subscribe(() => { this.locale = this.i18n.getLocaleData('QRCode'); this.cdr.markForCheck(); }); } ngOnChanges(changes) { const { nzValue, nzIcon, nzLevel, nzSize, nzIconSize, nzColor, nzPadding, nzBgColor } = changes; if ((nzValue || nzIcon || nzLevel || nzSize || nzIconSize || nzColor || nzPadding || nzBgColor) && this.canvas) { this.drawCanvasQRCode(); } if (nzBgColor) { this.el.nativeElement.style.backgroundColor = this.nzBgColor; } } ngAfterViewInit() { this.drawCanvasQRCode(); } reloadQRCode() { this.drawCanvasQRCode(); this.nzRefresh.emit('refresh'); } drawCanvasQRCode() { if (this.canvas) { drawCanvas(this.canvas.nativeElement, plotQRCodeData(this.nzValue, this.nzLevel), this.nzSize, 10, this.nzPadding, this.nzColor, this.nzBgColor, this.nzIconSize, this.nzIcon); } } ngOnDestroy() { this.destroy$.next(); this.destroy$.complete(); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: NzQRCodeComponent, deps: [{ token: i1.NzI18nService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.1", type: NzQRCodeComponent, isStandalone: true, selector: "nz-qrcode", inputs: { nzValue: "nzValue", nzPadding: "nzPadding", nzColor: "nzColor", nzBgColor: "nzBgColor", nzSize: "nzSize", nzIcon: "nzIcon", nzIconSize: "nzIconSize", nzBordered: "nzBordered", nzStatus: "nzStatus", nzLevel: "nzLevel" }, outputs: { nzRefresh: "nzRefresh" }, host: { properties: { "class.ant-qrcode-border": "nzBordered" }, classAttribute: "ant-qrcode" }, viewQueries: [{ propertyName: "canvas", first: true, predicate: ["canvas"], descendants: true }], exportAs: ["nzQRCode"], usesOnChanges: true, ngImport: i0, template: ` <div class="ant-qrcode-mask" *ngIf="nzStatus !== 'active'"> <nz-spin *ngIf="nzStatus === 'loading'"></nz-spin> <div *ngIf="nzStatus === 'expired'"> <p class="ant-qrcode-expired">{{ locale.expired }}</p> <button nz-button nzType="link" (click)="reloadQRCode()"> <span nz-icon nzType="reload" nzTheme="outline"></span> <span>{{ locale.refresh }}</span> </button> </div> </div> <ng-container *ngIf="isBrowser"> <canvas #canvas></canvas> </ng-container> `, isInline: true, dependencies: [{ kind: "ngmodule", type: NzSpinModule }, { kind: "component", type: i2.NzSpinComponent, selector: "nz-spin", inputs: ["nzIndicator", "nzSize", "nzTip", "nzDelay", "nzSimple", "nzSpinning"], exportAs: ["nzSpin"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: NzButtonModule }, { kind: "component", type: i3.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i4.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i5.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: NzQRCodeComponent, decorators: [{ type: Component, args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'nz-qrcode', exportAs: 'nzQRCode', template: ` <div class="ant-qrcode-mask" *ngIf="nzStatus !== 'active'"> <nz-spin *ngIf="nzStatus === 'loading'"></nz-spin> <div *ngIf="nzStatus === 'expired'"> <p class="ant-qrcode-expired">{{ locale.expired }}</p> <button nz-button nzType="link" (click)="reloadQRCode()"> <span nz-icon nzType="reload" nzTheme="outline"></span> <span>{{ locale.refresh }}</span> </button> </div> </div> <ng-container *ngIf="isBrowser"> <canvas #canvas></canvas> </ng-container> `, host: { class: 'ant-qrcode', '[class.ant-qrcode-border]': `nzBordered` }, imports: [NzSpinModule, NgIf, NzButtonModule, NzIconModule], standalone: true }] }], ctorParameters: () => [{ type: i1.NzI18nService }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID] }] }], propDecorators: { canvas: [{ type: ViewChild, args: ['canvas', { static: false }] }], nzValue: [{ type: Input }], nzPadding: [{ type: Input }], nzColor: [{ type: Input }], nzBgColor: [{ type: Input }], nzSize: [{ type: Input }], nzIcon: [{ type: Input }], nzIconSize: [{ type: Input }], nzBordered: [{ type: Input }], nzStatus: [{ type: Input }], nzLevel: [{ type: Input }], nzRefresh: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXJjb2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbXBvbmVudHMvcXItY29kZS9xcmNvZGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRCxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxLQUFLLEVBRUwsU0FBUyxFQUVULE1BQU0sRUFDTixZQUFZLEVBSVosTUFBTSxFQUNOLFdBQVcsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsVUFBVSxFQUFtQixjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7QUE0QnZFLE1BQU0sT0FBTyxpQkFBaUI7SUFxQjVCLFlBQ1UsSUFBbUIsRUFDbkIsRUFBYyxFQUNkLEdBQXNCLEVBQ0QsVUFBa0I7UUFIdkMsU0FBSSxHQUFKLElBQUksQ0FBZTtRQUNuQixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDRCxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBdkJ4QyxZQUFPLEdBQVcsRUFBRSxDQUFDO1FBQ3JCLGNBQVMsR0FBc0IsQ0FBQyxDQUFDO1FBQ2pDLFlBQU8sR0FBVyxTQUFTLENBQUM7UUFDNUIsY0FBUyxHQUFXLFNBQVMsQ0FBQztRQUM5QixXQUFNLEdBQVcsR0FBRyxD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RSxZQUFZOzsyRkFHL0MsaUJBQWlCO2tCQTFCN0IsU0FBUzttQkFBQztvQkFDVCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFFBQVEsRUFBRSxVQUFVO29CQUNwQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7O0dBY1Q7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLEtBQUssRUFBRSxZQUFZO3dCQUNuQiwyQkFBMkIsRUFBRSxZQUFZO3FCQUMxQztvQkFDRCxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxZQUFZLENBQUM7b0JBQzNELFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBMEJJLE1BQU07MkJBQUMsV0FBVzt5Q0F4Qm1CLE1BQU07c0JBQTdDLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDN0IsT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRWEsU0FBUztzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uSW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE9uRGVzdHJveSxcbiAgSW5qZWN0LFxuICBQTEFURk9STV9JRFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTnpCdXR0b25Nb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2J1dHRvbic7XG5pbXBvcnQgeyBOelFSQ29kZUkxOG5JbnRlcmZhY2UsIE56STE4blNlcnZpY2UgfSBmcm9tICduZy16b3Jyby1hbnRkL2kxOG4nO1xuaW1wb3J0IHsgTnpJY29uTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9pY29uJztcbmltcG9ydCB7IE56U3Bpbk1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvc3Bpbic7XG5cbmltcG9ydCB7IGRyYXdDYW52YXMsIEVSUk9SX0xFVkVMX01BUCwgcGxvdFFSQ29kZURhdGEgfSBmcm9tICcuL3FyY29kZSc7XG5cbkBDb21wb25lbnQoe1xuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc2VsZWN0b3I6ICduei1xcmNvZGUnLFxuICBleHBvcnRBczogJ256UVJDb2RlJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiYW50LXFyY29kZS1tYXNrXCIgKm5nSWY9XCJuelN0YXR1cyAhPT0gJ2FjdGl2ZSdcIj5cbiAgICAgIDxuei1zcGluICpuZ0lmPVwibnpTdGF0dXMgPT09ICdsb2FkaW5nJ1wiPjwvbnotc3Bpbj5cbiAgICAgIDxkaXYgKm5nSWY9XCJuelN0YXR1cyA9PT0gJ2V4cGlyZWQnXCI+XG4gICAgICAgIDxwIGNsYXNzPVwiYW50LXFyY29kZS1leHBpcmVkXCI+e3sgbG9jYWxlLmV4cGlyZWQgfX08L3A+XG4gICAgICAgIDxidXR0b24gbnotYnV0dG9uIG56VHlwZT1cImxpbmtcIiAoY2xpY2spPVwicmVsb2FkUVJDb2RlKClcIj5cbiAgICAgICAgICA8c3BhbiBuei1pY29uIG56VHlwZT1cInJlbG9hZFwiIG56VGhlbWU9XCJvdXRsaW5lXCI+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuPnt7IGxvY2FsZS5yZWZyZXNoIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0Jyb3dzZXJcIj5cbiAgICAgIDxjYW52YXMgI2NhbnZhcz48L2NhbnZhcz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgYCxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnYW50LXFyY29kZScsXG4gICAgJ1tjbGFzcy5hbnQtcXJjb2RlLWJvcmRlcl0nOiBgbnpCb3JkZXJlZGBcbiAgfSxcbiAgaW1wb3J0czogW056U3Bpbk1vZHVsZSwgTmdJZiwgTnpCdXR0b25Nb2R1bGUsIE56SWNvbk1vZHVsZV0sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTnpRUkNvZGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnY2FudmFzJywgeyBzdGF0aWM6IGZhbHNlIH0pIGNhbnZhcyE6IEVsZW1lbnRSZWY8SFRNTENhbnZhc0VsZW1lbnQ+O1xuICBASW5wdXQoKSBuelZhbHVlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgbnpQYWRkaW5nOiBudW1iZXIgfCBudW1iZXJbXSA9IDA7XG4gIEBJbnB1dCgpIG56Q29sb3I6IHN0cmluZyA9ICcjMDAwMDAwJztcbiAgQElucHV0KCkgbnpCZ0NvbG9yOiBzdHJpbmcgPSAnI0ZGRkZGRic7XG4gIEBJbnB1dCgpIG56U2l6ZTogbnVtYmVyID0gMTYwO1xuICBASW5wdXQoKSBuekljb246IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBuekljb25TaXplOiBudW1iZXIgPSA0MDtcbiAgQElucHV0KCkgbnpCb3JkZXJlZDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIG56U3RhdHVzOiAnYWN0aXZlJyB8ICdleHBpcmVkJyB8ICdsb2FkaW5nJyA9ICdhY3RpdmUnO1xuICBASW5wdXQoKSBuekxldmVsOiBrZXlvZiB0eXBlb2YgRVJST1JfTEVWRUxfTUFQID0gJ00nO1xuXG4gIEBPdXRwdXQoKSByZWFkb25seSBuelJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBsb2NhbGUhOiBOelFSQ29kZUkxOG5JbnRlcmZhY2U7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL3VuaXZlcnNhbC1zdGFydGVyL2lzc3Vlcy81MzgjaXNzdWVjb21tZW50LTM2NTUxODY5M1xuICAvLyBjYW52YXMgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgU1NSIERPTVxuICBpc0Jyb3dzZXIgPSB0cnVlO1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGkxOG46IE56STE4blNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBPYmplY3RcbiAgKSB7XG4gICAgdGhpcy5pc0Jyb3dzZXIgPSBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMubnpCZ0NvbG9yO1xuICAgIHRoaXMuaTE4bi5sb2NhbGVDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmxvY2FsZSA9IHRoaXMuaTE4bi5nZXRMb2NhbGVEYXRhKCdRUkNvZGUnKTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHsgbnpWYWx1ZSwgbnpJY29uLCBuekxldmVsLCBuelNpemUsIG56SWNvblNpemUsIG56Q29sb3IsIG56UGFkZGluZywgbnpCZ0NvbG9yIH0gPSBjaGFuZ2VzO1xuICAgIGlmICgobnpWYWx1ZSB8fCBuekljb24gfHwgbnpMZXZlbCB8fCBuelNpemUgfHwgbnpJY29uU2l6ZSB8fCBuekNvbG9yIHx8IG56UGFkZGluZyB8fCBuekJnQ29sb3IpICYmIHRoaXMuY2FudmFzKSB7XG4gICAgICB0aGlzLmRyYXdDYW52YXNRUkNvZGUoKTtcbiAgICB9XG5cbiAgICBpZiAobnpCZ0NvbG9yKSB7XG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGhpcy5uekJnQ29sb3I7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZHJhd0NhbnZhc1FSQ29kZSgpO1xuICB9XG5cbiAgcmVsb2FkUVJDb2RlKCk6IHZvaWQge1xuICAgIHRoaXMuZHJhd0NhbnZhc1FSQ29kZSgpO1xuICAgIHRoaXMubnpSZWZyZXNoLmVtaXQoJ3JlZnJlc2gnKTtcbiAgfVxuXG4gIGRyYXdDYW52YXNRUkNvZGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FudmFzKSB7XG4gICAgICBkcmF3Q2FudmFzKFxuICAgICAgICB0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50LFxuICAgICAgICBwbG90UVJDb2RlRGF0YSh0aGlzLm56VmFsdWUsIHRoaXMubnpMZXZlbCksXG4gICAgICAgIHRoaXMubnpTaXplLFxuICAgICAgICAxMCxcbiAgICAgICAgdGhpcy5uelBhZGRpbmcsXG4gICAgICAgIHRoaXMubnpDb2xvcixcbiAgICAgICAgdGhpcy5uekJnQ29sb3IsXG4gICAgICAgIHRoaXMubnpJY29uU2l6ZSxcbiAgICAgICAgdGhpcy5uekljb25cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=