solar-ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
792 lines • 68.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { animate, state, style, transition, trigger } from '@angular/animations';
import { Component, ElementRef, EventEmitter, HostListener, Input, NgZone, Output, Renderer2, TemplateRef, ViewChild } from '@angular/core';
import { fromEvent, Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { InputBoolean } from '../core/util/convert';
import { NzTreeNode } from './nz-tree-node';
import { isCheckDisabled } from './nz-tree-util';
import { NzTreeService } from './nz-tree.service';
var NzTreeNodeComponent = /** @class */ (function () {
function NzTreeNodeComponent(nzTreeService, ngZone, renderer, elRef) {
this.nzTreeService = nzTreeService;
this.ngZone = ngZone;
this.renderer = renderer;
this.elRef = elRef;
this.nzHideUnMatched = false;
// Output
this.clickNode = new EventEmitter();
this.dblClick = new EventEmitter();
this.contextMenu = new EventEmitter();
this.clickCheckBox = new EventEmitter();
this.clickExpand = new EventEmitter();
this.nzDragStart = new EventEmitter();
this.nzDragEnter = new EventEmitter();
this.nzDragOver = new EventEmitter();
this.nzDragLeave = new EventEmitter();
this.nzDrop = new EventEmitter();
this.nzDragEnd = new EventEmitter();
// default var
this.prefixCls = 'ant-tree';
this.highlightKeys = [];
this.nzNodeClass = {};
this.nzNodeSwitcherClass = {};
this.nzNodeContentClass = {};
this.nzNodeContentIconClass = {};
this.nzNodeContentLoadingClass = {};
this.nzNodeChildrenClass = {};
/**
* drag var
*/
this.destory$ = new Subject();
this.dragPos = 2;
this.dragPosClass = {
'0': 'drag-over',
'1': 'drag-over-gap-bottom',
'-1': 'drag-over-gap-top'
};
this._searchValue = '';
this._nzExpandAll = false;
this._nzDraggable = false;
this.oldAPIIcon = true;
}
Object.defineProperty(NzTreeNodeComponent.prototype, "nzTreeNode", {
get: /**
* @return {?}
*/
function () {
return this._nzTreeNode;
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
// add to checked list & selected list
if (value.isChecked) {
this.nzTreeService.setCheckedNodeList(value);
}
// add select list
if (value.isSelected) {
this.nzTreeService.setSelectedNodeList(value, this.nzMultiple);
}
if (!value.isLeaf) {
this.nzTreeService.setExpandedNodeList(value);
}
this._nzTreeNode = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NzTreeNodeComponent.prototype, "nzDraggable", {
get: /**
* @return {?}
*/
function () {
return this._nzDraggable;
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this._nzDraggable = value;
this.handDragEvent();
},
enumerable: true,
configurable: true
});
Object.defineProperty(NzTreeNodeComponent.prototype, "nzDefaultExpandAll", {
get: /**
* @return {?}
*/
function () {
return this._nzExpandAll;
},
/**
* @deprecated use
* nzExpandAll instead
*/
set: /**
* @deprecated use
* nzExpandAll instead
* @param {?} value
* @return {?}
*/
function (value) {
this._nzExpandAll = value;
if (value && this.nzTreeNode && !this.nzTreeNode.isLeaf) {
this.nzTreeNode.setExpanded(true);
this.nzTreeService.setExpandedNodeList(this.nzTreeNode);
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(NzTreeNodeComponent.prototype, "nzExpandAll", {
get: /**
* @return {?}
*/
function () {
return this._nzExpandAll;
},
// default set
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this._nzExpandAll = value;
if (value && this.nzTreeNode && !this.nzTreeNode.isLeaf) {
this.nzTreeNode.setExpanded(true);
this.nzTreeService.setExpandedNodeList(this.nzTreeNode);
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(NzTreeNodeComponent.prototype, "nzSearchValue", {
get: /**
* @return {?}
*/
function () {
return this._searchValue;
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this.highlightKeys = [];
if (value && this.nzTreeNode.title.toLowerCase().includes(value.toLowerCase())) {
/** @type {?} */
var index = this.nzTreeNode.title.toLowerCase().indexOf(value.toLowerCase());
this.highlightKeys.push(this.nzTreeNode.title.slice(0, index));
this.highlightKeys.push(this.nzTreeNode.title.slice(index + value.length, this.nzTreeNode.title.length));
}
this._searchValue = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NzTreeNodeComponent.prototype, "nzIcon", {
get: /**
* @return {?}
*/
function () {
if (this.nzTreeNode && this.nzTreeNode.origin.icon) {
this.oldAPIIcon = this.nzTreeNode.origin.icon.indexOf('anticon') > -1;
}
return this.nzTreeNode && this.nzTreeNode.origin.icon;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NzTreeNodeComponent.prototype, "canDraggable", {
get: /**
* @return {?}
*/
function () {
return (this.nzDraggable && this.nzTreeNode && !this.nzTreeNode.isDisabled) ? true : null;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NzTreeNodeComponent.prototype, "isShowLineIcon", {
get: /**
* @return {?}
*/
function () {
return !this.nzTreeNode.isLeaf && this.nzShowLine;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NzTreeNodeComponent.prototype, "isShowSwitchIcon", {
get: /**
* @return {?}
*/
function () {
return !this.nzTreeNode.isLeaf && !this.nzShowLine;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NzTreeNodeComponent.prototype, "isSwitcherOpen", {
get: /**
* @return {?}
*/
function () {
return (this.nzTreeNode.isExpanded && !this.nzTreeNode.isLeaf);
},
enumerable: true,
configurable: true
});
Object.defineProperty(NzTreeNodeComponent.prototype, "isSwitcherClose", {
get: /**
* @return {?}
*/
function () {
return (!this.nzTreeNode.isExpanded && !this.nzTreeNode.isLeaf);
},
enumerable: true,
configurable: true
});
Object.defineProperty(NzTreeNodeComponent.prototype, "displayStyle", {
get: /**
* @return {?}
*/
function () {
// TODO
return (this.nzSearchValue && this.nzHideUnMatched && !this.nzTreeNode.isMatched && !this.nzTreeNode.isExpanded) ? 'none' : '';
},
enumerable: true,
configurable: true
});
/**
* reset node class
*/
/**
* reset node class
* @return {?}
*/
NzTreeNodeComponent.prototype.setClassMap = /**
* reset node class
* @return {?}
*/
function () {
var _a, _b, _c, _d, _e, _f;
this.nzNodeClass = (_a = {},
_a[this.prefixCls + "-treenode-disabled"] = this.nzTreeNode.isDisabled,
_a);
this.nzNodeSwitcherClass = (_b = {},
_b[this.prefixCls + "-switcher"] = true,
_b[this.prefixCls + "-switcher-noop"] = this.nzTreeNode.isLeaf,
_b);
this.nzNodeContentClass = (_c = {},
_c[this.prefixCls + "-node-content-wrapper"] = true,
_c);
this.nzNodeContentIconClass = (_d = {},
_d[this.prefixCls + "-iconEle"] = true,
_d[this.prefixCls + "-icon__customize"] = true,
_d);
this.nzNodeContentLoadingClass = (_e = {},
_e[this.prefixCls + "-iconEle"] = true,
_e);
this.nzNodeChildrenClass = (_f = {},
_f[this.prefixCls + "-child-tree"] = true,
_f[this.prefixCls + "-child-tree-open"] = true,
_f);
};
/**
* click node to select, 200ms to dbl click
*/
/**
* click node to select, 200ms to dbl click
* @param {?} event
* @return {?}
*/
NzTreeNodeComponent.prototype.nzClick = /**
* click node to select, 200ms to dbl click
* @param {?} event
* @return {?}
*/
function (event) {
event.preventDefault();
event.stopPropagation();
if (this.nzTreeNode.isSelectable) {
this.nzTreeService.setNodeActive(this.nzTreeNode, this.nzMultiple);
}
this.clickNode.emit(this.nzTreeService.formatEvent('click', this.nzTreeNode, event));
};
/**
* @param {?} event
* @return {?}
*/
NzTreeNodeComponent.prototype.nzDblClick = /**
* @param {?} event
* @return {?}
*/
function (event) {
event.preventDefault();
event.stopPropagation();
this.dblClick.emit(this.nzTreeService.formatEvent('dblclick', this.nzTreeNode, event));
};
/**
* @param event
*/
/**
* @param {?} event
* @return {?}
*/
NzTreeNodeComponent.prototype.nzContextMenu = /**
* @param {?} event
* @return {?}
*/
function (event) {
event.preventDefault();
event.stopPropagation();
this.contextMenu.emit(this.nzTreeService.formatEvent('contextmenu', this.nzTreeNode, event));
};
/**
* collapse node
* @param event
*/
/**
* collapse node
* @param {?} event
* @return {?}
*/
NzTreeNodeComponent.prototype._clickExpand = /**
* collapse node
* @param {?} event
* @return {?}
*/
function (event) {
event.preventDefault();
event.stopPropagation();
if (!this.nzTreeNode.isLoading && !this.nzTreeNode.isLeaf) {
// set async state
if (this.nzAsyncData && this.nzTreeNode.getChildren().length === 0 && !this.nzTreeNode.isExpanded) {
this.nzTreeNode.isLoading = true;
}
this.nzTreeNode.setExpanded(!this.nzTreeNode.isExpanded);
this.nzTreeService.setExpandedNodeList(this.nzTreeNode);
this.clickExpand.emit(this.nzTreeService.formatEvent('expand', this.nzTreeNode, event));
}
};
/**
* check node
* @param event
*/
/**
* check node
* @param {?} event
* @return {?}
*/
NzTreeNodeComponent.prototype._clickCheckBox = /**
* check node
* @param {?} event
* @return {?}
*/
function (event) {
event.preventDefault();
event.stopPropagation();
// return if node is disabled
if (isCheckDisabled(this.nzTreeNode)) {
return;
}
this.nzTreeNode.setChecked(!this.nzTreeNode.isChecked);
this.nzTreeService.setCheckedNodeList(this.nzTreeNode);
if (!this.nzCheckStrictly) {
this.nzTreeService.conduct(this.nzTreeNode);
}
this.clickCheckBox.emit(this.nzTreeService.formatEvent('check', this.nzTreeNode, event));
};
/**
* drag event
* @param e
*/
/**
* drag event
* @return {?}
*/
NzTreeNodeComponent.prototype.clearDragClass = /**
* drag event
* @return {?}
*/
function () {
var _this = this;
/** @type {?} */
var dragClass = ['drag-over-gap-top', 'drag-over-gap-bottom', 'drag-over'];
dragClass.forEach(function (e) {
_this.renderer.removeClass(_this.dragElement.nativeElement, e);
});
};
/**
* @param {?} e
* @return {?}
*/
NzTreeNodeComponent.prototype.handleDragStart = /**
* @param {?} e
* @return {?}
*/
function (e) {
e.stopPropagation();
try {
// ie throw error
// firefox-need-it
e.dataTransfer.setData('text/plain', '');
}
catch (error) {
// empty
}
this.nzTreeService.setSelectedNode(this.nzTreeNode);
this.nzTreeNode.setExpanded(false);
this.nzDragStart.emit(this.nzTreeService.formatEvent('dragstart', null, e));
};
/**
* @param {?} e
* @return {?}
*/
NzTreeNodeComponent.prototype.handleDragEnter = /**
* @param {?} e
* @return {?}
*/
function (e) {
var _this = this;
e.preventDefault();
e.stopPropagation();
// reset position
this.dragPos = 2;
this.ngZone.run(function () {
if ((_this.nzTreeNode !== _this.nzTreeService.getSelectedNode()) && !_this.nzTreeNode.isLeaf) {
_this.nzTreeNode.setExpanded(true);
}
});
this.nzDragEnter.emit(this.nzTreeService.formatEvent('dragenter', this.nzTreeNode, e));
};
/**
* @param {?} e
* @return {?}
*/
NzTreeNodeComponent.prototype.handleDragOver = /**
* @param {?} e
* @return {?}
*/
function (e) {
e.preventDefault();
e.stopPropagation();
/** @type {?} */
var dropPosition = this.nzTreeService.calcDropPosition(e);
if (this.dragPos !== dropPosition) {
this.clearDragClass();
this.dragPos = dropPosition;
// leaf node will pass
if (!(this.dragPos === 0 && this.nzTreeNode.isLeaf)) {
this.renderer.addClass(this.dragElement.nativeElement, this.dragPosClass[this.dragPos]);
}
}
this.nzDragOver.emit(this.nzTreeService.formatEvent('dragover', this.nzTreeNode, e));
};
/**
* @param {?} e
* @return {?}
*/
NzTreeNodeComponent.prototype.handleDragLeave = /**
* @param {?} e
* @return {?}
*/
function (e) {
var _this = this;
e.stopPropagation();
this.ngZone.run(function () {
_this.clearDragClass();
});
this.nzDragLeave.emit(this.nzTreeService.formatEvent('dragleave', this.nzTreeNode, e));
};
/**
* @param {?} e
* @return {?}
*/
NzTreeNodeComponent.prototype.handleDragDrop = /**
* @param {?} e
* @return {?}
*/
function (e) {
var _this = this;
e.preventDefault();
e.stopPropagation();
this.ngZone.run(function () {
_this.clearDragClass();
if (_this.nzTreeService.getSelectedNode() === _this.nzTreeNode) {
return;
}
else if (_this.dragPos === 0 && _this.nzTreeNode.isLeaf) {
return;
}
// pass if node is leafNo
if (_this.nzBeforeDrop) {
_this.nzBeforeDrop({
dragNode: _this.nzTreeService.getSelectedNode(),
node: _this.nzTreeNode,
pos: _this.dragPos
}).subscribe(function (canDrop) {
if (canDrop) {
_this.nzTreeService.dropAndApply(_this.nzTreeNode, _this.dragPos);
}
_this.nzDrop.emit(_this.nzTreeService.formatEvent('drop', _this.nzTreeNode, e));
_this.nzDragEnd.emit(_this.nzTreeService.formatEvent('dragend', _this.nzTreeNode, e));
});
}
else if (_this.nzTreeNode) {
_this.nzTreeService.dropAndApply(_this.nzTreeNode, _this.dragPos);
_this.nzDrop.emit(_this.nzTreeService.formatEvent('drop', _this.nzTreeNode, e));
}
});
};
/**
* @param {?} e
* @return {?}
*/
NzTreeNodeComponent.prototype.handleDragEnd = /**
* @param {?} e
* @return {?}
*/
function (e) {
var _this = this;
e.stopPropagation();
this.ngZone.run(function () {
// if user do not custom beforeDrop
if (!_this.nzBeforeDrop) {
_this.nzTreeService.setSelectedNode(null);
_this.nzDragEnd.emit(_this.nzTreeService.formatEvent('dragend', _this.nzTreeNode, e));
}
});
};
/**
* 监听拖拽事件
*/
/**
* 监听拖拽事件
* @return {?}
*/
NzTreeNodeComponent.prototype.handDragEvent = /**
* 监听拖拽事件
* @return {?}
*/
function () {
var _this = this;
this.ngZone.runOutsideAngular(function () {
if (_this.nzDraggable) {
_this.destory$ = new Subject();
fromEvent(_this.elRef.nativeElement, 'dragstart').pipe(takeUntil(_this.destory$)).subscribe(function (e) { return _this.handleDragStart(e); });
fromEvent(_this.elRef.nativeElement, 'dragenter').pipe(takeUntil(_this.destory$)).subscribe(function (e) { return _this.handleDragEnter(e); });
fromEvent(_this.elRef.nativeElement, 'dragover').pipe(takeUntil(_this.destory$)).subscribe(function (e) { return _this.handleDragOver(e); });
fromEvent(_this.elRef.nativeElement, 'dragleave').pipe(takeUntil(_this.destory$)).subscribe(function (e) { return _this.handleDragLeave(e); });
fromEvent(_this.elRef.nativeElement, 'drop').pipe(takeUntil(_this.destory$)).subscribe(function (e) { return _this.handleDragDrop(e); });
fromEvent(_this.elRef.nativeElement, 'dragend').pipe(takeUntil(_this.destory$)).subscribe(function (e) { return _this.handleDragEnd(e); });
}
else {
_this.destory$.next();
_this.destory$.complete();
}
});
};
/**
* @return {?}
*/
NzTreeNodeComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.setClassMap();
};
/**
* @param {?} changes
* @return {?}
*/
NzTreeNodeComponent.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
this.setClassMap();
};
/**
* @return {?}
*/
NzTreeNodeComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
this.destory$.next();
this.destory$.complete();
};
NzTreeNodeComponent.decorators = [
{ type: Component, args: [{
selector: 'nz-tree-node',
template: "<li\n #dragElement\n role=\"treeitem\"\n [style.display]=\"displayStyle\"\n [ngClass]=\"nzNodeClass\"\n [class.ant-tree-treenode-switcher-open]=\"isSwitcherOpen\"\n [class.ant-tree-treenode-switcher-close]=\"isSwitcherClose\"\n [class.ant-tree-treenode-checkbox-checked]=\"nzTreeNode.isChecked\"\n [class.ant-tree-treenode-checkbox-indeterminate]=\"nzTreeNode.isHalfChecked\"\n [class.ant-tree-treenode-selected]=\"nzTreeNode.isSelected\"\n [class.ant-tree-treenode-loading]=\"nzTreeNode.isLoading\">\n <ng-container *ngIf=\"nzShowExpand\">\n <span\n [ngClass]=\"nzNodeSwitcherClass\"\n [class.ant-tree-switcher_open]=\"isSwitcherOpen\"\n [class.ant-tree-switcher_close]=\"isSwitcherClose\"\n (click)=\"_clickExpand($event)\">\n <ng-container *ngIf=\"isShowSwitchIcon\">\n <i *ngIf=\"!nzTreeNode.isLoading\" nz-icon type=\"caret-down\" class=\"ant-tree-switcher-icon\"></i>\n <i *ngIf=\"nzTreeNode.isLoading\" nz-icon type=\"loading\" [spin]=\"true\" class=\"ant-tree-switcher-loading-icon\"></i>\n </ng-container>\n <ng-container *ngIf=\"nzShowLine\">\n <i *ngIf=\"isShowLineIcon\" nz-icon [type]=\"isSwitcherOpen ? 'minus-square' : 'plus-square'\" class=\"ant-tree-switcher-line-icon\"></i>\n <i *ngIf=\"!isShowLineIcon\" nz-icon type=\"file\" class=\"ant-tree-switcher-line-icon\"></i>\n </ng-container>\n </span>\n </ng-container>\n <ng-container *ngIf=\"nzCheckable\">\n <span\n class=\"ant-tree-checkbox\"\n [class.ant-tree-checkbox-checked]=\"nzTreeNode.isChecked\"\n [class.ant-tree-checkbox-indeterminate]=\"nzTreeNode.isHalfChecked\"\n [class.ant-tree-checkbox-disabled]=\"(nzTreeNode.isDisabled || nzTreeNode.isDisableCheckbox)\"\n (click)=\"_clickCheckBox($event)\">\n <span class=\"ant-tree-checkbox-inner\"></span>\n </span>\n </ng-container>\n <ng-container *ngIf=\"!nzTreeTemplate\">\n <span\n title=\"{{nzTreeNode.title}}\"\n [attr.draggable]=\"canDraggable\"\n [attr.aria-grabbed]=\"canDraggable\"\n [ngClass]=\"nzNodeContentClass\"\n [class.ant-tree-node-content-wrapper-open]=\"isSwitcherOpen\"\n [class.ant-tree-node-content-wrapper-close]=\"isSwitcherClose\"\n [class.ant-tree-node-selected]=\"nzTreeNode.isSelected\"\n [class.draggable]=\"canDraggable\">\n <span\n *ngIf=\"nzTreeNode.origin.icon\"\n [class.ant-tree-icon__open]=\"isSwitcherOpen\"\n [class.ant-tree-icon__close]=\"isSwitcherClose\"\n [class.ant-tree-icon_loading]=\"nzTreeNode.isLoading\"\n [ngClass]=\"nzNodeContentLoadingClass\">\n <span\n [ngClass]=\"nzNodeContentIconClass\">\n <i nz-icon *ngIf=\"nzIcon\" [type]=\"!oldAPIIcon && nzIcon\" [ngClass]=\"oldAPIIcon && nzIcon\"></i>\n </span>\n </span>\n <span class=\"ant-tree-title\">\n <ng-container *ngIf=\"nzTreeNode.isMatched\">\n <span>\n {{highlightKeys[0]}}<span class=\"font-highlight\">{{nzSearchValue}}</span>{{highlightKeys[1]}}\n </span>\n </ng-container>\n <ng-container *ngIf=\"!nzTreeNode.isMatched\">\n {{nzTreeNode.title}}\n </ng-container>\n </span>\n </span>\n </ng-container>\n <ng-template\n [ngTemplateOutlet]=\"nzTreeTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: nzTreeNode }\">\n </ng-template>\n\n <!-- *ngIf=\"nzTreeNode.isExpanded\" \u0443\u0431\u0438\u0440\u0430\u0435\u043C \u0442\u043E\u0440\u043C\u043E\u0437\u0430 \u043F\u0440\u0438 \u0438\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u043E\u043B\u044C\u0448\u0438\u0445 \u0434\u0435\u0440\u0435\u0432\u044C\u0435\u0432-->\n <ul\n role=\"group\"\n *ngIf=\"nzTreeNode.isExpanded\"\n [attr.data-expanded]=\"nzTreeNode.isExpanded\"\n [ngClass]=\"nzNodeChildrenClass\"\n [@nodeState]=\"nzTreeNode.isExpanded ? 'active' : 'inactive'\">\n <nz-tree-node\n *ngFor=\"let node of nzTreeNode.getChildren()\"\n [nzTreeNode]=\"node\"\n [nzShowLine]=\"nzShowLine\"\n [nzDraggable]=\"nzDraggable\"\n [nzCheckable]=\"nzCheckable\"\n [nzShowExpand]=\"nzShowExpand\"\n [nzAsyncData]=\"nzAsyncData\"\n [nzMultiple]=\"nzMultiple\"\n [nzExpandAll]=\"nzExpandAll\"\n [nzDefaultExpandAll]=\"nzDefaultExpandAll\"\n [nzSearchValue]=\"nzSearchValue\"\n [nzHideUnMatched]=\"nzHideUnMatched\"\n [nzBeforeDrop]=\"nzBeforeDrop\"\n [nzCheckStrictly]=\"nzCheckStrictly\"\n [nzTreeTemplate]=\"nzTreeTemplate\"\n (clickNode)=\"clickNode.emit($event)\"\n (dblClick)=\"dblClick.emit($event)\"\n (contextMenu)=\"contextMenu.emit($event)\"\n (clickExpand)=\"clickExpand.emit($event)\"\n (clickCheckBox)=\"clickCheckBox.emit($event)\"\n (nzDragStart)=\"nzDragStart.emit($event)\"\n (nzDragEnter)=\"nzDragEnter.emit($event)\"\n (nzDragOver)=\"nzDragOver.emit($event)\"\n (nzDragLeave)=\"nzDragLeave.emit($event)\"\n (nzDrop)=\"nzDrop.emit($event)\"\n (nzDragEnd)=\"nzDragEnd.emit($event)\">\n </nz-tree-node>\n </ul>\n</li>",
preserveWhitespaces: false,
animations: [
trigger('nodeState', [
state('inactive', style({
opacity: '0',
height: '0',
display: 'none'
})),
state('active', style({
opacity: '1',
height: '*'
})),
transition('inactive => active', animate('100ms ease-in')),
transition('active => inactive', animate('100ms ease-out'))
])
]
}] }
];
/** @nocollapse */
NzTreeNodeComponent.ctorParameters = function () { return [
{ type: NzTreeService },
{ type: NgZone },
{ type: Renderer2 },
{ type: ElementRef }
]; };
NzTreeNodeComponent.propDecorators = {
dragElement: [{ type: ViewChild, args: ['dragElement',] }],
nzShowLine: [{ type: Input }],
nzShowExpand: [{ type: Input }],
nzMultiple: [{ type: Input }],
nzCheckable: [{ type: Input }],
nzAsyncData: [{ type: Input }],
nzCheckStrictly: [{ type: Input }],
nzHideUnMatched: [{ type: Input }],
nzTreeTemplate: [{ type: Input }],
nzBeforeDrop: [{ type: Input }],
nzTreeNode: [{ type: Input }],
nzDraggable: [{ type: Input }],
nzDefaultExpandAll: [{ type: Input }],
nzExpandAll: [{ type: Input }],
nzSearchValue: [{ type: Input }],
clickNode: [{ type: Output }],
dblClick: [{ type: Output }],
contextMenu: [{ type: Output }],
clickCheckBox: [{ type: Output }],
clickExpand: [{ type: Output }],
nzDragStart: [{ type: Output }],
nzDragEnter: [{ type: Output }],
nzDragOver: [{ type: Output }],
nzDragLeave: [{ type: Output }],
nzDrop: [{ type: Output }],
nzDragEnd: [{ type: Output }],
nzClick: [{ type: HostListener, args: ['click', ['$event'],] }],
nzDblClick: [{ type: HostListener, args: ['dblclick', ['$event'],] }],
nzContextMenu: [{ type: HostListener, args: ['contextmenu', ['$event'],] }]
};
tslib_1.__decorate([
InputBoolean(),
tslib_1.__metadata("design:type", Boolean)
], NzTreeNodeComponent.prototype, "nzShowLine", void 0);
tslib_1.__decorate([
InputBoolean(),
tslib_1.__metadata("design:type", Boolean)
], NzTreeNodeComponent.prototype, "nzShowExpand", void 0);
tslib_1.__decorate([
InputBoolean(),
tslib_1.__metadata("design:type", Boolean)
], NzTreeNodeComponent.prototype, "nzMultiple", void 0);
tslib_1.__decorate([
InputBoolean(),
tslib_1.__metadata("design:type", Boolean)
], NzTreeNodeComponent.prototype, "nzCheckable", void 0);
tslib_1.__decorate([
InputBoolean(),
tslib_1.__metadata("design:type", Boolean)
], NzTreeNodeComponent.prototype, "nzAsyncData", void 0);
tslib_1.__decorate([
InputBoolean(),
tslib_1.__metadata("design:type", Boolean)
], NzTreeNodeComponent.prototype, "nzCheckStrictly", void 0);
tslib_1.__decorate([
InputBoolean(),
tslib_1.__metadata("design:type", Object)
], NzTreeNodeComponent.prototype, "nzHideUnMatched", void 0);
return NzTreeNodeComponent;
}());
export { NzTreeNodeComponent };
function NzTreeNodeComponent_tsickle_Closure_declarations() {
/** @type {?} */
NzTreeNodeComponent.prototype.dragElement;
/** @type {?} */
NzTreeNodeComponent.prototype.nzShowLine;
/** @type {?} */
NzTreeNodeComponent.prototype.nzShowExpand;
/** @type {?} */
NzTreeNodeComponent.prototype.nzMultiple;
/** @type {?} */
NzTreeNodeComponent.prototype.nzCheckable;
/** @type {?} */
NzTreeNodeComponent.prototype.nzAsyncData;
/** @type {?} */
NzTreeNodeComponent.prototype.nzCheckStrictly;
/** @type {?} */
NzTreeNodeComponent.prototype.nzHideUnMatched;
/** @type {?} */
NzTreeNodeComponent.prototype.nzTreeTemplate;
/** @type {?} */
NzTreeNodeComponent.prototype.nzBeforeDrop;
/** @type {?} */
NzTreeNodeComponent.prototype.clickNode;
/** @type {?} */
NzTreeNodeComponent.prototype.dblClick;
/** @type {?} */
NzTreeNodeComponent.prototype.contextMenu;
/** @type {?} */
NzTreeNodeComponent.prototype.clickCheckBox;
/** @type {?} */
NzTreeNodeComponent.prototype.clickExpand;
/** @type {?} */
NzTreeNodeComponent.prototype.nzDragStart;
/** @type {?} */
NzTreeNodeComponent.prototype.nzDragEnter;
/** @type {?} */
NzTreeNodeComponent.prototype.nzDragOver;
/** @type {?} */
NzTreeNodeComponent.prototype.nzDragLeave;
/** @type {?} */
NzTreeNodeComponent.prototype.nzDrop;
/** @type {?} */
NzTreeNodeComponent.prototype.nzDragEnd;
/** @type {?} */
NzTreeNodeComponent.prototype.prefixCls;
/** @type {?} */
NzTreeNodeComponent.prototype.highlightKeys;
/** @type {?} */
NzTreeNodeComponent.prototype.nzNodeClass;
/** @type {?} */
NzTreeNodeComponent.prototype.nzNodeSwitcherClass;
/** @type {?} */
NzTreeNodeComponent.prototype.nzNodeContentClass;
/** @type {?} */
NzTreeNodeComponent.prototype.nzNodeContentIconClass;
/** @type {?} */
NzTreeNodeComponent.prototype.nzNodeContentLoadingClass;
/** @type {?} */
NzTreeNodeComponent.prototype.nzNodeChildrenClass;
/**
* drag var
* @type {?}
*/
NzTreeNodeComponent.prototype.destory$;
/** @type {?} */
NzTreeNodeComponent.prototype.dragPos;
/** @type {?} */
NzTreeNodeComponent.prototype.dragPosClass;
/**
* default set
* @type {?}
*/
NzTreeNodeComponent.prototype._nzTreeNode;
/** @type {?} */
NzTreeNodeComponent.prototype._searchValue;
/** @type {?} */
NzTreeNodeComponent.prototype._nzExpandAll;
/** @type {?} */
NzTreeNodeComponent.prototype._nzDraggable;
/** @type {?} */
NzTreeNodeComponent.prototype.oldAPIIcon;
/** @type {?} */
NzTreeNodeComponent.prototype.nzTreeService;
/** @type {?} */
NzTreeNodeComponent.prototype.ngZone;
/** @type {?} */
NzTreeNodeComponent.prototype.renderer;
/** @type {?} */
NzTreeNodeComponent.prototype.elRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnotdHJlZS1ub2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3NvbGFyLW5nLXpvcnJvLWFudGQvIiwic291cmNlcyI6WyJ0cmVlL256LXRyZWUtbm9kZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFJTixNQUFNLEVBQ04sU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7SUFvWmhELDZCQUFvQixhQUE0QixFQUFVLE1BQWMsRUFBVSxRQUFtQixFQUFVLEtBQWlCO1FBQTVHLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFZOytCQXBYckYsS0FBSzs7eUJBa0ZPLElBQUksWUFBWSxFQUFFO3dCQUNuQixJQUFJLFlBQVksRUFBRTsyQkFDZixJQUFJLFlBQVksRUFBRTs2QkFDaEIsSUFBSSxZQUFZLEVBQUU7MkJB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QVUsQ0FBQyxvQkFBb0IsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzt5QkFDNUQsQ0FBQztxQkFDSDtpQkFDRjs7OztnQkFyQlEsYUFBYTtnQkFoQnBCLE1BQU07Z0JBS04sU0FBUztnQkFUVCxVQUFVOzs7OEJBNENULFNBQVMsU0FBQyxhQUFhOzZCQUV2QixLQUFLOytCQUNMLEtBQUs7NkJBQ0wsS0FBSzs4QkFDTCxLQUFLOzhCQUNMLEtBQUs7a0NBQ0wsS0FBSztrQ0FDTCxLQUFLO2lDQUNMLEtBQUs7K0JBQ0wsS0FBSzs2QkFFTCxLQUFLOzhCQW9CTCxLQUFLO3FDQWNMLEtBQUs7OEJBY0wsS0FBSztnQ0FhTCxLQUFLOzRCQWlCTCxNQUFNOzJCQUNOLE1BQU07OEJBQ04sTUFBTTtnQ0FDTixNQUFNOzhCQUNOLE1BQU07OEJBQ04sTUFBTTs4QkFDTixNQUFNOzZCQUNOLE1BQU07OEJBQ04sTUFBTTt5QkFDTixNQUFNOzRCQUNOLE1BQU07MEJBOEZOLFlBQVksU0FBQyxPQUFPLEVBQUUsQ0FBRSxRQUFRLENBQUU7NkJBVWxDLFlBQVksU0FBQyxVQUFVLEVBQUUsQ0FBRSxRQUFRLENBQUU7Z0NBVXJDLFlBQVksU0FBQyxhQUFhLEVBQUUsQ0FBRSxRQUFRLENBQUU7OztRQXBOL0IsWUFBWSxFQUFFOzs7O1FBQ2QsWUFBWSxFQUFFOzs7O1FBQ2QsWUFBWSxFQUFFOzs7O1FBQ2QsWUFBWSxFQUFFOzs7O1FBQ2QsWUFBWSxFQUFFOzs7O1FBQ2QsWUFBWSxFQUFFOzs7O1FBQ2QsWUFBWSxFQUFFOzs7OEJBdkQxQjs7U0E4Q2EsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4gfSBmcm9tICcuLi9jb3JlL3V0aWwvY29udmVydCc7XG5pbXBvcnQgeyBOekZvcm1hdEJlZm9yZURyb3BFdmVudCwgTnpGb3JtYXRFbWl0RXZlbnQgfSBmcm9tICcuLi90cmVlL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBOelRyZWVOb2RlIH0gZnJvbSAnLi9uei10cmVlLW5vZGUnO1xuaW1wb3J0IHsgaXNDaGVja0Rpc2FibGVkIH0gZnJvbSAnLi9uei10cmVlLXV0aWwnO1xuaW1wb3J0IHsgTnpUcmVlU2VydmljZSB9IGZyb20gJy4vbnotdHJlZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yICAgICAgICAgICA6ICduei10cmVlLW5vZGUnLFxuICB0ZW1wbGF0ZVVybCAgICAgICAgOiAnLi9uei10cmVlLW5vZGUuY29tcG9uZW50Lmh0bWwnLFxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgYW5pbWF0aW9ucyAgICAgICAgIDogW1xuICAgIHRyaWdnZXIoJ25vZGVTdGF0ZScsIFtcbiAgICAgIHN0YXRlKCdpbmFjdGl2ZScsIHN0eWxlKHtcbiAgICAgICAgb3BhY2l0eTogJzAnLFxuICAgICAgICBoZWlnaHQgOiAnMCcsXG4gICAgICAgIGRpc3BsYXk6ICdub25lJ1xuICAgICAgfSkpLFxuICAgICAgc3RhdGUoJ2FjdGl2ZScsIHN0eWxlKHtcbiAgICAgICAgb3BhY2l0eTogJzEnLFxuICAgICAgICBoZWlnaHQgOiAnKidcbiAgICAgIH0pKSxcbiAgICAgIHRyYW5zaXRpb24oJ2luYWN0aXZlID0+IGFjdGl2ZScsIGFuaW1hdGUoJzEwMG1zIGVhc2UtaW4nKSksXG4gICAgICB0cmFuc2l0aW9uKCdhY3RpdmUgPT4gaW5hY3RpdmUnLCBhbmltYXRlKCcxMDBtcyBlYXNlLW91dCcpKVxuICAgIF0pXG4gIF1cbn0pXG5cbmV4cG9ydCBjbGFzcyBOelRyZWVOb2RlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2RyYWdFbGVtZW50JykgZHJhZ0VsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56U2hvd0xpbmU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuelNob3dFeHBhbmQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuek11bHRpcGxlOiBib29sZWFuO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbnpDaGVja2FibGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuekFzeW5jRGF0YTogYm9vbGVhbjtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56Q2hlY2tTdHJpY3RseTogYm9vbGVhbjtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56SGlkZVVuTWF0Y2hlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBuelRyZWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dm9pZD47XG4gIEBJbnB1dCgpIG56QmVmb3JlRHJvcDogKGNvbmZpcm06IE56Rm9ybWF0QmVmb3JlRHJvcEV2ZW50KSA9PiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIEBJbnB1dCgpXG4gIHNldCBuelRyZWVOb2RlKHZhbHVlOiBOelRyZWVOb2RlKSB7XG4gICAgLy8gYWRkIHRvIGNoZWNrZWQgbGlzdCAmIHNlbGVjdGVkIGxpc3RcbiAgICBpZiAodmFsdWUuaXNDaGVja2VkKSB7XG4gICAgICB0aGlzLm56VHJlZVNlcnZpY2Uuc2V0Q2hlY2tlZE5vZGVMaXN0KHZhbHVlKTtcbiAgICB9XG4gICAgLy8gYWRkIHNlbGVjdCBsaXN0XG4gICAgaWYgKHZhbHVlLmlzU2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMubnpUcmVlU2VydmljZS5zZXRTZWxlY3RlZE5vZGVMaXN0KHZhbHVlLCB0aGlzLm56TXVsdGlwbGUpO1xuICAgIH1cbiAgICBpZiAoIXZhbHVlLmlzTGVhZikge1xuICAgICAgdGhpcy5uelRyZWVTZXJ2aWNlLnNldEV4cGFuZGVkTm9kZUxpc3QodmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLl9uelRyZWVOb2RlID0gdmFsdWU7XG4gIH1cblxuICBnZXQgbnpUcmVlTm9kZSgpOiBOelRyZWVOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5fbnpUcmVlTm9kZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBuekRyYWdnYWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX256RHJhZ2dhYmxlID0gdmFsdWU7XG4gICAgdGhpcy5oYW5kRHJhZ0V2ZW50KCk7XG4gIH1cblxuICBnZXQgbnpEcmFnZ2FibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX256RHJhZ2dhYmxlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZVxuICAgKiBuekV4cGFuZEFsbCBpbnN0ZWFkXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgbnpEZWZhdWx0RXhwYW5kQWxsKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fbnpFeHBhbmRBbGwgPSB2YWx1ZTtcbiAgICBpZiAodmFsdWUgJiYgdGhpcy5uelRyZWVOb2RlICYmICF0aGlzLm56VHJlZU5vZGUuaXNMZWFmKSB7XG4gICAgICB0aGlzLm56VHJlZU5vZGUuc2V0RXhwYW5kZWQodHJ1ZSk7XG4gICAgICB0aGlzLm56VHJlZVNlcnZpY2Uuc2V0RXhwYW5kZWROb2RlTGlzdCh0aGlzLm56VHJlZU5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBuekRlZmF1bHRFeHBhbmRBbGwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX256RXhwYW5kQWxsO1xuICB9XG5cbiAgLy8gZGVmYXVsdCBzZXRcbiAgQElucHV0KClcbiAgc2V0IG56RXhwYW5kQWxsKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fbnpFeHBhbmRBbGwgPSB2YWx1ZTtcbiAgICBpZiAodmFsdWUgJiYgdGhpcy5uelRyZWVOb2RlICYmICF0aGlzLm56VHJlZU5vZGUuaXNMZWFmKSB7XG4gICAgICB0aGlzLm56VHJlZU5vZGUuc2V0RXhwYW5kZWQodHJ1ZSk7XG4gICAgICB0aGlzLm56VHJlZVNlcnZpY2Uuc2V0RXhwYW5kZWROb2RlTGlzdCh0aGlzLm56VHJlZU5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBuekV4cGFuZEFsbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbnpFeHBhbmRBbGw7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgbnpTZWFyY2hWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5oaWdobGlnaHRLZXlzID0gW107XG4gICAgaWYgKHZhbHVlICYmIHRoaXMubnpUcmVlTm9kZS50aXRsZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHZhbHVlLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICAvLyBtYXRjaCB0aGUgc2VhcmNoIHZhbHVlXG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMubnpUcmVlTm9kZS50aXRsZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YodmFsdWUudG9Mb3dlckNhc2UoKSk7XG4gICAgICB0aGlzLmhpZ2hsaWdodEtleXMucHVzaCh0aGlzLm56VHJlZU5vZGUudGl0bGUuc2xpY2UoMCwgaW5kZXgpKTtcbiAgICAgIHRoaXMuaGlnaGxpZ2h0S2V5cy5wdXNoKHRoaXMubnpUcmVlTm9kZS50aXRsZS5zbGljZShpbmRleCArIHZhbHVlLmxlbmd0aCwgdGhpcy5uelRyZWVOb2RlLnRpdGxlLmxlbmd0aCkpO1xuICAgIH1cbiAgICB0aGlzLl9zZWFyY2hWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IG56U2VhcmNoVmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoVmFsdWU7XG4gIH1cblxuICAvLyBPdXRwdXRcbiAgQE91dHB1dCgpIGNsaWNrTm9kZTogRXZlbnRFbWl0dGVyPE56Rm9ybWF0RW1pdEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGRibENsaWNrOiBFdmVudEVtaXR0ZXI8TnpGb3JtYXRFbWl0RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY29udGV4dE1lbnU6IEV2ZW50RW1pdHRlcjxOekZvcm1hdEVtaXRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBjbGlja0NoZWNrQm94OiBFdmVudEVtaXR0ZXI8TnpGb3JtYXRFbWl0RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY2xpY2tFeHBhbmQ6IEV2ZW50RW1pdHRlcjxOekZvcm1hdEVtaXRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBuekRyYWdTdGFydDogRXZlbnRFbWl0dGVyPE56Rm9ybWF0RW1pdEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG56RHJhZ0VudGVyOiBFdmVudEVtaXR0ZXI8TnpGb3JtYXRFbWl0RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgbnpEcmFnT3ZlcjogRXZlbnRFbWl0dGVyPE56Rm9ybWF0RW1pdEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG56RHJhZ0xlYXZlOiBFdmVudEVtaXR0ZXI8TnpGb3JtYXRFbWl0RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgbnpEcm9wOiBFdmVudEVtaXR0ZXI8TnpGb3JtYXRFbWl0RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgbnpEcmFnRW5kOiBFdmVudEVtaXR0ZXI8TnpGb3JtYXRFbWl0RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8vIGRlZmF1bHQgdmFyXG4gIHByZWZpeENscyA9ICdhbnQtdHJlZSc7XG4gIGhpZ2hsaWdodEtleXMgPSBbXTtcbiAgbnpOb2RlQ2xhc3MgPSB7fTtcbiAgbnpOb2RlU3dpdGNoZXJDbGFzcyA9IHt9O1xuICBuek5vZGVDb250ZW50Q2xhc3MgPSB7fTtcbiAgbnpOb2RlQ29udGVudEljb25DbGFzcyA9IHt9O1xuICBuek5vZGVDb250ZW50TG9hZGluZ0NsYXNzID0ge307XG4gIG56Tm9kZUNoaWxkcmVuQ2xhc3MgPSB7fTtcblxuICAvKipcbiAgICogZHJhZyB2YXJcbiAgICovXG4gIGRlc3RvcnkkID0gbmV3IFN1YmplY3QoKTtcbiAgZHJhZ1BvcyA9IDI7XG4gIGRyYWdQb3NDbGFzczogb2JqZWN0ID0ge1xuICAgICcwJyA6ICdkcmFnLW92ZXInLFxuICAgICcxJyA6ICdkcmFnLW92ZXItZ2FwLWJvdHRvbScsXG4gICAgJy0xJzogJ2RyYWctb3Zlci1nYXAtdG9wJ1xuICB9O1xuXG4gIC8qKlxuICAgKiBkZWZhdWx0IHNldFxuICAgKi9cbiAgX256VHJlZU5vZGU6IE56VHJlZU5vZGU7XG4gIF9zZWFyY2hWYWx1ZSA9ICcnO1xuICBfbnpFeHBhbmRBbGwgPSBmYWxzZTtcbiAgX256RHJhZ2dhYmxlID0gZmFsc2U7XG4gIG9sZEFQSUljb24gPSB0cnVlO1xuXG4gIGdldCBuekljb24oKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5uelRyZWVOb2RlICYmIHRoaXMubnpUcmVlTm9kZS5vcmlnaW4uaWNvbikge1xuICAgICAgdGhpcy5vbGRBUElJY29uID0gdGhpcy5uelRyZWVOb2RlLm9yaWdpbi5pY29uLmluZGV4T2YoJ2FudGljb24nKSA+IC0xO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5uelRyZWVOb2RlICYmIHRoaXMubnpUcmVlTm9kZS5vcmlnaW4uaWNvbjtcbiAgfVxuXG4gIGdldCBjYW5EcmFnZ2FibGUoKTogYm9vbGVhbiB8IG51bGwge1xuICAgIHJldHVybiAodGhpcy5uekRyYWdnYWJsZSAmJiB0aGlzLm56VHJlZU5vZGUgJiYgIXRoaXMubnpUcmVlTm9kZS5pc0Rpc2FibGVkKSA/IHRydWUgOiBudWxsO1xuICB9XG5cbiAgZ2V0IGlzU2hvd0xpbmVJY29uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5uelRyZWVOb2RlLmlzTGVhZiAmJiB0aGlzLm56U2hvd0xpbmU7XG4gIH1cblxuICBnZXQgaXNTaG93U3dpdGNoSWNvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMubnpUcmVlTm9kZS5pc0xlYWYgJiYgIXRoaXMubnpTaG93TGluZTtcbiAgfVxuXG4gIGdldCBpc1N3aXRjaGVyT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMubnpUcmVlTm9kZS5pc0V4cGFuZGVkICYmICF0aGlzLm56VHJlZU5vZGUuaXNMZWFmKTtcbiAgfVxuXG4gIGdldCBpc1N3aXRjaGVyQ2xvc2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICghdGhpcy5uelRyZWVOb2RlLmlzRXhwYW5kZWQgJiYgIXRoaXMubnpUcmVlTm9kZS5pc0xlYWYpO1xuICB9XG5cbiAgZ2V0IGRpc3BsYXlTdHlsZSgpOiBzdHJpbmcge1xuICAgIC8vIFRPRE9cbiAgICByZXR1cm4gKHRoaXMubnpTZWFyY2hWYWx1ZSAmJiB0aGlzLm56SGlkZVVuTWF0Y2hlZCAmJiAhdGhpcy5uelRyZWVOb2RlLmlzTWF0Y2hlZCAmJiAhdGhpcy5uelRyZWVOb2RlLmlzRXhwYW5kZWQpID8gJ25vbmUnIDogJyc7XG4gIH1cblxuICAvKipcbiAgICogcmVzZXQgbm9kZSBjbGFzc1xuICAgKi9cbiAgc2V0Q2xhc3NNYXAoKTogdm9pZCB7XG4gICAgdGhpcy5uek5vZGVDbGFzcyA9IHtcbiAgICAgIFsgYCR7dGhpcy5wcmVmaXhDbHN9LXRyZWVub2RlLWRpc2FibGVkYCBdOiB0aGlzLm56VHJlZU5vZGUuaXNEaXNhYmxlZFxuICAgIH07XG4gICAgdGhpcy5uek5vZGVTd2l0Y2hlckNsYXNzID0ge1xuICAgICAgWyBgJHt0aGlzLnByZWZpeENsc30tc3dpdGNoZXJgIF0gICAgIDogdHJ1ZSxcbiAgICAgIFsgYCR7dGhpcy5wcmVmaXhDbHN9LXN3aXRjaGVyLW5vb3BgIF06IHRoaXMubnpUcmVlTm9kZS5pc0xlYWZcbiAgICB9O1xuICAgIHRoaXMubnpOb2RlQ29udGVudENsYXNzID0ge1xuICAgICAgWyBgJHt0aGlzLnByZWZpeENsc30tbm9kZS1jb250ZW50LXdyYXBwZXJgIF06IHRydWVcbiAgICB9O1xuICAgIHRoaXMubnpOb2RlQ29udGVudEljb25DbGFzcyA9IHtcbiAgICAgIFsgYCR7dGhpcy5wcmVmaXhDbHN9LWljb25FbGVgIF0gICAgICAgIDogdHJ1ZSxcbiAgICAgIFsgYCR7dGhpcy5wcmVmaXhDbHN9LWljb25fX2N1c3RvbWl6ZWAgXTogdHJ1ZVxuICAgIH07XG4gICAgdGhpcy5uek5vZGVDb250ZW50TG9hZGluZ0NsYXNzID0ge1xuICAgICAgWyBgJHt0aGlzLnByZWZpeENsc30taWNvbkVsZWAgXTogdHJ1ZVxuICAgIH07XG4gICAgdGhpcy5uek5vZGVDaGlsZHJlbkNsYXNzID0ge1xuICAgICAgWyBgJHt0aGlzLnByZWZpeENsc30tY2hpbGQtdHJlZWAgXSAgICAgOiB0cnVlLFxuICAgICAgWyBgJHt0aGlzLnByZWZpeENsc30tY2hpbGQtdHJlZS1vcGVuYCBdOiB0cnVlXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjbGljayBub2RlIHRvIHNlbGVjdCwgMjAwbXMgdG8gZGJsIGNsaWNrXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsgJyRldmVudCcgXSlcbiAgbnpDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHRoaXMubnpUcmVlTm9kZS5pc1NlbGVjdGFibGUpIHtcbiAgICAgIHRoaXMubnpUcmVlU2VydmljZS5zZXROb2RlQWN0aXZlKHRoaXMubnpUcmVlTm9kZSwgdGhpcy5uek11bHRpcGxlKTtcbiAgICB9XG4gICAgdGhpcy5jbGlja05vZGUuZW1pdCh0aGlzLm56VHJlZVNlcnZpY2UuZm9ybWF0RXZlbnQoJ2NsaWNrJywgdGhpcy5uelRyZWVOb2RlLCBldmVudCkpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZGJsY2xpY2snLCBbICckZXZlbnQnIF0pXG4gIG56RGJsQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuZGJsQ2xpY2suZW1pdCh0aGlzLm56VHJlZVNlcnZpY2UuZm9ybWF0RXZlbnQoJ2RibGNsaWNrJywgdGhpcy5uelRyZWVOb2RlLCBldmVudCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBldmVudFxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcignY29udGV4dG1lbnUnLCBbICckZXZlbnQnIF0pXG4gIG56Q29udGV4dE1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuY29udGV4dE1lbnUuZW1pdCh0aGlzLm56VHJlZVNlcnZpY2UuZm9ybWF0RXZlbnQoJ2NvbnRleHRtZW51JywgdGhpcy5uelRyZWVOb2RlLCBldmVudCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGNvbGxhcHNlIG5vZGVcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqL1xuICBfY2xpY2tFeHBhbmQoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICghdGhpcy5uelRyZWVOb2RlLmlzTG9hZGluZyAmJiAhdGhpcy5uelRyZWVOb2RlLmlzTGVhZikge1xuICAgICAgLy8gc2V0IGFzeW5jIHN0YXRlXG4gICAgICBpZiAodGhpcy5uekFzeW5jRGF0YSAmJiB0aGlzLm56VHJlZU5vZGUuZ2V0Q2hpbGRyZW4oKS5sZW5ndGggPT09IDAgJiYgIXRoaXMubnpUcmVlTm9kZS5pc0V4cGFuZGVkKSB7XG4gICAgICAgIHRoaXMubnpUcmVlTm9kZS5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgfVxuICAgICAgdGhpcy5uelRyZWVOb2RlLnNldEV4cGFuZGVkKCF0aGlzLm56VHJlZU5vZGUuaXNFeHBhbmRlZCk7XG4gICAgICB0aGlzLm56VHJlZVNlcnZpY2Uuc2V0RXhwYW5kZWROb2RlTGlzdCh0aGlzLm56VHJlZU5vZGUpO1xuICAgICAgdGhpcy5jbGlja0V4cGFuZC5lbWl0KHRoaXMubnpUcmVlU2VydmljZS5mb3JtYXRFdmVudCgnZXhwYW5kJywgdGhpcy5uelRyZWVOb2RlLCBldmVudCkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBjaGVjayBub2RlXG4gICAqIEBwYXJhbSBldmVudFxuICAgKi9cbiAgX2NsaWNrQ2hlY2tCb3goZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIC8vIHJldHVybiBpZiBub2RlIGlzIGRpc2FibGVkXG4gICAgaWYgKGlzQ2hlY2tEaXNhYmxlZCh0aGlzLm56VHJlZU5vZGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubnpUcmVlTm9kZS5zZXRDaGVja2VkKCF0aGlzLm56VHJlZU5vZGUuaXNDaGVja2VkKTtcbiAgICB0aGlzLm56VHJlZVNlcnZpY2Uuc2V0Q2hlY2tlZE5vZGVMaXN0KHRoaXMubnpUcmVlTm9kZSk7XG4gICAgaWYgKCF0aGlzLm56Q2hlY2tTdHJpY3RseSkge1xuICAgICAgdGhpcy5uelRyZWVTZXJ2aWNlLmNvbmR1Y3QodGhpcy5uelRyZWVOb2RlKTtcbiAgICB9XG4gICAgdGhpcy5jbGlja0NoZWNrQm94LmVtaXQodGhpcy5uelRyZWVTZXJ2aWNlLmZvcm1hdEV2ZW50KCdjaGVjaycsIHRoaXMubnpUcmVlTm9kZSwgZXZlbnQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBkcmFnIGV2ZW50XG4gICAqIEBwYXJhbSBlXG4gICAqL1xuICBjbGVhckRyYWdDbGFzcygpOiB2b2lkIHtcbiAgICBjb25zdCBkcmFnQ2xhc3MgPSBbICdkcmFnLW92ZXItZ2FwLXRvcCcsICdkcmFnLW92ZXItZ2FwLWJvdHRvbScsICdkcmFnLW92ZXInIF07XG4gICAgZHJhZ0NsYXNzLmZvckVhY2goZSA9PiB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZHJhZ0VsZW1lbnQubmF0aXZlRWxlbWVudCwgZSk7XG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVEcmFnU3RhcnQoZTogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0cnkge1xuICAgICAgLy8gaWUgdGhyb3cgZXJyb3JcbiAgICAgIC8vIGZpcmVmb3gtbmVlZC1pdFxuICAgICAgZS5kYXRhVHJhbnNmZXIuc2V0RGF0YSgndGV4dC9wbGFpbicsICcnKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gZW1wdHlcbiAgICB9XG4gICAgdGhpcy5uelRyZWVTZXJ2aWNlLnNldFNlbGVjdGVkTm9kZSh0aGlzLm56VHJlZU5vZGUpO1xuICAgIHRoaXMubnpUcmVlTm9kZS5zZXRFeHBhbmRlZChmYWxzZSk7XG4gICAgdGhpcy5uekRyYWdTdGFydC5lbWl0KHRoaXMubnpUcmVlU2VydmljZS5mb3JtYXRFdmVudCgnZHJhZ3N0YXJ0JywgbnVsbCwgZSkpO1xuICB9XG5cbiAgaGFuZGxlRHJhZ0VudGVyKGU6IERyYWdFdmVudCk6IHZvaWQge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIC8vIHJlc2V0IHBvc2l0aW9uXG4gICAgdGhpcy5kcmFnUG9zID0gMjtcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgaWYgKCh0aGlzLm56VHJlZU5vZGUgIT09IHRoaXMubnpUcmVlU2VydmljZS5nZXRTZWxlY3RlZE5vZGUoKSkgJiYgIXRoaXMubnpUcmVlTm9kZS5pc0xlYWYpIHtcbiAgICAgICAgdGhpcy5uelRyZWVOb2RlLnNldEV4cGFuZGVkKHRydWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMubnpEcmFnRW50ZXIuZW1pdCh0aGlzLm56VHJlZVNlcnZpY2UuZm9ybWF0RXZlbnQoJ2RyYWdlbnRlcicsIHRoaXMubnpUcmVlTm9kZSwgZSkpO1xuICB9XG5cbiAgaGFuZGxlRHJhZ092ZXIoZTogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgZHJvcFBvc2l0aW9uID0gdGhpcy5uelRyZWVTZXJ2aWNlLmNhbGNEcm9wUG9zaXRpb24oZSk7XG4gICAgaWYgKHRoaXMuZHJhZ1BvcyAhPT0gZHJvcFBvc2l0aW9uKSB7XG4gICAgICB0aGlzLmNsZWFyRHJhZ0NsYXNzKCk7XG4gICAgICB0aGlzLmRyYWdQb3MgPSBkcm9wUG9zaXRpb247XG4gICAgICAvLyBsZWFmIG5vZGUgd2lsbCBwYXNzXG4gICAgICBpZiAoISh0aGlzLmRyYWdQb3MgPT09IDAgJiYgdGhpcy5uelRyZWVOb2RlLmlzTGVhZikpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmRyYWdFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIHRoaXMuZHJhZ1Bvc0NsYXNzWyB0aGlzLmRyYWdQb3MgXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubnpEcmFnT3Zlci5lbWl0KHRoaXMubnpUcmVlU2VydmljZS5mb3JtYXRFdmVudCgnZHJhZ292ZXInLCB0aGlzLm56VHJlZU5vZGUsIGUpKTtcbiAgfVxuXG4gIGhhbmRsZURyYWdMZWF2ZShlOiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLmNsZWFyRHJhZ0NsYXNzKCk7XG4gICAgfSk7XG4gICAgdGhpcy5uekRyYWdMZWF2ZS5lbWl0KHRoaXMubnpUcmVlU2VydmljZS5mb3JtYXRFdmVudCgnZHJhZ2xlYXZlJywgdGhpcy5uelRyZWVOb2RlLCBlKSk7XG4gIH1cblxuICBoYW5kbGVEcmFnRHJvcChlOiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5jbGVhckRyYWdDbGFzcygpO1xuICAgICAgaWYgKHRoaXMubnpUcmVlU2VydmljZS5nZXRTZWxlY3RlZE5vZGUoKSA9PT0gdGhpcy5uelRyZWVOb2RlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5kcmFnUG9zID09PSAwICYmIHRoaXMubnpUcmVlTm9kZS5pc0xlYWYpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgLy8gcGFzcyBpZiBub2RlIGlzIGxlYWZOb1xuICAgICAgaWYgKHRoaXMubnpCZWZvcmVEcm9wKSB7XG4gICAgICAgIHRoaXMubnpCZWZvcmVEcm9wKHtcbiAgICAgICAgICBkcmFnTm9kZTogdGhpcy5uelRyZWVTZXJ2aWNlLmdldFNlbGVjdGVkTm9kZSgpLFxuICAgICAgICAgIG5vZGUgICAgOiB0aGlzLm56VHJlZU5vZGUsXG4gICAgICAgICAgcG9zICAgICA6IHRoaXMuZHJhZ1Bvc1xuICAgICAgICB9KS5zdWJzY3JpYmUoKGNhbkRyb3A6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICBpZiAoY2FuRHJvcCkge1xuICAgICAgICAgICAgdGhpcy5uelRyZWVTZXJ2aWNlLmRyb3BBbmRBcHBseSh0aGlzLm56VHJlZU5vZGUsIHRoaXMuZHJhZ1Bvcyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubnpEcm9wLmVtaXQodGhpcy5uelRyZWVTZXJ2aWNlLmZvcm1hdEV2ZW50KCdkcm9wJywgdGhpcy5uelRyZWVOb2RlLCBlKSk7XG4gICAgICAgICAgdGhpcy5uekRyYWdFbmQuZW1pdCh0aGlzLm56VHJlZVNlcnZpY2UuZm9ybWF0RXZlbnQoJ2RyYWdlbmQnLCB0aGlzLm56VHJlZU5vZGUsIGUpKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubnpUcmVlTm9kZSkge1xuICAgICAgICB0aGlzLm56VHJlZVNlcnZpY2UuZHJvcEFuZEFwcGx5KHRoaXMubnpUcmVlTm9kZSwgdGhpcy5kcmFnUG9zKTtcbiAgICAgICAgdGhpcy5uekRyb3AuZW1pdCh0aGlzLm56VHJlZVNlcnZpY2UuZm9ybWF0RXZlbnQoJ2Ryb3AnLCB0aGlzLm56VHJlZU5vZGUsIGUpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZURyYWdFbmQoZTogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgLy8gaWYgdXNlciBkbyBub3QgY3VzdG9tIGJlZm9yZURyb3BcbiAgICAgIGlmICghdGhpcy5uekJlZm9yZURyb3ApIHtcbiAgICAgICAgdGhpcy5uelRyZWVTZXJ2aWNlLnNldFNlbGVjdGVkTm9kZShudWxsKTtcbiAgICAgICAgdGhpcy5uekRyYWdFbmQuZW1pdCh0aGlzLm56VHJlZVNlcnZpY2UuZm9ybWF0RXZlbnQoJ2RyYWdlbmQnLCB0aGlzLm56VHJlZU5vZGUsIGUpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiDnm5HlkKzmi5bmi73kuovku7ZcbiAgICovXG4gIGhhbmREcmFnRXZlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMubnpEcmFnZ2FibGUpIHtcbiAgICAgICAgdGhpcy5kZXN0b3J5JCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgICAgIGZyb21FdmVudCh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsICdkcmFnc3RhcnQnKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3RvcnkkKSkuc3Vic2NyaWJlKChlOiBEcmFnRXZlbnQpID0+IHRoaXMuaGFuZGxlRHJhZ1N0YXJ0KGUpKTtcbiAgICAgICAgZnJvbUV2ZW50KHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgJ2RyYWdlbnRlcicpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdG9yeSQpKS5zdWJzY3JpYmUoKGU6IERyYWdFdmVudCkgPT4gdGhpcy5oYW5kbGVEcmFnRW50ZXIoZSkpO1xuICAgICAgICBmcm9tRXZlbnQodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCAnZHJhZ292ZXInKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3RvcnkkKSkuc3Vic2NyaWJlKChlOiBEcmFnRXZlbnQpID0+IHRoaXMuaGFuZGxlRHJhZ092ZXIoZSkpO1xuICAgICAgICBmcm9tRXZlbnQodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCAnZHJhZ2xlYXZlJykucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0b3J5JCkpLnN1YnNjcmliZSgoZTogRHJhZ0V2ZW50KSA9PiB0aGlzLmhhbmRsZURyYWdMZWF2ZShlKSk7XG4gICAgICAgIGZyb21FdmVudCh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsICdkcm9wJykucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0b3J5JCkpLnN1YnNjcmliZSgoZTogRHJhZ0V2ZW50KSA9PiB0aGlzLmhhbmRsZURyYWdEcm9wKGUpKTtcbiAgICAgICAgZnJvbUV2ZW50KHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgJ2RyYWdlbmQnKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3RvcnkkKSkuc3Vic2NyaWJlKChlOiBEcmFnRXZlbnQpID0+IHRoaXMuaGFuZGxlRHJhZ0VuZChlKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRlc3RvcnkkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0b3J5JC5jb21wbGV0ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuelRyZWVTZXJ2aWNlOiBOelRyZWVTZXJ2aWNlLCBwcml2YXRlIG5nWm9uZTogTmdab25lLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYpIHtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0Q2xhc3NNYXAoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IHsgWyBwcm9wZXJ0eU5hbWU6IHN0cmluZyBdOiBTaW1wbGVDaGFuZ2UgfSk6IHZvaWQge1xuICAgIHRoaXMuc2V0Q2xhc3NNYXAoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdG9yeSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdG9yeSQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19