@eui/core 13.0.0-rc.7 → 13.0.0-rc.73
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/docs/dependencies.html +53 -53
- package/docs/injectables/I18nLoader.html +39 -0
- package/docs/injectables/LocaleService.html +20 -0
- package/docs/injectables/UxAppShellService.html +175 -0
- package/docs/interfaces/UIState.html +135 -0
- package/docs/js/search/search_index.js +2 -2
- package/docs/miscellaneous/variables.html +6 -1
- package/esm2020/lib/eui-core.module.mjs +5 -5
- package/esm2020/lib/helpers/dom-helpers.mjs +3 -1
- package/esm2020/lib/helpers/format-helpers.mjs +3 -1
- package/esm2020/lib/interceptors/add-lang-param.interceptor.mjs +4 -4
- package/esm2020/lib/interceptors/cache-prevention.interceptor.mjs +4 -4
- package/esm2020/lib/interceptors/cors-security.interceptor.mjs +4 -4
- package/esm2020/lib/interceptors/csrf-prevention.interceptor.mjs +4 -4
- package/esm2020/lib/interceptors/eu-login-session-timeout-handling.interceptor.mjs +4 -5
- package/esm2020/lib/interceptors/openid/openid-connect.interceptor.mjs +4 -4
- package/esm2020/lib/interceptors/openid/openid-connect.service.mjs +4 -4
- package/esm2020/lib/interceptors/ux-request-error-model.interceptor.mjs +4 -4
- package/esm2020/lib/services/app/eui-pre-init-app.mjs +3 -1
- package/esm2020/lib/services/app/factories/log.mjs +3 -1
- package/esm2020/lib/services/errors/global-error-handler.mjs +4 -4
- package/esm2020/lib/services/errors/http-error-handler.interceptor.mjs +4 -4
- package/esm2020/lib/services/i18n/i18n.loader.mjs +14 -4
- package/esm2020/lib/services/i18n/i18n.service.mjs +10 -10
- package/esm2020/lib/services/i18n/i18n.service.mock.mjs +4 -4
- package/esm2020/lib/services/locale/locale.service.mjs +21 -12
- package/esm2020/lib/services/log/log.module.mjs +5 -5
- package/esm2020/lib/services/log/log.service.mjs +4 -4
- package/esm2020/lib/services/permission/permission.service.mjs +4 -4
- package/esm2020/lib/services/queue/api-queue.service.mjs +4 -6
- package/esm2020/lib/services/queue/api-queue.service.mock.mjs +1 -5
- package/esm2020/lib/services/storage/async-storage.service.mjs +1 -1
- package/esm2020/lib/services/storage/async-storage.service.mock.mjs +1 -5
- package/esm2020/lib/services/storage/local-forage.service.mjs +6 -4
- package/esm2020/lib/services/storage/local-storage.service.mjs +4 -4
- package/esm2020/lib/services/storage/session-storage.service.mjs +4 -4
- package/esm2020/lib/services/storage/storage.service.mjs +1 -1
- package/esm2020/lib/services/store/effects/app.effects.mjs +5 -5
- package/esm2020/lib/services/store/reducers/meta.reducers.mjs +9 -1
- package/esm2020/lib/services/store/store.service.mjs +5 -5
- package/esm2020/lib/services/store/store.service.mock.mjs +4 -4
- package/esm2020/lib/services/user/user.service.mjs +4 -4
- package/esm2020/lib/services/user/user.service.mock.mjs +4 -4
- package/esm2020/lib/services/ux-app-shell.service.mjs +35 -12
- package/esm2020/lib/services/ux-dynamic-component/ux-dynamic-component.service.mjs +4 -4
- package/esm2020/lib/services/ux-dynamic-menu/ux-dynamic-menu.service.mjs +4 -4
- package/esm2020/lib/services/ux-error-feedback/ux-error-feedback.service.mjs +4 -4
- package/esm2020/lib/services/ux-timezone.service.mjs +4 -4
- package/fesm2015/eui-core.mjs +174 -129
- package/fesm2015/eui-core.mjs.map +1 -1
- package/fesm2020/eui-core.mjs +181 -132
- package/fesm2020/eui-core.mjs.map +1 -1
- package/lib/helpers/dom-helpers.d.ts.map +1 -1
- package/lib/helpers/format-helpers.d.ts.map +1 -1
- package/lib/interceptors/eu-login-session-timeout-handling.interceptor.d.ts.map +1 -1
- package/lib/services/app/eui-pre-init-app.d.ts.map +1 -1
- package/lib/services/app/factories/log.d.ts.map +1 -1
- package/lib/services/i18n/i18n.loader.d.ts +5 -0
- package/lib/services/i18n/i18n.loader.d.ts.map +1 -1
- package/lib/services/i18n/i18n.service.d.ts.map +1 -1
- package/lib/services/locale/locale.service.d.ts +1 -0
- package/lib/services/locale/locale.service.d.ts.map +1 -1
- package/lib/services/queue/api-queue.service.d.ts.map +1 -1
- package/lib/services/queue/api-queue.service.mock.d.ts.map +1 -1
- package/lib/services/storage/async-storage.service.d.ts.map +1 -1
- package/lib/services/storage/async-storage.service.mock.d.ts.map +1 -1
- package/lib/services/storage/local-forage.service.d.ts.map +1 -1
- package/lib/services/store/effects/app.effects.d.ts.map +1 -1
- package/lib/services/store/reducers/meta.reducers.d.ts.map +1 -1
- package/lib/services/ux-app-shell.service.d.ts +7 -1
- package/lib/services/ux-app-shell.service.d.ts.map +1 -1
- package/package.json +11 -1
- package/esm2020/lib/services/ux-root-injector.guard.mjs +0 -11
- package/lib/services/ux-root-injector.guard.d.ts +0 -5
- package/lib/services/ux-root-injector.guard.d.ts.map +0 -1
|
@@ -24,13 +24,16 @@ const initialState = {
|
|
|
24
24
|
isSidebarActive: false,
|
|
25
25
|
isSidebarInnerActive: false,
|
|
26
26
|
isSidebarStateCloseWithIcons: false,
|
|
27
|
+
isSidebarExpandOnHover: true,
|
|
27
28
|
hasSidebar: false,
|
|
28
29
|
hasHeader: false,
|
|
29
30
|
hasHeaderLogo: false,
|
|
30
31
|
hasHeaderEnvironment: false,
|
|
32
|
+
hasToolbar: false,
|
|
33
|
+
hasToolbarMenu: false,
|
|
31
34
|
environmentValue: '',
|
|
32
35
|
isSidebarHidden: false,
|
|
33
|
-
|
|
36
|
+
hasTopMessage: false,
|
|
34
37
|
windowWidth: 0,
|
|
35
38
|
windowHeight: 0,
|
|
36
39
|
mainContentHeight: 0,
|
|
@@ -56,7 +59,7 @@ const initialState = {
|
|
|
56
59
|
hasModalActive: false,
|
|
57
60
|
isDimmerActive: false,
|
|
58
61
|
};
|
|
59
|
-
//
|
|
62
|
+
// TODO: this service needs to be transferred in the respective component
|
|
60
63
|
export class UxAppShellService {
|
|
61
64
|
constructor(config, http, platformId, router, storeService, i18nService) {
|
|
62
65
|
this.config = config;
|
|
@@ -73,8 +76,6 @@ export class UxAppShellService {
|
|
|
73
76
|
this.activeModals = [];
|
|
74
77
|
this.openModalId = new BehaviorSubject('');
|
|
75
78
|
this.cssVars = [];
|
|
76
|
-
// super(UxAppShellService);
|
|
77
|
-
console.log('UxAppShellService initialized');
|
|
78
79
|
let stateWithConfig = initialState;
|
|
79
80
|
const languages = config?.i18n?.i18nService?.languages || initialState.languages;
|
|
80
81
|
const defaultLanguage = config?.i18n?.i18nService?.defaultLanguage || initialState.activeLanguage;
|
|
@@ -132,10 +133,12 @@ export class UxAppShellService {
|
|
|
132
133
|
});
|
|
133
134
|
}
|
|
134
135
|
set isSidebarHover(isHover) {
|
|
135
|
-
this.
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
136
|
+
if (this.state.isSidebarExpandOnHover) {
|
|
137
|
+
this.setState({
|
|
138
|
+
...this.state,
|
|
139
|
+
isSidebarHover: isHover,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
139
142
|
}
|
|
140
143
|
get isSidebarHover() {
|
|
141
144
|
return this.state.isSidebarHover;
|
|
@@ -291,6 +294,13 @@ export class UxAppShellService {
|
|
|
291
294
|
});
|
|
292
295
|
this.activateHeaderCssVars();
|
|
293
296
|
}
|
|
297
|
+
activateTopMessage(height) {
|
|
298
|
+
this.setState({
|
|
299
|
+
...this.state,
|
|
300
|
+
hasTopMessage: true,
|
|
301
|
+
});
|
|
302
|
+
this.activateTopMessageCssVars(height);
|
|
303
|
+
}
|
|
294
304
|
activateToolbar() {
|
|
295
305
|
this.setState({
|
|
296
306
|
...this.state,
|
|
@@ -298,11 +308,20 @@ export class UxAppShellService {
|
|
|
298
308
|
});
|
|
299
309
|
this.activateToolbarCssVars();
|
|
300
310
|
}
|
|
311
|
+
activateToolbarMenu() {
|
|
312
|
+
this.setState({
|
|
313
|
+
...this.state,
|
|
314
|
+
hasToolbarMenu: true,
|
|
315
|
+
});
|
|
316
|
+
}
|
|
301
317
|
fetchCssVars() {
|
|
302
318
|
const cssVarNames = [
|
|
303
319
|
'--eui-app-header-height-default',
|
|
304
320
|
'--eui-app-header-height-active',
|
|
305
321
|
'--eui-app-header-height-shrink',
|
|
322
|
+
'--eui-app-top-message-height-default',
|
|
323
|
+
'--eui-app-top-message-height-active',
|
|
324
|
+
'--eui-app-top-message-height-shrink',
|
|
306
325
|
'--eui-app-toolbar-height-default',
|
|
307
326
|
'--eui-app-toolbar-height-active',
|
|
308
327
|
'--eui-app-sidebar-width-default',
|
|
@@ -320,6 +339,7 @@ export class UxAppShellService {
|
|
|
320
339
|
}
|
|
321
340
|
initCssVars() {
|
|
322
341
|
this.setCssVar('--eui-app-header-height-default', '--eui-app-header-height');
|
|
342
|
+
this.setCssVar('--eui-app-top-message-height-default', '--eui-app-top-message-height');
|
|
323
343
|
this.setCssVar('--eui-app-toolbar-height-default', '--eui-app-toolbar-height');
|
|
324
344
|
this.setCssVar('--eui-app-sidebar-width-default', '--eui-app-sidebar-width');
|
|
325
345
|
this.setCssVar('--eui-app-sidebar-width-close-default', '--eui-app-sidebar-width-close');
|
|
@@ -329,6 +349,9 @@ export class UxAppShellService {
|
|
|
329
349
|
activateHeaderCssVars() {
|
|
330
350
|
this.setCssVar('--eui-app-header-height-active', '--eui-app-header-height');
|
|
331
351
|
}
|
|
352
|
+
activateTopMessageCssVars(height) {
|
|
353
|
+
this._setCssVarValue('--eui-app-top-message-height', `${height}px`);
|
|
354
|
+
}
|
|
332
355
|
activateToolbarCssVars() {
|
|
333
356
|
this.setCssVar('--eui-app-toolbar-height-active', '--eui-app-toolbar-height');
|
|
334
357
|
}
|
|
@@ -611,9 +634,9 @@ export class UxAppShellService {
|
|
|
611
634
|
});
|
|
612
635
|
}
|
|
613
636
|
}
|
|
614
|
-
/** @nocollapse */ /** @nocollapse */ UxAppShellService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.
|
|
615
|
-
/** @nocollapse */ /** @nocollapse */ UxAppShellService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.
|
|
616
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.
|
|
637
|
+
/** @nocollapse */ /** @nocollapse */ UxAppShellService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: UxAppShellService, deps: [{ token: GLOBAL_CONFIG_TOKEN, optional: true }, { token: i1.HttpClient }, { token: PLATFORM_ID }, { token: i2.Router }, { token: i3.StoreService }, { token: i4.I18nService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
638
|
+
/** @nocollapse */ /** @nocollapse */ UxAppShellService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: UxAppShellService, providedIn: 'root' });
|
|
639
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: UxAppShellService, decorators: [{
|
|
617
640
|
type: Injectable,
|
|
618
641
|
args: [{
|
|
619
642
|
providedIn: 'root',
|
|
@@ -629,4 +652,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.0-rc.0", ng
|
|
|
629
652
|
}] }, { type: i2.Router }, { type: i3.StoreService }, { type: i4.I18nService, decorators: [{
|
|
630
653
|
type: Optional
|
|
631
654
|
}] }]; } });
|
|
632
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXgtYXBwLXNoZWxsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3V4LWFwcC1zaGVsbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBaUMsYUFBYSxFQUF5QixNQUFNLFdBQVcsQ0FBQztBQUMvRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0RCxPQUFPLEVBQVUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFeEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQztBQUN4QyxPQUFPLEdBQUcsTUFBTSxlQUFlLENBQUM7Ozs7OztBQTREaEMsTUFBTSxZQUFZLEdBQVk7SUFDMUIsT0FBTyxFQUFFLEVBQUU7SUFDWCxZQUFZLEVBQUUsRUFBRTtJQUNoQixXQUFXLEVBQUUsRUFBRTtJQUNmLFNBQVMsRUFBRSxJQUFJO0lBQ2YsWUFBWSxFQUFFLElBQUk7SUFDbEIscUJBQXFCLEVBQUUsSUFBSTtJQUMzQixhQUFhLEVBQUUsS0FBSztJQUNwQixjQUFjLEVBQUUsS0FBSztJQUNyQixlQUFlLEVBQUUsS0FBSztJQUN0QixvQkFBb0IsRUFBRSxLQUFLO0lBQzNCLDRCQUE0QixFQUFFLEtBQUs7SUFDbkMsVUFBVSxFQUFFLEtBQUs7SUFDakIsU0FBUyxFQUFFLEtBQUs7SUFDaEIsYUFBYSxFQUFFLEtBQUs7SUFDcEIsb0JBQW9CLEVBQUUsS0FBSztJQUMzQixnQkFBZ0IsRUFBRSxFQUFFO0lBQ3BCLGVBQWUsRUFBRSxLQUFLO0lBQ3RCLFVBQVUsRUFBRSxLQUFLO0lBQ2pCLFdBQVcsRUFBRSxDQUFDO0lBQ2QsWUFBWSxFQUFFLENBQUM7SUFDZixpQkFBaUIsRUFBRSxDQUFDO0lBQ3BCLGdCQUFnQixFQUFFLENBQUM7SUFDbkIsY0FBYyxFQUFFLEVBQUU7SUFDbEIsVUFBVSxFQUFFLEVBQUU7SUFDZCxXQUFXLEVBQUU7UUFDVCxRQUFRLEVBQUUsS0FBSztRQUNmLFFBQVEsRUFBRSxLQUFLO1FBQ2YsV0FBVyxFQUFFLEtBQUs7UUFDbEIsU0FBUyxFQUFFLEtBQUs7UUFDaEIsSUFBSSxFQUFFLEtBQUs7UUFDWCxLQUFLLEVBQUUsS0FBSztLQUNmO0lBQ0QsU0FBUyxFQUFFLEVBQUU7SUFDYixZQUFZLEVBQUUsRUFBRTtJQUNoQixhQUFhLEVBQUUsRUFBRTtJQUNqQixxQkFBcUIsRUFBRSxLQUFLO0lBQzVCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLGNBQWMsRUFBRSxJQUFJO0lBQ3BCLFNBQVMsRUFBRSxhQUFhLENBQUMsWUFBWSxFQUFFO0lBQ3ZDLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLGNBQWMsRUFBRSxLQUFLO0lBQ3JCLGNBQWMsRUFBRyxLQUFLO0NBQ3pCLENBQUM7QUFLRiwrREFBK0Q7QUFDL0QsTUFBTSxPQUFPLGlCQUFpQjtJQWlIMUIsWUFDdUQsTUFBb0IsRUFDL0QsSUFBZ0IsRUFDSyxVQUFrQixFQUN2QyxNQUFjLEVBQ2QsWUFBMEIsRUFDZCxXQUF3QjtRQUxPLFdBQU0sR0FBTixNQUFNLENBQWM7UUFDL0QsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNLLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDdkMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQ2QsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUF0SGhELGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBQy9CLGNBQVMsR0FBVyxJQUFJLENBQUM7UUFDekIsa0JBQWEsR0FBVyxjQUFjLENBQUM7UUFDdkMsa0JBQWEsR0FBUSxJQUFJLENBQUM7UUFDMUIsaUJBQVksR0FBYyxFQUFFLENBQUM7UUFDN0IsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBUyxFQUFFLENBQUMsQ0FBQztRQXFHdEMsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQWFqQiw0QkFBNEI7UUFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBRTdDLElBQUksZUFBZSxHQUFHLFlBQVksQ0FBQztRQUNuQyxNQUFNLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxTQUFTLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQztRQUNqRixNQUFNLGVBQWUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxlQUFlLElBQUksWUFBWSxDQUFDLGNBQWMsQ0FBQztRQUNsRyxlQUFlLEdBQUc7WUFDZCxHQUFHLGVBQWUsRUFBRSxHQUFHO2dCQUNuQixTQUFTLEVBQUUsU0FBUztnQkFDcEIsY0FBYyxFQUFFLGVBQWU7YUFDbEM7U0FDSixDQUFDO1FBQ0YsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLENBQUM7UUFFekMsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDcEMsTUFBTSxDQUFDLE1BQU07aUJBQ1IsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksS0FBSyxZQUFZLGFBQWEsRUFBRTtvQkFDaEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQ3pCO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDVjtJQUNMLENBQUM7SUF0SUQsc0JBQXNCO0lBQ3RCLElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsc0JBQXNCO0lBQ3RCLHNCQUFzQjtJQUV0QixJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELElBQUksWUFBWTtRQUNaLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFDbkIsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxZQUFZO0lBQ1osSUFBSSxjQUFjO1FBQ2QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBRTtJQUN0QyxDQUFDO0lBRUQsK0JBQStCO0lBQy9CLCtCQUErQjtJQUMvQiwrQkFBK0I7SUFDL0IsSUFBSSxhQUFhLENBQUMsTUFBZTtRQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ1YsR0FBRyxJQUFJLENBQUMsS0FBSztZQUNiLGFBQWEsRUFBRSxNQUFNO1NBQ3hCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxJQUFJLGNBQWMsQ0FBQyxPQUFnQjtRQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ1YsR0FBRyxJQUFJLENBQUMsS0FBSztZQUNiLGNBQWMsRUFBRSxPQUFPO1NBQzFCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDZCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLGVBQWUsQ0FBQyxRQUFpQjtRQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ1YsR0FBRyxJQUFJLENBQUMsS0FBSztZQUNiLGVBQWUsRUFBRSxRQUFRO1NBQzVCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxJQUFJLG9CQUFvQixDQUFDLE1BQWU7UUFDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNWLEdBQUcsSUFBSSxDQUFDLEtBQUs7WUFDYixvQkFBb0IsRUFBRSxNQUFNO1NBQy9CLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxJQUFJLFlBQVksQ0FBQyxLQUFlO1FBQzVCLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDVixHQUFHLElBQUksQ0FBQyxLQUFLO1lBQ2IsWUFBWSxFQUFFLEtBQUs7U0FDdEIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELElBQUksU0FBUyxDQUFDLEtBQWU7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNWLEdBQUcsSUFBSSxDQUFDLEtBQUs7WUFDYixTQUFTLEVBQUUsS0FBSztTQUNuQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsSUFBSSxxQkFBcUIsQ0FBQyxRQUFpQjtRQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ1YsR0FBRyxJQUFJLENBQUMsS0FBSztZQUNiLHFCQUFxQixFQUFFLFFBQVE7U0FDbEMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFlBQVk7SUFDWixJQUFJLGNBQWMsQ0FBRSxRQUFpQjtRQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ1YsR0FBRyxJQUFJLENBQUMsS0FBSztZQUNiLGNBQWMsRUFBRyxRQUFRO1NBQzVCLENBQUMsQ0FBQztJQUNQLENBQUM7SUEwQ0QsUUFBUSxDQUFDLFNBQWtCLEVBQUUsU0FBUyxHQUFHLElBQUk7UUFDekMsSUFBSSxVQUFVLEVBQUUsV0FBVyxFQUFFLGNBQWMsQ0FBQztRQUM1QyxJQUFJLGFBQWEsQ0FBQztRQUVsQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBRXpCLDZEQUE2RDtRQUM3RCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxLQUFLLFNBQVMsQ0FBQyxXQUFXLEVBQUU7WUFDbEQsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3ZELFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRTlDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRXJDLCtEQUErRDtTQUNsRTthQUFNO1lBQ0gsVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7WUFDOUIsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7U0FDbkM7UUFFRCwrRUFBK0U7UUFDL0UsY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFL0QsMEVBQTBFO1FBQzFFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksS0FBSyxTQUFTLENBQUMsWUFBWSxFQUFFO1lBQ3BHLGFBQWEsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLFNBQVMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN2RTthQUFNO1lBQ0gsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO1NBQzVDO1FBRUQsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFFO1FBRTdDLHdEQUF3RDtRQUN4RCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNkLEdBQUcsU0FBUztZQUNaLGNBQWM7WUFDZCxVQUFVO1lBQ1YsV0FBVztZQUNYLGFBQWE7U0FDaEIsQ0FBQyxDQUFDO1FBRUgsNEJBQTRCO1FBQzVCLElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxjQUFjLEtBQUssaUJBQWlCLENBQUMsY0FBYyxFQUFFO1lBQzVFLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1NBQzFFO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxHQUFZO1FBQ2pCLE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNkLHNCQUFzQjtZQUN0QixPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3pCLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUMvQixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUN4QixvQkFBb0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDaEQsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxhQUFhO1FBQ2hCLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQztJQUNuRCxDQUFDO0lBRUQsWUFBWTtJQUNMLGtCQUFrQjtRQUNyQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDVixHQUFHLElBQUksQ0FBQyxLQUFLO1lBQ2IsY0FBYyxFQUFHLENBQUMsUUFBUTtTQUM3QixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU0sb0JBQW9CLENBQUMsV0FBb0I7UUFDNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNWLEdBQUcsSUFBSSxDQUFDLEtBQUs7WUFDYixjQUFjLEVBQUcsV0FBVztTQUMvQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVNLHVCQUF1QixDQUFDLFFBQWlCO1FBQzVDLElBQUksUUFBUSxFQUFFO1lBQ1YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQ0FBa0MsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFJLDJDQUEyQztZQUNuSCxJQUFJLENBQUMsZUFBZSxDQUFDLHVCQUF1QixFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQWUsZ0NBQWdDO1lBQ3hHLElBQUksQ0FBQyxlQUFlLENBQUMsb0JBQW9CLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBa0IscUNBQXFDO1NBQ2hIO2FBQU07WUFDSCxJQUFJLENBQUMsZUFBZSxDQUFDLGtDQUFrQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQVUsNkNBQTZDO1lBQ3JILElBQUksQ0FBQyxlQUFlLENBQUMsdUJBQXVCLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBa0Isa0NBQWtDO1lBQzFHLElBQUksQ0FBQyxlQUFlLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBd0IsdUNBQXVDO1NBQ2xIO0lBQ0wsQ0FBQztJQUVELGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ1YsZ0JBQWdCLENBQUMsZ0JBQWdCLEdBQUcsMEJBQTBCO1FBQ2pFLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7YUFDekIsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDWCxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUNWLEdBQUcsSUFBSSxDQUFDLEtBQUs7Z0JBQ2IsV0FBVyxFQUFFLElBQUk7YUFDcEIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU0sZUFBZTtRQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ1YsR0FBRyxJQUFJLENBQUMsS0FBSztZQUNiLFVBQVUsRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRTtZQUM3QixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztTQUNqQztJQUNMLENBQUM7SUFFTSxxQkFBcUI7UUFDeEIsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVNLHFCQUFxQjtRQUN4QixJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRU0sY0FBYztRQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ1YsR0FBRyxJQUFJLENBQUMsS0FBSztZQUNiLFNBQVMsRUFBRSxJQUFJO1NBQ2xCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFTSxlQUFlO1FBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDVixHQUFHLElBQUksQ0FBQyxLQUFLO1lBQ2IsVUFBVSxFQUFFLElBQUk7U0FDbkIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVNLFlBQVk7UUFDZixNQUFNLFdBQVcsR0FBRztZQUNoQixpQ0FBaUM7WUFDakMsZ0NBQWdDO1lBQ2hDLGdDQUFnQztZQUNoQyxrQ0FBa0M7WUFDbEMsaUNBQWlDO1lBQ2pDLGlDQUFpQztZQUNqQyxnQ0FBZ0M7WUFDaEMsdUNBQXVDO1lBQ3ZDLHNDQUFzQztZQUN0Qyx5Q0FBeUM7WUFDekMsd0NBQXdDO1lBQ3hDLHlDQUF5QztZQUN6Qyx3Q0FBd0M7U0FDM0MsQ0FBQztRQUVGLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2pDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsaUNBQWlDLEVBQUUseUJBQXlCLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsU0FBUyxDQUFDLGtDQUFrQyxFQUFFLDBCQUEwQixDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQ0FBaUMsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxTQUFTLENBQUMsdUNBQXVDLEVBQUUsK0JBQStCLENBQUMsQ0FBQztRQUN6RixJQUFJLENBQUMsU0FBUyxDQUFDLHlDQUF5QyxFQUFFLGlDQUFpQyxDQUFDLENBQUM7UUFDN0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyx5Q0FBeUMsRUFBRSxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFTSxxQkFBcUI7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQ0FBZ0MsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFTSxzQkFBc0I7UUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQ0FBaUMsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFTSxxQkFBcUI7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQ0FBZ0MsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxNQUFlO1FBQ3hDLElBQUksTUFBTSxFQUFFO1lBQ1IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQ0FBZ0MsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO1NBQy9FO2FBQU07WUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLGdDQUFnQyxFQUFFLHlCQUF5QixDQUFDLENBQUM7U0FDL0U7SUFDTCxDQUFDO0lBRU0sc0JBQXNCO1FBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsZ0NBQWdDLEVBQUUseUJBQXlCLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsU0FBUyxDQUFDLHNDQUFzQyxFQUFFLCtCQUErQixDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUVNLDRCQUE0QjtRQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLHdDQUF3QyxFQUFFLGlDQUFpQyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVNLDRCQUE0QjtRQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLHdDQUF3QyxFQUFFLGlDQUFpQyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLEdBQWMsRUFBRSxRQUFrQixFQUFFLFVBQW9CLEVBQUUsSUFBYSxFQUFFLFFBQWlCLEVBQUUsUUFBcUI7UUFDbkgsSUFBSSxHQUFHLENBQUMsUUFBUSxLQUFLLE1BQU0sSUFBSSxHQUFHLENBQUMsUUFBUSxLQUFLLFNBQVMsSUFBSSxHQUFHLENBQUMsUUFBUSxLQUFLLFNBQVMsSUFBSSxHQUFHLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRTtZQUNsSCxNQUFNLElBQUksS0FBSyxDQUFDLG9HQUFvRyxDQUFDLENBQUM7U0FDekg7YUFBTTtZQUNILElBQUksVUFBVSxLQUFLLFNBQVMsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDekMsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7YUFDM0I7WUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BELEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2hCLEdBQUcsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO1lBRXRCLElBQUksSUFBSSxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ25DLElBQUksR0FBRyxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUU7b0JBQzNCLFFBQVEsR0FBRyxJQUFJLENBQUM7aUJBQ25CO3FCQUFNO29CQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2lCQUN6QjthQUNKO2lCQUFNO2dCQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2FBQ3pCO1lBRUQsSUFBSSxRQUFRLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUM7YUFDakM7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7YUFDOUI7WUFFRCxJQUFJLFFBQVEsRUFBRTtnQkFDVixJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQzthQUNqQztZQUVELElBQUksUUFBUSxFQUFFO2dCQUNWLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDO2FBQ2pDO2lCQUFNO2dCQUNILElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxFQUFFO2dCQUMxQixDQUFDLENBQUM7YUFDTDtTQUNKO0lBQ0wsQ0FBQztJQUVELFVBQVU7UUFDTixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsWUFBWSxDQUFDLEdBQVcsRUFBRSxRQUFpQjtRQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM1RyxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVcsRUFBRSxRQUFpQjtRQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN6RyxDQUFDO0lBRUQsZUFBZTtJQUVmLFlBQVksQ0FBQyxHQUFXLEVBQUUsUUFBaUI7UUFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDNUcsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFXLEVBQUUsUUFBaUI7UUFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUVELFNBQVMsQ0FBQyxPQUFnQjtRQUN0QixRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNWLE9BQU8sR0FBRyxjQUFjLENBQUM7U0FDNUI7UUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztZQUNuQixFQUFFLEVBQUUsT0FBTztZQUNYLE1BQU0sRUFBRSxJQUFJO1NBQ2YsQ0FBQyxDQUFDO1FBRUgsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsT0FBTyxHQUFHLGVBQWUsQ0FBQyxDQUFDO1lBQzlELElBQUksRUFBRSxFQUFFO2dCQUNKLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNkO1FBQ0wsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVELGNBQWMsQ0FBQyxZQUFxQjtRQUNoQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ2YsWUFBWSxHQUFHLGtCQUFrQixDQUFDO1NBQ3JDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsZUFBZSxDQUFDLFlBQXFCO1FBQ2pDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDZixZQUFZLEdBQUcsa0JBQWtCLENBQUM7U0FDckM7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBZ0I7UUFDeEIsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNWLE9BQU8sR0FBRyxjQUFjLENBQUM7U0FDNUI7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFO1lBQzFCLElBQUksVUFBVSxHQUFXLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEQsSUFBSSxVQUFVLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ25CLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUM7YUFDL0M7U0FDSjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxvQkFBb0I7SUFFcEIsVUFBVSxDQUFDLE9BQWdCO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDVixPQUFPLEdBQUcsY0FBYyxDQUFDO1NBQzVCO1FBRUQ7O1dBRUc7UUFDSCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNDLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRTtZQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN0QztRQUVELElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7WUFDcEQsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ2hEO2FBQU07WUFDSCwySEFBMkg7WUFDM0gsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBRSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDeEUsSUFBSSxXQUFXLEVBQUU7Z0JBQ2IsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDWixNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFdBQVcsR0FBRyxlQUFlLENBQUMsQ0FBQztvQkFDbEUsSUFBSSxFQUFFLEVBQUU7d0JBQ0osRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO3FCQUNkO2dCQUNMLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUNYO1NBQ0o7SUFDTCxDQUFDO0lBRUQsY0FBYyxDQUFDLE9BQWU7UUFDMUIsSUFBSSxLQUFLLEdBQVcsQ0FBQyxDQUFDLENBQUM7UUFFdkIsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRTtZQUMxQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQy9DLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssT0FBTyxFQUFFO29CQUNyQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO29CQUNWLE1BQU07aUJBQ1Q7YUFDSjtTQUNKO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixrQkFBa0I7SUFDbEIsa0JBQWtCO0lBQ1YsY0FBYyxDQUFDLGFBQWE7UUFDaEMsT0FBTyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVPLFNBQVMsQ0FBQyxhQUFhLEVBQUUsY0FBYztRQUMzQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQy9FLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2xELDJEQUEyRDtJQUMvRCxDQUFDO0lBRU8sZUFBZSxDQUFDLE9BQU8sRUFBRSxRQUFRO1FBQ3JDLFFBQVEsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEtBQWMsRUFBRSxVQUFrQjtRQUN4RCxJQUFJLE9BQU8sR0FBYSxFQUFFLENBQUM7UUFFM0IsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV6QixJQUFJLEtBQUssQ0FBQyxhQUFhLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFO1lBQzlFLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUN0QztRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsRUFBRTtZQUMvRSxPQUFPLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7U0FDdkM7UUFDRCxJQUFJLEtBQUssQ0FBQyxlQUFlLEVBQUU7WUFDdkIsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsSUFBSSxLQUFLLENBQUMsb0JBQW9CLEVBQUU7WUFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1NBQ3hDO1FBQ0QsSUFBSSxLQUFLLENBQUMsNEJBQTRCLEVBQUU7WUFDcEMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1NBQ2xEO1FBRUQsc0JBQXNCO1FBQ3RCLElBQUksS0FBSyxDQUFDLGVBQWUsRUFBRTtZQUN2QixPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDbkM7UUFDRCxJQUFJLEtBQUssQ0FBQyxhQUFhLEVBQUU7WUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUNqQzthQUFNO1lBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsSUFBSSxLQUFLLENBQUMsY0FBYyxFQUFFO1lBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUNsQztRQUNELElBQUksS0FBSyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRTtZQUMzQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3RCO1FBQ0QsSUFBSSxLQUFLLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFO1lBQzNDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdEI7UUFDRCxJQUFJLEtBQUssQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUU7WUFDN0MsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN4QjtRQUNELElBQUksS0FBSyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRTtZQUMvQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzFCO1FBQ0QsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTyxhQUFhLENBQUMsV0FBbUI7UUFDckMsSUFBSSxHQUFHLEdBQVcsRUFBRSxDQUFDO1FBRXJCLFFBQVEsSUFBSSxFQUFFO1lBQ2QsS0FBSyxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksV0FBVyxHQUFHLEdBQUcsQ0FBQztnQkFDeEMsR0FBRyxHQUFHLElBQUksQ0FBQztnQkFDWCxNQUFNO1lBQ1YsS0FBSyxDQUFDLFdBQVcsSUFBSSxHQUFHLElBQUksV0FBVyxHQUFHLEdBQUcsQ0FBQztnQkFDMUMsR0FBRyxHQUFHLElBQUksQ0FBQztnQkFDWCxNQUFNO1lBQ1YsS0FBSyxDQUFDLFdBQVcsSUFBSSxHQUFHLElBQUksV0FBVyxHQUFHLEdBQUcsQ0FBQztnQkFDMUMsR0FBRyxHQUFHLElBQUksQ0FBQztnQkFDWCxNQUFNO1lBQ1YsS0FBSyxDQUFDLFdBQVcsSUFBSSxHQUFHLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQztnQkFDM0MsR0FBRyxHQUFHLElBQUksQ0FBQztnQkFDWCxNQUFNO1lBQ1YsS0FBSyxDQUFDLFdBQVcsSUFBSSxJQUFJLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQztnQkFDNUMsR0FBRyxHQUFHLElBQUksQ0FBQztnQkFDWCxNQUFNO1lBQ1YsS0FBSyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUM7Z0JBQ3RCLEdBQUcsR0FBRyxLQUFLLENBQUM7Z0JBQ1osTUFBTTtTQUNUO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRU8sY0FBYyxDQUFDLEdBQVc7UUFDOUIsT0FBTztZQUNILFFBQVEsRUFBRSxDQUFDLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQztZQUN4QyxRQUFRLEVBQUUsR0FBRyxLQUFLLElBQUk7WUFDdEIsV0FBVyxFQUFFLENBQUMsR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxJQUFJLENBQUM7WUFDM0QsU0FBUyxFQUFFLEdBQUcsS0FBSyxJQUFJO1lBQ3ZCLElBQUksRUFBRSxHQUFHLEtBQUssSUFBSTtZQUNsQixLQUFLLEVBQUUsR0FBRyxLQUFLLEtBQUs7U0FDdkIsQ0FBQztJQUNOLENBQUM7SUFFTyxPQUFPLENBQUMsR0FBVztRQUN2QixPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ1gsR0FBRyxDQUFDLEdBQUcsQ0FBQzthQUNSLFNBQVMsRUFBRTthQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2FBQ3RCLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVPLFdBQVcsQ0FBQyxHQUFhO1FBQzdCLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNqQixPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFVO1FBQzFCLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDMUMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVPLGlDQUFpQztRQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUM3RCxJQUFJLFVBQVUsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRTtnQkFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztvQkFDVixHQUFHLElBQUksQ0FBQyxLQUFLO29CQUNiLGNBQWMsRUFBRSxVQUFVO2lCQUM3QixFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ2I7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O3lKQWxvQlEsaUJBQWlCLGtCQWtIRixtQkFBbUIsdURBRS9CLFdBQVc7NkpBcEhkLGlCQUFpQixjQUhkLE1BQU07Z0dBR1QsaUJBQWlCO2tCQUo3QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBb0hRLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsbUJBQW1CO3VEQUVFLE1BQU07MEJBQTlDLE1BQU07MkJBQUMsV0FBVzs7MEJBR2xCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsLCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZGVmZXIsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFV4RXVMYW5ndWFnZXMsIEdsb2JhbENvbmZpZywgVXhMaW5rLCBVeE1vZGFsLCBnZXRBY3RpdmVMYW5nLCBVeE1lc3NhZ2UsIFV4TGFuZ3VhZ2UgfSBmcm9tICdAZXVpL2Jhc2UnO1xuaW1wb3J0IHsgR0xPQkFMX0NPTkZJR19UT0tFTiB9IGZyb20gJy4vY29uZmlnL3Rva2Vucyc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4vaTE4bic7XG5pbXBvcnQgeyBSb3V0ZXIsIE5hdmlnYXRpb25FbmQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yZS9zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC1lcy9pc0VxdWFsJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoLWVzL2dldCc7XG5pbXBvcnQgeyBVeFJvb3RJbmplY3Rvckd1YXJkIH0gZnJvbSAnLi91eC1yb290LWluamVjdG9yLmd1YXJkJztcblxuZXhwb3J0IGludGVyZmFjZSBVSVN0YXRlIHtcbiAgICAvLyBhcHAgc3RhdGVcbiAgICBhcHBOYW1lPzogc3RyaW5nO1xuICAgIGFwcFNob3J0TmFtZT86IHN0cmluZztcbiAgICBhcHBTdWJUaXRsZT86IHN0cmluZztcblxuICAgIC8vIHVzZXIgc3RhdGVcbiAgICB1c2VySW5mb3M/OiBzdHJpbmc7XG4gICAgdXNlclN1YkluZm9zPzogc3RyaW5nO1xuICAgIGltcGVyc29uYXRlZFVzZXJJbmZvcz86IHN0cmluZztcblxuICAgIC8vIFNpZGViYXIgc3RhdGVcbiAgICBpc1NpZGViYXJPcGVuPzogYm9vbGVhbjtcbiAgICBpc1NpZGViYXJIb3Zlcj86IGJvb2xlYW47XG4gICAgaXNTaWRlYmFyQWN0aXZlPzogYm9vbGVhbjtcbiAgICBpc1NpZGViYXJJbm5lckFjdGl2ZT86IGJvb2xlYW47XG4gICAgaXNTaWRlYmFyU3RhdGVDbG9zZVdpdGhJY29ucz86IGJvb2xlYW47XG4gICAgaGFzU2lkZWJhcj86IGJvb2xlYW47XG4gICAgaGFzSGVhZGVyPzogYm9vbGVhbjtcbiAgICBoYXNIZWFkZXJMb2dvPzogYm9vbGVhbjtcbiAgICBoYXNIZWFkZXJFbnZpcm9ubWVudD86IGJvb2xlYW47XG4gICAgZW52aXJvbm1lbnRWYWx1ZT86IHN0cmluZztcbiAgICBpc1NpZGViYXJIaWRkZW4/OiBib29sZWFuO1xuICAgIGhhc1Rvb2xiYXI/OiBib29sZWFuO1xuXG4gICAgLy8gd2luZG93IHN0YXRlXG4gICAgd2luZG93V2lkdGg/OiBudW1iZXI7XG4gICAgd2luZG93SGVpZ2h0PzogbnVtYmVyO1xuICAgIG1haW5Db250ZW50SGVpZ2h0PzogbnVtYmVyO1xuICAgIHBhZ2VIZWFkZXJIZWlnaHQ/OiBudW1iZXI7XG4gICAgYnJlYWtwb2ludD86IHN0cmluZztcbiAgICB3cmFwcGVyQ2xhc3Nlcz86IHN0cmluZztcbiAgICBicmVha3BvaW50cz86IGFueTtcblxuICAgIC8vIG5hdmlnYXRpb24gc3RhdGVcbiAgICBtZW51TGlua3M/OiBVeExpbmtbXTtcbiAgICBzaWRlYmFyTGlua3M/OiBVeExpbmtbXTtcbiAgICBjb21iaW5lZExpbmtzPzogVXhMaW5rW107XG5cbiAgICAvLyBvdGhlciBzdGF0ZXNcbiAgICBpc0Jsb2NrRG9jdW1lbnRBY3RpdmU/OiBib29sZWFuO1xuXG4gICAgLy8gZGV2aWNlIGluZm9cbiAgICBkZXZpY2VJbmZvOiBhbnk7XG5cbiAgICAvLyBsYW5ndWFnZSBpbmZvc1xuICAgIGFjdGl2ZUxhbmd1YWdlOiBzdHJpbmc7XG4gICAgbGFuZ3VhZ2VzOiAoc3RyaW5nIHwgVXhMYW5ndWFnZSlbXTtcblxuICAgIC8vIGFwcCBtZXRhZGF0YVxuICAgIGFwcE1ldGFkYXRhOiBhbnk7XG5cbiAgICAvLyB2YXJpb3VzIGR5bmFtaWMgc3RhdGVcbiAgICBoYXNNb2RhbEFjdGl2ZT86IGJvb2xlYW47XG4gICAgaXNEaW1tZXJBY3RpdmUgPzogYm9vbGVhbjsgICAgIC8vIFVzYWdlOiBtYXAgdG8gZXVpIGJhc2UgZGlyZWN0aXZlIGlucHV0IGNvZXJjZSBldWlIaWdobGlnaHRlZFxufVxuXG5jb25zdCBpbml0aWFsU3RhdGU6IFVJU3RhdGUgPSB7XG4gICAgYXBwTmFtZTogJycsXG4gICAgYXBwU2hvcnROYW1lOiAnJyxcbiAgICBhcHBTdWJUaXRsZTogJycsXG4gICAgdXNlckluZm9zOiBudWxsLFxuICAgIHVzZXJTdWJJbmZvczogbnVsbCxcbiAgICBpbXBlcnNvbmF0ZWRVc2VySW5mb3M6IG51bGwsXG4gICAgaXNTaWRlYmFyT3BlbjogZmFsc2UsXG4gICAgaXNTaWRlYmFySG92ZXI6IGZhbHNlLFxuICAgIGlzU2lkZWJhckFjdGl2ZTogZmFsc2UsXG4gICAgaXNTaWRlYmFySW5uZXJBY3RpdmU6IGZhbHNlLFxuICAgIGlzU2lkZWJhclN0YXRlQ2xvc2VXaXRoSWNvbnM6IGZhbHNlLFxuICAgIGhhc1NpZGViYXI6IGZhbHNlLFxuICAgIGhhc0hlYWRlcjogZmFsc2UsXG4gICAgaGFzSGVhZGVyTG9nbzogZmFsc2UsXG4gICAgaGFzSGVhZGVyRW52aXJvbm1lbnQ6IGZhbHNlLFxuICAgIGVudmlyb25tZW50VmFsdWU6ICcnLFxuICAgIGlzU2lkZWJhckhpZGRlbjogZmFsc2UsXG4gICAgaGFzVG9vbGJhcjogZmFsc2UsXG4gICAgd2luZG93V2lkdGg6IDAsXG4gICAgd2luZG93SGVpZ2h0OiAwLFxuICAgIG1haW5Db250ZW50SGVpZ2h0OiAwLFxuICAgIHBhZ2VIZWFkZXJIZWlnaHQ6IDAsXG4gICAgd3JhcHBlckNsYXNzZXM6ICcnLFxuICAgIGJyZWFrcG9pbnQ6ICcnLFxuICAgIGJyZWFrcG9pbnRzOiB7XG4gICAgICAgIGlzTW9iaWxlOiBmYWxzZSxcbiAgICAgICAgaXNUYWJsZXQ6IGZhbHNlLFxuICAgICAgICBpc0x0RGVza3RvcDogZmFsc2UsXG4gICAgICAgIGlzRGVza3RvcDogZmFsc2UsXG4gICAgICAgIGlzWEw6IGZhbHNlLFxuICAgICAgICBpc1hYTDogZmFsc2UsXG4gICAgfSxcbiAgICBtZW51TGlua3M6IFtdLFxuICAgIHNpZGViYXJMaW5rczogW10sXG4gICAgY29tYmluZWRMaW5rczogW10sXG4gICAgaXNCbG9ja0RvY3VtZW50QWN0aXZlOiBmYWxzZSxcbiAgICBkZXZpY2VJbmZvOiBudWxsLFxuICAgIGFjdGl2ZUxhbmd1YWdlOiAnZW4nLFxuICAgIGxhbmd1YWdlczogVXhFdUxhbmd1YWdlcy5nZXRMYW5ndWFnZXMoKSxcbiAgICBhcHBNZXRhZGF0YTogbnVsbCxcbiAgICBoYXNNb2RhbEFjdGl2ZTogZmFsc2UsXG4gICAgaXNEaW1tZXJBY3RpdmUgOiBmYWxzZSxcbn07XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuLy8gZXhwb3J0IGNsYXNzIFV4QXBwU2hlbGxTZXJ2aWNlIGV4dGVuZHMgVXhSb290SW5qZWN0b3JHdWFyZCB7XG5leHBvcnQgY2xhc3MgVXhBcHBTaGVsbFNlcnZpY2Uge1xuICAgIGdyb3dsTWVzc2FnZXMgPSBbXTtcbiAgICBpc0dyb3dsU3RpY2t5OiBib29sZWFuID0gZmFsc2U7XG4gICAgZ3Jvd2xMaWZlOiBudW1iZXIgPSAzMDAwO1xuICAgIGdyb3dsUG9zaXRpb246IHN0cmluZyA9ICdib3R0b20tcmlnaHQnO1xuICAgIGdyb3dsQ2FsbGJhY2s6IGFueSA9IG51bGw7XG4gICAgYWN0aXZlTW9kYWxzOiBVeE1vZGFsW10gPSBbXTtcbiAgICBvcGVuTW9kYWxJZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG5cbiAgICBuYXZpZ2F0aW9uU3RhcnRDdXN0b21IYW5kbGVyOiAoKSA9PiB2b2lkO1xuICAgIG5hdmlnYXRpb25FbmRDdXN0b21IYW5kbGVyOiAoKSA9PiB2b2lkO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGdldCBzdGF0ZSQoKTogT2JzZXJ2YWJsZTxVSVN0YXRlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGF0ZSQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIGV4cG9zZWQgb2JzZXJ2YWJsZXNcblxuICAgIGdldCBicmVha3BvaW50JCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgZ2V0IGJyZWFrcG9pbnRzJCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludHMkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBzdGF0ZSBvcGVyYXRpb25zXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLVxuICAgIGdldCBzdGF0ZSgpOiBVSVN0YXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIGdldCBpc1NpZGViYXJPcGVuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5pc1NpZGViYXJPcGVuO1xuICAgIH1cblxuICAgIC8vIEVkaXQgbW9kZVxuICAgIGdldCBpc0RpbW1lckFjdGl2ZSAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLmlzRGltbWVyQWN0aXZlIDtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gcHVibGljIHNldHRlcnMgYW5kIGZ1bmN0aW9uc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBzZXQgaXNTaWRlYmFyT3Blbihpc09wZW46IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAuLi50aGlzLnN0YXRlLFxuICAgICAgICAgICAgaXNTaWRlYmFyT3BlbjogaXNPcGVuLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXQgaXNTaWRlYmFySG92ZXIoaXNIb3ZlcjogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgICBpc1NpZGViYXJIb3ZlcjogaXNIb3ZlcixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0IGlzU2lkZWJhckhvdmVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5pc1NpZGViYXJIb3ZlcjtcbiAgICB9XG5cbiAgICBzZXQgaXNTaWRlYmFyQWN0aXZlKGlzQWN0aXZlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZSxcbiAgICAgICAgICAgIGlzU2lkZWJhckFjdGl2ZTogaXNBY3RpdmUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldCBpc1NpZGViYXJJbm5lckFjdGl2ZShpc09wZW46IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAuLi50aGlzLnN0YXRlLFxuICAgICAgICAgICAgaXNTaWRlYmFySW5uZXJBY3RpdmU6IGlzT3BlbixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0IHNpZGViYXJMaW5rcyhsaW5rczogVXhMaW5rW10pIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAuLi50aGlzLnN0YXRlLFxuICAgICAgICAgICAgc2lkZWJhckxpbmtzOiBsaW5rcyxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0IG1lbnVMaW5rcyhsaW5rczogVXhMaW5rW10pIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAuLi50aGlzLnN0YXRlLFxuICAgICAgICAgICAgbWVudUxpbmtzOiBsaW5rcyxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0IGlzQmxvY2tEb2N1bWVudEFjdGl2ZShpc0FjdGl2ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgICBpc0Jsb2NrRG9jdW1lbnRBY3RpdmU6IGlzQWN0aXZlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBFZGl0IG1vZGVcbiAgICBzZXQgaXNEaW1tZXJBY3RpdmUgKGlzQWN0aXZlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZSxcbiAgICAgICAgICAgIGlzRGltbWVyQWN0aXZlIDogaXNBY3RpdmUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3NzVmFycyA9IFtdO1xuICAgIHByaXZhdGUgX3N0YXRlJDogQmVoYXZpb3JTdWJqZWN0PFVJU3RhdGU+O1xuICAgIHByaXZhdGUgX2JyZWFrcG9pbnQkOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPjtcbiAgICBwcml2YXRlIF9icmVha3BvaW50cyQ6IEJlaGF2aW9yU3ViamVjdDxhbnk+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoR0xPQkFMX0NPTkZJR19UT0tFTikgcHJvdGVjdGVkIGNvbmZpZzogR2xvYmFsQ29uZmlnLFxuICAgICAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIHN0b3JlU2VydmljZTogU3RvcmVTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGkxOG5TZXJ2aWNlOiBJMThuU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgLy8gc3VwZXIoVXhBcHBTaGVsbFNlcnZpY2UpO1xuICAgICAgICBjb25zb2xlLmxvZygnVXhBcHBTaGVsbFNlcnZpY2UgaW5pdGlhbGl6ZWQnKTtcblxuICAgICAgICBsZXQgc3RhdGVXaXRoQ29uZmlnID0gaW5pdGlhbFN0YXRlO1xuICAgICAgICBjb25zdCBsYW5ndWFnZXMgPSBjb25maWc/LmkxOG4/LmkxOG5TZXJ2aWNlPy5sYW5ndWFnZXMgfHwgaW5pdGlhbFN0YXRlLmxhbmd1YWdlcztcbiAgICAgICAgY29uc3QgZGVmYXVsdExhbmd1YWdlID0gY29uZmlnPy5pMThuPy5pMThuU2VydmljZT8uZGVmYXVsdExhbmd1YWdlIHx8IGluaXRpYWxTdGF0ZS5hY3RpdmVMYW5ndWFnZTtcbiAgICAgICAgc3RhdGVXaXRoQ29uZmlnID0ge1xuICAgICAgICAgICAgLi4uc3RhdGVXaXRoQ29uZmlnLCAuLi57XG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VzOiBsYW5ndWFnZXMsXG4gICAgICAgICAgICAgICAgYWN0aXZlTGFuZ3VhZ2U6IGRlZmF1bHRMYW5ndWFnZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX3N0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Qoc3RhdGVXaXRoQ29uZmlnKTtcbiAgICAgICAgdGhpcy5fYnJlYWtwb2ludCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcnKTtcbiAgICAgICAgdGhpcy5fYnJlYWtwb2ludHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdCh7fSk7XG4gICAgICAgIHRoaXMuYmluZEFjdGl2ZUxhbmd1YWdlVG9BcHBTaGVsbFN0YXRlKCk7XG5cbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHJvdXRlci5ldmVudHNcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFN0YXRlKG5leHRTdGF0ZTogVUlTdGF0ZSwgdXBkYXRlSTE4ID0gdHJ1ZSkge1xuICAgICAgICBsZXQgYnJlYWtwb2ludCwgYnJlYWtwb2ludHMsIHdyYXBwZXJDbGFzc2VzO1xuICAgICAgICBsZXQgY29tYmluZWRMaW5rcztcblxuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGU7XG5cbiAgICAgICAgLy8gY2hlY2sgaWYgd2luZG93IHdpZHRoIGhhcyBiZWVuIHVwZGF0ZWQgZnJvbSBwcmV2aW91cyBzdGF0ZVxuICAgICAgICBpZiAodGhpcy5zdGF0ZS53aW5kb3dXaWR0aCAhPT0gbmV4dFN0YXRlLndpbmRvd1dpZHRoKSB7XG4gICAgICAgICAgICBicmVha3BvaW50ID0gdGhpcy5nZXRCcmVha3BvaW50KG5leHRTdGF0ZS53aW5kb3dXaWR0aCk7XG4gICAgICAgICAgICBicmVha3BvaW50cyA9IHRoaXMuZ2V0QnJlYWtwb2ludHMoYnJlYWtwb2ludCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnQkLm5leHQoYnJlYWtwb2ludCk7XG4gICAgICAgICAgICB0aGlzLl9icmVha3BvaW50cyQubmV4dChicmVha3BvaW50cyk7XG5cbiAgICAgICAgICAgIC8vIGlmIG5vdCBwcm9wYWdhdGUgdGhlIG9sZCBvbmVzIHdpdGhvdXQgZG9pbmcgYW55IGNhbGN1bGF0aW9uc1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnJlYWtwb2ludCA9IHN0YXRlLmJyZWFrcG9pbnQ7XG4gICAgICAgICAgICBicmVha3BvaW50cyA9IHN0YXRlLmJyZWFrcG9pbnRzO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZmluYWxseSBnZXQgdGhlIHdyYXBwZXIgY2xhc3NlcyB3aGVuIGJvdGggdGhlIHN0YXRlIGFuZCBicmVha3BvaW50IGFyZSBrbm93blxuICAgICAgICB3cmFwcGVyQ2xhc3NlcyA9IHRoaXMuZ2V0V3JhcHBlckNsYXNzZXMobmV4dFN0YXRlLCBicmVha3BvaW50KTtcblxuICAgICAgICAvLyBjaGVjayBpZiB0aGUgbWVudUxpbmtzIG9yIHNpZGViYXJMaW5rcyBoYXZlIGNoYW5nZWQgZnJvbSBwcmV2aW91cyBzdGF0ZVxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5tZW51TGlua3MgIT09IG5leHRTdGF0ZS5tZW51TGlua3MgfHwgdGhpcy5zdGF0ZS5zaWRlYmFyTGlua3MgIT09IG5leHRTdGF0ZS5zaWRlYmFyTGlua3MpIHtcbiAgICAgICAgICAgIGNvbWJpbmVkTGlua3MgPSBbLi4ubmV4dFN0YXRlLm1lbnVMaW5rcywgLi4ubmV4dFN0YXRlLnNpZGViYXJMaW5rc107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb21iaW5lZExpbmtzID0gdGhpcy5zdGF0ZS5jb21iaW5lZExpbmtzO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3RhdGVCZWZvcmVVcGRhdGUgPSB7IC4uLnRoaXMuc3RhdGUgfSA7XG5cbiAgICAgICAgLy8gd2UgcHV0IGl0IGFsbCB0b2dldGhlciB3aXRoIHRoZSBjYWxjdWxhdGVkIHByb3BlcnRpZXNcbiAgICAgICAgdGhpcy5fc3RhdGUkLm5leHQoe1xuICAgICAgICAgICAgLi4ubmV4dFN0YXRlLFxuICAgICAgICAgICAgd3JhcHBlckNsYXNzZXMsXG4gICAgICAgICAgICBicmVha3BvaW50LFxuICAgICAgICAgICAgYnJlYWtwb2ludHMsXG4gICAgICAgICAgICBjb21iaW5lZExpbmtzLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyB1cGRhdGUgdGhlIFN0b3JlIExhbmd1YWdlXG4gICAgICAgIGlmICh1cGRhdGVJMTggJiYgbmV4dFN0YXRlLmFjdGl2ZUxhbmd1YWdlICE9PSBzdGF0ZUJlZm9yZVVwZGF0ZS5hY3RpdmVMYW5ndWFnZSkge1xuICAgICAgICAgICAgdGhpcy5pMThuU2VydmljZS51cGRhdGVTdGF0ZSh7IGFjdGl2ZUxhbmc6IG5leHRTdGF0ZS5hY3RpdmVMYW5ndWFnZSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVtaXRzIGEgc2xpY2UgZnJvbSB0aGUgc3RhdGUgd2hldGhlciB0aGF0IGNoYW5nZXNcbiAgICAgKiBAcGFyYW0ga2V5IGNhbiBiZSAna2V5JyBvciAna2V5LnN1Yi5zdWInXG4gICAgICovXG4gICAgZ2V0U3RhdGUoa2V5Pzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGRlZmVyKCgpID0+IHtcbiAgICAgICAgICAgIC8vIGNoZWNrIGlmIGtleSBleGlzdHNcbiAgICAgICAgICAgIHJldHVybiBrZXkgPyB0aGlzLnN0YXRlJC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoc3RhdGUpID0+IGdldChzdGF0ZSwga2V5KSksXG4gICAgICAgICAgICAgICAgZmlsdGVyKChzdGF0ZSkgPT4gc3RhdGUpLFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCh4LCB5KSA9PiBpc0VxdWFsKHgsIHkpKVxuICAgICAgICAgICAgKSA6IHRoaXMuc3RhdGUkO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2lkZWJhclRvZ2dsZSgpIHtcbiAgICAgICAgdGhpcy5pc1NpZGViYXJPcGVuID0gIXRoaXMuc3RhdGUuaXNTaWRlYmFyT3BlbjtcbiAgICB9XG5cbiAgICAvLyBFZGl0IG1vZGVcbiAgICBwdWJsaWMgZGltbWVyQWN0aXZlVG9nZ2xlKCkge1xuICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IHRoaXMuaXNEaW1tZXJBY3RpdmU7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZSxcbiAgICAgICAgICAgIGlzRGltbWVyQWN0aXZlIDogIWlzQWN0aXZlLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZUVkaXRNb2RlQ3NzVmFycyghaXNBY3RpdmUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXREaW1tZXJBY3RpdmVTdGF0ZShhY3RpdmVTdGF0ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgICBpc0RpbW1lckFjdGl2ZSA6IGFjdGl2ZVN0YXRlLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZUVkaXRNb2RlQ3NzVmFycyhhY3RpdmVTdGF0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlRWRpdE1vZGVDc3NWYXJzKGlzQWN0aXZlOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0Q3NzVmFyVmFsdWUoJy0tZXVpLWRvY3BhZ2UtbmF2aWdhdGlvbi16LWluZGV4JywgJ2luaGVyaXQnKTsgICAgLy8gUmVzZXQgZG9jLXBhZ2UtbmF2aWdhdGlvbi1jb2x1bW4gei1pbmRleFxuICAgICAgICAgICAgdGhpcy5fc2V0Q3NzVmFyVmFsdWUoJy0tZXVpLXotaW5kZXgtc2lkZWJhcicsICdpbmhlcml0Jyk7ICAgICAgICAgICAgICAgLy8gUmVzZXQgZXVpLWFwcC1zaWRlYmFyIHotaW5kZXhcbiAgICAgICAgICAgIHRoaXMuX3NldENzc1ZhclZhbHVlKCctLWV1aS16LWluZGV4LXJvb3QnLCAnaW5oZXJpdCcpOyAgICAgICAgICAgICAgICAgIC8vIFJlc2V0IGV1aS1hcHAtbWFpbi1jb250ZW50IHotaW5kZXhcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3NldENzc1ZhclZhbHVlKCctLWV1aS1kb2NwYWdlLW5hdmlnYXRpb24tei1pbmRleCcsICcyJyk7ICAgICAgICAgIC8vIFJlc3RvcmUgZG9jLXBhZ2UtbmF2aWdhdGlvbi1jb2x1bW4gei1pbmRleFxuICAgICAgICAgICAgdGhpcy5fc2V0Q3NzVmFyVmFsdWUoJy0tZXVpLXotaW5kZXgtc2lkZWJhcicsICcxMDQ0Jyk7ICAgICAgICAgICAgICAgICAgLy8gUmVzdG9yZSBldWktYXBwLXNpZGViYXIgei1pbmRleFxuICAgICAgICAgICAgdGhpcy5fc2V0Q3NzVmFyVmFsdWUoJy0tZXVpLXotaW5kZXgtcm9vdCcsICcxJyk7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzdG9yZSBldWktYXBwLW1haW4tY29udGVudCB6LWluZGV4XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLVxuICAgIC8vIHB1YmxpYyBtZXRob2RzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS1cbiAgICBwdWJsaWMgZmV0Y2hBcHBNZXRhZGF0YShtZXRhZGF0YUZpbGVQYXRoID0gJ2Fzc2V0cy9hcHAtbWV0YWRhdGEuanNvbicpIHtcbiAgICAgICAgdGhpcy5nZXRKc29uKG1ldGFkYXRhRmlsZVBhdGgpXG4gICAgICAgICAgICAudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLnN0YXRlLFxuICAgICAgICAgICAgICAgICAgICBhcHBNZXRhZGF0YTogZGF0YSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhY3RpdmF0ZVNpZGViYXIoKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZSxcbiAgICAgICAgICAgIGhhc1NpZGViYXI6IHRydWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghdGhpcy5zdGF0ZS5pc1NpZGViYXJIaWRkZW4pIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZhdGVTaWRlYmFyQ3NzVmFycygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlU2lkZWJhckhlYWRlcigpIHtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZVNpZGViYXJIZWFkZXJDc3NWYXJzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlU2lkZWJhckZvb3RlcigpIHtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZVNpZGViYXJGb290ZXJDc3NWYXJzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlSGVhZGVyKCkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgICBoYXNIZWFkZXI6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFjdGl2YXRlSGVhZGVyQ3NzVmFycygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhY3RpdmF0ZVRvb2xiYXIoKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZSxcbiAgICAgICAgICAgIGhhc1Rvb2xiYXI6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFjdGl2YXRlVG9vbGJhckNzc1ZhcnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmV0Y2hDc3NWYXJzKCkge1xuICAgICAgICBjb25zdCBjc3NWYXJOYW1lcyA9IFtcbiAgICAgICAgICAgICctLWV1aS1hcHAtaGVhZGVyLWhlaWdodC1kZWZhdWx0JyxcbiAgICAgICAgICAgICctLWV1aS1hcHAtaGVhZGVyLWhlaWdodC1hY3RpdmUnLFxuICAgICAgICAgICAgJy0tZXVpLWFwcC1oZWFkZXItaGVpZ2h0LXNocmluaycsXG4gICAgICAgICAgICAnLS1ldWktYXBwLXRvb2xiYXItaGVpZ2h0LWRlZmF1bHQnLFxuICAgICAgICAgICAgJy0tZXVpLWFwcC10b29sYmFyLWhlaWdodC1hY3RpdmUnLFxuICAgICAgICAgICAgJy0tZXVpLWFwcC1zaWRlYmFyLXdpZHRoLWRlZmF1bHQnLFxuICAgICAgICAgICAgJy0tZXVpLWFwcC1zaWRlYmFyLXdpZHRoLWFjdGl2ZScsXG4gICAgICAgICAgICAnLS1ldWktYXBwLXNpZGViYXItd2lkdGgtY2xvc2UtZGVmYXVsdCcsXG4gICAgICAgICAgICAnLS1ldWktYXBwLXNpZGViYXItd2lkdGgtY2xvc2UtYWN0aXZlJyxcbiAgICAgICAgICAgICctLWV1aS1hcHAtc2lkZWJhci1oZWFkZXItaGVpZ2h0LWRlZmF1bHQnLFxuICAgICAgICAgICAgJy0tZXVpLWFwcC1zaWRlYmFyLWhlYWRlci1oZWlnaHQtYWN0aXZlJyxcbiAgICAgICAgICAgICctLWV1aS1hcHAtc2lkZWJhci1mb290ZXItaGVpZ2h0LWRlZmF1bHQnLFxuICAgICAgICAgICAgJy0tZXVpLWFwcC1zaWRlYmFyLWZvb3Rlci1oZWlnaHQtYWN0aXZlJyxcbiAgICAgICAgXTtcblxuICAgICAgICB0aGlzLmNzc1ZhcnMgPSBjc3NWYXJOYW1lcy5tYXAoKHYpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7IGtleTogdiwgdmFsdWU6IHRoaXMuZ2V0Q3NzVmFyVmFsdWUodikgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGluaXRDc3NWYXJzKCkge1xuICAgICAgICB0aGlzLnNldENzc1ZhcignLS1ldWktYXBwLWhlYWRlci1oZWlnaHQtZGVmYXVsdCcsICctLWV1aS1hcHAtaGVhZGVyLWhlaWdodCcpO1xuICAgICAgICB0aGlzLnNldENzc1ZhcignLS1ldWktYXBwLXRvb2xiYXItaGVpZ2h0LWRlZmF1bHQnLCAnLS1ldWktYXBwLXRvb2xiYXItaGVpZ2h0Jyk7XG4gICAgICAgIHRoaXMuc2V0Q3NzVmFyKCctLWV1aS1hcHAtc2lkZWJhci13aWR0aC1kZWZhdWx0JywgJy0tZXVpLWFwcC1zaWRlYmFyLXdpZHRoJyk7XG4gICAgICAgIHRoaXMuc2V0Q3NzVmFyKCctLWV1aS1hcHAtc2lkZWJhci13aWR0aC1jbG9zZS1kZWZhdWx0JywgJy0tZXVpLWFwcC1zaWRlYmFyLXdpZHRoLWNsb3NlJyk7XG4gICAgICAgIHRoaXMuc2V0Q3NzVmFyKCctLWV1aS1hcHAtc2lkZWJhci1oZWFkZXItaGVpZ2h0LWRlZmF1bHQnLCAnLS1ldWktYXBwLXNpZGViYXItaGVhZGVyLWhlaWdodCcpO1xuICAgICAgICB0aGlzLnNldENzc1ZhcignLS1ldWktYXBwLXNpZGViYXItZm9vdGVyLWhlaWdodC1kZWZhdWx0JywgJy0tZXVpLWFwcC1zaWRlYmFyLWZvb3Rlci1oZWlnaHQnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWN0aXZhdGVIZWFkZXJDc3NWYXJzKCkge1xuICAgICAgICB0aGlzLnNldENzc1ZhcignLS1ldWktYXBwLWhlYWRlci1oZWlnaHQtYWN0aXZlJywgJy0tZXVpLWFwcC1oZWFkZXItaGVpZ2h0Jyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlVG9vbGJhckNzc1ZhcnMoKSB7XG4gICAgICAgIHRoaXMuc2V0Q3NzVmFyKCctLWV1aS1hcHAtdG9vbGJhci1oZWlnaHQtYWN0aXZlJywgJy0tZXVpLWFwcC10b29sYmFyLWhlaWdodCcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhY3RpdmF0ZUZvb3RlckNzc1ZhcnMoKSB7XG4gICAgICAgIHRoaXMuc2V0Q3NzVmFyKCctLWV1aS1hcHAtZm9vdGVyLWhlaWdodC1hY3RpdmUnLCAnLS1ldWktYXBwLWZvb3Rlci1oZWlnaHQnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0SGVhZGVyU2hyaW5rQ3NzVmFyKGFjdGl2ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAoYWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLnNldENzc1ZhcignLS1ldWktYXBwLWhlYWRlci1oZWlnaHQtc2hyaW5rJywgJy0tZXVpLWFwcC1oZWFkZXItaGVpZ2h0Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldENzc1ZhcignLS1ldWktYXBwLWhlYWRlci1oZWlnaHQtYWN0aXZlJywgJy0tZXVpLWFwcC1oZWFkZXItaGVpZ2h0Jyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYWN0aXZhdGVTaWRlYmFyQ3NzVmFycygpIHtcbiAgICAgICAgdGhpcy5zZXRDc3NWYXIoJy0tZXVpLWFwcC1zaWRlYmFyLXdpZHRoLWFjdGl2ZScsICctLWV1aS1hcHAtc2lkZWJhci13aWR0aCcpO1xuICAgICAgICB0aGlzLnNldENzc1ZhcignLS1ldWktYXBwLXNpZGViYXItd2lkdGgtY2xvc2UtYWN0aXZlJywgJy0tZXVpLWFwcC1zaWRlYmFyLXdpZHRoLWNsb3NlJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlU2lkZWJhckhlYWRlckNzc1ZhcnMoKSB7XG4gICAgICAgIHRoaXMuc2V0Q3NzVmFyKCctLWV1aS1hcHAtc2lkZWJhci1oZWFkZXItaGVpZ2h0LWFjdGl2ZScsICctLWV1aS1hcHAtc2lkZWJhci1oZWFkZXItaGVpZ2h0Jyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlU2lkZWJhckZvb3RlckNzc1ZhcnMoKSB7XG4gICAgICAgIHRoaXMuc2V0Q3NzVmFyKCctLWV1aS1hcHAtc2lkZWJhci1mb290ZXItaGVpZ2h0LWFjdGl2ZScsICctLWV1aS1hcHAtc2lkZWJhci1mb290ZXItaGVpZ2h0Jyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZGlzcGxheXMgYSBncm93bCBVeE1lc3NhZ2UgaXRlbSwgaXNTdGlja3lcbiAgICAgKi9cbiAgICBncm93bChtc2c6IFV4TWVzc2FnZSwgaXNTdGlja3k/OiBib29sZWFuLCBpc011bHRpcGxlPzogYm9vbGVhbiwgbGlmZT86IG51bWJlciwgcG9zaXRpb24/OiBzdHJpbmcsIGNhbGxiYWNrPzogKCkgPT4gdm9pZCkge1xuICAgICAgICBpZiAobXNnLnNldmVyaXR5ICE9PSAnaW5mbycgJiYgbXNnLnNldmVyaXR5ICE9PSAnd2FybmluZycgJiYgbXNnLnNldmVyaXR5ICE9PSAnc3VjY2VzcycgJiYgbXNnLnNldmVyaXR5ICE9PSAnZGFuZ2VyJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVeEFwcFNoZWxsU2VydmljZS5ncm93bCgpIEVSUk9SIDogbWVzc2FnZSBzZXZlcml0eSBtdXN0IGJlIGVpdGhlciA6IHN1Y2Nlc3MsIHdhcm5pbmcsIGluZm8sIGRhbmdlcicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzTXVsdGlwbGUgPT09IHVuZGVmaW5lZCB8fCAhaXNNdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3Jvd2xNZXNzYWdlcyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5ncm93bE1lc3NhZ2VzID0gdGhpcy5ncm93bE1lc3NhZ2VzLmNvbmNhdChtc2cpO1xuICAgICAgICAgICAgbXNnLmxpZmUgPSBsaWZlO1xuICAgICAgICAgICAgbXNnLnN0aWNreSA9IGlzU3RpY2t5O1xuXG4gICAgICAgICAgICBpZiAobGlmZSA9PT0gdW5kZWZpbmVkIHx8IGlzTmFOKGxpZmUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1zZy5zZXZlcml0eSA9PT0gJ2RhbmdlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNTdGlja3kgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3Jvd2xMaWZlID0gMzAwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3Jvd2xMaWZlID0gbGlmZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGlzU3RpY2t5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0dyb3dsU3RpY2t5ID0gaXNTdGlja3k7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNHcm93bFN0aWNreSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3dsUG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncm93bENhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3Jvd2xDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xlYXJHcm93bCgpIHtcbiAgICAgICAgdGhpcy5ncm93bE1lc3NhZ2VzID0gW107XG4gICAgfVxuXG4gICAgZ3Jvd2xTdWNjZXNzKG1zZzogc3RyaW5nLCBwb3NpdGlvbj86IHN0cmluZykge1xuICAgICAgICB0aGlzLmdyb3dsKHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ1NVQ0NFU1MnLCBkZXRhaWw6IG1zZyB9LCBmYWxzZSwgZmFsc2UsIHVuZGVmaW5lZCwgcG9zaXRpb24pO1xuICAgIH1cblxuICAgIGdyb3dsRXJyb3IobXNnOiBzdHJpbmcsIHBvc2l0aW9uPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZ3Jvd2woeyBzZXZlcml0eTogJ2RhbmdlcicsIHN1bW1hcnk6ICdFUlJPUicsIGRldGFpbDogbXNnIH0sIGZhbHNlLCBmYWxzZSwgdW5kZWZpbmVkLCBwb3NpdGlvbik7XG4gICAgfVxuXG4gICAgLy8gZGF0ZSBoZWxwZXJzXG5cbiAgICBncm93bFdhcm5pbmcobXNnOiBzdHJpbmcsIHBvc2l0aW9uPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZ3Jvd2woeyBzZXZlcml0eTogJ3dhcm5pbmcnLCBzdW1tYXJ5OiAnV0FSTklORycsIGRldGFpbDogbXNnIH0sIGZhbHNlLCBmYWxzZSwgdW5kZWZpbmVkLCBwb3NpdGlvbik7XG4gICAgfVxuXG4gICAgZ3Jvd2xJbmZvKG1zZzogc3RyaW5nLCBwb3NpdGlvbj86IHN0cmluZykge1xuICAgICAgICB0aGlzLmdyb3dsKHsgc2V2ZXJpdHk6ICdpbmZvJywgc3VtbWFyeTogJ0lORk8nLCBkZXRhaWw6IG1zZyB9LCBmYWxzZSwgZmFsc2UsIHVuZGVmaW5lZCwgcG9zaXRpb24pO1xuICAgIH1cblxuICAgIG9wZW5Nb2RhbChtb2RhbElkPzogc3RyaW5nKSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnbW9kYWwtb3BlbicpO1xuICAgICAgICBpZiAoIW1vZGFsSWQpIHtcbiAgICAgICAgICAgIG1vZGFsSWQgPSAnc2luZ2xlX21vZGFsJztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZlTW9kYWxzLnB1c2goe1xuICAgICAgICAgICAgaWQ6IG1vZGFsSWQsXG4gICAgICAgICAgICBpc09wZW46IHRydWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChtb2RhbElkICsgJy1jbG9zZS1idXR0b24nKTtcbiAgICAgICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgICAgIGVsLmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDEwMCk7XG4gICAgfVxuXG4gICAgb3Blbk1lc3NhZ2VCb3gobWVzc2FnZUJveElkPzogc3RyaW5nKSB7XG4gICAgICAgIGlmICghbWVzc2FnZUJveElkKSB7XG4gICAgICAgICAgICBtZXNzYWdlQm94SWQgPSAnbWVzc2FnZWJveF9tb2RhbCc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vcGVuTW9kYWwobWVzc2FnZUJveElkKTtcbiAgICB9XG5cbiAgICBjbG9zZU1lc3NhZ2VCb3gobWVzc2FnZUJveElkPzogc3RyaW5nKSB7XG4gICAgICAgIGlmICghbWVzc2FnZUJveElkKSB7XG4gICAgICAgICAgICBtZXNzYWdlQm94SWQgPSAnbWVzc2FnZWJveF9tb2RhbCc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jbG9zZU1vZGFsKG1lc3NhZ2VCb3hJZCk7XG4gICAgfVxuXG4gICAgaXNNb2RhbE9wZW4obW9kYWxJZD86IHN0cmluZykge1xuICAgICAgICBpZiAoIW1vZGFsSWQpIHtcbiAgICAgICAgICAgIG1vZGFsSWQgPSAnc2luZ2xlX21vZGFsJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5hY3RpdmVNb2RhbHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBsZXQgbW9kYWxJbmRleDogbnVtYmVyID0gdGhpcy5maW5kTW9kYWxJbmRleChtb2RhbElkKTtcbiAgICAgICAgICAgIGlmIChtb2RhbEluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZU1vZGFsc1ttb2RhbEluZGV4XS5pc09wZW47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFBvc2l0aW9ucyBoZWxwZXJzXG5cbiAgICBjbG9zZU1vZGFsKG1vZGFsSWQ/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCFtb2RhbElkKSB7XG4gICAgICAgICAgICBtb2RhbElkID0gJ3NpbmdsZV9tb2RhbCc7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogTWFrZSBzdXJlIHdlIGZpbmQgdGhlIG1vZGFsIGJlZm9yZSBzcGxpY2luZyB0aGUgYWN0aXZlTW9kYWxzIGFycmF5XG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZmluZE1vZGFsSW5kZXgobW9kYWxJZCk7XG4gICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFscy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlTW9kYWxzICYmIHRoaXMuYWN0aXZlTW9kYWxzLmxlbmd0aCA8PSAwKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ21vZGFsLW9wZW4nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIHN0aWxsIGFub3RoZXIgKHBhcmVudCkgbW9kYWwgZGlhbG9nIG9wZW4sIGVuc3VyZSBpdCBpcyBmb2N1c2VkIHVwb24gdG8gYmUgYWJsZSB0byBjbG9zZSBpcyB3aXRoIHRoZSBFU0Mga2V5OlxuICAgICAgICAgICAgY29uc3QgbGFzdE1vZGFsSWQgPSB0aGlzLmFjdGl2ZU1vZGFscyBbdGhpcy5hY3RpdmVNb2RhbHMubGVuZ3RoIC0gMV0uaWQ7XG4gICAgICAgICAgICBpZiAobGFzdE1vZGFsSWQpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChsYXN0TW9kYWxJZCArICctY2xvc2UtYnV0dG9uJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWwuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmaW5kTW9kYWxJbmRleChtb2RhbElkOiBzdHJpbmcpIHtcbiAgICAgICAgbGV0IGluZGV4OiBudW1iZXIgPSAtMTtcblxuICAgICAgICBpZiAodGhpcy5hY3RpdmVNb2RhbHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYWN0aXZlTW9kYWxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlTW9kYWxzW2ldLmlkID09PSBtb2RhbElkKSB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIHByaXZhdGUgZ2V0dGVyc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLVxuICAgIHByaXZhdGUgZ2V0Q3NzVmFyVmFsdWUoaW5wdXRQcm9wZXJ0eSkge1xuICAgICAgICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoaW5wdXRQcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRDc3NWYXIoaW5wdXRQcm9wZXJ0eSwgb3V0cHV0UHJvcGVydHkpIHtcbiAgICAgICAgY29uc3QgY3NzVmFyVmFsdWUgPSB0aGlzLmNzc1ZhcnMuZmlsdGVyKHYgPT4gdi5rZXkgPT09IGlucHV0UHJvcGVydHkpWzBdLnZhbHVlO1xuICAgICAgICB0aGlzLl9zZXRDc3NWYXJWYWx1ZShvdXRwdXRQcm9wZXJ0eSwgY3NzVmFyVmFsdWUpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhpbnB1dFByb3BlcnR5LCBvdXRwdXRQcm9wZXJ0eSwgY3NzVmFyVmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NldENzc1ZhclZhbHVlKHZhck5hbWUsIHZhclZhbHVlKSB7XG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSh2YXJOYW1lLCB2YXJWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRXcmFwcGVyQ2xhc3NlcyhzdGF0ZTogVUlTdGF0ZSwgYnJlYWtwb2ludDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGNsYXNzZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAgICAgY2xhc3Nlcy5wdXNoKGJyZWFrcG9pbnQpO1xuXG4gICAgICAgIGlmIChzdGF0ZS5pc1NpZGViYXJPcGVuICYmIChzdGF0ZS5pc1NpZGViYXJBY3RpdmUgfHwgc3RhdGUuaXNTaWRlYmFySW5uZXJBY3RpdmUpKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goJ3NpZGViYXItc3RhdGUtb3BlbicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc3RhdGUuaXNTaWRlYmFyT3BlbiAmJiAoc3RhdGUuaXNTaWRlYmFyQWN0aXZlIHx8IHN0YXRlLmlzU2lkZWJhcklubmVyQWN0aXZlKSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdzaWRlYmFyLXN0YXRlLWNsb3NlJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlLmlzU2lkZWJhckFjdGl2ZSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdzaWRlYmFyLWFjdGl2ZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZS5pc1NpZGViYXJJbm5lckFjdGl2ZSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdzaWRlYmFyLWlubmVyLWFjdGl2ZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZS5pc1NpZGViYXJTdGF0ZUNsb3NlV2l0aEljb25zKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goJ3NpZGViYXItc3RhdGUtY2xvc2Utd2l0aC1pY29ucycpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTkVXIEFQUC1TSEVMTCBwcm9wc1xuICAgICAgICBpZiAoc3RhdGUuaXNTaWRlYmFySGlkZGVuKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goJ3NpZGViYXItLWhpZGRlbicpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZS5pc1NpZGViYXJPcGVuKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goJ3NpZGViYXItLW9wZW4nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsYXNzZXMucHVzaCgnc2lkZWJhci0tY2xvc2UnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuaXNTaWRlYmFySG92ZXIpIHtcbiAgICAgICAgICAgIGNsYXNzZXMucHVzaCgnc2lkZWJhci0taG92ZXInKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuZGV2aWNlSW5mbyAmJiBzdGF0ZS5kZXZpY2VJbmZvLmlzRkYpIHtcbiAgICAgICAgICAgIGNsYXNzZXMucHVzaCgnZmYnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuZGV2aWNlSW5mbyAmJiBzdGF0ZS5kZXZpY2VJbmZvLmlzSUUpIHtcbiAgICAgICAgICAgIGNsYXNzZXMucHVzaCgnaWUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuZGV2aWNlSW5mbyAmJiBzdGF0ZS5kZXZpY2VJbmZvLmlzSUUxMSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdpZTExJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlLmRldmljZUluZm8gJiYgc3RhdGUuZGV2aWNlSW5mby5pc0Nocm9tZSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdjaHJvbWUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2xhc3Nlcy5qb2luKCcgJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRCcmVha3BvaW50KHdpbmRvd1dpZHRoOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICBsZXQgYmtwOiBzdHJpbmcgPSAnJztcblxuICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgY2FzZSAod2luZG93V2lkdGggPj0gMCAmJiB3aW5kb3dXaWR0aCA8IDU3Nik6XG4gICAgICAgICAgICBia3AgPSAneHMnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgKHdpbmRvd1dpZHRoID49IDU3NiAmJiB3aW5kb3dXaWR0aCA8IDc2OCk6XG4gICAgICAgICAgICBia3AgPSAnc20nO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgKHdpbmRvd1dpZHRoID49IDc2OCAmJiB3aW5kb3dXaWR0aCA8IDk5Mik6XG4gICAgICAgICAgICBia3AgPSAnbWQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgKHdpbmRvd1dpZHRoID49IDk5MiAmJiB3aW5kb3dXaWR0aCA8IDEyMDApOlxuICAgICAgICAgICAgYmtwID0gJ2xnJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICh3aW5kb3dXaWR0aCA+PSAxMjAwICYmIHdpbmRvd1dpZHRoIDwgMTQwMCk6XG4gICAgICAgICAgICBia3AgPSAneGwnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgKHdpbmRvd1dpZHRoID49IDE0MDApOlxuICAgICAgICAgICAgYmtwID0gJ3h4bCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmtwO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QnJlYWtwb2ludHMoYmtwOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXNNb2JpbGU6IChia3AgPT09ICd4cycgfHwgYmtwID09PSAnc20nKSxcbiAgICAgICAgICAgIGlzVGFibGV0OiBia3AgPT09ICdtZCcsXG4gICAgICAgICAgICBpc0x0RGVza3RvcDogKGJrcCA9PT0gJ3hzJyB8fCBia3AgPT09ICdzbScgfHwgYmtwID09PSAnbWQnKSxcbiAgICAgICAgICAgIGlzRGVza3RvcDogYmtwID09PSAnbGcnLFxuICAgICAgICAgICAgaXNYTDogYmtwID09PSAneGwnLFxuICAgICAgICAgICAgaXNYWEw6IGJrcCA9PT0gJ3h4bCcsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRKc29uKHVybDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldCh1cmwpXG4gICAgICAgICAgICAudG9Qcm9taXNlKClcbiAgICAgICAgICAgIC50aGVuKHRoaXMuZXh0cmFjdERhdGEpXG4gICAgICAgICAgICAuY2F0Y2godGhpcy5oYW5kbGVFcnJvcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHRyYWN0RGF0YShyZXM6IFJlc3BvbnNlKSB7XG4gICAgICAgIGNvbnN0IGJvZHkgPSByZXM7XG4gICAgICAgIHJldHVybiBib2R5IHx8IHt9O1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FuIGVycm9yIG9jY3VycmVkJywgZXJyb3IpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IubWVzc2FnZSB8fCBlcnJvcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiaW5kQWN0aXZlTGFuZ3VhZ2VUb0FwcFNoZWxsU3RhdGUoKSB7XG4gICAgICAgIHRoaXMuc3RvcmVTZXJ2aWNlLnNlbGVjdChnZXRBY3RpdmVMYW5nKS5zdWJzY3JpYmUoKGFjdGl2ZUxhbmcpID0+IHtcbiAgICAgICAgICAgIGlmIChhY3RpdmVMYW5nICE9PSB0aGlzLnN0YXRlLmFjdGl2ZUxhbmd1YWdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZUxhbmd1YWdlOiBhY3RpdmVMYW5nLFxuICAgICAgICAgICAgICAgIH0sIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
655
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXgtYXBwLXNoZWxsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3V4LWFwcC1zaGVsbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBaUMsYUFBYSxFQUF5QixNQUFNLFdBQVcsQ0FBQztBQUMvRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0RCxPQUFPLEVBQVUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFeEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQztBQUN4QyxPQUFPLEdBQUcsTUFBTSxlQUFlLENBQUM7Ozs7OztBQStEaEMsTUFBTSxZQUFZLEdBQVk7SUFDMUIsT0FBTyxFQUFFLEVBQUU7SUFDWCxZQUFZLEVBQUUsRUFBRTtJQUNoQixXQUFXLEVBQUUsRUFBRTtJQUNmLFNBQVMsRUFBRSxJQUFJO0lBQ2YsWUFBWSxFQUFFLElBQUk7SUFDbEIscUJBQXFCLEVBQUUsSUFBSTtJQUMzQixhQUFhLEVBQUUsS0FBSztJQUNwQixjQUFjLEVBQUUsS0FBSztJQUNyQixlQUFlLEVBQUUsS0FBSztJQUN0QixvQkFBb0IsRUFBRSxLQUFLO0lBQzNCLDRCQUE0QixFQUFFLEtBQUs7SUFDbkMsc0JBQXNCLEVBQUUsSUFBSTtJQUM1QixVQUFVLEVBQUUsS0FBSztJQUNqQixT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LENBQUM7b0JBQ1YsR0FBRyxJQUFJLENBQUMsS0FBSztvQkFDYixjQUFjLEVBQUUsVUFBVTtpQkFDN0IsRUFBRSxLQUFLLENBQUMsQ0FBQzthQUNiO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztvSkF4cEJRLGlCQUFpQixrQkFvSEYsbUJBQW1CLHVEQUUvQixXQUFXO3dKQXRIZCxpQkFBaUIsY0FGZCxNQUFNOzJGQUVULGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQXFIUSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLG1CQUFtQjt1REFFRSxNQUFNOzBCQUE5QyxNQUFNOzJCQUFDLFdBQVc7OzBCQUdsQixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGRlZmVyLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVeEV1TGFuZ3VhZ2VzLCBHbG9iYWxDb25maWcsIFV4TGluaywgVXhNb2RhbCwgZ2V0QWN0aXZlTGFuZywgVXhNZXNzYWdlLCBVeExhbmd1YWdlIH0gZnJvbSAnQGV1aS9iYXNlJztcbmltcG9ydCB7IEdMT0JBTF9DT05GSUdfVE9LRU4gfSBmcm9tICcuL2NvbmZpZy90b2tlbnMnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuL2kxOG4nO1xuaW1wb3J0IHsgUm91dGVyLCBOYXZpZ2F0aW9uRW5kIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN0b3JlU2VydmljZSB9IGZyb20gJy4vc3RvcmUvc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gtZXMvaXNFcXVhbCc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC1lcy9nZXQnO1xuLy8gaW1wb3J0IHsgVXhSb290SW5qZWN0b3JHdWFyZCB9IGZyb20gJy4vdXgtcm9vdC1pbmplY3Rvci5ndWFyZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVUlTdGF0ZSB7XG4gICAgLy8gYXBwIHN0YXRlXG4gICAgYXBwTmFtZT86IHN0cmluZztcbiAgICBhcHBTaG9ydE5hbWU/OiBzdHJpbmc7XG4gICAgYXBwU3ViVGl0bGU/OiBzdHJpbmc7XG5cbiAgICAvLyB1c2VyIHN0YXRlXG4gICAgdXNlckluZm9zPzogc3RyaW5nO1xuICAgIHVzZXJTdWJJbmZvcz86IHN0cmluZztcbiAgICBpbXBlcnNvbmF0ZWRVc2VySW5mb3M/OiBzdHJpbmc7XG5cbiAgICAvLyBTaWRlYmFyIHN0YXRlXG4gICAgaXNTaWRlYmFyT3Blbj86IGJvb2xlYW47XG4gICAgaXNTaWRlYmFySG92ZXI/OiBib29sZWFuO1xuICAgIGlzU2lkZWJhckFjdGl2ZT86IGJvb2xlYW47XG4gICAgaXNTaWRlYmFySW5uZXJBY3RpdmU/OiBib29sZWFuO1xuICAgIGlzU2lkZWJhclN0YXRlQ2xvc2VXaXRoSWNvbnM/OiBib29sZWFuO1xuICAgIGlzU2lkZWJhckV4cGFuZE9uSG92ZXI/OiBib29sZWFuO1xuICAgIGhhc1NpZGViYXI/OiBib29sZWFuO1xuICAgIGhhc0hlYWRlcj86IGJvb2xlYW47XG4gICAgaGFzSGVhZGVyTG9nbz86IGJvb2xlYW47XG4gICAgaGFzSGVhZGVyRW52aXJvbm1lbnQ/OiBib29sZWFuO1xuICAgIGhhc1Rvb2xiYXI/OiBib29sZWFuO1xuICAgIGhhc1Rvb2xiYXJNZW51PzogYm9vbGVhbjtcbiAgICBlbnZpcm9ubWVudFZhbHVlPzogc3RyaW5nO1xuICAgIGlzU2lkZWJhckhpZGRlbj86IGJvb2xlYW47XG4gICAgaGFzVG9wTWVzc2FnZT86IGJvb2xlYW47XG5cbiAgICAvLyB3aW5kb3cgc3RhdGVcbiAgICB3aW5kb3dXaWR0aD86IG51bWJlcjtcbiAgICB3aW5kb3dIZWlnaHQ/OiBudW1iZXI7XG4gICAgbWFpbkNvbnRlbnRIZWlnaHQ/OiBudW1iZXI7XG4gICAgcGFnZUhlYWRlckhlaWdodD86IG51bWJlcjtcbiAgICBicmVha3BvaW50Pzogc3RyaW5nO1xuICAgIHdyYXBwZXJDbGFzc2VzPzogc3RyaW5nO1xuICAgIGJyZWFrcG9pbnRzPzogYW55O1xuXG4gICAgLy8gbmF2aWdhdGlvbiBzdGF0ZVxuICAgIG1lbnVMaW5rcz86IFV4TGlua1tdO1xuICAgIHNpZGViYXJMaW5rcz86IFV4TGlua1tdO1xuICAgIGNvbWJpbmVkTGlua3M/OiBVeExpbmtbXTtcblxuICAgIC8vIG90aGVyIHN0YXRlc1xuICAgIGlzQmxvY2tEb2N1bWVudEFjdGl2ZT86IGJvb2xlYW47XG5cbiAgICAvLyBkZXZpY2UgaW5mb1xuICAgIGRldmljZUluZm86IGFueTtcblxuICAgIC8vIGxhbmd1YWdlIGluZm9zXG4gICAgYWN0aXZlTGFuZ3VhZ2U6IHN0cmluZztcbiAgICBsYW5ndWFnZXM6IChzdHJpbmcgfCBVeExhbmd1YWdlKVtdO1xuXG4gICAgLy8gYXBwIG1ldGFkYXRhXG4gICAgYXBwTWV0YWRhdGE6IGFueTtcblxuICAgIC8vIHZhcmlvdXMgZHluYW1pYyBzdGF0ZVxuICAgIGhhc01vZGFsQWN0aXZlPzogYm9vbGVhbjtcbiAgICBpc0RpbW1lckFjdGl2ZSA/OiBib29sZWFuOyAgICAgLy8gVXNhZ2U6IG1hcCB0byBldWkgYmFzZSBkaXJlY3RpdmUgaW5wdXQgY29lcmNlIGV1aUhpZ2hsaWdodGVkXG59XG5cbmNvbnN0IGluaXRpYWxTdGF0ZTogVUlTdGF0ZSA9IHtcbiAgICBhcHBOYW1lOiAnJyxcbiAgICBhcHBTaG9ydE5hbWU6ICcnLFxuICAgIGFwcFN1YlRpdGxlOiAnJyxcbiAgICB1c2VySW5mb3M6IG51bGwsXG4gICAgdXNlclN1YkluZm9zOiBudWxsLFxuICAgIGltcGVyc29uYXRlZFVzZXJJbmZvczogbnVsbCxcbiAgICBpc1NpZGViYXJPcGVuOiBmYWxzZSxcbiAgICBpc1NpZGViYXJIb3ZlcjogZmFsc2UsXG4gICAgaXNTaWRlYmFyQWN0aXZlOiBmYWxzZSxcbiAgICBpc1NpZGViYXJJbm5lckFjdGl2ZTogZmFsc2UsXG4gICAgaXNTaWRlYmFyU3RhdGVDbG9zZVdpdGhJY29uczogZmFsc2UsXG4gICAgaXNTaWRlYmFyRXhwYW5kT25Ib3ZlcjogdHJ1ZSxcbiAgICBoYXNTaWRlYmFyOiBmYWxzZSxcbiAgICBoYXNIZWFkZXI6IGZhbHNlLFxuICAgIGhhc0hlYWRlckxvZ286IGZhbHNlLFxuICAgIGhhc0hlYWRlckVudmlyb25tZW50OiBmYWxzZSxcbiAgICBoYXNUb29sYmFyOiBmYWxzZSxcbiAgICBoYXNUb29sYmFyTWVudTogZmFsc2UsXG4gICAgZW52aXJvbm1lbnRWYWx1ZTogJycsXG4gICAgaXNTaWRlYmFySGlkZGVuOiBmYWxzZSxcbiAgICBoYXNUb3BNZXNzYWdlOiBmYWxzZSxcbiAgICB3aW5kb3dXaWR0aDogMCxcbiAgICB3aW5kb3dIZWlnaHQ6IDAsXG4gICAgbWFpbkNvbnRlbnRIZWlnaHQ6IDAsXG4gICAgcGFnZUhlYWRlckhlaWdodDogMCxcbiAgICB3cmFwcGVyQ2xhc3NlczogJycsXG4gICAgYnJlYWtwb2ludDogJycsXG4gICAgYnJlYWtwb2ludHM6IHtcbiAgICAgICAgaXNNb2JpbGU6IGZhbHNlLFxuICAgICAgICBpc1RhYmxldDogZmFsc2UsXG4gICAgICAgIGlzTHREZXNrdG9wOiBmYWxzZSxcbiAgICAgICAgaXNEZXNrdG9wOiBmYWxzZSxcbiAgICAgICAgaXNYTDogZmFsc2UsXG4gICAgICAgIGlzWFhMOiBmYWxzZSxcbiAgICB9LFxuICAgIG1lbnVMaW5rczogW10sXG4gICAgc2lkZWJhckxpbmtzOiBbXSxcbiAgICBjb21iaW5lZExpbmtzOiBbXSxcbiAgICBpc0Jsb2NrRG9jdW1lbnRBY3RpdmU6IGZhbHNlLFxuICAgIGRldmljZUluZm86IG51bGwsXG4gICAgYWN0aXZlTGFuZ3VhZ2U6ICdlbicsXG4gICAgbGFuZ3VhZ2VzOiBVeEV1TGFuZ3VhZ2VzLmdldExhbmd1YWdlcygpLFxuICAgIGFwcE1ldGFkYXRhOiBudWxsLFxuICAgIGhhc01vZGFsQWN0aXZlOiBmYWxzZSxcbiAgICBpc0RpbW1lckFjdGl2ZSA6IGZhbHNlLFxufTtcblxuLy8gVE9ETzogdGhpcyBzZXJ2aWNlIG5lZWRzIHRvIGJlIHRyYW5zZmVycmVkIGluIHRoZSByZXNwZWN0aXZlIGNvbXBvbmVudFxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVXhBcHBTaGVsbFNlcnZpY2Uge1xuICAgIGdyb3dsTWVzc2FnZXMgPSBbXTtcbiAgICBpc0dyb3dsU3RpY2t5OiBib29sZWFuID0gZmFsc2U7XG4gICAgZ3Jvd2xMaWZlOiBudW1iZXIgPSAzMDAwO1xuICAgIGdyb3dsUG9zaXRpb246IHN0cmluZyA9ICdib3R0b20tcmlnaHQnO1xuICAgIGdyb3dsQ2FsbGJhY2s6IGFueSA9IG51bGw7XG4gICAgYWN0aXZlTW9kYWxzOiBVeE1vZGFsW10gPSBbXTtcbiAgICBvcGVuTW9kYWxJZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG5cbiAgICBuYXZpZ2F0aW9uU3RhcnRDdXN0b21IYW5kbGVyOiAoKSA9PiB2b2lkO1xuICAgIG5hdmlnYXRpb25FbmRDdXN0b21IYW5kbGVyOiAoKSA9PiB2b2lkO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGdldCBzdGF0ZSQoKTogT2JzZXJ2YWJsZTxVSVN0YXRlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGF0ZSQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIGV4cG9zZWQgb2JzZXJ2YWJsZXNcblxuICAgIGdldCBicmVha3BvaW50JCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgZ2V0IGJyZWFrcG9pbnRzJCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludHMkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBzdGF0ZSBvcGVyYXRpb25zXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLVxuICAgIGdldCBzdGF0ZSgpOiBVSVN0YXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRlJC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIGdldCBpc1NpZGViYXJPcGVuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5pc1NpZGViYXJPcGVuO1xuICAgIH1cblxuICAgIC8vIEVkaXQgbW9kZVxuICAgIGdldCBpc0RpbW1lckFjdGl2ZSAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLmlzRGltbWVyQWN0aXZlIDtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gcHVibGljIHNldHRlcnMgYW5kIGZ1bmN0aW9uc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBzZXQgaXNTaWRlYmFyT3Blbihpc09wZW46IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAuLi50aGlzLnN0YXRlLFxuICAgICAgICAgICAgaXNTaWRlYmFyT3BlbjogaXNPcGVuLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXQgaXNTaWRlYmFySG92ZXIoaXNIb3ZlcjogYm9vbGVhbikge1xuICAgICAgICBpZiAodGhpcy5zdGF0ZS5pc1NpZGViYXJFeHBhbmRPbkhvdmVyKSB7XG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLnN0YXRlLFxuICAgICAgICAgICAgICAgIGlzU2lkZWJhckhvdmVyOiBpc0hvdmVyLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgaXNTaWRlYmFySG92ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlLmlzU2lkZWJhckhvdmVyO1xuICAgIH1cblxuICAgIHNldCBpc1NpZGViYXJBY3RpdmUoaXNBY3RpdmU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAuLi50aGlzLnN0YXRlLFxuICAgICAgICAgICAgaXNTaWRlYmFyQWN0aXZlOiBpc0FjdGl2ZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0IGlzU2lkZWJhcklubmVyQWN0aXZlKGlzT3BlbjogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgICBpc1NpZGViYXJJbm5lckFjdGl2ZTogaXNPcGVuLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXQgc2lkZWJhckxpbmtzKGxpbmtzOiBVeExpbmtbXSkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgICBzaWRlYmFyTGlua3M6IGxpbmtzLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXQgbWVudUxpbmtzKGxpbmtzOiBVeExpbmtbXSkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgICBtZW51TGlua3M6IGxpbmtzLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXQgaXNCbG9ja0RvY3VtZW50QWN0aXZlKGlzQWN0aXZlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZSxcbiAgICAgICAgICAgIGlzQmxvY2tEb2N1bWVudEFjdGl2ZTogaXNBY3RpdmUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEVkaXQgbW9kZVxuICAgIHNldCBpc0RpbW1lckFjdGl2ZSAoaXNBY3RpdmU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAuLi50aGlzLnN0YXRlLFxuICAgICAgICAgICAgaXNEaW1tZXJBY3RpdmUgOiBpc0FjdGl2ZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjc3NWYXJzID0gW107XG4gICAgcHJpdmF0ZSBfc3RhdGUkOiBCZWhhdmlvclN1YmplY3Q8VUlTdGF0ZT47XG4gICAgcHJpdmF0ZSBfYnJlYWtwb2ludCQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+O1xuICAgIHByaXZhdGUgX2JyZWFrcG9pbnRzJDogQmVoYXZpb3JTdWJqZWN0PGFueT47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChHTE9CQUxfQ09ORklHX1RPS0VOKSBwcm90ZWN0ZWQgY29uZmlnOiBHbG9iYWxDb25maWcsXG4gICAgICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBPYmplY3QsXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgc3RvcmVTZXJ2aWNlOiBTdG9yZVNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgaTE4blNlcnZpY2U6IEkxOG5TZXJ2aWNlLFxuICAgICkge1xuICAgICAgICBsZXQgc3RhdGVXaXRoQ29uZmlnID0gaW5pdGlhbFN0YXRlO1xuICAgICAgICBjb25zdCBsYW5ndWFnZXMgPSBjb25maWc/LmkxOG4/LmkxOG5TZXJ2aWNlPy5sYW5ndWFnZXMgfHwgaW5pdGlhbFN0YXRlLmxhbmd1YWdlcztcbiAgICAgICAgY29uc3QgZGVmYXVsdExhbmd1YWdlID0gY29uZmlnPy5pMThuPy5pMThuU2VydmljZT8uZGVmYXVsdExhbmd1YWdlIHx8IGluaXRpYWxTdGF0ZS5hY3RpdmVMYW5ndWFnZTtcbiAgICAgICAgc3RhdGVXaXRoQ29uZmlnID0ge1xuICAgICAgICAgICAgLi4uc3RhdGVXaXRoQ29uZmlnLCAuLi57XG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VzOiBsYW5ndWFnZXMsXG4gICAgICAgICAgICAgICAgYWN0aXZlTGFuZ3VhZ2U6IGRlZmF1bHRMYW5ndWFnZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX3N0YXRlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Qoc3RhdGVXaXRoQ29uZmlnKTtcbiAgICAgICAgdGhpcy5fYnJlYWtwb2ludCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcnKTtcbiAgICAgICAgdGhpcy5fYnJlYWtwb2ludHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdCh7fSk7XG4gICAgICAgIHRoaXMuYmluZEFjdGl2ZUxhbmd1YWdlVG9BcHBTaGVsbFN0YXRlKCk7XG5cbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHJvdXRlci5ldmVudHNcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFN0YXRlKG5leHRTdGF0ZTogVUlTdGF0ZSwgdXBkYXRlSTE4ID0gdHJ1ZSkge1xuICAgICAgICBsZXQgYnJlYWtwb2ludCwgYnJlYWtwb2ludHMsIHdyYXBwZXJDbGFzc2VzO1xuICAgICAgICBsZXQgY29tYmluZWRMaW5rcztcblxuICAgICAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGU7XG5cbiAgICAgICAgLy8gY2hlY2sgaWYgd2luZG93IHdpZHRoIGhhcyBiZWVuIHVwZGF0ZWQgZnJvbSBwcmV2aW91cyBzdGF0ZVxuICAgICAgICBpZiAodGhpcy5zdGF0ZS53aW5kb3dXaWR0aCAhPT0gbmV4dFN0YXRlLndpbmRvd1dpZHRoKSB7XG4gICAgICAgICAgICBicmVha3BvaW50ID0gdGhpcy5nZXRCcmVha3BvaW50KG5leHRTdGF0ZS53aW5kb3dXaWR0aCk7XG4gICAgICAgICAgICBicmVha3BvaW50cyA9IHRoaXMuZ2V0QnJlYWtwb2ludHMoYnJlYWtwb2ludCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnQkLm5leHQoYnJlYWtwb2ludCk7XG4gICAgICAgICAgICB0aGlzLl9icmVha3BvaW50cyQubmV4dChicmVha3BvaW50cyk7XG5cbiAgICAgICAgICAgIC8vIGlmIG5vdCBwcm9wYWdhdGUgdGhlIG9sZCBvbmVzIHdpdGhvdXQgZG9pbmcgYW55IGNhbGN1bGF0aW9uc1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnJlYWtwb2ludCA9IHN0YXRlLmJyZWFrcG9pbnQ7XG4gICAgICAgICAgICBicmVha3BvaW50cyA9IHN0YXRlLmJyZWFrcG9pbnRzO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZmluYWxseSBnZXQgdGhlIHdyYXBwZXIgY2xhc3NlcyB3aGVuIGJvdGggdGhlIHN0YXRlIGFuZCBicmVha3BvaW50IGFyZSBrbm93blxuICAgICAgICB3cmFwcGVyQ2xhc3NlcyA9IHRoaXMuZ2V0V3JhcHBlckNsYXNzZXMobmV4dFN0YXRlLCBicmVha3BvaW50KTtcblxuICAgICAgICAvLyBjaGVjayBpZiB0aGUgbWVudUxpbmtzIG9yIHNpZGViYXJMaW5rcyBoYXZlIGNoYW5nZWQgZnJvbSBwcmV2aW91cyBzdGF0ZVxuICAgICAgICBpZiAodGhpcy5zdGF0ZS5tZW51TGlua3MgIT09IG5leHRTdGF0ZS5tZW51TGlua3MgfHwgdGhpcy5zdGF0ZS5zaWRlYmFyTGlua3MgIT09IG5leHRTdGF0ZS5zaWRlYmFyTGlua3MpIHtcbiAgICAgICAgICAgIGNvbWJpbmVkTGlua3MgPSBbLi4ubmV4dFN0YXRlLm1lbnVMaW5rcywgLi4ubmV4dFN0YXRlLnNpZGViYXJMaW5rc107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb21iaW5lZExpbmtzID0gdGhpcy5zdGF0ZS5jb21iaW5lZExpbmtzO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3RhdGVCZWZvcmVVcGRhdGUgPSB7IC4uLnRoaXMuc3RhdGUgfSA7XG5cbiAgICAgICAgLy8gd2UgcHV0IGl0IGFsbCB0b2dldGhlciB3aXRoIHRoZSBjYWxjdWxhdGVkIHByb3BlcnRpZXNcbiAgICAgICAgdGhpcy5fc3RhdGUkLm5leHQoe1xuICAgICAgICAgICAgLi4ubmV4dFN0YXRlLFxuICAgICAgICAgICAgd3JhcHBlckNsYXNzZXMsXG4gICAgICAgICAgICBicmVha3BvaW50LFxuICAgICAgICAgICAgYnJlYWtwb2ludHMsXG4gICAgICAgICAgICBjb21iaW5lZExpbmtzLFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyB1cGRhdGUgdGhlIFN0b3JlIExhbmd1YWdlXG4gICAgICAgIGlmICh1cGRhdGVJMTggJiYgbmV4dFN0YXRlLmFjdGl2ZUxhbmd1YWdlICE9PSBzdGF0ZUJlZm9yZVVwZGF0ZS5hY3RpdmVMYW5ndWFnZSkge1xuICAgICAgICAgICAgdGhpcy5pMThuU2VydmljZS51cGRhdGVTdGF0ZSh7IGFjdGl2ZUxhbmc6IG5leHRTdGF0ZS5hY3RpdmVMYW5ndWFnZSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVtaXRzIGEgc2xpY2UgZnJvbSB0aGUgc3RhdGUgd2hldGhlciB0aGF0IGNoYW5nZXNcbiAgICAgKiBAcGFyYW0ga2V5IGNhbiBiZSAna2V5JyBvciAna2V5LnN1Yi5zdWInXG4gICAgICovXG4gICAgZ2V0U3RhdGUoa2V5Pzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGRlZmVyKCgpID0+IHtcbiAgICAgICAgICAgIC8vIGNoZWNrIGlmIGtleSBleGlzdHNcbiAgICAgICAgICAgIHJldHVybiBrZXkgPyB0aGlzLnN0YXRlJC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoc3RhdGUpID0+IGdldChzdGF0ZSwga2V5KSksXG4gICAgICAgICAgICAgICAgZmlsdGVyKChzdGF0ZSkgPT4gc3RhdGUpLFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCh4LCB5KSA9PiBpc0VxdWFsKHgsIHkpKVxuICAgICAgICAgICAgKSA6IHRoaXMuc3RhdGUkO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2lkZWJhclRvZ2dsZSgpIHtcbiAgICAgICAgdGhpcy5pc1NpZGViYXJPcGVuID0gIXRoaXMuc3RhdGUuaXNTaWRlYmFyT3BlbjtcbiAgICB9XG5cbiAgICAvLyBFZGl0IG1vZGVcbiAgICBwdWJsaWMgZGltbWVyQWN0aXZlVG9nZ2xlKCkge1xuICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IHRoaXMuaXNEaW1tZXJBY3RpdmU7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZSxcbiAgICAgICAgICAgIGlzRGltbWVyQWN0aXZlIDogIWlzQWN0aXZlLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZUVkaXRNb2RlQ3NzVmFycyghaXNBY3RpdmUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXREaW1tZXJBY3RpdmVTdGF0ZShhY3RpdmVTdGF0ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgICBpc0RpbW1lckFjdGl2ZSA6IGFjdGl2ZVN0YXRlLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZUVkaXRNb2RlQ3NzVmFycyhhY3RpdmVTdGF0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlRWRpdE1vZGVDc3NWYXJzKGlzQWN0aXZlOiBib29sZWFuKSB7XG4gICAgICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0Q3NzVmFyVmFsdWUoJy0tZXVpLWRvY3BhZ2UtbmF2aWdhdGlvbi16LWluZGV4JywgJ2luaGVyaXQnKTsgICAgLy8gUmVzZXQgZG9jLXBhZ2UtbmF2aWdhdGlvbi1jb2x1bW4gei1pbmRleFxuICAgICAgICAgICAgdGhpcy5fc2V0Q3NzVmFyVmFsdWUoJy0tZXVpLXotaW5kZXgtc2lkZWJhcicsICdpbmhlcml0Jyk7ICAgICAgICAgICAgICAgLy8gUmVzZXQgZXVpLWFwcC1zaWRlYmFyIHotaW5kZXhcbiAgICAgICAgICAgIHRoaXMuX3NldENzc1ZhclZhbHVlKCctLWV1aS16LWluZGV4LXJvb3QnLCAnaW5oZXJpdCcpOyAgICAgICAgICAgICAgICAgIC8vIFJlc2V0IGV1aS1hcHAtbWFpbi1jb250ZW50IHotaW5kZXhcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3NldENzc1ZhclZhbHVlKCctLWV1aS1kb2NwYWdlLW5hdmlnYXRpb24tei1pbmRleCcsICcyJyk7ICAgICAgICAgIC8vIFJlc3RvcmUgZG9jLXBhZ2UtbmF2aWdhdGlvbi1jb2x1bW4gei1pbmRleFxuICAgICAgICAgICAgdGhpcy5fc2V0Q3NzVmFyVmFsdWUoJy0tZXVpLXotaW5kZXgtc2lkZWJhcicsICcxMDQ0Jyk7ICAgICAgICAgICAgICAgICAgLy8gUmVzdG9yZSBldWktYXBwLXNpZGViYXIgei1pbmRleFxuICAgICAgICAgICAgdGhpcy5fc2V0Q3NzVmFyVmFsdWUoJy0tZXVpLXotaW5kZXgtcm9vdCcsICcxJyk7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzdG9yZSBldWktYXBwLW1haW4tY29udGVudCB6LWluZGV4XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLVxuICAgIC8vIHB1YmxpYyBtZXRob2RzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS1cbiAgICBwdWJsaWMgZmV0Y2hBcHBNZXRhZGF0YShtZXRhZGF0YUZpbGVQYXRoID0gJ2Fzc2V0cy9hcHAtbWV0YWRhdGEuanNvbicpIHtcbiAgICAgICAgdGhpcy5nZXRKc29uKG1ldGFkYXRhRmlsZVBhdGgpXG4gICAgICAgICAgICAudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLnN0YXRlLFxuICAgICAgICAgICAgICAgICAgICBhcHBNZXRhZGF0YTogZGF0YSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhY3RpdmF0ZVNpZGViYXIoKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZSxcbiAgICAgICAgICAgIGhhc1NpZGViYXI6IHRydWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghdGhpcy5zdGF0ZS5pc1NpZGViYXJIaWRkZW4pIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZhdGVTaWRlYmFyQ3NzVmFycygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlU2lkZWJhckhlYWRlcigpIHtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZVNpZGViYXJIZWFkZXJDc3NWYXJzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlU2lkZWJhckZvb3RlcigpIHtcbiAgICAgICAgdGhpcy5hY3RpdmF0ZVNpZGViYXJGb290ZXJDc3NWYXJzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlSGVhZGVyKCkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgICBoYXNIZWFkZXI6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFjdGl2YXRlSGVhZGVyQ3NzVmFycygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhY3RpdmF0ZVRvcE1lc3NhZ2UoaGVpZ2h0OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAuLi50aGlzLnN0YXRlLFxuICAgICAgICAgICAgaGFzVG9wTWVzc2FnZTogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWN0aXZhdGVUb3BNZXNzYWdlQ3NzVmFycyhoZWlnaHQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhY3RpdmF0ZVRvb2xiYXIoKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgLi4udGhpcy5zdGF0ZSxcbiAgICAgICAgICAgIGhhc1Rvb2xiYXI6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFjdGl2YXRlVG9vbGJhckNzc1ZhcnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWN0aXZhdGVUb29sYmFyTWVudSgpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAuLi50aGlzLnN0YXRlLFxuICAgICAgICAgICAgaGFzVG9vbGJhck1lbnU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBmZXRjaENzc1ZhcnMoKSB7XG4gICAgICAgIGNvbnN0IGNzc1Zhck5hbWVzID0gW1xuICAgICAgICAgICAgJy0tZXVpLWFwcC1oZWFkZXItaGVpZ2h0LWRlZmF1bHQnLFxuICAgICAgICAgICAgJy0tZXVpLWFwcC1oZWFkZXItaGVpZ2h0LWFjdGl2ZScsXG4gICAgICAgICAgICAnLS1ldWktYXBwLWhlYWRlci1oZWlnaHQtc2hyaW5rJyxcbiAgICAgICAgICAgICctLWV1aS1hcHAtdG9wLW1lc3NhZ2UtaGVpZ2h0LWRlZmF1bHQnLFxuICAgICAgICAgICAgJy0tZXVpLWFwcC10b3AtbWVzc2FnZS1oZWlnaHQtYWN0aXZlJyxcbiAgICAgICAgICAgICctLWV1aS1hcHAtdG9wLW1lc3NhZ2UtaGVpZ2h0LXNocmluaycsXG4gICAgICAgICAgICAnLS1ldWktYXBwLXRvb2xiYXItaGVpZ2h0LWRlZmF1bHQnLFxuICAgICAgICAgICAgJy0tZXVpLWFwcC10b29sYmFyLWhlaWdodC1hY3RpdmUnLFxuICAgICAgICAgICAgJy0tZXVpLWFwcC1zaWRlYmFyLXdpZHRoLWRlZmF1bHQnLFxuICAgICAgICAgICAgJy0tZXVpLWFwcC1zaWRlYmFyLXdpZHRoLWFjdGl2ZScsXG4gICAgICAgICAgICAnLS1ldWktYXBwLXNpZGViYXItd2lkdGgtY2xvc2UtZGVmYXVsdCcsXG4gICAgICAgICAgICAnLS1ldWktYXBwLXNpZGViYXItd2lkdGgtY2xvc2UtYWN0aXZlJyxcbiAgICAgICAgICAgICctLWV1aS1hcHAtc2lkZWJhci1oZWFkZXItaGVpZ2h0LWRlZmF1bHQnLFxuICAgICAgICAgICAgJy0tZXVpLWFwcC1zaWRlYmFyLWhlYWRlci1oZWlnaHQtYWN0aXZlJyxcbiAgICAgICAgICAgICctLWV1aS1hcHAtc2lkZWJhci1mb290ZXItaGVpZ2h0LWRlZmF1bHQnLFxuICAgICAgICAgICAgJy0tZXVpLWFwcC1zaWRlYmFyLWZvb3Rlci1oZWlnaHQtYWN0aXZlJyxcbiAgICAgICAgXTtcblxuICAgICAgICB0aGlzLmNzc1ZhcnMgPSBjc3NWYXJOYW1lcy5tYXAoKHYpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7IGtleTogdiwgdmFsdWU6IHRoaXMuZ2V0Q3NzVmFyVmFsdWUodikgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGluaXRDc3NWYXJzKCkge1xuICAgICAgICB0aGlzLnNldENzc1ZhcignLS1ldWktYXBwLWhlYWRlci1oZWlnaHQtZGVmYXVsdCcsICctLWV1aS1hcHAtaGVhZGVyLWhlaWdodCcpO1xuICAgICAgICB0aGlzLnNldENzc1ZhcignLS1ldWktYXBwLXRvcC1tZXNzYWdlLWhlaWdodC1kZWZhdWx0JywgJy0tZXVpLWFwcC10b3AtbWVzc2FnZS1oZWlnaHQnKTtcbiAgICAgICAgdGhpcy5zZXRDc3NWYXIoJy0tZXVpLWFwcC10b29sYmFyLWhlaWdodC1kZWZhdWx0JywgJy0tZXVpLWFwcC10b29sYmFyLWhlaWdodCcpO1xuICAgICAgICB0aGlzLnNldENzc1ZhcignLS1ldWktYXBwLXNpZGViYXItd2lkdGgtZGVmYXVsdCcsICctLWV1aS1hcHAtc2lkZWJhci13aWR0aCcpO1xuICAgICAgICB0aGlzLnNldENzc1ZhcignLS1ldWktYXBwLXNpZGViYXItd2lkdGgtY2xvc2UtZGVmYXVsdCcsICctLWV1aS1hcHAtc2lkZWJhci13aWR0aC1jbG9zZScpO1xuICAgICAgICB0aGlzLnNldENzc1ZhcignLS1ldWktYXBwLXNpZGViYXItaGVhZGVyLWhlaWdodC1kZWZhdWx0JywgJy0tZXVpLWFwcC1zaWRlYmFyLWhlYWRlci1oZWlnaHQnKTtcbiAgICAgICAgdGhpcy5zZXRDc3NWYXIoJy0tZXVpLWFwcC1zaWRlYmFyLWZvb3Rlci1oZWlnaHQtZGVmYXVsdCcsICctLWV1aS1hcHAtc2lkZWJhci1mb290ZXItaGVpZ2h0Jyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlSGVhZGVyQ3NzVmFycygpIHtcbiAgICAgICAgdGhpcy5zZXRDc3NWYXIoJy0tZXVpLWFwcC1oZWFkZXItaGVpZ2h0LWFjdGl2ZScsICctLWV1aS1hcHAtaGVhZGVyLWhlaWdodCcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhY3RpdmF0ZVRvcE1lc3NhZ2VDc3NWYXJzKGhlaWdodDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX3NldENzc1ZhclZhbHVlKCctLWV1aS1hcHAtdG9wLW1lc3NhZ2UtaGVpZ2h0JywgYCR7aGVpZ2h0fXB4YCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlVG9vbGJhckNzc1ZhcnMoKSB7XG4gICAgICAgIHRoaXMuc2V0Q3NzVmFyKCctLWV1aS1hcHAtdG9vbGJhci1oZWlnaHQtYWN0aXZlJywgJy0tZXVpLWFwcC10b29sYmFyLWhlaWdodCcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhY3RpdmF0ZUZvb3RlckNzc1ZhcnMoKSB7XG4gICAgICAgIHRoaXMuc2V0Q3NzVmFyKCctLWV1aS1hcHAtZm9vdGVyLWhlaWdodC1hY3RpdmUnLCAnLS1ldWktYXBwLWZvb3Rlci1oZWlnaHQnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0SGVhZGVyU2hyaW5rQ3NzVmFyKGFjdGl2ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAoYWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLnNldENzc1ZhcignLS1ldWktYXBwLWhlYWRlci1oZWlnaHQtc2hyaW5rJywgJy0tZXVpLWFwcC1oZWFkZXItaGVpZ2h0Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldENzc1ZhcignLS1ldWktYXBwLWhlYWRlci1oZWlnaHQtYWN0aXZlJywgJy0tZXVpLWFwcC1oZWFkZXItaGVpZ2h0Jyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYWN0aXZhdGVTaWRlYmFyQ3NzVmFycygpIHtcbiAgICAgICAgdGhpcy5zZXRDc3NWYXIoJy0tZXVpLWFwcC1zaWRlYmFyLXdpZHRoLWFjdGl2ZScsICctLWV1aS1hcHAtc2lkZWJhci13aWR0aCcpO1xuICAgICAgICB0aGlzLnNldENzc1ZhcignLS1ldWktYXBwLXNpZGViYXItd2lkdGgtY2xvc2UtYWN0aXZlJywgJy0tZXVpLWFwcC1zaWRlYmFyLXdpZHRoLWNsb3NlJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlU2lkZWJhckhlYWRlckNzc1ZhcnMoKSB7XG4gICAgICAgIHRoaXMuc2V0Q3NzVmFyKCctLWV1aS1hcHAtc2lkZWJhci1oZWFkZXItaGVpZ2h0LWFjdGl2ZScsICctLWV1aS1hcHAtc2lkZWJhci1oZWFkZXItaGVpZ2h0Jyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFjdGl2YXRlU2lkZWJhckZvb3RlckNzc1ZhcnMoKSB7XG4gICAgICAgIHRoaXMuc2V0Q3NzVmFyKCctLWV1aS1hcHAtc2lkZWJhci1mb290ZXItaGVpZ2h0LWFjdGl2ZScsICctLWV1aS1hcHAtc2lkZWJhci1mb290ZXItaGVpZ2h0Jyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZGlzcGxheXMgYSBncm93bCBVeE1lc3NhZ2UgaXRlbSwgaXNTdGlja3lcbiAgICAgKi9cbiAgICBncm93bChtc2c6IFV4TWVzc2FnZSwgaXNTdGlja3k/OiBib29sZWFuLCBpc011bHRpcGxlPzogYm9vbGVhbiwgbGlmZT86IG51bWJlciwgcG9zaXRpb24/OiBzdHJpbmcsIGNhbGxiYWNrPzogKCkgPT4gdm9pZCkge1xuICAgICAgICBpZiAobXNnLnNldmVyaXR5ICE9PSAnaW5mbycgJiYgbXNnLnNldmVyaXR5ICE9PSAnd2FybmluZycgJiYgbXNnLnNldmVyaXR5ICE9PSAnc3VjY2VzcycgJiYgbXNnLnNldmVyaXR5ICE9PSAnZGFuZ2VyJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVeEFwcFNoZWxsU2VydmljZS5ncm93bCgpIEVSUk9SIDogbWVzc2FnZSBzZXZlcml0eSBtdXN0IGJlIGVpdGhlciA6IHN1Y2Nlc3MsIHdhcm5pbmcsIGluZm8sIGRhbmdlcicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzTXVsdGlwbGUgPT09IHVuZGVmaW5lZCB8fCAhaXNNdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3Jvd2xNZXNzYWdlcyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5ncm93bE1lc3NhZ2VzID0gdGhpcy5ncm93bE1lc3NhZ2VzLmNvbmNhdChtc2cpO1xuICAgICAgICAgICAgbXNnLmxpZmUgPSBsaWZlO1xuICAgICAgICAgICAgbXNnLnN0aWNreSA9IGlzU3RpY2t5O1xuXG4gICAgICAgICAgICBpZiAobGlmZSA9PT0gdW5kZWZpbmVkIHx8IGlzTmFOKGxpZmUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1zZy5zZXZlcml0eSA9PT0gJ2RhbmdlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNTdGlja3kgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3Jvd2xMaWZlID0gMzAwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3Jvd2xMaWZlID0gbGlmZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGlzU3RpY2t5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0dyb3dsU3RpY2t5ID0gaXNTdGlja3k7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNHcm93bFN0aWNreSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3dsUG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncm93bENhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3Jvd2xDYWxsYmFjayA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xlYXJHcm93bCgpIHtcbiAgICAgICAgdGhpcy5ncm93bE1lc3NhZ2VzID0gW107XG4gICAgfVxuXG4gICAgZ3Jvd2xTdWNjZXNzKG1zZzogc3RyaW5nLCBwb3NpdGlvbj86IHN0cmluZykge1xuICAgICAgICB0aGlzLmdyb3dsKHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ1NVQ0NFU1MnLCBkZXRhaWw6IG1zZyB9LCBmYWxzZSwgZmFsc2UsIHVuZGVmaW5lZCwgcG9zaXRpb24pO1xuICAgIH1cblxuICAgIGdyb3dsRXJyb3IobXNnOiBzdHJpbmcsIHBvc2l0aW9uPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZ3Jvd2woeyBzZXZlcml0eTogJ2RhbmdlcicsIHN1bW1hcnk6ICdFUlJPUicsIGRldGFpbDogbXNnIH0sIGZhbHNlLCBmYWxzZSwgdW5kZWZpbmVkLCBwb3NpdGlvbik7XG4gICAgfVxuXG4gICAgLy8gZGF0ZSBoZWxwZXJzXG5cbiAgICBncm93bFdhcm5pbmcobXNnOiBzdHJpbmcsIHBvc2l0aW9uPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZ3Jvd2woeyBzZXZlcml0eTogJ3dhcm5pbmcnLCBzdW1tYXJ5OiAnV0FSTklORycsIGRldGFpbDogbXNnIH0sIGZhbHNlLCBmYWxzZSwgdW5kZWZpbmVkLCBwb3NpdGlvbik7XG4gICAgfVxuXG4gICAgZ3Jvd2xJbmZvKG1zZzogc3RyaW5nLCBwb3NpdGlvbj86IHN0cmluZykge1xuICAgICAgICB0aGlzLmdyb3dsKHsgc2V2ZXJpdHk6ICdpbmZvJywgc3VtbWFyeTogJ0lORk8nLCBkZXRhaWw6IG1zZyB9LCBmYWxzZSwgZmFsc2UsIHVuZGVmaW5lZCwgcG9zaXRpb24pO1xuICAgIH1cblxuICAgIG9wZW5Nb2RhbChtb2RhbElkPzogc3RyaW5nKSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnbW9kYWwtb3BlbicpO1xuICAgICAgICBpZiAoIW1vZGFsSWQpIHtcbiAgICAgICAgICAgIG1vZGFsSWQgPSAnc2luZ2xlX21vZGFsJztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZlTW9kYWxzLnB1c2goe1xuICAgICAgICAgICAgaWQ6IG1vZGFsSWQsXG4gICAgICAgICAgICBpc09wZW46IHRydWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChtb2RhbElkICsgJy1jbG9zZS1idXR0b24nKTtcbiAgICAgICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgICAgIGVsLmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDEwMCk7XG4gICAgfVxuXG4gICAgb3Blbk1lc3NhZ2VCb3gobWVzc2FnZUJveElkPzogc3RyaW5nKSB7XG4gICAgICAgIGlmICghbWVzc2FnZUJveElkKSB7XG4gICAgICAgICAgICBtZXNzYWdlQm94SWQgPSAnbWVzc2FnZWJveF9tb2RhbCc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vcGVuTW9kYWwobWVzc2FnZUJveElkKTtcbiAgICB9XG5cbiAgICBjbG9zZU1lc3NhZ2VCb3gobWVzc2FnZUJveElkPzogc3RyaW5nKSB7XG4gICAgICAgIGlmICghbWVzc2FnZUJveElkKSB7XG4gICAgICAgICAgICBtZXNzYWdlQm94SWQgPSAnbWVzc2FnZWJveF9tb2RhbCc7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jbG9zZU1vZGFsKG1lc3NhZ2VCb3hJZCk7XG4gICAgfVxuXG4gICAgaXNNb2RhbE9wZW4obW9kYWxJZD86IHN0cmluZykge1xuICAgICAgICBpZiAoIW1vZGFsSWQpIHtcbiAgICAgICAgICAgIG1vZGFsSWQgPSAnc2luZ2xlX21vZGFsJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5hY3RpdmVNb2RhbHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBsZXQgbW9kYWxJbmRleDogbnVtYmVyID0gdGhpcy5maW5kTW9kYWxJbmRleChtb2RhbElkKTtcbiAgICAgICAgICAgIGlmIChtb2RhbEluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZU1vZGFsc1ttb2RhbEluZGV4XS5pc09wZW47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFBvc2l0aW9ucyBoZWxwZXJzXG5cbiAgICBjbG9zZU1vZGFsKG1vZGFsSWQ/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCFtb2RhbElkKSB7XG4gICAgICAgICAgICBtb2RhbElkID0gJ3NpbmdsZV9tb2RhbCc7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogTWFrZSBzdXJlIHdlIGZpbmQgdGhlIG1vZGFsIGJlZm9yZSBzcGxpY2luZyB0aGUgYWN0aXZlTW9kYWxzIGFycmF5XG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZmluZE1vZGFsSW5kZXgobW9kYWxJZCk7XG4gICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZU1vZGFscy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlTW9kYWxzICYmIHRoaXMuYWN0aXZlTW9kYWxzLmxlbmd0aCA8PSAwKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ21vZGFsLW9wZW4nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIHN0aWxsIGFub3RoZXIgKHBhcmVudCkgbW9kYWwgZGlhbG9nIG9wZW4sIGVuc3VyZSBpdCBpcyBmb2N1c2VkIHVwb24gdG8gYmUgYWJsZSB0byBjbG9zZSBpcyB3aXRoIHRoZSBFU0Mga2V5OlxuICAgICAgICAgICAgY29uc3QgbGFzdE1vZGFsSWQgPSB0aGlzLmFjdGl2ZU1vZGFscyBbdGhpcy5hY3RpdmVNb2RhbHMubGVuZ3RoIC0gMV0uaWQ7XG4gICAgICAgICAgICBpZiAobGFzdE1vZGFsSWQpIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChsYXN0TW9kYWxJZCArICctY2xvc2UtYnV0dG9uJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWwuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmaW5kTW9kYWxJbmRleChtb2RhbElkOiBzdHJpbmcpIHtcbiAgICAgICAgbGV0IGluZGV4OiBudW1iZXIgPSAtMTtcblxuICAgICAgICBpZiAodGhpcy5hY3RpdmVNb2RhbHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuYWN0aXZlTW9kYWxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlTW9kYWxzW2ldLmlkID09PSBtb2RhbElkKSB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIHByaXZhdGUgZ2V0dGVyc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLVxuICAgIHByaXZhdGUgZ2V0Q3NzVmFyVmFsdWUoaW5wdXRQcm9wZXJ0eSkge1xuICAgICAgICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoaW5wdXRQcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRDc3NWYXIoaW5wdXRQcm9wZXJ0eSwgb3V0cHV0UHJvcGVydHkpIHtcbiAgICAgICAgY29uc3QgY3NzVmFyVmFsdWUgPSB0aGlzLmNzc1ZhcnMuZmlsdGVyKHYgPT4gdi5rZXkgPT09IGlucHV0UHJvcGVydHkpWzBdLnZhbHVlO1xuICAgICAgICB0aGlzLl9zZXRDc3NWYXJWYWx1ZShvdXRwdXRQcm9wZXJ0eSwgY3NzVmFyVmFsdWUpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhpbnB1dFByb3BlcnR5LCBvdXRwdXRQcm9wZXJ0eSwgY3NzVmFyVmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NldENzc1ZhclZhbHVlKHZhck5hbWUsIHZhclZhbHVlKSB7XG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSh2YXJOYW1lLCB2YXJWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRXcmFwcGVyQ2xhc3NlcyhzdGF0ZTogVUlTdGF0ZSwgYnJlYWtwb2ludDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGNsYXNzZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAgICAgY2xhc3Nlcy5wdXNoKGJyZWFrcG9pbnQpO1xuXG4gICAgICAgIGlmIChzdGF0ZS5pc1NpZGViYXJPcGVuICYmIChzdGF0ZS5pc1NpZGViYXJBY3RpdmUgfHwgc3RhdGUuaXNTaWRlYmFySW5uZXJBY3RpdmUpKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goJ3NpZGViYXItc3RhdGUtb3BlbicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc3RhdGUuaXNTaWRlYmFyT3BlbiAmJiAoc3RhdGUuaXNTaWRlYmFyQWN0aXZlIHx8IHN0YXRlLmlzU2lkZWJhcklubmVyQWN0aXZlKSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdzaWRlYmFyLXN0YXRlLWNsb3NlJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlLmlzU2lkZWJhckFjdGl2ZSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdzaWRlYmFyLWFjdGl2ZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZS5pc1NpZGViYXJJbm5lckFjdGl2ZSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdzaWRlYmFyLWlubmVyLWFjdGl2ZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZS5pc1NpZGViYXJTdGF0ZUNsb3NlV2l0aEljb25zKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goJ3NpZGViYXItc3RhdGUtY2xvc2Utd2l0aC1pY29ucycpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTkVXIEFQUC1TSEVMTCBwcm9wc1xuICAgICAgICBpZiAoc3RhdGUuaXNTaWRlYmFySGlkZGVuKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goJ3NpZGViYXItLWhpZGRlbicpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZS5pc1NpZGViYXJPcGVuKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2goJ3NpZGViYXItLW9wZW4nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNsYXNzZXMucHVzaCgnc2lkZWJhci0tY2xvc2UnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuaXNTaWRlYmFySG92ZXIpIHtcbiAgICAgICAgICAgIGNsYXNzZXMucHVzaCgnc2lkZWJhci0taG92ZXInKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuZGV2aWNlSW5mbyAmJiBzdGF0ZS5kZXZpY2VJbmZvLmlzRkYpIHtcbiAgICAgICAgICAgIGNsYXNzZXMucHVzaCgnZmYnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuZGV2aWNlSW5mbyAmJiBzdGF0ZS5kZXZpY2VJbmZvLmlzSUUpIHtcbiAgICAgICAgICAgIGNsYXNzZXMucHVzaCgnaWUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuZGV2aWNlSW5mbyAmJiBzdGF0ZS5kZXZpY2VJbmZvLmlzSUUxMSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdpZTExJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlLmRldmljZUluZm8gJiYgc3RhdGUuZGV2aWNlSW5mby5pc0Nocm9tZSkge1xuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKCdjaHJvbWUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2xhc3Nlcy5qb2luKCcgJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRCcmVha3BvaW50KHdpbmRvd1dpZHRoOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICBsZXQgYmtwOiBzdHJpbmcgPSAnJztcblxuICAgICAgICBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgY2FzZSAod2luZG93V2lkdGggPj0gMCAmJiB3aW5kb3dXaWR0aCA8IDU3Nik6XG4gICAgICAgICAgICBia3AgPSAneHMnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgKHdpbmRvd1dpZHRoID49IDU3NiAmJiB3aW5kb3dXaWR0aCA8IDc2OCk6XG4gICAgICAgICAgICBia3AgPSAnc20nO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgKHdpbmRvd1dpZHRoID49IDc2OCAmJiB3aW5kb3dXaWR0aCA8IDk5Mik6XG4gICAgICAgICAgICBia3AgPSAnbWQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgKHdpbmRvd1dpZHRoID49IDk5MiAmJiB3aW5kb3dXaWR0aCA8IDEyMDApOlxuICAgICAgICAgICAgYmtwID0gJ2xnJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICh3aW5kb3dXaWR0aCA+PSAxMjAwICYmIHdpbmRvd1dpZHRoIDwgMTQwMCk6XG4gICAgICAgICAgICBia3AgPSAneGwnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgKHdpbmRvd1dpZHRoID49IDE0MDApOlxuICAgICAgICAgICAgYmtwID0gJ3h4bCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmtwO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QnJlYWtwb2ludHMoYmtwOiBzdHJpbmcpOiBhbnkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXNNb2JpbGU6IChia3AgPT09ICd4cycgfHwgYmtwID09PSAnc20nKSxcbiAgICAgICAgICAgIGlzVGFibGV0OiBia3AgPT09ICdtZCcsXG4gICAgICAgICAgICBpc0x0RGVza3RvcDogKGJrcCA9PT0gJ3hzJyB8fCBia3AgPT09ICdzbScgfHwgYmtwID09PSAnbWQnKSxcbiAgICAgICAgICAgIGlzRGVza3RvcDogYmtwID09PSAnbGcnLFxuICAgICAgICAgICAgaXNYTDogYmtwID09PSAneGwnLFxuICAgICAgICAgICAgaXNYWEw6IGJrcCA9PT0gJ3h4bCcsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRKc29uKHVybDogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldCh1cmwpXG4gICAgICAgICAgICAudG9Qcm9taXNlKClcbiAgICAgICAgICAgIC50aGVuKHRoaXMuZXh0cmFjdERhdGEpXG4gICAgICAgICAgICAuY2F0Y2godGhpcy5oYW5kbGVFcnJvcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHRyYWN0RGF0YShyZXM6IFJlc3BvbnNlKSB7XG4gICAgICAgIGNvbnN0IGJvZHkgPSByZXM7XG4gICAgICAgIHJldHVybiBib2R5IHx8IHt9O1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FuIGVycm9yIG9jY3VycmVkJywgZXJyb3IpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IubWVzc2FnZSB8fCBlcnJvcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBiaW5kQWN0aXZlTGFuZ3VhZ2VUb0FwcFNoZWxsU3RhdGUoKSB7XG4gICAgICAgIHRoaXMuc3RvcmVTZXJ2aWNlLnNlbGVjdChnZXRBY3RpdmVMYW5nKS5zdWJzY3JpYmUoKGFjdGl2ZUxhbmcpID0+IHtcbiAgICAgICAgICAgIGlmIChhY3RpdmVMYW5nICE9PSB0aGlzLnN0YXRlLmFjdGl2ZUxhbmd1YWdlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZUxhbmd1YWdlOiBhY3RpdmVMYW5nLFxuICAgICAgICAgICAgICAgIH0sIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
@@ -54,10 +54,10 @@ export class UxDynamicComponentService {
|
|
|
54
54
|
return new PortalInjector(this.injector, injectorTokens);
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
-
/** @nocollapse */ /** @nocollapse */ UxDynamicComponentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.
|
|
58
|
-
/** @nocollapse */ /** @nocollapse */ UxDynamicComponentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.
|
|
59
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.
|
|
57
|
+
/** @nocollapse */ /** @nocollapse */ UxDynamicComponentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: UxDynamicComponentService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: i0.ApplicationRef }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
58
|
+
/** @nocollapse */ /** @nocollapse */ UxDynamicComponentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: UxDynamicComponentService, providedIn: 'root' });
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: UxDynamicComponentService, decorators: [{
|
|
60
60
|
type: Injectable,
|
|
61
61
|
args: [{ providedIn: 'root' }]
|
|
62
62
|
}], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: i0.ApplicationRef }]; } });
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXgtZHluYW1pYy1jb21wb25lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvdXgtZHluYW1pYy1jb21wb25lbnQvdXgtZHluYW1pYy1jb21wb25lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBS0gsVUFBVSxFQUNWLGNBQWMsRUFHakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFpQixNQUFNLHFCQUFxQixDQUFDOztBQUV0RyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FBSywwQkFBMEIsQ0FBQyxDQUFDO0FBRzNGLE1BQU0sT0FBTyx5QkFBeUI7SUFNbEMsWUFDWSx3QkFBa0QsRUFDbEQsUUFBa0IsRUFDbEIsTUFBc0I7UUFGdEIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFdBQU0sR0FBTixNQUFNLENBQWdCO0lBRWxDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEdBQUcsQ0FBSSxTQUEyQixFQUFFLEVBQWUsRUFBRSxNQUFZO1FBRXBFLHlDQUF5QztRQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksZUFBZSxDQUNqQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQ3JDLElBQUksQ0FBQyx3QkFBd0IsRUFDN0IsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsUUFBUSxDQUNoQixDQUFDO1FBRUYsOEVBQThFO1FBQzlFLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUksU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5HLHdCQUF3QjtRQUN4QixJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRW5FLElBQUksTUFBTSxFQUFFO1lBQ1IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7Z0JBQ2xCLGFBQWEsRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDOUIsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUN0QiwwQkFBMEIsRUFBRSxJQUFJLENBQUMsdUJBQXVCO2FBQzNELENBQUMsQ0FBQztTQUNOO1FBRUQsT0FBTztZQUNILFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLHVCQUF1QjtTQUN4RCxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxhQUE4QjtRQUN4QyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztJQUN4QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssY0FBYyxDQUFDLElBQVM7UUFDNUIsTUFBTSxjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNyQyxjQUFjLENBQUMsR0FBRyxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25ELE9BQU8sSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUM3RCxDQUFDOzs0SkF0RVEseUJBQXlCO2dLQUF6Qix5QkFBeUIsY0FEWixNQUFNOzJGQUNuQix5QkFBeUI7a0JBRHJDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBcHBsaWNhdGlvblJlZixcbiAgICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgQ29tcG9uZW50UmVmLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0YWJsZSxcbiAgICBJbmplY3Rpb25Ub2tlbixcbiAgICBJbmplY3RvcixcbiAgICBTdGF0aWNQcm92aWRlclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCwgRG9tUG9ydGFsT3V0bGV0LCBQb3J0YWxJbmplY3RvciwgQ29tcG9uZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuXG5leHBvcnQgY29uc3QgRFlOQU1JQ19DT01QT05FTlRfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPHt9PignRFlOQU1JQ19DT01QT05FTlRfQ09ORklHJyk7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVXhEeW5hbWljQ29tcG9uZW50U2VydmljZSB7XG5cbiAgICBwcml2YXRlIHBvcnRhbEhvc3Q6IERvbVBvcnRhbE91dGxldDtcbiAgICBwcml2YXRlIHBvcnRhbDogQ29tcG9uZW50UG9ydGFsPGFueT47XG4gICAgcHJpdmF0ZSBwb3J0YWxDb21wb25lbnRJbnN0YW5jZTogQ29tcG9uZW50UmVmPGFueT47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICAgICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgYXBwUmVmOiBBcHBsaWNhdGlvblJlZixcbiAgICApIHtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEgY29tcG9uZW50IHRvIHBvcnRhbCBob3N0IGR5bmFtaWNhbGx5XG4gICAgICogQHBhcmFtIGNvbXBvbmVudCBUaGUgY29tcG9uZW50IHRvIGJlIGluamVjdGVkXG4gICAgICogQHBhcmFtIGVsIFRoZSBlbGVtZW50IHJlZmVyZW5jZSBmb3IgdGhlIGNvbXBvbmVudCB0byBiZSBpbmplY3RlZFxuICAgICAqIEBwYXJhbSBjb25maWcgVGhlIGRhdGEgdG8gYmUgcGFzc2VkIChjb25maWcpIGZvciB0aGUgRFlOQU1JQ19DT01QT05FTlRfQ09ORklHIHRva2VuXG4gICAgICovXG4gICAgcHVibGljIGFkZDxUPihjb21wb25lbnQ6IENvbXBvbmVudFR5cGU8VD4sIGVsPzogRWxlbWVudFJlZiwgY29uZmlnPzogYW55KSB7XG5cbiAgICAgICAgLy8gQ3JlYXRlIGEgcG9ydGFsSG9zdCBmcm9tIGEgRE9NIGVsZW1lbnRcbiAgICAgICAgdGhpcy5wb3J0YWxIb3N0ID0gbmV3IERvbVBvcnRhbE91dGxldChcbiAgICAgICAgICAgIGVsID8gZWwubmF0aXZlRWxlbWVudCA6IGRvY3VtZW50LmJvZHksXG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICAgICAgICAgIHRoaXMuYXBwUmVmLFxuICAgICAgICAgICAgdGhpcy5pbmplY3RvclxuICAgICAgICApO1xuXG4gICAgICAgIC8vIExvY2F0ZSB0aGUgY29tcG9uZW50IGZhY3RvcnkgZm9yIHRoZSBDb21wb25lbnRUb0luY2x1ZGVEeW5hbWljYWxseUNvbXBvbmVudFxuICAgICAgICB0aGlzLnBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWw8VD4oY29tcG9uZW50LCBudWxsLCBjb25maWcgPyB0aGlzLmNyZWF0ZUluamVjdG9yKGNvbmZpZykgOiBudWxsKTtcblxuICAgICAgICAvLyBBdHRhY2ggcG9ydGFsIHRvIGhvc3RcbiAgICAgICAgdGhpcy5wb3J0YWxDb21wb25lbnRJbnN0YW5jZSA9IHRoaXMucG9ydGFsSG9zdC5hdHRhY2godGhpcy5wb3J0YWwpO1xuXG4gICAgICAgIGlmIChjb25maWcpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oY29uZmlnLCB7XG4gICAgICAgICAgICAgICAgcG9ydGFsSG9zdFJlZjogdGhpcy5wb3J0YWxIb3N0LFxuICAgICAgICAgICAgICAgIHBvcnRhbFJlZjogdGhpcy5wb3J0YWwsXG4gICAgICAgICAgICAgICAgcG9ydGFsQ29tcG9uZW50SW5zdGFuY2VSZWY6IHRoaXMucG9ydGFsQ29tcG9uZW50SW5zdGFuY2UsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwb3J0YWxIb3N0OiB0aGlzLnBvcnRhbEhvc3QsXG4gICAgICAgICAgICBwb3J0YWw6IHRoaXMucG9ydGFsLFxuICAgICAgICAgICAgcG9ydGFsQ29tcG9uZW50SW5zdGFuY2U6IHRoaXMucG9ydGFsQ29tcG9uZW50SW5zdGFuY2VcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBkZXRhY2hlcyBhIHBvcnRhbEhvc3RcbiAgICAgKiBAcGFyYW0gcG9ydGFsSG9zdFJlZiByZWZlcmVuY2Ugb2YgcG9ydGFsIGhvc3QgdG8gYmUgZGV0YWNoZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVtb3ZlKHBvcnRhbEhvc3RSZWY6IERvbVBvcnRhbE91dGxldCkge1xuICAgICAgICBwb3J0YWxIb3N0UmVmLmRldGFjaCgpO1xuXG4gICAgICAgIHRoaXMucG9ydGFsSG9zdCA9IG51bGw7XG4gICAgICAgIHRoaXMucG9ydGFsID0gbnVsbDtcbiAgICAgICAgdGhpcy5wb3J0YWxDb21wb25lbnRJbnN0YW5jZSA9IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY3JlYXRlcyBhbiAgQ3VzdG9tIGluamVjdG9yIHRvIGJlIHVzZWQgd2hlbiBwcm92aWRpbmcgY3VzdG9tIGluamVjdGlvbiB0b2tlbnMgdG8gY29tcG9uZW50cyBpbnNpZGUgYSBwb3J0YWxcbiAgICAgKiBAcGFyYW0gZGF0YSB0byBiZSB1c2VkIGJ5IERZTkFNSUNfQ09NUE9ORU5UX0NPTkZJRyB0b2tlblxuICAgICAqL1xuICAgIHByaXZhdGUgY3JlYXRlSW5qZWN0b3IoZGF0YTogYW55KTogSW5qZWN0b3Ige1xuICAgICAgICBjb25zdCBpbmplY3RvclRva2VucyA9IG5ldyBXZWFrTWFwKCk7XG4gICAgICAgIGluamVjdG9yVG9rZW5zLnNldChEWU5BTUlDX0NPTVBPTkVOVF9DT05GSUcsIGRhdGEpO1xuICAgICAgICByZXR1cm4gbmV3IFBvcnRhbEluamVjdG9yKHRoaXMuaW5qZWN0b3IsIGluamVjdG9yVG9rZW5zKTtcbiAgICB9XG5cbn1cbiJdfQ==
|
|
@@ -55,12 +55,12 @@ export class UxDynamicMenuService {
|
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
-
/** @nocollapse */ /** @nocollapse */ UxDynamicMenuService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.
|
|
59
|
-
/** @nocollapse */ /** @nocollapse */ UxDynamicMenuService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.
|
|
60
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.
|
|
58
|
+
/** @nocollapse */ /** @nocollapse */ UxDynamicMenuService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: UxDynamicMenuService, deps: [{ token: i1.EuiPermissionService }, { token: i2.StoreService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
59
|
+
/** @nocollapse */ /** @nocollapse */ UxDynamicMenuService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: UxDynamicMenuService, providedIn: 'root' });
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: UxDynamicMenuService, decorators: [{
|
|
61
61
|
type: Injectable,
|
|
62
62
|
args: [{
|
|
63
63
|
providedIn: 'root',
|
|
64
64
|
}]
|
|
65
65
|
}], ctorParameters: function () { return [{ type: i1.EuiPermissionService }, { type: i2.StoreService }]; } });
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXgtZHluYW1pYy1tZW51LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3V4LWR5bmFtaWMtbWVudS91eC1keW5hbWljLW1lbnUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQVUsTUFBTSxXQUFXLENBQUM7Ozs7QUFPakQsTUFBTSxPQUFPLG9CQUFvQjtJQUc3Qiw4REFBOEQ7SUFDOUQsc0ZBQXNGO0lBQ3RGLFlBQW9CLFlBQWtDLEVBQVUsS0FBbUI7UUFBL0QsaUJBQVksR0FBWixZQUFZLENBQXNCO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUpuRixjQUFTLEdBQWUsRUFBRSxDQUFDO1FBS3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQy9DLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDaEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO2FBQ25DO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsWUFBWTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsdUJBQXVCLENBQUMsS0FBb0I7UUFDeEMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDekIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDL0Q7WUFFRCw0Q0FBNEM7WUFDNUMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUNwQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRTtvQkFDbEQsT0FBTyxLQUFLLENBQUM7aUJBQ2hCO2FBQ0o7WUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3JCLEtBQUssTUFBTSxhQUFhLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtvQkFDN0MsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsRUFBRTt3QkFDN0MsT0FBTyxLQUFLLENBQUM7cUJBQ2hCO2lCQUNKO2FBQ0o7WUFFRCxnRUFBZ0U7WUFDaEUsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUNyQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUM1RDtZQUNELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDdEIsS0FBSyxNQUFNLGNBQWMsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO29CQUMvQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxFQUFFO3dCQUM5QyxPQUFPLElBQUksQ0FBQztxQkFDZjtpQkFDSjtnQkFDRCw0REFBNEQ7Z0JBQzVELE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1lBRUQsNkRBQTZEO1lBQzdELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7dUpBdERRLG9CQUFvQjsySkFBcEIsb0JBQW9CLGNBRmpCLE1BQU07MkZBRVQsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldFVzZXJTdGF0ZSwgVXhMaW5rIH0gZnJvbSAnQGV1aS9iYXNlJztcbmltcG9ydCB7IEV1aVBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vcGVybWlzc2lvbi9wZXJtaXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvcmUvc3RvcmUuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFV4RHluYW1pY01lbnVTZXJ2aWNlIHtcbiAgICBtZW51TGlua3M6IEFycmF5PGFueT4gPSBbXTtcblxuICAgIC8vIFRPRE86IGl0IHNob3VsZCBiZSBtb3ZlZCBldWlzZXJ2aWNlLCBvciBpdCBzaG91bGQgYmUgc3RhdGljXG4gICAgLy8gVE9ETzogY2FuIHdlIG1vdmVkIHRoYXQgc2VydmljZSBpbnNpZGUgdGhlIG1vZHVsZSBvZiB0aGUgY29tcG9uZW50IHRoYXQncyB1c2luZyBpdD9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHV4UGVybWlzc2lvbjogRXVpUGVybWlzc2lvblNlcnZpY2UsIHByaXZhdGUgc3RvcmU6IFN0b3JlU2VydmljZSkge1xuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChnZXRVc2VyU3RhdGUpLnN1YnNjcmliZSgodXNlcikgPT4ge1xuICAgICAgICAgICAgaWYgKHVzZXIubWVudUxpbmtzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZW51TGlua3MgPSB1c2VyLm1lbnVMaW5rcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0TWVudUxpbmtzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tZW51TGlua3M7XG4gICAgfVxuXG4gICAgZmlsdGVyVXhMaW5rc1dpdGhSaWdodHMobGlua3M6IEFycmF5PFV4TGluaz4pOiBBcnJheTxVeExpbms+IHtcbiAgICAgICAgcmV0dXJuIGxpbmtzLmZpbHRlcigobGluaykgPT4ge1xuICAgICAgICAgICAgaWYgKGxpbmsuaGFzQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBsaW5rLmNoaWxkcmVuID0gdGhpcy5maWx0ZXJVeExpbmtzV2l0aFJpZ2h0cyhsaW5rLmNoaWxkcmVuKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhlIHVzZXIgaXMgZGVuaWVkIGFjY2VzczpcbiAgICAgICAgICAgIGlmIChsaW5rLmRlbmllZFJpZ2h0SWQpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy51eFBlcm1pc3Npb24uY2hlY2tSaWdodChsaW5rLmRlbmllZFJpZ2h0SWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGluay5kZW5pZWRSaWdodElkcykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZGVuaWVkUmlnaHRJZCBvZiBsaW5rLmRlbmllZFJpZ2h0SWRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnV4UGVybWlzc2lvbi5jaGVja1JpZ2h0KGRlbmllZFJpZ2h0SWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFRoZW4gY2hlY2sgaWYgdGhlIHVzZXIgbmVlZHMgdG8gYmUgYWxsb3dlZCBhY2Nlc3MgZXhwbGljaXRseTpcbiAgICAgICAgICAgIGlmIChsaW5rLmFsbG93ZWRSaWdodElkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXhQZXJtaXNzaW9uLmNoZWNrUmlnaHQobGluay5hbGxvd2VkUmlnaHRJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGluay5hbGxvd2VkUmlnaHRJZHMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGFsbG93ZWRSaWdodElkIG9mIGxpbmsuYWxsb3dlZFJpZ2h0SWRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnV4UGVybWlzc2lvbi5jaGVja1JpZ2h0KGFsbG93ZWRSaWdodElkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gVXNlciBkb2Vzbid0IGhhdmUgb25lIG9mIHRoZSBhbGxvd2VkIHJpZ2h0cy4gRGVueSBhY2Nlc3M6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBBY2Nlc3MgdG8gdGhlIG1lbnUgaXRlbSBpcyBub3QgZGVuaWVkLCB0aGVyZWZvcmUgYWxsb3cgaXQ6XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
@@ -50,9 +50,9 @@ export class UxErrorFeedbackService {
|
|
|
50
50
|
return new UxErrorManager(this, true);
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
|
-
/** @nocollapse */ /** @nocollapse */ UxErrorFeedbackService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.
|
|
54
|
-
/** @nocollapse */ /** @nocollapse */ UxErrorFeedbackService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.
|
|
55
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.
|
|
53
|
+
/** @nocollapse */ /** @nocollapse */ UxErrorFeedbackService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: UxErrorFeedbackService, deps: [{ token: i1.UxAppShellService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
54
|
+
/** @nocollapse */ /** @nocollapse */ UxErrorFeedbackService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: UxErrorFeedbackService, providedIn: 'root' });
|
|
55
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: UxErrorFeedbackService, decorators: [{
|
|
56
56
|
type: Injectable,
|
|
57
57
|
args: [{
|
|
58
58
|
providedIn: 'root'
|
|
@@ -93,4 +93,4 @@ export class UxErrorManager {
|
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXgtZXJyb3ItZmVlZGJhY2suc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvdXgtZXJyb3ItZmVlZGJhY2svdXgtZXJyb3ItZmVlZGJhY2suc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gseUJBQXlCLEVBSXpCLDJCQUEyQixHQUM5QixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHakUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQUszQyxNQUFNLE9BQU8sc0JBQXNCO0lBRy9CLFlBQW9CLFNBQTRCLEVBQVUsZ0JBQWtDO1FBQXhFLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUY1RixXQUFNLEdBQUcsSUFBSSxPQUFPLEVBQTRCLENBQUM7SUFHakQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWSxDQUFDLEdBQXdCLEVBQUUsVUFBbUIsRUFBRSxPQUFnQixFQUFFLFVBQW9CO1FBQzlGLElBQUksVUFBVSxFQUFFO1lBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSwyQkFBMkIsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO1NBQzdHO2FBQU07WUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFD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RUQsTUFBTTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2hCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBNkIsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNqSDthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUE2QixFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3RHO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBVeENsZWFyRXJyb3JGZWVkYmFja0V2ZW50LFxuICAgIFV4RXJyb3JGZWVkYmFjayxcbiAgICBVeEVycm9yRmVlZGJhY2tFdmVudFR5cGUsXG4gICAgVXhIdHRwRXJyb3JSZXNwb25zZSxcbiAgICBVeFB1Ymxpc2hFcnJvckZlZWRiYWNrRXZlbnQsXG59IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyB3aXRoVXhFcnJvck1hbmFnZXIgfSBmcm9tICcuL3V4LWVycm9yLWhhbmRsZXIub3BlcmF0b3InO1xuaW1wb3J0IHsgVXhBcHBTaGVsbFNlcnZpY2UgfSBmcm9tICcuLi91eC1hcHAtc2hlbGwuc2VydmljZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVXhFcnJvckZlZWRiYWNrU2VydmljZSB7XG4gICAgZXJyb3JzID0gbmV3IFN1YmplY3Q8VXhFcnJvckZlZWRiYWNrRXZlbnRUeXBlPigpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBhc1NlcnZpY2U6IFV4QXBwU2hlbGxTZXJ2aWNlLCBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgUHVibGlzaGVzIGVycm9ycyB0byB0YXJnZXRlZCBjb21wb25lbnRzXG4gICAgICovXG4gICAgcHVibGlzaEVycm9yKGVycjogVXhIdHRwRXJyb3JSZXNwb25zZSwgaW5zdGFuY2VJZD86IHN0cmluZywgZ3JvdXBJZD86IHN0cmluZywgYWNjdW11bGF0ZT86IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKGluc3RhbmNlSWQpIHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JzLm5leHQobmV3IFV4UHVibGlzaEVycm9yRmVlZGJhY2tFdmVudChlcnIudXhIdHRwRXJyb3JPdXRwdXQsIGluc3RhbmNlSWQsIGdyb3VwSWQsIGFjY3VtdWxhdGUpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JzLm5leHQobmV3IFV4UHVibGlzaEVycm9yRmVlZGJhY2tFdmVudChlcnIudXhIdHRwRXJyb3JPdXRwdXQsIHVuZGVmaW5lZCwgZ3JvdXBJZCwgYWNjdW11bGF0ZSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIEdyb3dsIGVycm9yc1xuICAgICAqL1xuICAgIGdyb3dsRXJyb3IoZXJyOiBVeEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgIGNvbnN0IGZlZWRCYWNrcyA9IGVyci51eEh0dHBFcnJvck91dHB1dC5nZXRGZWVkQmFja3MoKTtcbiAgICAgICAgY29uc3QgaXNHcm93bFN0aWNreSA9IGZhbHNlO1xuICAgICAgICBjb25zdCBpc0dyb3dsTXVsdGlwbGUgPSB0cnVlO1xuICAgICAgICBjb25zdCBncm93bExpZmUgPSAxMDAwMDtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSAnYm90dG9tLXJpZ2h0JztcbiAgICAgICAgZmVlZEJhY2tzLmZvckVhY2goKGZlZWRiYWNrOiBVeEVycm9yRmVlZGJhY2spID0+XG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KGZlZWRiYWNrLm1zZ0lkKS5waXBlKFxuICAgICAgICAgICAgICAgIHRha2UoMSkpLnN1YnNjcmliZSgodHJhbnNsYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXNTZXJ2aWNlLmdyb3dsKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldmVyaXR5OiBmZWVkYmFjay5zZXZlcml0eSB8fCAnZGFuZ2VyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcnk6ICdFUlJPUicsXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgaXNHcm93bFN0aWNreSxcbiAgICAgICAgICAgICAgICAgICAgaXNHcm93bE11bHRpcGxlLFxuICAgICAgICAgICAgICAgICAgICBncm93bExpZmUsXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjbGVhckVycm9yKGlkPzogc3RyaW5nLCBncm91cElkPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZXJyb3JzLm5leHQobmV3IFV4Q2xlYXJFcnJvckZlZWRiYWNrRXZlbnQoaWQsIGdyb3VwSWQpKTtcbiAgICB9XG5cbiAgICBjcmVhdGVMb2NhbEVycm9yTWFuYWdlcigpOiBVeEVycm9yTWFuYWdlciB7XG4gICAgICAgIHJldHVybiBuZXcgVXhFcnJvck1hbmFnZXIodGhpcyk7XG4gICAgfVxuXG4gICAgY3JlYXRlR2xvYmFsRXJyb3JNYW5hZ2VyKCk6IFV4RXJyb3JNYW5hZ2VyIHtcbiAgICAgICAgcmV0dXJuIG5ldyBVeEVycm9yTWFuYWdlcih0aGlzLCB0cnVlKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVeEVycm9yTWFuYWdlciB7XG4gICAgcmVhZG9ubHkgaHR0cEVycm9yT3BlcmF0b3IgPSB3aXRoVXhFcnJvck1hbmFnZXIodGhpcyk7XG4gICAgcHJpdmF0ZSBpZCA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdXhFcnJvckZlZWRiYWNrU2VydmljZTogVXhFcnJvckZlZWRiYWNrU2VydmljZSwgcHJpdmF0ZSBpc0dsb2JhbD86IGJvb2xlYW4pIHtcbiAgICB9XG5cbiAgICBwdWJsaXNoRXJyb3IoZXJyOiBVeEh0dHBFcnJvclJlc3BvbnNlLCBncm91cElkPzogc3RyaW5nLCBhY2N1bXVsYXRlPzogYm9vbGVhbikge1xuICAgICAgICBpZiAoIXRoaXMuaXNHbG9iYWwpIHtcbiAgICAgICAgICAgIHRoaXMudXhFcnJvckZlZWRiYWNrU2VydmljZS5wdWJsaXNoRXJyb3IoZXJyLCB0aGlzLmlkLCBncm91cElkLCBhY2N1bXVsYXRlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXhFcnJvckZlZWRiYWNrU2VydmljZS5wdWJsaXNoRXJyb3IoZXJyLCB1bmRlZmluZWQsIGdyb3VwSWQsIGFjY3VtdWxhdGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xlYXJFcnJvcihncm91cElkPzogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5pc0dsb2JhbCkge1xuICAgICAgICAgICAgdGhpcy51eEVycm9yRmVlZGJhY2tTZXJ2aWNlLmNsZWFyRXJyb3IodGhpcy5pZCwgZ3JvdXBJZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnV4RXJyb3JGZWVkYmFja1NlcnZpY2UuY2xlYXJFcnJvcih1bmRlZmluZWQsIGdyb3VwSWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ3Jvd2xFcnJvcihlcnI6IFV4SHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgdGhpcy51eEVycm9yRmVlZGJhY2tTZXJ2aWNlLmdyb3dsRXJyb3IoZXJyKTtcbiAgICB9XG5cbiAgICBlcnJvcnMoKTogT2JzZXJ2YWJsZTxVeEVycm9yRmVlZGJhY2tFdmVudFR5cGU+IHtcbiAgICAgICAgaWYgKCF0aGlzLmlzR2xvYmFsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy51eEVycm9yRmVlZGJhY2tTZXJ2aWNlLmVycm9ycy5waXBlKGZpbHRlcigoZXZ0OiBVeEVycm9yRmVlZGJhY2tFdmVudFR5cGUpID0+IGV2dC5pZCA9PT0gdGhpcy5pZCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudXhFcnJvckZlZWRiYWNrU2VydmljZS5lcnJvcnMucGlwZShmaWx0ZXIoKGV2dDogVXhFcnJvckZlZWRiYWNrRXZlbnRUeXBlKSA9PiAhZXZ0LmlkKSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|