tango-app-ui-shared 3.3.1-controlcenter.3 → 3.5.0-alpha.1
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/esm2022/lib/guards/auth.guard.mjs +3 -3
- package/esm2022/lib/i18n/translation.module.mjs +4 -4
- package/esm2022/lib/i18n/translation.service.mjs +3 -3
- package/esm2022/lib/interceptors/http-auth-interceptor.mjs +3 -3
- package/esm2022/lib/modules/common/common-shared.module.mjs +4 -4
- package/esm2022/lib/modules/common/custom-select/custom-select.component.mjs +3 -3
- package/esm2022/lib/modules/common/filters/filters.component.mjs +5 -5
- package/esm2022/lib/modules/common/pagination/pagination.component.mjs +3 -3
- package/esm2022/lib/modules/errors/error403/error403.component.mjs +3 -3
- package/esm2022/lib/modules/errors/error404/error404.component.mjs +3 -3
- package/esm2022/lib/modules/errors/error500/error500.component.mjs +3 -3
- package/esm2022/lib/modules/errors/errors-routing.module.mjs +4 -4
- package/esm2022/lib/modules/errors/errors.component.mjs +3 -3
- package/esm2022/lib/modules/errors/errors.module.mjs +4 -4
- package/esm2022/lib/modules/errors/invalid-ip/invalid-ip.component.mjs +3 -3
- package/esm2022/lib/modules/intro/contact-support/contact-support.component.mjs +3 -3
- package/esm2022/lib/modules/intro/intro-routing.module.mjs +4 -4
- package/esm2022/lib/modules/intro/intro.module.mjs +4 -4
- package/esm2022/lib/modules/intro/lead-intro/lead-intro.component.mjs +14 -9
- package/esm2022/lib/modules/layout/components/csm-assign-confirmation/csm-assign-confirmation.component.mjs +3 -3
- package/esm2022/lib/modules/layout/content/content.component.mjs +3 -3
- package/esm2022/lib/modules/layout/footer/footer.component.mjs +3 -3
- package/esm2022/lib/modules/layout/header/header-menu/header-menu.component.mjs +5 -5
- package/esm2022/lib/modules/layout/header/header.component.mjs +4 -4
- package/esm2022/lib/modules/layout/header/navbar/navbar.component.mjs +3 -3
- package/esm2022/lib/modules/layout/header/notifications-inner/notifications-inner.component.mjs +3 -3
- package/esm2022/lib/modules/layout/header/page-title/page-title.component.mjs +5 -10
- package/esm2022/lib/modules/layout/keenicon/keenicon.component.mjs +3 -3
- package/esm2022/lib/modules/layout/layout/layout.component.mjs +26 -6
- package/esm2022/lib/modules/layout/layout.module.mjs +22 -7
- package/esm2022/lib/modules/layout/scripts-init/scripts-init.component.mjs +3 -3
- package/esm2022/lib/modules/layout/scroll-top/scroll-top.component.mjs +3 -3
- package/esm2022/lib/modules/layout/sidebar/sidebar-footer/sidebar-footer.component.mjs +3 -3
- package/esm2022/lib/modules/layout/sidebar/sidebar-logo/sidebar-logo.component.mjs +3 -3
- package/esm2022/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.mjs +33 -13
- package/esm2022/lib/modules/layout/sidebar/sidebar.component.mjs +3 -3
- package/esm2022/lib/modules/layout/toolbar/accounting/accounting.component.mjs +3 -3
- package/esm2022/lib/modules/layout/toolbar/classic/classic.component.mjs +3 -3
- package/esm2022/lib/modules/layout/toolbar/client-settings/client-settings.component.mjs +9 -4
- package/esm2022/lib/modules/layout/toolbar/date-single-select/date-single-select.component.mjs +9 -4
- package/esm2022/lib/modules/layout/toolbar/datepicker/datepicker.component.mjs +17 -5
- package/esm2022/lib/modules/layout/toolbar/extended/extended.component.mjs +3 -3
- package/esm2022/lib/modules/layout/toolbar/metrics-header/metrics-header.component.mjs +1231 -0
- package/esm2022/lib/modules/layout/toolbar/reports/reports.component.mjs +3 -3
- package/esm2022/lib/modules/layout/toolbar/saas/saas.component.mjs +3 -3
- package/esm2022/lib/modules/layout/toolbar/single-store/single-store.component.mjs +37 -11
- package/esm2022/lib/modules/layout/toolbar/single-storedate/single-storedate.component.mjs +146 -0
- package/esm2022/lib/modules/layout/toolbar/storesingle/storesingle.component.mjs +105 -0
- package/esm2022/lib/modules/layout/toolbar/toolbar.component.mjs +137 -45
- package/esm2022/lib/modules/layout/toolbar/traffic-header/traffic-header/traffic-header.component.mjs +409 -120
- package/esm2022/lib/modules/layout/toolbar/traffic-nob/traffic-nob.component.mjs +795 -0
- package/esm2022/lib/modules/layout/toolbar/trax-header/trax-header.component.mjs +200 -105
- package/esm2022/lib/modules/layout/toolbar/trax-withoutdate/trax-withoutdate.component.mjs +729 -0
- package/esm2022/lib/modules/notification/conformation/conformation.component.mjs +22 -0
- package/esm2022/lib/modules/notification/notification/notification.component.mjs +58 -27
- package/esm2022/lib/modules/notification/notification-routing.module.mjs +4 -4
- package/esm2022/lib/modules/notification/notification.module.mjs +8 -5
- package/esm2022/lib/pipes/customDate.pipe.mjs +3 -3
- package/esm2022/lib/routes/route-wraper-modules/edge-wrapper.module.mjs +5 -5
- package/esm2022/lib/routes/route-wraper-modules/manage-wrapper.module.mjs +5 -6
- package/esm2022/lib/routes/route-wraper-modules/profile-wrapper.module.mjs +4 -4
- package/esm2022/lib/routes/route-wraper-modules/store-wrapper.module.mjs +5 -6
- package/esm2022/lib/routes/route-wraper-modules/ticket-wrapper.module.mjs +4 -4
- package/esm2022/lib/services/auth.service.mjs +21 -4
- package/esm2022/lib/services/notification.service.mjs +7 -4
- package/esm2022/lib/services/toast.service.mjs +21 -4
- package/fesm2022/{tango-app-ui-shared-edge-wrapper.module-fMqNK7aH.mjs → tango-app-ui-shared-edge-wrapper.module-CFDk0tvS.mjs} +5 -5
- package/fesm2022/tango-app-ui-shared-edge-wrapper.module-CFDk0tvS.mjs.map +1 -0
- package/fesm2022/{tango-app-ui-shared-intro.module-DulZR743.mjs → tango-app-ui-shared-intro.module-DYh4ZRha.mjs} +23 -18
- package/fesm2022/tango-app-ui-shared-intro.module-DYh4ZRha.mjs.map +1 -0
- package/fesm2022/{tango-app-ui-shared-manage-wrapper.module-YOr1-p9k.mjs → tango-app-ui-shared-manage-wrapper.module-BHyh4Njw.mjs} +5 -5
- package/fesm2022/tango-app-ui-shared-manage-wrapper.module-BHyh4Njw.mjs.map +1 -0
- package/fesm2022/{tango-app-ui-shared-notification.module-BXSgtsUu.mjs → tango-app-ui-shared-notification.module-C5ZmCf8U.mjs} +84 -34
- package/fesm2022/tango-app-ui-shared-notification.module-C5ZmCf8U.mjs.map +1 -0
- package/fesm2022/{tango-app-ui-shared-profile-wrapper.module-DAb6dDVZ.mjs → tango-app-ui-shared-profile-wrapper.module-BNC1AGOk.mjs} +5 -5
- package/fesm2022/tango-app-ui-shared-profile-wrapper.module-BNC1AGOk.mjs.map +1 -0
- package/fesm2022/{tango-app-ui-shared-store-wrapper.module-mO6jWpzr.mjs → tango-app-ui-shared-store-wrapper.module-DdaCYHdv.mjs} +5 -6
- package/fesm2022/tango-app-ui-shared-store-wrapper.module-DdaCYHdv.mjs.map +1 -0
- package/fesm2022/{tango-app-ui-shared-ticket-wrapper.module-XEAROmQk.mjs → tango-app-ui-shared-ticket-wrapper.module-r32uKkDO.mjs} +5 -5
- package/fesm2022/tango-app-ui-shared-ticket-wrapper.module-r32uKkDO.mjs.map +1 -0
- package/fesm2022/tango-app-ui-shared.mjs +4006 -450
- package/fesm2022/tango-app-ui-shared.mjs.map +1 -1
- package/lib/modules/intro/lead-intro/lead-intro.component.d.ts +4 -1
- package/lib/modules/layout/layout/layout.component.d.ts +3 -0
- package/lib/modules/layout/layout.module.d.ts +15 -10
- package/lib/modules/layout/sidebar/sidebar-menu/sidebar-menu.component.d.ts +1 -0
- package/lib/modules/layout/toolbar/datepicker/datepicker.component.d.ts +1 -0
- package/lib/modules/layout/toolbar/metrics-header/metrics-header.component.d.ts +103 -0
- package/lib/modules/layout/toolbar/single-store/single-store.component.d.ts +11 -4
- package/lib/modules/layout/toolbar/single-storedate/single-storedate.component.d.ts +33 -0
- package/lib/modules/layout/toolbar/storesingle/storesingle.component.d.ts +24 -0
- package/lib/modules/layout/toolbar/toolbar.component.d.ts +13 -2
- package/lib/modules/layout/toolbar/traffic-header/traffic-header/traffic-header.component.d.ts +15 -2
- package/lib/modules/layout/toolbar/traffic-nob/traffic-nob.component.d.ts +80 -0
- package/lib/modules/layout/toolbar/trax-header/trax-header.component.d.ts +3 -0
- package/lib/modules/layout/toolbar/trax-withoutdate/trax-withoutdate.component.d.ts +74 -0
- package/lib/modules/notification/conformation/conformation.component.d.ts +10 -0
- package/lib/modules/notification/notification/notification.component.d.ts +5 -1
- package/lib/modules/notification/notification.module.d.ts +5 -4
- package/lib/services/auth.service.d.ts +6 -0
- package/lib/services/notification.service.d.ts +1 -0
- package/lib/services/toast.service.d.ts +1 -0
- package/package.json +1 -1
- package/fesm2022/tango-app-ui-shared-edge-wrapper.module-fMqNK7aH.mjs.map +0 -1
- package/fesm2022/tango-app-ui-shared-intro.module-DulZR743.mjs.map +0 -1
- package/fesm2022/tango-app-ui-shared-manage-wrapper.module-YOr1-p9k.mjs.map +0 -1
- package/fesm2022/tango-app-ui-shared-notification.module-BXSgtsUu.mjs.map +0 -1
- package/fesm2022/tango-app-ui-shared-profile-wrapper.module-DAb6dDVZ.mjs.map +0 -1
- package/fesm2022/tango-app-ui-shared-store-wrapper.module-mO6jWpzr.mjs.map +0 -1
- package/fesm2022/tango-app-ui-shared-ticket-wrapper.module-XEAROmQk.mjs.map +0 -1
|
@@ -1,21 +1,28 @@
|
|
|
1
1
|
import { Component, Input } from "@angular/core";
|
|
2
|
+
import { Subject } from "rxjs";
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
4
|
import * as i1 from "tango-app-ui-global";
|
|
4
5
|
import * as i2 from "@angular/router";
|
|
5
|
-
import * as i3 from "
|
|
6
|
-
import * as i4 from "
|
|
7
|
-
import * as i5 from "
|
|
8
|
-
import * as i6 from "./
|
|
9
|
-
import * as i7 from "./
|
|
10
|
-
import * as i8 from "./
|
|
11
|
-
import * as i9 from "./single-
|
|
12
|
-
import * as i10 from "./
|
|
13
|
-
import * as i11 from "./
|
|
6
|
+
import * as i3 from "../../../services/auth.service";
|
|
7
|
+
import * as i4 from "@angular/common";
|
|
8
|
+
import * as i5 from "../header/page-title/page-title.component";
|
|
9
|
+
import * as i6 from "./classic/classic.component";
|
|
10
|
+
import * as i7 from "./client-settings/client-settings.component";
|
|
11
|
+
import * as i8 from "./datepicker/datepicker.component";
|
|
12
|
+
import * as i9 from "./date-single-select/date-single-select.component";
|
|
13
|
+
import * as i10 from "./single-store/single-store.component";
|
|
14
|
+
import * as i11 from "./traffic-header/traffic-header/traffic-header.component";
|
|
15
|
+
import * as i12 from "./trax-header/trax-header.component";
|
|
16
|
+
import * as i13 from "./single-storedate/single-storedate.component";
|
|
17
|
+
import * as i14 from "./trax-withoutdate/trax-withoutdate.component";
|
|
18
|
+
import * as i15 from "./traffic-nob/traffic-nob.component";
|
|
19
|
+
import * as i16 from "./metrics-header/metrics-header.component";
|
|
14
20
|
export class ToolbarComponent {
|
|
15
21
|
layout;
|
|
16
22
|
router;
|
|
17
23
|
route;
|
|
18
24
|
gs;
|
|
25
|
+
auth;
|
|
19
26
|
unsubscribe = [];
|
|
20
27
|
// Public props
|
|
21
28
|
currentLayoutType;
|
|
@@ -50,17 +57,28 @@ export class ToolbarComponent {
|
|
|
50
57
|
};
|
|
51
58
|
trafficdatepicker;
|
|
52
59
|
traxdatepicker;
|
|
53
|
-
|
|
60
|
+
urlString;
|
|
61
|
+
traxwithoutdatepicker;
|
|
62
|
+
storesSingle;
|
|
63
|
+
nobWithoutClient;
|
|
64
|
+
merticsHeader;
|
|
65
|
+
constructor(layout, router, route, gs, auth) {
|
|
54
66
|
this.layout = layout;
|
|
55
67
|
this.router = router;
|
|
56
68
|
this.route = route;
|
|
57
69
|
this.gs = gs;
|
|
70
|
+
this.auth = auth;
|
|
58
71
|
}
|
|
59
72
|
ngOnInit() {
|
|
60
73
|
if ("user-info" in localStorage) {
|
|
61
74
|
const userData = JSON.parse(localStorage.getItem("user-info") || "{}");
|
|
62
75
|
this.users = userData;
|
|
63
76
|
}
|
|
77
|
+
if ("header-filters" in localStorage) {
|
|
78
|
+
const data = JSON.parse(localStorage.getItem("header-filters") || "{}");
|
|
79
|
+
this.client = data?.client;
|
|
80
|
+
}
|
|
81
|
+
this.getUserInfo(this.client ? this.client : this.users.client);
|
|
64
82
|
this.showPageTitle();
|
|
65
83
|
const subscr = this.layout.layoutConfigSubject
|
|
66
84
|
.asObservable()
|
|
@@ -99,9 +117,15 @@ export class ToolbarComponent {
|
|
|
99
117
|
this.appPageTitleDescription = this.layout.getProp("app.pageTitle.description", config);
|
|
100
118
|
document.body.setAttribute("data-kt-app-toolbar-enabled", "true");
|
|
101
119
|
}
|
|
120
|
+
destroy$ = new Subject();
|
|
102
121
|
ngOnDestroy() {
|
|
103
122
|
this.unsubscribe.forEach((sb) => sb.unsubscribe());
|
|
123
|
+
this.destroy$.next(true);
|
|
124
|
+
this.destroy$.complete();
|
|
125
|
+
// localStorage.removeItem("usersEmail-info");
|
|
104
126
|
}
|
|
127
|
+
client;
|
|
128
|
+
urlString1;
|
|
105
129
|
showPageTitle() {
|
|
106
130
|
let URL = "";
|
|
107
131
|
if ("header-filters" in localStorage) {
|
|
@@ -119,88 +143,140 @@ export class ToolbarComponent {
|
|
|
119
143
|
// this.router.navigate([URL])
|
|
120
144
|
}
|
|
121
145
|
const url = URL.split("?")[0].split('/');
|
|
146
|
+
this.urlString = URL;
|
|
147
|
+
this.urlString1 = URL.split('/');
|
|
148
|
+
console.log(url);
|
|
122
149
|
if (this.users?.userType === "tango") {
|
|
123
150
|
if (url[2] == "settings" || URL == "/manage/users/client" ||
|
|
124
151
|
URL == "/manage/stores" || URL === "/manage/stores?type=stores" || URL === "/manage/stores?type=clusters" ||
|
|
125
152
|
URL == "/manage/stores/addition-method" ||
|
|
126
|
-
URL == "/manage/stores/add-single-store" || URL === "/manage/trax/gallery") {
|
|
127
|
-
this.setUIProperties(true, false, false, false, false, false, false);
|
|
153
|
+
URL == "/manage/stores/add-single-store" || URL === "/manage/trax/gallery" || URL == "/notifications/alerts?tab=alert" || URL == "/notifications/alerts?tab=download" || URL === "/manage/trax/audit") {
|
|
154
|
+
this.setUIProperties(true, false, false, false, false, false, false, false, false, false, false);
|
|
128
155
|
}
|
|
129
156
|
else if (url[3] == "edge-app") {
|
|
130
|
-
this.setUIProperties(false, false, false, false, true, false, false);
|
|
157
|
+
this.setUIProperties(false, false, false, false, true, false, false, false, false, false, false);
|
|
131
158
|
}
|
|
132
159
|
else if (URL == `/manage/stores/infra-ticket?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=infra` ||
|
|
133
160
|
URL == `/manage/stores/settings?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=dataMismatch` ||
|
|
134
161
|
URL == `/manage/stores/zones?storeId=${this.storeId}` ||
|
|
135
162
|
URL == `/manage/stores/cameras?storeId=${this.storeId}` ||
|
|
136
163
|
// URL == `/manage/stores/infrastructure?storeId=${this.storeId}` ||
|
|
137
|
-
URL == `/manage/stores/mat?storeId=${this.storeId}`
|
|
138
|
-
this.setUIProperties(false, false, false, true, false, false, false);
|
|
164
|
+
URL == `/manage/stores/mat?storeId=${this.storeId}`) {
|
|
165
|
+
this.setUIProperties(false, false, false, true, false, false, false, false, false, false, false);
|
|
166
|
+
}
|
|
167
|
+
else if (URL == "/tickets/stores" || URL == "/manage/users/tango/audit") {
|
|
168
|
+
this.setUIProperties(false, false, true, false, false, false, false, false, false, false, false);
|
|
169
|
+
}
|
|
170
|
+
else if (url[2] === 'controlcenter') {
|
|
171
|
+
if (URL == `/manage/controlcenter/playback?storeId=${this.storeId}` || URL == `/manage/controlcenter/playback`) {
|
|
172
|
+
this.setUIProperties(false, false, false, false, false, false, false, false, true, false, false);
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
this.setUIProperties(false, false, false, false, true, false, false, false, false, false, false);
|
|
176
|
+
}
|
|
139
177
|
}
|
|
140
178
|
else if (URL == "/profile" || url[2] === "data-mismatch" || url[2] === "employeetraining"
|
|
141
179
|
|| URL == "/manage/brands" || URL == "/manage/users/tango" || (url[1] === "tickets" && url[2] === "audit")) {
|
|
142
|
-
this.setUIProperties(false, false, false, false, false, false, false);
|
|
180
|
+
this.setUIProperties(false, false, false, false, false, false, false, false, false, false, false);
|
|
181
|
+
}
|
|
182
|
+
else if (URL == "/manage/traffic/nob") {
|
|
183
|
+
this.setUIProperties(false, false, false, false, false, false, false, false, false, true, false);
|
|
143
184
|
}
|
|
144
185
|
else if (url[2] === "traffic" || url[2] === "zones" || URL == "/manage/analyse/reports") {
|
|
145
|
-
this.setUIProperties(false, false, false, false, false, true, false);
|
|
186
|
+
this.setUIProperties(false, false, false, false, false, true, false, false, false, false, false);
|
|
187
|
+
}
|
|
188
|
+
else if (url[2] === "employee-metrics" && url[3] === "heatmap") {
|
|
189
|
+
this.setUIProperties(false, false, false, false, false, false, false, false, true, false, false);
|
|
190
|
+
}
|
|
191
|
+
else if (url[2] === "employee-metrics") {
|
|
192
|
+
this.setUIProperties(false, false, false, false, false, false, false, false, false, false, true);
|
|
146
193
|
}
|
|
147
194
|
else if (url[2] == 'trax') {
|
|
148
|
-
if (url[2] == 'trax' && (url.includes('createChecklist') || url.includes('configure'))) {
|
|
149
|
-
this.setUIProperties(false, false, false, false, false, false, false);
|
|
195
|
+
if (url[2] == 'trax' && (url.includes('createChecklist') || url.includes('configure') || url.includes('create-order') || url[3] == 'create-task' || url[3] == 'task-configure')) {
|
|
196
|
+
this.setUIProperties(false, false, false, false, false, false, false, false, false, false, false);
|
|
197
|
+
}
|
|
198
|
+
else if (url[2] == 'trax' && (url.includes('taskinfo'))) {
|
|
199
|
+
this.setUIProperties(false, false, false, false, false, false, false, true, false, false, false);
|
|
200
|
+
}
|
|
201
|
+
else if (url[2] == 'trax' && url.includes('start')) {
|
|
202
|
+
this.setUIProperties(false, false, false, false, false, false, false, false, false, false, false);
|
|
150
203
|
}
|
|
151
|
-
else if (url[2] == 'trax' && url.includes('checklist')) {
|
|
152
|
-
this.setUIProperties(true, false, false, false, false, false, false);
|
|
204
|
+
else if (url[2] == 'trax' && (url.includes('checklist') || url.includes('gallery')) || url.includes('audit')) {
|
|
205
|
+
this.setUIProperties(true, false, false, false, false, false, false, false, false, false, false);
|
|
153
206
|
}
|
|
154
207
|
else {
|
|
155
|
-
this.setUIProperties(false, false, false, false, false, false, true);
|
|
208
|
+
this.setUIProperties(false, false, false, false, false, false, true, false, false, false, false);
|
|
156
209
|
}
|
|
157
210
|
}
|
|
158
211
|
else {
|
|
159
|
-
this.setUIProperties(false, false, false, false, true, false, false);
|
|
212
|
+
this.setUIProperties(false, false, false, false, true, false, false, false, false, false, false);
|
|
160
213
|
}
|
|
161
214
|
}
|
|
162
215
|
else {
|
|
163
|
-
if (url[3] == "edge-app"
|
|
164
|
-
this.setUIProperties(false, false, true, false, false, false, false);
|
|
216
|
+
if (url[3] == "edge-app") {
|
|
217
|
+
this.setUIProperties(false, false, true, false, false, false, false, false, false, false, false);
|
|
165
218
|
}
|
|
166
219
|
else if (URL == `/manage/stores/infra-ticket?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=infra` ||
|
|
167
220
|
URL == `/manage/stores/settings?storeId=${this.storeId}` || URL == `/manage/stores/infra-ticket?storeId=${this.storeId}&type=dataMismatch` ||
|
|
168
221
|
URL == `/manage/stores/zones?storeId=${this.storeId}` ||
|
|
169
222
|
URL == `/manage/stores/cameras?storeId=${this.storeId}` ||
|
|
170
223
|
// URL == `/manage/stores/infrastructure?storeId=${this.storeId}` ||
|
|
171
|
-
URL == `/manage/stores/mat?storeId=${this.storeId}`
|
|
172
|
-
this.setUIProperties(false, false, false, true, false, false, false);
|
|
224
|
+
URL == `/manage/stores/mat?storeId=${this.storeId}`) {
|
|
225
|
+
this.setUIProperties(false, false, false, true, false, false, false, false, false, false, false);
|
|
226
|
+
}
|
|
227
|
+
else if (url[2] === 'controlcenter') {
|
|
228
|
+
if (URL == `/manage/controlcenter/playback?storeId=${this.storeId}` || URL == `/manage/controlcenter/playback`) {
|
|
229
|
+
this.setUIProperties(false, false, false, false, false, false, false, false, true, false, false);
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
this.setUIProperties(false, false, false, false, true, false, false, false, false, false, false);
|
|
233
|
+
}
|
|
173
234
|
}
|
|
174
235
|
else if (URL == "/profile" || URL == "/manage/users/client" || URL == "/manage/users/tango" ||
|
|
175
|
-
URL == "/manage/stores" || URL === "/manage/stores?type=stores" || URL === "/manage/stores?type=
|
|
236
|
+
URL == "/manage/stores" || URL === "/manage/stores?type=stores" || URL === "/manage/stores?type=clusters" || url[2] == "settings" ||
|
|
176
237
|
URL == "/manage/stores/addition-method" ||
|
|
177
|
-
URL == "/manage/stores/add-single-store" || url[2] === "data-mismatch" || url[2] === "employeetraining"
|
|
178
|
-
|| URL == "/manage/users/tango" ||
|
|
179
|
-
this.setUIProperties(false, false, false, false, false, false, false);
|
|
238
|
+
URL == "/manage/stores/add-single-store" || url[2] === "data-mismatch" || url[2] === "employeetraining" || URL == "/notifications/alerts?tab=alert" || URL == "/notifications/alerts?tab=download"
|
|
239
|
+
|| URL == "/manage/users/tango" || URL === "/manage/controlcenter" || URL === 'manage/controlcenter/template-manager' || url[2] === 'controlcenter') {
|
|
240
|
+
this.setUIProperties(false, false, false, false, false, false, false, false, false, false, false);
|
|
241
|
+
}
|
|
242
|
+
else if (URL == "/manage/traffic/nob") {
|
|
243
|
+
this.setUIProperties(false, false, false, false, false, false, false, false, false, true, false);
|
|
180
244
|
}
|
|
181
245
|
else if (url[2] === "traffic" || url[2] === "zones" || URL == "/manage/analyse/reports") {
|
|
182
|
-
this.setUIProperties(false, false, false, false, false, true, false);
|
|
246
|
+
this.setUIProperties(false, false, false, false, false, true, false, false, false, false, false);
|
|
247
|
+
}
|
|
248
|
+
else if (url[2] === "employee-metrics" && url[3] === "heatmap") {
|
|
249
|
+
this.setUIProperties(false, false, false, false, false, false, false, false, true, false, false);
|
|
250
|
+
}
|
|
251
|
+
else if (url[2] === "employee-metrics") {
|
|
252
|
+
this.setUIProperties(false, false, false, false, false, false, false, false, false, false, true);
|
|
183
253
|
}
|
|
184
254
|
else if (url[2] == 'trax') {
|
|
185
|
-
if (url[2] == 'trax' && (url.includes('createChecklist') || url.includes('configure'))) {
|
|
186
|
-
this.setUIProperties(false, false, false, false, false, false, false);
|
|
255
|
+
if (url[2] == 'trax' && (url.includes('createChecklist') || url.includes('configure') || url.includes('create-order') || url[3] == 'create-task' || url[3] == 'task-configure')) {
|
|
256
|
+
this.setUIProperties(false, false, false, false, false, false, false, false, false, false, false);
|
|
257
|
+
}
|
|
258
|
+
else if (url[2] == 'trax' && (url.includes('taskinfo'))) {
|
|
259
|
+
this.setUIProperties(false, false, false, false, false, false, false, true, false, false, false);
|
|
260
|
+
}
|
|
261
|
+
else if (url[2] == 'trax' && url.includes('start')) {
|
|
262
|
+
this.setUIProperties(false, false, false, false, false, false, false, false, false, false, false);
|
|
187
263
|
}
|
|
188
|
-
else if (url[2] == 'trax' && url.includes('checklist')) {
|
|
189
|
-
this.setUIProperties(true, false, false, false, false, false, false);
|
|
264
|
+
else if (url[2] == 'trax' && (url.includes('checklist') || url.includes('gallery') || url.includes('audit'))) {
|
|
265
|
+
this.setUIProperties(true, false, false, false, false, false, false, false, false, false, false);
|
|
190
266
|
}
|
|
191
267
|
else {
|
|
192
|
-
this.setUIProperties(false, false, false, false, false, false, true);
|
|
268
|
+
this.setUIProperties(false, false, false, false, false, false, true, false, false, false, false);
|
|
193
269
|
}
|
|
194
270
|
}
|
|
195
271
|
else {
|
|
196
|
-
this.setUIProperties(false, false, true, false, false, false, false);
|
|
272
|
+
this.setUIProperties(false, false, true, false, false, false, false, false, false, false, false);
|
|
197
273
|
}
|
|
198
274
|
}
|
|
199
275
|
const viewsWithPageTitles = ["classic", "reports", "saas"];
|
|
200
276
|
return (this.appPageTitleDisplay &&
|
|
201
277
|
viewsWithPageTitles.some((t) => t === this.appToolbarLayout));
|
|
202
278
|
}
|
|
203
|
-
setUIProperties(singleSelect, multiSelect, datepicker, singleStore, singleSelectdatepicker, trafficdatepicker, traxdatepicker) {
|
|
279
|
+
setUIProperties(singleSelect, multiSelect, datepicker, singleStore, singleSelectdatepicker, trafficdatepicker, traxdatepicker, traxwithoutdatepicker, storesSingle, nobWithoutClient, merticsHeader) {
|
|
204
280
|
this.singleSelect = singleSelect;
|
|
205
281
|
this.multiSelect = multiSelect;
|
|
206
282
|
this.datepicker = datepicker;
|
|
@@ -208,16 +284,32 @@ export class ToolbarComponent {
|
|
|
208
284
|
this.singleSelectdatepicker = singleSelectdatepicker;
|
|
209
285
|
this.trafficdatepicker = trafficdatepicker;
|
|
210
286
|
this.traxdatepicker = traxdatepicker;
|
|
287
|
+
this.traxwithoutdatepicker = traxwithoutdatepicker;
|
|
288
|
+
this.storesSingle = storesSingle;
|
|
289
|
+
this.nobWithoutClient = nobWithoutClient;
|
|
290
|
+
this.merticsHeader = merticsHeader;
|
|
291
|
+
}
|
|
292
|
+
getUserInfo(client) {
|
|
293
|
+
let obj = {
|
|
294
|
+
clientId: client ? client : ''
|
|
295
|
+
};
|
|
296
|
+
if (client) {
|
|
297
|
+
this.auth.getHeaderUsers(obj).subscribe({
|
|
298
|
+
next: (e) => {
|
|
299
|
+
localStorage.setItem("usersEmail-info", JSON.stringify(e?.data?.userEmailData || []));
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
}
|
|
211
303
|
}
|
|
212
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
213
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.
|
|
304
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToolbarComponent, deps: [{ token: i1.LayoutService }, { token: i2.Router }, { token: i2.ActivatedRoute }, { token: i1.GlobalStateService }, { token: i3.AuthService }], target: i0.ɵɵFactoryTarget.Component });
|
|
305
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ToolbarComponent, selector: "lib-toolbar", inputs: { currentLayoutType: "currentLayoutType", appToolbarLayout: "appToolbarLayout" }, ngImport: i0, template: "<!--begin::Toolbar container-->\r\n<div id=\"kt_app_toolbar_container\" class=\"app-container\" [ngClass]=\"appToolbarContainerCSSClass\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango' || (gs.userAccess | async)?.userType === 'client' || (gs.userAccess | async)?.userType === 'lead'\" >\r\n <ng-container *ngIf=\"showPageTitle()\">\r\n <lib-page-title [appPageTitleDirection]=\"appPageTitleDirection\" [appPageTitleBreadcrumb]=\"appPageTitleBreadcrumb\"\r\n [appPageTitleDescription]=\"appPageTitleDescription\" class=\"page-title d-flex flex-wrap me-3\"\r\n [ngClass]=\"{'flex-column justify-content-center': appPageTitleDirection === 'column', 'align-items-center': appPageTitleDirection !== 'column', appPageTitleCSSClass}\">\r\n </lib-page-title>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiSelect && users.userType ==='tango'\">\r\n <lib-classic class=\"d-flex align-items-center gap-2 gap-lg-3\"></lib-classic>\r\n </ng-container>\r\n <ng-container *ngIf=\"singleSelect && users.userType ==='tango'\">\r\n <lib-client-settings class=\"d-flex align-items-center me-5\"></lib-client-settings>\r\n </ng-container>\r\n <ng-container *ngIf=\"datepicker && (users.userType ==='client' || users.userType ==='tango')\">\r\n <lib-datepicker class=\"d-flex align-items-center me-5\"></lib-datepicker>\r\n </ng-container>\r\n <ng-container *ngIf=\"singleSelectdatepicker && users.userType ==='tango'\">\r\n <lib-date-single-select class=\"d-flex align-items-center me-5\"></lib-date-single-select>\r\n </ng-container>\r\n <ng-container *ngIf=\"singleStore\">\r\n <lib-single-store class=\"d-flex align-items-center me-5\"></lib-single-store>\r\n </ng-container>\r\n <ng-container *ngIf=\"trafficdatepicker\">\r\n <lib-traffic-header class=\"d-flex align-items-center me-5\"></lib-traffic-header>\r\n </ng-container>\r\n <ng-container *ngIf=\"traxdatepicker\">\r\n <lib-trax-header class=\"d-flex align-items-center me-5\"></lib-trax-header>\r\n </ng-container>\r\n <ng-container *ngIf=\"traxwithoutdatepicker\">\r\n <lib-trax-withoutdate class=\"d-flex align-items-center me-5\"></lib-trax-withoutdate>\r\n </ng-container>\r\n <ng-container *ngIf=\"storesSingle\">\r\n <lib-single-storedate class=\"d-flex align-items-center me-5\"></lib-single-storedate>\r\n </ng-container>\r\n <ng-container *ngIf=\"nobWithoutClient\">\r\n <lib-traffic-nob class=\"d-flex align-items-center me-5\"></lib-traffic-nob>\r\n </ng-container>\r\n <ng-container *ngIf=\"merticsHeader\">\r\n <lib-metrics-header class=\"d-flex align-items-center me-5\"></lib-metrics-header>\r\n </ng-container>\r\n <!-- <ng-container *ngIf=\"appToolbarLayout === 'extended'\">\r\n <lib-extended class=\"d-flex align-items-center flex-shrink-0 me-5\"></lib-extended>\r\n </ng-container>\r\n <ng-container *ngIf=\"appToolbarLayout === 'reports'\">\r\n <lib-reports class=\"d-flex align-items-center overflow-auto\" [appPageTitleDisplay]=\"appPageTitleDisplay\">\r\n </lib-reports>\r\n </ng-container>\r\n <ng-container *ngIf=\"appToolbarLayout === 'saas'\">\r\n <lib-saas class=\"d-flex align-items-center gap-2\" [appPageTitleDisplay]=\"appPageTitleDisplay\"></lib-saas>\r\n </ng-container> -->\r\n</ng-container>\r\n</div>\r\n<!--end::Toolbar container-->\r\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PageTitleComponent, selector: "lib-page-title", inputs: ["appPageTitleDirection", "appPageTitleBreadcrumb", "appPageTitleDescription"] }, { kind: "component", type: i6.ClassicComponent, selector: "lib-classic" }, { kind: "component", type: i7.ClientSettingsComponent, selector: "lib-client-settings" }, { kind: "component", type: i8.DatepickerComponent, selector: "lib-datepicker" }, { kind: "component", type: i9.DateSingleSelectComponent, selector: "lib-date-single-select" }, { kind: "component", type: i10.SingleStoreComponent, selector: "lib-single-store", inputs: ["urlString"] }, { kind: "component", type: i11.TrafficHeaderComponent, selector: "lib-traffic-header" }, { kind: "component", type: i12.TraxHeaderComponent, selector: "lib-trax-header" }, { kind: "component", type: i13.SingleStoredateComponent, selector: "lib-single-storedate" }, { kind: "component", type: i14.TraxWithoutdateComponent, selector: "lib-trax-withoutdate" }, { kind: "component", type: i15.TrafficNobComponent, selector: "lib-traffic-nob" }, { kind: "component", type: i16.MetricsHeaderComponent, selector: "lib-metrics-header" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
|
|
214
306
|
}
|
|
215
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
307
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToolbarComponent, decorators: [{
|
|
216
308
|
type: Component,
|
|
217
|
-
args: [{ selector: "lib-toolbar", template: "<!--begin::Toolbar container-->\r\n<div id=\"kt_app_toolbar_container\" class=\"app-container\" [ngClass]=\"appToolbarContainerCSSClass\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango' || (gs.userAccess | async)?.userType === 'client' || (gs.userAccess | async)?.userType === 'lead'\" >\r\n <ng-container *ngIf=\"showPageTitle()\">\r\n <lib-page-title [appPageTitleDirection]=\"appPageTitleDirection\" [appPageTitleBreadcrumb]=\"appPageTitleBreadcrumb\"\r\n [appPageTitleDescription]=\"appPageTitleDescription\" class=\"page-title d-flex flex-wrap me-3\"\r\n [ngClass]=\"{'flex-column justify-content-center': appPageTitleDirection === 'column', 'align-items-center': appPageTitleDirection !== 'column', appPageTitleCSSClass}\">\r\n </lib-page-title>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiSelect && users.userType ==='tango'\">\r\n <lib-classic class=\"d-flex align-items-center gap-2 gap-lg-3\"></lib-classic>\r\n </ng-container>\r\n <ng-container *ngIf=\"singleSelect && users.userType ==='tango'\">\r\n <lib-client-settings class=\"d-flex align-items-center me-5\"></lib-client-settings>\r\n </ng-container>\r\n
|
|
218
|
-
}], ctorParameters: () => [{ type: i1.LayoutService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i1.GlobalStateService }], propDecorators: { currentLayoutType: [{
|
|
309
|
+
args: [{ selector: "lib-toolbar", template: "<!--begin::Toolbar container-->\r\n<div id=\"kt_app_toolbar_container\" class=\"app-container\" [ngClass]=\"appToolbarContainerCSSClass\">\r\n <ng-container *ngIf=\"(gs.userAccess | async)?.userType === 'tango' || (gs.userAccess | async)?.userType === 'client' || (gs.userAccess | async)?.userType === 'lead'\" >\r\n <ng-container *ngIf=\"showPageTitle()\">\r\n <lib-page-title [appPageTitleDirection]=\"appPageTitleDirection\" [appPageTitleBreadcrumb]=\"appPageTitleBreadcrumb\"\r\n [appPageTitleDescription]=\"appPageTitleDescription\" class=\"page-title d-flex flex-wrap me-3\"\r\n [ngClass]=\"{'flex-column justify-content-center': appPageTitleDirection === 'column', 'align-items-center': appPageTitleDirection !== 'column', appPageTitleCSSClass}\">\r\n </lib-page-title>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"multiSelect && users.userType ==='tango'\">\r\n <lib-classic class=\"d-flex align-items-center gap-2 gap-lg-3\"></lib-classic>\r\n </ng-container>\r\n <ng-container *ngIf=\"singleSelect && users.userType ==='tango'\">\r\n <lib-client-settings class=\"d-flex align-items-center me-5\"></lib-client-settings>\r\n </ng-container>\r\n <ng-container *ngIf=\"datepicker && (users.userType ==='client' || users.userType ==='tango')\">\r\n <lib-datepicker class=\"d-flex align-items-center me-5\"></lib-datepicker>\r\n </ng-container>\r\n <ng-container *ngIf=\"singleSelectdatepicker && users.userType ==='tango'\">\r\n <lib-date-single-select class=\"d-flex align-items-center me-5\"></lib-date-single-select>\r\n </ng-container>\r\n <ng-container *ngIf=\"singleStore\">\r\n <lib-single-store class=\"d-flex align-items-center me-5\"></lib-single-store>\r\n </ng-container>\r\n <ng-container *ngIf=\"trafficdatepicker\">\r\n <lib-traffic-header class=\"d-flex align-items-center me-5\"></lib-traffic-header>\r\n </ng-container>\r\n <ng-container *ngIf=\"traxdatepicker\">\r\n <lib-trax-header class=\"d-flex align-items-center me-5\"></lib-trax-header>\r\n </ng-container>\r\n <ng-container *ngIf=\"traxwithoutdatepicker\">\r\n <lib-trax-withoutdate class=\"d-flex align-items-center me-5\"></lib-trax-withoutdate>\r\n </ng-container>\r\n <ng-container *ngIf=\"storesSingle\">\r\n <lib-single-storedate class=\"d-flex align-items-center me-5\"></lib-single-storedate>\r\n </ng-container>\r\n <ng-container *ngIf=\"nobWithoutClient\">\r\n <lib-traffic-nob class=\"d-flex align-items-center me-5\"></lib-traffic-nob>\r\n </ng-container>\r\n <ng-container *ngIf=\"merticsHeader\">\r\n <lib-metrics-header class=\"d-flex align-items-center me-5\"></lib-metrics-header>\r\n </ng-container>\r\n <!-- <ng-container *ngIf=\"appToolbarLayout === 'extended'\">\r\n <lib-extended class=\"d-flex align-items-center flex-shrink-0 me-5\"></lib-extended>\r\n </ng-container>\r\n <ng-container *ngIf=\"appToolbarLayout === 'reports'\">\r\n <lib-reports class=\"d-flex align-items-center overflow-auto\" [appPageTitleDisplay]=\"appPageTitleDisplay\">\r\n </lib-reports>\r\n </ng-container>\r\n <ng-container *ngIf=\"appToolbarLayout === 'saas'\">\r\n <lib-saas class=\"d-flex align-items-center gap-2\" [appPageTitleDisplay]=\"appPageTitleDisplay\"></lib-saas>\r\n </ng-container> -->\r\n</ng-container>\r\n</div>\r\n<!--end::Toolbar container-->\r\n" }]
|
|
310
|
+
}], ctorParameters: () => [{ type: i1.LayoutService }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i1.GlobalStateService }, { type: i3.AuthService }], propDecorators: { currentLayoutType: [{
|
|
219
311
|
type: Input
|
|
220
312
|
}], appToolbarLayout: [{
|
|
221
313
|
type: Input
|
|
222
314
|
}] } });
|
|
223
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hcHAtc2hhcmVkL3NyYy9saWIvbW9kdWxlcy9sYXlvdXQvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFwcC1zaGFyZWQvc3JjL2xpYi9tb2R1bGVzL2xheW91dC90b29sYmFyL3Rvb2xiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7O0FBZXBFLE1BQU0sT0FBTyxnQkFBZ0I7SUE0Q2pCO0lBQ0E7SUFDQTtJQUNEO0lBOUNELFdBQVcsR0FBbUIsRUFBRSxDQUFDO0lBRXpDLGVBQWU7SUFDTixpQkFBaUIsQ0FBb0I7SUFDckMsZ0JBQWdCLENBS2Q7SUFFWCxVQUFVO0lBQ1YsaUJBQWlCLENBQVU7SUFDM0IsbUJBQW1CLENBQW9CO0lBQ3ZDLDJCQUEyQixHQUFXLEVBQUUsQ0FBQztJQUN6QyxzQkFBc0IsQ0FBVTtJQUNoQyxxQkFBcUIsQ0FBVTtJQUMvQixtQkFBbUIsQ0FBVTtJQUU3QixhQUFhO0lBQ2IscUJBQXFCLEdBQVcsRUFBRSxDQUFDO0lBQ25DLG9CQUFvQixHQUFXLEVBQUUsQ0FBQztJQUNsQyxzQkFBc0IsQ0FBVTtJQUNoQyx1QkFBdUIsQ0FBVTtJQUNqQyxVQUFVLENBQU07SUFDaEIsWUFBWSxDQUFVO0lBQ3RCLFdBQVcsQ0FBVTtJQUNyQixVQUFVLENBQVU7SUFDcEIsc0JBQXNCLENBQVU7SUFDaEMsV0FBVyxDQUFVO0lBQ3JCLFdBQVcsQ0FBTTtJQUNqQixPQUFPLENBQU07SUFDYixLQUFLLENBQU07SUFDWCxlQUFlLEdBQVE7UUFDckIsTUFBTSxFQUFFLElBQUk7UUFDWixPQUFP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LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgd2luZG93IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtcclxuICBHbG9iYWxTdGF0ZVNlcnZpY2UsXHJcbiAgTGF5b3V0U2VydmljZSxcclxuICBQYWdlSW5mb1NlcnZpY2UsXHJcbn0gZnJvbSBcInRhbmdvLWFwcC11aS1nbG9iYWxcIjtcclxuaW1wb3J0IHsgSUxheW91dCwgTGF5b3V0VHlwZSB9IGZyb20gXCJ0YW5nby1hcHAtdWktZ2xvYmFsXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJsaWItdG9vbGJhclwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vdG9vbGJhci5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi90b29sYmFyLmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9vbGJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIHVuc3Vic2NyaWJlOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICAvLyBQdWJsaWMgcHJvcHNcclxuICBASW5wdXQoKSBjdXJyZW50TGF5b3V0VHlwZTogTGF5b3V0VHlwZSB8IG51bGw7XHJcbiAgQElucHV0KCkgYXBwVG9vbGJhckxheW91dDpcclxuICAgIHwgXCJjbGFzc2ljXCJcclxuICAgIHwgXCJhY2NvdW50aW5nXCJcclxuICAgIHwgXCJleHRlbmRlZFwiXHJcbiAgICB8IFwicmVwb3J0c1wiXHJcbiAgICB8IFwic2Fhc1wiO1xyXG5cclxuICAvLyB0b29sYmFyXHJcbiAgYXBwVG9vbGJhckRpc3BsYXk6IGJvb2xlYW47XHJcbiAgYXBwVG9vbGJhckNvbnRhaW5lcjogXCJmaXhlZFwiIHwgXCJmbHVpZFwiO1xyXG4gIGFwcFRvb2xiYXJDb250YWluZXJDU1NDbGFzczogc3RyaW5nID0gXCJcIjtcclxuICBhcHBUb29sYmFyRml4ZWREZXNrdG9wOiBib29sZWFuO1xyXG4gIGFwcFRvb2xiYXJGaXhlZE1vYmlsZTogYm9vbGVhbjtcclxuICBhcHBQYWdlVGl0bGVEaXNwbGF5OiBib29sZWFuO1xyXG5cclxuICAvLyBwYWdlIHRpdGxlXHJcbiAgYXBwUGFnZVRpdGxlRGlyZWN0aW9uOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGFwcFBhZ2VUaXRsZUNTU0NsYXNzOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGFwcFBhZ2VUaXRsZUJyZWFkY3J1bWI6IGJvb2xlYW47XHJcbiAgYXBwUGFnZVRpdGxlRGVzY3JpcHRpb246IGJvb2xlYW47XHJcbiAgcXVlclBhcmFtczogYW55O1xyXG4gIHNpbmdsZVNlbGVjdDogYm9vbGVhbjtcclxuICBtdWx0aVNlbGVjdDogYm9vbGVhbjtcclxuICBkYXRlcGlja2VyOiBib29sZWFuO1xyXG4gIHNpbmdsZVNlbGVjdGRhdGVwaWNrZXI6IGJvb2xlYW47XHJcbiAgc2luZ2xlU3RvcmU6IGJvb2xlYW47XHJcbiAgaGVhZGVydmFsdWU6IGFueTtcclxuICBzdG9yZUlkOiBhbnk7XHJcbiAgdXNlcnM6IGFueTtcclxuICBzZWxlY3RlZEZpbHRlcnM6IGFueSA9IHtcclxuICAgIGNsaWVudDogbnVsbCxcclxuICAgIGNsaWVudHM6IFtdLFxyXG4gICAgc3RvcmU6IG51bGwsXHJcbiAgICBzdG9yZXM6IFtdLFxyXG4gICAgZGF0ZTogbnVsbCxcclxuICB9O1xyXG4gIHRyYWZmaWNkYXRlcGlja2VyOiBib29sZWFuO1xyXG4gIHRyYXhkYXRlcGlja2VyOiBib29sZWFuO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBsYXlvdXQ6IExheW91dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwdWJsaWMgZ3M6IEdsb2JhbFN0YXRlU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoXCJ1c2VyLWluZm9cIiBpbiBsb2NhbFN0b3JhZ2UpIHtcclxuICAgICAgY29uc3QgdXNlckRhdGE6IGFueSA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2VyLWluZm9cIikgfHwgXCJ7fVwiXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMudXNlcnMgPSB1c2VyRGF0YTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNob3dQYWdlVGl0bGUoKTtcclxuICAgIGNvbnN0IHN1YnNjciA9IHRoaXMubGF5b3V0LmxheW91dENvbmZpZ1N1YmplY3RcclxuICAgICAgLmFzT2JzZXJ2YWJsZSgpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGNvbmZpZzogSUxheW91dCkgPT4ge1xyXG4gICAgICAgIHRoaXMudXBkYXRlUHJvcHMoY29uZmlnKTtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLnB1c2goc3Vic2NyKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVByb3BzKGNvbmZpZzogSUxheW91dCkge1xyXG4gICAgdGhpcy5hcHBUb29sYmFyRGlzcGxheSA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgIFwiYXBwLnRvb2xiYXIuZGlzcGxheVwiLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuICAgIGlmICghdGhpcy5hcHBUb29sYmFyRGlzcGxheSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hcHBQYWdlVGl0bGVEaXNwbGF5ID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgXCJhcHAucGFnZVRpdGxlLmRpc3BsYXlcIixcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcbiAgICB0aGlzLmFwcFRvb2xiYXJDb250YWluZXIgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICBcImFwcC50b29sYmFyLmNvbnRhaW5lclwiLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgXCJmbHVpZFwiIHwgXCJmaXhlZFwiO1xyXG4gICAgdGhpcy5hcHBUb29sYmFyQ29udGFpbmVyQ1NTQ2xhc3MgPVxyXG4gICAgICB0aGlzLmFwcFRvb2xiYXJDb250YWluZXIgPT09IFwiZml4ZWRcIlxyXG4gICAgICAgID8gXCJjb250YWluZXIteHhsXCJcclxuICAgICAgICA6IFwiY29udGFpbmVyLWZsdWlkXCI7XHJcbiAgICBjb25zdCBjb250YWluZXJDbGFzcyA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgIFwiYXBwLnRvb2xiYXIuY29udGFpbmVyQ2xhc3NcIixcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIHN0cmluZztcclxuICAgIGlmIChjb250YWluZXJDbGFzcykge1xyXG4gICAgICB0aGlzLmFwcFRvb2xiYXJDb250YWluZXJDU1NDbGFzcyArPSBgICR7Y29udGFpbmVyQ2xhc3N9YDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFwcFRvb2xiYXJGaXhlZERlc2t0b3AgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICBcImFwcC50b29sYmFyLmZpeGVkLmRlc2t0b3BcIixcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5hcHBUb29sYmFyRml4ZWREZXNrdG9wKSB7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuc2V0QXR0cmlidXRlKFwiZGF0YS1rdC1hcHAtdG9vbGJhci1maXhlZFwiLCBcInRydWVcIik7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hcHBUb29sYmFyRml4ZWRNb2JpbGUgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICBcImFwcC50b29sYmFyLmZpeGVkLm1vYmlsZVwiLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuICAgIGlmICh0aGlzLmFwcFRvb2xiYXJGaXhlZE1vYmlsZSkge1xyXG4gICAgICBkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZShcImRhdGEta3QtYXBwLXRvb2xiYXItZml4ZWQtbW9iaWxlXCIsIFwidHJ1ZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyB0b29sYmFyXHJcbiAgICB0aGlzLmFwcFBhZ2VUaXRsZURpcmVjdGlvbiA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgIFwiYXBwLnBhZ2VUaXRsZS5kaXJlY3Rpb25cIixcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIHN0cmluZztcclxuICAgIHRoaXMuYXBwUGFnZVRpdGxlQ1NTQ2xhc3MgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICBcImFwcC5wYWdlVGl0bGUuY2xhc3NcIixcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIHN0cmluZztcclxuICAgIHRoaXMuYXBwUGFnZVRpdGxlQnJlYWRjcnVtYiA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgIFwiYXBwLnBhZ2VUaXRsZS5icmVhZENydW1iXCIsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBib29sZWFuO1xyXG4gICAgdGhpcy5hcHBQYWdlVGl0bGVEZXNjcmlwdGlvbiA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgIFwiYXBwLnBhZ2VUaXRsZS5kZXNjcmlwdGlvblwiLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuXHJcbiAgICBkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZShcImRhdGEta3QtYXBwLXRvb2xiYXItZW5hYmxlZFwiLCBcInRydWVcIik7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUuZm9yRWFjaCgoc2IpID0+IHNiLnVuc3Vic2NyaWJlKCkpO1xyXG4gIH1cclxuXHJcbiAgc2hvd1BhZ2VUaXRsZSgpIHtcclxuICAgIGxldCBVUkw6IHN0cmluZyA9IFwiXCI7XHJcbiAgICBpZiAoXCJoZWFkZXItZmlsdGVyc1wiIGluIGxvY2FsU3RvcmFnZSkge1xyXG4gICAgICBjb25zdCBkYXRhOiBhbnkgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIikgfHwgXCJ7fVwiXHJcbiAgICAgICk7XHJcblxyXG4gICAgIGNvbnN0IHN0b3JlID0gIHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcCBhcyBhbnkgICAgICBcclxuICAgICAgdGhpcy5zdG9yZUlkID0gIGRhdGE/LnN0b3JlO1xyXG5cclxuICAgICAgaWYoc3RvcmU/LnBhcmFtcz8uWydzdG9yZUlkJ10pe1xyXG4gICAgICAgIHRoaXMuc3RvcmVJZCA9IHN0b3JlLnBhcmFtc1snc3RvcmVJZCddXHJcbiAgICAgICAgZGF0YS5zdG9yZSA9IHN0b3JlLnBhcmFtc1snc3RvcmVJZCddXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2hlYWRlci1maWx0ZXJzJywgSlNPTi5zdHJpbmdpZnkoZGF0YSkpXHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgY3VycmVudFVybCA9IHRoaXMucm91dGVyLnVybDtcclxuICAgICAgY29uc3QgdXBkYXRlZFVybCA9IGN1cnJlbnRVcmwucmVwbGFjZShcclxuICAgICAgICAvXFwvbWFuYWdlXFwvc3RvcmVzXFwvXFxkKy1cXGQrXFwvLyxcclxuICAgICAgICBgL21hbmFnZS9zdG9yZXMvYFxyXG4gICAgICApO1xyXG4gICAgICBVUkwgPSB1cGRhdGVkVXJsO1xyXG4gICAgICAvLyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbVVJMXSlcclxuICAgIH1cclxuICAgXHJcbiAgY29uc3QgdXJsID0gVVJMLnNwbGl0KFwiP1wiKVswXS5zcGxpdCgnLycpO1xyXG4gIGlmICh0aGlzLnVzZXJzPy51c2VyVHlwZSA9PT0gXCJ0YW5nb1wiKSB7XHJcbiAgICBpZiAodXJsWzJdID09IFwic2V0dGluZ3NcIiB8fCBVUkwgPT0gXCIvbWFuYWdlL3VzZXJzL2NsaWVudFwiICB8fFxyXG4gICAgVVJMID09IFwiL21hbmFnZS9zdG9yZXNcIiB8fCAgVVJMID09PSBcIi9tYW5hZ2Uvc3RvcmVzP3R5cGU9c3RvcmVzXCIgfHwgVVJMID09PSBcIi9tYW5hZ2Uvc3RvcmVzP3R5cGU9Y2x1c3RlcnNcIiB8fFxyXG4gICAgVVJMID09IFwiL21hbmFnZS9zdG9yZXMvYWRkaXRpb24tbWV0aG9kXCIgfHxcclxuICAgIFVSTCA9PSBcIi9tYW5hZ2Uvc3RvcmVzL2FkZC1zaW5nbGUtc3RvcmVcIiB8fCBVUkwgPT09IFwiL21hbmFnZS90cmF4L2dhbGxlcnlcIiApIHtcclxuICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXModHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgfSAgZWxzZSBpZiAodXJsWzNdID09IFwiZWRnZS1hcHBcIikge1xyXG4gICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSxmYWxzZSxmYWxzZSk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICBVUkwgPT0gYC9tYW5hZ2Uvc3RvcmVzL2luZnJhLXRpY2tldD9zdG9yZUlkPSR7dGhpcy5zdG9yZUlkfWAgfHwgIFVSTCA9PSBgL21hbmFnZS9zdG9yZXMvaW5mcmEtdGlja2V0P3N0b3JlSWQ9JHt0aGlzLnN0b3JlSWR9JnR5cGU9aW5mcmFgIHx8XHJcbiAgICAgIFVSTCA9PSBgL21hbmFnZS9zdG9yZXMvc2V0dGluZ3M/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH1gIHx8IFVSTCA9PSBgL21hbmFnZS9zdG9yZXMvaW5mcmEtdGlja2V0P3N0b3JlSWQ9JHt0aGlzLnN0b3JlSWR9JnR5cGU9ZGF0YU1pc21hdGNoYCB8fFxyXG4gICAgICBVUkwgPT0gYC9tYW5hZ2Uvc3RvcmVzL3pvbmVzP3N0b3JlSWQ9JHt0aGlzLnN0b3JlSWR9YCB8fFxyXG4gICAgICBVUkwgPT0gYC9tYW5hZ2Uvc3RvcmVzL2NhbWVyYXM/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH1gIHx8XHJcbiAgICAgIC8vIFVSTCA9PSBgL21hbmFnZS9zdG9yZXMvaW5mcmFzdHJ1Y3R1cmU/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH1gIHx8XHJcbiAgICAgIFVSTCA9PSBgL21hbmFnZS9zdG9yZXMvbWF0P3N0b3JlSWQ9JHt0aGlzLnN0b3JlSWR9YCB8fCBVUkwgPT0gYC9tYW5hZ2UvY29udHJvbGNlbnRlci9zdHJlYW0/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH1gXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgfSBlbHNlIGlmIChVUkwgPT0gXCIvcHJvZmlsZVwiIHx8IHVybFsyXT09PVwiZGF0YS1taXNtYXRjaFwiIHx8IHVybFsyXT09PVwiZW1wbG95ZWV0cmFpbmluZ1wiICBcclxuICAgICAgIHx8IFVSTCA9PSBcIi9tYW5hZ2UvYnJhbmRzXCIgfHwgVVJMID09IFwiL21hbmFnZS91c2Vycy90YW5nb1wiIHx8ICh1cmxbMV0gPT09XCJ0aWNrZXRzXCIgJiYgdXJsWzJdID09PSBcImF1ZGl0XCIpKSB7XHJcbiAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICB9IGVsc2UgaWYodXJsWzJdID09PSBcInRyYWZmaWNcIiB8fCB1cmxbMl0gPT09IFwiem9uZXNcIiB8fCBVUkwgPT0gXCIvbWFuYWdlL2FuYWx5c2UvcmVwb3J0c1wiKXtcclxuICAgICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSx0cnVlLGZhbHNlKTtcclxuICAgIH0gZWxzZSBpZih1cmxbMl0gPT0gJ3RyYXgnKXtcclxuICAgICAgaWYodXJsWzJdID09ICd0cmF4JyAmJiAodXJsLmluY2x1ZGVzKCdjcmVhdGVDaGVja2xpc3QnKSB8fCB1cmwuaW5jbHVkZXMoJ2NvbmZpZ3VyZScpKSkge1xyXG4gICAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmKHVybFsyXSA9PSAndHJheCcgJiYgdXJsLmluY2x1ZGVzKCdjaGVja2xpc3QnKSkge1xyXG4gICAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgICB9ICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLGZhbHNlLGZhbHNlLHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2V7XHJcbiAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLHRydWUsZmFsc2UsZmFsc2UpO1xyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICBpZiAodXJsWzNdID09IFwiZWRnZS1hcHBcIiB8fCBVUkwgPT0gXCIvbm90aWZpY2F0aW9ucy9hbGVydHNcIikge1xyXG4gICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICBVUkwgPT0gYC9tYW5hZ2Uvc3RvcmVzL2luZnJhLXRpY2tldD9zdG9yZUlkPSR7dGhpcy5zdG9yZUlkfWAgfHwgIFVSTCA9PSBgL21hbmFnZS9zdG9yZXMvaW5mcmEtdGlja2V0P3N0b3JlSWQ9JHt0aGlzLnN0b3JlSWR9JnR5cGU9aW5mcmFgIHx8XHJcbiAgICAgIFVSTCA9PSBgL21hbmFnZS9zdG9yZXMvc2V0dGluZ3M/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH1gIHx8IFVSTCA9PSBgL21hbmFnZS9zdG9yZXMvaW5mcmEtdGlja2V0P3N0b3JlSWQ9JHt0aGlzLnN0b3JlSWR9JnR5cGU9ZGF0YU1pc21hdGNoYCB8fFxyXG4gICAgICBVUkwgPT0gYC9tYW5hZ2Uvc3RvcmVzL3pvbmVzP3N0b3JlSWQ9JHt0aGlzLnN0b3JlSWR9YCB8fFxyXG4gICAgICBVUkwgPT0gYC9tYW5hZ2Uvc3RvcmVzL2NhbWVyYXM/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH1gIHx8XHJcbiAgICAgIC8vIFVSTCA9PSBgL21hbmFnZS9zdG9yZXMvaW5mcmFzdHJ1Y3R1cmU/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH1gIHx8XHJcbiAgICAgIFVSTCA9PSBgL21hbmFnZS9zdG9yZXMvbWF0P3N0b3JlSWQ9JHt0aGlzLnN0b3JlSWR9YCB8fCBVUkwgPT0gYC9tYW5hZ2UvY29udHJvbGNlbnRlci9zdHJlYW0/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH1gXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgfSBlbHNlIGlmIChVUkwgPT0gXCIvcHJvZmlsZVwiIHx8IFVSTCA9PSBcIi9tYW5hZ2UvdXNlcnMvY2xpZW50XCIgfHwgVVJMID09IFwiL21hbmFnZS91c2Vycy90YW5nb1wiIHx8XHJcbiAgICBVUkwgPT0gXCIvbWFuYWdlL3N0b3Jlc1wiIHx8ICBVUkwgPT09IFwiL21hbmFnZS9zdG9yZXM/dHlwZT1zdG9yZXNcIiB8fCBVUkwgPT09IFwiL21hbmFnZS9zdG9yZXM/dHlwZT1ncm91cHNcIiB8fCB1cmxbMl0gPT0gXCJzZXR0aW5nc1wiIHx8IFxyXG4gICAgVVJMID09IFwiL21hbmFnZS9zdG9yZXMvYWRkaXRpb24tbWV0aG9kXCIgfHxcclxuICAgIFVSTCA9PSBcIi9tYW5hZ2Uvc3RvcmVzL2FkZC1zaW5nbGUtc3RvcmVcIiB8fCB1cmxbMl09PT1cImRhdGEtbWlzbWF0Y2hcIiB8fCB1cmxbMl09PT1cImVtcGxveWVldHJhaW5pbmdcIiBcclxuICAgICB8fCBVUkwgPT0gXCIvbWFuYWdlL3VzZXJzL3RhbmdvXCIgfHwgKHVybFsyXT09PSdjb250cm9sY2VudGVyJyAmJiB1cmxbM10gIT09J3N0cmVhbScpKSB7XHJcbiAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICB9IGVsc2UgaWYodXJsWzJdID09PSBcInRyYWZmaWNcIiB8fCB1cmxbMl0gPT09IFwiem9uZXNcIiB8fCBVUkwgPT0gXCIvbWFuYWdlL2FuYWx5c2UvcmVwb3J0c1wiKXtcclxuICAgICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSx0cnVlLGZhbHNlKTtcclxuICAgIH1lbHNlIGlmKHVybFsyXSA9PSAndHJheCcpe1xyXG4gICAgICBpZih1cmxbMl0gPT0gJ3RyYXgnICYmICh1cmwuaW5jbHVkZXMoJ2NyZWF0ZUNoZWNrbGlzdCcpIHx8IHVybC5pbmNsdWRlcygnY29uZmlndXJlJykpKSB7XHJcbiAgICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYodXJsWzJdID09ICd0cmF4JyAmJiB1cmwuaW5jbHVkZXMoJ2NoZWNrbGlzdCcpKSB7XHJcbiAgICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXModHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICAgIH0gICBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsZmFsc2UsdHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcbiAgY29uc3Qgdmlld3NXaXRoUGFnZVRpdGxlcyA9IFtcImNsYXNzaWNcIiwgXCJyZXBvcnRzXCIsIFwic2Fhc1wiXTtcclxuICByZXR1cm4gKFxyXG4gICAgdGhpcy5hcHBQYWdlVGl0bGVEaXNwbGF5ICYmXHJcbiAgICB2aWV3c1dpdGhQYWdlVGl0bGVzLnNvbWUoKHQpID0+IHQgPT09IHRoaXMuYXBwVG9vbGJhckxheW91dClcclxuICApO1xyXG59XHJcblxyXG5zZXRVSVByb3BlcnRpZXMoXHJcbiAgc2luZ2xlU2VsZWN0OiBib29sZWFuLFxyXG4gIG11bHRpU2VsZWN0OiBib29sZWFuLFxyXG4gIGRhdGVwaWNrZXI6IGJvb2xlYW4sXHJcbiAgc2luZ2xlU3RvcmU6IGJvb2xlYW4sXHJcbiAgc2luZ2xlU2VsZWN0ZGF0ZXBpY2tlcjogYm9vbGVhbixcclxuICB0cmFmZmljZGF0ZXBpY2tlcjpib29sZWFuLFxyXG4gIHRyYXhkYXRlcGlja2VyOmJvb2xlYW5cclxuKTogdm9pZCB7XHJcbiAgdGhpcy5zaW5nbGVTZWxlY3QgPSBzaW5nbGVTZWxlY3Q7XHJcbiAgdGhpcy5tdWx0aVNlbGVjdCA9IG11bHRpU2VsZWN0O1xyXG4gIHRoaXMuZGF0ZXBpY2tlciA9IGRhdGVwaWNrZXI7XHJcbiAgdGhpcy5zaW5nbGVTdG9yZSA9IHNpbmdsZVN0b3JlO1xyXG4gIHRoaXMuc2luZ2xlU2VsZWN0ZGF0ZXBpY2tlciA9IHNpbmdsZVNlbGVjdGRhdGVwaWNrZXI7XHJcbiAgdGhpcy50cmFmZmljZGF0ZXBpY2tlciA9IHRyYWZmaWNkYXRlcGlja2VyO1xyXG4gIHRoaXMudHJheGRhdGVwaWNrZXIgPSB0cmF4ZGF0ZXBpY2tlcjtcclxufVxyXG59XHJcbiIsIjwhLS1iZWdpbjo6VG9vbGJhciBjb250YWluZXItLT5cclxuPGRpdiBpZD1cImt0X2FwcF90b29sYmFyX2NvbnRhaW5lclwiIGNsYXNzPVwiYXBwLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cImFwcFRvb2xiYXJDb250YWluZXJDU1NDbGFzc1wiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICd0YW5nbycgfHwgKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAnY2xpZW50JyB8fCAoZ3MudXNlckFjY2VzcyB8IGFzeW5jKT8udXNlclR5cGUgPT09ICdsZWFkJ1wiICA+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dQYWdlVGl0bGUoKVwiPlxyXG4gICAgPGxpYi1wYWdlLXRpdGxlIFthcHBQYWdlVGl0bGVEaXJlY3Rpb25dPVwiYXBwUGFnZVRpdGxlRGlyZWN0aW9uXCIgW2FwcFBhZ2VUaXRsZUJyZWFkY3J1bWJdPVwiYXBwUGFnZVRpdGxlQnJlYWRjcnVtYlwiXHJcbiAgICAgIFthcHBQYWdlVGl0bGVEZXNjcmlwdGlvbl09XCJhcHBQYWdlVGl0bGVEZXNjcmlwdGlvblwiIGNsYXNzPVwicGFnZS10aXRsZSBkLWZsZXggZmxleC13cmFwIG1lLTNcIlxyXG4gICAgICBbbmdDbGFzc109XCJ7J2ZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXInOiBhcHBQYWdlVGl0bGVEaXJlY3Rpb24gPT09ICdjb2x1bW4nLCAnYWxpZ24taXRlbXMtY2VudGVyJzogYXBwUGFnZVRpdGxlRGlyZWN0aW9uICE9PSAnY29sdW1uJywgYXBwUGFnZVRpdGxlQ1NTQ2xhc3N9XCI+XHJcbiAgICA8L2xpYi1wYWdlLXRpdGxlPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibXVsdGlTZWxlY3QgJiYgdXNlcnMudXNlclR5cGUgPT09J3RhbmdvJ1wiPlxyXG4gICAgPGxpYi1jbGFzc2ljIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBnYXAtbGctM1wiPjwvbGliLWNsYXNzaWM+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNpbmdsZVNlbGVjdCAmJiB1c2Vycy51c2VyVHlwZSA9PT0ndGFuZ28nXCI+XHJcbiAgICA8bGliLWNsaWVudC1zZXR0aW5ncyBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWUtNVwiPjwvbGliLWNsaWVudC1zZXR0aW5ncz5cclxuICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0ZXBpY2tlciAmJiB1c2Vycy51c2VyVHlwZSA9PT0nY2xpZW50J1wiPlxyXG4gICAgPGxpYi1kYXRlcGlja2VyIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtZS01XCI+PC9saWItZGF0ZXBpY2tlcj5cclxuICAgPC9uZy1jb250YWluZXI+XHJcbiAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaW5nbGVTZWxlY3RkYXRlcGlja2VyICYmIHVzZXJzLnVzZXJUeXBlID09PSd0YW5nbydcIj5cclxuICAgIDxsaWItZGF0ZS1zaW5nbGUtc2VsZWN0IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtZS01XCI+PC9saWItZGF0ZS1zaW5nbGUtc2VsZWN0PlxyXG4gICA8L25nLWNvbnRhaW5lcj5cclxuICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNpbmdsZVN0b3JlXCI+XHJcbiAgICA8bGliLXNpbmdsZS1zdG9yZSBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWUtNVwiPjwvbGliLXNpbmdsZS1zdG9yZT5cclxuICAgPC9uZy1jb250YWluZXI+XHJcbiAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0cmFmZmljZGF0ZXBpY2tlclwiPlxyXG4gICAgPGxpYi10cmFmZmljLWhlYWRlciBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWUtNVwiPjwvbGliLXRyYWZmaWMtaGVhZGVyPlxyXG4gICA8L25nLWNvbnRhaW5lcj5cclxuICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRyYXhkYXRlcGlja2VyXCI+XHJcbiAgICA8bGliLXRyYXgtaGVhZGVyIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtZS01XCI+PC9saWItdHJheC1oZWFkZXI+XHJcbiAgIDwvbmctY29udGFpbmVyPlxyXG4gPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwVG9vbGJhckxheW91dCA9PT0gJ2V4dGVuZGVkJ1wiPlxyXG4gICAgPGxpYi1leHRlbmRlZCBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1zaHJpbmstMCBtZS01XCI+PC9saWItZXh0ZW5kZWQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFwcFRvb2xiYXJMYXlvdXQgPT09ICdyZXBvcnRzJ1wiPlxyXG4gICAgPGxpYi1yZXBvcnRzIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBvdmVyZmxvdy1hdXRvXCIgW2FwcFBhZ2VUaXRsZURpc3BsYXldPVwiYXBwUGFnZVRpdGxlRGlzcGxheVwiPlxyXG4gICAgPC9saWItcmVwb3J0cz5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwVG9vbGJhckxheW91dCA9PT0gJ3NhYXMnXCI+XHJcbiAgICA8bGliLXNhYXMgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCIgW2FwcFBhZ2VUaXRsZURpc3BsYXldPVwiYXBwUGFnZVRpdGxlRGlzcGxheVwiPjwvbGliLXNhYXM+XHJcbiAgPC9uZy1jb250YWluZXI+IC0tPlxyXG48L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcbjwhLS1lbmQ6OlRvb2xiYXIgY29udGFpbmVyLS0+XHJcbiJdfQ==
|
|
315
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hcHAtc2hhcmVkL3NyYy9saWIvbW9kdWxlcy9sYXlvdXQvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFwcC1zaGFyZWQvc3JjL2xpYi9tb2R1bGVzL2xheW91dC90b29sYmFyL3Rvb2xiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxPQUFPLEVBQXdCLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFjckQsTUFBTSxPQUFPLGdCQUFnQjtJQWlEakI7SUFDQTtJQUNBO0lBQ0Q7SUFDQztJQXBERixXQUFXLEdBQW1CLEVBQUUsQ0FBQztJQUV6QyxlQUFlO0lBQ04saUJBQWlCLENBQW9CO0lBQ3JDLGdCQUFnQixDQUtkO0lBRVgsVUFBVTtJQUNWLGlCQUFpQixDQUFVO0lBQzNCLG1CQUFtQixDQUFvQjtJQUN2QywyQkFBMkIsR0FBVyxFQUFFLENBQUM7SUFDekMsc0JBQXNCLENBQVU7SUFDaEMscUJBQXFCLENBQVU7SUFDL0IsbUJBQW1CLENBQVU7SUFFN0IsYUFBYTtJQUNiLHFCQUFxQixHQUFXLEVBQUUsQ0FBQztJQUNuQyxvQkFBb0IsR0FBVyxFQUFFLENBQUM7SUFDbEMsc0JBQXNCLENBQVU7SUFDaEMsdUJBQXVCLENBQVU7SUFDakMsVUFBVSxDQUFNO0lBQ2hCLFlBQVksQ0FBVTtJQUN0QixXQUFXLENBQVU7SUFDckIsVUFBVSxDQUFVO0lBQ3BCLHNCQUFzQixDQUFVO0lBQ2hDLFdBQVcsQ0FBVTtJQUNyQixXQUFXLENBQU07SUFDakIsT0FBTyxDQUFNO0lBQ2IsS0FB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QUksRUFBRSxDQUFDLENBQzdDLENBQUM7Z0JBQ0osQ0FBQzthQUNGLENBQUMsQ0FBQTtTQUNIO0lBQ0gsQ0FBQzt3R0EzVVksZ0JBQWdCOzRGQUFoQixnQkFBZ0IsNklDaEI3Qix1eUdBd0RBOzs0RkR4Q2EsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGFBQWE7K0xBUWQsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB3aW5kb3cgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge1xyXG4gIEdsb2JhbFN0YXRlU2VydmljZSxcclxuICBMYXlvdXRTZXJ2aWNlLFxyXG4gIFBhZ2VJbmZvU2VydmljZSxcclxufSBmcm9tIFwidGFuZ28tYXBwLXVpLWdsb2JhbFwiO1xyXG5pbXBvcnQgeyBJTGF5b3V0LCBMYXlvdXRUeXBlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1nbG9iYWxcIjtcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvYXV0aC5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJsaWItdG9vbGJhclwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vdG9vbGJhci5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi90b29sYmFyLmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9vbGJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIHVuc3Vic2NyaWJlOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICAvLyBQdWJsaWMgcHJvcHNcclxuICBASW5wdXQoKSBjdXJyZW50TGF5b3V0VHlwZTogTGF5b3V0VHlwZSB8IG51bGw7XHJcbiAgQElucHV0KCkgYXBwVG9vbGJhckxheW91dDpcclxuICAgIHwgXCJjbGFzc2ljXCJcclxuICAgIHwgXCJhY2NvdW50aW5nXCJcclxuICAgIHwgXCJleHRlbmRlZFwiXHJcbiAgICB8IFwicmVwb3J0c1wiXHJcbiAgICB8IFwic2Fhc1wiO1xyXG5cclxuICAvLyB0b29sYmFyXHJcbiAgYXBwVG9vbGJhckRpc3BsYXk6IGJvb2xlYW47XHJcbiAgYXBwVG9vbGJhckNvbnRhaW5lcjogXCJmaXhlZFwiIHwgXCJmbHVpZFwiO1xyXG4gIGFwcFRvb2xiYXJDb250YWluZXJDU1NDbGFzczogc3RyaW5nID0gXCJcIjtcclxuICBhcHBUb29sYmFyRml4ZWREZXNrdG9wOiBib29sZWFuO1xyXG4gIGFwcFRvb2xiYXJGaXhlZE1vYmlsZTogYm9vbGVhbjtcclxuICBhcHBQYWdlVGl0bGVEaXNwbGF5OiBib29sZWFuO1xyXG5cclxuICAvLyBwYWdlIHRpdGxlXHJcbiAgYXBwUGFnZVRpdGxlRGlyZWN0aW9uOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGFwcFBhZ2VUaXRsZUNTU0NsYXNzOiBzdHJpbmcgPSBcIlwiO1xyXG4gIGFwcFBhZ2VUaXRsZUJyZWFkY3J1bWI6IGJvb2xlYW47XHJcbiAgYXBwUGFnZVRpdGxlRGVzY3JpcHRpb246IGJvb2xlYW47XHJcbiAgcXVlclBhcmFtczogYW55O1xyXG4gIHNpbmdsZVNlbGVjdDogYm9vbGVhbjtcclxuICBtdWx0aVNlbGVjdDogYm9vbGVhbjtcclxuICBkYXRlcGlja2VyOiBib29sZWFuO1xyXG4gIHNpbmdsZVNlbGVjdGRhdGVwaWNrZXI6IGJvb2xlYW47XHJcbiAgc2luZ2xlU3RvcmU6IGJvb2xlYW47XHJcbiAgaGVhZGVydmFsdWU6IGFueTtcclxuICBzdG9yZUlkOiBhbnk7XHJcbiAgdXNlcnM6IGFueTtcclxuICBzZWxlY3RlZEZpbHRlcnM6IGFueSA9IHtcclxuICAgIGNsaWVudDogbnVsbCxcclxuICAgIGNsaWVudHM6IFtdLFxyXG4gICAgc3RvcmU6IG51bGwsXHJcbiAgICBzdG9yZXM6IFtdLFxyXG4gICAgZGF0ZTogbnVsbCxcclxuICB9O1xyXG4gIHRyYWZmaWNkYXRlcGlja2VyOiBib29sZWFuO1xyXG4gIHRyYXhkYXRlcGlja2VyOiBib29sZWFuO1xyXG4gIHVybFN0cmluZzphbnk7XHJcbiAgdHJheHdpdGhvdXRkYXRlcGlja2VyOmJvb2xlYW47XHJcbiAgc3RvcmVzU2luZ2xlOmJvb2xlYW47XHJcbiAgbm9iV2l0aG91dENsaWVudDpib29sZWFuO1xyXG4gIG1lcnRpY3NIZWFkZXI6IGJvb2xlYW47XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGxheW91dDogTGF5b3V0U2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHB1YmxpYyBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoIDogQXV0aFNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKFwidXNlci1pbmZvXCIgaW4gbG9jYWxTdG9yYWdlKSB7XHJcbiAgICAgIGNvbnN0IHVzZXJEYXRhOiBhbnkgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidXNlci1pbmZvXCIpIHx8IFwie31cIlxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnVzZXJzID0gdXNlckRhdGE7XHJcbiAgICB9XHJcbiAgICBpZiAoXCJoZWFkZXItZmlsdGVyc1wiIGluIGxvY2FsU3RvcmFnZSkge1xyXG4gICAgICBjb25zdCBkYXRhOiBhbnkgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIikgfHwgXCJ7fVwiXHJcbiAgICAgICk7XHJcbiB0aGlzLmNsaWVudCA9IGRhdGE/LmNsaWVudDtcclxuICAgIH1cclxuICAgIHRoaXMuZ2V0VXNlckluZm8odGhpcy5jbGllbnQgPyB0aGlzLmNsaWVudCA6IHRoaXMudXNlcnMuY2xpZW50KVxyXG4gICAgdGhpcy5zaG93UGFnZVRpdGxlKCk7XHJcbiAgICBjb25zdCBzdWJzY3IgPSB0aGlzLmxheW91dC5sYXlvdXRDb25maWdTdWJqZWN0XHJcbiAgICAgIC5hc09ic2VydmFibGUoKVxyXG4gICAgICAuc3Vic2NyaWJlKChjb25maWc6IElMYXlvdXQpID0+IHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVByb3BzKGNvbmZpZyk7XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy51bnN1YnNjcmliZS5wdXNoKHN1YnNjcik7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVQcm9wcyhjb25maWc6IElMYXlvdXQpIHtcclxuICAgIHRoaXMuYXBwVG9vbGJhckRpc3BsYXkgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICBcImFwcC50b29sYmFyLmRpc3BsYXlcIixcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcbiAgICBpZiAoIXRoaXMuYXBwVG9vbGJhckRpc3BsYXkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXBwUGFnZVRpdGxlRGlzcGxheSA9IHRoaXMubGF5b3V0LmdldFByb3AoXHJcbiAgICAgIFwiYXBwLnBhZ2VUaXRsZS5kaXNwbGF5XCIsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBib29sZWFuO1xyXG4gICAgdGhpcy5hcHBUb29sYmFyQ29udGFpbmVyID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgXCJhcHAudG9vbGJhci5jb250YWluZXJcIixcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIFwiZmx1aWRcIiB8IFwiZml4ZWRcIjtcclxuICAgIHRoaXMuYXBwVG9vbGJhckNvbnRhaW5lckNTU0NsYXNzID1cclxuICAgICAgdGhpcy5hcHBUb29sYmFyQ29udGFpbmVyID09PSBcImZpeGVkXCJcclxuICAgICAgICA/IFwiY29udGFpbmVyLXh4bFwiXHJcbiAgICAgICAgOiBcImNvbnRhaW5lci1mbHVpZFwiO1xyXG4gICAgY29uc3QgY29udGFpbmVyQ2xhc3MgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICBcImFwcC50b29sYmFyLmNvbnRhaW5lckNsYXNzXCIsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBzdHJpbmc7XHJcbiAgICBpZiAoY29udGFpbmVyQ2xhc3MpIHtcclxuICAgICAgdGhpcy5hcHBUb29sYmFyQ29udGFpbmVyQ1NTQ2xhc3MgKz0gYCAke2NvbnRhaW5lckNsYXNzfWA7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hcHBUb29sYmFyRml4ZWREZXNrdG9wID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgXCJhcHAudG9vbGJhci5maXhlZC5kZXNrdG9wXCIsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBib29sZWFuO1xyXG4gICAgaWYgKHRoaXMuYXBwVG9vbGJhckZpeGVkRGVza3RvcCkge1xyXG4gICAgICBkb2N1bWVudC5ib2R5LnNldEF0dHJpYnV0ZShcImRhdGEta3QtYXBwLXRvb2xiYXItZml4ZWRcIiwgXCJ0cnVlXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuYXBwVG9vbGJhckZpeGVkTW9iaWxlID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgXCJhcHAudG9vbGJhci5maXhlZC5tb2JpbGVcIixcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5hcHBUb29sYmFyRml4ZWRNb2JpbGUpIHtcclxuICAgICAgZG9jdW1lbnQuYm9keS5zZXRBdHRyaWJ1dGUoXCJkYXRhLWt0LWFwcC10b29sYmFyLWZpeGVkLW1vYmlsZVwiLCBcInRydWVcIik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdG9vbGJhclxyXG4gICAgdGhpcy5hcHBQYWdlVGl0bGVEaXJlY3Rpb24gPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICBcImFwcC5wYWdlVGl0bGUuZGlyZWN0aW9uXCIsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBzdHJpbmc7XHJcbiAgICB0aGlzLmFwcFBhZ2VUaXRsZUNTU0NsYXNzID0gdGhpcy5sYXlvdXQuZ2V0UHJvcChcclxuICAgICAgXCJhcHAucGFnZVRpdGxlLmNsYXNzXCIsXHJcbiAgICAgIGNvbmZpZ1xyXG4gICAgKSBhcyBzdHJpbmc7XHJcbiAgICB0aGlzLmFwcFBhZ2VUaXRsZUJyZWFkY3J1bWIgPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICBcImFwcC5wYWdlVGl0bGUuYnJlYWRDcnVtYlwiLFxyXG4gICAgICBjb25maWdcclxuICAgICkgYXMgYm9vbGVhbjtcclxuICAgIHRoaXMuYXBwUGFnZVRpdGxlRGVzY3JpcHRpb24gPSB0aGlzLmxheW91dC5nZXRQcm9wKFxyXG4gICAgICBcImFwcC5wYWdlVGl0bGUuZGVzY3JpcHRpb25cIixcclxuICAgICAgY29uZmlnXHJcbiAgICApIGFzIGJvb2xlYW47XHJcblxyXG4gICAgZG9jdW1lbnQuYm9keS5zZXRBdHRyaWJ1dGUoXCJkYXRhLWt0LWFwcC10b29sYmFyLWVuYWJsZWRcIiwgXCJ0cnVlXCIpO1xyXG4gIH1cclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMudW5zdWJzY3JpYmUuZm9yRWFjaCgoc2IpID0+IHNiLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gICAgLy8gbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJ1c2Vyc0VtYWlsLWluZm9cIik7XHJcbiAgfVxyXG4gIGNsaWVudDphbnk7XHJcbiAgdXJsU3RyaW5nMTphbnk7XHJcbiAgc2hvd1BhZ2VUaXRsZSgpIHtcclxuICAgIGxldCBVUkw6IHN0cmluZyA9IFwiXCI7XHJcbiAgICBpZiAoXCJoZWFkZXItZmlsdGVyc1wiIGluIGxvY2FsU3RvcmFnZSkge1xyXG4gICAgICBjb25zdCBkYXRhOiBhbnkgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiaGVhZGVyLWZpbHRlcnNcIikgfHwgXCJ7fVwiXHJcbiAgICAgICk7XHJcbiAgICAgY29uc3Qgc3RvcmUgPSAgdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwIGFzIGFueSAgICAgIFxyXG4gICAgICB0aGlzLnN0b3JlSWQgPSAgZGF0YT8uc3RvcmU7XHJcblxyXG4gICAgICBpZihzdG9yZT8ucGFyYW1zPy5bJ3N0b3JlSWQnXSl7XHJcbiAgICAgICAgdGhpcy5zdG9yZUlkID0gc3RvcmUucGFyYW1zWydzdG9yZUlkJ11cclxuICAgICAgICBkYXRhLnN0b3JlID0gc3RvcmUucGFyYW1zWydzdG9yZUlkJ11cclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnaGVhZGVyLWZpbHRlcnMnLCBKU09OLnN0cmluZ2lmeShkYXRhKSlcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBjdXJyZW50VXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG4gICAgICBjb25zdCB1cGRhdGVkVXJsID0gY3VycmVudFVybC5yZXBsYWNlKFxyXG4gICAgICAgIC9cXC9tYW5hZ2VcXC9zdG9yZXNcXC9cXGQrLVxcZCtcXC8vLFxyXG4gICAgICAgIGAvbWFuYWdlL3N0b3Jlcy9gXHJcbiAgICAgICk7XHJcbiAgICAgIFVSTCA9IHVwZGF0ZWRVcmw7XHJcbiAgICAgIC8vIHRoaXMucm91dGVyLm5hdmlnYXRlKFtVUkxdKVxyXG4gICAgfVxyXG4gIGNvbnN0IHVybCA9IFVSTC5zcGxpdChcIj9cIilbMF0uc3BsaXQoJy8nKTtcclxuICB0aGlzLnVybFN0cmluZyA9IFVSTDtcclxuICAgdGhpcy51cmxTdHJpbmcxPSBVUkwuc3BsaXQoJy8nKTtcclxuICBjb25zb2xlLmxvZyh1cmwpXHJcbiAgaWYgKHRoaXMudXNlcnM/LnVzZXJUeXBlID09PSBcInRhbmdvXCIpIHtcclxuICAgIGlmICh1cmxbMl0gPT0gXCJzZXR0aW5nc1wiIHx8IFVSTCA9PSBcIi9tYW5hZ2UvdXNlcnMvY2xpZW50XCIgIHx8XHJcbiAgICBVUkwgPT0gXCIvbWFuYWdlL3N0b3Jlc1wiIHx8ICBVUkwgPT09IFwiL21hbmFnZS9zdG9yZXM/dHlwZT1zdG9yZXNcIiB8fCBVUkwgPT09IFwiL21hbmFnZS9zdG9yZXM/dHlwZT1jbHVzdGVyc1wiIHx8XHJcbiAgICBVUkwgPT0gXCIvbWFuYWdlL3N0b3Jlcy9hZGRpdGlvbi1tZXRob2RcIiB8fFxyXG4gICAgVVJMID09IFwiL21hbmFnZS9zdG9yZXMvYWRkLXNpbmdsZS1zdG9yZVwiIHx8IFVSTCA9PT0gXCIvbWFuYWdlL3RyYXgvZ2FsbGVyeVwiIHx8IFVSTCA9PSBcIi9ub3RpZmljYXRpb25zL2FsZXJ0cz90YWI9YWxlcnRcIiB8fCAgVVJMID09IFwiL25vdGlmaWNhdGlvbnMvYWxlcnRzP3RhYj1kb3dubG9hZFwiIHx8IFVSTCA9PT0gXCIvbWFuYWdlL3RyYXgvYXVkaXRcIiApIHtcclxuICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXModHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgfSAgZWxzZSBpZiAodXJsWzNdID09IFwiZWRnZS1hcHBcIikge1xyXG4gICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICBVUkwgPT0gYC9tYW5hZ2Uvc3RvcmVzL2luZnJhLXRpY2tldD9zdG9yZUlkPSR7dGhpcy5zdG9yZUlkfWAgfHwgIFVSTCA9PSBgL21hbmFnZS9zdG9yZXMvaW5mcmEtdGlja2V0P3N0b3JlSWQ9JHt0aGlzLnN0b3JlSWR9JnR5cGU9aW5mcmFgIHx8XHJcbiAgICAgIFVSTCA9PSBgL21hbmFnZS9zdG9yZXMvc2V0dGluZ3M/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH1gIHx8IFVSTCA9PSBgL21hbmFnZS9zdG9yZXMvaW5mcmEtdGlja2V0P3N0b3JlSWQ9JHt0aGlzLnN0b3JlSWR9JnR5cGU9ZGF0YU1pc21hdGNoYCB8fFxyXG4gICAgICBVUkwgPT0gYC9tYW5hZ2Uvc3RvcmVzL3pvbmVzP3N0b3JlSWQ9JHt0aGlzLnN0b3JlSWR9YCB8fFxyXG4gICAgICBVUkwgPT0gYC9tYW5hZ2Uvc3RvcmVzL2NhbWVyYXM/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH1gIHx8XHJcbiAgICAgIC8vIFVSTCA9PSBgL21hbmFnZS9zdG9yZXMvaW5mcmFzdHJ1Y3R1cmU/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH1gIHx8XHJcbiAgICAgIFVSTCA9PSBgL21hbmFnZS9zdG9yZXMvbWF0P3N0b3JlSWQ9JHt0aGlzLnN0b3JlSWR9YFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgIH1lbHNlIGlmIChVUkwgPT0gXCIvdGlja2V0cy9zdG9yZXNcIiB8fCBVUkwgPT0gXCIvbWFuYWdlL3VzZXJzL3RhbmdvL2F1ZGl0XCIpIHtcclxuICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHVybFsyXSA9PT0gJ2NvbnRyb2xjZW50ZXInKXtcclxuICAgICAgaWYoVVJMID09IGAvbWFuYWdlL2NvbnRyb2xjZW50ZXIvcGxheWJhY2s/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH1gfHwgVVJMID09IGAvbWFuYWdlL2NvbnRyb2xjZW50ZXIvcGxheWJhY2tgKXtcclxuICAgICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsdHJ1ZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICB9IFxyXG4gIH1lbHNlIGlmIChVUkwgPT0gXCIvcHJvZmlsZVwiIHx8IHVybFsyXT09PVwiZGF0YS1taXNtYXRjaFwiIHx8IHVybFsyXT09PVwiZW1wbG95ZWV0cmFpbmluZ1wiICBcclxuICAgICAgIHx8IFVSTCA9PSBcIi9tYW5hZ2UvYnJhbmRzXCIgfHwgVVJMID09IFwiL21hbmFnZS91c2Vycy90YW5nb1wiIHx8ICh1cmxbMV0gPT09XCJ0aWNrZXRzXCIgJiYgdXJsWzJdID09PSBcImF1ZGl0XCIpKSB7XHJcbiAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICB9IGVsc2UgaWYoVVJMID09IFwiL21hbmFnZS90cmFmZmljL25vYlwiKXtcclxuICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSk7XHJcbiAgICB9IGVsc2UgaWYodXJsWzJdID09PSBcInRyYWZmaWNcIiB8fCB1cmxbMl0gPT09IFwiem9uZXNcIiB8fCBVUkwgPT0gXCIvbWFuYWdlL2FuYWx5c2UvcmVwb3J0c1wiICl7XHJcbiAgICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICB9IGVsc2UgaWYodXJsWzJdID09PSBcImVtcGxveWVlLW1ldHJpY3NcIiAmJiB1cmxbM10gPT09IFwiaGVhdG1hcFwiKXtcclxuICAgICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlKTtcclxuICAgIH0gZWxzZSBpZih1cmxbMl0gPT09IFwiZW1wbG95ZWUtbWV0cmljc1wiKXtcclxuICAgICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlKTtcclxuICAgIH0gZWxzZSBpZih1cmxbMl0gPT0gJ3RyYXgnKXtcclxuICAgICAgaWYodXJsWzJdID09ICd0cmF4JyAmJiAodXJsLmluY2x1ZGVzKCdjcmVhdGVDaGVja2xpc3QnKSB8fCB1cmwuaW5jbHVkZXMoJ2NvbmZpZ3VyZScpIHx8IHVybC5pbmNsdWRlcygnY3JlYXRlLW9yZGVyJyl8fCB1cmxbM10gPT0gJ2NyZWF0ZS10YXNrJyB8fCB1cmxbM10gPT0gJ3Rhc2stY29uZmlndXJlJykpIHtcclxuICAgICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICAgIH0gZWxzZSBpZih1cmxbMl0gPT0gJ3RyYXgnICYmICh1cmwuaW5jbHVkZXMoJ3Rhc2tpbmZvJykpKXtcclxuICAgICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgICAgfWVsc2UgaWYodXJsWzJdID09ICd0cmF4JyAmJiB1cmwuaW5jbHVkZXMoJ3N0YXJ0Jykpe1xyXG4gICAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZih1cmxbMl0gPT0gJ3RyYXgnICYmICh1cmwuaW5jbHVkZXMoJ2NoZWNrbGlzdCcpIHx8IHVybC5pbmNsdWRlcygnZ2FsbGVyeScpKSB8fCB1cmwuaW5jbHVkZXMoJ2F1ZGl0JykpIHtcclxuICAgICAgICB0aGlzLnNldFVJUHJvcGVydGllcyh0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgICAgfSAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNle1xyXG4gICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgaWYgKHVybFszXSA9PSBcImVkZ2UtYXBwXCIgKSB7XHJcbiAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgIFVSTCA9PSBgL21hbmFnZS9zdG9yZXMvaW5mcmEtdGlja2V0P3N0b3JlSWQ9JHt0aGlzLnN0b3JlSWR9YCB8fCAgVVJMID09IGAvbWFuYWdlL3N0b3Jlcy9pbmZyYS10aWNrZXQ/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH0mdHlwZT1pbmZyYWAgfHxcclxuICAgICAgVVJMID09IGAvbWFuYWdlL3N0b3Jlcy9zZXR0aW5ncz9zdG9yZUlkPSR7dGhpcy5zdG9yZUlkfWAgfHwgVVJMID09IGAvbWFuYWdlL3N0b3Jlcy9pbmZyYS10aWNrZXQ/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH0mdHlwZT1kYXRhTWlzbWF0Y2hgIHx8XHJcbiAgICAgIFVSTCA9PSBgL21hbmFnZS9zdG9yZXMvem9uZXM/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH1gIHx8XHJcbiAgICAgIFVSTCA9PSBgL21hbmFnZS9zdG9yZXMvY2FtZXJhcz9zdG9yZUlkPSR7dGhpcy5zdG9yZUlkfWAgfHxcclxuICAgICAgLy8gVVJMID09IGAvbWFuYWdlL3N0b3Jlcy9pbmZyYXN0cnVjdHVyZT9zdG9yZUlkPSR7dGhpcy5zdG9yZUlkfWAgfHxcclxuICAgICAgVVJMID09IGAvbWFuYWdlL3N0b3Jlcy9tYXQ/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH1gXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgfSBlbHNlIGlmKHVybFsyXSA9PT0gJ2NvbnRyb2xjZW50ZXInKXtcclxuICAgICAgaWYoVVJMID09IGAvbWFuYWdlL2NvbnRyb2xjZW50ZXIvcGxheWJhY2s/c3RvcmVJZD0ke3RoaXMuc3RvcmVJZH1gfHwgVVJMID09IGAvbWFuYWdlL2NvbnRyb2xjZW50ZXIvcGxheWJhY2tgKXtcclxuICAgICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsdHJ1ZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICB9IFxyXG4gIH0gZWxzZSBpZiAoVVJMID09IFwiL3Byb2ZpbGVcIiB8fCBVUkwgPT0gXCIvbWFuYWdlL3VzZXJzL2NsaWVudFwiIHx8IFVSTCA9PSBcIi9tYW5hZ2UvdXNlcnMvdGFuZ29cIiB8fFxyXG4gICAgVVJMID09IFwiL21hbmFnZS9zdG9yZXNcIiB8fCAgVVJMID09PSBcIi9tYW5hZ2Uvc3RvcmVzP3R5cGU9c3RvcmVzXCIgfHwgVVJMID09PSBcIi9tYW5hZ2Uvc3RvcmVzP3R5cGU9Y2x1c3RlcnNcIiB8fCB1cmxbMl0gPT0gXCJzZXR0aW5nc1wiIHx8IFxyXG4gICAgVVJMID09IFwiL21hbmFnZS9zdG9yZXMvYWRkaXRpb24tbWV0aG9kXCIgfHxcclxuICAgIFVSTCA9PSBcIi9tYW5hZ2Uvc3RvcmVzL2FkZC1zaW5nbGUtc3RvcmVcIiB8fCB1cmxbMl09PT1cImRhdGEtbWlzbWF0Y2hcIiB8fCB1cmxbMl09PT1cImVtcGxveWVldHJhaW5pbmdcIiAgfHwgVVJMID09IFwiL25vdGlmaWNhdGlvbnMvYWxlcnRzP3RhYj1hbGVydFwiIHx8ICBVUkwgPT0gXCIvbm90aWZpY2F0aW9ucy9hbGVydHM/dGFiPWRvd25sb2FkXCJcclxuICAgICB8fCBVUkwgPT0gXCIvbWFuYWdlL3VzZXJzL3RhbmdvXCIgfHwgVVJMID09PSBcIi9tYW5hZ2UvY29udHJvbGNlbnRlclwiIHx8IFVSTCA9PT0nbWFuYWdlL2NvbnRyb2xjZW50ZXIvdGVtcGxhdGUtbWFuYWdlcicgfHwgdXJsWzJdPT09J2NvbnRyb2xjZW50ZXInICkge1xyXG4gICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgfWVsc2UgaWYoVVJMID09IFwiL21hbmFnZS90cmFmZmljL25vYlwiKXtcclxuICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSk7XHJcbiAgICB9IGVsc2UgaWYodXJsWzJdID09PSBcInRyYWZmaWNcIiB8fCB1cmxbMl0gPT09IFwiem9uZXNcIiB8fCBVUkwgPT0gXCIvbWFuYWdlL2FuYWx5c2UvcmVwb3J0c1wiICl7XHJcbiAgICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICB9IGVsc2UgaWYodXJsWzJdID09PSBcImVtcGxveWVlLW1ldHJpY3NcIiAmJiB1cmxbM10gPT09IFwiaGVhdG1hcFwiKXtcclxuICAgICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlKTtcclxuICAgIH0gZWxzZSBpZih1cmxbMl0gPT09IFwiZW1wbG95ZWUtbWV0cmljc1wiKXtcclxuICAgICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlKTtcclxuICAgIH0gZWxzZSBpZih1cmxbMl0gPT0gJ3RyYXgnKXtcclxuICAgICAgaWYodXJsWzJdID09ICd0cmF4JyAmJiAodXJsLmluY2x1ZGVzKCdjcmVhdGVDaGVja2xpc3QnKSB8fCB1cmwuaW5jbHVkZXMoJ2NvbmZpZ3VyZScpIHx8IHVybC5pbmNsdWRlcygnY3JlYXRlLW9yZGVyJykgfHwgdXJsWzNdID09ICdjcmVhdGUtdGFzaycgfHwgdXJsWzNdID09ICd0YXNrLWNvbmZpZ3VyZScpKSB7XHJcbiAgICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgICB9ZWxzZSBpZih1cmxbMl0gPT0gJ3RyYXgnICYmICh1cmwuaW5jbHVkZXMoJ3Rhc2tpbmZvJykpKXtcclxuICAgICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgICAgfWVsc2UgaWYodXJsWzJdID09ICd0cmF4JyAmJiB1cmwuaW5jbHVkZXMoJ3N0YXJ0Jykpe1xyXG4gICAgICAgIHRoaXMuc2V0VUlQcm9wZXJ0aWVzKGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSxmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZih1cmxbMl0gPT0gJ3RyYXgnICYmICh1cmwuaW5jbHVkZXMoJ2NoZWNrbGlzdCcpIHx8IHVybC5pbmNsdWRlcygnZ2FsbGVyeScpIHx8IHVybC5pbmNsdWRlcygnYXVkaXQnKSkpIHtcclxuICAgICAgICB0aGlzLnNldFVJUHJvcGVydGllcyh0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgICAgfSAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFVJUHJvcGVydGllcyhmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSxmYWxzZSxmYWxzZSx0cnVlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRVSVByb3BlcnRpZXMoZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuICBjb25zdCB2aWV3c1dpdGhQYWdlVGl0bGVzID0gW1wiY2xhc3NpY1wiLCBcInJlcG9ydHNcIiwgXCJzYWFzXCJdO1xyXG4gIHJldHVybiAoXHJcbiAgICB0aGlzLmFwcFBhZ2VUaXRsZURpc3BsYXkgJiZcclxuICAgIHZpZXdzV2l0aFBhZ2VUaXRsZXMuc29tZSgodCkgPT4gdCA9PT0gdGhpcy5hcHBUb29sYmFyTGF5b3V0KVxyXG4gICk7XHJcbn1cclxuXHJcbnNldFVJUHJvcGVydGllcyhcclxuICBzaW5nbGVTZWxlY3Q6IGJvb2xlYW4sXHJcbiAgbXVsdGlTZWxlY3Q6IGJvb2xlYW4sXHJcbiAgZGF0ZXBpY2tlcjogYm9vbGVhbixcclxuICBzaW5nbGVTdG9yZTogYm9vbGVhbixcclxuICBzaW5nbGVTZWxlY3RkYXRlcGlja2VyOiBib29sZWFuLFxyXG4gIHRyYWZmaWNkYXRlcGlja2VyOmJvb2xlYW4sXHJcbiAgdHJheGRhdGVwaWNrZXI6Ym9vbGVhbixcclxuICB0cmF4d2l0aG91dGRhdGVwaWNrZXI6Ym9vbGVhbixcclxuICBzdG9yZXNTaW5nbGU6Ym9vbGVhbixcclxuICBub2JXaXRob3V0Q2xpZW50OmJvb2xlYW4sXHJcbiAgbWVydGljc0hlYWRlcjpib29sZWFuXHJcbik6IHZvaWQge1xyXG4gIHRoaXMuc2luZ2xlU2VsZWN0ID0gc2luZ2xlU2VsZWN0O1xyXG4gIHRoaXMubXVsdGlTZWxlY3QgPSBtdWx0aVNlbGVjdDtcclxuICB0aGlzLmRhdGVwaWNrZXIgPSBkYXRlcGlja2VyO1xyXG4gIHRoaXMuc2luZ2xlU3RvcmUgPSBzaW5nbGVTdG9yZTtcclxuICB0aGlzLnNpbmdsZVNlbGVjdGRhdGVwaWNrZXIgPSBzaW5nbGVTZWxlY3RkYXRlcGlja2VyO1xyXG4gIHRoaXMudHJhZmZpY2RhdGVwaWNrZXIgPSB0cmFmZmljZGF0ZXBpY2tlcjtcclxuICB0aGlzLnRyYXhkYXRlcGlja2VyID0gdHJheGRhdGVwaWNrZXI7XHJcbiAgdGhpcy50cmF4d2l0aG91dGRhdGVwaWNrZXIgPSB0cmF4d2l0aG91dGRhdGVwaWNrZXI7XHJcbiAgdGhpcy5zdG9yZXNTaW5nbGUgPSBzdG9yZXNTaW5nbGU7XHJcbiAgdGhpcy5ub2JXaXRob3V0Q2xpZW50ID0gbm9iV2l0aG91dENsaWVudDtcclxuICB0aGlzLm1lcnRpY3NIZWFkZXIgPSBtZXJ0aWNzSGVhZGVyO1xyXG5cclxufVxyXG5cclxuZ2V0VXNlckluZm8oY2xpZW50OmFueSl7XHJcbiAgbGV0IG9iaiA9e1xyXG4gICAgICBjbGllbnRJZDogY2xpZW50ID8gY2xpZW50IDonJ1xyXG4gIH1cclxuICBpZihjbGllbnQpe1xyXG4gICAgdGhpcy5hdXRoLmdldEhlYWRlclVzZXJzKG9iaikuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKGUpID0+IHtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcclxuICAgICAgICAgIFwidXNlcnNFbWFpbC1pbmZvXCIsXHJcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShlPy5kYXRhPy51c2VyRW1haWxEYXRhIHx8IFtdKSBcclxuICAgICAgICApO1xyXG4gICAgICB9IFxyXG4gICAgfSlcclxuICB9XHJcbn1cclxufVxyXG4iLCI8IS0tYmVnaW46OlRvb2xiYXIgY29udGFpbmVyLS0+XHJcbjxkaXYgaWQ9XCJrdF9hcHBfdG9vbGJhcl9jb250YWluZXJcIiBjbGFzcz1cImFwcC1jb250YWluZXJcIiBbbmdDbGFzc109XCJhcHBUb29sYmFyQ29udGFpbmVyQ1NTQ2xhc3NcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAndGFuZ28nIHx8IChncy51c2VyQWNjZXNzIHwgYXN5bmMpPy51c2VyVHlwZSA9PT0gJ2NsaWVudCcgfHwgKGdzLnVzZXJBY2Nlc3MgfCBhc3luYyk/LnVzZXJUeXBlID09PSAnbGVhZCdcIiAgPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93UGFnZVRpdGxlKClcIj5cclxuICAgIDxsaWItcGFnZS10aXRsZSBbYXBwUGFnZVRpdGxlRGlyZWN0aW9uXT1cImFwcFBhZ2VUaXRsZURpcmVjdGlvblwiIFthcHBQYWdlVGl0bGVCcmVhZGNydW1iXT1cImFwcFBhZ2VUaXRsZUJyZWFkY3J1bWJcIlxyXG4gICAgICBbYXBwUGFnZVRpdGxlRGVzY3JpcHRpb25dPVwiYXBwUGFnZVRpdGxlRGVzY3JpcHRpb25cIiBjbGFzcz1cInBhZ2UtdGl0bGUgZC1mbGV4IGZsZXgtd3JhcCBtZS0zXCJcclxuICAgICAgW25nQ2xhc3NdPVwieydmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJzogYXBwUGFnZVRpdGxlRGlyZWN0aW9uID09PSAnY29sdW1uJywgJ2FsaWduLWl0ZW1zLWNlbnRlcic6IGFwcFBhZ2VUaXRsZURpcmVjdGlvbiAhPT0gJ2NvbHVtbicsIGFwcFBhZ2VUaXRsZUNTU0NsYXNzfVwiPlxyXG4gICAgPC9saWItcGFnZS10aXRsZT5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm11bHRpU2VsZWN0ICYmIHVzZXJzLnVzZXJUeXBlID09PSd0YW5nbydcIj5cclxuICAgIDxsaWItY2xhc3NpYyBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgZ2FwLWxnLTNcIj48L2xpYi1jbGFzc2ljPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaW5nbGVTZWxlY3QgJiYgdXNlcnMudXNlclR5cGUgPT09J3RhbmdvJ1wiPlxyXG4gICAgPGxpYi1jbGllbnQtc2V0dGluZ3MgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1lLTVcIj48L2xpYi1jbGllbnQtc2V0dGluZ3M+XHJcbiAgIDwvbmctY29udGFpbmVyPlxyXG4gICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0ZXBpY2tlciAmJiAodXNlcnMudXNlclR5cGUgPT09J2NsaWVudCcgfHwgdXNlcnMudXNlclR5cGUgPT09J3RhbmdvJylcIj5cclxuICAgIDxsaWItZGF0ZXBpY2tlciBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWUtNVwiPjwvbGliLWRhdGVwaWNrZXI+XHJcbiAgIDwvbmctY29udGFpbmVyPlxyXG4gICA8bmctY29udGFpbmVyICpuZ0lmPVwic2luZ2xlU2VsZWN0ZGF0ZXBpY2tlciAmJiB1c2Vycy51c2VyVHlwZSA9PT0ndGFuZ28nXCI+XHJcbiAgICA8bGliLWRhdGUtc2luZ2xlLXNlbGVjdCBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWUtNVwiPjwvbGliLWRhdGUtc2luZ2xlLXNlbGVjdD5cclxuICAgPC9uZy1jb250YWluZXI+XHJcbiAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaW5nbGVTdG9yZVwiPlxyXG4gICAgPGxpYi1zaW5nbGUtc3RvcmUgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1lLTVcIj48L2xpYi1zaW5nbGUtc3RvcmU+XHJcbiAgIDwvbmctY29udGFpbmVyPlxyXG4gICA8bmctY29udGFpbmVyICpuZ0lmPVwidHJhZmZpY2RhdGVwaWNrZXJcIj5cclxuICAgIDxsaWItdHJhZmZpYy1oZWFkZXIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1lLTVcIj48L2xpYi10cmFmZmljLWhlYWRlcj5cclxuICAgPC9uZy1jb250YWluZXI+XHJcbiAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0cmF4ZGF0ZXBpY2tlclwiPlxyXG4gICAgPGxpYi10cmF4LWhlYWRlciBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWUtNVwiPjwvbGliLXRyYXgtaGVhZGVyPlxyXG4gICA8L25nLWNvbnRhaW5lcj5cclxuICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRyYXh3aXRob3V0ZGF0ZXBpY2tlclwiPlxyXG4gICAgPGxpYi10cmF4LXdpdGhvdXRkYXRlIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtZS01XCI+PC9saWItdHJheC13aXRob3V0ZGF0ZT5cclxuICAgPC9uZy1jb250YWluZXI+XHJcbiAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdG9yZXNTaW5nbGVcIj5cclxuICAgIDxsaWItc2luZ2xlLXN0b3JlZGF0ZSBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWUtNVwiPjwvbGliLXNpbmdsZS1zdG9yZWRhdGU+XHJcbiAgIDwvbmctY29udGFpbmVyPlxyXG4gICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9iV2l0aG91dENsaWVudFwiPlxyXG4gICAgPGxpYi10cmFmZmljLW5vYiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWUtNVwiPjwvbGliLXRyYWZmaWMtbm9iPlxyXG4gICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXJ0aWNzSGVhZGVyXCI+XHJcbiAgICA8bGliLW1ldHJpY3MtaGVhZGVyIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtZS01XCI+PC9saWItbWV0cmljcy1oZWFkZXI+XHJcbiAgIDwvbmctY29udGFpbmVyPlxyXG4gPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwVG9vbGJhckxheW91dCA9PT0gJ2V4dGVuZGVkJ1wiPlxyXG4gICAgPGxpYi1leHRlbmRlZCBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1zaHJpbmstMCBtZS01XCI+PC9saWItZXh0ZW5kZWQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFwcFRvb2xiYXJMYXlvdXQgPT09ICdyZXBvcnRzJ1wiPlxyXG4gICAgPGxpYi1yZXBvcnRzIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBvdmVyZmxvdy1hdXRvXCIgW2FwcFBhZ2VUaXRsZURpc3BsYXldPVwiYXBwUGFnZVRpdGxlRGlzcGxheVwiPlxyXG4gICAgPC9saWItcmVwb3J0cz5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwVG9vbGJhckxheW91dCA9PT0gJ3NhYXMnXCI+XHJcbiAgICA8bGliLXNhYXMgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCIgW2FwcFBhZ2VUaXRsZURpc3BsYXldPVwiYXBwUGFnZVRpdGxlRGlzcGxheVwiPjwvbGliLXNhYXM+XHJcbiAgPC9uZy1jb250YWluZXI+IC0tPlxyXG48L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcbjwhLS1lbmQ6OlRvb2xiYXIgY29udGFpbmVyLS0+XHJcbiJdfQ==
|