@propmix/profet-common-header 3.0.15-utility-unstable.8 → 3.0.16-cross-tab-session-expiry
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/api-endpoints.def.mjs +2 -3
- package/esm2020/lib/api-gateway.service.mjs +13 -5
- package/esm2020/lib/common-header.interface.mjs +1 -1
- package/esm2020/lib/common-header.service.mjs +2 -34
- package/esm2020/lib/header/header.component.mjs +121 -60
- package/esm2020/lib/session-expiry-info/session-expiry-info.component.mjs +3 -3
- package/esm2020/public-api.mjs +1 -3
- package/fesm2015/propmix-profet-common-header.mjs +161 -140
- package/fesm2015/propmix-profet-common-header.mjs.map +1 -1
- package/fesm2020/propmix-profet-common-header.mjs +159 -132
- package/fesm2020/propmix-profet-common-header.mjs.map +1 -1
- package/lib/api-endpoints.def.d.ts +0 -1
- package/lib/api-gateway.service.d.ts +1 -2
- package/lib/common-header.interface.d.ts +0 -22
- package/lib/common-header.service.d.ts +0 -7
- package/lib/header/header.component.d.ts +19 -16
- package/package.json +1 -1
- package/public-api.d.ts +0 -2
- package/esm2020/lib/appraisal-assistant/appraisal-assistant-chat-widget.component.mjs +0 -179
- package/esm2020/lib/appraisal-assistant/appraisal-assistant.interface.mjs +0 -2
- package/esm2020/lib/base-controller.abstract.mjs +0 -11
- package/esm2020/lib/closable.mixin.mjs +0 -14
- package/esm2020/lib/utility-widget-config.token.mjs +0 -3
- package/esm2020/lib/utils/chat-time.pipe.mjs +0 -35
- package/esm2020/lib/utils/text-to-html.pipe.mjs +0 -42
- package/fesm2015/propmix-profet-common-header-appraisal-assistant-chat-widget.component-56a1672f.mjs +0 -281
- package/fesm2015/propmix-profet-common-header-appraisal-assistant-chat-widget.component-56a1672f.mjs.map +0 -1
- package/fesm2020/propmix-profet-common-header-appraisal-assistant-chat-widget.component-8816b836.mjs +0 -276
- package/fesm2020/propmix-profet-common-header-appraisal-assistant-chat-widget.component-8816b836.mjs.map +0 -1
- package/lib/appraisal-assistant/appraisal-assistant-chat-widget.component.d.ts +0 -37
- package/lib/appraisal-assistant/appraisal-assistant.interface.d.ts +0 -4
- package/lib/base-controller.abstract.d.ts +0 -6
- package/lib/closable.mixin.d.ts +0 -7
- package/lib/utility-widget-config.token.d.ts +0 -2
- package/lib/utils/chat-time.pipe.d.ts +0 -7
- package/lib/utils/text-to-html.pipe.d.ts +0 -21
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, EventEmitter, HostListener, inject,
|
|
1
|
+
import { Component, EventEmitter, HostListener, inject, Input, Output, ViewChild } from '@angular/core';
|
|
2
2
|
import { FormControl } from '@angular/forms';
|
|
3
3
|
import { MatSnackBar } from '@angular/material/snack-bar';
|
|
4
4
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
@@ -7,7 +7,6 @@ import { signOut } from 'aws-amplify/auth';
|
|
|
7
7
|
import { CommonHeaderService } from '../common-header.service';
|
|
8
8
|
import { CompanySwitchWarningComponent } from '../company-switch-warning/company-switch-warning.component';
|
|
9
9
|
import { AppConfig } from '../config/app.config';
|
|
10
|
-
import { UTILITY_WIDGET_CONFIG } from '../utility-widget-config.token';
|
|
11
10
|
import { PROFET_APPS } from '../utils/apps.enum';
|
|
12
11
|
import { imageDataUrl } from '../utils/image.dataurl';
|
|
13
12
|
import * as i0 from "@angular/core";
|
|
@@ -24,29 +23,6 @@ import * as i10 from "@angular/material/core";
|
|
|
24
23
|
import * as i11 from "@angular/forms";
|
|
25
24
|
import * as i12 from "../pipes/active-route.pipe";
|
|
26
25
|
export class HeaderComponent {
|
|
27
|
-
async openItem(item) {
|
|
28
|
-
// this.selected = item;
|
|
29
|
-
if (item.loadComponent) {
|
|
30
|
-
this.componentToLoad = await item.loadComponent();
|
|
31
|
-
this.dynamicInjector = Injector.create({
|
|
32
|
-
parent: this.injector,
|
|
33
|
-
providers: [
|
|
34
|
-
{
|
|
35
|
-
provide: UTILITY_WIDGET_CONFIG,
|
|
36
|
-
useValue: item.config?.useValue ?? {}
|
|
37
|
-
}
|
|
38
|
-
]
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
// toggle: if clicking the same item again, close drawer
|
|
42
|
-
if (this.selected?.id === item.id) {
|
|
43
|
-
this.selected = undefined;
|
|
44
|
-
this.utilitySpace.close();
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
this.selected = item;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
26
|
constructor() {
|
|
51
27
|
this.portalUrl = '';
|
|
52
28
|
this.userImageLink = null;
|
|
@@ -56,18 +32,12 @@ export class HeaderComponent {
|
|
|
56
32
|
this._snackbar = inject(MatSnackBar);
|
|
57
33
|
this._headerSer = inject(CommonHeaderService);
|
|
58
34
|
this._domSanitizer = inject(DomSanitizer);
|
|
59
|
-
this.INACTIVITY_LIMIT =
|
|
35
|
+
this.INACTIVITY_LIMIT = 120000; // 2 minutes
|
|
60
36
|
this.logoutEvent = new EventEmitter();
|
|
61
37
|
this.companyControl = new FormControl();
|
|
62
38
|
this.appConfig = AppConfig.appConfig;
|
|
63
39
|
this.companyList = [];
|
|
64
40
|
this.menuList = [];
|
|
65
|
-
this.config = [];
|
|
66
|
-
this.defaultApps = [];
|
|
67
|
-
this.componentToLoad = null;
|
|
68
|
-
this.injector = inject(Injector);
|
|
69
|
-
}
|
|
70
|
-
async ngOnChanges(changes) {
|
|
71
41
|
}
|
|
72
42
|
async ngOnInit() {
|
|
73
43
|
this.updateLastAccessedAppInfo();
|
|
@@ -85,14 +55,6 @@ export class HeaderComponent {
|
|
|
85
55
|
}
|
|
86
56
|
}
|
|
87
57
|
});
|
|
88
|
-
if (!this._headerSer.headerConfig.disableAppraisalAssistantApp) {
|
|
89
|
-
this.defaultApps.push({
|
|
90
|
-
id: 'appraisal-assistant',
|
|
91
|
-
label: 'Appraisal Assistant',
|
|
92
|
-
icon: '3p',
|
|
93
|
-
loadComponent: () => import('../appraisal-assistant/appraisal-assistant-chat-widget.component').then(m => m.AppraisalAssistantChatWidgetComponent)
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
58
|
// if (userInfo?.username) {
|
|
97
59
|
// let userDetails = this._headerSer.getUserDetails();
|
|
98
60
|
// forkJoin([userDetails]).subscribe({
|
|
@@ -109,21 +71,119 @@ export class HeaderComponent {
|
|
|
109
71
|
// });
|
|
110
72
|
// }
|
|
111
73
|
this.resetTimer();
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
74
|
+
// Clear any stale logout signal on init
|
|
75
|
+
this.setCookie('session_expired', '', -1);
|
|
76
|
+
this.startLogoutCheck();
|
|
115
77
|
}
|
|
116
|
-
|
|
78
|
+
/**
|
|
79
|
+
* Helper to get the root domain (e.g. .mycom.ai) to share cookies across subdomains/ports.
|
|
80
|
+
* If on localhost or an IP, it falls back to the hostname.
|
|
81
|
+
*/
|
|
82
|
+
getRootDomain() {
|
|
83
|
+
const hostname = window.location.hostname;
|
|
84
|
+
const parts = hostname.split('.');
|
|
85
|
+
if (parts.length > 2 && !/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(hostname)) {
|
|
86
|
+
// If we have 4+ parts (e.g. app1.local.profet.ai), we want to include the environment (local.profet.ai)
|
|
87
|
+
// to avoid sharing cookies with app1.dev.profet.ai or app1.profet.ai.
|
|
88
|
+
if (parts.length > 3) {
|
|
89
|
+
return '.' + parts.slice(-3).join('.');
|
|
90
|
+
}
|
|
91
|
+
// For standard 3 parts (app1.profet.ai), share on .profet.ai
|
|
92
|
+
return '.' + parts.slice(-2).join('.');
|
|
93
|
+
}
|
|
94
|
+
return hostname;
|
|
95
|
+
}
|
|
96
|
+
setCookie(name, value, days) {
|
|
97
|
+
let expires = "";
|
|
98
|
+
if (days) {
|
|
99
|
+
const date = new Date();
|
|
100
|
+
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
|
|
101
|
+
expires = "; expires=" + date.toUTCString();
|
|
102
|
+
}
|
|
103
|
+
// Important: set domain to allow sharing across subdomains
|
|
104
|
+
const domain = "; domain=" + this.getRootDomain();
|
|
105
|
+
document.cookie = name + "=" + (value || "") + expires + domain + "; path=/";
|
|
106
|
+
}
|
|
107
|
+
getCookie(name) {
|
|
108
|
+
const nameEQ = name + "=";
|
|
109
|
+
const ca = document.cookie.split(';');
|
|
110
|
+
for (let i = 0; i < ca.length; i++) {
|
|
111
|
+
let c = ca[i];
|
|
112
|
+
while (c.charAt(0) == ' ')
|
|
113
|
+
c = c.substring(1, c.length);
|
|
114
|
+
if (c.indexOf(nameEQ) == 0)
|
|
115
|
+
return c.substring(nameEQ.length, c.length);
|
|
116
|
+
}
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
resetTimer(isUserActivity = true) {
|
|
117
120
|
clearTimeout(this.inactivityTimeout);
|
|
121
|
+
// Update global activity timestamp in cookie ONLY if triggered by user activity
|
|
122
|
+
if (isUserActivity) {
|
|
123
|
+
// Use a short expiry (e.g. 1 day) or sync with session length
|
|
124
|
+
this.setCookie('lastActiveSessionTime', Date.now().toString(), 1);
|
|
125
|
+
}
|
|
118
126
|
if (!this._headerSer.isSessionExpiryDialogOpen) {
|
|
119
127
|
this.inactivityTimeout = setTimeout(() => {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
128
|
+
// Check global activity before logging out
|
|
129
|
+
const lastActive = this.getCookie('lastActiveSessionTime');
|
|
130
|
+
const now = Date.now();
|
|
131
|
+
const lastActiveTime = lastActive ? parseInt(lastActive, 10) : 0;
|
|
132
|
+
const elapsed = now - lastActiveTime;
|
|
133
|
+
if (lastActive && elapsed < this.INACTIVITY_LIMIT) {
|
|
134
|
+
// User was active in another tab/app recently
|
|
135
|
+
// Reschedule the check, but DO NOT update the activity timestamp
|
|
136
|
+
this.resetTimer(false);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
// Really inactive across all known tabs
|
|
140
|
+
this.handleLogout();
|
|
141
|
+
}
|
|
124
142
|
}, this.INACTIVITY_LIMIT);
|
|
125
143
|
}
|
|
126
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* Helper to identify the session expiry in in-active tabs.
|
|
147
|
+
*/
|
|
148
|
+
startLogoutCheck() {
|
|
149
|
+
// Poll for the logout signal cookie (works across ports/subdomains)
|
|
150
|
+
this.logoutCheckInterval = setInterval(() => {
|
|
151
|
+
if (this.getCookie('session_expired')) {
|
|
152
|
+
this.handleLogout(false);
|
|
153
|
+
}
|
|
154
|
+
}, 2000); // Check every 2 seconds
|
|
155
|
+
}
|
|
156
|
+
handleLogout(broadcast = true, showPopup = true) {
|
|
157
|
+
// Prevent multiple popups if already open
|
|
158
|
+
if (this._headerSer.isSessionExpiryDialogOpen && showPopup) {
|
|
159
|
+
return; // If popup is already open and we want to show it, do nothing (it's there).
|
|
160
|
+
// If we don't want to show it (manual logout), we proceed to signOut anyway?
|
|
161
|
+
}
|
|
162
|
+
if (broadcast) {
|
|
163
|
+
// Set a cookie to signal other tabs/ports
|
|
164
|
+
this.setCookie('session_expired', 'true', 1);
|
|
165
|
+
}
|
|
166
|
+
this.logoutEvent.emit();
|
|
167
|
+
let sessionUrl = this._headerSer.headerConfig.signOutUrl + '?sessionExpired=true&timeout=' + this.INACTIVITY_LIMIT;
|
|
168
|
+
signOut({ global: true, oauth: { redirectUrl: sessionUrl } })
|
|
169
|
+
.then(() => {
|
|
170
|
+
window.open(sessionUrl, '_self');
|
|
171
|
+
})
|
|
172
|
+
.catch((error) => {
|
|
173
|
+
console.error('Logout failed:', error);
|
|
174
|
+
window.open(sessionUrl, '_self');
|
|
175
|
+
});
|
|
176
|
+
// if (showPopup) {
|
|
177
|
+
// this._headerSer.openSessionExpireInfo({ sessionOutTimeInMins: this.INACTIVITY_LIMIT });
|
|
178
|
+
// }
|
|
179
|
+
if (this.inactivityTimeout) {
|
|
180
|
+
clearTimeout(this.inactivityTimeout);
|
|
181
|
+
}
|
|
182
|
+
// Stop polling once we are logging out
|
|
183
|
+
if (this.logoutCheckInterval) {
|
|
184
|
+
clearInterval(this.logoutCheckInterval);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
127
187
|
selectCurrentCompany() {
|
|
128
188
|
let com = this.companyList.find(x => x.isActive);
|
|
129
189
|
this.activeCompany = com;
|
|
@@ -135,10 +195,6 @@ export class HeaderComponent {
|
|
|
135
195
|
sideMenuToggle() {
|
|
136
196
|
this.sidenav.toggle();
|
|
137
197
|
}
|
|
138
|
-
closeUtilitySpace() {
|
|
139
|
-
this.selected = undefined;
|
|
140
|
-
this.utilitySpace.close();
|
|
141
|
-
}
|
|
142
198
|
groupByAppType(menuList) {
|
|
143
199
|
let grouped = menuList.reduce((r, a) => {
|
|
144
200
|
r[a.appType] = r[a.appType] || [];
|
|
@@ -214,6 +270,13 @@ export class HeaderComponent {
|
|
|
214
270
|
}
|
|
215
271
|
}
|
|
216
272
|
onLogoutClick() {
|
|
273
|
+
// Sync with other tabs
|
|
274
|
+
this.setCookie('session_expired', 'true', 1);
|
|
275
|
+
// Clear timers
|
|
276
|
+
if (this.inactivityTimeout)
|
|
277
|
+
clearTimeout(this.inactivityTimeout);
|
|
278
|
+
if (this.logoutCheckInterval)
|
|
279
|
+
clearInterval(this.logoutCheckInterval);
|
|
217
280
|
this.logoutEvent.emit();
|
|
218
281
|
signOut({ global: true, oauth: { redirectUrl: this._headerSer.headerConfig.signOutUrl } })
|
|
219
282
|
.then((data) => {
|
|
@@ -294,13 +357,16 @@ export class HeaderComponent {
|
|
|
294
357
|
if (this.inactivityTimeout) {
|
|
295
358
|
clearTimeout(this.inactivityTimeout);
|
|
296
359
|
}
|
|
360
|
+
if (this.logoutCheckInterval) {
|
|
361
|
+
clearInterval(this.logoutCheckInterval);
|
|
362
|
+
}
|
|
297
363
|
}
|
|
298
364
|
}
|
|
299
365
|
HeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: HeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
300
|
-
HeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: HeaderComponent, selector: "lib-header", inputs: { INACTIVITY_LIMIT: "INACTIVITY_LIMIT", config: "config" }, outputs: { logoutEvent: "logoutEvent" }, host: { listeners: { "document:mousemove": "resetTimer()", "document:keydown": "resetTimer()", "document:click": "resetTimer()", "document:touchstart": "resetTimer()", "document:touchmove": "resetTimer()", "document:scroll": "resetTimer()", "window:focus": "resetTimer()" } }, viewQueries: [{ propertyName: "sidenav", first: true, predicate: ["sidenav"], descendants: true }, { propertyName: "utilitySpace", first: true, predicate: ["utilitySpaceDrawer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<mat-sidenav-container class=\"app-menu-sidenav-container\">\n <mat-sidenav cdkMenuBar #sidenav mode=\"over\" class=\"sidenavDrawer\">\n <div class=\"drawerHeadLogo\"><img [src]=\"_domSanitizer.bypassSecurityTrustUrl(imageDataUrls.profetLogo)\"></div>\n <div class=\"app-menu-content-section\">\n <ng-container *ngFor=\"let appType of menuList\">\n <div class=\"appList\">\n <img *ngIf=\"appConfig[appType.key]?.appLogoUri\"\n [src]=\"_domSanitizer.bypassSecurityTrustUrl(appConfig[appType.key]?.appLogoUri)\">\n </div>\n <div class=\"subHeadListItems\">\n <div *ngFor=\"let item of appType.value\" class=\"menu-item\" (click)=\"menuSelection(item)\"\n [ngClass]=\"{'active-menu': item | activeRoute : _router.url:_headerSer.headerConfig.appType}\">\n <mat-icon class=\"menuIconList\" *ngIf=\"item.icon\">{{ item.icon }}</mat-icon>\n <span>{{ item.menuName }}</span>\n </div>\n </div>\n </ng-container>\n </div>\n </mat-sidenav>\n\n</mat-sidenav-container>\n<mat-toolbar cdkMenuBar color=\"primary\" class=\"header-wrapper common_header shadow-sm\">\n <!-- Main nav button and navigation links -->\n <button mat-icon-button color=\"theme-white\" (click)=\"sidenav.toggle()\"\n class=\"pmx-button pmx-menu-button orders-menu icon-btn ms-0 me-3\" aria-label=\"main menu\" tabindex=\"0\"\n matTooltip=\"Main menu\" matTooltipPosition=\"below\"\n matTooltipClass=\"poc-header-tooltip\"><mat-icon>menu</mat-icon></button>\n <a class=\"navbar-brand me-auto\" href=\"#\">\n <img [src]=\"_domSanitizer.bypassSecurityTrustUrl(appConfig[_headerSer.headerConfig.appType]?.appLogoUri)\"\n alt=\"App Logo\" class=\"app-logo\">\n </a>\n <ng-content select=\"[headerInfo]\"></ng-content>\n <!-- <ng-content></ng-content> -->\n\n <mat-form-field appearance=\"outline\" class=\"switchCompanyField\">\n <mat-label>Company</mat-label>\n <mat-select [formControl]=\"companyControl\" (selectionChange)=\"switchCompany($event)\">\n <mat-option *ngFor=\"let opt of companyList\" [value]=\"opt\">\n {{opt.name}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n\n <!-- Profile button and profile dropdown links -->\n <button class=\"pmx-button pmx-menu-button profile-button\" mat-button [matMenuTriggerFor]=\"menu\" color=\"primary\"\n matTooltipPosition=\"below\">\n <div class=\"profile-inner\">\n <!-- <div class=\"brand-logo align-self-center\" *ngIf=\"activeCompany?.logo\"\n [ngClass]=\"activeCompany?.logo ? 'branded-logo-true' : 'branded-logo-false'\"\n [ngStyle]=\"{'background-image': 'url(' + activeCompany?.logo + ')'}\"></div> -->\n <div class=\"avatar\">\n <img *ngIf=\"userImageLink;else defaultAvatar\" [src]=\"userImageLink\" class=\"avatar-image\" alt=\"Avatar\">\n <ng-template #defaultAvatar><img\n [src]=\"_domSanitizer.bypassSecurityTrustUrl(imageDataUrls.defaultUserImage)\"\n class=\"avatar-default\" alt=\"profile pic\"></ng-template>\n </div>\n </div>\n </button>\n <mat-menu #menu=\"matMenu\" class=\"accounts_drpmenu pmx-menu-group header-dropdown-profile\" xPosition=\"before\">\n <div class=\"popover-content show-menu\">\n <div class=\"popover-header\">\n <div class=\"popover-user-top\">\n <div class=\"avatar-wrapper\">\n <img *ngIf=\"userImageLink;else defaultLargeAvatar\" [src]=\"userImageLink\" class=\"avatar-icon\"\n alt=\"Avatar\">\n <ng-template #defaultLargeAvatar>\n <div [ngStyle]=\"{'background-image': 'url(' + imageDataUrls.defaultUserImage + ')'}\"\n class=\"avatar-icon default-avatar\" alt=\"Avatar icon\"> </div>\n </ng-template>\n </div>\n <div class=\"user-data\">\n <h3 class=\"profile-name\"><span *ngIf=\"userAuthData\">{{ userAuthData?.firstName }} {{\n userAuthData?.lastName }}</span></h3>\n <button mat-button color=\"accent\" class=\"pmx-button btn btn-small view-profile ms-0\"\n (click)=\"profile()\">View Profile</button>\n </div>\n </div>\n </div>\n <div class=\"popover-body\">\n <!-- <div class=\"popover-content-title\">\n <p>Overview</p>\n </div> -->\n\n <div *ngIf=\"userAuthData?.email\">\n <p mat-menu-item class=\"list-text list-text-email mt-3 mb-3\">\n <mat-icon class=\"list-icon\">mail</mat-icon><span class=\"pmx-lower-case pmx-text-wrap me-auto\">{{\n userAuthData?.email }}</span>\n </p>\n </div>\n <ng-container *ngIf=\"userAuthData?.contactPhone\">\n <p mat-menu-item class=\"list-text mb-3\">\n <mat-icon class=\"list-icon\">call</mat-icon><span class=\"title-case me-auto\">{{\n userAuthData?.contactPhone }}</span>\n </p>\n </ng-container>\n\n <hr />\n <ul cdkMenu class=\"list-group last-group my-1\">\n <li cdkMenuItem class=\"list-item py-2\">\n <button mat-menu-item class=\"pmx-button list-button btn-logout\" (click)=\"onLogoutClick()\">\n <mat-icon>power_settings_new</mat-icon>\n <span class=\"list-text\">Logout</span>\n </button>\n </li>\n </ul>\n </div>\n </div>\n </mat-menu>\n</mat-toolbar>\n<mat-drawer-container class=\"outer-drawer-container\" autosize>\n <mat-drawer #utilityDrawer class=\"utility-menu-drawer\" mode=\"side\" position=\"end\">\n <ng-container *ngIf=\"defaultApps.length > 0\">\n <button mat-icon-button color=\"primary\" class=\"btn-right-menu\" aria-label=\"Button\"\n *ngFor=\"let item of defaultApps\" (click)=\"openItem(item)\">\n <mat-icon>{{ item.icon }}</mat-icon>\n </button>\n <hr>\n </ng-container>\n <ng-container *ngIf=\"config.length > 0\">\n <button mat-icon-button color=\"primary\" class=\"btn-right-menu\" aria-label=\"Button\"\n *ngFor=\"let item of config\" (click)=\"openItem(item)\">\n <mat-icon>{{ item.icon }}</mat-icon>\n </button>\n </ng-container>\n </mat-drawer>\n <mat-drawer-content>\n <mat-drawer-container class=\"inner-drawer-container\" autosize>\n <mat-drawer #utilitySpaceDrawer class=\"utility-content-drawer\" position=\"end\"\n [mode]=\"selected?.layout || 'side'\" [opened]=\"!!selected\" (closed)=\"selected = undefined\">\n <ng-container *ngIf=\"componentToLoad\">\n <ng-container *ngComponentOutlet=\"componentToLoad; injector: dynamicInjector\"></ng-container>\n </ng-container>\n </mat-drawer>\n <!-- <mat-drawer #sampleDrawer position=\"end\" mode=\"over\">\n <p>Sample content</p>\n </mat-drawer> -->\n <mat-drawer-content><ng-content class=\"body_content\"\n select=\"[bodyContentInfo]\"></ng-content></mat-drawer-content>\n </mat-drawer-container>\n <button type=\"button\" mat-button class=\"utility-toggle-button\"\n [ngClass]=\"utilityDrawer.opened ? 'utility-opened' : 'utility-closed'\"\n *ngIf=\"!_headerSer.headerConfig.disableUtilityDrawer\" (click)=\"utilityDrawer.toggle()\">\n <mat-icon class=\"chat-expand-arrow\" *ngIf=\"utilityDrawer.opened\">arrow_right</mat-icon>\n <mat-icon class=\"chat-expand-arrow\" *ngIf=\"!utilityDrawer.opened\">arrow_left</mat-icon>\n </button>\n </mat-drawer-content>\n</mat-drawer-container>", styles: [":root{--contentfont: 13.12px !important;--labelfont: .75rem !important}.pmx-text-truncate{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pmx-text-wrap{overflow-wrap:break-word;word-break:break-word}.pmx-lower-case{text-transform:lowercase}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color)}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #24a148;--mat-text-button-state-layer-color: #24a148;--mat-text-button-ripple-color: rgba(255, 64, 129, .1)}.header-user-name{text-align:end;color:#000}.header-user-name span{font-size:12px;color:#9e9e9ede}.avatarLogo{max-width:30px}mat-toolbar.mat-toolbar.common_header.mat-primary.mat-toolbar-single-row{position:fixed;left:0;top:0;background-color:#fff;height:56px}button.switchButton,button.menuHamberger{padding:8px!important}.sidenavPanel{padding:20px 25px;height:100vh;position:relative}ul.navbarList{padding-left:0;list-style:none;margin-top:40px}ul.navbarList li{color:#666;font-weight:400;margin-bottom:25px;width:170px;cursor:pointer}.active{color:#4177d6!important}ul.navbarList li img{width:23px;margin-right:15px}.accounts_drpmenu{margin-top:.7em}.xsShowUsername{display:none;padding:0 16px;height:48px;line-height:48px}.vr{width:2px;background-color:#f5f5f5;opacity:1;margin:0 .5rem 0 1rem}.vr-blury{background-image:linear-gradient(180deg,transparent,#666,transparent);width:1px;opacity:.25}.navbar-brand .app-logo{height:20px;width:auto}.pmx-button mat-icon.mat-icon,.pmx-button mat-icon.mat-primary,.pmx-button mat-icon.mat-accent,.pmx-button mat-icon.mat-warn{color:var(--mat-icon-color)}.pmx-button mat-icon.mat-icon{font-size:24px!important;line-height:1.5;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;transition:transform .3s ease}.pmx-button.mdc-button--raised mat-icon.mat-icon{width:24px;height:24px;display:contents}.pmx-button.mat-mdc-button-base mat-icon.mat-icon{z-index:1}.pmx-button mat-icon.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.pmx-button mat-icon.mdc-button span.button-text{display:inline-flex;padding:0 1rem;text-transform:uppercase;font-size:.875rem;line-height:1.5}.pmx-button mat-icon.mdc-button span.upper-case{text-transform:uppercase}.pmx-button.mdc-button,.pmx-button.mdc-icon-button,.pmx-button.mdc-button--outlined,.pmx-button.mdc-button .mat-mdc-button-touch-target,.pmx-button.mdc-icon-button .mat-mdc-button-touch-target{height:40px!important;font-size:.75rem!important;letter-spacing:.2px;padding:0 .5rem;line-height:normal}.pmx-button.mdc-icon-button,.pmx-button.icon-btn.mdc-button--outlined,.pmx-button.icon-btn.mdc-button--raised,.pmx-button.mdc-icon-button .mat-mdc-button-touch-target{width:40px;border-radius:5px}.pmx-button.btn-small.mdc-button,.pmx-button.btn-small.mdc-icon-button,.pmx-button.btn-small.mdc-button--outlined{height:28px!important;padding:0 1rem}.pmx-button.mdc-icon-button,.pmx-button.icon-btn.mdc-button--raised{color:#254d93}.pmx-header .icon-button-shadow{box-shadow:0 1px 3px #0003,0 0 #00000024,0 1px 3px #0000001f}.pmx-button.icon-btn.mdc-button--raised.btn-switch-apps.menu-opened,.pmx-button.icon-btn.mdc-button--outlined.btn-switch-apps.menu-opened{background-color:#254d93;color:#fff;font-variation-settings:\"FILL\" 0,\"wght\" 200,\"GRAD\" 0,\"opsz\" 24}.pmx-button.mdc-icon-button.pmx-menu-button:hover,.pmx-button.mat-mdc-outlined-button.btn-switch-apps:hover,.pmx-button.icon-btn.mdc-button--outlined.btn-switch-apps:hover{background-color:#e5f3fb}.pmx-button.icon-app{width:20px}.pmx-button.mat-mdc-outlined-button,.pmx-button.mat-mdc-outlined-button:not(:disabled){background-color:#fff;overflow:hidden}.pmx-button.pmx-menu-button.profile-button.mat-mdc-outlined-button{padding:0;border-color:#bfdff7!important}.btn-group-clicked .pmx-button.pmx-menu-button.profile-button.mat-mdc-outlined-button{border-color:#bfdff7!important}.pmx-button.profile-button .profile-inner{border:0 solid transparent!important;display:flex;align-items:center;overflow:clip}.pmx-button.profile-button .avatar{width:38px;height:38px;box-sizing:border-box;border-radius:50%;overflow:hidden;display:flex;flex-direction:column;justify-content:center;align-content:center;align-items:center;flex-wrap:wrap}.pmx-button.profile-button .avatar{background-color:#9cd7a8}.pmx-button.profile-button .avatar img.avatar-image,.pmx-button.profile-button .avatar img.avatar-default{width:100%;height:auto}.branded-group-false{margin-left:.65rem}.branded-group-false .pmx-button.pmx-menu-button.profile-button.branded-button-false{width:40px;border-radius:20px!important}.branded-group-true{margin-left:.65rem;border-radius:20px;border:1px solid #bfdff7}.btn-group-clicked.branded-group-true{background-color:#99ccf2}.branded-group-true .pmx-button.profile-button .profile-inner{border:0 solid #c4c9d2!important}.branded-group-true .pmx-button.pmx-menu-button.profile-button.branded-button-true{border-radius:20px}.branded-group-true .pmx-button.profile-button.branded-button-true .profile-inner .branded-logo-true{border-radius:5px;display:block;position:relative;height:38px;background-size:100%;background-position:center;background-repeat:no-repeat;min-width:100px;margin-right:1rem}.pmx-menu-group.mat-mdc-menu-panel{margin-top:1rem}.header-dropdown-apps.mat-mdc-menu-panel .mat-mdc-menu-content,.header-dropdown-profile.mat-mdc-menu-panel .mat-mdc-menu-content{padding:0!important}.header-dropdown-apps{width:400px!important}.header-dropdown-apps.mat-mdc-menu-panel .list-button{padding:.5rem 2rem}.header-dropdown-apps.mdc-menu-surface--open,.header-dropdown-profile.mdc-menu-surface--open{position:absolute;z-index:1;top:0;right:0;margin:0;padding:0;border:1px solid #e5e5e5;border-radius:6px;background:#fff;animation:popover .2s ease-in-out}.header-dropdown-apps.mat-mdc-menu-panel.mat-mdc-menu-panel{max-width:400px!important;width:400px!important;overflow:visible}::ng-deep .header-dropdown-profile.mat-mdc-menu-panel.mat-mdc-menu-panel{max-width:408px!important;width:408px!important;overflow:visible;margin-top:1rem}.popover-content:after,.popover-content:before{font-size:1.4em;display:block;width:0;height:0;content:\"\";pointer-events:none;position:absolute;top:-.45em}.popover-content:before{border-right:10px solid transparent;border-bottom:10px solid #999;border-left:10px solid transparent;right:.97em}.popover-content:after{border-right:12px solid transparent;border-bottom:12px solid #d5e3fa;border-left:12px solid transparent;right:.9em}.popover-content-title{display:flex;align-items:center;justify-content:flex-start;overflow:hidden;padding:0 1rem;min-height:40px}.popover-content-title p{margin:0;font-size:.75rem!important;color:#777}.popover-content .popover-user-top:after{clear:both;content:\"\";display:table}.popover-content .popover-user-top{display:flex;flex-flow:row;justify-content:flex-start;align-items:center}.popover-content .popover-user-top .avatar-wrapper{flex:0 4 auto;border-radius:100%;overflow-clip-margin:content-box;overflow:clip;background-color:#fff;padding:2px}.drop-shadow{filter:drop-shadow(0px 0px 3px rgba(0,0,0,.5))}.popover-content .popover-user-top .user-data{flex:1 0 auto;margin-left:1rem}.popover-content .popover-user-top .avatar-wrapper .avatar-icon{background-repeat:no-repeat;background-size:100%;background-position:center;width:64px;height:64px;background-color:#72c885}.avatar-icon.default-avatar{background-size:100%}.popover-content .popover-user-top .user-data h3.profile-name{font-size:1rem;text-overflow:ellipsis;margin-bottom:.5rem;line-height:normal;font-weight:600;color:#254d93}.btn.view-profile{background:#fafafa}.popover-content ul.list-group{padding:0 0 8px;margin:0;display:flex;list-style:none}.popover-content ul.list-group.last-group,.popover-content ul.list-group.last-group .list-item{background-color:transparent}.popover-content ul.list-group li.list-item{align-items:center;border:none;padding:0;width:100%;display:flex;flex-direction:row;flex-wrap:wrap;order:1}.popover-content ul.list-group li.list-item .list-button{padding:.5rem 1rem;min-height:40px}.popover-content ul.list-group li.list-item span.mat-mdc-menu-item-text,.popover-content ul.list-group li.list-item span.mdc-list-item__primary-text,.popover-content ul.list-group li.list-item .list-button>span{display:flex;align-items:center}.popover-content ul.list-group li.list-item.list-company .list-button>span{width:100%;overflow:hidden}.popover-content ul.list-group li.list-item .list-button .hover-label.tooltip-label{opacity:0}.popover-content ul.list-group li.list-item.list-app .list-button:hover>span .hover-label.tooltip-label,.popover-content ul.list-group li.list-item.list-company .list-button:hover>span .hover-label.tooltip-label{opacity:0;display:inline-flex;color:#fff;background-color:#616161;font-size:11px;border-radius:4px;padding:0 .5rem;transition:opacity .3s ease-out}.popover-content ul.list-group li.list-item .list-button:hover{background:rgba(0,0,0,.04)}.popover-content ul.list-group li.list-item.company-active,.popover-content ul.list-group li.list-item.app-active{cursor:not-allowed;pointer-events:none;order:0}.popover-content ul.list-group li.list-item.company-active .active-label,.popover-content ul.list-group li.list-item.app-active .active-label{background-color:#93c47d;color:#212121;padding:0 .5rem;border-radius:50px;font-size:.75rem;margin-left:.5rem}.popover-content ul.list-group.list-apps-group{display:flex}.popover-content ul.list-group.list-overview li.list-item{cursor:not-allowed;pointer-events:none}::ng-deep .popover-content ul.list-group li.list-item button.list-button .list-text{font-size:15px}.popover-content .popover-body p.list-text{padding:.5rem 1rem;margin:0;min-height:auto;cursor:default}::ng-deep .popover-content .popover-body p.list-text .mat-mdc-menu-item-text{font-size:15px;font-weight:500}.popover-content ul.list-group li.list-item .list-button .mat-icon,.popover-content ul.list-group li.list-item p.list-text mat-icon.list-icon,.popover-content ul.list-group li.list-item .list-button .list-icon,.popover-content ul.list-group li.list-item p.list-text .list-icon,.popover-content .popover-body p.list-text .list-icon{color:#2db051;font-variation-settings:\"FILL\" 0,\"wght\" 300,\"GRAD\" 0,\"opsz\" 24;font-size:24px!important}.popover-content ul.list-group li.list-item.list-active.company-active button.list-button .mat-icon{color:#2db051;font-variation-settings:\"FILL\" 1,\"wght\" 300,\"GRAD\" 0,\"opsz\" 24}.popover-content ul.list-group li.list-item p.list-text span.mdc-list-item__primary-text{width:100%;display:flex}.popover-content ul.list-group li.list-item span.title-case,.popover-content ul.list-group li.list-item span.lower-case,.popover-content ul.list-group li.list-item span.pmx-lower-case{font-size:.8rem;color:#212121;font-weight:500;display:block;line-height:normal}small{color:#9e9e9e}.popover-content ul.list-group li.list-item span.text-label{font-size:12px;color:#979797;font-weight:400;display:block;line-height:normal}.popover-content ul.list-group li.list-item .list-text span.mat-mdc-menu-item-text{font-size:.875rem;color:#0a152f;font-weight:500;line-height:normal}.popover-content ul.list-group li.list-item .list-text.list-text-email span.mat-mdc-menu-item-text{width:calc(100% - 40px);display:inline-flex}.popover-content ul.list-group li.list-item .list-text.list-text-email span.pmx-text-wrap{overflow-wrap:break-word;word-wrap:break-word;-webkit-hyphens:none;hyphens:none;width:100%}.popover-content ul.list-group li.list-item span.upper-case{text-transform:uppercase}.popover-content ul.list-group li.list-item span.app-status,.popover-content ul.list-group li.list-item .mat-mdc-chip-option.chip-status{font-size:13px;color:#0a152f;font-weight:400;display:block;line-height:normal;margin:0}.popover-content ul.list-group li.list-item.app-active .list-text,.popover-content ul.list-group li.list-item.company-active .list-text{color:#4b85ea}.popover-content ul.list-group li.list-item.app-active span.app-status,.popover-content ul.list-group li.list-item.app-active .mat-mdc-chip-option.chip-status,.popover-content ul.list-group li.list-item.company-active span.app-status,.popover-content ul.list-group li.list-item.company-active .mat-mdc-chip-option.chip-status{color:#24a53f}.popover-content ul.list-group li.list-item .mat-mdc-chip-option.chip-status{display:flex;flex-direction:row;justify-content:flex-start}.popover-content ul.list-group li.list-item .mat-mdc-chip-option.chip-status.mdc-evolution-chip--selected{transition:all .3s ease-out;margin-left:auto;flex:1;justify-content:flex-end}.popover-content ul.list-group li.list-item.app-active .mat-mdc-chip-option.chip-status.mdc-evolution-chip--selected,.popover-content ul.list-group li.list-item.company-active .mat-mdc-chip-option.chip-status.mdc-evolution-chip--selected{background-color:#408dd7;color:#f5f5f5}.popover-content ul.list-group li.list-item .mat-mdc-standard-chip .mat-mdc-chip-action-label{font-size:.75rem}.popover-content ul.list-group li.list-item .mat-mdc-standard-chip{height:24px}.popover-content ul.list-group li.list-item img.logo-thumb{width:24px;height:auto;margin-right:1rem}.popover-content ul.list-group li.list-item .list-button.btn-logout{display:flex;align-items:center;color:#616161}.popover-content ul.list-group li.list-item.app-active .list-button .app-icon-wrapper{background-color:#fff;border-color:#4b85ea;border-width:3px}.popover-content ul.list-group li.list-item.company-active .list-text .mat-icon{font-variation-settings:\"FILL\" 1,\"wght\" 200,\"GRAD\" 0,\"opsz\" 24;color:var(--themelightblue)}.popover-content ul.list-group li.list-item .list-button.btn-logout .list-text{color:#616161}.popover-content ul.list-group li.list-item.app-active button,.popover-content ul.list-group li.list-item.company-active button{cursor:not-allowed;pointer-events:none}.popover-content hr{background-color:#c4c9d2;margin:0;width:100%;border:0;border-top:1px solid #c4c9d2;opacity:1}.popover-content ul.apps-grid{width:100%;white-space:nowrap;overflow:auto}.popover-content ul.apps-grid li.list-item,.popover-content ul.apps-grid li.list-item img.logo-thumb{display:flex;justify-content:flex-start;flex-wrap:nowrap;align-content:center;align-items:center;flex-direction:row}.popover-header{background-color:#d5e3fa;border-bottom:1px solid #d8d8d8;padding:.975rem 1rem;margin-bottom:0;display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center;flex-wrap:wrap}.popover-header .mat-icon{font-size:1.5rem!important;font-variation-settings:\"FILL\" 1,\"wght\" 500,\"GRAD\" 0,\"opsz\" 24;color:#254d93}.header-dropdown-profile .popover-header{padding:1.125rem 1rem}.popover-header h3.popover-title{font-size:1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;margin-bottom:0;line-height:normal;font-weight:500;color:#254d93}.popover-body{max-height:420px;overflow:auto;padding:0}.app-icon-wrapper{margin:0 1rem 0 0;max-width:48px;max-height:48px;width:48px;height:48px;overflow:hidden;background-size:70%;background-repeat:no-repeat;background-position:center;border:1px solid #c4c9d2;border-radius:8px;display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center;flex-wrap:wrap}.app-icon-wrapper img.app-icon{width:100%;height:auto;overflow:hidden;padding:.5rem}h4.app-name{font-size:.65rem;margin:.5rem 0 0;line-height:normal;color:#254d93;font-weight:400;text-transform:uppercase}.popover-body ul.enabled-apps{display:flex;flex-flow:column wrap;justify-content:space-evenly;align-items:center;align-content:flex-start;border-bottom:1px solid #E9E9E9;margin:0;padding:0 1rem;list-style:none}.popover-body ul.enabled-apps li.enabled-app{flex-grow:1;flex:0 1 auto;text-align:center;font-size:.8125rem;padding:10px;list-style:none}.pmx-button.mdc-icon-button[color=theme-white],.pmx-button.icon-btn.mdc-button--raised[color=theme-white]{color:#254d93}.pmx-button.icon-btn.orders-menu[color=theme-white]{border:1px solid #fafafa!important}:host(.mat-accent){--mat-slider-ripple-color: #24a148;--mat-slider-hover-state-layer-color: rgba(255, 64, 129, .05);--mat-slider-focus-state-layer-color: rgba(255, 64, 129, .2);--mdc-slider-handle-color: #24a148;--mdc-slider-focus-handle-color: #24a148;--mdc-slider-hover-handle-color: #24a148;--mdc-slider-active-track-color: #24a148;--mdc-slider-inactive-track-color: #24a148;--mdc-slider-with-tick-marks-inactive-container-color: #24a148;--mdc-slider-with-tick-marks-active-container-color: #51bc6b}:host ::ng-deep .app-menu-sidenav-container{z-index:999}:host ::ng-deep .mat-drawer-backdrop.mat-drawer-shown{position:fixed;background:rgba(63,81,181,.25)}.mat-drawer-backdrop{position:fixed!important}.sidenavDrawer{position:fixed!important;left:0;width:250px;padding:0}.mdc-list-group__subheader{background-color:#eef4ff;padding:5px 20px;margin-bottom:5px!important;font-size:14px!important;font-weight:500!important}.menusubItems{padding-left:2rem!important}.switchCompanyField{min-width:175px!important;margin-left:13px}.profile-button{margin-left:10px}.brand-logo{width:100px;height:38px;background-repeat:no-repeat;background-size:contain;background-origin:content-box;padding:7px}.menuIconList{font-size:20px!important;height:20px;width:20px;margin-right:.5rem;position:relative;color:#747474;font-weight:300}.subHeadListItems{padding:0 15px}.subHeadListItems .menu-item{display:flex;flex-direction:row;align-items:center;color:#000;padding:.7rem .5rem;border-radius:3px;transition:all .3s;font-size:var(--contentfont)}.subHeadListItems .menu-item:hover:not(.no-select){cursor:pointer;background-color:#f5f5f5}.subHeadInnerItem{margin-bottom:0!important}.drawerHeadLogo{width:100%;padding:10px 20px;margin-bottom:20px;margin-top:15px}.drawerHeadLogo img{width:130px}.app-menu-content-section{overflow-y:auto;height:calc(100vh - 80px);padding-bottom:25px}.active-menu{background-color:var(--themelightblue)!important;color:#fff!important;font-weight:500}.active-menu .menuIconList{color:#fff}.appList{padding:11px 15px;background-color:#eef4ff;margin:20px 0 10px;height:35px;display:flex}.appList img{object-fit:contain}::ng-deep .header-dropdown-profile .mat-mdc-menu-content{margin:0;padding:0;list-style-type:none}:host ::ng-deep .app-assistant-sidenav-container{z-index:999}.utility-toggle-button{background-color:#fff;border-top-left-radius:30px;border-bottom-left-radius:30px;box-shadow:0 1px 2px 2px #ccc;text-align:center;right:-20px;bottom:38px;position:fixed!important;height:34px!important;width:45px;cursor:pointer;z-index:1004;transition:all .2s}.utility-toggle-button mat-icon.chat-expand-arrow{font-size:28px!important;position:relative;top:-4px;right:10px;height:20px;vertical-align:middle;transition:all .2s}.utility-toggle-button:hover{right:0}.utility-toggle-button.utility-opened{right:10px;border-radius:30px;width:34px;box-shadow:none;background-color:#e7e7e7;min-width:unset}.utility-toggle-button.utility-opened mat-icon.chat-expand-arrow{right:0;top:0;width:22px;height:22px;margin:0;font-size:22px!important}::ng-deep .mat-drawer-container.outer-drawer-container{overflow:unset}::ng-deep .outer-drawer-container>mat-drawer-content{margin-top:56px;z-index:3}.utility-menu-drawer{padding:3px;height:91vh;width:56px;margin-top:56px;overflow:hidden}.utility-content-drawer{height:91vh;width:540px;overflow:hidden}.list-icons-cell{padding:8px;text-align:center;vertical-align:middle;height:40px;width:40px;cursor:pointer;border-radius:30px}.list-icons-cell .mat-icon.list-icons{font-size:25px!important;color:#4b85ea!important}.list-icons-cell:hover{background-color:#ccc}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i5.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i5.MatDrawerContent, selector: "mat-drawer-content" }, { kind: "component", type: i5.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i5.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "component", type: i9.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i10.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i11.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: i12.ActiveRoutePipe, name: "activeRoute" }] });
|
|
366
|
+
HeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: HeaderComponent, selector: "lib-header", inputs: { INACTIVITY_LIMIT: "INACTIVITY_LIMIT" }, outputs: { logoutEvent: "logoutEvent" }, host: { listeners: { "document:mousemove": "resetTimer()", "document:keydown": "resetTimer()", "document:click": "resetTimer()", "document:touchstart": "resetTimer()", "document:touchmove": "resetTimer()", "document:scroll": "resetTimer()", "window:focus": "resetTimer()" } }, viewQueries: [{ propertyName: "sidenav", first: true, predicate: ["sidenav"], descendants: true }], ngImport: i0, template: "<mat-sidenav-container class=\"app-menu-sidenav-container\">\n <mat-sidenav cdkMenuBar #sidenav mode=\"over\" class=\"sidenavDrawer\">\n <div class=\"drawerHeadLogo\"><img [src]=\"_domSanitizer.bypassSecurityTrustUrl(imageDataUrls.profetLogo)\"></div>\n <div class=\"app-menu-content-section\">\n <ng-container *ngFor=\"let appType of menuList\">\n <div class=\"appList\">\n <img *ngIf=\"appConfig[appType.key]?.appLogoUri\"\n [src]=\"_domSanitizer.bypassSecurityTrustUrl(appConfig[appType.key]?.appLogoUri)\">\n </div>\n <div class=\"subHeadListItems\">\n <div *ngFor=\"let item of appType.value\" class=\"menu-item\" (click)=\"menuSelection(item)\"\n [ngClass]=\"{'active-menu': item | activeRoute : _router.url:_headerSer.headerConfig.appType}\">\n <mat-icon class=\"menuIconList\" *ngIf=\"item.icon\">{{ item.icon }}</mat-icon>\n <span>{{ item.menuName }}</span>\n </div>\n </div>\n </ng-container>\n </div>\n </mat-sidenav>\n\n</mat-sidenav-container>\n<mat-toolbar cdkMenuBar color=\"primary\" class=\"header-wrapper common_header shadow-sm\">\n <!-- Main nav button and navigation links -->\n <button mat-icon-button color=\"theme-white\" (click)=\"sidenav.toggle()\"\n class=\"pmx-button pmx-menu-button orders-menu icon-btn ms-0 me-3\" aria-label=\"main menu\" tabindex=\"0\"\n matTooltip=\"Main menu\" matTooltipPosition=\"below\"\n matTooltipClass=\"poc-header-tooltip\"><mat-icon>menu</mat-icon></button>\n <a class=\"navbar-brand me-auto\" href=\"#\">\n <img [src]=\"_domSanitizer.bypassSecurityTrustUrl(appConfig[_headerSer.headerConfig.appType]?.appLogoUri)\"\n alt=\"App Logo\" class=\"app-logo\">\n </a>\n\n <ng-content></ng-content>\n\n <mat-form-field appearance=\"outline\" class=\"switchCompanyField\">\n <mat-label>Company</mat-label>\n <mat-select [formControl]=\"companyControl\" (selectionChange)=\"switchCompany($event)\">\n <mat-option *ngFor=\"let opt of companyList\" [value]=\"opt\">\n {{opt.name}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n\n <!-- Profile button and profile dropdown links -->\n <button class=\"pmx-button pmx-menu-button profile-button\" mat-button [matMenuTriggerFor]=\"menu\" color=\"primary\"\n matTooltipPosition=\"below\">\n <div class=\"profile-inner\">\n <!-- <div class=\"brand-logo align-self-center\" *ngIf=\"activeCompany?.logo\"\n [ngClass]=\"activeCompany?.logo ? 'branded-logo-true' : 'branded-logo-false'\"\n [ngStyle]=\"{'background-image': 'url(' + activeCompany?.logo + ')'}\"></div> -->\n <div class=\"avatar\">\n <img *ngIf=\"userImageLink;else defaultAvatar\" [src]=\"userImageLink\" class=\"avatar-image\" alt=\"Avatar\">\n <ng-template #defaultAvatar><img\n [src]=\"_domSanitizer.bypassSecurityTrustUrl(imageDataUrls.defaultUserImage)\"\n class=\"avatar-default\" alt=\"profile pic\"></ng-template>\n </div>\n </div>\n </button>\n <mat-menu #menu=\"matMenu\" class=\"accounts_drpmenu pmx-menu-group header-dropdown-profile\" xPosition=\"before\">\n <div class=\"popover-content show-menu\">\n <div class=\"popover-header\">\n <div class=\"popover-user-top\">\n <div class=\"avatar-wrapper\">\n <img *ngIf=\"userImageLink;else defaultLargeAvatar\" [src]=\"userImageLink\" class=\"avatar-icon\"\n alt=\"Avatar\">\n <ng-template #defaultLargeAvatar>\n <div [ngStyle]=\"{'background-image': 'url(' + imageDataUrls.defaultUserImage + ')'}\"\n class=\"avatar-icon default-avatar\" alt=\"Avatar icon\"> </div>\n </ng-template>\n </div>\n <div class=\"user-data\">\n <h3 class=\"profile-name\"><span *ngIf=\"userAuthData\">{{ userAuthData?.firstName }} {{\n userAuthData?.lastName }}</span></h3>\n <button mat-button color=\"accent\" class=\"pmx-button btn btn-small view-profile ms-0\"\n (click)=\"profile()\">View Profile</button>\n </div>\n </div>\n </div>\n <div class=\"popover-body\">\n <!-- <div class=\"popover-content-title\">\n <p>Overview</p>\n </div> -->\n\n <div *ngIf=\"userAuthData?.email\">\n <p mat-menu-item class=\"list-text list-text-email mt-3 mb-3\">\n <mat-icon class=\"list-icon\">mail</mat-icon><span class=\"pmx-lower-case pmx-text-wrap me-auto\">{{\n userAuthData?.email }}</span>\n </p>\n </div>\n <ng-container *ngIf=\"userAuthData?.contactPhone\">\n <p mat-menu-item class=\"list-text mb-3\">\n <mat-icon class=\"list-icon\">call</mat-icon><span class=\"title-case me-auto\">{{\n userAuthData?.contactPhone }}</span>\n </p>\n </ng-container>\n\n <hr />\n <ul cdkMenu class=\"list-group last-group my-1\">\n <li cdkMenuItem class=\"list-item py-2\">\n <button mat-menu-item class=\"pmx-button list-button btn-logout\" (click)=\"onLogoutClick()\">\n <mat-icon>power_settings_new</mat-icon>\n <span class=\"list-text\">Logout</span>\n </button>\n </li>\n </ul>\n </div>\n </div>\n </mat-menu>\n</mat-toolbar>", styles: [":root{--contentfont: 13.12px !important;--labelfont: .75rem !important}.pmx-text-truncate{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pmx-text-wrap{overflow-wrap:break-word;word-break:break-word}.pmx-lower-case{text-transform:lowercase}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color)}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #24a148;--mat-text-button-state-layer-color: #24a148;--mat-text-button-ripple-color: rgba(255, 64, 129, .1)}.header-user-name{text-align:end;color:#000}.header-user-name span{font-size:12px;color:#9e9e9ede}.avatarLogo{max-width:30px}mat-toolbar.mat-toolbar.common_header.mat-primary.mat-toolbar-single-row{position:fixed;left:0;top:0;background-color:#fff;height:56px}button.switchButton,button.menuHamberger{padding:8px!important}.sidenavPanel{padding:20px 25px;height:100vh;position:relative}ul.navbarList{padding-left:0;list-style:none;margin-top:40px}ul.navbarList li{color:#666;font-weight:400;margin-bottom:25px;width:170px;cursor:pointer}.active{color:#4177d6!important}ul.navbarList li img{width:23px;margin-right:15px}.accounts_drpmenu{margin-top:.7em}.xsShowUsername{display:none;padding:0 16px;height:48px;line-height:48px}.vr{width:2px;background-color:#f5f5f5;opacity:1;margin:0 .5rem 0 1rem}.vr-blury{background-image:linear-gradient(180deg,transparent,#666,transparent);width:1px;opacity:.25}.navbar-brand .app-logo{height:20px;width:auto}.pmx-button mat-icon.mat-icon,.pmx-button mat-icon.mat-primary,.pmx-button mat-icon.mat-accent,.pmx-button mat-icon.mat-warn{color:var(--mat-icon-color)}.pmx-button mat-icon.mat-icon{font-size:24px!important;line-height:1.5;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;transition:transform .3s ease}.pmx-button.mdc-button--raised mat-icon.mat-icon{width:24px;height:24px;display:contents}.pmx-button.mat-mdc-button-base mat-icon.mat-icon{z-index:1}.pmx-button mat-icon.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.pmx-button mat-icon.mdc-button span.button-text{display:inline-flex;padding:0 1rem;text-transform:uppercase;font-size:.875rem;line-height:1.5}.pmx-button mat-icon.mdc-button span.upper-case{text-transform:uppercase}.pmx-button.mdc-button,.pmx-button.mdc-icon-button,.pmx-button.mdc-button--outlined,.pmx-button.mdc-button .mat-mdc-button-touch-target,.pmx-button.mdc-icon-button .mat-mdc-button-touch-target{height:40px!important;font-size:.75rem!important;letter-spacing:.2px;padding:0 .5rem;line-height:normal}.pmx-button.mdc-icon-button,.pmx-button.icon-btn.mdc-button--outlined,.pmx-button.icon-btn.mdc-button--raised,.pmx-button.mdc-icon-button .mat-mdc-button-touch-target{width:40px;border-radius:5px}.pmx-button.btn-small.mdc-button,.pmx-button.btn-small.mdc-icon-button,.pmx-button.btn-small.mdc-button--outlined{height:28px!important;padding:0 1rem}.pmx-button.mdc-icon-button,.pmx-button.icon-btn.mdc-button--raised{color:#254d93}.pmx-header .icon-button-shadow{box-shadow:0 1px 3px #0003,0 0 #00000024,0 1px 3px #0000001f}.pmx-button.icon-btn.mdc-button--raised.btn-switch-apps.menu-opened,.pmx-button.icon-btn.mdc-button--outlined.btn-switch-apps.menu-opened{background-color:#254d93;color:#fff;font-variation-settings:\"FILL\" 0,\"wght\" 200,\"GRAD\" 0,\"opsz\" 24}.pmx-button.mdc-icon-button.pmx-menu-button:hover,.pmx-button.mat-mdc-outlined-button.btn-switch-apps:hover,.pmx-button.icon-btn.mdc-button--outlined.btn-switch-apps:hover{background-color:#e5f3fb}.pmx-button.icon-app{width:20px}.pmx-button.mat-mdc-outlined-button,.pmx-button.mat-mdc-outlined-button:not(:disabled){background-color:#fff;overflow:hidden}.pmx-button.pmx-menu-button.profile-button.mat-mdc-outlined-button{padding:0;border-color:#bfdff7!important}.btn-group-clicked .pmx-button.pmx-menu-button.profile-button.mat-mdc-outlined-button{border-color:#bfdff7!important}.pmx-button.profile-button .profile-inner{border:0 solid transparent!important;display:flex;align-items:center;overflow:clip}.pmx-button.profile-button .avatar{width:38px;height:38px;box-sizing:border-box;border-radius:50%;overflow:hidden;display:flex;flex-direction:column;justify-content:center;align-content:center;align-items:center;flex-wrap:wrap}.pmx-button.profile-button .avatar{background-color:#9cd7a8}.pmx-button.profile-button .avatar img.avatar-image,.pmx-button.profile-button .avatar img.avatar-default{width:100%;height:auto}.branded-group-false{margin-left:.65rem}.branded-group-false .pmx-button.pmx-menu-button.profile-button.branded-button-false{width:40px;border-radius:20px!important}.branded-group-true{margin-left:.65rem;border-radius:20px;border:1px solid #bfdff7}.btn-group-clicked.branded-group-true{background-color:#99ccf2}.branded-group-true .pmx-button.profile-button .profile-inner{border:0 solid #c4c9d2!important}.branded-group-true .pmx-button.pmx-menu-button.profile-button.branded-button-true{border-radius:20px}.branded-group-true .pmx-button.profile-button.branded-button-true .profile-inner .branded-logo-true{border-radius:5px;display:block;position:relative;height:38px;background-size:100%;background-position:center;background-repeat:no-repeat;min-width:100px;margin-right:1rem}.pmx-menu-group.mat-mdc-menu-panel{margin-top:1rem}.header-dropdown-apps.mat-mdc-menu-panel .mat-mdc-menu-content,.header-dropdown-profile.mat-mdc-menu-panel .mat-mdc-menu-content{padding:0!important}.header-dropdown-apps{width:400px!important}.header-dropdown-apps.mat-mdc-menu-panel .list-button{padding:.5rem 2rem}.header-dropdown-apps.mdc-menu-surface--open,.header-dropdown-profile.mdc-menu-surface--open{position:absolute;z-index:1;top:0;right:0;margin:0;padding:0;border:1px solid #e5e5e5;border-radius:6px;background:#fff;animation:popover .2s ease-in-out}.header-dropdown-apps.mat-mdc-menu-panel.mat-mdc-menu-panel{max-width:400px!important;width:400px!important;overflow:visible}::ng-deep .header-dropdown-profile.mat-mdc-menu-panel.mat-mdc-menu-panel{max-width:408px!important;width:408px!important;overflow:visible;margin-top:1rem}.popover-content:after,.popover-content:before{font-size:1.4em;display:block;width:0;height:0;content:\"\";pointer-events:none;position:absolute;top:-.45em}.popover-content:before{border-right:10px solid transparent;border-bottom:10px solid #999;border-left:10px solid transparent;right:.97em}.popover-content:after{border-right:12px solid transparent;border-bottom:12px solid #d5e3fa;border-left:12px solid transparent;right:.9em}.popover-content-title{display:flex;align-items:center;justify-content:flex-start;overflow:hidden;padding:0 1rem;min-height:40px}.popover-content-title p{margin:0;font-size:.75rem!important;color:#777}.popover-content .popover-user-top:after{clear:both;content:\"\";display:table}.popover-content .popover-user-top{display:flex;flex-flow:row;justify-content:flex-start;align-items:center}.popover-content .popover-user-top .avatar-wrapper{flex:0 4 auto;border-radius:100%;overflow-clip-margin:content-box;overflow:clip;background-color:#fff;padding:2px}.drop-shadow{filter:drop-shadow(0px 0px 3px rgba(0,0,0,.5))}.popover-content .popover-user-top .user-data{flex:1 0 auto;margin-left:1rem}.popover-content .popover-user-top .avatar-wrapper .avatar-icon{background-repeat:no-repeat;background-size:100%;background-position:center;width:64px;height:64px;background-color:#72c885}.avatar-icon.default-avatar{background-size:100%}.popover-content .popover-user-top .user-data h3.profile-name{font-size:1rem;text-overflow:ellipsis;margin-bottom:.5rem;line-height:normal;font-weight:600;color:#254d93}.btn.view-profile{background:#fafafa}.popover-content ul.list-group{padding:0 0 8px;margin:0;display:flex;list-style:none}.popover-content ul.list-group.last-group,.popover-content ul.list-group.last-group .list-item{background-color:transparent}.popover-content ul.list-group li.list-item{align-items:center;border:none;padding:0;width:100%;display:flex;flex-direction:row;flex-wrap:wrap;order:1}.popover-content ul.list-group li.list-item .list-button{padding:.5rem 1rem;min-height:40px}.popover-content ul.list-group li.list-item span.mat-mdc-menu-item-text,.popover-content ul.list-group li.list-item span.mdc-list-item__primary-text,.popover-content ul.list-group li.list-item .list-button>span{display:flex;align-items:center}.popover-content ul.list-group li.list-item.list-company .list-button>span{width:100%;overflow:hidden}.popover-content ul.list-group li.list-item .list-button .hover-label.tooltip-label{opacity:0}.popover-content ul.list-group li.list-item.list-app .list-button:hover>span .hover-label.tooltip-label,.popover-content ul.list-group li.list-item.list-company .list-button:hover>span .hover-label.tooltip-label{opacity:0;display:inline-flex;color:#fff;background-color:#616161;font-size:11px;border-radius:4px;padding:0 .5rem;transition:opacity .3s ease-out}.popover-content ul.list-group li.list-item .list-button:hover{background:rgba(0,0,0,.04)}.popover-content ul.list-group li.list-item.company-active,.popover-content ul.list-group li.list-item.app-active{cursor:not-allowed;pointer-events:none;order:0}.popover-content ul.list-group li.list-item.company-active .active-label,.popover-content ul.list-group li.list-item.app-active .active-label{background-color:#93c47d;color:#212121;padding:0 .5rem;border-radius:50px;font-size:.75rem;margin-left:.5rem}.popover-content ul.list-group.list-apps-group{display:flex}.popover-content ul.list-group.list-overview li.list-item{cursor:not-allowed;pointer-events:none}::ng-deep .popover-content ul.list-group li.list-item button.list-button .list-text{font-size:15px}.popover-content .popover-body p.list-text{padding:.5rem 1rem;margin:0;min-height:auto;cursor:default}::ng-deep .popover-content .popover-body p.list-text .mat-mdc-menu-item-text{font-size:15px;font-weight:500}.popover-content ul.list-group li.list-item .list-button .mat-icon,.popover-content ul.list-group li.list-item p.list-text mat-icon.list-icon,.popover-content ul.list-group li.list-item .list-button .list-icon,.popover-content ul.list-group li.list-item p.list-text .list-icon,.popover-content .popover-body p.list-text .list-icon{color:#2db051;font-variation-settings:\"FILL\" 0,\"wght\" 300,\"GRAD\" 0,\"opsz\" 24;font-size:24px!important}.popover-content ul.list-group li.list-item.list-active.company-active button.list-button .mat-icon{color:#2db051;font-variation-settings:\"FILL\" 1,\"wght\" 300,\"GRAD\" 0,\"opsz\" 24}.popover-content ul.list-group li.list-item p.list-text span.mdc-list-item__primary-text{width:100%;display:flex}.popover-content ul.list-group li.list-item span.title-case,.popover-content ul.list-group li.list-item span.lower-case,.popover-content ul.list-group li.list-item span.pmx-lower-case{font-size:.8rem;color:#212121;font-weight:500;display:block;line-height:normal}small{color:#9e9e9e}.popover-content ul.list-group li.list-item span.text-label{font-size:12px;color:#979797;font-weight:400;display:block;line-height:normal}.popover-content ul.list-group li.list-item .list-text span.mat-mdc-menu-item-text{font-size:.875rem;color:#0a152f;font-weight:500;line-height:normal}.popover-content ul.list-group li.list-item .list-text.list-text-email span.mat-mdc-menu-item-text{width:calc(100% - 40px);display:inline-flex}.popover-content ul.list-group li.list-item .list-text.list-text-email span.pmx-text-wrap{overflow-wrap:break-word;word-wrap:break-word;-webkit-hyphens:none;hyphens:none;width:100%}.popover-content ul.list-group li.list-item span.upper-case{text-transform:uppercase}.popover-content ul.list-group li.list-item span.app-status,.popover-content ul.list-group li.list-item .mat-mdc-chip-option.chip-status{font-size:13px;color:#0a152f;font-weight:400;display:block;line-height:normal;margin:0}.popover-content ul.list-group li.list-item.app-active .list-text,.popover-content ul.list-group li.list-item.company-active .list-text{color:#4b85ea}.popover-content ul.list-group li.list-item.app-active span.app-status,.popover-content ul.list-group li.list-item.app-active .mat-mdc-chip-option.chip-status,.popover-content ul.list-group li.list-item.company-active span.app-status,.popover-content ul.list-group li.list-item.company-active .mat-mdc-chip-option.chip-status{color:#24a53f}.popover-content ul.list-group li.list-item .mat-mdc-chip-option.chip-status{display:flex;flex-direction:row;justify-content:flex-start}.popover-content ul.list-group li.list-item .mat-mdc-chip-option.chip-status.mdc-evolution-chip--selected{transition:all .3s ease-out;margin-left:auto;flex:1;justify-content:flex-end}.popover-content ul.list-group li.list-item.app-active .mat-mdc-chip-option.chip-status.mdc-evolution-chip--selected,.popover-content ul.list-group li.list-item.company-active .mat-mdc-chip-option.chip-status.mdc-evolution-chip--selected{background-color:#408dd7;color:#f5f5f5}.popover-content ul.list-group li.list-item .mat-mdc-standard-chip .mat-mdc-chip-action-label{font-size:.75rem}.popover-content ul.list-group li.list-item .mat-mdc-standard-chip{height:24px}.popover-content ul.list-group li.list-item img.logo-thumb{width:24px;height:auto;margin-right:1rem}.popover-content ul.list-group li.list-item .list-button.btn-logout{display:flex;align-items:center;color:#616161}.popover-content ul.list-group li.list-item.app-active .list-button .app-icon-wrapper{background-color:#fff;border-color:#4b85ea;border-width:3px}.popover-content ul.list-group li.list-item.company-active .list-text .mat-icon{font-variation-settings:\"FILL\" 1,\"wght\" 200,\"GRAD\" 0,\"opsz\" 24;color:var(--themelightblue)}.popover-content ul.list-group li.list-item .list-button.btn-logout .list-text{color:#616161}.popover-content ul.list-group li.list-item.app-active button,.popover-content ul.list-group li.list-item.company-active button{cursor:not-allowed;pointer-events:none}.popover-content hr{background-color:#c4c9d2;margin:0;width:100%;border:0;border-top:1px solid #c4c9d2;opacity:1}.popover-content ul.apps-grid{width:100%;white-space:nowrap;overflow:auto}.popover-content ul.apps-grid li.list-item,.popover-content ul.apps-grid li.list-item img.logo-thumb{display:flex;justify-content:flex-start;flex-wrap:nowrap;align-content:center;align-items:center;flex-direction:row}.popover-header{background-color:#d5e3fa;border-bottom:1px solid #d8d8d8;padding:.975rem 1rem;margin-bottom:0;display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center;flex-wrap:wrap}.popover-header .mat-icon{font-size:1.5rem!important;font-variation-settings:\"FILL\" 1,\"wght\" 500,\"GRAD\" 0,\"opsz\" 24;color:#254d93}.header-dropdown-profile .popover-header{padding:1.125rem 1rem}.popover-header h3.popover-title{font-size:1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;margin-bottom:0;line-height:normal;font-weight:500;color:#254d93}.popover-body{max-height:420px;overflow:auto;padding:0}.app-icon-wrapper{margin:0 1rem 0 0;max-width:48px;max-height:48px;width:48px;height:48px;overflow:hidden;background-size:70%;background-repeat:no-repeat;background-position:center;border:1px solid #c4c9d2;border-radius:8px;display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center;flex-wrap:wrap}.app-icon-wrapper img.app-icon{width:100%;height:auto;overflow:hidden;padding:.5rem}h4.app-name{font-size:.65rem;margin:.5rem 0 0;line-height:normal;color:#254d93;font-weight:400;text-transform:uppercase}.popover-body ul.enabled-apps{display:flex;flex-flow:column wrap;justify-content:space-evenly;align-items:center;align-content:flex-start;border-bottom:1px solid #E9E9E9;margin:0;padding:0 1rem;list-style:none}.popover-body ul.enabled-apps li.enabled-app{flex-grow:1;flex:0 1 auto;text-align:center;font-size:.8125rem;padding:10px;list-style:none}.pmx-button.mdc-icon-button[color=theme-white],.pmx-button.icon-btn.mdc-button--raised[color=theme-white]{color:#254d93}.pmx-button.icon-btn.orders-menu[color=theme-white]{border:1px solid #fafafa!important}:host(.mat-accent){--mat-slider-ripple-color: #24a148;--mat-slider-hover-state-layer-color: rgba(255, 64, 129, .05);--mat-slider-focus-state-layer-color: rgba(255, 64, 129, .2);--mdc-slider-handle-color: #24a148;--mdc-slider-focus-handle-color: #24a148;--mdc-slider-hover-handle-color: #24a148;--mdc-slider-active-track-color: #24a148;--mdc-slider-inactive-track-color: #24a148;--mdc-slider-with-tick-marks-inactive-container-color: #24a148;--mdc-slider-with-tick-marks-active-container-color: #51bc6b}:host ::ng-deep .app-menu-sidenav-container{z-index:999}:host ::ng-deep .mat-drawer-backdrop.mat-drawer-shown{position:fixed;background:rgba(63,81,181,.25)}.mat-drawer-backdrop{position:fixed!important}.sidenavDrawer{position:fixed!important;left:0;width:250px;padding:0}.mdc-list-group__subheader{background-color:#eef4ff;padding:5px 20px;margin-bottom:5px!important;font-size:14px!important;font-weight:500!important}.menusubItems{padding-left:2rem!important}.switchCompanyField{min-width:175px!important;margin-left:13px}.profile-button{margin-left:10px}.brand-logo{width:100px;height:38px;background-repeat:no-repeat;background-size:contain;background-origin:content-box;padding:7px}.menuIconList{font-size:20px!important;height:20px;width:20px;margin-right:.5rem;position:relative;color:#747474;font-weight:300}.subHeadListItems{padding:0 15px}.subHeadListItems .menu-item{display:flex;flex-direction:row;align-items:center;color:#000;padding:.7rem .5rem;border-radius:3px;transition:all .3s;font-size:var(--contentfont)}.subHeadListItems .menu-item:hover:not(.no-select){cursor:pointer;background-color:#f5f5f5}.subHeadInnerItem{margin-bottom:0!important}.drawerHeadLogo{width:100%;padding:10px 20px;margin-bottom:20px;margin-top:15px}.drawerHeadLogo img{width:130px}.app-menu-content-section{overflow-y:auto;height:calc(100vh - 80px);padding-bottom:25px}.active-menu{background-color:var(--themelightblue)!important;color:#fff!important;font-weight:500}.active-menu .menuIconList{color:#fff}.appList{padding:11px 15px;background-color:#eef4ff;margin:20px 0 10px;height:35px;display:flex}.appList img{object-fit:contain}::ng-deep .header-dropdown-profile .mat-mdc-menu-content{margin:0;padding:0;list-style-type:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i5.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "component", type: i9.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i10.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i11.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: i12.ActiveRoutePipe, name: "activeRoute" }] });
|
|
301
367
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: HeaderComponent, decorators: [{
|
|
302
368
|
type: Component,
|
|
303
|
-
args: [{ selector: 'lib-header', template: "<mat-sidenav-container class=\"app-menu-sidenav-container\">\n <mat-sidenav cdkMenuBar #sidenav mode=\"over\" class=\"sidenavDrawer\">\n <div class=\"drawerHeadLogo\"><img [src]=\"_domSanitizer.bypassSecurityTrustUrl(imageDataUrls.profetLogo)\"></div>\n <div class=\"app-menu-content-section\">\n <ng-container *ngFor=\"let appType of menuList\">\n <div class=\"appList\">\n <img *ngIf=\"appConfig[appType.key]?.appLogoUri\"\n [src]=\"_domSanitizer.bypassSecurityTrustUrl(appConfig[appType.key]?.appLogoUri)\">\n </div>\n <div class=\"subHeadListItems\">\n <div *ngFor=\"let item of appType.value\" class=\"menu-item\" (click)=\"menuSelection(item)\"\n [ngClass]=\"{'active-menu': item | activeRoute : _router.url:_headerSer.headerConfig.appType}\">\n <mat-icon class=\"menuIconList\" *ngIf=\"item.icon\">{{ item.icon }}</mat-icon>\n <span>{{ item.menuName }}</span>\n </div>\n </div>\n </ng-container>\n </div>\n </mat-sidenav>\n\n</mat-sidenav-container>\n<mat-toolbar cdkMenuBar color=\"primary\" class=\"header-wrapper common_header shadow-sm\">\n <!-- Main nav button and navigation links -->\n <button mat-icon-button color=\"theme-white\" (click)=\"sidenav.toggle()\"\n class=\"pmx-button pmx-menu-button orders-menu icon-btn ms-0 me-3\" aria-label=\"main menu\" tabindex=\"0\"\n matTooltip=\"Main menu\" matTooltipPosition=\"below\"\n matTooltipClass=\"poc-header-tooltip\"><mat-icon>menu</mat-icon></button>\n <a class=\"navbar-brand me-auto\" href=\"#\">\n <img [src]=\"_domSanitizer.bypassSecurityTrustUrl(appConfig[_headerSer.headerConfig.appType]?.appLogoUri)\"\n alt=\"App Logo\" class=\"app-logo\">\n </a>\n <ng-content select=\"[headerInfo]\"></ng-content>\n <!-- <ng-content></ng-content> -->\n\n <mat-form-field appearance=\"outline\" class=\"switchCompanyField\">\n <mat-label>Company</mat-label>\n <mat-select [formControl]=\"companyControl\" (selectionChange)=\"switchCompany($event)\">\n <mat-option *ngFor=\"let opt of companyList\" [value]=\"opt\">\n {{opt.name}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n\n <!-- Profile button and profile dropdown links -->\n <button class=\"pmx-button pmx-menu-button profile-button\" mat-button [matMenuTriggerFor]=\"menu\" color=\"primary\"\n matTooltipPosition=\"below\">\n <div class=\"profile-inner\">\n <!-- <div class=\"brand-logo align-self-center\" *ngIf=\"activeCompany?.logo\"\n [ngClass]=\"activeCompany?.logo ? 'branded-logo-true' : 'branded-logo-false'\"\n [ngStyle]=\"{'background-image': 'url(' + activeCompany?.logo + ')'}\"></div> -->\n <div class=\"avatar\">\n <img *ngIf=\"userImageLink;else defaultAvatar\" [src]=\"userImageLink\" class=\"avatar-image\" alt=\"Avatar\">\n <ng-template #defaultAvatar><img\n [src]=\"_domSanitizer.bypassSecurityTrustUrl(imageDataUrls.defaultUserImage)\"\n class=\"avatar-default\" alt=\"profile pic\"></ng-template>\n </div>\n </div>\n </button>\n <mat-menu #menu=\"matMenu\" class=\"accounts_drpmenu pmx-menu-group header-dropdown-profile\" xPosition=\"before\">\n <div class=\"popover-content show-menu\">\n <div class=\"popover-header\">\n <div class=\"popover-user-top\">\n <div class=\"avatar-wrapper\">\n <img *ngIf=\"userImageLink;else defaultLargeAvatar\" [src]=\"userImageLink\" class=\"avatar-icon\"\n alt=\"Avatar\">\n <ng-template #defaultLargeAvatar>\n <div [ngStyle]=\"{'background-image': 'url(' + imageDataUrls.defaultUserImage + ')'}\"\n class=\"avatar-icon default-avatar\" alt=\"Avatar icon\"> </div>\n </ng-template>\n </div>\n <div class=\"user-data\">\n <h3 class=\"profile-name\"><span *ngIf=\"userAuthData\">{{ userAuthData?.firstName }} {{\n userAuthData?.lastName }}</span></h3>\n <button mat-button color=\"accent\" class=\"pmx-button btn btn-small view-profile ms-0\"\n (click)=\"profile()\">View Profile</button>\n </div>\n </div>\n </div>\n <div class=\"popover-body\">\n <!-- <div class=\"popover-content-title\">\n <p>Overview</p>\n </div> -->\n\n <div *ngIf=\"userAuthData?.email\">\n <p mat-menu-item class=\"list-text list-text-email mt-3 mb-3\">\n <mat-icon class=\"list-icon\">mail</mat-icon><span class=\"pmx-lower-case pmx-text-wrap me-auto\">{{\n userAuthData?.email }}</span>\n </p>\n </div>\n <ng-container *ngIf=\"userAuthData?.contactPhone\">\n <p mat-menu-item class=\"list-text mb-3\">\n <mat-icon class=\"list-icon\">call</mat-icon><span class=\"title-case me-auto\">{{\n userAuthData?.contactPhone }}</span>\n </p>\n </ng-container>\n\n <hr />\n <ul cdkMenu class=\"list-group last-group my-1\">\n <li cdkMenuItem class=\"list-item py-2\">\n <button mat-menu-item class=\"pmx-button list-button btn-logout\" (click)=\"onLogoutClick()\">\n <mat-icon>power_settings_new</mat-icon>\n <span class=\"list-text\">Logout</span>\n </button>\n </li>\n </ul>\n </div>\n </div>\n </mat-menu>\n</mat-toolbar>\n<mat-drawer-container class=\"outer-drawer-container\" autosize>\n <mat-drawer #utilityDrawer class=\"utility-menu-drawer\" mode=\"side\" position=\"end\">\n <ng-container *ngIf=\"defaultApps.length > 0\">\n <button mat-icon-button color=\"primary\" class=\"btn-right-menu\" aria-label=\"Button\"\n *ngFor=\"let item of defaultApps\" (click)=\"openItem(item)\">\n <mat-icon>{{ item.icon }}</mat-icon>\n </button>\n <hr>\n </ng-container>\n <ng-container *ngIf=\"config.length > 0\">\n <button mat-icon-button color=\"primary\" class=\"btn-right-menu\" aria-label=\"Button\"\n *ngFor=\"let item of config\" (click)=\"openItem(item)\">\n <mat-icon>{{ item.icon }}</mat-icon>\n </button>\n </ng-container>\n </mat-drawer>\n <mat-drawer-content>\n <mat-drawer-container class=\"inner-drawer-container\" autosize>\n <mat-drawer #utilitySpaceDrawer class=\"utility-content-drawer\" position=\"end\"\n [mode]=\"selected?.layout || 'side'\" [opened]=\"!!selected\" (closed)=\"selected = undefined\">\n <ng-container *ngIf=\"componentToLoad\">\n <ng-container *ngComponentOutlet=\"componentToLoad; injector: dynamicInjector\"></ng-container>\n </ng-container>\n </mat-drawer>\n <!-- <mat-drawer #sampleDrawer position=\"end\" mode=\"over\">\n <p>Sample content</p>\n </mat-drawer> -->\n <mat-drawer-content><ng-content class=\"body_content\"\n select=\"[bodyContentInfo]\"></ng-content></mat-drawer-content>\n </mat-drawer-container>\n <button type=\"button\" mat-button class=\"utility-toggle-button\"\n [ngClass]=\"utilityDrawer.opened ? 'utility-opened' : 'utility-closed'\"\n *ngIf=\"!_headerSer.headerConfig.disableUtilityDrawer\" (click)=\"utilityDrawer.toggle()\">\n <mat-icon class=\"chat-expand-arrow\" *ngIf=\"utilityDrawer.opened\">arrow_right</mat-icon>\n <mat-icon class=\"chat-expand-arrow\" *ngIf=\"!utilityDrawer.opened\">arrow_left</mat-icon>\n </button>\n </mat-drawer-content>\n</mat-drawer-container>", styles: [":root{--contentfont: 13.12px !important;--labelfont: .75rem !important}.pmx-text-truncate{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pmx-text-wrap{overflow-wrap:break-word;word-break:break-word}.pmx-lower-case{text-transform:lowercase}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color)}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #24a148;--mat-text-button-state-layer-color: #24a148;--mat-text-button-ripple-color: rgba(255, 64, 129, .1)}.header-user-name{text-align:end;color:#000}.header-user-name span{font-size:12px;color:#9e9e9ede}.avatarLogo{max-width:30px}mat-toolbar.mat-toolbar.common_header.mat-primary.mat-toolbar-single-row{position:fixed;left:0;top:0;background-color:#fff;height:56px}button.switchButton,button.menuHamberger{padding:8px!important}.sidenavPanel{padding:20px 25px;height:100vh;position:relative}ul.navbarList{padding-left:0;list-style:none;margin-top:40px}ul.navbarList li{color:#666;font-weight:400;margin-bottom:25px;width:170px;cursor:pointer}.active{color:#4177d6!important}ul.navbarList li img{width:23px;margin-right:15px}.accounts_drpmenu{margin-top:.7em}.xsShowUsername{display:none;padding:0 16px;height:48px;line-height:48px}.vr{width:2px;background-color:#f5f5f5;opacity:1;margin:0 .5rem 0 1rem}.vr-blury{background-image:linear-gradient(180deg,transparent,#666,transparent);width:1px;opacity:.25}.navbar-brand .app-logo{height:20px;width:auto}.pmx-button mat-icon.mat-icon,.pmx-button mat-icon.mat-primary,.pmx-button mat-icon.mat-accent,.pmx-button mat-icon.mat-warn{color:var(--mat-icon-color)}.pmx-button mat-icon.mat-icon{font-size:24px!important;line-height:1.5;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;transition:transform .3s ease}.pmx-button.mdc-button--raised mat-icon.mat-icon{width:24px;height:24px;display:contents}.pmx-button.mat-mdc-button-base mat-icon.mat-icon{z-index:1}.pmx-button mat-icon.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.pmx-button mat-icon.mdc-button span.button-text{display:inline-flex;padding:0 1rem;text-transform:uppercase;font-size:.875rem;line-height:1.5}.pmx-button mat-icon.mdc-button span.upper-case{text-transform:uppercase}.pmx-button.mdc-button,.pmx-button.mdc-icon-button,.pmx-button.mdc-button--outlined,.pmx-button.mdc-button .mat-mdc-button-touch-target,.pmx-button.mdc-icon-button .mat-mdc-button-touch-target{height:40px!important;font-size:.75rem!important;letter-spacing:.2px;padding:0 .5rem;line-height:normal}.pmx-button.mdc-icon-button,.pmx-button.icon-btn.mdc-button--outlined,.pmx-button.icon-btn.mdc-button--raised,.pmx-button.mdc-icon-button .mat-mdc-button-touch-target{width:40px;border-radius:5px}.pmx-button.btn-small.mdc-button,.pmx-button.btn-small.mdc-icon-button,.pmx-button.btn-small.mdc-button--outlined{height:28px!important;padding:0 1rem}.pmx-button.mdc-icon-button,.pmx-button.icon-btn.mdc-button--raised{color:#254d93}.pmx-header .icon-button-shadow{box-shadow:0 1px 3px #0003,0 0 #00000024,0 1px 3px #0000001f}.pmx-button.icon-btn.mdc-button--raised.btn-switch-apps.menu-opened,.pmx-button.icon-btn.mdc-button--outlined.btn-switch-apps.menu-opened{background-color:#254d93;color:#fff;font-variation-settings:\"FILL\" 0,\"wght\" 200,\"GRAD\" 0,\"opsz\" 24}.pmx-button.mdc-icon-button.pmx-menu-button:hover,.pmx-button.mat-mdc-outlined-button.btn-switch-apps:hover,.pmx-button.icon-btn.mdc-button--outlined.btn-switch-apps:hover{background-color:#e5f3fb}.pmx-button.icon-app{width:20px}.pmx-button.mat-mdc-outlined-button,.pmx-button.mat-mdc-outlined-button:not(:disabled){background-color:#fff;overflow:hidden}.pmx-button.pmx-menu-button.profile-button.mat-mdc-outlined-button{padding:0;border-color:#bfdff7!important}.btn-group-clicked .pmx-button.pmx-menu-button.profile-button.mat-mdc-outlined-button{border-color:#bfdff7!important}.pmx-button.profile-button .profile-inner{border:0 solid transparent!important;display:flex;align-items:center;overflow:clip}.pmx-button.profile-button .avatar{width:38px;height:38px;box-sizing:border-box;border-radius:50%;overflow:hidden;display:flex;flex-direction:column;justify-content:center;align-content:center;align-items:center;flex-wrap:wrap}.pmx-button.profile-button .avatar{background-color:#9cd7a8}.pmx-button.profile-button .avatar img.avatar-image,.pmx-button.profile-button .avatar img.avatar-default{width:100%;height:auto}.branded-group-false{margin-left:.65rem}.branded-group-false .pmx-button.pmx-menu-button.profile-button.branded-button-false{width:40px;border-radius:20px!important}.branded-group-true{margin-left:.65rem;border-radius:20px;border:1px solid #bfdff7}.btn-group-clicked.branded-group-true{background-color:#99ccf2}.branded-group-true .pmx-button.profile-button .profile-inner{border:0 solid #c4c9d2!important}.branded-group-true .pmx-button.pmx-menu-button.profile-button.branded-button-true{border-radius:20px}.branded-group-true .pmx-button.profile-button.branded-button-true .profile-inner .branded-logo-true{border-radius:5px;display:block;position:relative;height:38px;background-size:100%;background-position:center;background-repeat:no-repeat;min-width:100px;margin-right:1rem}.pmx-menu-group.mat-mdc-menu-panel{margin-top:1rem}.header-dropdown-apps.mat-mdc-menu-panel .mat-mdc-menu-content,.header-dropdown-profile.mat-mdc-menu-panel .mat-mdc-menu-content{padding:0!important}.header-dropdown-apps{width:400px!important}.header-dropdown-apps.mat-mdc-menu-panel .list-button{padding:.5rem 2rem}.header-dropdown-apps.mdc-menu-surface--open,.header-dropdown-profile.mdc-menu-surface--open{position:absolute;z-index:1;top:0;right:0;margin:0;padding:0;border:1px solid #e5e5e5;border-radius:6px;background:#fff;animation:popover .2s ease-in-out}.header-dropdown-apps.mat-mdc-menu-panel.mat-mdc-menu-panel{max-width:400px!important;width:400px!important;overflow:visible}::ng-deep .header-dropdown-profile.mat-mdc-menu-panel.mat-mdc-menu-panel{max-width:408px!important;width:408px!important;overflow:visible;margin-top:1rem}.popover-content:after,.popover-content:before{font-size:1.4em;display:block;width:0;height:0;content:\"\";pointer-events:none;position:absolute;top:-.45em}.popover-content:before{border-right:10px solid transparent;border-bottom:10px solid #999;border-left:10px solid transparent;right:.97em}.popover-content:after{border-right:12px solid transparent;border-bottom:12px solid #d5e3fa;border-left:12px solid transparent;right:.9em}.popover-content-title{display:flex;align-items:center;justify-content:flex-start;overflow:hidden;padding:0 1rem;min-height:40px}.popover-content-title p{margin:0;font-size:.75rem!important;color:#777}.popover-content .popover-user-top:after{clear:both;content:\"\";display:table}.popover-content .popover-user-top{display:flex;flex-flow:row;justify-content:flex-start;align-items:center}.popover-content .popover-user-top .avatar-wrapper{flex:0 4 auto;border-radius:100%;overflow-clip-margin:content-box;overflow:clip;background-color:#fff;padding:2px}.drop-shadow{filter:drop-shadow(0px 0px 3px rgba(0,0,0,.5))}.popover-content .popover-user-top .user-data{flex:1 0 auto;margin-left:1rem}.popover-content .popover-user-top .avatar-wrapper .avatar-icon{background-repeat:no-repeat;background-size:100%;background-position:center;width:64px;height:64px;background-color:#72c885}.avatar-icon.default-avatar{background-size:100%}.popover-content .popover-user-top .user-data h3.profile-name{font-size:1rem;text-overflow:ellipsis;margin-bottom:.5rem;line-height:normal;font-weight:600;color:#254d93}.btn.view-profile{background:#fafafa}.popover-content ul.list-group{padding:0 0 8px;margin:0;display:flex;list-style:none}.popover-content ul.list-group.last-group,.popover-content ul.list-group.last-group .list-item{background-color:transparent}.popover-content ul.list-group li.list-item{align-items:center;border:none;padding:0;width:100%;display:flex;flex-direction:row;flex-wrap:wrap;order:1}.popover-content ul.list-group li.list-item .list-button{padding:.5rem 1rem;min-height:40px}.popover-content ul.list-group li.list-item span.mat-mdc-menu-item-text,.popover-content ul.list-group li.list-item span.mdc-list-item__primary-text,.popover-content ul.list-group li.list-item .list-button>span{display:flex;align-items:center}.popover-content ul.list-group li.list-item.list-company .list-button>span{width:100%;overflow:hidden}.popover-content ul.list-group li.list-item .list-button .hover-label.tooltip-label{opacity:0}.popover-content ul.list-group li.list-item.list-app .list-button:hover>span .hover-label.tooltip-label,.popover-content ul.list-group li.list-item.list-company .list-button:hover>span .hover-label.tooltip-label{opacity:0;display:inline-flex;color:#fff;background-color:#616161;font-size:11px;border-radius:4px;padding:0 .5rem;transition:opacity .3s ease-out}.popover-content ul.list-group li.list-item .list-button:hover{background:rgba(0,0,0,.04)}.popover-content ul.list-group li.list-item.company-active,.popover-content ul.list-group li.list-item.app-active{cursor:not-allowed;pointer-events:none;order:0}.popover-content ul.list-group li.list-item.company-active .active-label,.popover-content ul.list-group li.list-item.app-active .active-label{background-color:#93c47d;color:#212121;padding:0 .5rem;border-radius:50px;font-size:.75rem;margin-left:.5rem}.popover-content ul.list-group.list-apps-group{display:flex}.popover-content ul.list-group.list-overview li.list-item{cursor:not-allowed;pointer-events:none}::ng-deep .popover-content ul.list-group li.list-item button.list-button .list-text{font-size:15px}.popover-content .popover-body p.list-text{padding:.5rem 1rem;margin:0;min-height:auto;cursor:default}::ng-deep .popover-content .popover-body p.list-text .mat-mdc-menu-item-text{font-size:15px;font-weight:500}.popover-content ul.list-group li.list-item .list-button .mat-icon,.popover-content ul.list-group li.list-item p.list-text mat-icon.list-icon,.popover-content ul.list-group li.list-item .list-button .list-icon,.popover-content ul.list-group li.list-item p.list-text .list-icon,.popover-content .popover-body p.list-text .list-icon{color:#2db051;font-variation-settings:\"FILL\" 0,\"wght\" 300,\"GRAD\" 0,\"opsz\" 24;font-size:24px!important}.popover-content ul.list-group li.list-item.list-active.company-active button.list-button .mat-icon{color:#2db051;font-variation-settings:\"FILL\" 1,\"wght\" 300,\"GRAD\" 0,\"opsz\" 24}.popover-content ul.list-group li.list-item p.list-text span.mdc-list-item__primary-text{width:100%;display:flex}.popover-content ul.list-group li.list-item span.title-case,.popover-content ul.list-group li.list-item span.lower-case,.popover-content ul.list-group li.list-item span.pmx-lower-case{font-size:.8rem;color:#212121;font-weight:500;display:block;line-height:normal}small{color:#9e9e9e}.popover-content ul.list-group li.list-item span.text-label{font-size:12px;color:#979797;font-weight:400;display:block;line-height:normal}.popover-content ul.list-group li.list-item .list-text span.mat-mdc-menu-item-text{font-size:.875rem;color:#0a152f;font-weight:500;line-height:normal}.popover-content ul.list-group li.list-item .list-text.list-text-email span.mat-mdc-menu-item-text{width:calc(100% - 40px);display:inline-flex}.popover-content ul.list-group li.list-item .list-text.list-text-email span.pmx-text-wrap{overflow-wrap:break-word;word-wrap:break-word;-webkit-hyphens:none;hyphens:none;width:100%}.popover-content ul.list-group li.list-item span.upper-case{text-transform:uppercase}.popover-content ul.list-group li.list-item span.app-status,.popover-content ul.list-group li.list-item .mat-mdc-chip-option.chip-status{font-size:13px;color:#0a152f;font-weight:400;display:block;line-height:normal;margin:0}.popover-content ul.list-group li.list-item.app-active .list-text,.popover-content ul.list-group li.list-item.company-active .list-text{color:#4b85ea}.popover-content ul.list-group li.list-item.app-active span.app-status,.popover-content ul.list-group li.list-item.app-active .mat-mdc-chip-option.chip-status,.popover-content ul.list-group li.list-item.company-active span.app-status,.popover-content ul.list-group li.list-item.company-active .mat-mdc-chip-option.chip-status{color:#24a53f}.popover-content ul.list-group li.list-item .mat-mdc-chip-option.chip-status{display:flex;flex-direction:row;justify-content:flex-start}.popover-content ul.list-group li.list-item .mat-mdc-chip-option.chip-status.mdc-evolution-chip--selected{transition:all .3s ease-out;margin-left:auto;flex:1;justify-content:flex-end}.popover-content ul.list-group li.list-item.app-active .mat-mdc-chip-option.chip-status.mdc-evolution-chip--selected,.popover-content ul.list-group li.list-item.company-active .mat-mdc-chip-option.chip-status.mdc-evolution-chip--selected{background-color:#408dd7;color:#f5f5f5}.popover-content ul.list-group li.list-item .mat-mdc-standard-chip .mat-mdc-chip-action-label{font-size:.75rem}.popover-content ul.list-group li.list-item .mat-mdc-standard-chip{height:24px}.popover-content ul.list-group li.list-item img.logo-thumb{width:24px;height:auto;margin-right:1rem}.popover-content ul.list-group li.list-item .list-button.btn-logout{display:flex;align-items:center;color:#616161}.popover-content ul.list-group li.list-item.app-active .list-button .app-icon-wrapper{background-color:#fff;border-color:#4b85ea;border-width:3px}.popover-content ul.list-group li.list-item.company-active .list-text .mat-icon{font-variation-settings:\"FILL\" 1,\"wght\" 200,\"GRAD\" 0,\"opsz\" 24;color:var(--themelightblue)}.popover-content ul.list-group li.list-item .list-button.btn-logout .list-text{color:#616161}.popover-content ul.list-group li.list-item.app-active button,.popover-content ul.list-group li.list-item.company-active button{cursor:not-allowed;pointer-events:none}.popover-content hr{background-color:#c4c9d2;margin:0;width:100%;border:0;border-top:1px solid #c4c9d2;opacity:1}.popover-content ul.apps-grid{width:100%;white-space:nowrap;overflow:auto}.popover-content ul.apps-grid li.list-item,.popover-content ul.apps-grid li.list-item img.logo-thumb{display:flex;justify-content:flex-start;flex-wrap:nowrap;align-content:center;align-items:center;flex-direction:row}.popover-header{background-color:#d5e3fa;border-bottom:1px solid #d8d8d8;padding:.975rem 1rem;margin-bottom:0;display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center;flex-wrap:wrap}.popover-header .mat-icon{font-size:1.5rem!important;font-variation-settings:\"FILL\" 1,\"wght\" 500,\"GRAD\" 0,\"opsz\" 24;color:#254d93}.header-dropdown-profile .popover-header{padding:1.125rem 1rem}.popover-header h3.popover-title{font-size:1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;margin-bottom:0;line-height:normal;font-weight:500;color:#254d93}.popover-body{max-height:420px;overflow:auto;padding:0}.app-icon-wrapper{margin:0 1rem 0 0;max-width:48px;max-height:48px;width:48px;height:48px;overflow:hidden;background-size:70%;background-repeat:no-repeat;background-position:center;border:1px solid #c4c9d2;border-radius:8px;display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center;flex-wrap:wrap}.app-icon-wrapper img.app-icon{width:100%;height:auto;overflow:hidden;padding:.5rem}h4.app-name{font-size:.65rem;margin:.5rem 0 0;line-height:normal;color:#254d93;font-weight:400;text-transform:uppercase}.popover-body ul.enabled-apps{display:flex;flex-flow:column wrap;justify-content:space-evenly;align-items:center;align-content:flex-start;border-bottom:1px solid #E9E9E9;margin:0;padding:0 1rem;list-style:none}.popover-body ul.enabled-apps li.enabled-app{flex-grow:1;flex:0 1 auto;text-align:center;font-size:.8125rem;padding:10px;list-style:none}.pmx-button.mdc-icon-button[color=theme-white],.pmx-button.icon-btn.mdc-button--raised[color=theme-white]{color:#254d93}.pmx-button.icon-btn.orders-menu[color=theme-white]{border:1px solid #fafafa!important}:host(.mat-accent){--mat-slider-ripple-color: #24a148;--mat-slider-hover-state-layer-color: rgba(255, 64, 129, .05);--mat-slider-focus-state-layer-color: rgba(255, 64, 129, .2);--mdc-slider-handle-color: #24a148;--mdc-slider-focus-handle-color: #24a148;--mdc-slider-hover-handle-color: #24a148;--mdc-slider-active-track-color: #24a148;--mdc-slider-inactive-track-color: #24a148;--mdc-slider-with-tick-marks-inactive-container-color: #24a148;--mdc-slider-with-tick-marks-active-container-color: #51bc6b}:host ::ng-deep .app-menu-sidenav-container{z-index:999}:host ::ng-deep .mat-drawer-backdrop.mat-drawer-shown{position:fixed;background:rgba(63,81,181,.25)}.mat-drawer-backdrop{position:fixed!important}.sidenavDrawer{position:fixed!important;left:0;width:250px;padding:0}.mdc-list-group__subheader{background-color:#eef4ff;padding:5px 20px;margin-bottom:5px!important;font-size:14px!important;font-weight:500!important}.menusubItems{padding-left:2rem!important}.switchCompanyField{min-width:175px!important;margin-left:13px}.profile-button{margin-left:10px}.brand-logo{width:100px;height:38px;background-repeat:no-repeat;background-size:contain;background-origin:content-box;padding:7px}.menuIconList{font-size:20px!important;height:20px;width:20px;margin-right:.5rem;position:relative;color:#747474;font-weight:300}.subHeadListItems{padding:0 15px}.subHeadListItems .menu-item{display:flex;flex-direction:row;align-items:center;color:#000;padding:.7rem .5rem;border-radius:3px;transition:all .3s;font-size:var(--contentfont)}.subHeadListItems .menu-item:hover:not(.no-select){cursor:pointer;background-color:#f5f5f5}.subHeadInnerItem{margin-bottom:0!important}.drawerHeadLogo{width:100%;padding:10px 20px;margin-bottom:20px;margin-top:15px}.drawerHeadLogo img{width:130px}.app-menu-content-section{overflow-y:auto;height:calc(100vh - 80px);padding-bottom:25px}.active-menu{background-color:var(--themelightblue)!important;color:#fff!important;font-weight:500}.active-menu .menuIconList{color:#fff}.appList{padding:11px 15px;background-color:#eef4ff;margin:20px 0 10px;height:35px;display:flex}.appList img{object-fit:contain}::ng-deep .header-dropdown-profile .mat-mdc-menu-content{margin:0;padding:0;list-style-type:none}:host ::ng-deep .app-assistant-sidenav-container{z-index:999}.utility-toggle-button{background-color:#fff;border-top-left-radius:30px;border-bottom-left-radius:30px;box-shadow:0 1px 2px 2px #ccc;text-align:center;right:-20px;bottom:38px;position:fixed!important;height:34px!important;width:45px;cursor:pointer;z-index:1004;transition:all .2s}.utility-toggle-button mat-icon.chat-expand-arrow{font-size:28px!important;position:relative;top:-4px;right:10px;height:20px;vertical-align:middle;transition:all .2s}.utility-toggle-button:hover{right:0}.utility-toggle-button.utility-opened{right:10px;border-radius:30px;width:34px;box-shadow:none;background-color:#e7e7e7;min-width:unset}.utility-toggle-button.utility-opened mat-icon.chat-expand-arrow{right:0;top:0;width:22px;height:22px;margin:0;font-size:22px!important}::ng-deep .mat-drawer-container.outer-drawer-container{overflow:unset}::ng-deep .outer-drawer-container>mat-drawer-content{margin-top:56px;z-index:3}.utility-menu-drawer{padding:3px;height:91vh;width:56px;margin-top:56px;overflow:hidden}.utility-content-drawer{height:91vh;width:540px;overflow:hidden}.list-icons-cell{padding:8px;text-align:center;vertical-align:middle;height:40px;width:40px;cursor:pointer;border-radius:30px}.list-icons-cell .mat-icon.list-icons{font-size:25px!important;color:#4b85ea!important}.list-icons-cell:hover{background-color:#ccc}\n"] }]
|
|
369
|
+
args: [{ selector: 'lib-header', template: "<mat-sidenav-container class=\"app-menu-sidenav-container\">\n <mat-sidenav cdkMenuBar #sidenav mode=\"over\" class=\"sidenavDrawer\">\n <div class=\"drawerHeadLogo\"><img [src]=\"_domSanitizer.bypassSecurityTrustUrl(imageDataUrls.profetLogo)\"></div>\n <div class=\"app-menu-content-section\">\n <ng-container *ngFor=\"let appType of menuList\">\n <div class=\"appList\">\n <img *ngIf=\"appConfig[appType.key]?.appLogoUri\"\n [src]=\"_domSanitizer.bypassSecurityTrustUrl(appConfig[appType.key]?.appLogoUri)\">\n </div>\n <div class=\"subHeadListItems\">\n <div *ngFor=\"let item of appType.value\" class=\"menu-item\" (click)=\"menuSelection(item)\"\n [ngClass]=\"{'active-menu': item | activeRoute : _router.url:_headerSer.headerConfig.appType}\">\n <mat-icon class=\"menuIconList\" *ngIf=\"item.icon\">{{ item.icon }}</mat-icon>\n <span>{{ item.menuName }}</span>\n </div>\n </div>\n </ng-container>\n </div>\n </mat-sidenav>\n\n</mat-sidenav-container>\n<mat-toolbar cdkMenuBar color=\"primary\" class=\"header-wrapper common_header shadow-sm\">\n <!-- Main nav button and navigation links -->\n <button mat-icon-button color=\"theme-white\" (click)=\"sidenav.toggle()\"\n class=\"pmx-button pmx-menu-button orders-menu icon-btn ms-0 me-3\" aria-label=\"main menu\" tabindex=\"0\"\n matTooltip=\"Main menu\" matTooltipPosition=\"below\"\n matTooltipClass=\"poc-header-tooltip\"><mat-icon>menu</mat-icon></button>\n <a class=\"navbar-brand me-auto\" href=\"#\">\n <img [src]=\"_domSanitizer.bypassSecurityTrustUrl(appConfig[_headerSer.headerConfig.appType]?.appLogoUri)\"\n alt=\"App Logo\" class=\"app-logo\">\n </a>\n\n <ng-content></ng-content>\n\n <mat-form-field appearance=\"outline\" class=\"switchCompanyField\">\n <mat-label>Company</mat-label>\n <mat-select [formControl]=\"companyControl\" (selectionChange)=\"switchCompany($event)\">\n <mat-option *ngFor=\"let opt of companyList\" [value]=\"opt\">\n {{opt.name}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n\n <!-- Profile button and profile dropdown links -->\n <button class=\"pmx-button pmx-menu-button profile-button\" mat-button [matMenuTriggerFor]=\"menu\" color=\"primary\"\n matTooltipPosition=\"below\">\n <div class=\"profile-inner\">\n <!-- <div class=\"brand-logo align-self-center\" *ngIf=\"activeCompany?.logo\"\n [ngClass]=\"activeCompany?.logo ? 'branded-logo-true' : 'branded-logo-false'\"\n [ngStyle]=\"{'background-image': 'url(' + activeCompany?.logo + ')'}\"></div> -->\n <div class=\"avatar\">\n <img *ngIf=\"userImageLink;else defaultAvatar\" [src]=\"userImageLink\" class=\"avatar-image\" alt=\"Avatar\">\n <ng-template #defaultAvatar><img\n [src]=\"_domSanitizer.bypassSecurityTrustUrl(imageDataUrls.defaultUserImage)\"\n class=\"avatar-default\" alt=\"profile pic\"></ng-template>\n </div>\n </div>\n </button>\n <mat-menu #menu=\"matMenu\" class=\"accounts_drpmenu pmx-menu-group header-dropdown-profile\" xPosition=\"before\">\n <div class=\"popover-content show-menu\">\n <div class=\"popover-header\">\n <div class=\"popover-user-top\">\n <div class=\"avatar-wrapper\">\n <img *ngIf=\"userImageLink;else defaultLargeAvatar\" [src]=\"userImageLink\" class=\"avatar-icon\"\n alt=\"Avatar\">\n <ng-template #defaultLargeAvatar>\n <div [ngStyle]=\"{'background-image': 'url(' + imageDataUrls.defaultUserImage + ')'}\"\n class=\"avatar-icon default-avatar\" alt=\"Avatar icon\"> </div>\n </ng-template>\n </div>\n <div class=\"user-data\">\n <h3 class=\"profile-name\"><span *ngIf=\"userAuthData\">{{ userAuthData?.firstName }} {{\n userAuthData?.lastName }}</span></h3>\n <button mat-button color=\"accent\" class=\"pmx-button btn btn-small view-profile ms-0\"\n (click)=\"profile()\">View Profile</button>\n </div>\n </div>\n </div>\n <div class=\"popover-body\">\n <!-- <div class=\"popover-content-title\">\n <p>Overview</p>\n </div> -->\n\n <div *ngIf=\"userAuthData?.email\">\n <p mat-menu-item class=\"list-text list-text-email mt-3 mb-3\">\n <mat-icon class=\"list-icon\">mail</mat-icon><span class=\"pmx-lower-case pmx-text-wrap me-auto\">{{\n userAuthData?.email }}</span>\n </p>\n </div>\n <ng-container *ngIf=\"userAuthData?.contactPhone\">\n <p mat-menu-item class=\"list-text mb-3\">\n <mat-icon class=\"list-icon\">call</mat-icon><span class=\"title-case me-auto\">{{\n userAuthData?.contactPhone }}</span>\n </p>\n </ng-container>\n\n <hr />\n <ul cdkMenu class=\"list-group last-group my-1\">\n <li cdkMenuItem class=\"list-item py-2\">\n <button mat-menu-item class=\"pmx-button list-button btn-logout\" (click)=\"onLogoutClick()\">\n <mat-icon>power_settings_new</mat-icon>\n <span class=\"list-text\">Logout</span>\n </button>\n </li>\n </ul>\n </div>\n </div>\n </mat-menu>\n</mat-toolbar>", styles: [":root{--contentfont: 13.12px !important;--labelfont: .75rem !important}.pmx-text-truncate{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pmx-text-wrap{overflow-wrap:break-word;word-break:break-word}.pmx-lower-case{text-transform:lowercase}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color)}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #24a148;--mat-text-button-state-layer-color: #24a148;--mat-text-button-ripple-color: rgba(255, 64, 129, .1)}.header-user-name{text-align:end;color:#000}.header-user-name span{font-size:12px;color:#9e9e9ede}.avatarLogo{max-width:30px}mat-toolbar.mat-toolbar.common_header.mat-primary.mat-toolbar-single-row{position:fixed;left:0;top:0;background-color:#fff;height:56px}button.switchButton,button.menuHamberger{padding:8px!important}.sidenavPanel{padding:20px 25px;height:100vh;position:relative}ul.navbarList{padding-left:0;list-style:none;margin-top:40px}ul.navbarList li{color:#666;font-weight:400;margin-bottom:25px;width:170px;cursor:pointer}.active{color:#4177d6!important}ul.navbarList li img{width:23px;margin-right:15px}.accounts_drpmenu{margin-top:.7em}.xsShowUsername{display:none;padding:0 16px;height:48px;line-height:48px}.vr{width:2px;background-color:#f5f5f5;opacity:1;margin:0 .5rem 0 1rem}.vr-blury{background-image:linear-gradient(180deg,transparent,#666,transparent);width:1px;opacity:.25}.navbar-brand .app-logo{height:20px;width:auto}.pmx-button mat-icon.mat-icon,.pmx-button mat-icon.mat-primary,.pmx-button mat-icon.mat-accent,.pmx-button mat-icon.mat-warn{color:var(--mat-icon-color)}.pmx-button mat-icon.mat-icon{font-size:24px!important;line-height:1.5;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;transition:transform .3s ease}.pmx-button.mdc-button--raised mat-icon.mat-icon{width:24px;height:24px;display:contents}.pmx-button.mat-mdc-button-base mat-icon.mat-icon{z-index:1}.pmx-button mat-icon.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.pmx-button mat-icon.mdc-button span.button-text{display:inline-flex;padding:0 1rem;text-transform:uppercase;font-size:.875rem;line-height:1.5}.pmx-button mat-icon.mdc-button span.upper-case{text-transform:uppercase}.pmx-button.mdc-button,.pmx-button.mdc-icon-button,.pmx-button.mdc-button--outlined,.pmx-button.mdc-button .mat-mdc-button-touch-target,.pmx-button.mdc-icon-button .mat-mdc-button-touch-target{height:40px!important;font-size:.75rem!important;letter-spacing:.2px;padding:0 .5rem;line-height:normal}.pmx-button.mdc-icon-button,.pmx-button.icon-btn.mdc-button--outlined,.pmx-button.icon-btn.mdc-button--raised,.pmx-button.mdc-icon-button .mat-mdc-button-touch-target{width:40px;border-radius:5px}.pmx-button.btn-small.mdc-button,.pmx-button.btn-small.mdc-icon-button,.pmx-button.btn-small.mdc-button--outlined{height:28px!important;padding:0 1rem}.pmx-button.mdc-icon-button,.pmx-button.icon-btn.mdc-button--raised{color:#254d93}.pmx-header .icon-button-shadow{box-shadow:0 1px 3px #0003,0 0 #00000024,0 1px 3px #0000001f}.pmx-button.icon-btn.mdc-button--raised.btn-switch-apps.menu-opened,.pmx-button.icon-btn.mdc-button--outlined.btn-switch-apps.menu-opened{background-color:#254d93;color:#fff;font-variation-settings:\"FILL\" 0,\"wght\" 200,\"GRAD\" 0,\"opsz\" 24}.pmx-button.mdc-icon-button.pmx-menu-button:hover,.pmx-button.mat-mdc-outlined-button.btn-switch-apps:hover,.pmx-button.icon-btn.mdc-button--outlined.btn-switch-apps:hover{background-color:#e5f3fb}.pmx-button.icon-app{width:20px}.pmx-button.mat-mdc-outlined-button,.pmx-button.mat-mdc-outlined-button:not(:disabled){background-color:#fff;overflow:hidden}.pmx-button.pmx-menu-button.profile-button.mat-mdc-outlined-button{padding:0;border-color:#bfdff7!important}.btn-group-clicked .pmx-button.pmx-menu-button.profile-button.mat-mdc-outlined-button{border-color:#bfdff7!important}.pmx-button.profile-button .profile-inner{border:0 solid transparent!important;display:flex;align-items:center;overflow:clip}.pmx-button.profile-button .avatar{width:38px;height:38px;box-sizing:border-box;border-radius:50%;overflow:hidden;display:flex;flex-direction:column;justify-content:center;align-content:center;align-items:center;flex-wrap:wrap}.pmx-button.profile-button .avatar{background-color:#9cd7a8}.pmx-button.profile-button .avatar img.avatar-image,.pmx-button.profile-button .avatar img.avatar-default{width:100%;height:auto}.branded-group-false{margin-left:.65rem}.branded-group-false .pmx-button.pmx-menu-button.profile-button.branded-button-false{width:40px;border-radius:20px!important}.branded-group-true{margin-left:.65rem;border-radius:20px;border:1px solid #bfdff7}.btn-group-clicked.branded-group-true{background-color:#99ccf2}.branded-group-true .pmx-button.profile-button .profile-inner{border:0 solid #c4c9d2!important}.branded-group-true .pmx-button.pmx-menu-button.profile-button.branded-button-true{border-radius:20px}.branded-group-true .pmx-button.profile-button.branded-button-true .profile-inner .branded-logo-true{border-radius:5px;display:block;position:relative;height:38px;background-size:100%;background-position:center;background-repeat:no-repeat;min-width:100px;margin-right:1rem}.pmx-menu-group.mat-mdc-menu-panel{margin-top:1rem}.header-dropdown-apps.mat-mdc-menu-panel .mat-mdc-menu-content,.header-dropdown-profile.mat-mdc-menu-panel .mat-mdc-menu-content{padding:0!important}.header-dropdown-apps{width:400px!important}.header-dropdown-apps.mat-mdc-menu-panel .list-button{padding:.5rem 2rem}.header-dropdown-apps.mdc-menu-surface--open,.header-dropdown-profile.mdc-menu-surface--open{position:absolute;z-index:1;top:0;right:0;margin:0;padding:0;border:1px solid #e5e5e5;border-radius:6px;background:#fff;animation:popover .2s ease-in-out}.header-dropdown-apps.mat-mdc-menu-panel.mat-mdc-menu-panel{max-width:400px!important;width:400px!important;overflow:visible}::ng-deep .header-dropdown-profile.mat-mdc-menu-panel.mat-mdc-menu-panel{max-width:408px!important;width:408px!important;overflow:visible;margin-top:1rem}.popover-content:after,.popover-content:before{font-size:1.4em;display:block;width:0;height:0;content:\"\";pointer-events:none;position:absolute;top:-.45em}.popover-content:before{border-right:10px solid transparent;border-bottom:10px solid #999;border-left:10px solid transparent;right:.97em}.popover-content:after{border-right:12px solid transparent;border-bottom:12px solid #d5e3fa;border-left:12px solid transparent;right:.9em}.popover-content-title{display:flex;align-items:center;justify-content:flex-start;overflow:hidden;padding:0 1rem;min-height:40px}.popover-content-title p{margin:0;font-size:.75rem!important;color:#777}.popover-content .popover-user-top:after{clear:both;content:\"\";display:table}.popover-content .popover-user-top{display:flex;flex-flow:row;justify-content:flex-start;align-items:center}.popover-content .popover-user-top .avatar-wrapper{flex:0 4 auto;border-radius:100%;overflow-clip-margin:content-box;overflow:clip;background-color:#fff;padding:2px}.drop-shadow{filter:drop-shadow(0px 0px 3px rgba(0,0,0,.5))}.popover-content .popover-user-top .user-data{flex:1 0 auto;margin-left:1rem}.popover-content .popover-user-top .avatar-wrapper .avatar-icon{background-repeat:no-repeat;background-size:100%;background-position:center;width:64px;height:64px;background-color:#72c885}.avatar-icon.default-avatar{background-size:100%}.popover-content .popover-user-top .user-data h3.profile-name{font-size:1rem;text-overflow:ellipsis;margin-bottom:.5rem;line-height:normal;font-weight:600;color:#254d93}.btn.view-profile{background:#fafafa}.popover-content ul.list-group{padding:0 0 8px;margin:0;display:flex;list-style:none}.popover-content ul.list-group.last-group,.popover-content ul.list-group.last-group .list-item{background-color:transparent}.popover-content ul.list-group li.list-item{align-items:center;border:none;padding:0;width:100%;display:flex;flex-direction:row;flex-wrap:wrap;order:1}.popover-content ul.list-group li.list-item .list-button{padding:.5rem 1rem;min-height:40px}.popover-content ul.list-group li.list-item span.mat-mdc-menu-item-text,.popover-content ul.list-group li.list-item span.mdc-list-item__primary-text,.popover-content ul.list-group li.list-item .list-button>span{display:flex;align-items:center}.popover-content ul.list-group li.list-item.list-company .list-button>span{width:100%;overflow:hidden}.popover-content ul.list-group li.list-item .list-button .hover-label.tooltip-label{opacity:0}.popover-content ul.list-group li.list-item.list-app .list-button:hover>span .hover-label.tooltip-label,.popover-content ul.list-group li.list-item.list-company .list-button:hover>span .hover-label.tooltip-label{opacity:0;display:inline-flex;color:#fff;background-color:#616161;font-size:11px;border-radius:4px;padding:0 .5rem;transition:opacity .3s ease-out}.popover-content ul.list-group li.list-item .list-button:hover{background:rgba(0,0,0,.04)}.popover-content ul.list-group li.list-item.company-active,.popover-content ul.list-group li.list-item.app-active{cursor:not-allowed;pointer-events:none;order:0}.popover-content ul.list-group li.list-item.company-active .active-label,.popover-content ul.list-group li.list-item.app-active .active-label{background-color:#93c47d;color:#212121;padding:0 .5rem;border-radius:50px;font-size:.75rem;margin-left:.5rem}.popover-content ul.list-group.list-apps-group{display:flex}.popover-content ul.list-group.list-overview li.list-item{cursor:not-allowed;pointer-events:none}::ng-deep .popover-content ul.list-group li.list-item button.list-button .list-text{font-size:15px}.popover-content .popover-body p.list-text{padding:.5rem 1rem;margin:0;min-height:auto;cursor:default}::ng-deep .popover-content .popover-body p.list-text .mat-mdc-menu-item-text{font-size:15px;font-weight:500}.popover-content ul.list-group li.list-item .list-button .mat-icon,.popover-content ul.list-group li.list-item p.list-text mat-icon.list-icon,.popover-content ul.list-group li.list-item .list-button .list-icon,.popover-content ul.list-group li.list-item p.list-text .list-icon,.popover-content .popover-body p.list-text .list-icon{color:#2db051;font-variation-settings:\"FILL\" 0,\"wght\" 300,\"GRAD\" 0,\"opsz\" 24;font-size:24px!important}.popover-content ul.list-group li.list-item.list-active.company-active button.list-button .mat-icon{color:#2db051;font-variation-settings:\"FILL\" 1,\"wght\" 300,\"GRAD\" 0,\"opsz\" 24}.popover-content ul.list-group li.list-item p.list-text span.mdc-list-item__primary-text{width:100%;display:flex}.popover-content ul.list-group li.list-item span.title-case,.popover-content ul.list-group li.list-item span.lower-case,.popover-content ul.list-group li.list-item span.pmx-lower-case{font-size:.8rem;color:#212121;font-weight:500;display:block;line-height:normal}small{color:#9e9e9e}.popover-content ul.list-group li.list-item span.text-label{font-size:12px;color:#979797;font-weight:400;display:block;line-height:normal}.popover-content ul.list-group li.list-item .list-text span.mat-mdc-menu-item-text{font-size:.875rem;color:#0a152f;font-weight:500;line-height:normal}.popover-content ul.list-group li.list-item .list-text.list-text-email span.mat-mdc-menu-item-text{width:calc(100% - 40px);display:inline-flex}.popover-content ul.list-group li.list-item .list-text.list-text-email span.pmx-text-wrap{overflow-wrap:break-word;word-wrap:break-word;-webkit-hyphens:none;hyphens:none;width:100%}.popover-content ul.list-group li.list-item span.upper-case{text-transform:uppercase}.popover-content ul.list-group li.list-item span.app-status,.popover-content ul.list-group li.list-item .mat-mdc-chip-option.chip-status{font-size:13px;color:#0a152f;font-weight:400;display:block;line-height:normal;margin:0}.popover-content ul.list-group li.list-item.app-active .list-text,.popover-content ul.list-group li.list-item.company-active .list-text{color:#4b85ea}.popover-content ul.list-group li.list-item.app-active span.app-status,.popover-content ul.list-group li.list-item.app-active .mat-mdc-chip-option.chip-status,.popover-content ul.list-group li.list-item.company-active span.app-status,.popover-content ul.list-group li.list-item.company-active .mat-mdc-chip-option.chip-status{color:#24a53f}.popover-content ul.list-group li.list-item .mat-mdc-chip-option.chip-status{display:flex;flex-direction:row;justify-content:flex-start}.popover-content ul.list-group li.list-item .mat-mdc-chip-option.chip-status.mdc-evolution-chip--selected{transition:all .3s ease-out;margin-left:auto;flex:1;justify-content:flex-end}.popover-content ul.list-group li.list-item.app-active .mat-mdc-chip-option.chip-status.mdc-evolution-chip--selected,.popover-content ul.list-group li.list-item.company-active .mat-mdc-chip-option.chip-status.mdc-evolution-chip--selected{background-color:#408dd7;color:#f5f5f5}.popover-content ul.list-group li.list-item .mat-mdc-standard-chip .mat-mdc-chip-action-label{font-size:.75rem}.popover-content ul.list-group li.list-item .mat-mdc-standard-chip{height:24px}.popover-content ul.list-group li.list-item img.logo-thumb{width:24px;height:auto;margin-right:1rem}.popover-content ul.list-group li.list-item .list-button.btn-logout{display:flex;align-items:center;color:#616161}.popover-content ul.list-group li.list-item.app-active .list-button .app-icon-wrapper{background-color:#fff;border-color:#4b85ea;border-width:3px}.popover-content ul.list-group li.list-item.company-active .list-text .mat-icon{font-variation-settings:\"FILL\" 1,\"wght\" 200,\"GRAD\" 0,\"opsz\" 24;color:var(--themelightblue)}.popover-content ul.list-group li.list-item .list-button.btn-logout .list-text{color:#616161}.popover-content ul.list-group li.list-item.app-active button,.popover-content ul.list-group li.list-item.company-active button{cursor:not-allowed;pointer-events:none}.popover-content hr{background-color:#c4c9d2;margin:0;width:100%;border:0;border-top:1px solid #c4c9d2;opacity:1}.popover-content ul.apps-grid{width:100%;white-space:nowrap;overflow:auto}.popover-content ul.apps-grid li.list-item,.popover-content ul.apps-grid li.list-item img.logo-thumb{display:flex;justify-content:flex-start;flex-wrap:nowrap;align-content:center;align-items:center;flex-direction:row}.popover-header{background-color:#d5e3fa;border-bottom:1px solid #d8d8d8;padding:.975rem 1rem;margin-bottom:0;display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center;flex-wrap:wrap}.popover-header .mat-icon{font-size:1.5rem!important;font-variation-settings:\"FILL\" 1,\"wght\" 500,\"GRAD\" 0,\"opsz\" 24;color:#254d93}.header-dropdown-profile .popover-header{padding:1.125rem 1rem}.popover-header h3.popover-title{font-size:1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;margin-bottom:0;line-height:normal;font-weight:500;color:#254d93}.popover-body{max-height:420px;overflow:auto;padding:0}.app-icon-wrapper{margin:0 1rem 0 0;max-width:48px;max-height:48px;width:48px;height:48px;overflow:hidden;background-size:70%;background-repeat:no-repeat;background-position:center;border:1px solid #c4c9d2;border-radius:8px;display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center;flex-wrap:wrap}.app-icon-wrapper img.app-icon{width:100%;height:auto;overflow:hidden;padding:.5rem}h4.app-name{font-size:.65rem;margin:.5rem 0 0;line-height:normal;color:#254d93;font-weight:400;text-transform:uppercase}.popover-body ul.enabled-apps{display:flex;flex-flow:column wrap;justify-content:space-evenly;align-items:center;align-content:flex-start;border-bottom:1px solid #E9E9E9;margin:0;padding:0 1rem;list-style:none}.popover-body ul.enabled-apps li.enabled-app{flex-grow:1;flex:0 1 auto;text-align:center;font-size:.8125rem;padding:10px;list-style:none}.pmx-button.mdc-icon-button[color=theme-white],.pmx-button.icon-btn.mdc-button--raised[color=theme-white]{color:#254d93}.pmx-button.icon-btn.orders-menu[color=theme-white]{border:1px solid #fafafa!important}:host(.mat-accent){--mat-slider-ripple-color: #24a148;--mat-slider-hover-state-layer-color: rgba(255, 64, 129, .05);--mat-slider-focus-state-layer-color: rgba(255, 64, 129, .2);--mdc-slider-handle-color: #24a148;--mdc-slider-focus-handle-color: #24a148;--mdc-slider-hover-handle-color: #24a148;--mdc-slider-active-track-color: #24a148;--mdc-slider-inactive-track-color: #24a148;--mdc-slider-with-tick-marks-inactive-container-color: #24a148;--mdc-slider-with-tick-marks-active-container-color: #51bc6b}:host ::ng-deep .app-menu-sidenav-container{z-index:999}:host ::ng-deep .mat-drawer-backdrop.mat-drawer-shown{position:fixed;background:rgba(63,81,181,.25)}.mat-drawer-backdrop{position:fixed!important}.sidenavDrawer{position:fixed!important;left:0;width:250px;padding:0}.mdc-list-group__subheader{background-color:#eef4ff;padding:5px 20px;margin-bottom:5px!important;font-size:14px!important;font-weight:500!important}.menusubItems{padding-left:2rem!important}.switchCompanyField{min-width:175px!important;margin-left:13px}.profile-button{margin-left:10px}.brand-logo{width:100px;height:38px;background-repeat:no-repeat;background-size:contain;background-origin:content-box;padding:7px}.menuIconList{font-size:20px!important;height:20px;width:20px;margin-right:.5rem;position:relative;color:#747474;font-weight:300}.subHeadListItems{padding:0 15px}.subHeadListItems .menu-item{display:flex;flex-direction:row;align-items:center;color:#000;padding:.7rem .5rem;border-radius:3px;transition:all .3s;font-size:var(--contentfont)}.subHeadListItems .menu-item:hover:not(.no-select){cursor:pointer;background-color:#f5f5f5}.subHeadInnerItem{margin-bottom:0!important}.drawerHeadLogo{width:100%;padding:10px 20px;margin-bottom:20px;margin-top:15px}.drawerHeadLogo img{width:130px}.app-menu-content-section{overflow-y:auto;height:calc(100vh - 80px);padding-bottom:25px}.active-menu{background-color:var(--themelightblue)!important;color:#fff!important;font-weight:500}.active-menu .menuIconList{color:#fff}.appList{padding:11px 15px;background-color:#eef4ff;margin:20px 0 10px;height:35px;display:flex}.appList img{object-fit:contain}::ng-deep .header-dropdown-profile .mat-mdc-menu-content{margin:0;padding:0;list-style-type:none}\n"] }]
|
|
304
370
|
}], ctorParameters: function () { return []; }, propDecorators: { INACTIVITY_LIMIT: [{
|
|
305
371
|
type: Input
|
|
306
372
|
}], logoutEvent: [{
|
|
@@ -308,11 +374,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
308
374
|
}], sidenav: [{
|
|
309
375
|
type: ViewChild,
|
|
310
376
|
args: ['sidenav']
|
|
311
|
-
}], utilitySpace: [{
|
|
312
|
-
type: ViewChild,
|
|
313
|
-
args: ['utilitySpaceDrawer']
|
|
314
|
-
}], config: [{
|
|
315
|
-
type: Input
|
|
316
377
|
}], resetTimer: [{
|
|
317
378
|
type: HostListener,
|
|
318
379
|
args: ['document:mousemove']
|
|
@@ -335,4 +396,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
335
396
|
type: HostListener,
|
|
336
397
|
args: ['window:focus']
|
|
337
398
|
}] } });
|
|
338
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbW1vbi1oZWFkZXIvc3JjL2xpYi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbW1vbi1oZWFkZXIvc3JjL2xpYi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFJTCxNQUFNLEVBR04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sNERBQTRELENBQUM7QUFDM0csT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBT3RELE1BQU0sT0FBTyxlQUFlO0lBaUMxQixLQUFLLENBQUMsUUFBUSxDQUFDLElBQW1C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RUFBRSxDQUNuQixDQUFDO3dCQUNKLENBQUM7cUJBQ0YsQ0FBQyxDQUFDO29CQUNILEtBQUs7b0JBQ0wsU0FBUztvQkFDVCxvQ0FBb0M7b0JBQ3BDLHlCQUF5QjtvQkFDekIsNkVBQTZFO29CQUM3RSxZQUFZO29CQUNaLHlCQUF5QjtvQkFDekIsT0FBTztvQkFDUCxJQUFJO2lCQUNMO2FBQ0Y7aUJBQ0k7Z0JBQ0gsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7YUFDaEM7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQzs7NkdBOVRVLGVBQWU7aUdBQWYsZUFBZSxrcEJDbEM1QixxelFBbUp1Qjs0RkRqSFYsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxZQUFZOzBFQWdCYixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFLZSxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBR2EsWUFBWTtzQkFBNUMsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBRXRCLE1BQU07c0JBQWQsS0FBSztnQkE0Rk4sVUFBVTtzQkFQVCxZQUFZO3VCQUFDLG9CQUFvQjs7c0JBQ2pDLFlBQVk7dUJBQUMsa0JBQWtCOztzQkFDL0IsWUFBWTt1QkFBQyxnQkFBZ0I7O3NCQUM3QixZQUFZO3VCQUFDLHFCQUFxQjs7c0JBQ2xDLFlBQVk7dUJBQUMsb0JBQW9COztzQkFDakMsWUFBWTt1QkFBQyxpQkFBaUI7O3NCQUM5QixZQUFZO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUeXBlLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdERyYXdlciwgTWF0U2lkZW5hdiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgc2lnbk91dCB9IGZyb20gJ2F3cy1hbXBsaWZ5L2F1dGgnO1xuaW1wb3J0IHsgQXBwTWVudSwgQ29tcGFueSwgVXRpbGl0eUNvbmZpZyB9IGZyb20gJy4uL2NvbW1vbi1oZWFkZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvbW1vbkhlYWRlclNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24taGVhZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcGFueVN3aXRjaFdhcm5pbmdDb21wb25lbnQgfSBmcm9tICcuLi9jb21wYW55LXN3aXRjaC13YXJuaW5nL2NvbXBhbnktc3dpdGNoLXdhcm5pbmcuY29tcG9uZW50JztcbmltcG9ydCB7IEFwcENvbmZpZyB9IGZyb20gJy4uL2NvbmZpZy9hcHAuY29uZmlnJztcbmltcG9ydCB7IFVUSUxJVFlfV0lER0VUX0NPTkZJRyB9IGZyb20gJy4uL3V0aWxpdHktd2lkZ2V0LWNvbmZpZy50b2tlbic7XG5pbXBvcnQgeyBQUk9GRVRfQVBQUyB9IGZyb20gJy4uL3V0aWxzL2FwcHMuZW51bSc7XG5pbXBvcnQgeyBpbWFnZURhdGFVcmwgfSBmcm9tICcuLi91dGlscy9pbWFnZS5kYXRhdXJsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgSGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIGNvbXBhbnlQcm9maWxlOiBhbnk7XG4gIHBvcnRhbFVybDogc3RyaW5nID0gJyc7XG4gIHVzZXJBdXRoRGF0YTogYW55O1xuICB1c2VySW1hZ2VMaW5rOiBhbnkgPSBudWxsO1xuICB1c2VyQ29tcGFueUxvZ286IGFueSA9ICcnO1xuICBpbWFnZURhdGFVcmxzID0gaW1hZ2VEYXRhVXJsO1xuICBwdWJsaWMgX3JvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIF9zbmFja2JhciA9IGluamVjdChNYXRTbmFja0Jhcik7XG4gIHB1YmxpYyBfaGVhZGVyU2VyID0gaW5qZWN0KENvbW1vbkhlYWRlclNlcnZpY2UpO1xuICBwdWJsaWMgX2RvbVNhbml0aXplciA9IGluamVjdChEb21TYW5pdGl6ZXIpO1xuICBwcml2YXRlIGluYWN0aXZpdHlUaW1lb3V0OiBhbnk7XG4gIEBJbnB1dCgpIElOQUNUSVZJVFlfTElNSVQgPSAzMCAqIDYwICogMTAwMDsgLy8gMzAgbWludXRlc1xuXG4gIEBPdXRwdXQoKSBsb2dvdXRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBjb21wYW55Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuICBhcHBDb25maWc6IGFueSA9IEFwcENvbmZpZy5hcHBDb25maWc7XG4gIGNvbXBhbnlMaXN0OiBDb21wYW55W10gPSBbXTtcbiAgQFZpZXdDaGlsZCgnc2lkZW5hdicpIHNpZGVuYXYhOiBNYXRTaWRlbmF2O1xuICBtZW51TGlzdDogeyBrZXk6IHN0cmluZywgdmFsdWU6IEFwcE1lbnVbXSB9W10gPSBbXTtcbiAgYWN0aXZlQ29tcGFueTogQ29tcGFueSB8IHVuZGVmaW5lZDtcbiAgQFZpZXdDaGlsZCgndXRpbGl0eVNwYWNlRHJhd2VyJykgdXRpbGl0eVNwYWNlITogTWF0RHJhd2VyO1xuXG4gIEBJbnB1dCgpIGNvbmZpZzogVXRpbGl0eUNvbmZpZ1tdID0gW107XG5cbiAgZGVmYXVsdEFwcHM6IFV0aWxpdHlDb25maWdbXSA9IFtdO1xuXG4gIHNlbGVjdGVkPzogVXRpbGl0eUNvbmZpZztcbiAgY29tcG9uZW50VG9Mb2FkOiBUeXBlPGFueT4gfCBudWxsID0gbnVsbDtcbiAgZHluYW1pY0luamVjdG9yITogSW5qZWN0b3I7XG4gIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gIGFzeW5jIG9wZW5JdGVtKGl0ZW06IFV0aWxpdHlDb25maWcpIHtcbiAgICAvLyB0aGlzLnNlbGVjdGVkID0gaXRlbTtcbiAgICBpZiAoaXRlbS5sb2FkQ29tcG9uZW50KSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFRvTG9hZCA9IGF3YWl0IGl0ZW0ubG9hZENvbXBvbmVudCgpO1xuXG4gICAgICB0aGlzLmR5bmFtaWNJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvcixcbiAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogVVRJTElUWV9XSURHRVRfQ09ORklHLFxuICAgICAgICAgICAgdXNlVmFsdWU6IGl0ZW0uY29uZmlnPy51c2VWYWx1ZSA/PyB7fVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSlcbiAgICB9XG4gICAgLy8gdG9nZ2xlOiBpZiBjbGlja2luZyB0aGUgc2FtZSBpdGVtIGFnYWluLCBjbG9zZSBkcmF3ZXJcbiAgICBpZiAodGhpcy5zZWxlY3RlZD8uaWQgPT09IGl0ZW0uaWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnV0aWxpdHlTcGFjZS5jbG9zZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkID0gaXRlbTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuICBhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG5cbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMudXBkYXRlTGFzdEFjY2Vzc2VkQXBwSW5mbygpO1xuICAgIHRoaXMuZ2V0Q29tcGFueUxpc3QoKTtcblxuICAgIHRoaXMuX2hlYWRlclNlci5nZXRVc2VyRGV0YWlscygpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICB0aGlzLnVzZXJBdXRoRGF0YSA9IHJlcztcbiAgICAgICAgICB0aGlzLmdldE1lbnVMaXN0KCk7XG4gICAgICAgICAgaWYgKHJlcy5wcm9maWxlSW1hZ2UpIHtcbiAgICAgICAgICAgIHRoaXMudXNlckltYWdlTGluayA9IHJlcy5wcm9maWxlSW1hZ2UubG9jYXRpb25VcmxcbiAgICAgICAgICAgICAgPyB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChyZXMucHJvZmlsZUltYWdlLmxvY2F0aW9uVXJsKVxuICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoIXRoaXMuX2hlYWRlclNlci5oZWFkZXJDb25maWcuZGlzYWJsZUFwcHJhaXNhbEFzc2lzdGFudEFwcCkge1xuICAgICAgdGhpcy5kZWZhdWx0QXBwcy5wdXNoKHtcbiAgICAgICAgaWQ6ICdhcHByYWlzYWwtYXNzaXN0YW50JyxcbiAgICAgICAgbGFiZWw6ICdBcHByYWlzYWwgQXNzaXN0YW50JyxcbiAgICAgICAgaWNvbjogJzNwJyxcbiAgICAgICAgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuLi9hcHByYWlzYWwtYXNzaXN0YW50L2FwcHJhaXNhbC1hc3Npc3RhbnQtY2hhdC13aWRnZXQuY29tcG9uZW50JykudGhlbihtID0+IG0uQXBwcmFpc2FsQXNzaXN0YW50Q2hhdFdpZGdldENvbXBvbmVudClcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBpZiAodXNlckluZm8/LnVzZXJuYW1lKSB7XG4gICAgLy8gICBsZXQgdXNlckRldGFpbHMgPSB0aGlzLl9oZWFkZXJTZXIuZ2V0VXNlckRldGFpbHMoKTtcbiAgICAvLyAgIGZvcmtKb2luKFt1c2VyRGV0YWlsc10pLnN1YnNjcmliZSh7XG4gICAgLy8gICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAvLyAgICAgICBpZiAocmVzICYmIHJlc1swXSkge1xuICAgIC8vICAgICAgICAgdGhpcy51c2VyQXV0aERhdGEgPSByZXNbMF07XG4gICAgLy8gICAgICAgICB0aGlzLnVzZXJuYW1lID0gdGhpcy51c2VyQXV0aERhdGEuZmlyc3ROYW1lO1xuICAgIC8vICAgICAgICAgdGhpcy5nZXRNZW51TGlzdCgpO1xuICAgIC8vICAgICAgICAgaWYgKHRoaXMudXNlckF1dGhEYXRhPy5fbGlua3M/LnByb2ZpbGVJbWFnZT8uaHJlZikge1xuICAgIC8vICAgICAgICAgICB0aGlzLmdldFVzZXJQcm9maWxlKCk7XG4gICAgLy8gICAgICAgICB9XG4gICAgLy8gICAgICAgfVxuICAgIC8vICAgICB9LFxuICAgIC8vICAgfSk7XG4gICAgLy8gfVxuICAgIHRoaXMucmVzZXRUaW1lcigpO1xuICAgIHRoaXMuX2hlYWRlclNlci51dGlsaXR5Q29udGVudFRvZ2dsZSQuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgdGhpcy5jbG9zZVV0aWxpdHlTcGFjZSgpO1xuICAgIH0pXG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZW1vdmUnKVxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJylcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snKVxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDp0b3VjaHN0YXJ0JylcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6dG91Y2htb3ZlJylcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6c2Nyb2xsJylcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmZvY3VzJylcbiAgcmVzZXRUaW1lcigpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5pbmFjdGl2aXR5VGltZW91dCk7XG4gICAgaWYgKCF0aGlzLl9oZWFkZXJTZXIuaXNTZXNzaW9uRXhwaXJ5RGlhbG9nT3Blbikge1xuICAgICAgdGhpcy5pbmFjdGl2aXR5VGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmxvZ291dEV2ZW50LmVtaXQoKTtcbiAgICAgICAgc2lnbk91dCh7IGdsb2JhbDogdHJ1ZSwgb2F1dGg6IHsgcmVkaXJlY3RVcmw6IHRoaXMuX2hlYWRlclNlci5oZWFkZXJDb25maWcuc2lnbk91dFVybCB9IH0pO1xuICAgICAgICB0aGlzLl9oZWFkZXJTZXIub3BlblNlc3Npb25FeHBpcmVJbmZvKHsgc2Vzc2lvbk91dFRpbWVJbk1pbnM6IHRoaXMuSU5BQ1RJVklUWV9MSU1JVCB9KTtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaW5hY3Rpdml0eVRpbWVvdXQpO1xuICAgICAgfSwgdGhpcy5JTkFDVElWSVRZX0xJTUlUKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RDdXJyZW50Q29tcGFueSgpIHtcbiAgICBsZXQgY29tID0gdGhpcy5jb21wYW55TGlzdC5maW5kKHggPT4geC5pc0FjdGl2ZSk7XG4gICAgdGhpcy5hY3RpdmVDb21wYW55ID0gY29tO1xuICB9XG5cbiAgcGF0Y2hDdXJyZW50Q29tcGFueUluZm8oKSB7XG4gICAgbGV0IGNvbSA9IHRoaXMuY29tcGFueUxpc3QuZmluZCh4ID0+IHguaXNBY3RpdmUpO1xuICAgIHRoaXMuY29tcGFueUNvbnRyb2wucGF0Y2hWYWx1ZShjb20pO1xuICB9XG5cbiAgc2lkZU1lbnVUb2dnbGUoKSB7XG4gICAgdGhpcy5zaWRlbmF2LnRvZ2dsZSgpO1xuICB9XG5cbiAgY2xvc2VVdGlsaXR5U3BhY2UoKSB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnV0aWxpdHlTcGFjZS5jbG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBncm91cEJ5QXBwVHlwZShtZW51TGlzdDogQXBwTWVudVtdKTogeyBrZXk6IHN0cmluZywgdmFsdWU6IEFwcE1lbnVbXSB9W10ge1xuICAgIGxldCBncm91cGVkID0gbWVudUxpc3QucmVkdWNlKChyLCBhKSA9PiB7XG4gICAgICByW2EuYXBwVHlwZV0gPSByW2EuYXBwVHlwZV0gfHwgW107XG5cbiAgICAgIC8vIFRPRE86IFBhdGggcmVmZXJlbmNlcyBhcmUgdG8gYmUgcmVwbGFjZWQgd2l0aCB2YWx1ZXMgZnJvbSBiYWNrZW5kIEFQSSByZXNwb25zZS4gUmVtb3ZlIHRoaXMgYmxvY2sgd2hlbiBiYWNrZW5kIGlzIHJlYWR5XG4gICAgICBpZiAoYS5hcHBUeXBlID09IFBST0ZFVF9BUFBTLnByb2ZldF9wb3J0YWwpIHtcbiAgICAgICAgbGV0IGlzQ29tcGFueU1lbnUgPSBhLnBhdGggPT09ICdhcHAvY29tcGFuaWVzJztcbiAgICAgICAgbGV0IGlzQ29tcGFueUFkbWluID0gdGhpcy51c2VyQXV0aERhdGE/LnJvbGVzRm9yQ3VycmVudENvbXBhbnkuaW5jbHVkZXMoXCJDT01QQU5ZX0FETUlOXCIpO1xuXG4gICAgICAgIGlmIChpc0NvbXBhbnlNZW51ICYmIGlzQ29tcGFueUFkbWluKSB7XG4gICAgICAgICAgYSA9IHsgLi4uYSwgcGF0aDogJ2FwcC9hZGRDb21wYW55L2NvbXBhbnlEZXRhaWxzJyB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBFTkQgb2YgVE9ETyBibG9ja1xuXG4gICAgICByW2EuYXBwVHlwZV0ucHVzaChhKTtcbiAgICAgIHJldHVybiByO1xuICAgIH0sIE9iamVjdC5jcmVhdGUobnVsbCkpO1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhncm91cGVkKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHsga2V5LCB2YWx1ZTogdmFsdWUgYXMgQXBwTWVudVtdIH0pKTtcbiAgfVxuXG4gIG1lbnVTZWxlY3Rpb24obWVudTogQXBwTWVudSkge1xuICAgIHRoaXMuc2lkZU1lbnVUb2dnbGUoKTtcbiAgICBsZXQgYWN0aXZlQ29tID0gdGhpcy5jb21wYW55TGlzdC5maW5kKHggPT4geC5pc0FjdGl2ZSk7XG4gICAgbGV0IGlzQ29tcGFueU1lbnUgPSBtZW51LnBhdGggPT09ICdhcHAvYWRkQ29tcGFueS9jb21wYW55RGV0YWlscyc7XG4gICAgbGV0IGlzQ29tcGFueUFkbWluID0gdGhpcy51c2VyQXV0aERhdGE/LnJvbGVzRm9yQ3VycmVudENvbXBhbnkuaW5jbHVkZXMoXCJDT01QQU5ZX0FETUlOXCIpO1xuXG4gICAgaWYgKG1lbnUuYXBwVHlwZSA9PSB0aGlzLl9oZWFkZXJTZXIuaGVhZGVyQ29uZmlnLmFwcFR5cGUpIHtcbiAgICAgIC8vIFRPRE86IFBhdGggcmVmZXJlbmNlcyBhcmUgdG8gYmUgcmVwbGFjZWQgd2l0aCB2YWx1ZXMgZnJvbSBiYWNrZW5kIEFQSSByZXNwb25zZVxuICAgICAgaWYgKGlzQ29tcGFueU1lbnUgJiYgaXNDb21wYW55QWRtaW4pIHtcbiAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFttZW51LnBhdGgsIGFjdGl2ZUNvbT8uaWRdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbbWVudS5wYXRoXSk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYgKGFjdGl2ZUNvbSkge1xuICAgICAgICBpZiAoYWN0aXZlQ29tLmJhc2VVcmxzW21lbnUuYXBwVHlwZV0pIHtcbiAgICAgICAgICAvLyBUT0RPOiBQYXRoIHJlZmVyZW5jZXMgYXJlIHRvIGJlIHJlcGxhY2VkIHdpdGggdmFsdWVzIGZyb20gYmFja2VuZCBBUEkgcmVzcG9uc2VcbiAgICAgICAgICBpZiAoaXNDb21wYW55TWVudSAmJiBpc0NvbXBhbnlBZG1pbikge1xuICAgICAgICAgICAgbGV0IHVybCA9IGAke2FjdGl2ZUNvbS5iYXNlVXJsc1ttZW51LmFwcFR5cGVdfS8ke21lbnUucGF0aH0vJHthY3RpdmVDb20uaWR9YDtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHVybCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCB1cmwgPSBgJHthY3RpdmVDb20uYmFzZVVybHNbbWVudS5hcHBUeXBlXX0vJHttZW51LnBhdGh9YDtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHVybCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0Q29tcGFueUxpc3QoKSB7XG4gICAgdGhpcy5faGVhZGVyU2VyLmdldENvbXBhbnlMaXN0KCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICh2OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5faGVhZGVyU2VyLnNldENvbXBhbnlMaXN0KHYpO1xuICAgICAgICB0aGlzLmNvbXBhbnlMaXN0ID0gdjtcbiAgICAgICAgdGhpcy5zZWxlY3RDdXJyZW50Q29tcGFueSgpO1xuICAgICAgICB0aGlzLnBhdGNoQ3VycmVudENvbXBhbnlJbmZvKCk7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuICBnZXRNZW51TGlzdCgpIHtcbiAgICB0aGlzLl9oZWFkZXJTZXIuZ2V0TWVudUxpc3QoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHY6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLl9oZWFkZXJTZXIuc2V0TWVudVN0YXRlKHYpO1xuICAgICAgICB0aGlzLm1lbnVMaXN0ID0gdGhpcy5ncm91cEJ5QXBwVHlwZSh2KTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgcHJvZmlsZSgpIHtcbiAgICBpZiAodGhpcy5faGVhZGVyU2VyLmhlYWRlckNvbmZpZy5hcHBUeXBlID09IFBST0ZFVF9BUFBTLnByb2ZldF9wb3J0YWwpIHtcbiAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvYXBwL3Byb2ZpbGUnKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBsZXQgdXJsID0gdGhpcy5hY3RpdmVDb21wYW55Py5iYXNlVXJscy5wcm9mZXRfcG9ydGFsICsgJy9hcHAvcHJvZmlsZSc7XG4gICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gdXJsO1xuICAgIH1cbiAgfVxuICBvbkxvZ291dENsaWNrKCkge1xuICAgIHRoaXMubG9nb3V0RXZlbnQuZW1pdCgpO1xuICAgIHNpZ25PdXQoeyBnbG9iYWw6IHRydWUsIG9hdXRoOiB7IHJlZGlyZWN0VXJsOiB0aGlzLl9oZWFkZXJTZXIuaGVhZGVyQ29uZmlnLnNpZ25PdXRVcmwgfSB9KVxuICAgICAgLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgd2luZG93Lm9wZW4odGhpcy5faGVhZGVyU2VyLmhlYWRlckNvbmZpZy5zaWduT3V0VXJsLCAnX3NlbGYnKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgICBzaWduT3V0KHsgZ2xvYmFsOiB0cnVlLCBvYXV0aDogeyByZWRpcmVjdFVybDogdGhpcy5faGVhZGVyU2VyLmhlYWRlckNvbmZpZy5zaWduT3V0VXJsIH0gfSlcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB3aW5kb3cub3Blbih0aGlzLl9oZWFkZXJTZXIuaGVhZGVyQ29uZmlnLnNpZ25PdXRVcmwsICdfc2VsZicpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29uc29sZS5sb2coZXJyb3IpKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlTGFzdEFjY2Vzc2VkQXBwSW5mbygpIHtcbiAgICBsZXQgcmVxID0ge1xuICAgICAgbGFzdEFjY2Vzc2VkQXBwbGljYXRpb246IHRoaXMuX2hlYWRlclNlci5oZWFkZXJDb25maWcuYXBwVHlwZVxuICAgIH07XG5cbiAgICB0aGlzLl9oZWFkZXJTZXIudXBkYXRlTGFzdEFjY2Vzc2VkQXBwbGljYXRpb24ocmVxKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBzd2l0Y2hDb21wYW55KGluZm86IGFueSkge1xuICAgIGxldCBjb21wYW55ID0gaW5mby52YWx1ZTtcbiAgICBsZXQgY29tSW5mbyA9IHtcbiAgICAgIGFjdGl2ZUNvbXBhbnk6IHRoaXMuYWN0aXZlQ29tcGFueT8ubmFtZSxcbiAgICAgIHN3aXRjaGluZ0NvbXBhbnk6IGNvbXBhbnkubmFtZVxuICAgIH07XG4gICAgdGhpcy5faGVhZGVyU2VyLl9kaWFsb2cub3BlbihDb21wYW55U3dpdGNoV2FybmluZ0NvbXBvbmVudCwgeyBkYXRhOiBjb21JbmZvIH0pLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICBpZiAocmVzKSB7XG4gICAgICAgIC8vIEZpbmQgdGhlIGRvbWFpbiBpbmZvcm1hdGlvblxuICAgICAgICBpZiAoIWNvbXBhbnkuaXNBY3RpdmUpIHtcbiAgICAgICAgICAvLyBsZXQgZG9tYWluSW5mbyA9IHRoaXMuX2hlYWRlclNlci5nZXREb21haW5JbmZvKCk7XG4gICAgICAgICAgLy8gaWYgKGRvbWFpbkluZm8pIHtcbiAgICAgICAgICBsZXQgcmVxOiBhbnkgPSB7XG4gICAgICAgICAgICBjb21wYW55S2V5OiBjb21wYW55LmNvbXBhbnlLZXksXG4gICAgICAgICAgICBhcHBOYW1lOiB0aGlzLl9oZWFkZXJTZXIuaGVhZGVyQ29uZmlnLmFwcFR5cGUsXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLl9oZWFkZXJTZXIudXBkYXRlVXNlckNvbXBhbnkocmVxKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLnR5cGUgJiYgcmVzcG9uc2UudHlwZSA9PSAnT0snKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuYXBwbGljYXRpb25VUkwpIHtcbiAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSByZXNwb25zZS5kYXRhLmFwcGxpY2F0aW9uVVJMO1xuICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2UodXJsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gcmVmcmVzaCB0aGUgY3VycmVudCBwYWdlIHRvIHJlbG9hZCB0aGUgY29udGVudHMgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29tcGFueVxuICAgICAgICAgICAgICAgIC8vIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBkaXNwbGF5IGEgbWVzc2FnZSB0byB0aGUgdXNlciB0aGF0IHRoZSBjb21wYW55IGNvdWxkIG5vdCBiZSBzd2l0Y2hlZC5cbiAgICAgICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuKFxuICAgICAgICAgICAgICAgICAgJ0NvbXBhbnkgY291bGQgbm90IGJlIHN3aXRjaGVkLiBQbGVhc2UgdHJ5IGFnYWluIG9yIGNvbnRhY3Qgc3VwcG9ydC4nLFxuICAgICAgICAgICAgICAgICAgJ09LJyxcbiAgICAgICAgICAgICAgICAgIHsgZHVyYXRpb246IDUwMDAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKGUpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5wYXRjaEN1cnJlbnRDb21wYW55SW5mbygpO1xuICAgICAgICAgICAgICAvLyBkaXNwbGF5IGEgbWVzc2FnZSB0byB0aGUgdXNlciB0aGF0IHRoZSBjb21wYW55IGNvdWxkIG5vdCBiZSBzd2l0Y2hlZC5cbiAgICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbihcbiAgICAgICAgICAgICAgICAnQ29tcGFueSBjb3VsZCBub3QgYmUgc3dpdGNoZWQuIFBsZWFzZSB0cnkgYWdhaW4gb3IgY29udGFjdCBzdXBwb3J0LicsXG4gICAgICAgICAgICAgICAgJ09LJyxcbiAgICAgICAgICAgICAgICB7IGR1cmF0aW9uOiA1MDAwIH1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gfSBcbiAgICAgICAgICAvLyBlbHNlIHtcbiAgICAgICAgICAvLyAgIHRoaXMucGF0Y2hDdXJyZW50Q29tcGFueUluZm8oKTtcbiAgICAgICAgICAvLyAgIHRoaXMuX3NuYWNrYmFyLm9wZW4oXG4gICAgICAgICAgLy8gICAgICdDb21wYW55IGNvdWxkIG5vdCBiZSBzd2l0Y2hlZC4gUGxlYXNlIHRyeSBhZ2FpbiBvciBjb250YWN0IHN1cHBvcnQuJyxcbiAgICAgICAgICAvLyAgICAgJ09LJyxcbiAgICAgICAgICAvLyAgICAgeyBkdXJhdGlvbjogNTAwMCB9XG4gICAgICAgICAgLy8gICApO1xuICAgICAgICAgIC8vIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMucGF0Y2hDdXJyZW50Q29tcGFueUluZm8oKTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5hY3Rpdml0eVRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmluYWN0aXZpdHlUaW1lb3V0KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxtYXQtc2lkZW5hdi1jb250YWluZXIgY2xhc3M9XCJhcHAtbWVudS1zaWRlbmF2LWNvbnRhaW5lclwiPlxuICAgIDxtYXQtc2lkZW5hdiBjZGtNZW51QmFyICNzaWRlbmF2IG1vZGU9XCJvdmVyXCIgY2xhc3M9XCJzaWRlbmF2RHJhd2VyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcmF3ZXJIZWFkTG9nb1wiPjxpbWcgW3NyY109XCJfZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwoaW1hZ2VEYXRhVXJscy5wcm9mZXRMb2dvKVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLW1lbnUtY29udGVudC1zZWN0aW9uXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhcHBUeXBlIG9mIG1lbnVMaXN0XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcExpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cImFwcENvbmZpZ1thcHBUeXBlLmtleV0/LmFwcExvZ29VcmlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJfZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwoYXBwQ29uZmlnW2FwcFR5cGUua2V5XT8uYXBwTG9nb1VyaSlcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViSGVhZExpc3RJdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGFwcFR5cGUudmFsdWVcIiBjbGFzcz1cIm1lbnUtaXRlbVwiIChjbGljayk9XCJtZW51U2VsZWN0aW9uKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWN0aXZlLW1lbnUnOiBpdGVtIHwgYWN0aXZlUm91dGUgOiBfcm91dGVyLnVybDpfaGVhZGVyU2VyLmhlYWRlckNvbmZpZy5hcHBUeXBlfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWVudUljb25MaXN0XCIgKm5nSWY9XCJpdGVtLmljb25cIj57eyBpdGVtLmljb24gfX08L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbS5tZW51TmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9tYXQtc2lkZW5hdj5cblxuPC9tYXQtc2lkZW5hdi1jb250YWluZXI+XG48bWF0LXRvb2xiYXIgY2RrTWVudUJhciBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cImhlYWRlci13cmFwcGVyIGNvbW1vbl9oZWFkZXIgc2hhZG93LXNtXCI+XG4gICAgPCEtLSBNYWluIG5hdiBidXR0b24gYW5kIG5hdmlnYXRpb24gbGlua3MgLS0+XG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJ0aGVtZS13aGl0ZVwiIChjbGljayk9XCJzaWRlbmF2LnRvZ2dsZSgpXCJcbiAgICAgICAgY2xhc3M9XCJwbXgtYnV0dG9uIHBteC1tZW51LWJ1dHRvbiBvcmRlcnMtbWVudSBpY29uLWJ0biBtcy0wIG1lLTNcIiBhcmlhLWxhYmVsPVwibWFpbiBtZW51XCIgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgbWF0VG9vbHRpcD1cIk1haW4gbWVudVwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImJlbG93XCJcbiAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwicG9jLWhlYWRlci10b29sdGlwXCI+PG1hdC1pY29uPm1lbnU8L21hdC1pY29uPjwvYnV0dG9uPlxuICAgIDxhIGNsYXNzPVwibmF2YmFyLWJyYW5kIG1lLWF1dG9cIiBocmVmPVwiI1wiPlxuICAgICAgICA8aW1nIFtzcmNdPVwiX2RvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKGFwcENvbmZpZ1tfaGVhZGVyU2VyLmhlYWRlckNvbmZpZy5hcHBUeXBlXT8uYXBwTG9nb1VyaSlcIlxuICAgICAgICAgICAgYWx0PVwiQXBwIExvZ29cIiBjbGFzcz1cImFwcC1sb2dvXCI+XG4gICAgPC9hPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltoZWFkZXJJbmZvXVwiPjwvbmctY29udGVudD5cbiAgICA8IS0tIDxuZy1jb250ZW50PjwvbmctY29udGVudD4gLS0+XG5cbiAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInN3aXRjaENvbXBhbnlGaWVsZFwiPlxuICAgICAgICA8bWF0LWxhYmVsPkNvbXBhbnk8L21hdC1sYWJlbD5cbiAgICAgICAgPG1hdC1zZWxlY3QgW2Zvcm1Db250cm9sXT1cImNvbXBhbnlDb250cm9sXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJzd2l0Y2hDb21wYW55KCRldmVudClcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHQgb2YgY29tcGFueUxpc3RcIiBbdmFsdWVdPVwib3B0XCI+XG4gICAgICAgICAgICAgICAge3tvcHQubmFtZX19XG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG5cbiAgICA8IS0tIFByb2ZpbGUgYnV0dG9uIGFuZCBwcm9maWxlIGRyb3Bkb3duIGxpbmtzIC0tPlxuICAgIDxidXR0b24gY2xhc3M9XCJwbXgtYnV0dG9uIHBteC1tZW51LWJ1dHRvbiBwcm9maWxlLWJ1dHRvblwiIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJiZWxvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZmlsZS1pbm5lclwiPlxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiYnJhbmQtbG9nbyBhbGlnbi1zZWxmLWNlbnRlclwiICpuZ0lmPVwiYWN0aXZlQ29tcGFueT8ubG9nb1wiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiYWN0aXZlQ29tcGFueT8ubG9nbyA/ICdicmFuZGVkLWxvZ28tdHJ1ZScgOiAnYnJhbmRlZC1sb2dvLWZhbHNlJ1wiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieydiYWNrZ3JvdW5kLWltYWdlJzogJ3VybCgnICsgYWN0aXZlQ29tcGFueT8ubG9nbyArICcpJ31cIj48L2Rpdj4gLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyXCI+XG4gICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cInVzZXJJbWFnZUxpbms7ZWxzZSBkZWZhdWx0QXZhdGFyXCIgW3NyY109XCJ1c2VySW1hZ2VMaW5rXCIgY2xhc3M9XCJhdmF0YXItaW1hZ2VcIiBhbHQ9XCJBdmF0YXJcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRBdmF0YXI+PGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJfZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwoaW1hZ2VEYXRhVXJscy5kZWZhdWx0VXNlckltYWdlKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImF2YXRhci1kZWZhdWx0XCIgYWx0PVwicHJvZmlsZSBwaWNcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvYnV0dG9uPlxuICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cImFjY291bnRzX2RycG1lbnUgcG14LW1lbnUtZ3JvdXAgaGVhZGVyLWRyb3Bkb3duLXByb2ZpbGVcIiB4UG9zaXRpb249XCJiZWZvcmVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvcG92ZXItY29udGVudCBzaG93LW1lbnVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3BvdmVyLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3BvdmVyLXVzZXItdG9wXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cInVzZXJJbWFnZUxpbms7ZWxzZSBkZWZhdWx0TGFyZ2VBdmF0YXJcIiBbc3JjXT1cInVzZXJJbWFnZUxpbmtcIiBjbGFzcz1cImF2YXRhci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJBdmF0YXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdExhcmdlQXZhdGFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwieydiYWNrZ3JvdW5kLWltYWdlJzogJ3VybCgnICsgaW1hZ2VEYXRhVXJscy5kZWZhdWx0VXNlckltYWdlICsgJyknfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXZhdGFyLWljb24gZGVmYXVsdC1hdmF0YXJcIiBhbHQ9XCJBdmF0YXIgaWNvblwiPiZuYnNwOzwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWRhdGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInByb2ZpbGUtbmFtZVwiPjxzcGFuICpuZ0lmPVwidXNlckF1dGhEYXRhXCI+e3sgdXNlckF1dGhEYXRhPy5maXJzdE5hbWUgfX0ge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlckF1dGhEYXRhPy5sYXN0TmFtZSB9fTwvc3Bhbj48L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNvbG9yPVwiYWNjZW50XCIgY2xhc3M9XCJwbXgtYnV0dG9uIGJ0biBidG4tc21hbGwgdmlldy1wcm9maWxlIG1zLTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJwcm9maWxlKClcIj5WaWV3IFByb2ZpbGU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3BvdmVyLWJvZHlcIj5cbiAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJwb3BvdmVyLWNvbnRlbnQtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHA+T3ZlcnZpZXc8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInVzZXJBdXRoRGF0YT8uZW1haWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPHAgbWF0LW1lbnUtaXRlbSBjbGFzcz1cImxpc3QtdGV4dCBsaXN0LXRleHQtZW1haWwgbXQtMyBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJsaXN0LWljb25cIj5tYWlsPC9tYXQtaWNvbj48c3BhbiBjbGFzcz1cInBteC1sb3dlci1jYXNlIHBteC10ZXh0LXdyYXAgbWUtYXV0b1wiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlckF1dGhEYXRhPy5lbWFpbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ1c2VyQXV0aERhdGE/LmNvbnRhY3RQaG9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBtYXQtbWVudS1pdGVtIGNsYXNzPVwibGlzdC10ZXh0IG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImxpc3QtaWNvblwiPmNhbGw8L21hdC1pY29uPjxzcGFuIGNsYXNzPVwidGl0bGUtY2FzZSBtZS1hdXRvXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyQXV0aERhdGE/LmNvbnRhY3RQaG9uZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPGhyIC8+XG4gICAgICAgICAgICAgICAgPHVsIGNka01lbnUgY2xhc3M9XCJsaXN0LWdyb3VwIGxhc3QtZ3JvdXAgbXktMVwiPlxuICAgICAgICAgICAgICAgICAgICA8bGkgY2RrTWVudUl0ZW0gY2xhc3M9XCJsaXN0LWl0ZW0gcHktMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIGNsYXNzPVwicG14LWJ1dHRvbiBsaXN0LWJ1dHRvbiBidG4tbG9nb3V0XCIgKGNsaWNrKT1cIm9uTG9nb3V0Q2xpY2soKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5wb3dlcl9zZXR0aW5nc19uZXc8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGlzdC10ZXh0XCI+TG9nb3V0PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L21hdC1tZW51PlxuPC9tYXQtdG9vbGJhcj5cbjxtYXQtZHJhd2VyLWNvbnRhaW5lciBjbGFzcz1cIm91dGVyLWRyYXdlci1jb250YWluZXJcIiBhdXRvc2l6ZT5cbiAgICA8bWF0LWRyYXdlciAjdXRpbGl0eURyYXdlciBjbGFzcz1cInV0aWxpdHktbWVudS1kcmF3ZXJcIiBtb2RlPVwic2lkZVwiIHBvc2l0aW9uPVwiZW5kXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkZWZhdWx0QXBwcy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cImJ0bi1yaWdodC1tZW51XCIgYXJpYS1sYWJlbD1cIkJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGVmYXVsdEFwcHNcIiAoY2xpY2spPVwib3Blbkl0ZW0oaXRlbSlcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+e3sgaXRlbS5pY29uIH19PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGhyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cImJ0bi1yaWdodC1tZW51XCIgYXJpYS1sYWJlbD1cIkJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29uZmlnXCIgKGNsaWNrKT1cIm9wZW5JdGVtKGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPnt7IGl0ZW0uaWNvbiB9fTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9tYXQtZHJhd2VyPlxuICAgIDxtYXQtZHJhd2VyLWNvbnRlbnQ+XG4gICAgICAgIDxtYXQtZHJhd2VyLWNvbnRhaW5lciBjbGFzcz1cImlubmVyLWRyYXdlci1jb250YWluZXJcIiBhdXRvc2l6ZT5cbiAgICAgICAgICAgIDxtYXQtZHJhd2VyICN1dGlsaXR5U3BhY2VEcmF3ZXIgY2xhc3M9XCJ1dGlsaXR5LWNvbnRlbnQtZHJhd2VyXCIgcG9zaXRpb249XCJlbmRcIlxuICAgICAgICAgICAgICAgIFttb2RlXT1cInNlbGVjdGVkPy5sYXlvdXQgfHwgJ3NpZGUnXCIgW29wZW5lZF09XCIhIXNlbGVjdGVkXCIgKGNsb3NlZCk9XCJzZWxlY3RlZCA9IHVuZGVmaW5lZFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb21wb25lbnRUb0xvYWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJjb21wb25lbnRUb0xvYWQ7IGluamVjdG9yOiBkeW5hbWljSW5qZWN0b3JcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbWF0LWRyYXdlcj5cbiAgICAgICAgICAgIDwhLS0gPG1hdC1kcmF3ZXIgI3NhbXBsZURyYXdlciBwb3NpdGlvbj1cImVuZFwiIG1vZGU9XCJvdmVyXCI+XG4gICAgICAgIDxwPlNhbXBsZSBjb250ZW50PC9wPlxuICAgICAgPC9tYXQtZHJhd2VyPiAtLT5cbiAgICAgICAgICAgIDxtYXQtZHJhd2VyLWNvbnRlbnQ+PG5nLWNvbnRlbnQgY2xhc3M9XCJib2R5X2NvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICBzZWxlY3Q9XCJbYm9keUNvbnRlbnRJbmZvXVwiPjwvbmctY29udGVudD48L21hdC1kcmF3ZXItY29udGVudD5cbiAgICAgICAgPC9tYXQtZHJhd2VyLWNvbnRhaW5lcj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBjbGFzcz1cInV0aWxpdHktdG9nZ2xlLWJ1dHRvblwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ1dGlsaXR5RHJhd2VyLm9wZW5lZCA/ICd1dGlsaXR5LW9wZW5lZCcgOiAndXRpbGl0eS1jbG9zZWQnXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIV9oZWFkZXJTZXIuaGVhZGVyQ29uZmlnLmRpc2FibGVVdGlsaXR5RHJhd2VyXCIgKGNsaWNrKT1cInV0aWxpdHlEcmF3ZXIudG9nZ2xlKClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNoYXQtZXhwYW5kLWFycm93XCIgKm5nSWY9XCJ1dGlsaXR5RHJhd2VyLm9wZW5lZFwiPmFycm93X3JpZ2h0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNoYXQtZXhwYW5kLWFycm93XCIgKm5nSWY9XCIhdXRpbGl0eURyYXdlci5vcGVuZWRcIj5hcnJvd19sZWZ0PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9tYXQtZHJhd2VyLWNvbnRlbnQ+XG48L21hdC1kcmF3ZXItY29udGFpbmVyPiJdfQ==
|
|
399
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbW1vbi1oZWFkZXIvc3JjL2xpYi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbW1vbi1oZWFkZXIvc3JjL2xpYi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUMzRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFPdEQsTUFBTSxPQUFPLGVBQWU7SUF3QjFCO1FBdEJBLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFFdkIsa0JBQWEsR0FBUSxJQUFJLENBQUM7UUFDMUIsb0JBQWUsR0FBUSxFQUFFLENBQUM7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a0JBQWtCOztzQkFDL0IsWUFBWTt1QkFBQyxnQkFBZ0I7O3NCQUM3QixZQUFZO3VCQUFDLHFCQUFxQjs7c0JBQ2xDLFlBQVk7dUJBQUMsb0JBQW9COztzQkFDakMsWUFBWTt1QkFBQyxpQkFBaUI7O3NCQUM5QixZQUFZO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdFNpZGVuYXYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHNpZ25PdXQgfSBmcm9tICdhd3MtYW1wbGlmeS9hdXRoJztcbmltcG9ydCB7IEFwcE1lbnUsIENvbXBhbnkgfSBmcm9tICcuLi9jb21tb24taGVhZGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb21tb25IZWFkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uLWhlYWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBhbnlTd2l0Y2hXYXJuaW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcGFueS1zd2l0Y2gtd2FybmluZy9jb21wYW55LXN3aXRjaC13YXJuaW5nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHBDb25maWcgfSBmcm9tICcuLi9jb25maWcvYXBwLmNvbmZpZyc7XG5pbXBvcnQgeyBQUk9GRVRfQVBQUyB9IGZyb20gJy4uL3V0aWxzL2FwcHMuZW51bSc7XG5pbXBvcnQgeyBpbWFnZURhdGFVcmwgfSBmcm9tICcuLi91dGlscy9pbWFnZS5kYXRhdXJsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgSGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBjb21wYW55UHJvZmlsZTogYW55O1xuICBwb3J0YWxVcmw6IHN0cmluZyA9ICcnO1xuICB1c2VyQXV0aERhdGE6IGFueTtcbiAgdXNlckltYWdlTGluazogYW55ID0gbnVsbDtcbiAgdXNlckNvbXBhbnlMb2dvOiBhbnkgPSAnJztcbiAgaW1hZ2VEYXRhVXJscyA9IGltYWdlRGF0YVVybDtcbiAgcHVibGljIF9yb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSBfc25hY2tiYXIgPSBpbmplY3QoTWF0U25hY2tCYXIpO1xuICBwdWJsaWMgX2hlYWRlclNlciA9IGluamVjdChDb21tb25IZWFkZXJTZXJ2aWNlKTtcbiAgcHVibGljIF9kb21TYW5pdGl6ZXIgPSBpbmplY3QoRG9tU2FuaXRpemVyKTtcbiAgcHJpdmF0ZSBpbmFjdGl2aXR5VGltZW91dDogYW55O1xuICBwcml2YXRlIGxvZ291dENoZWNrSW50ZXJ2YWw6IGFueTtcbiAgQElucHV0KCkgSU5BQ1RJVklUWV9MSU1JVCA9IDEyMDAwMDsgLy8gMiBtaW51dGVzXG5cbiAgQE91dHB1dCgpIGxvZ291dEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGNvbXBhbnlDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gIGFwcENvbmZpZzogYW55ID0gQXBwQ29uZmlnLmFwcENvbmZpZztcbiAgY29tcGFueUxpc3Q6IENvbXBhbnlbXSA9IFtdO1xuICBAVmlld0NoaWxkKCdzaWRlbmF2Jykgc2lkZW5hdiE6IE1hdFNpZGVuYXY7XG4gIG1lbnVMaXN0OiB7IGtleTogc3RyaW5nLCB2YWx1ZTogQXBwTWVudVtdIH1bXSA9IFtdO1xuICBhY3RpdmVDb21wYW55OiBDb21wYW55IHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy51cGRhdGVMYXN0QWNjZXNzZWRBcHBJbmZvKCk7XG4gICAgdGhpcy5nZXRDb21wYW55TGlzdCgpO1xuXG4gICAgdGhpcy5faGVhZGVyU2VyLmdldFVzZXJEZXRhaWxzKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgIHRoaXMudXNlckF1dGhEYXRhID0gcmVzO1xuICAgICAgICAgIHRoaXMuZ2V0TWVudUxpc3QoKTtcbiAgICAgICAgICBpZiAocmVzLnByb2ZpbGVJbWFnZSkge1xuICAgICAgICAgICAgdGhpcy51c2VySW1hZ2VMaW5rID0gcmVzLnByb2ZpbGVJbWFnZS5sb2NhdGlvblVybFxuICAgICAgICAgICAgICA/IHRoaXMuX2RvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKHJlcy5wcm9maWxlSW1hZ2UubG9jYXRpb25VcmwpXG4gICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICAgIC8vIGlmICh1c2VySW5mbz8udXNlcm5hbWUpIHtcbiAgICAvLyAgIGxldCB1c2VyRGV0YWlscyA9IHRoaXMuX2hlYWRlclNlci5nZXRVc2VyRGV0YWlscygpO1xuICAgIC8vICAgZm9ya0pvaW4oW3VzZXJEZXRhaWxzXSkuc3Vic2NyaWJlKHtcbiAgICAvLyAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgIC8vICAgICAgIGlmIChyZXMgJiYgcmVzWzBdKSB7XG4gICAgLy8gICAgICAgICB0aGlzLnVzZXJBdXRoRGF0YSA9IHJlc1swXTtcbiAgICAvLyAgICAgICAgIHRoaXMudXNlcm5hbWUgPSB0aGlzLnVzZXJBdXRoRGF0YS5maXJzdE5hbWU7XG4gICAgLy8gICAgICAgICB0aGlzLmdldE1lbnVMaXN0KCk7XG4gICAgLy8gICAgICAgICBpZiAodGhpcy51c2VyQXV0aERhdGE/Ll9saW5rcz8ucHJvZmlsZUltYWdlPy5ocmVmKSB7XG4gICAgLy8gICAgICAgICAgIHRoaXMuZ2V0VXNlclByb2ZpbGUoKTtcbiAgICAvLyAgICAgICAgIH1cbiAgICAvLyAgICAgICB9XG4gICAgLy8gICAgIH0sXG4gICAgLy8gICB9KTtcbiAgICAvLyB9XG4gICAgdGhpcy5yZXNldFRpbWVyKCk7XG5cbiAgICAvLyBDbGVhciBhbnkgc3RhbGUgbG9nb3V0IHNpZ25hbCBvbiBpbml0XG4gICAgdGhpcy5zZXRDb29raWUoJ3Nlc3Npb25fZXhwaXJlZCcsICcnLCAtMSk7XG5cbiAgICB0aGlzLnN0YXJ0TG9nb3V0Q2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgdG8gZ2V0IHRoZSByb290IGRvbWFpbiAoZS5nLiAubXljb20uYWkpIHRvIHNoYXJlIGNvb2tpZXMgYWNyb3NzIHN1YmRvbWFpbnMvcG9ydHMuXG4gICAqIElmIG9uIGxvY2FsaG9zdCBvciBhbiBJUCwgaXQgZmFsbHMgYmFjayB0byB0aGUgaG9zdG5hbWUuXG4gICAqL1xuICBwcml2YXRlIGdldFJvb3REb21haW4oKTogc3RyaW5nIHtcbiAgICBjb25zdCBob3N0bmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcbiAgICBjb25zdCBwYXJ0cyA9IGhvc3RuYW1lLnNwbGl0KCcuJyk7XG5cbiAgICBpZiAocGFydHMubGVuZ3RoID4gMiAmJiAhL15cXGR7MSwzfVxcLlxcZHsxLDN9XFwuXFxkezEsM31cXC5cXGR7MSwzfSQvLnRlc3QoaG9zdG5hbWUpKSB7XG4gICAgICAvLyBJZiB3ZSBoYXZlIDQrIHBhcnRzIChlLmcuIGFwcDEubG9jYWwucHJvZmV0LmFpKSwgd2Ugd2FudCB0byBpbmNsdWRlIHRoZSBlbnZpcm9ubWVudCAobG9jYWwucHJvZmV0LmFpKVxuICAgICAgLy8gdG8gYXZvaWQgc2hhcmluZyBjb29raWVzIHdpdGggYXBwMS5kZXYucHJvZmV0LmFpIG9yIGFwcDEucHJvZmV0LmFpLlxuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDMpIHtcbiAgICAgICAgcmV0dXJuICcuJyArIHBhcnRzLnNsaWNlKC0zKS5qb2luKCcuJyk7XG4gICAgICB9XG4gICAgICAvLyBGb3Igc3RhbmRhcmQgMyBwYXJ0cyAoYXBwMS5wcm9mZXQuYWkpLCBzaGFyZSBvbiAucHJvZmV0LmFpXG4gICAgICByZXR1cm4gJy4nICsgcGFydHMuc2xpY2UoLTIpLmpvaW4oJy4nKTtcbiAgICB9XG4gICAgcmV0dXJuIGhvc3RuYW1lO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDb29raWUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBkYXlzOiBudW1iZXIpIHtcbiAgICBsZXQgZXhwaXJlcyA9IFwiXCI7XG4gICAgaWYgKGRheXMpIHtcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgZGF0ZS5zZXRUaW1lKGRhdGUuZ2V0VGltZSgpICsgKGRheXMgKiAyNCAqIDYwICogNjAgKiAxMDAwKSk7XG4gICAgICBleHBpcmVzID0gXCI7IGV4cGlyZXM9XCIgKyBkYXRlLnRvVVRDU3RyaW5nKCk7XG4gICAgfVxuICAgIC8vIEltcG9ydGFudDogc2V0IGRvbWFpbiB0byBhbGxvdyBzaGFyaW5nIGFjcm9zcyBzdWJkb21haW5zXG4gICAgY29uc3QgZG9tYWluID0gXCI7IGRvbWFpbj1cIiArIHRoaXMuZ2V0Um9vdERvbWFpbigpO1xuICAgIGRvY3VtZW50LmNvb2tpZSA9IG5hbWUgKyBcIj1cIiArICh2YWx1ZSB8fCBcIlwiKSArIGV4cGlyZXMgKyBkb21haW4gKyBcIjsgcGF0aD0vXCI7XG4gIH1cblxuICBwcml2YXRlIGdldENvb2tpZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBuYW1lRVEgPSBuYW1lICsgXCI9XCI7XG4gICAgY29uc3QgY2EgPSBkb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgYyA9IGNhW2ldO1xuICAgICAgd2hpbGUgKGMuY2hhckF0KDApID09ICcgJykgYyA9IGMuc3Vic3RyaW5nKDEsIGMubGVuZ3RoKTtcbiAgICAgIGlmIChjLmluZGV4T2YobmFtZUVRKSA9PSAwKSByZXR1cm4gYy5zdWJzdHJpbmcobmFtZUVRLmxlbmd0aCwgYy5sZW5ndGgpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNlbW92ZScpXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nKVxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycpXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OnRvdWNoc3RhcnQnKVxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDp0b3VjaG1vdmUnKVxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpzY3JvbGwnKVxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6Zm9jdXMnKVxuICByZXNldFRpbWVyKGlzVXNlckFjdGl2aXR5OiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLmluYWN0aXZpdHlUaW1lb3V0KTtcblxuICAgIC8vIFVwZGF0ZSBnbG9iYWwgYWN0aXZpdHkgdGltZXN0YW1wIGluIGNvb2tpZSBPTkxZIGlmIHRyaWdnZXJlZCBieSB1c2VyIGFjdGl2aXR5XG4gICAgaWYgKGlzVXNlckFjdGl2aXR5KSB7XG4gICAgICAvLyBVc2UgYSBzaG9ydCBleHBpcnkgKGUuZy4gMSBkYXkpIG9yIHN5bmMgd2l0aCBzZXNzaW9uIGxlbmd0aFxuICAgICAgdGhpcy5zZXRDb29raWUoJ2xhc3RBY3RpdmVTZXNzaW9uVGltZScsIERhdGUubm93KCkudG9TdHJpbmcoKSwgMSk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9oZWFkZXJTZXIuaXNTZXNzaW9uRXhwaXJ5RGlhbG9nT3Blbikge1xuICAgICAgdGhpcy5pbmFjdGl2aXR5VGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAvLyBDaGVjayBnbG9iYWwgYWN0aXZpdHkgYmVmb3JlIGxvZ2dpbmcgb3V0XG4gICAgICAgIGNvbnN0IGxhc3RBY3RpdmUgPSB0aGlzLmdldENvb2tpZSgnbGFzdEFjdGl2ZVNlc3Npb25UaW1lJyk7XG4gICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICAgIGNvbnN0IGxhc3RBY3RpdmVUaW1lID0gbGFzdEFjdGl2ZSA/IHBhcnNlSW50KGxhc3RBY3RpdmUsIDEwKSA6IDA7XG4gICAgICAgIGNvbnN0IGVsYXBzZWQgPSBub3cgLSBsYXN0QWN0aXZlVGltZTtcblxuICAgICAgICBpZiAobGFzdEFjdGl2ZSAmJiBlbGFwc2VkIDwgdGhpcy5JTkFDVElWSVRZX0xJTUlUKSB7XG4gICAgICAgICAgLy8gVXNlciB3YXMgYWN0aXZlIGluIGFub3RoZXIgdGFiL2FwcCByZWNlbnRseVxuICAgICAgICAgIC8vIFJlc2NoZWR1bGUgdGhlIGNoZWNrLCBidXQgRE8gTk9UIHVwZGF0ZSB0aGUgYWN0aXZpdHkgdGltZXN0YW1wXG4gICAgICAgICAgdGhpcy5yZXNldFRpbWVyKGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBSZWFsbHkgaW5hY3RpdmUgYWNyb3NzIGFsbCBrbm93biB0YWJzXG4gICAgICAgICAgdGhpcy5oYW5kbGVMb2dvdXQoKTtcbiAgICAgICAgfVxuICAgICAgfSwgdGhpcy5JTkFDVElWSVRZX0xJTUlUKTtcbiAgICB9XG4gIH1cblxuXG5cbiAgLyoqXG4gICAgICogSGVscGVyIHRvIGlkZW50aWZ5IHRoZSBzZXNzaW9uIGV4cGlyeSBpbiBpbi1hY3RpdmUgdGFicy5cbiAgKi9cbiAgcHJpdmF0ZSBzdGFydExvZ291dENoZWNrKCkge1xuICAgIC8vIFBvbGwgZm9yIHRoZSBsb2dvdXQgc2lnbmFsIGNvb2tpZSAod29ya3MgYWNyb3NzIHBvcnRzL3N1YmRvbWFpbnMpXG4gICAgdGhpcy5sb2dvdXRDaGVja0ludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZ2V0Q29va2llKCdzZXNzaW9uX2V4cGlyZWQnKSkge1xuICAgICAgICB0aGlzLmhhbmRsZUxvZ291dChmYWxzZSk7XG4gICAgICB9XG4gICAgfSwgMjAwMCk7IC8vIENoZWNrIGV2ZXJ5IDIgc2Vjb25kc1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVMb2dvdXQoYnJvYWRjYXN0OiBib29sZWFuID0gdHJ1ZSwgc2hvd1BvcHVwOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIC8vIFByZXZlbnQgbXVsdGlwbGUgcG9wdXBzIGlmIGFscmVhZHkgb3BlblxuICAgIGlmICh0aGlzLl9oZWFkZXJTZXIuaXNTZXNzaW9uRXhwaXJ5RGlhbG9nT3BlbiAmJiBzaG93UG9wdXApIHtcbiAgICAgIHJldHVybjsgLy8gSWYgcG9wdXAgaXMgYWxyZWFkeSBvcGVuIGFuZCB3ZSB3YW50IHRvIHNob3cgaXQsIGRvIG5vdGhpbmcgKGl0J3MgdGhlcmUpLiBcbiAgICAgIC8vIElmIHdlIGRvbid0IHdhbnQgdG8gc2hvdyBpdCAobWFudWFsIGxvZ291dCksIHdlIHByb2NlZWQgdG8gc2lnbk91dCBhbnl3YXk/IFxuICAgIH1cblxuICAgIGlmIChicm9hZGNhc3QpIHtcbiAgICAgIC8vIFNldCBhIGNvb2tpZSB0byBzaWduYWwgb3RoZXIgdGFicy9wb3J0c1xuICAgICAgdGhpcy5zZXRDb29raWUoJ3Nlc3Npb25fZXhwaXJlZCcsICd0cnVlJywgMSk7XG4gICAgfVxuXG4gICAgdGhpcy5sb2dvdXRFdmVudC5lbWl0KCk7XG4gICAgbGV0IHNlc3Npb25VcmwgPSB0aGlzLl9oZWFkZXJTZXIuaGVhZGVyQ29uZmlnLnNpZ25PdXRVcmwgKyAnP3Nlc3Npb25FeHBpcmVkPXRydWUmdGltZW91dD0nICsgdGhpcy5JTkFDVElWSVRZX0xJTUlUO1xuICAgIHNpZ25PdXQoeyBnbG9iYWw6IHRydWUsIG9hdXRoOiB7IHJlZGlyZWN0VXJsOiBzZXNzaW9uVXJsIH0gfSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgd2luZG93Lm9wZW4oc2Vzc2lvblVybCwgJ19zZWxmJyk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdMb2dvdXQgZmFpbGVkOicsIGVycm9yKTtcbiAgICAgICAgd2luZG93Lm9wZW4oc2Vzc2lvblVybCwgJ19zZWxmJyk7XG4gICAgICB9KTtcblxuICAgIC8vIGlmIChzaG93UG9wdXApIHtcbiAgICAvLyAgIHRoaXMuX2hlYWRlclNlci5vcGVuU2Vzc2lvbkV4cGlyZUluZm8oeyBzZXNzaW9uT3V0VGltZUluTWluczogdGhpcy5JTkFDVElWSVRZX0xJTUlUIH0pO1xuICAgIC8vIH1cblxuICAgIGlmICh0aGlzLmluYWN0aXZpdHlUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5pbmFjdGl2aXR5VGltZW91dCk7XG4gICAgfVxuICAgIC8vIFN0b3AgcG9sbGluZyBvbmNlIHdlIGFyZSBsb2dnaW5nIG91dFxuICAgIGlmICh0aGlzLmxvZ291dENoZWNrSW50ZXJ2YWwpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5sb2dvdXRDaGVja0ludGVydmFsKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RDdXJyZW50Q29tcGFueSgpIHtcbiAgICBsZXQgY29tID0gdGhpcy5jb21wYW55TGlzdC5maW5kKHggPT4geC5pc0FjdGl2ZSk7XG4gICAgdGhpcy5hY3RpdmVDb21wYW55ID0gY29tO1xuICB9XG5cbiAgcGF0Y2hDdXJyZW50Q29tcGFueUluZm8oKSB7XG4gICAgbGV0IGNvbSA9IHRoaXMuY29tcGFueUxpc3QuZmluZCh4ID0+IHguaXNBY3RpdmUpO1xuICAgIHRoaXMuY29tcGFueUNvbnRyb2wucGF0Y2hWYWx1ZShjb20pO1xuICB9XG5cbiAgc2lkZU1lbnVUb2dnbGUoKSB7XG4gICAgdGhpcy5zaWRlbmF2LnRvZ2dsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBncm91cEJ5QXBwVHlwZShtZW51TGlzdDogQXBwTWVudVtdKTogeyBrZXk6IHN0cmluZywgdmFsdWU6IEFwcE1lbnVbXSB9W10ge1xuICAgIGxldCBncm91cGVkID0gbWVudUxpc3QucmVkdWNlKChyLCBhKSA9PiB7XG4gICAgICByW2EuYXBwVHlwZV0gPSByW2EuYXBwVHlwZV0gfHwgW107XG5cbiAgICAgIC8vIFRPRE86IFBhdGggcmVmZXJlbmNlcyBhcmUgdG8gYmUgcmVwbGFjZWQgd2l0aCB2YWx1ZXMgZnJvbSBiYWNrZW5kIEFQSSByZXNwb25zZS4gUmVtb3ZlIHRoaXMgYmxvY2sgd2hlbiBiYWNrZW5kIGlzIHJlYWR5XG4gICAgICBpZiAoYS5hcHBUeXBlID09IFBST0ZFVF9BUFBTLnByb2ZldF9wb3J0YWwpIHtcbiAgICAgICAgbGV0IGlzQ29tcGFueU1lbnUgPSBhLnBhdGggPT09ICdhcHAvY29tcGFuaWVzJztcbiAgICAgICAgbGV0IGlzQ29tcGFueUFkbWluID0gdGhpcy51c2VyQXV0aERhdGE/LnJvbGVzRm9yQ3VycmVudENvbXBhbnkuaW5jbHVkZXMoXCJDT01QQU5ZX0FETUlOXCIpO1xuXG4gICAgICAgIGlmIChpc0NvbXBhbnlNZW51ICYmIGlzQ29tcGFueUFkbWluKSB7XG4gICAgICAgICAgYSA9IHsgLi4uYSwgcGF0aDogJ2FwcC9hZGRDb21wYW55L2NvbXBhbnlEZXRhaWxzJyB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBFTkQgb2YgVE9ETyBibG9ja1xuXG4gICAgICByW2EuYXBwVHlwZV0ucHVzaChhKTtcbiAgICAgIHJldHVybiByO1xuICAgIH0sIE9iamVjdC5jcmVhdGUobnVsbCkpO1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhncm91cGVkKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHsga2V5LCB2YWx1ZTogdmFsdWUgYXMgQXBwTWVudVtdIH0pKTtcbiAgfVxuXG4gIG1lbnVTZWxlY3Rpb24obWVudTogQXBwTWVudSkge1xuICAgIHRoaXMuc2lkZU1lbnVUb2dnbGUoKTtcbiAgICBsZXQgYWN0aXZlQ29tID0gdGhpcy5jb21wYW55TGlzdC5maW5kKHggPT4geC5pc0FjdGl2ZSk7XG4gICAgbGV0IGlzQ29tcGFueU1lbnUgPSBtZW51LnBhdGggPT09ICdhcHAvYWRkQ29tcGFueS9jb21wYW55RGV0YWlscyc7XG4gICAgbGV0IGlzQ29tcGFueUFkbWluID0gdGhpcy51c2VyQXV0aERhdGE/LnJvbGVzRm9yQ3VycmVudENvbXBhbnkuaW5jbHVkZXMoXCJDT01QQU5ZX0FETUlOXCIpO1xuXG4gICAgaWYgKG1lbnUuYXBwVHlwZSA9PSB0aGlzLl9oZWFkZXJTZXIuaGVhZGVyQ29uZmlnLmFwcFR5cGUpIHtcbiAgICAgIC8vIFRPRE86IFBhdGggcmVmZXJlbmNlcyBhcmUgdG8gYmUgcmVwbGFjZWQgd2l0aCB2YWx1ZXMgZnJvbSBiYWNrZW5kIEFQSSByZXNwb25zZVxuICAgICAgaWYgKGlzQ29tcGFueU1lbnUgJiYgaXNDb21wYW55QWRtaW4pIHtcbiAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFttZW51LnBhdGgsIGFjdGl2ZUNvbT8uaWRdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbbWVudS5wYXRoXSk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYgKGFjdGl2ZUNvbSkge1xuICAgICAgICBpZiAoYWN0aXZlQ29tLmJhc2VVcmxzW21lbnUuYXBwVHlwZV0pIHtcbiAgICAgICAgICAvLyBUT0RPOiBQYXRoIHJlZmVyZW5jZXMgYXJlIHRvIGJlIHJlcGxhY2VkIHdpdGggdmFsdWVzIGZyb20gYmFja2VuZCBBUEkgcmVzcG9uc2VcbiAgICAgICAgICBpZiAoaXNDb21wYW55TWVudSAmJiBpc0NvbXBhbnlBZG1pbikge1xuICAgICAgICAgICAgbGV0IHVybCA9IGAke2FjdGl2ZUNvbS5iYXNlVXJsc1ttZW51LmFwcFR5cGVdfS8ke21lbnUucGF0aH0vJHthY3RpdmVDb20uaWR9YDtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHVybCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCB1cmwgPSBgJHthY3RpdmVDb20uYmFzZVVybHNbbWVudS5hcHBUeXBlXX0vJHttZW51LnBhdGh9YDtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHVybCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0Q29tcGFueUxpc3QoKSB7XG4gICAgdGhpcy5faGVhZGVyU2VyLmdldENvbXBhbnlMaXN0KCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICh2OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5faGVhZGVyU2VyLnNldENvbXBhbnlMaXN0KHYpO1xuICAgICAgICB0aGlzLmNvbXBhbnlMaXN0ID0gdjtcbiAgICAgICAgdGhpcy5zZWxlY3RDdXJyZW50Q29tcGFueSgpO1xuICAgICAgICB0aGlzLnBhdGNoQ3VycmVudENvbXBhbnlJbmZvKCk7XG4gICAgICB9XG4gICAgfSlcbiAgfVxuICBnZXRNZW51TGlzdCgpIHtcbiAgICB0aGlzLl9oZWFkZXJTZXIuZ2V0TWVudUxpc3QoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHY6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLl9oZWFkZXJTZXIuc2V0TWVudVN0YXRlKHYpO1xuICAgICAgICB0aGlzLm1lbnVMaXN0ID0gdGhpcy5ncm91cEJ5QXBwVHlwZSh2KTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgcHJvZmlsZSgpIHtcbiAgICBpZiAodGhpcy5faGVhZGVyU2VyLmhlYWRlckNvbmZpZy5hcHBUeXBlID09IFBST0ZFVF9BUFBTLnByb2ZldF9wb3J0YWwpIHtcbiAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvYXBwL3Byb2ZpbGUnKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBsZXQgdXJsID0gdGhpcy5hY3RpdmVDb21wYW55Py5iYXNlVXJscy5wcm9mZXRfcG9ydGFsICsgJy9hcHAvcHJvZmlsZSc7XG4gICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gdXJsO1xuICAgIH1cbiAgfVxuICBvbkxvZ291dENsaWNrKCkge1xuICAgIC8vIFN5bmMgd2l0aCBvdGhlciB0YWJzXG4gICAgdGhpcy5zZXRDb29raWUoJ3Nlc3Npb25fZXhwaXJlZCcsICd0cnVlJywgMSk7XG5cbiAgICAvLyBDbGVhciB0aW1lcnNcbiAgICBpZiAodGhpcy5pbmFjdGl2aXR5VGltZW91dCkgY2xlYXJUaW1lb3V0KHRoaXMuaW5hY3Rpdml0eVRpbWVvdXQpO1xuICAgIGlmICh0aGlzLmxvZ291dENoZWNrSW50ZXJ2YWwpIGNsZWFySW50ZXJ2YWwodGhpcy5sb2dvdXRDaGVja0ludGVydmFsKTtcblxuICAgIHRoaXMubG9nb3V0RXZlbnQuZW1pdCgpO1xuICAgIHNpZ25PdXQoeyBnbG9iYWw6IHRydWUsIG9hdXRoOiB7IHJlZGlyZWN0VXJsOiB0aGlzLl9oZWFkZXJTZXIuaGVhZGVyQ29uZmlnLnNpZ25PdXRVcmwgfSB9KVxuICAgICAgLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgd2luZG93Lm9wZW4odGhpcy5faGVhZGVyU2VyLmhlYWRlckNvbmZpZy5zaWduT3V0VXJsLCAnX3NlbGYnKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgICAgICBzaWduT3V0KHsgZ2xvYmFsOiB0cnVlLCBvYXV0aDogeyByZWRpcmVjdFVybDogdGhpcy5faGVhZGVyU2VyLmhlYWRlckNvbmZpZy5zaWduT3V0VXJsIH0gfSlcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB3aW5kb3cub3Blbih0aGlzLl9oZWFkZXJTZXIuaGVhZGVyQ29uZmlnLnNpZ25PdXRVcmwsICdfc2VsZicpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29uc29sZS5sb2coZXJyb3IpKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlTGFzdEFjY2Vzc2VkQXBwSW5mbygpIHtcbiAgICBsZXQgcmVxID0ge1xuICAgICAgbGFzdEFjY2Vzc2VkQXBwbGljYXRpb246IHRoaXMuX2hlYWRlclNlci5oZWFkZXJDb25maWcuYXBwVHlwZVxuICAgIH07XG5cbiAgICB0aGlzLl9oZWFkZXJTZXIudXBkYXRlTGFzdEFjY2Vzc2VkQXBwbGljYXRpb24ocmVxKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBzd2l0Y2hDb21wYW55KGluZm86IGFueSkge1xuICAgIGxldCBjb21wYW55ID0gaW5mby52YWx1ZTtcbiAgICBsZXQgY29tSW5mbyA9IHtcbiAgICAgIGFjdGl2ZUNvbXBhbnk6IHRoaXMuYWN0aXZlQ29tcGFueT8ubmFtZSxcbiAgICAgIHN3aXRjaGluZ0NvbXBhbnk6IGNvbXBhbnkubmFtZVxuICAgIH07XG4gICAgdGhpcy5faGVhZGVyU2VyLl9kaWFsb2cub3BlbihDb21wYW55U3dpdGNoV2FybmluZ0NvbXBvbmVudCwgeyBkYXRhOiBjb21JbmZvIH0pLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICBpZiAocmVzKSB7XG4gICAgICAgIC8vIEZpbmQgdGhlIGRvbWFpbiBpbmZvcm1hdGlvblxuICAgICAgICBpZiAoIWNvbXBhbnkuaXNBY3RpdmUpIHtcbiAgICAgICAgICAvLyBsZXQgZG9tYWluSW5mbyA9IHRoaXMuX2hlYWRlclNlci5nZXREb21haW5JbmZvKCk7XG4gICAgICAgICAgLy8gaWYgKGRvbWFpbkluZm8pIHtcbiAgICAgICAgICBsZXQgcmVxOiBhbnkgPSB7XG4gICAgICAgICAgICBjb21wYW55S2V5OiBjb21wYW55LmNvbXBhbnlLZXksXG4gICAgICAgICAgICBhcHBOYW1lOiB0aGlzLl9oZWFkZXJTZXIuaGVhZGVyQ29uZmlnLmFwcFR5cGUsXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLl9oZWFkZXJTZXIudXBkYXRlVXNlckNvbXBhbnkocmVxKS5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLnR5cGUgJiYgcmVzcG9uc2UudHlwZSA9PSAnT0snKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuYXBwbGljYXRpb25VUkwpIHtcbiAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSByZXNwb25zZS5kYXRhLmFwcGxpY2F0aW9uVVJMO1xuICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2UodXJsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gcmVmcmVzaCB0aGUgY3VycmVudCBwYWdlIHRvIHJlbG9hZCB0aGUgY29udGVudHMgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29tcGFueVxuICAgICAgICAgICAgICAgIC8vIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBkaXNwbGF5IGEgbWVzc2FnZSB0byB0aGUgdXNlciB0aGF0IHRoZSBjb21wYW55IGNvdWxkIG5vdCBiZSBzd2l0Y2hlZC5cbiAgICAgICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuKFxuICAgICAgICAgICAgICAgICAgJ0NvbXBhbnkgY291bGQgbm90IGJlIHN3aXRjaGVkLiBQbGVhc2UgdHJ5IGFnYWluIG9yIGNvbnRhY3Qgc3VwcG9ydC4nLFxuICAgICAgICAgICAgICAgICAgJ09LJyxcbiAgICAgICAgICAgICAgICAgIHsgZHVyYXRpb246IDUwMDAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKGUpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5wYXRjaEN1cnJlbnRDb21wYW55SW5mbygpO1xuICAgICAgICAgICAgICAvLyBkaXNwbGF5IGEgbWVzc2FnZSB0byB0aGUgdXNlciB0aGF0IHRoZSBjb21wYW55IGNvdWxkIG5vdCBiZSBzd2l0Y2hlZC5cbiAgICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbihcbiAgICAgICAgICAgICAgICAnQ29tcGFueSBjb3VsZCBub3QgYmUgc3dpdGNoZWQuIFBsZWFzZSB0cnkgYWdhaW4gb3IgY29udGFjdCBzdXBwb3J0LicsXG4gICAgICAgICAgICAgICAgJ09LJyxcbiAgICAgICAgICAgICAgICB7IGR1cmF0aW9uOiA1MDAwIH1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gfSBcbiAgICAgICAgICAvLyBlbHNlIHtcbiAgICAgICAgICAvLyAgIHRoaXMucGF0Y2hDdXJyZW50Q29tcGFueUluZm8oKTtcbiAgICAgICAgICAvLyAgIHRoaXMuX3NuYWNrYmFyLm9wZW4oXG4gICAgICAgICAgLy8gICAgICdDb21wYW55IGNvdWxkIG5vdCBiZSBzd2l0Y2hlZC4gUGxlYXNlIHRyeSBhZ2FpbiBvciBjb250YWN0IHN1cHBvcnQuJyxcbiAgICAgICAgICAvLyAgICAgJ09LJyxcbiAgICAgICAgICAvLyAgICAgeyBkdXJhdGlvbjogNTAwMCB9XG4gICAgICAgICAgLy8gICApO1xuICAgICAgICAgIC8vIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMucGF0Y2hDdXJyZW50Q29tcGFueUluZm8oKTtcbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmluYWN0aXZpdHlUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5pbmFjdGl2aXR5VGltZW91dCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmxvZ291dENoZWNrSW50ZXJ2YWwpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5sb2dvdXRDaGVja0ludGVydmFsKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxtYXQtc2lkZW5hdi1jb250YWluZXIgY2xhc3M9XCJhcHAtbWVudS1zaWRlbmF2LWNvbnRhaW5lclwiPlxuICAgIDxtYXQtc2lkZW5hdiBjZGtNZW51QmFyICNzaWRlbmF2IG1vZGU9XCJvdmVyXCIgY2xhc3M9XCJzaWRlbmF2RHJhd2VyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcmF3ZXJIZWFkTG9nb1wiPjxpbWcgW3NyY109XCJfZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwoaW1hZ2VEYXRhVXJscy5wcm9mZXRMb2dvKVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLW1lbnUtY29udGVudC1zZWN0aW9uXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhcHBUeXBlIG9mIG1lbnVMaXN0XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcExpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cImFwcENvbmZpZ1thcHBUeXBlLmtleV0/LmFwcExvZ29VcmlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJfZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwoYXBwQ29uZmlnW2FwcFR5cGUua2V5XT8uYXBwTG9nb1VyaSlcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViSGVhZExpc3RJdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGFwcFR5cGUudmFsdWVcIiBjbGFzcz1cIm1lbnUtaXRlbVwiIChjbGljayk9XCJtZW51U2VsZWN0aW9uKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWN0aXZlLW1lbnUnOiBpdGVtIHwgYWN0aXZlUm91dGUgOiBfcm91dGVyLnVybDpfaGVhZGVyU2VyLmhlYWRlckNvbmZpZy5hcHBUeXBlfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWVudUljb25MaXN0XCIgKm5nSWY9XCJpdGVtLmljb25cIj57eyBpdGVtLmljb24gfX08L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbS5tZW51TmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9tYXQtc2lkZW5hdj5cblxuPC9tYXQtc2lkZW5hdi1jb250YWluZXI+XG48bWF0LXRvb2xiYXIgY2RrTWVudUJhciBjb2xvcj1cInByaW1hcnlcIiBjbGFzcz1cImhlYWRlci13cmFwcGVyIGNvbW1vbl9oZWFkZXIgc2hhZG93LXNtXCI+XG4gICAgPCEtLSBNYWluIG5hdiBidXR0b24gYW5kIG5hdmlnYXRpb24gbGlua3MgLS0+XG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY29sb3I9XCJ0aGVtZS13aGl0ZVwiIChjbGljayk9XCJzaWRlbmF2LnRvZ2dsZSgpXCJcbiAgICAgICAgY2xhc3M9XCJwbXgtYnV0dG9uIHBteC1tZW51LWJ1dHRvbiBvcmRlcnMtbWVudSBpY29uLWJ0biBtcy0wIG1lLTNcIiBhcmlhLWxhYmVsPVwibWFpbiBtZW51XCIgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgbWF0VG9vbHRpcD1cIk1haW4gbWVudVwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImJlbG93XCJcbiAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwicG9jLWhlYWRlci10b29sdGlwXCI+PG1hdC1pY29uPm1lbnU8L21hdC1pY29uPjwvYnV0dG9uPlxuICAgIDxhIGNsYXNzPVwibmF2YmFyLWJyYW5kIG1lLWF1dG9cIiBocmVmPVwiI1wiPlxuICAgICAgICA8aW1nIFtzcmNdPVwiX2RvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKGFwcENvbmZpZ1tfaGVhZGVyU2VyLmhlYWRlckNvbmZpZy5hcHBUeXBlXT8uYXBwTG9nb1VyaSlcIlxuICAgICAgICAgICAgYWx0PVwiQXBwIExvZ29cIiBjbGFzcz1cImFwcC1sb2dvXCI+XG4gICAgPC9hPlxuXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJzd2l0Y2hDb21wYW55RmllbGRcIj5cbiAgICAgICAgPG1hdC1sYWJlbD5Db21wYW55PC9tYXQtbGFiZWw+XG4gICAgICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbF09XCJjb21wYW55Q29udHJvbFwiIChzZWxlY3Rpb25DaGFuZ2UpPVwic3dpdGNoQ29tcGFueSgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0IG9mIGNvbXBhbnlMaXN0XCIgW3ZhbHVlXT1cIm9wdFwiPlxuICAgICAgICAgICAgICAgIHt7b3B0Lm5hbWV9fVxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cblxuXG4gICAgPCEtLSBQcm9maWxlIGJ1dHRvbiBhbmQgcHJvZmlsZSBkcm9wZG93biBsaW5rcyAtLT5cbiAgICA8YnV0dG9uIGNsYXNzPVwicG14LWJ1dHRvbiBwbXgtbWVudS1idXR0b24gcHJvZmlsZS1idXR0b25cIiBtYXQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYmVsb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInByb2ZpbGUtaW5uZXJcIj5cbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImJyYW5kLWxvZ28gYWxpZ24tc2VsZi1jZW50ZXJcIiAqbmdJZj1cImFjdGl2ZUNvbXBhbnk/LmxvZ29cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImFjdGl2ZUNvbXBhbnk/LmxvZ28gPyAnYnJhbmRlZC1sb2dvLXRydWUnIDogJ2JyYW5kZWQtbG9nby1mYWxzZSdcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZC1pbWFnZSc6ICd1cmwoJyArIGFjdGl2ZUNvbXBhbnk/LmxvZ28gKyAnKSd9XCI+PC9kaXY+IC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhclwiPlxuICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJ1c2VySW1hZ2VMaW5rO2Vsc2UgZGVmYXVsdEF2YXRhclwiIFtzcmNdPVwidXNlckltYWdlTGlua1wiIGNsYXNzPVwiYXZhdGFyLWltYWdlXCIgYWx0PVwiQXZhdGFyXCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0QXZhdGFyPjxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiX2RvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKGltYWdlRGF0YVVybHMuZGVmYXVsdFVzZXJJbWFnZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdmF0YXItZGVmYXVsdFwiIGFsdD1cInByb2ZpbGUgcGljXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2J1dHRvbj5cbiAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJhY2NvdW50c19kcnBtZW51IHBteC1tZW51LWdyb3VwIGhlYWRlci1kcm9wZG93bi1wcm9maWxlXCIgeFBvc2l0aW9uPVwiYmVmb3JlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwb3BvdmVyLWNvbnRlbnQgc2hvdy1tZW51XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wb3Zlci1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wb3Zlci11c2VyLXRvcFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJ1c2VySW1hZ2VMaW5rO2Vsc2UgZGVmYXVsdExhcmdlQXZhdGFyXCIgW3NyY109XCJ1c2VySW1hZ2VMaW5rXCIgY2xhc3M9XCJhdmF0YXItaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiQXZhdGFyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRMYXJnZUF2YXRhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsnYmFja2dyb3VuZC1pbWFnZSc6ICd1cmwoJyArIGltYWdlRGF0YVVybHMuZGVmYXVsdFVzZXJJbWFnZSArICcpJ31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImF2YXRhci1pY29uIGRlZmF1bHQtYXZhdGFyXCIgYWx0PVwiQXZhdGFyIGljb25cIj4mbmJzcDs8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1kYXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJwcm9maWxlLW5hbWVcIj48c3BhbiAqbmdJZj1cInVzZXJBdXRoRGF0YVwiPnt7IHVzZXJBdXRoRGF0YT8uZmlyc3ROYW1lIH19IHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJBdXRoRGF0YT8ubGFzdE5hbWUgfX08L3NwYW4+PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiIGNsYXNzPVwicG14LWJ1dHRvbiBidG4gYnRuLXNtYWxsIHZpZXctcHJvZmlsZSBtcy0wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicHJvZmlsZSgpXCI+VmlldyBQcm9maWxlPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9wb3Zlci1ib2R5XCI+XG4gICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwicG9wb3Zlci1jb250ZW50LXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwPk92ZXJ2aWV3PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ1c2VyQXV0aERhdGE/LmVtYWlsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJsaXN0LXRleHQgbGlzdC10ZXh0LWVtYWlsIG10LTMgbWItM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibGlzdC1pY29uXCI+bWFpbDwvbWF0LWljb24+PHNwYW4gY2xhc3M9XCJwbXgtbG93ZXItY2FzZSBwbXgtdGV4dC13cmFwIG1lLWF1dG9cIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJBdXRoRGF0YT8uZW1haWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidXNlckF1dGhEYXRhPy5jb250YWN0UGhvbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHAgbWF0LW1lbnUtaXRlbSBjbGFzcz1cImxpc3QtdGV4dCBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJsaXN0LWljb25cIj5jYWxsPC9tYXQtaWNvbj48c3BhbiBjbGFzcz1cInRpdGxlLWNhc2UgbWUtYXV0b1wiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlckF1dGhEYXRhPy5jb250YWN0UGhvbmUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxociAvPlxuICAgICAgICAgICAgICAgIDx1bCBjZGtNZW51IGNsYXNzPVwibGlzdC1ncm91cCBsYXN0LWdyb3VwIG15LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxpIGNka01lbnVJdGVtIGNsYXNzPVwibGlzdC1pdGVtIHB5LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBjbGFzcz1cInBteC1idXR0b24gbGlzdC1idXR0b24gYnRuLWxvZ291dFwiIChjbGljayk9XCJvbkxvZ291dENsaWNrKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+cG93ZXJfc2V0dGluZ3NfbmV3PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpc3QtdGV4dFwiPkxvZ291dDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9tYXQtbWVudT5cbjwvbWF0LXRvb2xiYXI+Il19
|