UNPKG

ad-custom-lib

Version:

This is an UI custom library based on Adminlte library with purpose for personal use, if you need a full template of Primeng please visit https://github.com/mledour/angular-admin-lte

305 lines 23.2 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Directive, ElementRef, EventEmitter, Input, NgZone, Output, Renderer2 } from '@angular/core'; /* * */ var CollapseAnimationDirective = /** @class */ (function () { /** * @method constructor * @param elementRef [description] * @param ngZone [description] * @param renderer2 [description] */ function CollapseAnimationDirective(elementRef, ngZone, renderer2) { this.elementRef = elementRef; this.ngZone = ngZone; this.renderer2 = renderer2; this.firstStart = true; this.collapseAnimationDuration = 350; this.startEventEmitter = new EventEmitter(); this.doneEventEmitter = new EventEmitter(); } Object.defineProperty(CollapseAnimationDirective.prototype, "_isCollapsed", { set: /** * @param {?} value * @return {?} */ function (value) { this.lastIsCollapsed = this.isCollapsed; this.isCollapsed = value; if (!this.firstStart) { this.emit('start'); if (value) { this.collapse(); } else if (value === false) { this.unCollapse(); } } }, enumerable: true, configurable: true }); /** * @method ngOnInit */ /** * \@method ngOnInit * @return {?} */ CollapseAnimationDirective.prototype.ngOnInit = /** * \@method ngOnInit * @return {?} */ function () { if (this.collapseAnimationDuration && this.collapseAnimationDuration !== 350) { this.renderer2.setStyle(this.elementRef.nativeElement, 'transition-duration', this.collapseAnimationDuration + "ms"); } if (this.collapseAnimationTiming) { this.renderer2.setStyle(this.elementRef.nativeElement, 'transition-timing-function', this.collapseAnimationTiming); } }; /** * @method ngAfterContentInit */ /** * \@method ngAfterContentInit * @return {?} */ CollapseAnimationDirective.prototype.ngAfterContentInit = /** * \@method ngAfterContentInit * @return {?} */ function () { this.emit('start'); if (this.isCollapsed) { this.renderer2.setStyle(this.elementRef.nativeElement, 'display', 'none'); this.renderer2.addClass(this.elementRef.nativeElement, 'collapsing'); } this.emit('done'); this.firstStart = false; this.subscriptions(); }; /** * [ngOnDestroy description] * @method ngOnDestroy * @return [description] */ /** * [ngOnDestroy description] * \@method ngOnDestroy * @return {?} [description] */ CollapseAnimationDirective.prototype.ngOnDestroy = /** * [ngOnDestroy description] * \@method ngOnDestroy * @return {?} [description] */ function () { if (this.listener) { this.listener(); } }; /** * [subscriptions description] * @method subscriptions */ /** * [subscriptions description] * \@method subscriptions * @private * @return {?} */ CollapseAnimationDirective.prototype.subscriptions = /** * [subscriptions description] * \@method subscriptions * @private * @return {?} */ function () { var _this = this; this.ngZone.runOutsideAngular((/** * @return {?} */ function () { _this.listener = _this.renderer2.listen(_this.elementRef.nativeElement, 'transitionend', (/** * @return {?} */ function () { if (!_this.isCollapsed) { _this.renderer2.removeClass(_this.elementRef.nativeElement, 'un-collapse'); _this.renderer2.removeClass(_this.elementRef.nativeElement, 'collapsing'); } else { _this.renderer2.setStyle(_this.elementRef.nativeElement, 'display', 'none'); } requestAnimationFrame((/** * @return {?} */ function () { _this.renderer2.removeStyle(_this.elementRef.nativeElement, 'height'); _this.emit('done'); _this.transitioning = false; })); })); })); }; /** * [unCollapse description] * @method unCollapse */ /** * [unCollapse description] * \@method unCollapse * @private * @return {?} */ CollapseAnimationDirective.prototype.unCollapse = /** * [unCollapse description] * \@method unCollapse * @private * @return {?} */ function () { this.transitioning = true; this.renderer2.addClass(this.elementRef.nativeElement, 'un-collapse'); this.renderer2.removeStyle(this.elementRef.nativeElement, 'display'); this.renderer2.setStyle(this.elementRef.nativeElement, 'height', this.elementRef.nativeElement.scrollHeight + "px"); }; /** * [collapse description] * @method collapse */ /** * [collapse description] * \@method collapse * @private * @return {?} */ CollapseAnimationDirective.prototype.collapse = /** * [collapse description] * \@method collapse * @private * @return {?} */ function () { var _this = this; requestAnimationFrame((/** * @return {?} */ function () { if (!_this.transitioning) { _this.renderer2.setStyle(_this.elementRef.nativeElement, 'height', _this.elementRef.nativeElement.offsetHeight + "px"); _this.renderer2.addClass(_this.elementRef.nativeElement, 'collapsing'); } _this.transitioning = true; requestAnimationFrame((/** * @return {?} */ function () { _this.renderer2.setStyle(_this.elementRef.nativeElement, 'height', "0px"); })); })); }; /** * @private * @param {?} phaseName * @return {?} */ CollapseAnimationDirective.prototype.emit = /** * @private * @param {?} phaseName * @return {?} */ function (phaseName) { /** @type {?} */ var event = { element: this.elementRef.nativeElement, fromState: this.lastIsCollapsed === undefined ? 'void' : this.lastIsCollapsed ? '1' : '0', phaseName: phaseName, toState: this.isCollapsed === undefined ? 'void' : this.isCollapsed ? '1' : '0', totalTime: this.collapseAnimationDuration, triggerName: 'mkCollapseAnimation' }; if (phaseName === 'done') { this.doneEventEmitter.emit(event); } else if (phaseName === 'start') { this.startEventEmitter.emit(event); } }; CollapseAnimationDirective.decorators = [ { type: Directive, args: [{ selector: '[mkCollapseAnimation]' },] } ]; /** @nocollapse */ CollapseAnimationDirective.ctorParameters = function () { return [ { type: ElementRef }, { type: NgZone }, { type: Renderer2 } ]; }; CollapseAnimationDirective.propDecorators = { collapseAnimationDuration: [{ type: Input }], collapseAnimationTiming: [{ type: Input }], _isCollapsed: [{ type: Input, args: ['mkCollapseAnimation',] }], startEventEmitter: [{ type: Output, args: ['mkCollapseAnimation.start',] }], doneEventEmitter: [{ type: Output, args: ['mkCollapseAnimation.done',] }] }; return CollapseAnimationDirective; }()); export { CollapseAnimationDirective }; if (false) { /** * @type {?} * @private */ CollapseAnimationDirective.prototype.firstStart; /** * @type {?} * @private */ CollapseAnimationDirective.prototype.isCollapsed; /** * @type {?} * @private */ CollapseAnimationDirective.prototype.lastIsCollapsed; /** * @type {?} * @private */ CollapseAnimationDirective.prototype.transitioning; /** * @type {?} * @private */ CollapseAnimationDirective.prototype.listener; /** @type {?} */ CollapseAnimationDirective.prototype.collapseAnimationDuration; /** @type {?} */ CollapseAnimationDirective.prototype.collapseAnimationTiming; /** @type {?} */ CollapseAnimationDirective.prototype.startEventEmitter; /** @type {?} */ CollapseAnimationDirective.prototype.doneEventEmitter; /** * @type {?} * @private */ CollapseAnimationDirective.prototype.elementRef; /** * @type {?} * @private */ CollapseAnimationDirective.prototype.ngZone; /** * @type {?} * @private */ CollapseAnimationDirective.prototype.renderer2; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9ucy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hZC1jdXN0b20tbGliLyIsInNvdXJjZXMiOlsibGliL2FuaW1hdGlvbnMvYW5pbWF0aW9ucy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDZSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFxQixNQUFNLEVBQy9GLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQzs7OztBQU92QjtJQTZCSTs7Ozs7T0FLRztJQUNILG9DQUNZLFVBQXNCLEVBQ3RCLE1BQWMsRUFDZCxTQUFvQjtRQUZwQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBbEN4QixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBTVYsOEJBQXlCLEdBQUcsR0FBRyxDQUFDO1FBZUosc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN4QyxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBYTdFLENBQUM7SUEzQkwsc0JBQXlDLG9EQUFZOzs7OztRQUFyRCxVQUFzRCxLQUFjO1lBQ2hFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUN4QyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkIsSUFBSSxLQUFLLEVBQUU7b0JBQ1AsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2lCQUNuQjtxQkFBTSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUU7b0JBQ3hCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztpQkFDckI7YUFDSjtRQUNMLENBQUM7OztPQUFBO0lBa0JE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cnQge1xyXG4gICAgQWZ0ZXJDb250ZW50SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsXHJcbiAgICBSZW5kZXJlcjJcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEFuaW1hdGlvbkV2ZW50IH0gZnJvbSAnLi9hbmltYXRpb25zLmludGVyZmFjZSc7XHJcblxyXG4vKlxyXG4gKlxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1tta0NvbGxhcHNlQW5pbWF0aW9uXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbGxhcHNlQW5pbWF0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgcHJpdmF0ZSBmaXJzdFN0YXJ0ID0gdHJ1ZTtcclxuICAgIHByaXZhdGUgaXNDb2xsYXBzZWQ6IGJvb2xlYW47XHJcbiAgICBwcml2YXRlIGxhc3RJc0NvbGxhcHNlZDogYm9vbGVhbjtcclxuICAgIHByaXZhdGUgdHJhbnNpdGlvbmluZzogYm9vbGVhbjtcclxuICAgIHByaXZhdGUgbGlzdGVuZXI6IEZ1bmN0aW9uO1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBjb2xsYXBzZUFuaW1hdGlvbkR1cmF0aW9uID0gMzUwO1xyXG4gICAgQElucHV0KCkgcHVibGljIGNvbGxhcHNlQW5pbWF0aW9uVGltaW5nOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoJ21rQ29sbGFwc2VBbmltYXRpb24nKSBwdWJsaWMgc2V0IF9pc0NvbGxhcHNlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMubGFzdElzQ29sbGFwc2VkID0gdGhpcy5pc0NvbGxhcHNlZDtcclxuICAgICAgICB0aGlzLmlzQ29sbGFwc2VkID0gdmFsdWU7XHJcbiAgICAgICAgaWYgKCF0aGlzLmZpcnN0U3RhcnQpIHtcclxuICAgICAgICAgICAgdGhpcy5lbWl0KCdzdGFydCcpO1xyXG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29sbGFwc2UoKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudW5Db2xsYXBzZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBPdXRwdXQoJ21rQ29sbGFwc2VBbmltYXRpb24uc3RhcnQnKSBwdWJsaWMgc3RhcnRFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCdta0NvbGxhcHNlQW5pbWF0aW9uLmRvbmUnKSBwdWJsaWMgZG9uZUV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAbWV0aG9kIGNvbnN0cnVjdG9yXHJcbiAgICAgKiBAcGFyYW0gZWxlbWVudFJlZiBbZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAcGFyYW0gbmdab25lICAgICBbZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAcGFyYW0gcmVuZGVyZXIyICBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxyXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXIyOiBSZW5kZXJlcjJcclxuICAgICkgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAbWV0aG9kIG5nT25Jbml0XHJcbiAgICAgKi9cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNlQW5pbWF0aW9uRHVyYXRpb24gJiYgdGhpcy5jb2xsYXBzZUFuaW1hdGlvbkR1cmF0aW9uICE9PSAzNTApIHtcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd0cmFuc2l0aW9uLWR1cmF0aW9uJywgYCR7dGhpcy5jb2xsYXBzZUFuaW1hdGlvbkR1cmF0aW9ufW1zYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNlQW5pbWF0aW9uVGltaW5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24nLCB0aGlzLmNvbGxhcHNlQW5pbWF0aW9uVGltaW5nKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAbWV0aG9kIG5nQWZ0ZXJDb250ZW50SW5pdFxyXG4gICAgICovXHJcbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5lbWl0KCdzdGFydCcpO1xyXG4gICAgICAgIGlmICh0aGlzLmlzQ29sbGFwc2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzcGxheScsICdub25lJyk7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIyLmFkZENsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY29sbGFwc2luZycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVtaXQoJ2RvbmUnKTtcclxuICAgICAgICB0aGlzLmZpcnN0U3RhcnQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbbmdPbkRlc3Ryb3kgZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIG5nT25EZXN0cm95XHJcbiAgICAgKiBAcmV0dXJuIFtkZXNjcmlwdGlvbl1cclxuICAgICAqL1xyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubGlzdGVuZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5saXN0ZW5lcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtzdWJzY3JpcHRpb25zIGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBzdWJzY3JpcHRpb25zXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9ucygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyMi5saXN0ZW4odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd0cmFuc2l0aW9uZW5kJywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzQ29sbGFwc2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlcjIucmVtb3ZlQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd1bi1jb2xsYXBzZScpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIyLnJlbW92ZUNsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY29sbGFwc2luZycpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc3BsYXknLCAnbm9uZScpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyMi5yZW1vdmVTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2hlaWdodCcpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdCgnZG9uZScpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvbmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFt1bkNvbGxhcHNlIGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCB1bkNvbGxhcHNlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdW5Db2xsYXBzZSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRyYW5zaXRpb25pbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIyLmFkZENsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndW4tY29sbGFwc2UnKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyMi5yZW1vdmVTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc3BsYXknKTtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2hlaWdodCcsIGAke3RoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodH1weGApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2NvbGxhcHNlIGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBjb2xsYXBzZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNvbGxhcHNlKCk6IHZvaWQge1xyXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy50cmFuc2l0aW9uaW5nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2hlaWdodCcsIGAke3RoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodH1weGApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlcjIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjb2xsYXBzaW5nJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy50cmFuc2l0aW9uaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnaGVpZ2h0JywgYDBweGApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGVtaXQocGhhc2VOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBldmVudDogQW5pbWF0aW9uRXZlbnQgPSB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQ6IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxyXG4gICAgICAgICAgICBmcm9tU3RhdGU6IHRoaXMubGFzdElzQ29sbGFwc2VkID09PSB1bmRlZmluZWQgPyAndm9pZCcgOiB0aGlzLmxhc3RJc0NvbGxhcHNlZCA/ICcxJyA6ICcwJyxcclxuICAgICAgICAgICAgcGhhc2VOYW1lOiBwaGFzZU5hbWUsXHJcbiAgICAgICAgICAgIHRvU3RhdGU6IHRoaXMuaXNDb2xsYXBzZWQgPT09IHVuZGVmaW5lZCA/ICd2b2lkJyA6IHRoaXMuaXNDb2xsYXBzZWQgPyAnMScgOiAnMCcsXHJcbiAgICAgICAgICAgIHRvdGFsVGltZTogdGhpcy5jb2xsYXBzZUFuaW1hdGlvbkR1cmF0aW9uLFxyXG4gICAgICAgICAgICB0cmlnZ2VyTmFtZTogJ21rQ29sbGFwc2VBbmltYXRpb24nXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKHBoYXNlTmFtZSA9PT0gJ2RvbmUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZG9uZUV2ZW50RW1pdHRlci5lbWl0KGV2ZW50KTtcclxuICAgICAgICB9IGVsc2UgaWYgKHBoYXNlTmFtZSA9PT0gJ3N0YXJ0Jykge1xyXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RXZlbnRFbWl0dGVyLmVtaXQoZXZlbnQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=