@kre-form/ant
Version:
222 lines • 21.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, Input, Output, EventEmitter, ViewChild } from "@angular/core";
import * as _ from "lodash";
export class KreFormPrivateTree {
constructor() {
//是否显示Tag
this.tag = true;
//单选?多选
this.selectType = "single";
this.expandAll = true;
//选中节点
this.selectData = [];
//树数据
this.data = [];
this.treeChangeEvent = new EventEmitter();
this.selectedKey = [];
//选择节点
this.selectedNode = [];
this.skeletonStatus = 0;
}
/**
* @return {?}
*/
ngOnInit() { }
/**
* @param {?} changes
* @return {?}
*/
ngOnChanges(changes) {
if (changes.selectData) {
this.treeChecked(this.selectData);
}
if (changes.data) {
//setTimeout(() => {
this.skeletonStatus = 1;
//}, 100);
}
}
/**
* @param {?} event
* @return {?}
*/
nzClick(event) {
if (this.selectType != "multiple") {
this.selectData.forEach((/**
* @param {?} item
* @param {?} index
* @param {?} object
* @return {?}
*/
(item, index, object) => {
if (item != undefined &&
item != null &&
item.value != undefined &&
item.value != null &&
event != undefined &&
event != null &&
event.node != undefined &&
event.node != null &&
event.node.key != undefined &&
event.node.key != null &&
event.node.title != undefined &&
event.node.title != null &&
item.value !== event.node.key) {
object.splice(index, 1);
}
}));
if (this.selectData.length < 1) {
if (event != undefined &&
event != null &&
event.node != undefined &&
event.node != null &&
event.node.key != undefined &&
event.node.key != null &&
event.node.title != undefined &&
event.node.title != null) {
this.selectData.push({
label: event.node.title,
value: event.node.key
});
}
}
this.treeChangeEvent.emit({ checkData: this.selectData });
}
}
//点击复选框触发
/**
* @param {?} event
* @return {?}
*/
nzCheck(event) {
if (event != undefined &&
event != null &&
event.keys != undefined &&
event.keys != null &&
event.node != undefined &&
event.node != null &&
event.node.key != undefined &&
event.node.key != null &&
event.node.title != undefined &&
event.node.title != null) {
/** @type {?} */
let isAdd = event.keys.some((/**
* @param {?} key
* @return {?}
*/
(key) => {
return key === _.get(event, "node.key");
}));
if (isAdd == true) {
this.selectData.push({
label: event.node.title,
value: event.node.key
});
}
else {
this.selectData.forEach((/**
* @param {?} item
* @param {?} index
* @param {?} object
* @return {?}
*/
(item, index, object) => {
if (item.value === _.get(event, "node.key")) {
object.splice(index, 1);
}
}));
}
}
this.treeChecked(this.selectData);
this.treeChangeEvent.emit({ checkData: this.selectData });
}
//重置选中节点
/**
* @param {?} items
* @return {?}
*/
treeChecked(items) {
if (items != null && items.length > 0) {
this.selectedKey = items.map((/**
* @param {?} item
* @return {?}
*/
(item) => {
return item.value;
}));
}
else {
this.selectedKey = [];
}
}
//删除选中节点
/**
* @param {?} node
* @return {?}
*/
selectClearById(node) {
this.selectData.forEach((/**
* @param {?} item
* @param {?} index
* @param {?} object
* @return {?}
*/
(item, index, object) => {
if (item.value === node) {
object.splice(index, 1);
}
}));
this.treeChecked(this.selectData);
this.treeChangeEvent.emit({ checkData: this.selectData, delete: node });
}
/**
* @return {?}
*/
selectAllClear() {
//this.selectData =[];
}
}
KreFormPrivateTree.decorators = [
{ type: Component, args: [{
selector: "kreform-private-tree",
template: " \n <ul class=\"component-tree\">\n <li class=\"tree-item kreform-scrollbar \">\n \n <nz-tree #nzTreeComponent [nzData]=\"data\" (nzClick)=\"nzClick($event)\" (nzCheckBoxChange)=\"nzCheck($event)\" [nzCheckable]=\"selectType==='multiple'\" [nzSelectedKeys]=\"selectedKey\" [nzCheckedKeys]=\"selectedKey\" [nzExpandAll]=\"expandAll\" [nzCheckStrictly]=\"true\">\n </nz-tree>\n </li>\n <li class=\"tree-tag kreform-scrollbar \" *ngIf=\"tag\">\n <div class=\"tag-header\">\n <label>\u5DF2\u9009<span>{{selectData.length}}</span>\u4EBA</label>\n <label (click)=\"selectAllClear()\">\u6E05\u7A7A</label>\n </div>\n <div class=\"tag-content\">\n <ng-container *ngFor=\"let item of selectData\">\n <nz-tag nzMode=\"closeable\" (nzOnClose)=\"selectClearById(item.value)\">{{item.label}}</nz-tag>\n </ng-container>\n </div>\n </li>\n </ul> ",
styles: [":host ::ng-deep .kreform-scrollbar{scrollbar-color:transparent;overflow-y:overlay}:host ::ng-deep .kreform-scrollbar::-webkit-scrollbar{width:6px;height:6px}:host ::ng-deep .kreform-scrollbar::-webkit-scrollbar-track{box-shadow:inset 0 0 6px transparent}:host ::ng-deep .kreform-scrollbar::-webkit-scrollbar-thumb{background-color:#999;outline:#333 solid 1px;border-radius:6px}:host ::ng-deep kre-skeleton{height:100%}:host ::ng-deep .builder-content{width:100%;padding:0 0 0 12px}:host ::ng-deep .builder-content .content{width:50%;float:left;margin:0 0 15px;min-height:45px}:host ::ng-deep .builder-content .content .label{width:100%}:host ::ng-deep .builder-content .content .control{width:100%;padding:0 15px 0 0}:host ::ng-deep .builder-content .content .control .ant-input-number{width:100%!important}:host ::ng-deep .builder-content .textarea{width:100%}:host ::ng-deep .component-tree{list-style:none;padding:0;margin:0;display:flex;flex-direction:row;height:100%}:host ::ng-deep .component-tree .ant-tree-node-content-wrapper{font-size:12px!important;display:inline-block!important;padding:0 5px 0 0!important;min-width:200px!important}:host ::ng-deep .component-tree .ant-tree-node-selected{background-color:#f6f7fb!important}:host ::ng-deep .component-tree .tree-item{flex:1;border:0 solid #f6f7fb;padding:8px 5px 5px 10px;overflow-y:auto}:host ::ng-deep .component-tree .tree-tag{overflow-y:auto;width:330px;background-color:#f6f7fb;padding:15px}:host ::ng-deep .component-tree .tree-tag .tag-header{font-size:12px;font-weight:700;color:#777d93;padding:0 0 20px}:host ::ng-deep .component-tree .tree-tag .tag-header span{display:inline-block;padding:0 3px;color:#ff986b;font-weight:400}:host ::ng-deep .component-tree .tree-tag .tag-header label:nth-last-child(1){float:right;font-weight:400;color:#6375da;cursor:pointer}:host ::ng-deep .component-tree .tree-tag .tag-content .ant-tag{color:#6375da;border:0;padding:3px 8px;margin:0 10px 10px 0;background:#fff}:host ::ng-deep .component-tree .tree-tag .tag-content .ant-tag i{color:#6375da;font-weight:700}"]
}] }
];
/** @nocollapse */
KreFormPrivateTree.ctorParameters = () => [];
KreFormPrivateTree.propDecorators = {
tag: [{ type: Input }],
selectType: [{ type: Input }],
expandAll: [{ type: Input }],
selectData: [{ type: Input }],
data: [{ type: Input }],
treeChangeEvent: [{ type: Output }],
nzTreeComponent: [{ type: ViewChild, args: ["nzTreeComponent", { static: false },] }]
};
if (false) {
/** @type {?} */
KreFormPrivateTree.prototype.tag;
/** @type {?} */
KreFormPrivateTree.prototype.selectType;
/** @type {?} */
KreFormPrivateTree.prototype.expandAll;
/** @type {?} */
KreFormPrivateTree.prototype.selectData;
/** @type {?} */
KreFormPrivateTree.prototype.data;
/** @type {?} */
KreFormPrivateTree.prototype.treeChangeEvent;
/** @type {?} */
KreFormPrivateTree.prototype.nzTreeComponent;
/** @type {?} */
KreFormPrivateTree.prototype.selectedKey;
/** @type {?} */
KreFormPrivateTree.prototype.selectedNode;
/** @type {?} */
KreFormPrivateTree.prototype.skeletonStatus;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGtyZS1mb3JtL2FudC8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3ByaXZhdGUvdHJlZS9pbmRleC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxFQUdWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBYzVCLE1BQU0sT0FBTyxrQkFBa0I7SUEwQjdCOztRQXhCUyxRQUFHLEdBQVksSUFBSSxDQUFDOztRQUdwQixlQUFVLEdBQTBCLFFBQVEsQ0FBQztRQUU3QyxjQUFTLEdBQVcsSUFBSSxDQUFDOztRQUd6QixlQUFVLEdBQW1CLEVBQUUsQ0FBQzs7UUFHaEMsU0FBSSxHQUFnQixFQUFFLENBQUM7UUFFdEIsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBSzNELGdCQUFXLEdBQVUsRUFBRSxDQUFDOztRQUd4QixpQkFBWSxHQUFvQixFQUFFLENBQUM7UUFFbkMsbUJBQWMsR0FBVyxDQUFDLENBQUM7SUFDWixDQUFDOzs7O0lBRWhCLFFBQVEsS0FBSSxDQUFDOzs7OztJQUViLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDbkM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDaEIsb0JBQW9CO1lBQ3BCLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDO1lBQ3hCLFVBQVU7U0FDWDtJQUNILENBQUM7Ozs7O0lBRUQsT0FBTyxDQUFDLEtBQXdCO1FBQzlCLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxVQUFVLEVBQUU7WUFDakMsSUFBSSxDQUFD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LEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN6QjtRQUNILENBQUMsRUFBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxRSxDQUFDOzs7O0lBRUQsY0FBYztRQUNaLHNCQUFzQjtJQUN4QixDQUFDOzs7WUFuSkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxzQkFBc0I7Z0JBQ2hDLDgvQkFBcUM7O2FBRXRDOzs7OztrQkFHRSxLQUFLO3lCQUdMLEtBQUs7d0JBRUwsS0FBSzt5QkFHTCxLQUFLO21CQUdMLEtBQUs7OEJBRUwsTUFBTTs4QkFFTixTQUFTLFNBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOzs7O0lBZi9DLGlDQUE2Qjs7SUFHN0Isd0NBQXNEOztJQUV0RCx1Q0FBa0M7O0lBR2xDLHdDQUF5Qzs7SUFHekMsa0NBQWdDOztJQUVoQyw2Q0FBMkQ7O0lBRTNELDZDQUM2Qzs7SUFFN0MseUNBQXdCOztJQUd4QiwwQ0FBbUM7O0lBRW5DLDRDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFZpZXdDaGlsZCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBOelRyZWVDb21wb25lbnQgfSBmcm9tIFwibmctem9ycm8tYW50ZC90cmVlXCI7XG5pbXBvcnQgeyBOekZvcm1hdEVtaXRFdmVudCB9IGZyb20gXCJuZy16b3Jyby1hbnRkL2NvcmVcIjtcbmltcG9ydCAqIGFzIF8gZnJvbSBcImxvZGFzaFwiO1xuXG5pbXBvcnQge1xuICBJU2VsZWN0ZWROb2RlLFxuICBJVHJlZURhdGEsXG4gIElDaGVja2VkVHJlZSxcbiAgSVRyZWVFdmVudFxufSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvdXRpbFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwia3JlZm9ybS1wcml2YXRlLXRyZWVcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9pbmRleC5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vaW5kZXguY29tcG9uZW50Lmxlc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgS3JlRm9ybVByaXZhdGVUcmVlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAvL+aYr+WQpuaYvuekulRhZ1xuICBASW5wdXQoKSB0YWc6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8v5Y2V6YCJ77yf5aSa6YCJXG4gIEBJbnB1dCgpIHNlbGVjdFR5cGU6IFwic2luZ2xlXCIgfCBcIm11bHRpcGxlXCIgPSBcInNpbmdsZVwiO1xuXG4gIEBJbnB1dCgpIGV4cGFuZEFsbDpib29sZWFuID0gdHJ1ZTtcblxuICAvL+mAieS4reiKgueCuVxuICBASW5wdXQoKSBzZWxlY3REYXRhOiBJQ2hlY2tlZFRyZWVbXSA9IFtdO1xuXG4gIC8v5qCR5pWw5o2uXG4gIEBJbnB1dCgpIGRhdGE6IElUcmVlRGF0YVtdID0gW107XG5cbiAgQE91dHB1dCgpIHRyZWVDaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8SVRyZWVFdmVudD4oKTtcblxuICBAVmlld0NoaWxkKFwibnpUcmVlQ29tcG9uZW50XCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBuelRyZWVDb21wb25lbnQ6IE56VHJlZUNvbXBvbmVudCB8IHVuZGVmaW5lZDtcblxuICBzZWxlY3RlZEtleTogYW55W10gPSBbXTtcblxuICAvL+mAieaLqeiKgueCuVxuICBzZWxlY3RlZE5vZGU6IElTZWxlY3RlZE5vZGVbXSA9IFtdO1xuXG4gIHNrZWxldG9uU3RhdHVzOiBudW1iZXIgPSAwO1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5zZWxlY3REYXRhKSB7XG4gICAgICB0aGlzLnRyZWVDaGVja2VkKHRoaXMuc2VsZWN0RGF0YSk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmRhdGEpIHtcbiAgICAgIC8vc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNrZWxldG9uU3RhdHVzID0gMTtcbiAgICAgIC8vfSwgMTAwKTtcbiAgICB9XG4gIH1cblxuICBuekNsaWNrKGV2ZW50OiBOekZvcm1hdEVtaXRFdmVudCkge1xuICAgIGlmICh0aGlzLnNlbGVjdFR5cGUgIT0gXCJtdWx0aXBsZVwiKSB7XG4gICAgICB0aGlzLnNlbGVjdERhdGEuZm9yRWFjaCgoaXRlbTogYW55LCBpbmRleCwgb2JqZWN0KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBpdGVtICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIGl0ZW0gIT0gbnVsbCAmJlxuICAgICAgICAgIGl0ZW0udmFsdWUgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgaXRlbS52YWx1ZSAhPSBudWxsICYmXG4gICAgICAgICAgZXZlbnQgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgZXZlbnQgIT0gbnVsbCAmJlxuICAgICAgICAgIGV2ZW50Lm5vZGUgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgZXZlbnQubm9kZSAhPSBudWxsICYmXG4gICAgICAgICAgZXZlbnQubm9kZS5rZXkgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgZXZlbnQubm9kZS5rZXkgIT0gbnVsbCAmJlxuICAgICAgICAgIGV2ZW50Lm5vZGUudGl0bGUgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgZXZlbnQubm9kZS50aXRsZSAhPSBudWxsICYmXG4gICAgICAgICAgaXRlbS52YWx1ZSAhPT0gZXZlbnQubm9kZS5rZXlcbiAgICAgICAgKSB7XG4gICAgICAgICAgb2JqZWN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKHRoaXMuc2VsZWN0RGF0YS5sZW5ndGggPCAxKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBldmVudCAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICBldmVudCAhPSBudWxsICYmXG4gICAgICAgICAgZXZlbnQubm9kZSAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICBldmVudC5ub2RlICE9IG51bGwgJiZcbiAgICAgICAgICBldmVudC5ub2RlLmtleSAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICBldmVudC5ub2RlLmtleSAhPSBudWxsICYmXG4gICAgICAgICAgZXZlbnQubm9kZS50aXRsZSAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICBldmVudC5ub2RlLnRpdGxlICE9IG51bGxcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3REYXRhLnB1c2goe1xuICAgICAgICAgICAgbGFiZWw6IGV2ZW50Lm5vZGUudGl0bGUsXG4gICAgICAgICAgICB2YWx1ZTogZXZlbnQubm9kZS5rZXlcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy50cmVlQ2hhbmdlRXZlbnQuZW1pdCh7IGNoZWNrRGF0YTogdGhpcy5zZWxlY3REYXRhIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8v54K55Ye75aSN6YCJ5qGG6Kem5Y+RXG4gIG56Q2hlY2soZXZlbnQ6IE56Rm9ybWF0RW1pdEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgZXZlbnQgIT0gdW5kZWZpbmVkICYmXG4gICAgICBldmVudCAhPSBudWxsICYmXG4gICAgICBldmVudC5rZXlzICE9IHVuZGVmaW5lZCAmJlxuICAgICAgZXZlbnQua2V5cyAhPSBudWxsICYmXG4gICAgICBldmVudC5ub2RlICE9IHVuZGVmaW5lZCAmJlxuICAgICAgZXZlbnQubm9kZSAhPSBudWxsICYmXG4gICAgICBldmVudC5ub2RlLmtleSAhPSB1bmRlZmluZWQgJiZcbiAgICAgIGV2ZW50Lm5vZGUua2V5ICE9IG51bGwgJiZcbiAgICAgIGV2ZW50Lm5vZGUudGl0bGUgIT0gdW5kZWZpbmVkICYmXG4gICAgICBldmVudC5ub2RlLnRpdGxlICE9IG51bGxcbiAgICApIHtcbiAgICAgIGxldCBpc0FkZDogYm9vbGVhbiA9IGV2ZW50LmtleXMuc29tZSgoa2V5OiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIGtleSA9PT0gXy5nZXQoZXZlbnQsIFwibm9kZS5rZXlcIik7XG4gICAgICB9KTtcbiAgICAgIGlmIChpc0FkZCA9PSB0cnVlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0RGF0YS5wdXNoKHtcbiAgICAgICAgICBsYWJlbDogZXZlbnQubm9kZS50aXRsZSxcbiAgICAgICAgICB2YWx1ZTogZXZlbnQubm9kZS5rZXlcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdERhdGEuZm9yRWFjaCgoaXRlbSwgaW5kZXgsIG9iamVjdCkgPT4ge1xuICAgICAgICAgIGlmIChpdGVtLnZhbHVlID09PSBfLmdldChldmVudCwgXCJub2RlLmtleVwiKSkge1xuICAgICAgICAgICAgb2JqZWN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy50cmVlQ2hlY2tlZCh0aGlzLnNlbGVjdERhdGEpO1xuXG4gICAgdGhpcy50cmVlQ2hhbmdlRXZlbnQuZW1pdCh7IGNoZWNrRGF0YTogdGhpcy5zZWxlY3REYXRhIH0pO1xuICB9XG5cbiAgLy/ph43nva7pgInkuK3oioLngrlcbiAgdHJlZUNoZWNrZWQoaXRlbXM6IGFueSkge1xuICAgIGlmIChpdGVtcyAhPSBudWxsICYmIGl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRLZXkgPSBpdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gaXRlbS52YWx1ZTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkS2V5ID0gW107XG4gICAgfVxuICB9XG5cbiAgLy/liKDpmaTpgInkuK3oioLngrlcbiAgc2VsZWN0Q2xlYXJCeUlkKG5vZGU6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0RGF0YS5mb3JFYWNoKChpdGVtLCBpbmRleCwgb2JqZWN0KSA9PiB7XG4gICAgICBpZiAoaXRlbS52YWx1ZSA9PT0gbm9kZSkge1xuICAgICAgICBvYmplY3Quc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnRyZWVDaGVja2VkKHRoaXMuc2VsZWN0RGF0YSk7XG4gICAgdGhpcy50cmVlQ2hhbmdlRXZlbnQuZW1pdCh7IGNoZWNrRGF0YTogdGhpcy5zZWxlY3REYXRhLCBkZWxldGU6IG5vZGUgfSk7XG4gIH1cblxuICBzZWxlY3RBbGxDbGVhcigpeyAgXG4gICAgLy90aGlzLnNlbGVjdERhdGEgPVtdO1xuICB9XG59XG4iXX0=