UNPKG

@duoduo-oba/ng-devui

Version:

DevUI components based on Angular

921 lines 63.3 kB
/** * @fileoverview added by tsickle * Generated from: tree-factory.class.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { forEach, isUndefined, map, omitBy, pickBy, reduce, trim, values } from 'lodash-es'; /** * @record */ export function ITreeNodeData() { } if (false) { /** @type {?|undefined} */ ITreeNodeData.prototype.id; /** @type {?|undefined} */ ITreeNodeData.prototype.parentId; /** @type {?|undefined} */ ITreeNodeData.prototype.title; /** @type {?|undefined} */ ITreeNodeData.prototype.isOpen; /** @type {?|undefined} */ ITreeNodeData.prototype.data; /** @type {?|undefined} */ ITreeNodeData.prototype.isParent; /** @type {?|undefined} */ ITreeNodeData.prototype.loading; /** @type {?|undefined} */ ITreeNodeData.prototype.isMatch; /** @type {?|undefined} */ ITreeNodeData.prototype.isHide; /** @type {?|undefined} */ ITreeNodeData.prototype.isActive; /** @type {?|undefined} */ ITreeNodeData.prototype.isChecked; /** @type {?|undefined} */ ITreeNodeData.prototype.disabled; /** @type {?|undefined} */ ITreeNodeData.prototype.children; /* Skipping unhandled member: [prop: string]: any;*/ } /** * @record */ export function ITreeMap() { } /** * @record */ export function ITreeItem() { } if (false) { /** @type {?} */ ITreeItem.prototype.title; /** @type {?|undefined} */ ITreeItem.prototype.open; /** @type {?|undefined} */ ITreeItem.prototype.loading; /** @type {?|undefined} */ ITreeItem.prototype.isMatch; /** @type {?|undefined} */ ITreeItem.prototype.items; /** @type {?|undefined} */ ITreeItem.prototype.isParent; /** @type {?|undefined} */ ITreeItem.prototype.data; /** @type {?|undefined} */ ITreeItem.prototype.id; /** @type {?|undefined} */ ITreeItem.prototype.isHide; /** @type {?|undefined} */ ITreeItem.prototype.isActive; /** @type {?|undefined} */ ITreeItem.prototype.isChecked; /** @type {?|undefined} */ ITreeItem.prototype.halfChecked; /** @type {?|undefined} */ ITreeItem.prototype.disabled; /** @type {?|undefined} */ ITreeItem.prototype.disableAdd; /** @type {?|undefined} */ ITreeItem.prototype.disableEdit; /** @type {?|undefined} */ ITreeItem.prototype.disableDelete; /* Skipping unhandled member: [prop: string]: any;*/ } /** * @record */ export function ITreeInput() { } if (false) { /** @type {?} */ ITreeInput.prototype.treeItems; /** @type {?|undefined} */ ITreeInput.prototype.parentId; /** @type {?|undefined} */ ITreeInput.prototype.treeNodeChildrenKey; /** @type {?|undefined} */ ITreeInput.prototype.treeNodeIdKey; /** @type {?|undefined} */ ITreeInput.prototype.checkboxDisabledKey; /** @type {?|undefined} */ ITreeInput.prototype.treeNodeTitleKey; } var TreeNode = /** @class */ (function () { function TreeNode(id, parentId, data) { this.id = id; this.parentId = parentId; this.data = data; } return TreeNode; }()); export { TreeNode }; if (false) { /** @type {?} */ TreeNode.prototype.id; /** @type {?} */ TreeNode.prototype.parentId; /** @type {?} */ TreeNode.prototype.data; } var TreeFactory = /** @class */ (function () { function TreeFactory() { var _this = this; this._checked = new Set(); this._treeRoot = []; this.mapTreeItems = (/** * @template THIS * @this {THIS} * @param {?} __0 * @return {THIS} */ function (_a) { var treeItems = _a.treeItems, parentId = _a.parentId, _b = _a.treeNodeChildrenKey, treeNodeChildrenKey = _b === void 0 ? 'items' : _b, _c = _a.treeNodeIdKey, treeNodeIdKey = _c === void 0 ? 'id' : _c, _d = _a.checkboxDisabledKey, checkboxDisabledKey = _d === void 0 ? 'disabled' : _d, _e = _a.treeNodeTitleKey, treeNodeTitleKey = _e === void 0 ? 'title' : _e; forEach(treeItems, (/** * @param {?} item * @return {?} */ function (item) { /** @type {?} */ var node = _this.addNode({ id: item[treeNodeIdKey], parentId: parentId, title: item[treeNodeTitleKey], isOpen: !!item.open, data: item.data || {}, originItem: item, isParent: !!item.isParent || !!(item[treeNodeChildrenKey] && item[treeNodeChildrenKey].length > 0), loading: !!item.loading, isMatch: !!item.isMatch, isHide: !!item.isHide, isChecked: !!item.isChecked, halfChecked: !!item.halfChecked, isActive: !!item.isActive, disabled: !!item[checkboxDisabledKey], disableAdd: !!item.disableAdd, disableEdit: !!item.disableEdit, disableDelete: !!item.disableDelete, children: [] }); if (!!item.isChecked) { _this._checked.add(node); } _this.mapTreeItems({ treeItems: item[treeNodeChildrenKey] || [], parentId: node.id, treeNodeChildrenKey: treeNodeChildrenKey, treeNodeIdKey: treeNodeIdKey, checkboxDisabledKey: checkboxDisabledKey, treeNodeTitleKey: treeNodeTitleKey }); })); return _this; }); this.idx = 0; this.nodes = {}; } /** * @return {?} */ TreeFactory.create = /** * @return {?} */ function () { return new TreeFactory(); }; // tree model with items // tree model with items /** * @param {?} __0 * @return {?} */ TreeFactory.fromTree = // tree model with items /** * @param {?} __0 * @return {?} */ function (_a) { var treeItems = _a.treeItems, _b = _a.treeNodeChildrenKey, treeNodeChildrenKey = _b === void 0 ? 'items' : _b, _c = _a.treeNodeIdKey, treeNodeIdKey = _c === void 0 ? 'id' : _c, _d = _a.checkboxDisabledKey, checkboxDisabledKey = _d === void 0 ? 'disabled' : _d, _e = _a.treeNodeTitleKey, treeNodeTitleKey = _e === void 0 ? 'title' : _e; /** @type {?} */ var treeFactory = TreeFactory.create(); treeFactory.mapTreeItems({ treeItems: treeItems, parentId: undefined, treeNodeChildrenKey: treeNodeChildrenKey, treeNodeIdKey: treeNodeIdKey, checkboxDisabledKey: checkboxDisabledKey, treeNodeTitleKey: treeNodeTitleKey }); return treeFactory; }; /** * @param {?} __0 * @return {?} */ TreeFactory.prototype.addNode = /** * @param {?} __0 * @return {?} */ function (_a) { var _b; var id = _a.id, parentId = _a.parentId, data = tslib_1.__rest(_a, ["id", "parentId"]); if (isUndefined(id)) { this.idx++; id = this.idx; } /** @type {?} */ var treeNode = new TreeNode(id, parentId, data); if (this.nodes.hasOwnProperty(treeNode.id)) { throw new Error("Duplicated id: " + treeNode.id + " detected, please specify unique ids in the tree."); } this.nodes = tslib_1.__assign({}, this.nodes, (_b = {}, _b[treeNode.id] = treeNode, _b)); this.addChildNode(this.nodes[parentId], treeNode); return treeNode; }; /** * @param {?} id * @return {?} */ TreeFactory.prototype.editNodeTitle = /** * @param {?} id * @return {?} */ function (id) { this.nodes[id].data.editable = true; }; /** * @template THIS * @this {THIS} * @param {?} id * @return {THIS} */ TreeFactory.prototype.deleteNodeById = /** * @template THIS * @this {THIS} * @param {?} id * @return {THIS} */ function (id) { var _this = this; /** @type {?} */ var node = (/** @type {?} */ (this)).nodes[id]; /** @type {?} */ var parentNode = (/** @type {?} */ (this)).nodes[node.parentId]; (/** @type {?} */ (this)).removeChildNode(parentNode, node); /** @type {?} */ var deleteItems = (/** * @param {?} nodeId * @return {?} */ function (nodeId) { /** @type {?} */ var children = (/** @type {?} */ (_this)).getChildrenById(nodeId); (/** @type {?} */ (_this)).nodes = omitBy((/** @type {?} */ (_this)).nodes, (/** * @param {?} _node * @return {?} */ function (_node) { return _node.id === id; })); forEach(children, (/** * @param {?} child * @return {?} */ function (child) { deleteItems(child.id); })); }); deleteItems(id); if (parentNode && (!parentNode.data.children || !parentNode.data.children.length)) { parentNode.data.isParent = false; } return (/** @type {?} */ (this)); }; /** * @template THIS * @this {THIS} * @param {?} id * @return {THIS} */ TreeFactory.prototype.toggleNodeById = /** * @template THIS * @this {THIS} * @param {?} id * @return {THIS} */ function (id) { (/** @type {?} */ (this)).nodes[id].data.isOpen = !(/** @type {?} */ (this)).nodes[id].data.isOpen; return (/** @type {?} */ (this)); }; /** * @template THIS * @this {THIS} * @param {?} id * @return {THIS} */ TreeFactory.prototype.openNodesById = /** * @template THIS * @this {THIS} * @param {?} id * @return {THIS} */ function (id) { (/** @type {?} */ (this)).nodes[id].data.isOpen = true; if ((/** @type {?} */ (this)).nodes[id].parentId !== undefined) { (/** @type {?} */ (this)).openNodesById((/** @type {?} */ (this)).nodes[id].parentId); } return (/** @type {?} */ (this)); }; /** * @template THIS * @this {THIS} * @param {?} id * @param {?=} closeChildren * @return {THIS} */ TreeFactory.prototype.closeNodesById = /** * @template THIS * @this {THIS} * @param {?} id * @param {?=} closeChildren * @return {THIS} */ function (id, closeChildren) { var _this = this; if (closeChildren === void 0) { closeChildren = false; } (/** @type {?} */ (this)).nodes[id].data.isOpen = false; if (closeChildren) { if ((/** @type {?} */ (this)).nodes[id] && (/** @type {?} */ (this)).nodes[id].data.children) { (/** @type {?} */ (this)).nodes[id].data.children.forEach((/** * @param {?} node * @return {?} */ function (node) { (/** @type {?} */ (_this)).closeNodesById(node.id); })); } } return (/** @type {?} */ (this)); }; /** * @template THIS * @this {THIS} * @param {?} id * @return {THIS} */ TreeFactory.prototype.disabledNodesById = /** * @template THIS * @this {THIS} * @param {?} id * @return {THIS} */ function (id) { var _this = this; (/** @type {?} */ (this)).nodes[id].data.disabled = true; /** @type {?} */ var parentId = (/** @type {?} */ (this)).nodes[id].parentId; (/** @type {?} */ (this))._disabledParentNodes(parentId); /** @type {?} */ var disabledNodes = (/** * @param {?} nodeId * @return {?} */ function (nodeId) { /** @type {?} */ var children = (/** @type {?} */ (_this)).getChildrenById(nodeId); if (children.length > 0) { children.forEach((/** * @param {?} child * @return {?} */ function (child) { (/** @type {?} */ (_this)).nodes[child.id].data.disabled = true; disabledNodes(child.id); })); } }); disabledNodes(id); return (/** @type {?} */ (this)); }; /** * @private * @param {?} parentId * @return {?} */ TreeFactory.prototype._disabledParentNodes = /** * @private * @param {?} parentId * @return {?} */ function (parentId) { /** @type {?} */ var children = this.getChildrenById(parentId); if (children.length < 1) { return; } /** @type {?} */ var result = reduce(children, (/** * @param {?} status * @param {?} child * @return {?} */ function (status, child) { return status && child.data.disabled; }), true); if (this.nodes[parentId]) { this.nodes[parentId].data.disabled = result; } }; /** * @param {?} id * @param {?} checked * @return {?} */ TreeFactory.prototype.checkNodesById = /** * @param {?} id * @param {?} checked * @return {?} */ function (id, checked) { this.nodes[id].data.halfChecked = false; this.nodes[id].data.isChecked = checked; this.checkParentNodes(this.nodes[id]); this.checkChildNodes(this.nodes[id], checked); this.maintainCheckedNodeList(this.nodes[id], checked); return this.getCheckedNodes(); }; /** * @private * @param {?} node * @return {?} */ TreeFactory.prototype.checkParentNodes = /** * @private * @param {?} node * @return {?} */ function (node) { var parentId = node.parentId; /** @type {?} */ var parentNode = this.nodes[parentId]; if (parentNode) { /** @type {?} */ var childrenNode = this.getChildrenById(parentId); if (childrenNode.every((/** * @param {?} childNode * @return {?} */ function (childNode) { return childNode.data.isChecked && !childNode.data.halfChecked; }))) { parentNode.data.isChecked = true; parentNode.data.halfChecked = false; } else if (childrenNode.some((/** * @param {?} childNode * @return {?} */ function (childNode) { return childNode.data.halfChecked || childNode.data.isChecked; }))) { parentNode.data.isChecked = true; parentNode.data.halfChecked = true; } else { parentNode.data.isChecked = false; parentNode.data.halfChecked = false; } this.maintainCheckedNodeList(parentNode, parentNode.data.isChecked); this.checkParentNodes(parentNode); } }; /** * @private * @param {?} node * @param {?} checked * @return {?} */ TreeFactory.prototype.checkChildNodes = /** * @private * @param {?} node * @param {?} checked * @return {?} */ function (node, checked) { var _this = this; var id = node.id; /** @type {?} */ var childrenNode = this.getChildrenById(id); if (childrenNode.length > 0) { childrenNode.forEach((/** * @param {?} childNode * @return {?} */ function (childNode) { var childId = childNode.id; var nodeData = _this.nodes[childId].data; if (!nodeData.disabled) { nodeData.isChecked = checked; nodeData.halfChecked = false; _this.maintainCheckedNodeList(childNode, checked); } _this.checkChildNodes(childNode, checked); })); /** @type {?} */ var childrenFullCheckedCount = childrenNode.filter((/** * @param {?} __0 * @return {?} */ function (_a) { var nodeData = _a.data; return nodeData.isChecked; })).length; /** @type {?} */ var childrenCheckedCount = childrenNode .filter((/** * @param {?} __0 * @return {?} */ function (_a) { var nodeData = _a.data; return nodeData.isChecked || nodeData.halfChecked; })).length; node.data.halfChecked = childrenCheckedCount > 0 && childrenNode.length > childrenFullCheckedCount; } }; /** * @return {?} */ TreeFactory.prototype.getCheckedNodes = /** * @return {?} */ function () { return Array.from(this._checked); }; /** * @return {?} */ TreeFactory.prototype.getDisabledNodes = /** * @return {?} */ function () { /** @type {?} */ var results = pickBy(this.nodes, (/** * @param {?} node * @return {?} */ function (node) { return node.data.disabled === true; })); return values(results); }; /** * @param {?} id * @return {?} */ TreeFactory.prototype.activeNodeById = /** * @param {?} id * @return {?} */ function (id) { this.deactivateAllNodes(); this.nodes[id].data.isActive = !this.nodes[id].data.isActive; }; /** * @param {?} id * @return {?} */ TreeFactory.prototype.getChildrenById = /** * @param {?} id * @return {?} */ function (id) { if (this.nodes[id]) { return this.nodes[id].data.children || []; } else if (id === undefined) { return this._treeRoot; } return []; }; /* * @deprecated * */ /* * @deprecated * */ /** * @private * @return {?} */ TreeFactory.prototype.toTree = /* * @deprecated * */ /** * @private * @return {?} */ function () { var _this = this; /** @type {?} */ var patchChildren = (/** * @param {?} nodes * @return {?} */ function (nodes) { return map(nodes, (/** * @param {?} node * @return {?} */ function (node) { return tslib_1.__assign({}, node, { children: patchChildren(_this.getChildrenById(node.id)) }); })); }); return patchChildren(this.getChildrenById(undefined)); }; /** * @param {?} id * @return {?} */ TreeFactory.prototype.startLoading = /** * @param {?} id * @return {?} */ function (id) { this.nodes[id].data.loading = true; }; /** * @param {?} id * @return {?} */ TreeFactory.prototype.endLoading = /** * @param {?} id * @return {?} */ function (id) { this.nodes[id].data.loading = false; }; /* * @deprecated */ /* * @deprecated */ /** * @private * @param {?} inputValue * @param {?=} hideUnmatched * @return {?} */ TreeFactory.prototype.isMatchNode = /* * @deprecated */ /** * @private * @param {?} inputValue * @param {?=} hideUnmatched * @return {?} */ function (inputValue, hideUnmatched) { /** @type {?} */ var target = trim(inputValue); this.resetSearchResults(); this.dfs(target.toLowerCase(), this._treeRoot, hideUnmatched); }; /** * @param {?} id * @return {?} */ TreeFactory.prototype.getNodeById = /** * @param {?} id * @return {?} */ function (id) { return this.nodes[id].data; }; /** * @template THIS * @this {THIS} * @param {?} id * @param {?} hide * @return {THIS} */ TreeFactory.prototype.hideNodeById = /** * @template THIS * @this {THIS} * @param {?} id * @param {?} hide * @return {THIS} */ function (id, hide) { (/** @type {?} */ (this)).nodes[id].data.isHide = hide; return (/** @type {?} */ (this)); }; /** * @private * @param {?} node * @param {?} checked * @return {?} */ TreeFactory.prototype.maintainCheckedNodeList = /** * @private * @param {?} node * @param {?} checked * @return {?} */ function (node, checked) { if (checked && !node.data.halfChecked) { this._checked.add(node); } else { this._checked.delete(node); } }; /** * @private * @param {?} target * @param {?} tree * @param {?=} hideUnmatched * @return {?} */ TreeFactory.prototype.dfs = /** * @private * @param {?} target * @param {?} tree * @param {?=} hideUnmatched * @return {?} */ function (target, tree, hideUnmatched) { var _this = this; if (!tree) { return false; } if (!target) { return false; } if (Array.isArray(tree)) { return tree.map((/** * @param {?} treeNode * @return {?} */ function (treeNode) { return _this.dfs(target, treeNode, hideUnmatched); })); } else { /** @type {?} */ var treeNode = tree; /** @type {?} */ var treeChildren = this.getChildrenById(treeNode.id); /** @type {?} */ var selfMatched = treeNode.data.title.toLowerCase().includes(target); if (selfMatched) { treeNode.data.isMatch = true; } // Test if children matches target recursively, do not hide children if parent is matched. /** @type {?} */ var childrenMatched = this.dfs(target, treeChildren, hideUnmatched && !selfMatched).some((/** * @param {?} _ * @return {?} */ function (_) { return !!_; })); if (selfMatched || childrenMatched) { if (treeChildren.length > 0) { this.openNodesById(treeNode.id); } return true; } else { treeNode.data.isHide = hideUnmatched; return false; } } }; /** * @param {?} parentNode * @param {?} childNode * @return {?} */ TreeFactory.prototype.addChildNode = /** * @param {?} parentNode * @param {?} childNode * @return {?} */ function (parentNode, childNode) { if (parentNode) { Array.isArray(parentNode.data.children) ? parentNode.data.children.push(childNode) : parentNode.data.children = [childNode]; } else { this._treeRoot.push(childNode); } }; /** * @private * @param {?} parentNode * @param {?} childNode * @return {?} */ TreeFactory.prototype.removeChildNode = /** * @private * @param {?} parentNode * @param {?} childNode * @return {?} */ function (parentNode, childNode) { if (parentNode) { parentNode.data.children = parentNode.data.children.filter((/** * @param {?} node * @return {?} */ function (node) { return node.id !== childNode.id; })); } else { this._treeRoot = this._treeRoot.filter((/** * @param {?} node * @return {?} */ function (node) { return node.id !== childNode.id; })); } }; /** * @private * @return {?} */ TreeFactory.prototype.resetSearchResults = /** * @private * @return {?} */ function () { var _this = this; Object.keys(this.nodes).forEach((/** * @param {?} key * @return {?} */ function (key) { /** @type {?} */ var treeNode = _this.nodes[key]; treeNode.data.isMatch = false; treeNode.data.isHide = false; })); }; /** * @param {?} target * @param {?=} hideUnmatched * @return {?} */ TreeFactory.prototype.searchTree = /** * @param {?} target * @param {?=} hideUnmatched * @return {?} */ function (target, hideUnmatched) { if (hideUnmatched === void 0) { hideUnmatched = false; } target = trim(target); this.resetSearchResults(); return this.dfs(target.toLowerCase(), this._treeRoot, hideUnmatched); }; Object.defineProperty(TreeFactory.prototype, "treeRoot", { get: /** * @return {?} */ function () { return this._treeRoot; }, enumerable: true, configurable: true }); /** * @return {?} */ TreeFactory.prototype.deactivateAllNodes = /** * @return {?} */ function () { var e_1, _a; try { for (var _b = tslib_1.__values(Object.keys(this.nodes)), _c = _b.next(); !_c.done; _c = _b.next()) { var id = _c.value; this.nodes[id].data.isActive = false; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_1) throw e_1.error; } } }; return TreeFactory; }()); export { TreeFactory }; if (false) { /** @type {?} */ TreeFactory.prototype.nodes; /** * @type {?} * @private */ TreeFactory.prototype.idx; /** * @type {?} * @private */ TreeFactory.prototype._checked; /** * @type {?} * @private */ TreeFactory.prototype._treeRoot; /** @type {?} */ TreeFactory.prototype.mapTreeItems; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1mYWN0b3J5LmNsYXNzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZGV2dWkvdHJlZS8iLCJzb3VyY2VzIjpbInRyZWUtZmFjdG9yeS5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBR0wsT0FBTyxFQUNQLFdBQVcsRUFDWCxHQUFHLEVBQ0gsTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEVBQ04sSUFBSSxFQUNKLE1BQU0sRUFDUCxNQUFNLFdBQVcsQ0FBQzs7OztBQUVuQixtQ0FpQkM7OztJQWhCQywyQkFBWTs7SUFDWixpQ0FBa0I7O0lBQ2xCLDhCQUFlOztJQUNmLCtCQUFpQjs7SUFDakIsNkJBQVc7O0lBQ1gsaUNBQW1COztJQUNuQixnQ0FBa0I7O0lBQ2xCLGdDQUFrQjs7SUFDbEIsK0JBQWlCOztJQUNqQixpQ0FBbUI7O0lBQ25CLGtDQUFvQjs7SUFDcEIsaUNBQW1COztJQUluQixpQ0FBYzs7Ozs7O0FBR2hCLDhCQUVDOzs7O0FBRUQsK0JBb0JDOzs7SUFuQkMsMEJBQWM7O0lBQ2QseUJBQWU7O0lBQ2YsNEJBQWtCOztJQUNsQiw0QkFBa0I7O0lBQ2xCLDBCQUFvQjs7SUFDcEIsNkJBQW1COztJQUNuQix5QkFBVzs7SUFDWCx1QkFBUzs7SUFDVCwyQkFBaUI7O0lBQ2pCLDZCQUFtQjs7SUFDbkIsOEJBQW9COztJQUNwQixnQ0FBc0I7O0lBQ3RCLDZCQUFtQjs7SUFJbkIsK0JBQXFCOztJQUNyQixnQ0FBc0I7O0lBQ3RCLGtDQUF3Qjs7Ozs7O0FBRzFCLGdDQU9DOzs7SUFOQywrQkFBNEI7O0lBQzVCLDhCQUFrQjs7SUFDbEIseUNBQTZCOztJQUM3QixtQ0FBdUI7O0lBQ3ZCLHlDQUE2Qjs7SUFDN0Isc0NBQTBCOztBQUc1QjtJQUNFLGtCQUFtQixFQUFFLEVBQ1osUUFBUSxFQUNSLElBQUk7UUFGTSxPQUFFLEdBQUYsRUFBRSxDQUFBO1FBQ1osYUFBUSxHQUFSLFFBQVEsQ0FBQTtRQUNSLFNBQUks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V0MsNEJBQTRCOzs7OztJQUM1QiwwQkFBb0I7Ozs7O0lBQ3BCLCtCQUFxQzs7Ozs7SUFDckMsZ0NBQW1DOztJQXdCbkMsbUNBd0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBEaWN0aW9uYXJ5LFxyXG4gIGZpbHRlcixcclxuICBmb3JFYWNoLFxyXG4gIGlzVW5kZWZpbmVkLFxyXG4gIG1hcCxcclxuICBvbWl0QnksXHJcbiAgcGlja0J5LFxyXG4gIHJlZHVjZSxcclxuICB0cmltLFxyXG4gIHZhbHVlc1xyXG59IGZyb20gJ2xvZGFzaC1lcyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElUcmVlTm9kZURhdGEge1xyXG4gIGlkPzogbnVtYmVyO1xyXG4gIHBhcmVudElkPzogbnVtYmVyO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIGlzT3Blbj86IGJvb2xlYW47XHJcbiAgZGF0YT86IGFueTtcclxuICBpc1BhcmVudD86IGJvb2xlYW47XHJcbiAgbG9hZGluZz86IGJvb2xlYW47XHJcbiAgaXNNYXRjaD86IGJvb2xlYW47XHJcbiAgaXNIaWRlPzogYm9vbGVhbjtcclxuICBpc0FjdGl2ZT86IGJvb2xlYW47XHJcbiAgaXNDaGVja2VkPzogYm9vbGVhbjtcclxuICBkaXNhYmxlZD86IGJvb2xlYW47XHJcblxyXG4gIFtwcm9wOiBzdHJpbmddOiBhbnk7XHJcblxyXG4gIGNoaWxkcmVuPzogW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRyZWVNYXAge1xyXG4gIFtpbmRleDogbnVtYmVyXTogSVRyZWVOb2RlRGF0YTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVHJlZUl0ZW0ge1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgb3Blbj86IGJvb2xlYW47XHJcbiAgbG9hZGluZz86IGJvb2xlYW47XHJcbiAgaXNNYXRjaD86IGJvb2xlYW47XHJcbiAgaXRlbXM/OiBJVHJlZUl0ZW1bXTtcclxuICBpc1BhcmVudD86IGJvb2xlYW47XHJcbiAgZGF0YT86IGFueTtcclxuICBpZD86IGFueTtcclxuICBpc0hpZGU/OiBib29sZWFuO1xyXG4gIGlzQWN0aXZlPzogYm9vbGVhbjtcclxuICBpc0NoZWNrZWQ/OiBib29sZWFuO1xyXG4gIGhhbGZDaGVja2VkPzogYm9vbGVhbjtcclxuICBkaXNhYmxlZD86IGJvb2xlYW47XHJcblxyXG4gIFtwcm9wOiBzdHJpbmddOiBhbnk7XHJcblxyXG4gIGRpc2FibGVBZGQ/OiBib29sZWFuO1xyXG4gIGRpc2FibGVFZGl0PzogYm9vbGVhbjtcclxuICBkaXNhYmxlRGVsZXRlPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVHJlZUlucHV0IHtcclxuICB0cmVlSXRlbXM6IEFycmF5PElUcmVlSXRlbT47XHJcbiAgcGFyZW50SWQ/OiBudW1iZXI7XHJcbiAgdHJlZU5vZGVDaGlsZHJlbktleT86IHN0cmluZztcclxuICB0cmVlTm9kZUlkS2V5Pzogc3RyaW5nO1xyXG4gIGNoZWNrYm94RGlzYWJsZWRLZXk/OiBzdHJpbmc7XHJcbiAgdHJlZU5vZGVUaXRsZUtleT86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRyZWVOb2RlIGltcGxlbWVudHMgSVRyZWVOb2RlRGF0YSB7XHJcbiAgY29uc3RydWN0b3IocHVibGljIGlkLFxyXG4gICAgcHVibGljIHBhcmVudElkLFxyXG4gICAgcHVibGljIGRhdGEpIHtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUcmVlRmFjdG9yeSB7XHJcbiAgbm9kZXM6IERpY3Rpb25hcnk8VHJlZU5vZGU+O1xyXG4gIHByaXZhdGUgaWR4OiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBfY2hlY2tlZCA9IG5ldyBTZXQ8T2JqZWN0PigpO1xyXG4gIHByaXZhdGUgX3RyZWVSb290OiBUcmVlTm9kZVtdID0gW107XHJcblxyXG4gIHN0YXRpYyBjcmVhdGUoKSB7XHJcbiAgICByZXR1cm4gbmV3IFRyZWVGYWN0b3J5KCk7XHJcbiAgfVxyXG5cclxuICAvLyB0cmVlIG1vZGVsIHdpdGggaXRlbXNcclxuICBzdGF0aWMgZnJvbVRyZWUoe1xyXG4gICAgdHJlZUl0ZW1zLFxyXG4gICAgdHJlZU5vZGVDaGlsZHJlbktleSA9ICdpdGVtcycsXHJcbiAgICB0cmVlTm9kZUlkS2V5ID0gJ2lkJyxcclxuICAgIGNoZWNrYm94RGlzYWJsZWRLZXkgPSAnZGlzYWJsZWQnLFxyXG4gICAgdHJlZU5vZGVUaXRsZUtleSA9ICd0aXRsZSdcclxuICB9OiBJVHJlZUlucHV0KTogVHJlZUZhY3Rvcnkge1xyXG4gICAgY29uc3QgdHJlZUZhY3RvcnkgPSBUcmVlRmFjdG9yeS5jcmVhdGUoKTtcclxuICAgIHRyZWVGYWN0b3J5Lm1hcFRyZWVJdGVtcyh7IHRyZWVJdGVtcywgcGFyZW50SWQ6IHVuZGVmaW5lZCwgdHJlZU5vZGVDaGlsZHJlbktleSwgdHJlZU5vZGVJZEtleSwgY2hlY2tib3hEaXNhYmxlZEtleSwgdHJlZU5vZGVUaXRsZUtleSB9KTtcclxuICAgIHJldHVybiB0cmVlRmFjdG9yeTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5pZHggPSAwO1xyXG4gICAgdGhpcy5ub2RlcyA9IHt9O1xyXG4gIH1cclxuXHJcbiAgbWFwVHJlZUl0ZW1zID0gKHtcclxuICAgIHRyZWVJdGVtcyxcclxuICAgIHBhcmVudElkLFxyXG4gICAgdHJlZU5vZGVDaGlsZHJlbktleSA9ICdpdGVtcycsXHJcbiAgICB0cmVlTm9kZUlkS2V5ID0gJ2lkJyxcclxuICAgIGNoZWNrYm94RGlzYWJsZWRLZXkgPSAnZGlzYWJsZWQnLFxyXG4gICAgdHJlZU5vZGVUaXRsZUtleSA9ICd0aXRsZSdcclxuICB9OiBJVHJlZUlucHV0KSA9PiB7XHJcbiAgICBmb3JFYWNoKHRyZWVJdGVtcywgKGl0ZW06IElUcmVlSXRlbSkgPT4ge1xyXG4gICAgICBjb25zdCBub2RlID0gdGhpcy5hZGROb2RlKHtcclxuICAgICAgICBpZDogaXRlbVt0cmVlTm9kZUlkS2V5XSxcclxuICAgICAgICBwYXJlbnRJZCxcclxuICAgICAgICB0aXRsZTogaXRlbVt0cmVlTm9kZVRpdGxlS2V5XSxcclxuICAgICAgICBpc09wZW46ICEhaXRlbS5vcGVuLFxyXG4gICAgICAgIGRhdGE6IGl0ZW0uZGF0YSB8fCB7fSxcclxuICAgICAgICBvcmlnaW5JdGVtOiBpdGVtLFxyXG4gICAgICAgIGlzUGFyZW50OiAhIWl0ZW0uaXNQYXJlbnQgfHwgISEoaXRlbVt0cmVlTm9kZUNoaWxkcmVuS2V5XSAmJiBpdGVtW3RyZWVOb2RlQ2hpbGRyZW5LZXldLmxlbmd0aCA+IDApLFxyXG4gICAgICAgIGxvYWRpbmc6ICEhaXRlbS5sb2FkaW5nLFxyXG4gICAgICAgIGlzTWF0Y2g6ICEhaXRlbS5pc01hdGNoLFxyXG4gICAgICAgIGlzSGlkZTogISFpdGVtLmlzSGlkZSxcclxuICAgICAgICBpc0NoZWNrZWQ6ICEhaXRlbS5pc0NoZWNrZWQsXHJcbiAgICAgICAgaGFsZkNoZWNrZWQ6ICEhaXRlbS5oYWxmQ2hlY2tlZCxcclxuICAgICAgICBpc0FjdGl2ZTogISFpdGVtLmlzQWN0aXZlLFxyXG4gICAgICAgIGRpc2FibGVkOiAhIWl0ZW1bY2hlY2tib3hEaXNhYmxlZEtleV0sXHJcbiAgICAgICAgZGlzYWJsZUFkZDogISFpdGVtLmRpc2FibGVBZGQsXHJcbiAgICAgICAgZGlzYWJsZUVkaXQ6