UNPKG

@eddie666/ng-material-multilevel-menu

Version:
58 lines 20.2 kB
import { Component, Input } from '@angular/core'; import { ExpandedLTR, ExpandedRTL } from '../../animation'; import { CommonUtils } from '../../common-utils'; import { CONSTANT } from '../../constants'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "@angular/material/icon"; import * as i3 from "@angular/cdk/bidi"; import * as i4 from "@angular/router"; class ListItemContentComponent { node; isRtlLayout; getListIcon(node) { if (!CommonUtils.isNullOrUndefinedOrEmpty(node.icon)) { return `icon`; } if (!CommonUtils.isNullOrUndefinedOrEmpty(node.faIcon)) { return `faIcon`; } if (!CommonUtils.isNullOrUndefinedOrEmpty(node.imageIcon)) { return `imageIcon`; } if (!CommonUtils.isNullOrUndefinedOrEmpty(node.svgIcon)) { return `svgIcon`; } return ``; } getHrefTargetType() { return this.node.hrefTargetType ? this.node.hrefTargetType : CONSTANT.DEFAULT_HREF_TARGET_TYPE; } getSelectedSvgIcon() { return this.node.isSelected && this.node.activeSvgIcon ? this.node.activeSvgIcon : this.node.svgIcon; } getSelectedIcon() { return this.node.isSelected && this.node.activeIcon ? this.node.activeIcon : this.node.icon; } getSelectedFaIcon() { return this.node.isSelected && this.node.activeFaIcon ? this.node.activeFaIcon : this.node.faIcon; } getSelectedImageIcon() { return this.node.isSelected && this.node.activeImageIcon ? this.node.activeImageIcon : this.node.imageIcon; } nodeExpandStatus() { return this.node.expanded ? CONSTANT.YES : CONSTANT.NO; } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ListItemContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: ListItemContentComponent, selector: "ng-list-item-content", inputs: { node: "node", isRtlLayout: "isRtlLayout" }, ngImport: i0, template: "<ng-container *ngTemplateOutlet=\"node.externalRedirect ? redirectLinkTemplate : routerLinkTemplate\"></ng-container>\r\n<ng-template #redirectLinkTemplate>\r\n <a\r\n class=\"anml-link\"\r\n [href]=\"node.link\"\r\n [target]=\"getHrefTargetType()\">\r\n <ng-container *ngTemplateOutlet=\"isRtlLayout ? linkLabelRtlOutlet : linkLabelLtrOutlet\"></ng-container>\r\n </a>\r\n</ng-template>\r\n<ng-template #routerLinkTemplate>\r\n <a\r\n class=\"anml-link\"\r\n *ngIf=\"!node.externalRedirect && node.link\"\r\n [routerLink]=\"node.link\">\r\n <ng-container *ngTemplateOutlet=\"isRtlLayout ? linkLabelRtlOutlet : linkLabelLtrOutlet\"></ng-container>\r\n </a>\r\n <a\r\n class=\"anml-link\"\r\n *ngIf=\"!node.link\">\r\n <ng-container *ngTemplateOutlet=\"isRtlLayout ? linkLabelRtlOutlet : linkLabelLtrOutlet\"></ng-container>\r\n </a>\r\n</ng-template>\r\n<ng-template #linkLabelLtrOutlet>\r\n <div\r\n class=\"anml-data\"\r\n [dir]=\"'ltr'\">\r\n <ng-container *ngTemplateOutlet=\"iconContainer\"></ng-container>\r\n <span class=\"label\">{{node.label}}</span>\r\n </div>\r\n <div\r\n class=\"amml-icon-arrow-container\"\r\n *ngIf='node.hasChildren'>\r\n <mat-icon [@ExpandedLTR]=\"nodeExpandStatus()\">keyboard_arrow_down</mat-icon>\r\n </div>\r\n</ng-template>\r\n<ng-template #linkLabelRtlOutlet>\r\n <div\r\n class=\"anml-data\"\r\n [dir]=\"'rtl'\">\r\n <ng-container *ngTemplateOutlet=\"iconContainer\"></ng-container>\r\n <span class=\"label\">{{node.label}}</span>\r\n </div>\r\n <div\r\n class=\"amml-icon-arrow-container\"\r\n *ngIf='node.hasChildren'>\r\n <mat-icon [@ExpandedRTL]=\"nodeExpandStatus()\">keyboard_arrow_down</mat-icon>\r\n </div>\r\n</ng-template>\r\n<ng-template #iconContainer>\r\n <div\r\n class=\"icon-container\"\r\n [ngSwitch]=\"getListIcon(node)\">\r\n <span\r\n *ngSwitchCase=\"'faIcon'\"\r\n class=\"amml-icon amml-icon-fa\">\r\n <i [ngClass]=\"getSelectedFaIcon()\"></i>\r\n </span>\r\n <mat-icon\r\n *ngSwitchCase=\"'icon'\"\r\n class=\"amml-icon\">\r\n {{getSelectedIcon()}}\r\n </mat-icon>\r\n <mat-icon\r\n *ngSwitchCase=\"'svgIcon'\"\r\n class=\"amml-icon amml-svg-icon\"\r\n svgIcon=\"{{getSelectedSvgIcon()}}\">\r\n </mat-icon>\r\n <img\r\n *ngSwitchCase=\"'imageIcon'\"\r\n matListAvatar\r\n class=\"amml-icon\"\r\n src=\"{{getSelectedImageIcon()}}\"\r\n alt=\"{{node.label}}\">\r\n </div>\r\n</ng-template>\r\n", styles: [".amml-item{position:relative;cursor:pointer}.anml-link{width:100%;display:flex;justify-content:flex-start;text-transform:capitalize;text-decoration:none;color:inherit}.anml-data{width:100%;height:48px;display:flex;justify-content:flex-start}.disabled-amml-item{opacity:.5;text-decoration:none;pointer-events:none}.icon-container{display:flex;flex-direction:column;justify-content:center}.amml-icon-fa{font-size:20px}.label{line-height:48px;font-weight:400}.amml-svg-icon{width:22px;height:22px;margin-top:-12px}.amml-icon-arrow-container{direction:ltr;display:flex;align-items:center}div[dir=ltr] .amml-icon{margin-right:16px}div[dir=rtl] .amml-icon{margin-left:16px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], animations: [ExpandedLTR, ExpandedRTL] }); } export { ListItemContentComponent }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: ListItemContentComponent, decorators: [{ type: Component, args: [{ selector: 'ng-list-item-content', animations: [ExpandedLTR, ExpandedRTL], template: "<ng-container *ngTemplateOutlet=\"node.externalRedirect ? redirectLinkTemplate : routerLinkTemplate\"></ng-container>\r\n<ng-template #redirectLinkTemplate>\r\n <a\r\n class=\"anml-link\"\r\n [href]=\"node.link\"\r\n [target]=\"getHrefTargetType()\">\r\n <ng-container *ngTemplateOutlet=\"isRtlLayout ? linkLabelRtlOutlet : linkLabelLtrOutlet\"></ng-container>\r\n </a>\r\n</ng-template>\r\n<ng-template #routerLinkTemplate>\r\n <a\r\n class=\"anml-link\"\r\n *ngIf=\"!node.externalRedirect && node.link\"\r\n [routerLink]=\"node.link\">\r\n <ng-container *ngTemplateOutlet=\"isRtlLayout ? linkLabelRtlOutlet : linkLabelLtrOutlet\"></ng-container>\r\n </a>\r\n <a\r\n class=\"anml-link\"\r\n *ngIf=\"!node.link\">\r\n <ng-container *ngTemplateOutlet=\"isRtlLayout ? linkLabelRtlOutlet : linkLabelLtrOutlet\"></ng-container>\r\n </a>\r\n</ng-template>\r\n<ng-template #linkLabelLtrOutlet>\r\n <div\r\n class=\"anml-data\"\r\n [dir]=\"'ltr'\">\r\n <ng-container *ngTemplateOutlet=\"iconContainer\"></ng-container>\r\n <span class=\"label\">{{node.label}}</span>\r\n </div>\r\n <div\r\n class=\"amml-icon-arrow-container\"\r\n *ngIf='node.hasChildren'>\r\n <mat-icon [@ExpandedLTR]=\"nodeExpandStatus()\">keyboard_arrow_down</mat-icon>\r\n </div>\r\n</ng-template>\r\n<ng-template #linkLabelRtlOutlet>\r\n <div\r\n class=\"anml-data\"\r\n [dir]=\"'rtl'\">\r\n <ng-container *ngTemplateOutlet=\"iconContainer\"></ng-container>\r\n <span class=\"label\">{{node.label}}</span>\r\n </div>\r\n <div\r\n class=\"amml-icon-arrow-container\"\r\n *ngIf='node.hasChildren'>\r\n <mat-icon [@ExpandedRTL]=\"nodeExpandStatus()\">keyboard_arrow_down</mat-icon>\r\n </div>\r\n</ng-template>\r\n<ng-template #iconContainer>\r\n <div\r\n class=\"icon-container\"\r\n [ngSwitch]=\"getListIcon(node)\">\r\n <span\r\n *ngSwitchCase=\"'faIcon'\"\r\n class=\"amml-icon amml-icon-fa\">\r\n <i [ngClass]=\"getSelectedFaIcon()\"></i>\r\n </span>\r\n <mat-icon\r\n *ngSwitchCase=\"'icon'\"\r\n class=\"amml-icon\">\r\n {{getSelectedIcon()}}\r\n </mat-icon>\r\n <mat-icon\r\n *ngSwitchCase=\"'svgIcon'\"\r\n class=\"amml-icon amml-svg-icon\"\r\n svgIcon=\"{{getSelectedSvgIcon()}}\">\r\n </mat-icon>\r\n <img\r\n *ngSwitchCase=\"'imageIcon'\"\r\n matListAvatar\r\n class=\"amml-icon\"\r\n src=\"{{getSelectedImageIcon()}}\"\r\n alt=\"{{node.label}}\">\r\n </div>\r\n</ng-template>\r\n", styles: [".amml-item{position:relative;cursor:pointer}.anml-link{width:100%;display:flex;justify-content:flex-start;text-transform:capitalize;text-decoration:none;color:inherit}.anml-data{width:100%;height:48px;display:flex;justify-content:flex-start}.disabled-amml-item{opacity:.5;text-decoration:none;pointer-events:none}.icon-container{display:flex;flex-direction:column;justify-content:center}.amml-icon-fa{font-size:20px}.label{line-height:48px;font-weight:400}.amml-svg-icon{width:22px;height:22px;margin-top:-12px}.amml-icon-arrow-container{direction:ltr;display:flex;align-items:center}div[dir=ltr] .amml-icon{margin-right:16px}div[dir=rtl] .amml-icon{margin-left:16px}\n"] }] }], propDecorators: { node: [{ type: Input }], isRtlLayout: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1pdGVtLWNvbnRlbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctbWF0ZXJpYWwtbXVsdGlsZXZlbC1tZW51L3NyYy9saWIvbGlzdC1pdGVtL2xpc3QtaXRlbS1jb250ZW50L2xpc3QtaXRlbS1jb250ZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLW1hdGVyaWFsLW11bHRpbGV2ZWwtbWVudS9zcmMvbGliL2xpc3QtaXRlbS9saXN0LWl0ZW0tY29udGVudC9saXN0LWl0ZW0tY29udGVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQUUzQyxNQU1hLHdCQUF3QjtJQUN4QixJQUFJLENBQWlCO0lBQ3JCLFdBQVcsQ0FBVTtJQUU5QixXQUFXLENBQUMsSUFBb0I7UUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbEQsT0FBTyxNQUFNLENBQUM7U0FDakI7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNwRCxPQUFPLFFBQVEsQ0FBQztTQUNuQjtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3ZELE9BQU8sV0FBVyxDQUFDO1NBQ3RCO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDckQsT0FBTyxTQUFTLENBQUM7U0FDcEI7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxpQkFBaUI7UUFDYixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUFDO0lBQ25HLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDekcsQ0FBQztJQUVELGVBQWU7UUFDWCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDaEcsQ0FBQztJQUVELGlCQUFpQjtRQUNiLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN0RyxDQUFDO0lBRUQsb0JBQW9CO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMvRyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztJQUMzRCxDQUFDO3VHQTFDUSx3QkFBd0I7MkZBQXhCLHdCQUF3QixrSENackMsNHVGQTJFQSxndUREakVnQixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUM7O1NBRTdCLHdCQUF3QjsyRkFBeEIsd0JBQXdCO2tCQU5wQyxTQUFTOytCQUNJLHNCQUFzQixjQUdwQixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUM7OEJBRzdCLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNdWx0aWxldmVsTm9kZSB9IGZyb20gJy4uLy4uL2FwcC5tb2RlbCc7XHJcbmltcG9ydCB7IEV4cGFuZGVkTFRSLCBFeHBhbmRlZFJUTCB9IGZyb20gJy4uLy4uL2FuaW1hdGlvbic7XHJcbmltcG9ydCB7IENvbW1vblV0aWxzIH0gZnJvbSAnLi4vLi4vY29tbW9uLXV0aWxzJztcclxuaW1wb3J0IHsgQ09OU1RBTlQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ25nLWxpc3QtaXRlbS1jb250ZW50JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9saXN0LWl0ZW0tY29udGVudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9saXN0LWl0ZW0tY29udGVudC5jb21wb25lbnQuY3NzJ10sXHJcbiAgICBhbmltYXRpb25zOiBbRXhwYW5kZWRMVFIsIEV4cGFuZGVkUlRMXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIExpc3RJdGVtQ29udGVudENvbXBvbmVudCB7XHJcbiAgICBASW5wdXQoKSBub2RlOiBNdWx0aWxldmVsTm9kZTtcclxuICAgIEBJbnB1dCgpIGlzUnRsTGF5b3V0OiBib29sZWFuO1xyXG5cclxuICAgIGdldExpc3RJY29uKG5vZGU6IE11bHRpbGV2ZWxOb2RlKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoIUNvbW1vblV0aWxzLmlzTnVsbE9yVW5kZWZpbmVkT3JFbXB0eShub2RlLmljb24pKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBgaWNvbmA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghQ29tbW9uVXRpbHMuaXNOdWxsT3JVbmRlZmluZWRPckVtcHR5KG5vZGUuZmFJY29uKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gYGZhSWNvbmA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghQ29tbW9uVXRpbHMuaXNOdWxsT3JVbmRlZmluZWRPckVtcHR5KG5vZGUuaW1hZ2VJY29uKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gYGltYWdlSWNvbmA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghQ29tbW9uVXRpbHMuaXNOdWxsT3JVbmRlZmluZWRPckVtcHR5KG5vZGUuc3ZnSWNvbikpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGBzdmdJY29uYDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGBgO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEhyZWZUYXJnZXRUeXBlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubm9kZS5ocmVmVGFyZ2V0VHlwZSA/IHRoaXMubm9kZS5ocmVmVGFyZ2V0VHlwZSA6IENPTlNUQU5ULkRFRkFVTFRfSFJFRl9UQVJHRVRfVFlQRTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTZWxlY3RlZFN2Z0ljb24oKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ub2RlLmlzU2VsZWN0ZWQgJiYgdGhpcy5ub2RlLmFjdGl2ZVN2Z0ljb24gPyB0aGlzLm5vZGUuYWN0aXZlU3ZnSWNvbiA6IHRoaXMubm9kZS5zdmdJY29uO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFNlbGVjdGVkSWNvbigpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm5vZGUuaXNTZWxlY3RlZCAmJiB0aGlzLm5vZGUuYWN0aXZlSWNvbiA/IHRoaXMubm9kZS5hY3RpdmVJY29uIDogdGhpcy5ub2RlLmljb247XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2VsZWN0ZWRGYUljb24oKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ub2RlLmlzU2VsZWN0ZWQgJiYgdGhpcy5ub2RlLmFjdGl2ZUZhSWNvbiA/IHRoaXMubm9kZS5hY3RpdmVGYUljb24gOiB0aGlzLm5vZGUuZmFJY29uO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFNlbGVjdGVkSW1hZ2VJY29uKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubm9kZS5pc1NlbGVjdGVkICYmIHRoaXMubm9kZS5hY3RpdmVJbWFnZUljb24gPyB0aGlzLm5vZGUuYWN0aXZlSW1hZ2VJY29uIDogdGhpcy5ub2RlLmltYWdlSWNvbjtcclxuICAgIH1cclxuXHJcbiAgICBub2RlRXhwYW5kU3RhdHVzKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubm9kZS5leHBhbmRlZCA/IENPTlNUQU5ULllFUyA6IENPTlNUQU5ULk5PO1xyXG4gICAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub2RlLmV4dGVybmFsUmVkaXJlY3QgPyByZWRpcmVjdExpbmtUZW1wbGF0ZSA6IHJvdXRlckxpbmtUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG48bmctdGVtcGxhdGUgI3JlZGlyZWN0TGlua1RlbXBsYXRlPlxyXG4gICAgPGFcclxuICAgICAgICBjbGFzcz1cImFubWwtbGlua1wiXHJcbiAgICAgICAgW2hyZWZdPVwibm9kZS5saW5rXCJcclxuICAgICAgICBbdGFyZ2V0XT1cImdldEhyZWZUYXJnZXRUeXBlKClcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXNSdGxMYXlvdXQgPyBsaW5rTGFiZWxSdGxPdXRsZXQgOiBsaW5rTGFiZWxMdHJPdXRsZXRcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvYT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNyb3V0ZXJMaW5rVGVtcGxhdGU+XHJcbiAgICA8YVxyXG4gICAgICAgIGNsYXNzPVwiYW5tbC1saW5rXCJcclxuICAgICAgICAqbmdJZj1cIiFub2RlLmV4dGVybmFsUmVkaXJlY3QgJiYgbm9kZS5saW5rXCJcclxuICAgICAgICBbcm91dGVyTGlua109XCJub2RlLmxpbmtcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXNSdGxMYXlvdXQgPyBsaW5rTGFiZWxSdGxPdXRsZXQgOiBsaW5rTGFiZWxMdHJPdXRsZXRcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvYT5cclxuICAgIDxhXHJcbiAgICAgICAgY2xhc3M9XCJhbm1sLWxpbmtcIlxyXG4gICAgICAgICpuZ0lmPVwiIW5vZGUubGlua1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpc1J0bExheW91dCA/IGxpbmtMYWJlbFJ0bE91dGxldCA6IGxpbmtMYWJlbEx0ck91dGxldFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9hPlxyXG48L25nLXRlbXBsYXRlPlxyXG48bmctdGVtcGxhdGUgI2xpbmtMYWJlbEx0ck91dGxldD5cclxuICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImFubWwtZGF0YVwiXHJcbiAgICAgICAgW2Rpcl09XCInbHRyJ1wiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpY29uQ29udGFpbmVyXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPnt7bm9kZS5sYWJlbH19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJhbW1sLWljb24tYXJyb3ctY29udGFpbmVyXCJcclxuICAgICAgICAqbmdJZj0nbm9kZS5oYXNDaGlsZHJlbic+XHJcbiAgICAgICAgPG1hdC1pY29uIFtARXhwYW5kZWRMVFJdPVwibm9kZUV4cGFuZFN0YXR1cygpXCI+a2V5Ym9hcmRfYXJyb3dfZG93bjwvbWF0LWljb24+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNsaW5rTGFiZWxSdGxPdXRsZXQ+XHJcbiAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJhbm1sLWRhdGFcIlxyXG4gICAgICAgIFtkaXJdPVwiJ3J0bCdcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWNvbkNvbnRhaW5lclwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj57e25vZGUubGFiZWx9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiYW1tbC1pY29uLWFycm93LWNvbnRhaW5lclwiXHJcbiAgICAgICAgKm5nSWY9J25vZGUuaGFzQ2hpbGRyZW4nPlxyXG4gICAgICAgIDxtYXQtaWNvbiBbQEV4cGFuZGVkUlRMXT1cIm5vZGVFeHBhbmRTdGF0dXMoKVwiPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy10ZW1wbGF0ZSAjaWNvbkNvbnRhaW5lcj5cclxuICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImljb24tY29udGFpbmVyXCJcclxuICAgICAgICBbbmdTd2l0Y2hdPVwiZ2V0TGlzdEljb24obm9kZSlcIj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2ZhSWNvbidcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImFtbWwtaWNvbiBhbW1sLWljb24tZmFcIj5cclxuICAgICAgICAgICAgPGkgW25nQ2xhc3NdPVwiZ2V0U2VsZWN0ZWRGYUljb24oKVwiPjwvaT5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPG1hdC1pY29uXHJcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInaWNvbidcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImFtbWwtaWNvblwiPlxyXG4gICAgICAgICAgICB7e2dldFNlbGVjdGVkSWNvbigpfX1cclxuICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgIDxtYXQtaWNvblxyXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ3N2Z0ljb24nXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJhbW1sLWljb24gYW1tbC1zdmctaWNvblwiXHJcbiAgICAgICAgICAgIHN2Z0ljb249XCJ7e2dldFNlbGVjdGVkU3ZnSWNvbigpfX1cIj5cclxuICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgIDxpbWdcclxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidpbWFnZUljb24nXCJcclxuICAgICAgICAgICAgbWF0TGlzdEF2YXRhclxyXG4gICAgICAgICAgICBjbGFzcz1cImFtbWwtaWNvblwiXHJcbiAgICAgICAgICAgIHNyYz1cInt7Z2V0U2VsZWN0ZWRJbWFnZUljb24oKX19XCJcclxuICAgICAgICAgICAgYWx0PVwie3tub2RlLmxhYmVsfX1cIj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=