UNPKG

ng-zorro-antd

Version:

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

207 lines 21 kB
/** * @fileoverview added by tsickle * Generated from: notification-container.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { __assign, __extends, __read, __spread } from "tslib"; /** * @license * Copyright Alibaba.com All Rights Reserved. * * 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 { ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewEncapsulation } from '@angular/core'; import { NzConfigService } from 'ng-zorro-antd/core/config'; import { toCssPixel } from 'ng-zorro-antd/core/util'; import { NzMNContainerComponent } from 'ng-zorro-antd/message'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; /** @type {?} */ var NZ_CONFIG_COMPONENT_NAME = 'notification'; /** @type {?} */ var NZ_NOTIFICATION_DEFAULT_CONFIG = { nzTop: '24px', nzBottom: '24px', nzPlacement: 'topRight', nzDuration: 4500, nzMaxStack: 7, nzPauseOnHover: true, nzAnimate: true }; var NzNotificationContainerComponent = /** @class */ (function (_super) { __extends(NzNotificationContainerComponent, _super); function NzNotificationContainerComponent(cdr, nzConfigService) { var _this = _super.call(this, cdr, nzConfigService) || this; _this.instances = []; _this.topLeftInstances = []; _this.topRightInstances = []; _this.bottomLeftInstances = []; _this.bottomRightInstances = []; return _this; } /** * @param {?} notification * @return {?} */ NzNotificationContainerComponent.prototype.create = /** * @param {?} notification * @return {?} */ function (notification) { /** @type {?} */ var noti = this.onCreate(notification); /** @type {?} */ var key = noti.options.nzKey; /** @type {?} */ var notificationWithSameKey = this.instances.find((/** * @param {?} msg * @return {?} */ function (msg) { return msg.options.nzKey === ((/** @type {?} */ (notification.options))).nzKey; })); if (key && notificationWithSameKey) { this.replaceNotification(notificationWithSameKey, noti); } else { if (this.instances.length >= this.config.nzMaxStack) { this.instances = this.instances.slice(1); } this.instances = __spread(this.instances, [noti]); } this.readyInstances(); return noti; }; /** * @protected * @param {?} instance * @return {?} */ NzNotificationContainerComponent.prototype.onCreate = /** * @protected * @param {?} instance * @return {?} */ function (instance) { instance.options = this.mergeOptions(instance.options); instance.onClose = new Subject(); instance.onClick = new Subject(); return (/** @type {?} */ (instance)); }; /** * @protected * @return {?} */ NzNotificationContainerComponent.prototype.subscribeConfigChange = /** * @protected * @return {?} */ function () { var _this = this; this.nzConfigService .getConfigChangeEventForComponent(NZ_CONFIG_COMPONENT_NAME) .pipe(takeUntil(this.destroy$)) .subscribe((/** * @return {?} */ function () { return _this.updateConfig(); })); }; /** * @protected * @return {?} */ NzNotificationContainerComponent.prototype.updateConfig = /** * @protected * @return {?} */ function () { this.config = __assign(__assign(__assign({}, NZ_NOTIFICATION_DEFAULT_CONFIG), this.config), this.nzConfigService.getConfigForComponent(NZ_CONFIG_COMPONENT_NAME)); this.top = toCssPixel((/** @type {?} */ (this.config.nzTop))); this.bottom = toCssPixel((/** @type {?} */ (this.config.nzBottom))); this.cdr.markForCheck(); }; /** * @private * @param {?} old * @param {?} _new * @return {?} */ NzNotificationContainerComponent.prototype.replaceNotification = /** * @private * @param {?} old * @param {?} _new * @return {?} */ function (old, _new) { old.title = _new.title; old.content = _new.content; old.template = _new.template; old.type = _new.type; }; /** * @protected * @return {?} */ NzNotificationContainerComponent.prototype.readyInstances = /** * @protected * @return {?} */ function () { this.topLeftInstances = this.instances.filter((/** * @param {?} m * @return {?} */ function (m) { return m.options.nzPosition === 'topLeft'; })); this.topRightInstances = this.instances.filter((/** * @param {?} m * @return {?} */ function (m) { return m.options.nzPosition === 'topRight' || !m.options.nzPosition; })); this.bottomLeftInstances = this.instances.filter((/** * @param {?} m * @return {?} */ function (m) { return m.options.nzPosition === 'bottomLeft'; })); this.bottomRightInstances = this.instances.filter((/** * @param {?} m * @return {?} */ function (m) { return m.options.nzPosition === 'bottomRight'; })); this.cdr.detectChanges(); }; NzNotificationContainerComponent.decorators = [ { type: Component, args: [{ changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, selector: 'nz-notification-container', exportAs: 'nzNotificationContainer', preserveWhitespaces: false, template: "\n <div class=\"ant-notification ant-notification-topLeft\" [style.top]=\"top\" [style.left]=\"'0px'\">\n <nz-notification\n *ngFor=\"let instance of topLeftInstances\"\n [instance]=\"instance\"\n [placement]=\"config.nzPlacement\"\n (destroyed)=\"remove($event.id, $event.userAction)\"\n ></nz-notification>\n </div>\n <div class=\"ant-notification ant-notification-topRight\" [style.top]=\"top\" [style.right]=\"'0px'\">\n <nz-notification\n *ngFor=\"let instance of topRightInstances\"\n [instance]=\"instance\"\n [placement]=\"config.nzPlacement\"\n (destroyed)=\"remove($event.id, $event.userAction)\"\n ></nz-notification>\n </div>\n <div class=\"ant-notification ant-notification-bottomLeft\" [style.bottom]=\"bottom\" [style.left]=\"'0px'\">\n <nz-notification\n *ngFor=\"let instance of bottomLeftInstances\"\n [instance]=\"instance\"\n [placement]=\"config.nzPlacement\"\n (destroyed)=\"remove($event.id, $event.userAction)\"\n ></nz-notification>\n </div>\n <div class=\"ant-notification ant-notification-bottomRight\" [style.bottom]=\"bottom\" [style.right]=\"'0px'\">\n <nz-notification\n *ngFor=\"let instance of bottomRightInstances\"\n [instance]=\"instance\"\n [placement]=\"config.nzPlacement\"\n (destroyed)=\"remove($event.id, $event.userAction)\"\n ></nz-notification>\n </div>\n " }] } ]; /** @nocollapse */ NzNotificationContainerComponent.ctorParameters = function () { return [ { type: ChangeDetectorRef }, { type: NzConfigService } ]; }; return NzNotificationContainerComponent; }(NzMNContainerComponent)); export { NzNotificationContainerComponent }; if (false) { /** @type {?} */ NzNotificationContainerComponent.prototype.bottom; /** @type {?} */ NzNotificationContainerComponent.prototype.top; /** @type {?} */ NzNotificationContainerComponent.prototype.config; /** @type {?} */ NzNotificationContainerComponent.prototype.instances; /** @type {?} */ NzNotificationContainerComponent.prototype.topLeftInstances; /** @type {?} */ NzNotificationContainerComponent.prototype.topRightInstances; /** @type {?} */ NzNotificationContainerComponent.prototype.bottomLeftInstances; /** @type {?} */ NzNotificationContainerComponent.prototype.bottomRightInstances; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy16b3Jyby1hbnRkL25vdGlmaWNhdGlvbi8iLCJzb3VyY2VzIjpbIm5vdGlmaWNhdGlvbi1jb250YWluZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFRQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBc0IsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDaEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXJELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztJQUlyQyx3QkFBd0IsR0FBRyxjQUFjOztJQUV6Qyw4QkFBOEIsR0FBaUM7SUFDbkUsS0FBSyxFQUFFLE1BQU07SUFDYixRQUFRLEVBQUUsTUFBTTtJQUNoQixXQUFXLEVBQUUsVUFBVTtJQUN2QixVQUFVLEVBQUUsSUFBSTtJQUNoQixVQUFVLEVBQUUsQ0FBQztJQUNiLGNBQWMsRUFBRSxJQUFJO0lBQ3BCLFNBQVMsRUFBRSxJQUFJO0NBQ2hCO0FBRUQ7SUF5Q3NELG9EQUFzQjtJQVUxRSwwQ0FBWSxHQUFzQixFQUFFLGVBQWdDO1FBQXBFLFlBQ0Usa0JBQU0sR0FBRyxFQUFFLGVBQWUsQ0FBQyxTQUM1QjtRQVJELGVBQVMsR0FBd0MsRUFBRSxDQUFDO1FBQ3BELHNCQUFnQixHQUF3QyxFQUFFLENBQUM7UUFDM0QsdUJBQWlCLEdBQXdDLEVBQUUsQ0FBQztRQUM1RCx5QkFBbUIsR0FBd0MsRUFBRSxDQUFDO1FBQzlELDBCQUFvQixHQUF3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QUFzQjs7SUFDdEIsK0NBQW1COztJQUNuQixrREFBcUM7O0lBQ3JDLHFEQUFvRDs7SUFDcEQsNERBQTJEOztJQUMzRCw2REFBNEQ7O0lBQzVELCtEQUE4RDs7SUFDOUQsZ0VBQStEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uQ29uZmlnLCBOekNvbmZpZ1NlcnZpY2UgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvY29uZmlnJztcbmltcG9ydCB7IHRvQ3NzUGl4ZWwgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdXRpbCc7XG5cbmltcG9ydCB7IE56TU5Db250YWluZXJDb21wb25lbnQgfSBmcm9tICduZy16b3Jyby1hbnRkL21lc3NhZ2UnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBOek5vdGlmaWNhdGlvbkRhdGEsIE56Tm90aWZpY2F0aW9uRGF0YU9wdGlvbnMgfSBmcm9tICcuL3R5cGluZ3MnO1xuXG5jb25zdCBOWl9DT05GSUdfQ09NUE9ORU5UX05BTUUgPSAnbm90aWZpY2F0aW9uJztcblxuY29uc3QgTlpfTk9USUZJQ0FUSU9OX0RFRkFVTFRfQ09ORklHOiBSZXF1aXJlZDxOb3RpZmljYXRpb25Db25maWc+ID0ge1xuICBuelRvcDogJzI0cHgnLFxuICBuekJvdHRvbTogJzI0cHgnLFxuICBuelBsYWNlbWVudDogJ3RvcFJpZ2h0JyxcbiAgbnpEdXJhdGlvbjogNDUwMCxcbiAgbnpNYXhTdGFjazogNyxcbiAgbnpQYXVzZU9uSG92ZXI6IHRydWUsXG4gIG56QW5pbWF0ZTogdHJ1ZVxufTtcblxuQENvbXBvbmVudCh7XG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzZWxlY3RvcjogJ256LW5vdGlmaWNhdGlvbi1jb250YWluZXInLFxuICBleHBvcnRBczogJ256Tm90aWZpY2F0aW9uQ29udGFpbmVyJyxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImFudC1ub3RpZmljYXRpb24gYW50LW5vdGlmaWNhdGlvbi10b3BMZWZ0XCIgW3N0eWxlLnRvcF09XCJ0b3BcIiBbc3R5bGUubGVmdF09XCInMHB4J1wiPlxuICAgICAgPG56LW5vdGlmaWNhdGlvblxuICAgICAgICAqbmdGb3I9XCJsZXQgaW5zdGFuY2Ugb2YgdG9wTGVmdEluc3RhbmNlc1wiXG4gICAgICAgIFtpbnN0YW5jZV09XCJpbnN0YW5jZVwiXG4gICAgICAgIFtwbGFjZW1lbnRdPVwiY29uZmlnLm56UGxhY2VtZW50XCJcbiAgICAgICAgKGRlc3Ryb3llZCk9XCJyZW1vdmUoJGV2ZW50LmlkLCAkZXZlbnQudXNlckFjdGlvbilcIlxuICAgICAgPjwvbnotbm90aWZpY2F0aW9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJhbnQtbm90aWZpY2F0aW9uIGFudC1ub3RpZmljYXRpb24tdG9wUmlnaHRcIiBbc3R5bGUudG9wXT1cInRvcFwiIFtzdHlsZS5yaWdodF09XCInMHB4J1wiPlxuICAgICAgPG56LW5vdGlmaWNhdGlvblxuICAgICAgICAqbmdGb3I9XCJsZXQgaW5zdGFuY2Ugb2YgdG9wUmlnaHRJbnN0YW5jZXNcIlxuICAgICAgICBbaW5zdGFuY2VdPVwiaW5zdGFuY2VcIlxuICAgICAgICBbcGxhY2VtZW50XT1cImNvbmZpZy5uelBsYWNlbWVudFwiXG4gICAgICAgIChkZXN0cm95ZWQpPVwicmVtb3ZlKCRldmVudC5pZCwgJGV2ZW50LnVzZXJBY3Rpb24pXCJcbiAgICAgID48L256LW5vdGlmaWNhdGlvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYW50LW5vdGlmaWNhdGlvbiBhbnQtbm90aWZpY2F0aW9uLWJvdHRvbUxlZnRcIiBbc3R5bGUuYm90dG9tXT1cImJvdHRvbVwiIFtzdHlsZS5sZWZ0XT1cIicwcHgnXCI+XG4gICAgICA8bnotbm90aWZpY2F0aW9uXG4gICAgICAgICpuZ0Zvcj1cImxldCBpbnN0YW5jZSBvZiBib3R0b21MZWZ0SW5zdGFuY2VzXCJcbiAgICAgICAgW2luc3RhbmNlXT1cImluc3RhbmNlXCJcbiAgICAgICAgW3BsYWNlbWVudF09XCJjb25maWcubnpQbGFjZW1lbnRcIlxuICAgICAgICAoZGVzdHJveWVkKT1cInJlbW92ZSgkZXZlbnQuaWQsICRldmVudC51c2VyQWN0aW9uKVwiXG4gICAgICA+PC9uei1ub3RpZmljYXRpb24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImFudC1ub3RpZmljYXRpb24gYW50LW5vdGlmaWNhdGlvbi1ib3R0b21SaWdodFwiIFtzdHlsZS5ib3R0b21dPVwiYm90dG9tXCIgW3N0eWxlLnJpZ2h0XT1cIicwcHgnXCI+XG4gICAgICA8bnotbm90aWZpY2F0aW9uXG4gICAgICAgICpuZ0Zvcj1cImxldCBpbnN0YW5jZSBvZiBib3R0b21SaWdodEluc3RhbmNlc1wiXG4gICAgICAgIFtpbnN0YW5jZV09XCJpbnN0YW5jZVwiXG4gICAgICAgIFtwbGFjZW1lbnRdPVwiY29uZmlnLm56UGxhY2VtZW50XCJcbiAgICAgICAgKGRlc3Ryb3llZCk9XCJyZW1vdmUoJGV2ZW50LmlkLCAkZXZlbnQudXNlckFjdGlvbilcIlxuICAgICAgPjwvbnotbm90aWZpY2F0aW9uPlxuICAgIDwvZGl2PlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIE56Tm90aWZpY2F0aW9uQ29udGFpbmVyQ29tcG9uZW50IGV4dGVuZHMgTnpNTkNvbnRhaW5lckNvbXBvbmVudCB7XG4gIGJvdHRvbTogc3RyaW5nIHwgbnVsbDtcbiAgdG9wOiBzdHJpbmcgfCBudWxsO1xuICBjb25maWc6IFJlcXVpcmVkPE5vdGlmaWNhdGlvbkNvbmZpZz47XG4gIGluc3RhbmNlczogQXJyYXk8UmVxdWlyZWQ8TnpOb3RpZmljYXRpb25EYXRhPj4gPSBbXTtcbiAgdG9wTGVmdEluc3RhbmNlczogQXJyYXk8UmVxdWlyZWQ8TnpOb3RpZmljYXRpb25EYXRhPj4gPSBbXTtcbiAgdG9wUmlnaHRJbnN0YW5jZXM6IEFycmF5PFJlcXVpcmVkPE56Tm90aWZpY2F0aW9uRGF0YT4+ID0gW107XG4gIGJvdHRvbUxlZnRJbnN0YW5jZXM6IEFycmF5PFJlcXVpcmVkPE56Tm90aWZpY2F0aW9uRGF0YT4+ID0gW107XG4gIGJvdHRvbVJpZ2h0SW5zdGFuY2VzOiBBcnJheTxSZXF1aXJlZDxOek5vdGlmaWNhdGlvbkRhdGE+PiA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIG56Q29uZmlnU2VydmljZTogTnpDb25maWdTZXJ2aWNlKSB7XG4gICAgc3VwZXIoY2RyLCBuekNvbmZpZ1NlcnZpY2UpO1xuICB9XG5cbiAgY3JlYXRlKG5vdGlmaWNhdGlvbjogTnpOb3RpZmljYXRpb25EYXRhKTogUmVxdWlyZWQ8TnpOb3RpZmljYXRpb25EYXRhPiB7XG4gICAgY29uc3Qgbm90aSA9IHRoaXMub25DcmVhdGUobm90aWZpY2F0aW9uKTtcbiAgICBjb25zdCBrZXkgPSBub3RpLm9wdGlvbnMubnpLZXk7XG4gICAgY29uc3Qgbm90aWZpY2F0aW9uV2l0aFNhbWVLZXkgPSB0aGlzLmluc3RhbmNlcy5maW5kKFxuICAgICAgbXNnID0+IG1zZy5vcHRpb25zLm56S2V5ID09PSAobm90aWZpY2F0aW9uLm9wdGlvbnMgYXMgUmVxdWlyZWQ8TnpOb3RpZmljYXRpb25EYXRhT3B0aW9ucz4pLm56S2V5XG4gICAgKTtcbiAgICBpZiAoa2V5ICYmIG5vdGlmaWNhdGlvbldpdGhTYW1lS2V5KSB7XG4gICAgICB0aGlzLnJlcGxhY2VOb3RpZmljYXRpb24obm90aWZpY2F0aW9uV2l0aFNhbWVLZXksIG5vdGkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5pbnN0YW5jZXMubGVuZ3RoID49IHRoaXMuY29uZmlnLm56TWF4U3RhY2spIHtcbiAgICAgICAgdGhpcy5pbnN0YW5jZXMgPSB0aGlzLmluc3RhbmNlcy5zbGljZSgxKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaW5zdGFuY2VzID0gWy4uLnRoaXMuaW5zdGFuY2VzLCBub3RpXTtcbiAgICB9XG5cbiAgICB0aGlzLnJlYWR5SW5zdGFuY2VzKCk7XG5cbiAgICByZXR1cm4gbm90aTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkNyZWF0ZShpbnN0YW5jZTogTnpOb3RpZmljYXRpb25EYXRhKTogUmVxdWlyZWQ8TnpOb3RpZmljYXRpb25EYXRhPiB7XG4gICAgaW5zdGFuY2Uub3B0aW9ucyA9IHRoaXMubWVyZ2VPcHRpb25zKGluc3RhbmNlLm9wdGlvbnMpO1xuICAgIGluc3RhbmNlLm9uQ2xvc2UgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICAgIGluc3RhbmNlLm9uQ2xpY2sgPSBuZXcgU3ViamVjdDxNb3VzZUV2ZW50PigpO1xuICAgIHJldHVybiBpbnN0YW5jZSBhcyBSZXF1aXJlZDxOek5vdGlmaWNhdGlvbkRhdGE+O1xuICB9XG5cbiAgcHJvdGVjdGVkIHN1YnNjcmliZUNvbmZpZ0NoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLm56Q29uZmlnU2VydmljZVxuICAgICAgLmdldENvbmZpZ0NoYW5nZUV2ZW50Rm9yQ29tcG9uZW50KE5aX0NPTkZJR19DT01QT05FTlRfTkFNRSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVDb25maWcoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlQ29uZmlnKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlnID0ge1xuICAgICAgLi4uTlpfTk9USUZJQ0FUSU9OX0RFRkFVTFRfQ09ORklHLFxuICAgICAgLi4udGhpcy5jb25maWcsXG4gICAgICAuLi50aGlzLm56Q29uZmlnU2VydmljZS5nZXRDb25maWdGb3JDb21wb25lbnQoTlpfQ09ORklHX0NPTVBPTkVOVF9OQU1FKVxuICAgIH07XG5cbiAgICB0aGlzLnRvcCA9IHRvQ3NzUGl4ZWwodGhpcy5jb25maWcubnpUb3AhKTtcbiAgICB0aGlzLmJvdHRvbSA9IHRvQ3NzUGl4ZWwodGhpcy5jb25maWcubnpCb3R0b20hKTtcblxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlTm90aWZpY2F0aW9uKG9sZDogTnpOb3RpZmljYXRpb25EYXRhLCBfbmV3OiBOek5vdGlmaWNhdGlvbkRhdGEpOiB2b2lkIHtcbiAgICBvbGQudGl0bGUgPSBfbmV3LnRpdGxlO1xuICAgIG9sZC5jb250ZW50ID0gX25ldy5jb250ZW50O1xuICAgIG9sZC50ZW1wbGF0ZSA9IF9uZXcudGVtcGxhdGU7XG4gICAgb2xkLnR5cGUgPSBfbmV3LnR5cGU7XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVhZHlJbnN0YW5jZXMoKTogdm9pZCB7XG4gICAgdGhpcy50b3BMZWZ0SW5zdGFuY2VzID0gdGhpcy5pbnN0YW5jZXMuZmlsdGVyKG0gPT4gbS5vcHRpb25zLm56UG9zaXRpb24gPT09ICd0b3BMZWZ0Jyk7XG4gICAgdGhpcy50b3BSaWdodEluc3RhbmNlcyA9IHRoaXMuaW5zdGFuY2VzLmZpbHRlcihtID0+IG0ub3B0aW9ucy5uelBvc2l0aW9uID09PSAndG9wUmlnaHQnIHx8ICFtLm9wdGlvbnMubnpQb3NpdGlvbik7XG4gICAgdGhpcy5ib3R0b21MZWZ0SW5zdGFuY2VzID0gdGhpcy5pbnN0YW5jZXMuZmlsdGVyKG0gPT4gbS5vcHRpb25zLm56UG9zaXRpb24gPT09ICdib3R0b21MZWZ0Jyk7XG4gICAgdGhpcy5ib3R0b21SaWdodEluc3RhbmNlcyA9IHRoaXMuaW5zdGFuY2VzLmZpbHRlcihtID0+IG0ub3B0aW9ucy5uelBvc2l0aW9uID09PSAnYm90dG9tUmlnaHQnKTtcblxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxufVxuIl19