UNPKG

@netgrif/components

Version:

Netgrif Application Engine frontend Angular components

24 lines 21.5 kB
import { Component } from '@angular/core'; import { AbstractUserCardComponent } from '@netgrif/components-core'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "@angular/router"; import * as i3 from "@ngbracket/ngx-layout"; import * as i4 from "@ngbracket/ngx-layout/extended"; import * as i5 from "@angular/material/core"; import * as i6 from "@angular/material/tooltip"; import * as i7 from "@ngx-translate/core"; export class UserCardComponent extends AbstractUserCardComponent { _injector; constructor(_injector) { super(_injector); this._injector = _injector; } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UserCardComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: UserCardComponent, selector: "nc-user-card", usesInheritance: true, ngImport: i0, template: "<div [ngSwitch]=\"mode\" class=\"no-outline\">\n <div *ngSwitchCase=\"'full'\" #fullShowcase fxLayout=\"column\" fxLayoutAlign=\"start center\"\n class=\"full-showcase-container no-outline margin-bottom-x2\" [style.width.px]=\"width\"\n [routerLink]=\"link\">\n <ng-template [ngIf]=\"!userBannerExists()\">\n <div class=\"banner-wrapper mat-elevation-z6\" matRipple [matRippleTrigger]=\"fullShowcase\">\n <div [style.backgroundImage]=\"'url(assets/netgrif-cubes-upper-left.png)'\" class=\"cube-upper-left\">\n <div [style.backgroundImage]=\"'url(assets/netgrif-cubes-down-right.png)'\" class=\"cube-down-right\"></div>\n </div>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"userBannerExists()\">\n <div [style.backgroundImage]=\"'url('+userBanner+')'\" class=\"full-width user-banner mat-elevation-z6\" matRipple\n [matRippleTrigger]=\"fullShowcase\"></div>\n </ng-template>\n <div class=\"user-avatar-large margin-bottom-default mat-elevation-z6\" matRipple\n [matRippleTrigger]=\"fullShowcase\">\n <img [src]=\"userAvatar\" alt=\"user avatar\" class=\"full-width full-height\">\n </div>\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" class=\"full-width full-showcase-text padding-default\">\n <span>{{user.fullName}}</span>\n <span class=\"impersonated-user-name\" *ngIf=\"user.isImpersonating()\">{{'side-menu.impersonation.impersonating' | translate }} {{user.getSelfOrImpersonated().fullName}}</span>\n <span>{{user.email}}</span>\n </div>\n </div>\n <div *ngSwitchCase=\"'horizontal'\" fxLayout=\"row\" fxLayoutAlign=\"start center\"\n class=\"horizontal-showcase-container no-outline padding-default\" [routerLink]=\"link\" matRipple>\n <div class=\"user-avatar-large mat-elevation-z6\">\n <img [src]=\"userAvatar\" alt=\"user avatar\" class=\"full-width full-height\">\n </div>\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" class=\"full-width full-showcase-text\">\n <span>{{user.fullName}}</span>\n <span>{{user.email}}</span>\n </div>\n </div>\n <div *ngSwitchCase=\"'vertical'\" fxLayout=\"column\" fxLayoutAlign=\"start center\"\n class=\"vertical-showcase-container no-outline padding-default\"\n [routerLink]=\"link\" matRipple>\n <div class=\"user-avatar-large mat-elevation-z6\">\n <img [src]=\"userAvatar\" alt=\"user avatar\" class=\"full-width full-height\">\n </div>\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" class=\"full-width full-showcase-text\">\n <span>{{user.fullName}}</span>\n <span>{{user.email}}</span>\n </div>\n </div>\n <div *ngSwitchCase=\"'icon'\" [routerLink]=\"link\">\n <div class=\"mat-elevation-z6 no-outline\"\n [ngClass]=\"{'user-avatar-large':iconStyle === 'large', 'user-avatar-small':iconStyle==='small'}\"\n [matTooltip]=\"user.fullName+'\\n'+user.email\"\n matTooltipHideDelay=\"1000\"\n [matTooltipPosition]=\"tooltipPosition\"\n matRipple>\n <img [src]=\"userAvatar\" alt=\"user avatar\" class=\"full-width full-height\">\n </div>\n </div>\n <div *ngSwitchDefault>\n <span>{{ 'side-menu.user.showcase' | translate}}</span>\n </div>\n</div>\n\n\n", styles: [".full-height{height:100%;min-height:100%}.full-width{width:100%;min-width:100%}.padding-default{padding:8px}.padding-half{padding:4px}.padding-x2{padding:16px}.margin-default{margin:8px}.margin-half{margin:4px}.margin-x2{margin:16px}.margin-top-default{margin-top:8px}.margin-top-half{margin-top:4px}.margin-top-x2{margin-top:16px}.margin-bottom-default{margin-bottom:8px}.margin-bottom-half{margin-bottom:4px}.margin-bottom-x2{margin-bottom:16px}.margin-left-default{margin-left:8px}.margin-left-half{margin-left:4px}.margin-left-x2{margin-left:16px}.margin-right-default{margin-right:8px}.margin-right-half{margin-right:4px}.margin-right-x2{margin-right:16px}.full-showcase-container .user-banner{height:100px;border-bottom-left-radius:6px;border-bottom-right-radius:6px}.full-showcase-container .user-avatar-large{margin-top:-32px}.banner-wrapper{height:100px;width:100%}.cube-upper-left{width:100%;height:100%;background-repeat:no-repeat;background-size:auto 80px}.cube-down-right{background-repeat:no-repeat;background-position-x:right;background-position-y:bottom;background-size:auto 30px;min-width:100%;min-height:100%;padding:0;margin:0}.user-avatar-large{width:64px;height:64px;border-radius:64px}.user-avatar-small{width:46px;height:46px;border-radius:46px}.full-showcase-text{text-align:center}.full-showcase-text span{font-size:12px;color:#616161}.full-showcase-text span:first-child{font-size:20px;color:#424242;margin-bottom:4px}.impersonated-user-name{font-size:16px}.horizontal-showcase-container{height:80px;border:1px solid #fd971f;border-radius:6px}.horizontal-showcase-container .user-avatar-large{margin-right:8px}.vertical-showcase-container{width:160px;border:1px solid #f0ad4e;border-radius:6px;white-space:pre-line}.vertical-showcase-container .user-avatar-large{margin-bottom:8px}::ng-deep .mat-mdc-tooltip{white-space:pre-line!important;text-align:center}.no-outline{outline:none!important}\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.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i4.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i5.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UserCardComponent, decorators: [{ type: Component, args: [{ selector: 'nc-user-card', template: "<div [ngSwitch]=\"mode\" class=\"no-outline\">\n <div *ngSwitchCase=\"'full'\" #fullShowcase fxLayout=\"column\" fxLayoutAlign=\"start center\"\n class=\"full-showcase-container no-outline margin-bottom-x2\" [style.width.px]=\"width\"\n [routerLink]=\"link\">\n <ng-template [ngIf]=\"!userBannerExists()\">\n <div class=\"banner-wrapper mat-elevation-z6\" matRipple [matRippleTrigger]=\"fullShowcase\">\n <div [style.backgroundImage]=\"'url(assets/netgrif-cubes-upper-left.png)'\" class=\"cube-upper-left\">\n <div [style.backgroundImage]=\"'url(assets/netgrif-cubes-down-right.png)'\" class=\"cube-down-right\"></div>\n </div>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"userBannerExists()\">\n <div [style.backgroundImage]=\"'url('+userBanner+')'\" class=\"full-width user-banner mat-elevation-z6\" matRipple\n [matRippleTrigger]=\"fullShowcase\"></div>\n </ng-template>\n <div class=\"user-avatar-large margin-bottom-default mat-elevation-z6\" matRipple\n [matRippleTrigger]=\"fullShowcase\">\n <img [src]=\"userAvatar\" alt=\"user avatar\" class=\"full-width full-height\">\n </div>\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" class=\"full-width full-showcase-text padding-default\">\n <span>{{user.fullName}}</span>\n <span class=\"impersonated-user-name\" *ngIf=\"user.isImpersonating()\">{{'side-menu.impersonation.impersonating' | translate }} {{user.getSelfOrImpersonated().fullName}}</span>\n <span>{{user.email}}</span>\n </div>\n </div>\n <div *ngSwitchCase=\"'horizontal'\" fxLayout=\"row\" fxLayoutAlign=\"start center\"\n class=\"horizontal-showcase-container no-outline padding-default\" [routerLink]=\"link\" matRipple>\n <div class=\"user-avatar-large mat-elevation-z6\">\n <img [src]=\"userAvatar\" alt=\"user avatar\" class=\"full-width full-height\">\n </div>\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" class=\"full-width full-showcase-text\">\n <span>{{user.fullName}}</span>\n <span>{{user.email}}</span>\n </div>\n </div>\n <div *ngSwitchCase=\"'vertical'\" fxLayout=\"column\" fxLayoutAlign=\"start center\"\n class=\"vertical-showcase-container no-outline padding-default\"\n [routerLink]=\"link\" matRipple>\n <div class=\"user-avatar-large mat-elevation-z6\">\n <img [src]=\"userAvatar\" alt=\"user avatar\" class=\"full-width full-height\">\n </div>\n <div fxLayout=\"column\" fxLayoutAlign=\"center center\" class=\"full-width full-showcase-text\">\n <span>{{user.fullName}}</span>\n <span>{{user.email}}</span>\n </div>\n </div>\n <div *ngSwitchCase=\"'icon'\" [routerLink]=\"link\">\n <div class=\"mat-elevation-z6 no-outline\"\n [ngClass]=\"{'user-avatar-large':iconStyle === 'large', 'user-avatar-small':iconStyle==='small'}\"\n [matTooltip]=\"user.fullName+'\\n'+user.email\"\n matTooltipHideDelay=\"1000\"\n [matTooltipPosition]=\"tooltipPosition\"\n matRipple>\n <img [src]=\"userAvatar\" alt=\"user avatar\" class=\"full-width full-height\">\n </div>\n </div>\n <div *ngSwitchDefault>\n <span>{{ 'side-menu.user.showcase' | translate}}</span>\n </div>\n</div>\n\n\n", styles: [".full-height{height:100%;min-height:100%}.full-width{width:100%;min-width:100%}.padding-default{padding:8px}.padding-half{padding:4px}.padding-x2{padding:16px}.margin-default{margin:8px}.margin-half{margin:4px}.margin-x2{margin:16px}.margin-top-default{margin-top:8px}.margin-top-half{margin-top:4px}.margin-top-x2{margin-top:16px}.margin-bottom-default{margin-bottom:8px}.margin-bottom-half{margin-bottom:4px}.margin-bottom-x2{margin-bottom:16px}.margin-left-default{margin-left:8px}.margin-left-half{margin-left:4px}.margin-left-x2{margin-left:16px}.margin-right-default{margin-right:8px}.margin-right-half{margin-right:4px}.margin-right-x2{margin-right:16px}.full-showcase-container .user-banner{height:100px;border-bottom-left-radius:6px;border-bottom-right-radius:6px}.full-showcase-container .user-avatar-large{margin-top:-32px}.banner-wrapper{height:100px;width:100%}.cube-upper-left{width:100%;height:100%;background-repeat:no-repeat;background-size:auto 80px}.cube-down-right{background-repeat:no-repeat;background-position-x:right;background-position-y:bottom;background-size:auto 30px;min-width:100%;min-height:100%;padding:0;margin:0}.user-avatar-large{width:64px;height:64px;border-radius:64px}.user-avatar-small{width:46px;height:46px;border-radius:46px}.full-showcase-text{text-align:center}.full-showcase-text span{font-size:12px;color:#616161}.full-showcase-text span:first-child{font-size:20px;color:#424242;margin-bottom:4px}.impersonated-user-name{font-size:16px}.horizontal-showcase-container{height:80px;border:1px solid #fd971f;border-radius:6px}.horizontal-showcase-container .user-avatar-large{margin-right:8px}.vertical-showcase-container{width:160px;border:1px solid #f0ad4e;border-radius:6px;white-space:pre-line}.vertical-showcase-container .user-avatar-large{margin-bottom:8px}::ng-deep .mat-mdc-tooltip{white-space:pre-line!important;text-align:center}.no-outline{outline:none!important}\n"] }] }], ctorParameters: () => [{ type: i0.Injector }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy9zcmMvbGliL3VzZXIvdXNlci1jYXJkL3VzZXItY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMvc3JjL2xpYi91c2VyL3VzZXItY2FyZC91c2VyLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBVyxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7O0FBT25FLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSx5QkFBeUI7SUFFdEM7SUFBdEIsWUFBc0IsU0FBbUI7UUFDckMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBREMsY0FBUyxHQUFULFNBQVMsQ0FBVTtJQUV6QyxDQUFDO3dHQUpRLGlCQUFpQjs0RkFBakIsaUJBQWlCLDJFQ1I5QixnOUdBOERBOzs0RkR0RGEsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNJLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5qZWN0b3J9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBYnN0cmFjdFVzZXJDYXJkQ29tcG9uZW50fSBmcm9tICdAbmV0Z3JpZi9jb21wb25lbnRzLWNvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25jLXVzZXItY2FyZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3VzZXItY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdXNlci1jYXJkLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVXNlckNhcmRDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdFVzZXJDYXJkQ29tcG9uZW50IHtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICAgIHN1cGVyKF9pbmplY3Rvcik7XG4gICAgfVxufVxuIiwiPGRpdiBbbmdTd2l0Y2hdPVwibW9kZVwiIGNsYXNzPVwibm8tb3V0bGluZVwiPlxuICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidmdWxsJ1wiICNmdWxsU2hvd2Nhc2UgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCJcbiAgICAgICAgIGNsYXNzPVwiZnVsbC1zaG93Y2FzZS1jb250YWluZXIgbm8tb3V0bGluZSBtYXJnaW4tYm90dG9tLXgyXCIgW3N0eWxlLndpZHRoLnB4XT1cIndpZHRoXCJcbiAgICAgICAgIFtyb3V0ZXJMaW5rXT1cImxpbmtcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIiF1c2VyQmFubmVyRXhpc3RzKClcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYW5uZXItd3JhcHBlciBtYXQtZWxldmF0aW9uLXo2XCIgbWF0UmlwcGxlIFttYXRSaXBwbGVUcmlnZ2VyXT1cImZ1bGxTaG93Y2FzZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgW3N0eWxlLmJhY2tncm91bmRJbWFnZV09XCIndXJsKGFzc2V0cy9uZXRncmlmLWN1YmVzLXVwcGVyLWxlZnQucG5nKSdcIiBjbGFzcz1cImN1YmUtdXBwZXItbGVmdFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtzdHlsZS5iYWNrZ3JvdW5kSW1hZ2VdPVwiJ3VybChhc3NldHMvbmV0Z3JpZi1jdWJlcy1kb3duLXJpZ2h0LnBuZyknXCIgY2xhc3M9XCJjdWJlLWRvd24tcmlnaHRcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwidXNlckJhbm5lckV4aXN0cygpXCI+XG4gICAgICAgICAgICA8ZGl2IFtzdHlsZS5iYWNrZ3JvdW5kSW1hZ2VdPVwiJ3VybCgnK3VzZXJCYW5uZXIrJyknXCIgY2xhc3M9XCJmdWxsLXdpZHRoIHVzZXItYmFubmVyIG1hdC1lbGV2YXRpb24tejZcIiBtYXRSaXBwbGVcbiAgICAgICAgICAgICAgICAgW21hdFJpcHBsZVRyaWdnZXJdPVwiZnVsbFNob3djYXNlXCI+PC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWF2YXRhci1sYXJnZSBtYXJnaW4tYm90dG9tLWRlZmF1bHQgbWF0LWVsZXZhdGlvbi16NlwiIG1hdFJpcHBsZVxuICAgICAgICAgICAgIFttYXRSaXBwbGVUcmlnZ2VyXT1cImZ1bGxTaG93Y2FzZVwiPlxuICAgICAgICAgICAgPGltZyBbc3JjXT1cInVzZXJBdmF0YXJcIiBhbHQ9XCJ1c2VyIGF2YXRhclwiIGNsYXNzPVwiZnVsbC13aWR0aCBmdWxsLWhlaWdodFwiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgY2xhc3M9XCJmdWxsLXdpZHRoIGZ1bGwtc2hvd2Nhc2UtdGV4dCBwYWRkaW5nLWRlZmF1bHRcIj5cbiAgICAgICAgICAgIDxzcGFuPnt7dXNlci5mdWxsTmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbXBlcnNvbmF0ZWQtdXNlci1uYW1lXCIgKm5nSWY9XCJ1c2VyLmlzSW1wZXJzb25hdGluZygpXCI+e3snc2lkZS1tZW51LmltcGVyc29uYXRpb24uaW1wZXJzb25hdGluZycgfCB0cmFuc2xhdGUgfX0ge3t1c2VyLmdldFNlbGZPckltcGVyc29uYXRlZCgpLmZ1bGxOYW1lfX08L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj57e3VzZXIuZW1haWx9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2hvcml6b250YWwnXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCJcbiAgICAgICAgIGNsYXNzPVwiaG9yaXpvbnRhbC1zaG93Y2FzZS1jb250YWluZXIgbm8tb3V0bGluZSBwYWRkaW5nLWRlZmF1bHRcIiBbcm91dGVyTGlua109XCJsaW5rXCIgbWF0UmlwcGxlPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1hdmF0YXItbGFyZ2UgbWF0LWVsZXZhdGlvbi16NlwiPlxuICAgICAgICAgICAgPGltZyBbc3JjXT1cInVzZXJBdmF0YXJcIiBhbHQ9XCJ1c2VyIGF2YXRhclwiIGNsYXNzPVwiZnVsbC13aWR0aCBmdWxsLWhlaWdodFwiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgY2xhc3M9XCJmdWxsLXdpZHRoIGZ1bGwtc2hvd2Nhc2UtdGV4dFwiPlxuICAgICAgICAgICAgPHNwYW4+e3t1c2VyLmZ1bGxOYW1lfX08L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj57e3VzZXIuZW1haWx9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ3ZlcnRpY2FsJ1wiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiXG4gICAgICAgICBjbGFzcz1cInZlcnRpY2FsLXNob3djYXNlLWNvbnRhaW5lciBuby1vdXRsaW5lIHBhZGRpbmctZGVmYXVsdFwiXG4gICAgICAgICBbcm91dGVyTGlua109XCJsaW5rXCIgbWF0UmlwcGxlPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1hdmF0YXItbGFyZ2UgbWF0LWVsZXZhdGlvbi16NlwiPlxuICAgICAgICAgICAgPGltZyBbc3JjXT1cInVzZXJBdmF0YXJcIiBhbHQ9XCJ1c2VyIGF2YXRhclwiIGNsYXNzPVwiZnVsbC13aWR0aCBmdWxsLWhlaWdodFwiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgY2xhc3M9XCJmdWxsLXdpZHRoIGZ1bGwtc2hvd2Nhc2UtdGV4dFwiPlxuICAgICAgICAgICAgPHNwYW4+e3t1c2VyLmZ1bGxOYW1lfX08L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj57e3VzZXIuZW1haWx9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2ljb24nXCIgW3JvdXRlckxpbmtdPVwibGlua1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWF0LWVsZXZhdGlvbi16NiBuby1vdXRsaW5lXCJcbiAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3VzZXItYXZhdGFyLWxhcmdlJzppY29uU3R5bGUgPT09ICdsYXJnZScsICd1c2VyLWF2YXRhci1zbWFsbCc6aWNvblN0eWxlPT09J3NtYWxsJ31cIlxuICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cInVzZXIuZnVsbE5hbWUrJ1xcbicrdXNlci5lbWFpbFwiXG4gICAgICAgICAgICAgbWF0VG9vbHRpcEhpZGVEZWxheT1cIjEwMDBcIlxuICAgICAgICAgICAgIFttYXRUb29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uXCJcbiAgICAgICAgICAgICBtYXRSaXBwbGU+XG4gICAgICAgICAgICA8aW1nIFtzcmNdPVwidXNlckF2YXRhclwiIGFsdD1cInVzZXIgYXZhdGFyXCIgY2xhc3M9XCJmdWxsLXdpZHRoIGZ1bGwtaGVpZ2h0XCI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgPHNwYW4+e3sgJ3NpZGUtbWVudS51c2VyLnNob3djYXNlJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cblxuIl19