@eo-sdk/client 11.0.0-rc.1 → 11.0.0-rc.11
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/app/eo-client/about-state/about-state.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/dashboard.component.d.ts +2 -23
- package/app/eo-client/dashboard/dashboard.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.d.ts +28 -5
- package/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.d.ts +31 -21
- package/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/charts-widget/icharts.d.ts +7 -0
- package/app/eo-client/dashboard/widgets/charts-widget/icharts.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.d.ts +3 -2
- package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.d.ts +2 -0
- package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects.model.d.ts +1 -0
- package/app/eo-client/dashboard/widgets/count-objects-widget/count-objects.model.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.d.ts +7 -0
- package/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.d.ts +9 -4
- package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.d.ts +2 -2
- package/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.d.ts +3 -2
- package/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.d.ts +3 -2
- package/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.d.ts +3 -2
- package/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created-setup/last-edited-and-created-setup.component.d.ts +8 -4
- package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created-setup/last-edited-and-created-setup.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.d.ts +6 -4
- package/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/picture-widget/picture-widget-setup/picture-widget-setup.component.d.ts +18 -0
- package/app/eo-client/dashboard/widgets/picture-widget/picture-widget-setup/picture-widget-setup.component.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/picture-widget/picture-widget.component.d.ts +10 -0
- package/app/eo-client/dashboard/widgets/picture-widget/picture-widget.component.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/search-widget/search-widget.component.d.ts +1 -2
- package/app/eo-client/dashboard/widgets/search-widget/search-widget.component.d.ts.map +1 -1
- package/app/eo-client/dashboard/widgets/todowidget/todo-setup/todo-setup.component.d.ts +24 -0
- package/app/eo-client/dashboard/widgets/todowidget/todo-setup/todo-setup.component.d.ts.map +1 -0
- package/app/eo-client/dashboard/widgets/todowidget/todo-widget.component.d.ts +34 -0
- package/app/eo-client/dashboard/widgets/todowidget/todo-widget.component.d.ts.map +1 -0
- package/app/eo-client/eo-client.module.d.ts +29 -24
- package/app/eo-client/eo-client.module.d.ts.map +1 -1
- package/app/eo-client/inbox-state/inbox-state/inbox-state.component.d.ts.map +1 -1
- package/app/eo-client/login/login.component.d.ts +3 -1
- package/app/eo-client/login/login.component.d.ts.map +1 -1
- package/app/eo-client/process-state/process-state.component.d.ts +3 -5
- package/app/eo-client/process-state/process-state.component.d.ts.map +1 -1
- package/app/eo-client/settings/settings.component.d.ts +2 -0
- package/app/eo-client/settings/settings.component.d.ts.map +1 -1
- package/app/eo-client/stored-queries-state/stored-queries-state.component.d.ts +3 -2
- package/app/eo-client/stored-queries-state/stored-queries-state.component.d.ts.map +1 -1
- package/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.d.ts +5 -1
- package/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.d.ts.map +1 -1
- package/app/eo-framework/actions/actions/signature-action/signature-action.component.d.ts.map +1 -1
- package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/datetime-range/datetime-range.component.d.ts +3 -4
- package/app/eo-framework/form-elements/datetime-range/datetime-range.component.d.ts.map +1 -1
- package/app/eo-framework/form-elements/string/string.component.d.ts +1 -0
- package/app/eo-framework/form-elements/string/string.component.d.ts.map +1 -1
- package/app/eo-framework/frame/frame.component.d.ts +2 -1
- package/app/eo-framework/frame/frame.component.d.ts.map +1 -1
- package/app/eo-framework/grid/extensions/custom-sort/custom-sort.component.d.ts.map +1 -1
- package/app/eo-framework/grid/extensions/filter/custom/custom-filter.component.d.ts.map +1 -1
- package/app/eo-framework/grid/filters/codesystem-filter.component.d.ts.map +1 -1
- package/app/eo-framework/grid/filters/datetime-filter.component.d.ts +0 -8
- package/app/eo-framework/grid/filters/datetime-filter.component.d.ts.map +1 -1
- package/app/eo-framework/grid/filters/dynamic-list-filter.component.d.ts.map +1 -1
- package/app/eo-framework/grid/grid.component.d.ts +1 -1
- package/app/eo-framework/grid/grid.component.d.ts.map +1 -1
- package/app/eo-framework/inbox-details/inbox-details.component.d.ts.map +1 -1
- package/app/eo-framework/media/media.component.d.ts +15 -1
- package/app/eo-framework/media/media.component.d.ts.map +1 -1
- package/app/eo-framework/object-details/object-details.component.d.ts +9 -3
- package/app/eo-framework/object-details/object-details.component.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts +2 -0
- package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form/object-form-script/object-form-script.service.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form-helper.service.d.ts.map +1 -1
- package/app/eo-framework/prepare-details/prepare-details.component.d.ts.map +1 -1
- package/app/eo-framework/result-list/result-list.component.d.ts +3 -2
- package/app/eo-framework/result-list/result-list.component.d.ts.map +1 -1
- package/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.d.ts +3 -2
- package/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.d.ts.map +1 -1
- package/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component.d.ts.map +1 -1
- package/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.d.ts +2 -1
- package/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.d.ts.map +1 -1
- package/app/eo-framework/util/services/utilities.service.d.ts +195 -0
- package/app/eo-framework/util/services/utilities.service.d.ts.map +1 -1
- package/app/eo-framework-core/api/grid.service.d.ts +1 -5
- package/app/eo-framework-core/api/grid.service.d.ts.map +1 -1
- package/app/eo-framework-core/api/plugins.service.d.ts +6 -0
- package/app/eo-framework-core/api/plugins.service.d.ts.map +1 -1
- package/assets/_default/config/main.json +1 -1
- package/assets/_default/i18n/de.json +37 -5
- package/assets/_default/i18n/en.json +41 -9
- package/assets/_default/svg/ic_noImage.svg +1 -0
- package/assets/_default/svg/ic_photo_library.svg +1 -0
- package/assets/_default/svg/ic_task.svg +1 -0
- package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/dashboard.component.mjs +27 -75
- package/esm2022/app/eo-client/dashboard/widgets/charts-widget/charts-setup/charts-setup.component.mjs +183 -86
- package/esm2022/app/eo-client/dashboard/widgets/charts-widget/charts-widget.component.mjs +109 -34
- package/esm2022/app/eo-client/dashboard/widgets/charts-widget/icharts.mjs +1 -1
- package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-setup/count-objects-setup.component.mjs +21 -13
- package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects-widget.component.mjs +7 -3
- package/esm2022/app/eo-client/dashboard/widgets/count-objects-widget/count-objects.model.mjs +1 -1
- package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/IHitlist.mjs +1 -1
- package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-setup/hitlist-setup.component.mjs +73 -59
- package/esm2022/app/eo-client/dashboard/widgets/hitlist-widget/hitlist-widget.component.mjs +7 -8
- package/esm2022/app/eo-client/dashboard/widgets/iframe-widget/iframe-setup/iframe-setup.component.mjs +16 -10
- package/esm2022/app/eo-client/dashboard/widgets/iframe-widget/iframe-widget.component.mjs +3 -4
- package/esm2022/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-setup/info-inbox-setup.component.mjs +15 -9
- package/esm2022/app/eo-client/dashboard/widgets/info-inbox-widget/info-inbox-widget.component.mjs +3 -3
- package/esm2022/app/eo-client/dashboard/widgets/info-intray-widget/info-intray-setup/info-intray-setup.component.mjs +16 -10
- package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created-setup/last-edited-and-created-setup.component.mjs +26 -10
- package/esm2022/app/eo-client/dashboard/widgets/last-edited-widget/last-edited-and-created.component.mjs +35 -35
- package/esm2022/app/eo-client/dashboard/widgets/picture-widget/picture-widget-setup/picture-widget-setup.component.mjs +54 -0
- package/esm2022/app/eo-client/dashboard/widgets/picture-widget/picture-widget.component.mjs +24 -0
- package/esm2022/app/eo-client/dashboard/widgets/search-widget/search-widget.component.mjs +4 -7
- package/esm2022/app/eo-client/dashboard/widgets/todowidget/todo-setup/todo-setup.component.mjs +74 -0
- package/esm2022/app/eo-client/dashboard/widgets/todowidget/todo-widget.component.mjs +103 -0
- package/esm2022/app/eo-client/eo-client.module.mjs +22 -6
- package/esm2022/app/eo-client/favorite-state/favorite-state.component.mjs +4 -4
- package/esm2022/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +25 -11
- package/esm2022/app/eo-client/login/login.component.mjs +14 -11
- package/esm2022/app/eo-client/notifications-state/notifications-state.component.mjs +5 -5
- package/esm2022/app/eo-client/object-state/object-state/object-state.component.mjs +3 -3
- package/esm2022/app/eo-client/prepare-state/prepare-state/prepare-state.component.mjs +6 -6
- package/esm2022/app/eo-client/process-state/process-state.component.mjs +12 -17
- package/esm2022/app/eo-client/recyclebin-state/recyclebin-state.component.mjs +6 -6
- package/esm2022/app/eo-client/result-state/result-state.component.mjs +1 -1
- package/esm2022/app/eo-client/settings/settings.component.mjs +9 -3
- package/esm2022/app/eo-client/stored-queries-state/stored-queries-state.component.mjs +19 -9
- package/esm2022/app/eo-client/version-state/version-state.component.mjs +5 -5
- package/esm2022/app/eo-framework/actions/actions/add-subscription-action/add-subscription/add-subscription.component.mjs +6 -6
- package/esm2022/app/eo-framework/actions/actions/custom-actions/custom-actions.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/signature-action/sequence-list/sequence-list.component.mjs +23 -3
- package/esm2022/app/eo-framework/actions/actions/signature-action/signature/signature.component.mjs +3 -3
- package/esm2022/app/eo-framework/actions/actions/signature-action/signature-action.component.mjs +5 -2
- package/esm2022/app/eo-framework/app-shell/app-bar/app-bar.component.mjs +4 -4
- package/esm2022/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +12 -4
- package/esm2022/app/eo-framework/app-shell/app-bar/context-search/context-search.component.mjs +3 -3
- package/esm2022/app/eo-framework/app-shell/license-warning/license-warning.component.mjs +3 -3
- package/esm2022/app/eo-framework/form-elements/codesystem/codesystem.component.mjs +3 -3
- package/esm2022/app/eo-framework/form-elements/datetime-range/datetime-range.component.mjs +25 -22
- package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +6 -6
- package/esm2022/app/eo-framework/form-elements/id-reference/id-reference.component.mjs +2 -2
- package/esm2022/app/eo-framework/form-elements/organization/organization.component.mjs +2 -2
- package/esm2022/app/eo-framework/form-elements/reference/reference.component.mjs +2 -2
- package/esm2022/app/eo-framework/form-elements/string/string.component.mjs +8 -5
- package/esm2022/app/eo-framework/frame/frame.component.mjs +3 -2
- package/esm2022/app/eo-framework/grid/extensions/custom-sort/custom-sort.component.mjs +7 -2
- package/esm2022/app/eo-framework/grid/extensions/filter/custom/custom-filter.component.mjs +3 -3
- package/esm2022/app/eo-framework/grid/filters/codesystem-filter.component.mjs +1 -14
- package/esm2022/app/eo-framework/grid/filters/datetime-filter.component.mjs +6 -33
- package/esm2022/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +3 -19
- package/esm2022/app/eo-framework/grid/filters/filesize-filter.component.mjs +2 -2
- package/esm2022/app/eo-framework/grid/grid.component.mjs +11 -12
- package/esm2022/app/eo-framework/inbox-details/inbox-details.component.mjs +4 -2
- package/esm2022/app/eo-framework/media/media.component.mjs +68 -19
- package/esm2022/app/eo-framework/object-details/object-details.component.mjs +53 -15
- package/esm2022/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +18 -27
- package/esm2022/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +2 -2
- package/esm2022/app/eo-framework/object-form/object-form/object-form-script/object-form-script.service.mjs +4 -4
- package/esm2022/app/eo-framework/object-form/object-form/object-form-script/object-form-scripting-scope.mjs +11 -7
- package/esm2022/app/eo-framework/object-form/object-form/object-form.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-form/object-form-helper.service.mjs +6 -1
- package/esm2022/app/eo-framework/prepare-details/prepare-details.component.mjs +2 -1
- package/esm2022/app/eo-framework/process/history/process-history.component.mjs +2 -2
- package/esm2022/app/eo-framework/quick-search/quick-search/quick-search.component.mjs +3 -3
- package/esm2022/app/eo-framework/recyclebin-details/recyclebin-details.component.mjs +1 -1
- package/esm2022/app/eo-framework/result-list/result-list.component.mjs +20 -6
- package/esm2022/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.mjs +9 -5
- package/esm2022/app/eo-framework/ui/indexdata-summary/indexdata-summary-entry/indexdata-summary-entry.component.mjs +13 -9
- package/esm2022/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.mjs +6 -3
- package/esm2022/app/eo-framework/util/services/utilities.service.mjs +4 -1
- package/esm2022/app/eo-framework-core/api/grid.service.mjs +20 -27
- package/esm2022/app/eo-framework-core/api/plugins.service.mjs +44 -2
- package/esm2022/app/eo-framework-core/error-handler/error-handler.service.mjs +2 -2
- package/fesm2022/eo-sdk-client.mjs +1353 -779
- package/fesm2022/eo-sdk-client.mjs.map +1 -1
- package/misc/scripts/exclude-core-ng-package.js +11 -0
- package/misc/scripts/prebuild-about-state.js +2 -3
- package/package.json +6 -6
- package/proxy.config.json +15 -0
|
@@ -1,10 +1,45 @@
|
|
|
1
1
|
import { map } from 'rxjs/operators';
|
|
2
2
|
import { Injectable } from '@angular/core';
|
|
3
3
|
import { DmsObject, Utils, EnaioEvent } from '@eo-sdk/core';
|
|
4
|
+
import { Subject } from 'rxjs';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "@eo-sdk/core";
|
|
6
7
|
import * as i2 from "@angular/router";
|
|
7
8
|
import * as i3 from "../agent/agent.service";
|
|
9
|
+
export function onLoad() {
|
|
10
|
+
window.addEventListener('message', (e) => {
|
|
11
|
+
if (!e || !e.data || !e.data.match || !e.data.match('MessageId'))
|
|
12
|
+
return;
|
|
13
|
+
var data = JSON.parse(e.data);
|
|
14
|
+
if (!data)
|
|
15
|
+
return;
|
|
16
|
+
if (data.MessageId === 'Host_PostmessageObjectUpdating' || data.MessageId === 'Host_PostmessageObjectConverted') {
|
|
17
|
+
setTimeout(() => {
|
|
18
|
+
var btn = window['api'].util.$('eo-object-details .refresh-button');
|
|
19
|
+
btn && btn.click();
|
|
20
|
+
}, 3500);
|
|
21
|
+
}
|
|
22
|
+
else if (data.MessageId === 'UI_EditClick' && data.Values.url) {
|
|
23
|
+
var w = window.open(decodeURIComponent(data.Values.url));
|
|
24
|
+
var http = window['api'].http;
|
|
25
|
+
w.addEventListener('message', (e) => {
|
|
26
|
+
if (!e || !e.data || !e.data.match || !e.data.match('MessageId'))
|
|
27
|
+
return;
|
|
28
|
+
if (e.data.match('User_Activity')) {
|
|
29
|
+
http.get('auth/info', '/').then(() => {
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
;
|
|
33
|
+
});
|
|
34
|
+
window['api'].content.windows = (window['api'].content.windows || []).concat([
|
|
35
|
+
w
|
|
36
|
+
]);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
return () => {
|
|
40
|
+
(window['api'].content.windows || []).forEach(w => w && !w.closed && w.close());
|
|
41
|
+
};
|
|
42
|
+
}
|
|
8
43
|
export const UNDOCK_WINDOW_NAME = 'eoViewer';
|
|
9
44
|
export class PluginsService {
|
|
10
45
|
get currentUrl() {
|
|
@@ -13,6 +48,9 @@ export class PluginsService {
|
|
|
13
48
|
get api() {
|
|
14
49
|
return this.getApi();
|
|
15
50
|
}
|
|
51
|
+
get availableServices() {
|
|
52
|
+
return this.services || [];
|
|
53
|
+
}
|
|
16
54
|
applyFunction(value, params, args) {
|
|
17
55
|
const fnc = value?.toString().trim();
|
|
18
56
|
if (!fnc)
|
|
@@ -26,7 +64,6 @@ export class PluginsService {
|
|
|
26
64
|
return new Function(...(params || 'api').split(',').map((a) => a.trim()), f).apply(this.api, args || [this.api]);
|
|
27
65
|
}
|
|
28
66
|
catch (e) {
|
|
29
|
-
console.error(e);
|
|
30
67
|
return;
|
|
31
68
|
}
|
|
32
69
|
}
|
|
@@ -51,10 +88,15 @@ export class PluginsService {
|
|
|
51
88
|
CLIPBOARD_AS_PDF: 'eo.agent.action.clipboard-pdf',
|
|
52
89
|
EXTERNAL: 'eo.agent.action.external'
|
|
53
90
|
};
|
|
91
|
+
this.unload = () => { };
|
|
92
|
+
this.isReady = new Subject();
|
|
54
93
|
window['api'] = this.api;
|
|
55
94
|
this.userService
|
|
56
95
|
.user$
|
|
57
96
|
.subscribe((user) => this.user = user);
|
|
97
|
+
this.backend.get(`config/services`, '/').subscribe((services) => (this.services = services)).add(() => this.isReady.next(1));
|
|
98
|
+
this.unload = onLoad();
|
|
99
|
+
this.eventService.on(EnaioEvent.LOGOUT).subscribe(() => this.unload());
|
|
58
100
|
}
|
|
59
101
|
// todo: create inreface for API
|
|
60
102
|
getApi() {
|
|
@@ -255,4 +297,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
255
297
|
providedIn: 'root'
|
|
256
298
|
}]
|
|
257
299
|
}], ctorParameters: () => [{ type: i1.BackendService }, { type: i1.NotificationsService }, { type: i1.ClipboardService }, { type: i1.Logger }, { type: i1.TranslateService }, { type: i1.DmsService }, { type: i2.Router }, { type: i3.AgentService }, { type: i1.EventService }, { type: i1.UserService }, { type: i0.ApplicationRef }, { type: i0.NgZone }] });
|
|
258
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmstY29yZS9hcGkvcGx1Z2lucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuQyxPQUFPLEVBQWlCLFVBQVUsRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUdqRSxPQUFPLEVBRWtDLFNBQVMsRUFBbUIsS0FBSyxFQUN6QyxVQUFVLEVBQzFDLE1BQU0sY0FBYyxDQUFDOzs7OztBQU10QixNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxVQUFVLENBQUM7QUFJN0MsTUFBTSxPQUFPLGNBQWM7SUFZekIsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsR0FBRztRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxhQUFhLENBQUMsS0FBOEIsRUFBRSxNQUFlLEVBQUUsSUFBVTtRQUM5RSxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPO1FBQ2pCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsd0JBQXdCLENBQUM7WUFDM0MsQ0FBQyxDQUFDLFdBQVcsR0FBRyx5QkFBeUI7WUFDekMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO2dCQUNuRCxDQUFDLENBQUMsV0FBVyxHQUFHLEdBQUc7Z0JBQ25CLENBQUMsQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQztZQUNILE9BQU8s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Y2VzQ29udGVudCI6WyJpbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtBcHBsaWNhdGlvblJlZiwgSW5qZWN0YWJsZSwgTmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtBZ2VudFNlcnZpY2V9IGZyb20gJy4uL2FnZW50L2FnZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgRW9Vc2VyLCBMb2dnZXIsIE5vdGlmaWNhdGlvbnNTZXJ2aWNlLCBCYWNrZW5kU2VydmljZSwgQ2xpcGJvYXJkU2VydmljZSxcbiAgRG1zU2VydmljZSwgRXZlbnRTZXJ2aWNlLCBVc2VyU2VydmljZSwgRG1zT2JqZWN0LCBDbGlwYm9hcmRBY3Rpb24sIFV0aWxzLFxuICBUcmFuc2xhdGVTZXJ2aWNlLCBIdHRwT3B0aW9ucywgRW5haW9FdmVudFxufSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cgeyBhcGk6IGFueTsgfVxufVxuXG5leHBvcnQgY29uc3QgVU5ET0NLX1dJTkRPV19OQU1FID0gJ2VvVmlld2VyJztcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFBsdWdpbnNTZXJ2aWNlIHtcblxuICBwcml2YXRlIHVzZXI6IEVvVXNlcjtcbiAgcHJpdmF0ZSBhZ2VudEFjdGlvbiA9IHtcbiAgICBPUEVOOiAnZW8uYWdlbnQuYWN0aW9uLm9wZW4nLFxuICAgIE1BSUw6ICdlby5hZ2VudC5hY3Rpb24ubWFpbCcsXG4gICAgTUFJTF9BU19QREY6ICdlby5hZ2VudC5hY3Rpb24ubWFpbC1wZGYnLFxuICAgIENMSVBCT0FSRDogJ2VvLmFnZW50LmFjdGlvbi5jbGlwYm9hcmQnLFxuICAgIENMSVBCT0FSRF9BU19QREY6ICdlby5hZ2VudC5hY3Rpb24uY2xpcGJvYXJkLXBkZicsXG4gICAgRVhURVJOQUw6ICdlby5hZ2VudC5hY3Rpb24uZXh0ZXJuYWwnXG4gIH07XG5cbiAgcHVibGljIGdldCBjdXJyZW50VXJsKCkge1xuICAgIHJldHVybiB0aGlzLnJvdXRlci51cmw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFwaSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBcGkoKTtcbiAgfVxuXG4gIHB1YmxpYyBhcHBseUZ1bmN0aW9uKHZhbHVlOiBzdHJpbmcgfCBGdW5jdGlvbiB8IGFueSwgcGFyYW1zPzogc3RyaW5nLCBhcmdzPzogYW55KSB7XG4gICAgY29uc3QgZm5jID0gdmFsdWU/LnRvU3RyaW5nKCkudHJpbSgpO1xuICAgIGlmICghZm5jKSByZXR1cm47XG4gICAgY29uc3QgZiA9IGZuYy5tYXRjaCgvXmZ1bmN0aW9ufF5cXCguKlxcKVxccyo9Pi8pXG4gICAgICA/IGByZXR1cm4gKCR7Zm5jfSkuYXBwbHkodGhpcyxhcmd1bWVudHMpYFxuICAgICAgOiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmICFmbmMuc3RhcnRzV2l0aChcIidcIilcbiAgICAgID8gYHJldHVybiAnJHtmbmN9J2BcbiAgICAgIDogYHJldHVybiAke2ZuY31gO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIG5ldyBGdW5jdGlvbiguLi4ocGFyYW1zIHx8ICdhcGknKS5zcGxpdCgnLCcpLm1hcCgoYSkgPT4gYS50cmltKCkpLCBmKS5hcHBseSh0aGlzLmFwaSwgYXJncyB8fCBbdGhpcy5hcGldKTtcbiAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjbGlwYm9hcmQ6IENsaXBib2FyZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlcixcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZG1zU2VydmljZTogRG1zU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYWdlbnRTZXJ2aWNlOiBBZ2VudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGFwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xuXG4gICAgd2luZG93WydhcGknXSA9IHRoaXMuYXBpO1xuXG4gICAgdGhpcy51c2VyU2VydmljZVxuICAgICAgLnVzZXIkXG4gICAgICAuc3Vic2NyaWJlKCh1c2VyKSA9PiB0aGlzLnVzZXIgPSB1c2VyKTtcbiAgfVxuXG4gIC8vIHRvZG86IGNyZWF0ZSBpbnJlZmFjZSBmb3IgQVBJXG5cbiAgcHVibGljIGdldEFwaSgpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICBkZXRlY3RDaGFuZ2VzOiAoKSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuYXBwUmVmLnRpY2soKTtcbiAgICAgICAgfSwgNTAwKTtcbiAgICAgIH0sXG4gICAgICByb3V0ZXI6IHtcbiAgICAgICAgZ2V0OiAoKSA9PiB0aGlzLnJvdXRlclxuICAgICAgfSxcbiAgICAgIGV2ZW50czoge1xuICAgICAgICBlbmFpb0V2ZW50VHlwZTogRW5haW9FdmVudCxcbiAgICAgICAgb246ICh0eXBlOiBzdHJpbmcpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmV2ZW50U2VydmljZS5vbih0eXBlKSksXG4gICAgICAgIHRyaWdnZXI6ICh0eXBlOiBzdHJpbmcsIGRhdGE/OiBhbnkpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKHR5cGUsIGRhdGEpKVxuICAgICAgfSxcbiAgICAgIHNlc3Npb246IHtcbiAgICAgICAgZ2V0VXNlcjogKCkgPT4gdGhpcy5nZXRDdXJyZW50VXNlcigpXG4gICAgICB9LFxuICAgICAgZG1zOiB7XG4gICAgICAgIGdldE9iamVjdDogKGlkLCB0eXBlLCB2ZXJzaW9uKSA9PiB0aGlzLmdldERtc09iamVjdChpZCwgdHlwZSwgdmVyc2lvbiksXG4gICAgICAgIGdldFJlc3VsdDogKGZpZWxkcywgdHlwZSkgPT4gdGhpcy5nZXRSZXN1bHQoZmllbGRzLCB0eXBlKSxcbiAgICAgICAgZG93bmxvYWRDb250ZW50OiAoZG1zT2JqZWN0czogRG1zT2JqZWN0W10sIHJlbmRpdGlvbj86ICdQREYnXG4gICAgICAgICAgfCAnVElGRidcbiAgICAgICAgICB8ICdURVhUJ1xuICAgICAgICAgIHwgJ0pQRUcnKSA9PiB0aGlzLmJhY2tlbmQuZG93bmxvYWRDb250ZW50KGRtc09iamVjdHMsIHJlbmRpdGlvbilcbiAgICAgIH0sXG4gICAgICBodHRwOiB7XG4gICAgICAgIGdldDogKHVyaSwgYmFzZSwgb3B0aW9ucykgPT4gdGhpcy5nZXQodXJpLCBiYXNlLCBvcHRpb25zKSxcbiAgICAgICAgcG9zdDogKHVyaSwgZGF0YSwgYmFzZSwgb3B0aW9ucykgPT4gdGhpcy5wb3N0KHVyaSwgZGF0YSwgYmFzZSwgb3B0aW9ucyksXG4gICAgICAgIGRlbDogKHVyaSwgYmFzZSwgb3B0aW9ucykgPT4gdGhpcy5kZWwodXJpLCBiYXNlLCBvcHRpb25zKSxcbiAgICAgICAgcHV0OiAodXJpLCBkYXRhLCBiYXNlLCBvcHRpb25zKSA9PiB0aGlzLnB1dCh1cmksIGRhdGEsIGJhc2UsIG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIGdldDogKCkgPT4gdGhpcy5nZXRDb25maWcoKVxuICAgICAgfSxcbiAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgdmlld2VyOiAoKSA9PiB3aW5kb3dbVU5ET0NLX1dJTkRPV19OQU1FXSB8fCAod2luZG93LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2VvLW1lZGlhIGlmcmFtZVtzcmNdJykgfHwge30pWydjb250ZW50V2luZG93J10sXG4gICAgICAgIHRyaWdnZXJFcnJvcjogKGVyciwgd2luLCBwYXJhbWV0ZXJzKSA9PiB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcihVTkRPQ0tfV0lORE9XX05BTUUgKyAnRXJyb3InLCB7IGVyciwgd2luLCBwYXJhbWV0ZXJzIH0pKSxcbiAgICAgICAgY2F0Y2hFcnJvcjogKCkgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZXZlbnRTZXJ2aWNlLm9uKFVORE9DS19XSU5ET1dfTkFNRSArICdFcnJvcicpKVxuICAgICAgfSxcbiAgICAgIHV0aWw6IHtcbiAgICAgICAgJDogKHNlbGVjdG9ycywgZWxlbWVudCkgPT4gKGVsZW1lbnQgfHwgd2luZG93LmRvY3VtZW50KS5xdWVyeVNlbGVjdG9yKHNlbGVjdG9ycyksXG4gICAgICAgICQkOiAoc2VsZWN0b3JzLCBlbGVtZW50KSA9PiAoZWxlbWVudCB8fCB3aW5kb3cuZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3JzKSxcbiAgICAgICAgc3R5bGVzOiAoc3R5bGVzLCBpZCA9ICdfX3N0eWxlcycsIHdpbjogYW55ID0gd2luZG93KSA9PiB7XG4gICAgICAgICAgbGV0IHMgPSB3aW4uZG9jdW1lbnQuaGVhZC5xdWVyeVNlbGVjdG9yKCcjJyArIGlkKTtcbiAgICAgICAgICBpZiAoIXMpIHtcbiAgICAgICAgICAgIHMgPSB3aW4uZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICAgICAgICAgIHMuc2V0QXR0cmlidXRlKCdpZCcsIGlkKTtcbiAgICAgICAgICAgIHdpbi5kb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzLmlubmVySFRNTCA9IHN0eWxlcztcbiAgICAgICAgfSxcbiAgICAgICAgdHJhbnNsYXRlOiAoa2V5LCBkYXRhKSA9PiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGtleSwgZGF0YSksXG4gICAgICAgIGVuY29kZUZpbGVOYW1lOiAoZmlsZW5hbWUpID0+IHRoaXMuZW5jb2RlRmlsZU5hbWUoZmlsZW5hbWUpLFxuICAgICAgICBkZWNvZGVIdG1sQ2hhckNvZGVzOiAoZmlsZW5hbWUpID0+IHRoaXMuZGVjb2RlSHRtbENoYXJDb2RlcyhmaWxlbmFtZSksXG4gICAgICAgIG5vdGlmaWVyOiB7XG4gICAgICAgICAgc3VjY2VzczogKHRleHQsIHRpdGxlKSA9PiB0aGlzLm5vdGlmaWNhdGlvbnMuc3VjY2Vzcyh0aXRsZSwgdGV4dCksXG4gICAgICAgICAgZXJyb3I6ICh0ZXh0LCB0aXRsZSkgPT4gdGhpcy5ub3RpZmljYXRpb25zLmVycm9yKHRpdGxlLCB0ZXh0KSxcbiAgICAgICAgICBpbmZvOiAodGV4dCwgdGl0bGUpID0+IHRoaXMubm90aWZpY2F0aW9ucy5pbmZvKHRpdGxlLCB0ZXh0KSxcbiAgICAgICAgICB3YXJuaW5nOiAodGV4dCwgdGl0bGUpID0+IHRoaXMubm90aWZpY2F0aW9ucy53YXJuaW5nKHRpdGxlLCB0ZXh0KVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgY2xpcGJvYXJkOiB7XG4gICAgICAgIHNldDogKGVsZW1lbnRzOiBEbXNPYmplY3RbXSwgYWN0aW9uOiBDbGlwYm9hcmRBY3Rpb24pID0+IHRoaXMuY2xpcGJvYXJkLnNldChlbGVtZW50cywgYWN0aW9uKSxcbiAgICAgICAgZ2V0OiAoKSA9PiB0aGlzLmNsaXBib2FyZC5nZXQoKSxcbiAgICAgICAgY2xlYXI6ICgpID0+IHRoaXMuY2xpcGJvYXJkLmNsZWFyKClcbiAgICAgIH0sXG4gICAgICAvLyBBZ2VudFxuICAgICAgYWdlbnQ6IHtcbiAgICAgICAgZ2V0QXZhaWxhYmlsaXR5OiAoKSA9PiB0aGlzLmdldEFnZW50QXZhaWxhYmlsaXR5KCksXG4gICAgICAgIGV4ZWN1dGVBY3Rpb246IChhY3Rpb24sIGFyZ3MpID0+IHRoaXMuZXhlY3V0ZUFnZW50QWN0aW9uKGFjdGlvbiwgYXJncyksXG4gICAgICAgIGFjdGlvbjogdGhpcy5hZ2VudEFjdGlvblxuICAgICAgfVxuICAgIH07XG4gIH1cblxuXG4gIHB1YmxpYyBnZXRBZ2VudEF2YWlsYWJpbGl0eSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAodGhpcy5hZ2VudFNlcnZpY2UuaXNDb25uZWN0ZWQpIHtcbiAgICAgICAgcmVzb2x2ZSh0aGlzLmFnZW50U2VydmljZS5hZ2VudEF2YWlsYWJpbGl0eS5DT05ORUNURUQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZSh0aGlzLmFnZW50U2VydmljZS5hZ2VudEF2YWlsYWJpbGl0eS5VTkFWQUlMQUJMRSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZXhlY3V0ZUFnZW50QWN0aW9uKGFjdGlvbiwgYXJncykge1xuXG4gICAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICAgIGNhc2UgdGhpcy5hZ2VudEFjdGlvbi5DTElQQk9BUkQ6XG4gICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmNvcHlUb0NsaXBib2FyZChhcmdzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIHRoaXMuYWdlbnRBY3Rpb24uQ0xJUEJPQVJEX0FTX1BERjpcbiAgICAgICAgdGhpcy5hZ2VudFNlcnZpY2UuY29weVRvQ2xpcGJvYXJkKGFyZ3MpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5hZ2VudEFjdGlvbi5FWFRFUk5BTDpcbiAgICAgICAgaWYgKCFhcmdzLmV4ZWN1dGFibGUpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignTWlzc2luZyBmaWVsZCBhcmdzLmV4ZWN1dGFibGUnKTtcbiAgICAgICAgfSBlbHNlIGlmICgoYXJncy5hcmdzICYmIGFyZ3MuYXJncy5sZW5ndGggPT09IDApICYmICFBcnJheS5pc0FycmF5KGFyZ3MuYXJncykpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcignRmllbGQgYXJncy5hcmdzIG11c3QgYmUgZW1wdHkgb3IgYXJyYXkuJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5hZ2VudFNlcnZpY2Uuc2VuZEV4dGVybmFsQWN0aW9uKGFyZ3MuZXhlY3V0YWJsZSwgYXJncy5hcmdzIHx8IFtdKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5hZ2VudEFjdGlvbi5NQUlMOlxuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLk1BSUxfQVNfUERGOlxuICAgICAgICB0aGlzLmFnZW50U2VydmljZS5zZW5kQXNNYWlsKGFyZ3MpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5hZ2VudEFjdGlvbi5PUEVOOlxuICAgICAgICB0aGlzLmFnZW50U2VydmljZS5vcGVuRG9jdW1lbnQoYXJncywgYXJncy5sb2NrKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0KHVyaSwgYmFzZSA9ICcnLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXG4gICAgICAuZ2V0KHVyaSwgdGhpcy5iYWNrZW5kLmdldEhvc3QoKSArIGJhc2UsIG9wdGlvbnMgfHwge29ic2VydmU6ICdyZXNwb25zZSd9KS5waXBlKFxuICAgICAgICBtYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbnMgPyByZXMgOiB7IHN0YXR1czogcmVzLnN0YXR1cywgZGF0YTogcmVzLmJvZHkgfTtcbiAgICAgICAgfSkpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHVibGljIHB1dCh1cmksIGRhdGEsIGJhc2UgPSAnJywgb3B0aW9ucz86IEh0dHBPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wdXQodXJpLCBkYXRhLCB0aGlzLmJhY2tlbmQuZ2V0SG9zdCgpICsgYmFzZSwgb3B0aW9ucykudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgcG9zdCh1cmksIGRhdGEsIGJhc2UgPSAnJywgb3B0aW9ucz86IEh0dHBPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5wb3N0KHVyaSwgZGF0YSwgdGhpcy5iYWNrZW5kLmdldEhvc3QoKSArIGJhc2UsIG9wdGlvbnMpLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgcHVibGljIGRlbCh1cmksIGJhc2UgPSAnJywgb3B0aW9ucz86IEh0dHBPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5kZWwodXJpLCB0aGlzLmJhY2tlbmQuZ2V0SG9zdCgpICsgYmFzZSwgb3B0aW9ucykudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q3VycmVudFVzZXIoKTogRW9Vc2VyIHtcbiAgICByZXR1cm4gdGhpcy51c2VyO1xuICB9XG5cbiAgcHVibGljIGVuY29kZUZpbGVOYW1lKGZpbGVuYW1lKSB7XG4gICAgcmV0dXJuIFV0aWxzLmVuY29kZUZpbGVOYW1lKGZpbGVuYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWNvZGVIdG1sQ2hhckNvZGVzKHN0cikgeyBcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoLygmIyhcXGQrKTspL2csIChtYXRjaCwgY2FwdHVyZSwgY2hhckNvZGUpID0+IFN0cmluZy5mcm9tQ2hhckNvZGUoY2hhckNvZGUpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb25maWcoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlcnZpY2VCYXNlOiB0aGlzLmJhY2tlbmQuZ2V0U2VydmljZUJhc2UoKVxuXG4gICAgICAvLyB0b2RvOiBkbyB3ZSBoYXZlIHRvIHByb3ZpZGUgdGhlIHBsdWdpbiBkZXZlbG9wZXJzIHdpdGggdGhlc2UgaW5mb3JtYXRpb25zP1xuICAgICAgLy8gYWZ0ZXIgc3BlYWtpbmcgdG8gQW5kcmVhcyBhbHNvIHJlbW92ZWQgZnJvbSBkb2N1bWVudGF0aW9uXG4gICAgICAvLyBwbHVnaW5zQmFzZTogJGVvQ29uZmlnLmdldFBsdWdpbkJhc2UoKSxcbiAgICAgIC8vIHBsdWdpblN0YXRlc0Jhc2U6ICRlb0NvbmZpZy5nZXRQbHVnaW5TdGF0ZXNCYXNlKCksXG4gICAgICAvLyB0aGVtZUJhc2U6ICRlb0NvbmZpZy5nZXRUaGVtZUJhc2UoKVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogZmV0Y2hlcyBkbXMgb2JqZWN0cyBmcm9tIHRoZSBzZXJ2ZXIgdGhhdCBtYXRjaCB0aGUgZ2l2ZW4gcGFyYW1zXG4gICAqXG4gICAqIEBwYXJhbSBmaWVsZHMgLSB0aGUgZmllbGRzIHRvIG1hdGNoZWQuIGV4YW1wbGU6IHtuYW1lOiAnbWF4JywgcGx6OiAnNDcxMTF9XG4gICAqIEBwYXJhbSB0eXBlIC0gdGhlIHRhcmdldCBvYmplY3QgdHlwZVxuICAgKlxuICAgKiBAcmV0dXJucyB3aGljaCB3aWxsIGJlIHJlc29sdmVkIGJ5IGFuIGFycmF5IG9mIERtc09iamVjdHMgbWF0Y2hpbmcgdGhlIGdpdmVuIHBhcmFtc1xuICAgKi9cbiAgcHVibGljIGdldFJlc3VsdChmaWVsZHMsIHR5cGUpOiBQcm9taXNlPERtc09iamVjdFtdPiB7XG5cbiAgICBsZXQgcSA9IE9iamVjdC5rZXlzKGZpZWxkcykuZmlsdGVyKGsgPT4gKGZpZWxkc1trXSAhPT0gdW5kZWZpbmVkICYmIGZpZWxkc1trXSAhPT0gbnVsbCkpLm1hcChrID0+IGsgKyAnPScgKyBmaWVsZHNba10pLmpvaW4oJzsnKTtcblxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcbiAgICAgIC5nZXRKc29uKGAvcmVzdWx0L3F1ZXJ5P3F1ZXJ5PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHEpfSZ0eXBlPSR7dHlwZX1gKVxuICAgICAgLnRvUHJvbWlzZSgpXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBsZXQgcmVzT2JqZWN0cyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHJlc3BvbnNlKSB7XG4gICAgICAgICAgcmVzT2JqZWN0cy5wdXNoKG5ldyBEbXNPYmplY3QoaXRlbSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzT2JqZWN0cyk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKHRoaXMuaGFuZGxlRXJyb3IpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIGEgRE1TIG9iamVjdCBmcm9tIHRoZSBiYWNrZW5kLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgLSBUaGUgaWQgb2YgdGhlIERNUy1PYmplY3QgdG8gYmUgZmV0Y2hlZC5cbiAgICogQHBhcmFtIFt0eXBlXSAtIFRoZSBvYmplY3QgdHlwZSBvZiB0aGUgc2VsZWN0ZWQgRE1TLU9iamVjdC4gV2lsbCBpbXByb3ZlIHBlcmZvcm1hbmNlIGlmIHNldC5cbiAgICogQHBhcmFtIFt2ZXJzaW9uXSAtIHJldHJpZXZlIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiB0aGUgZG1zIG9iamVjdFxuICAgKiBAcGFyYW0gW2ludGVudF0gLSB1c2VkIGZvciBzZXJ2ZXIgc2lkZSBsb2dnaW5nLiBJZiB5b3UgcHJvdmlkZSBhbiBpbnRlbnQsIHRoZVxuICAgKlxuICAgKiBAcmV0dXJucyB3aGljaCB3aWxsIGJlIHJlc29sdmVkIGJ5IHRoZSBETVMgb2JqZWN0IGZldGNoZWQgZnJvbSB0aGUgc2VydmVyXG4gICAqL1xuICBwdWJsaWMgZ2V0RG1zT2JqZWN0KGlkLCB0eXBlLCB2ZXJzaW9uLCBpbnRlbnQ/KTogUHJvbWlzZTxEbXNPYmplY3Q+IHtcblxuICAgIHJldHVybiB0aGlzLmRtc1NlcnZpY2UuZ2V0RG1zT2JqZWN0KGlkLCB0eXBlLCB2ZXJzaW9uLCBpbnRlbnQpXG4gICAgICAudG9Qcm9taXNlKClcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKHRoaXMuaGFuZGxlRXJyb3IpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IubWVzc2FnZSB8fCBlcnJvcik7XG4gIH1cbn1cbiJdfQ==
|
|
300
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmstY29yZS9hcGkvcGx1Z2lucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuQyxPQUFPLEVBQWlCLFVBQVUsRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUdqRSxPQUFPLEVBRWtDLFNBQVMsRUFBbUIsS0FBSyxFQUN6QyxVQUFVLEVBQzFDLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7O0FBTTdCLE1BQU0sVUFBVSxNQUFNO0lBQ3BCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUVyQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO1lBQUUsT0FBTztRQUN6RSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU5QixJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU87UUFFbEIsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLGdDQUFnQyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssaUNBQWlDLEVBQUUsQ0FBQztZQUM5RyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNaLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7Z0JBRXBFLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFF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QUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2YsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFVO1FBQzVCLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7OEdBdFJVLGNBQWM7a0hBQWQsY0FBYyxjQUZiLE1BQU07OzJGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QXBwbGljYXRpb25SZWYsIEluamVjdGFibGUsIE5nWm9uZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7QWdlbnRTZXJ2aWNlfSBmcm9tICcuLi9hZ2VudC9hZ2VudC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEVvVXNlciwgTG9nZ2VyLCBOb3RpZmljYXRpb25zU2VydmljZSwgQmFja2VuZFNlcnZpY2UsIENsaXBib2FyZFNlcnZpY2UsXG4gIERtc1NlcnZpY2UsIEV2ZW50U2VydmljZSwgVXNlclNlcnZpY2UsIERtc09iamVjdCwgQ2xpcGJvYXJkQWN0aW9uLCBVdGlscyxcbiAgVHJhbnNsYXRlU2VydmljZSwgSHR0cE9wdGlvbnMsIEVuYWlvRXZlbnRcbn0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7U3ViamVjdH0gZnJvbSAncnhqcyc7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7IGFwaTogYW55OyB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvbkxvYWQoKSB7XG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgKGUpID0+IHtcblxuICAgICAgaWYgKCFlIHx8ICFlLmRhdGEgfHwgIWUuZGF0YS5tYXRjaCB8fCAhZS5kYXRhLm1hdGNoKCdNZXNzYWdlSWQnKSkgcmV0dXJuO1xuICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGUuZGF0YSk7XG5cbiAgICAgIGlmICghZGF0YSkgcmV0dXJuO1xuXG4gICAgICBpZiAoZGF0YS5NZXNzYWdlSWQgPT09ICdIb3N0X1Bvc3RtZXNzYWdlT2JqZWN0VXBkYXRpbmcnIHx8IGRhdGEuTWVzc2FnZUlkID09PSAnSG9zdF9Qb3N0bWVzc2FnZU9iamVjdENvbnZlcnRlZCcpIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgdmFyIGJ0biA9IHdpbmRvd1snYXBpJ10udXRpbC4kKCdlby1vYmplY3QtZGV0YWlscyAucmVmcmVzaC1idXR0b24nKTtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIGJ0biAmJiBidG4uY2xpY2soKTtcbiAgICAgICAgICB9LCAzNTAwKVxuICAgICAgfSBlbHNlIGlmIChkYXRhLk1lc3NhZ2VJZCA9PT0gJ1VJX0VkaXRDbGljaycgJiYgZGF0YS5WYWx1ZXMudXJsKSB7XG4gICAgICAgICAgdmFyIHcgPSB3aW5kb3cub3BlbihkZWNvZGVVUklDb21wb25lbnQoZGF0YS5WYWx1ZXMudXJsKSk7XG5cbiAgICAgICAgICB2YXIgaHR0cCA9IHdpbmRvd1snYXBpJ10uaHR0cDtcblxuICAgICAgICAgIHcuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIChlKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghZSB8fCAhZS5kYXRhIHx8ICFlLmRhdGEubWF0Y2ggfHwgIWUuZGF0YS5tYXRjaCgnTWVzc2FnZUlkJykpIHJldHVybjtcblxuICAgICAgICAgICAgICBpZiAoZS5kYXRhLm1hdGNoKCdVc2VyX0FjdGl2aXR5JykpIHtcbiAgICAgICAgICAgICAgICAgIGh0dHAuZ2V0KCdhdXRoL2luZm8nLCAnLycpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB3aW5kb3dbJ2FwaSddLmNvbnRlbnQud2luZG93cyA9ICh3aW5kb3dbJ2FwaSddLmNvbnRlbnQud2luZG93cyB8fCBbXSkuY29uY2F0KFtcbiAgICAgICAgICAgICAgd1xuICAgICAgICAgIF0pO1xuICAgICAgfVxuICB9KTtcblxuICByZXR1cm4gKCkgPT4ge1xuICAgICAgKHdpbmRvd1snYXBpJ10uY29udGVudC53aW5kb3dzIHx8IFtdKS5mb3JFYWNoKHcgPT4gdyAmJiAhdy5jbG9zZWQgJiYgdy5jbG9zZSgpKTtcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IFVORE9DS19XSU5ET1dfTkFNRSA9ICdlb1ZpZXdlcic7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBQbHVnaW5zU2VydmljZSB7XG5cbiAgcHJpdmF0ZSB1c2VyOiBFb1VzZXI7XG4gIHByaXZhdGUgc2VydmljZXM6IGFueTtcbiAgcHJpdmF0ZSBhZ2VudEFjdGlvbiA9IHtcbiAgICBPUEVOOiAnZW8uYWdlbnQuYWN0aW9uLm9wZW4nLFxuICAgIE1BSUw6ICdlby5hZ2VudC5hY3Rpb24ubWFpbCcsXG4gICAgTUFJTF9BU19QREY6ICdlby5hZ2VudC5hY3Rpb24ubWFpbC1wZGYnLFxuICAgIENMSVBCT0FSRDogJ2VvLmFnZW50LmFjdGlvbi5jbGlwYm9hcmQnLFxuICAgIENMSVBCT0FSRF9BU19QREY6ICdlby5hZ2VudC5hY3Rpb24uY2xpcGJvYXJkLXBkZicsXG4gICAgRVhURVJOQUw6ICdlby5hZ2VudC5hY3Rpb24uZXh0ZXJuYWwnXG4gIH07XG5cbiAgcHVibGljIGdldCBjdXJyZW50VXJsKCkge1xuICAgIHJldHVybiB0aGlzLnJvdXRlci51cmw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFwaSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBcGkoKTtcbiAgfVxuICBcbiAgcHVibGljIGdldCBhdmFpbGFibGVTZXJ2aWNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlcyB8fCBbXTtcbiAgfVxuXG4gIHB1YmxpYyBhcHBseUZ1bmN0aW9uKHZhbHVlOiBzdHJpbmcgfCBGdW5jdGlvbiB8IGFueSwgcGFyYW1zPzogc3RyaW5nLCBhcmdzPzogYW55KSB7XG4gICAgY29uc3QgZm5jID0gdmFsdWU/LnRvU3RyaW5nKCkudHJpbSgpO1xuICAgIGlmICghZm5jKSByZXR1cm47XG4gICAgY29uc3QgZiA9IGZuYy5tYXRjaCgvXmZ1bmN0aW9ufF5cXCguKlxcKVxccyo9Pi8pXG4gICAgICA/IGByZXR1cm4gKCR7Zm5jfSkuYXBwbHkodGhpcyxhcmd1bWVudHMpYFxuICAgICAgOiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmICFmbmMuc3RhcnRzV2l0aChcIidcIilcbiAgICAgID8gYHJldHVybiAnJHtmbmN9J2BcbiAgICAgIDogYHJldHVybiAke2ZuY31gO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIG5ldyBGdW5jdGlvbiguLi4ocGFyYW1zIHx8ICdhcGknKS5zcGxpdCgnLCcpLm1hcCgoYSkgPT4gYS50cmltKCkpLCBmKS5hcHBseSh0aGlzLmFwaSwgYXJncyB8fCBbdGhpcy5hcGldKTtcbiAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gIH1cblxuICB1bmxvYWQgPSAoKSA9PiB7fTtcblxuICBpc1JlYWR5ID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJhY2tlbmQ6IEJhY2tlbmRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjbGlwYm9hcmQ6IENsaXBib2FyZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlcixcbiAgICBwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZG1zU2VydmljZTogRG1zU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYWdlbnRTZXJ2aWNlOiBBZ2VudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGFwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xuXG4gICAgd2luZG93WydhcGknXSA9IHRoaXMuYXBpO1xuXG4gICAgdGhpcy51c2VyU2VydmljZVxuICAgICAgLnVzZXIkXG4gICAgICAuc3Vic2NyaWJlKCh1c2VyKSA9PiB0aGlzLnVzZXIgPSB1c2VyKTtcblxuICAgIHRoaXMuYmFja2VuZC5nZXQoYGNvbmZpZy9zZXJ2aWNlc2AsICcvJykuc3Vic2NyaWJlKChzZXJ2aWNlcykgPT4gKHRoaXMuc2VydmljZXMgPSBzZXJ2aWNlcykpLmFkZCgoKSA9PiB0aGlzLmlzUmVhZHkubmV4dCgxKSk7XG4gICAgdGhpcy51bmxvYWQgPSBvbkxvYWQoKTtcbiAgICB0aGlzLmV2ZW50U2VydmljZS5vbihFbmFpb0V2ZW50LkxPR09VVCkuc3Vic2NyaWJlKCgpID0+IHRoaXMudW5sb2FkKCkpO1xuICB9XG5cbiAgLy8gdG9kbzogY3JlYXRlIGlucmVmYWNlIGZvciBBUElcblxuICBwdWJsaWMgZ2V0QXBpKCk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRldGVjdENoYW5nZXM6ICgpID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5hcHBSZWYudGljaygpO1xuICAgICAgICB9LCA1MDApO1xuICAgICAgfSxcbiAgICAgIHJvdXRlcjoge1xuICAgICAgICBnZXQ6ICgpID0+IHRoaXMucm91dGVyXG4gICAgICB9LFxuICAgICAgZXZlbnRzOiB7XG4gICAgICAgIGVuYWlvRXZlbnRUeXBlOiBFbmFpb0V2ZW50LFxuICAgICAgICBvbjogKHR5cGU6IHN0cmluZykgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZXZlbnRTZXJ2aWNlLm9uKHR5cGUpKSxcbiAgICAgICAgdHJpZ2dlcjogKHR5cGU6IHN0cmluZywgZGF0YT86IGFueSkgPT4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIodHlwZSwgZGF0YSkpXG4gICAgICB9LFxuICAgICAgc2Vzc2lvbjoge1xuICAgICAgICBnZXRVc2VyOiAoKSA9PiB0aGlzLmdldEN1cnJlbnRVc2VyKClcbiAgICAgIH0sXG4gICAgICBkbXM6IHtcbiAgICAgICAgZ2V0T2JqZWN0OiAoaWQsIHR5cGUsIHZlcnNpb24pID0+IHRoaXMuZ2V0RG1zT2JqZWN0KGlkLCB0eXBlLCB2ZXJzaW9uKSxcbiAgICAgICAgZ2V0UmVzdWx0OiAoZmllbGRzLCB0eXBlKSA9PiB0aGlzLmdldFJlc3VsdChmaWVsZHMsIHR5cGUpLFxuICAgICAgICBkb3dubG9hZENvbnRlbnQ6IChkbXNPYmplY3RzOiBEbXNPYmplY3RbXSwgcmVuZGl0aW9uPzogJ1BERidcbiAgICAgICAgICB8ICdUSUZGJ1xuICAgICAgICAgIHwgJ1RFWFQnXG4gICAgICAgICAgfCAnSlBFRycpID0+IHRoaXMuYmFja2VuZC5kb3dubG9hZENvbnRlbnQoZG1zT2JqZWN0cywgcmVuZGl0aW9uKVxuICAgICAgfSxcbiAgICAgIGh0dHA6IHtcbiAgICAgICAgZ2V0OiAodXJpLCBiYXNlLCBvcHRpb25zKSA9PiB0aGlzLmdldCh1cmksIGJhc2UsIG9wdGlvbnMpLFxuICAgICAgICBwb3N0OiAodXJpLCBkYXRhLCBiYXNlLCBvcHRpb25zKSA9PiB0aGlzLnBvc3QodXJpLCBkYXRhLCBiYXNlLCBvcHRpb25zKSxcbiAgICAgICAgZGVsOiAodXJpLCBiYXNlLCBvcHRpb25zKSA9PiB0aGlzLmRlbCh1cmksIGJhc2UsIG9wdGlvbnMpLFxuICAgICAgICBwdXQ6ICh1cmksIGRhdGEsIGJhc2UsIG9wdGlvbnMpID0+IHRoaXMucHV0KHVyaSwgZGF0YSwgYmFzZSwgb3B0aW9ucylcbiAgICAgIH0sXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgZ2V0OiAoKSA9PiB0aGlzLmdldENvbmZpZygpXG4gICAgICB9LFxuICAgICAgY29udGVudDoge1xuICAgICAgICB2aWV3ZXI6ICgpID0+IHdpbmRvd1tVTkRPQ0tfV0lORE9XX05BTUVdIHx8ICh3aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZW8tbWVkaWEgaWZyYW1lW3NyY10nKSB8fCB7fSlbJ2NvbnRlbnRXaW5kb3cnXSxcbiAgICAgICAgdHJpZ2dlckVycm9yOiAoZXJyLCB3aW4sIHBhcmFtZXRlcnMpID0+IHRoaXMubmdab25lLnJ1bigoKSA9PiB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKFVORE9DS19XSU5ET1dfTkFNRSArICdFcnJvcicsIHsgZXJyLCB3aW4sIHBhcmFtZXRlcnMgfSkpLFxuICAgICAgICBjYXRjaEVycm9yOiAoKSA9PiB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5ldmVudFNlcnZpY2Uub24oVU5ET0NLX1dJTkRPV19OQU1FICsgJ0Vycm9yJykpXG4gICAgICB9LFxuICAgICAgdXRpbDoge1xuICAgICAgICAkOiAoc2VsZWN0b3JzLCBlbGVtZW50KSA9PiAoZWxlbWVudCB8fCB3aW5kb3cuZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3JzKSxcbiAgICAgICAgJCQ6IChzZWxlY3RvcnMsIGVsZW1lbnQpID0+IChlbGVtZW50IHx8IHdpbmRvdy5kb2N1bWVudCkucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcnMpLFxuICAgICAgICBzdHlsZXM6IChzdHlsZXMsIGlkID0gJ19fc3R5bGVzJywgd2luOiBhbnkgPSB3aW5kb3cpID0+IHtcbiAgICAgICAgICBsZXQgcyA9IHdpbi5kb2N1bWVudC5oZWFkLnF1ZXJ5U2VsZWN0b3IoJyMnICsgaWQpO1xuICAgICAgICAgIGlmICghcykge1xuICAgICAgICAgICAgcyA9IHdpbi5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgICAgICAgICAgcy5zZXRBdHRyaWJ1dGUoJ2lkJywgaWQpO1xuICAgICAgICAgICAgd2luLmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHMuaW5uZXJIVE1MID0gc3R5bGVzO1xuICAgICAgICB9LFxuICAgICAgICB0cmFuc2xhdGU6IChrZXksIGRhdGEpID0+IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoa2V5LCBkYXRhKSxcbiAgICAgICAgZW5jb2RlRmlsZU5hbWU6IChmaWxlbmFtZSkgPT4gdGhpcy5lbmNvZGVGaWxlTmFtZShmaWxlbmFtZSksXG4gICAgICAgIGRlY29kZUh0bWxDaGFyQ29kZXM6IChmaWxlbmFtZSkgPT4gdGhpcy5kZWNvZGVIdG1sQ2hhckNvZGVzKGZpbGVuYW1lKSxcbiAgICAgICAgbm90aWZpZXI6IHtcbiAgICAgICAgICBzdWNjZXNzOiAodGV4dCwgdGl0bGUpID0+IHRoaXMubm90aWZpY2F0aW9ucy5zdWNjZXNzKHRpdGxlLCB0ZXh0KSxcbiAgICAgICAgICBlcnJvcjogKHRleHQsIHRpdGxlKSA9PiB0aGlzLm5vdGlmaWNhdGlvbnMuZXJyb3IodGl0bGUsIHRleHQpLFxuICAgICAgICAgIGluZm86ICh0ZXh0LCB0aXRsZSkgPT4gdGhpcy5ub3RpZmljYXRpb25zLmluZm8odGl0bGUsIHRleHQpLFxuICAgICAgICAgIHdhcm5pbmc6ICh0ZXh0LCB0aXRsZSkgPT4gdGhpcy5ub3RpZmljYXRpb25zLndhcm5pbmcodGl0bGUsIHRleHQpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBjbGlwYm9hcmQ6IHtcbiAgICAgICAgc2V0OiAoZWxlbWVudHM6IERtc09iamVjdFtdLCBhY3Rpb246IENsaXBib2FyZEFjdGlvbikgPT4gdGhpcy5jbGlwYm9hcmQuc2V0KGVsZW1lbnRzLCBhY3Rpb24pLFxuICAgICAgICBnZXQ6ICgpID0+IHRoaXMuY2xpcGJvYXJkLmdldCgpLFxuICAgICAgICBjbGVhcjogKCkgPT4gdGhpcy5jbGlwYm9hcmQuY2xlYXIoKVxuICAgICAgfSxcbiAgICAgIC8vIEFnZW50XG4gICAgICBhZ2VudDoge1xuICAgICAgICBnZXRBdmFpbGFiaWxpdHk6ICgpID0+IHRoaXMuZ2V0QWdlbnRBdmFpbGFiaWxpdHkoKSxcbiAgICAgICAgZXhlY3V0ZUFjdGlvbjogKGFjdGlvbiwgYXJncykgPT4gdGhpcy5leGVjdXRlQWdlbnRBY3Rpb24oYWN0aW9uLCBhcmdzKSxcbiAgICAgICAgYWN0aW9uOiB0aGlzLmFnZW50QWN0aW9uXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG5cbiAgcHVibGljIGdldEFnZW50QXZhaWxhYmlsaXR5KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICh0aGlzLmFnZW50U2VydmljZS5pc0Nvbm5lY3RlZCkge1xuICAgICAgICByZXNvbHZlKHRoaXMuYWdlbnRTZXJ2aWNlLmFnZW50QXZhaWxhYmlsaXR5LkNPTk5FQ1RFRCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHRoaXMuYWdlbnRTZXJ2aWNlLmFnZW50QXZhaWxhYmlsaXR5LlVOQVZBSUxBQkxFKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBleGVjdXRlQWdlbnRBY3Rpb24oYWN0aW9uLCBhcmdzKSB7XG5cbiAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLkNMSVBCT0FSRDpcbiAgICAgICAgdGhpcy5hZ2VudFNlcnZpY2UuY29weVRvQ2xpcGJvYXJkKGFyZ3MpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgdGhpcy5hZ2VudEFjdGlvbi5DTElQQk9BUkRfQVNfUERGOlxuICAgICAgICB0aGlzLmFnZW50U2VydmljZS5jb3B5VG9DbGlwYm9hcmQoYXJncyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLkVYVEVSTkFMOlxuICAgICAgICBpZiAoIWFyZ3MuZXhlY3V0YWJsZSkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdNaXNzaW5nIGZpZWxkIGFyZ3MuZXhlY3V0YWJsZScpO1xuICAgICAgICB9IGVsc2UgaWYgKChhcmdzLmFyZ3MgJiYgYXJncy5hcmdzLmxlbmd0aCA9PT0gMCkgJiYgIUFycmF5LmlzQXJyYXkoYXJncy5hcmdzKSkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdGaWVsZCBhcmdzLmFyZ3MgbXVzdCBiZSBlbXB0eSBvciBhcnJheS4nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmFnZW50U2VydmljZS5zZW5kRXh0ZXJuYWxBY3Rpb24oYXJncy5leGVjdXRhYmxlLCBhcmdzLmFyZ3MgfHwgW10pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLk1BSUw6XG4gICAgICBjYXNlIHRoaXMuYWdlbnRBY3Rpb24uTUFJTF9BU19QREY6XG4gICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLnNlbmRBc01haWwoYXJncyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB0aGlzLmFnZW50QWN0aW9uLk9QRU46XG4gICAgICAgIHRoaXMuYWdlbnRTZXJ2aWNlLm9wZW5Eb2N1bWVudChhcmdzLCBhcmdzLmxvY2spO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQodXJpLCBiYXNlID0gJycsIG9wdGlvbnM/OiBIdHRwT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcbiAgICAgIC5nZXQodXJpLCB0aGlzLmJhY2tlbmQuZ2V0SG9zdCgpICsgYmFzZSwgb3B0aW9ucyB8fCB7b2JzZXJ2ZTogJ3Jlc3BvbnNlJ30pLnBpcGUoXG4gICAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9ucyA/IHJlcyA6IHsgc3RhdHVzOiByZXMuc3RhdHVzLCBkYXRhOiByZXMuYm9keSB9O1xuICAgICAgICB9KSkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgcHV0KHVyaSwgZGF0YSwgYmFzZSA9ICcnLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnB1dCh1cmksIGRhdGEsIHRoaXMuYmFja2VuZC5nZXRIb3N0KCkgKyBiYXNlLCBvcHRpb25zKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBwb3N0KHVyaSwgZGF0YSwgYmFzZSA9ICcnLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLnBvc3QodXJpLCBkYXRhLCB0aGlzLmJhY2tlbmQuZ2V0SG9zdCgpICsgYmFzZSwgb3B0aW9ucykudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgZGVsKHVyaSwgYmFzZSA9ICcnLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmRlbCh1cmksIHRoaXMuYmFja2VuZC5nZXRIb3N0KCkgKyBiYXNlLCBvcHRpb25zKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDdXJyZW50VXNlcigpOiBFb1VzZXIge1xuICAgIHJldHVybiB0aGlzLnVzZXI7XG4gIH1cblxuICBwdWJsaWMgZW5jb2RlRmlsZU5hbWUoZmlsZW5hbWUpIHtcbiAgICByZXR1cm4gVXRpbHMuZW5jb2RlRmlsZU5hbWUoZmlsZW5hbWUpO1xuICB9XG5cbiAgcHVibGljIGRlY29kZUh0bWxDaGFyQ29kZXMoc3RyKSB7IFxuICAgIHJldHVybiBzdHIucmVwbGFjZSgvKCYjKFxcZCspOykvZywgKG1hdGNoLCBjYXB0dXJlLCBjaGFyQ29kZSkgPT4gU3RyaW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSkpO1xuICB9XG5cbiAgcHVibGljIGdldENvbmZpZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VydmljZUJhc2U6IHRoaXMuYmFja2VuZC5nZXRTZXJ2aWNlQmFzZSgpXG5cbiAgICAgIC8vIHRvZG86IGRvIHdlIGhhdmUgdG8gcHJvdmlkZSB0aGUgcGx1Z2luIGRldmVsb3BlcnMgd2l0aCB0aGVzZSBpbmZvcm1hdGlvbnM/XG4gICAgICAvLyBhZnRlciBzcGVha2luZyB0byBBbmRyZWFzIGFsc28gcmVtb3ZlZCBmcm9tIGRvY3VtZW50YXRpb25cbiAgICAgIC8vIHBsdWdpbnNCYXNlOiAkZW9Db25maWcuZ2V0UGx1Z2luQmFzZSgpLFxuICAgICAgLy8gcGx1Z2luU3RhdGVzQmFzZTogJGVvQ29uZmlnLmdldFBsdWdpblN0YXRlc0Jhc2UoKSxcbiAgICAgIC8vIHRoZW1lQmFzZTogJGVvQ29uZmlnLmdldFRoZW1lQmFzZSgpXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBmZXRjaGVzIGRtcyBvYmplY3RzIGZyb20gdGhlIHNlcnZlciB0aGF0IG1hdGNoIHRoZSBnaXZlbiBwYXJhbXNcbiAgICpcbiAgICogQHBhcmFtIGZpZWxkcyAtIHRoZSBmaWVsZHMgdG8gbWF0Y2hlZC4gZXhhbXBsZToge25hbWU6ICdtYXgnLCBwbHo6ICc0NzExMX1cbiAgICogQHBhcmFtIHR5cGUgLSB0aGUgdGFyZ2V0IG9iamVjdCB0eXBlXG4gICAqXG4gICAqIEByZXR1cm5zIHdoaWNoIHdpbGwgYmUgcmVzb2x2ZWQgYnkgYW4gYXJyYXkgb2YgRG1zT2JqZWN0cyBtYXRjaGluZyB0aGUgZ2l2ZW4gcGFyYW1zXG4gICAqL1xuICBwdWJsaWMgZ2V0UmVzdWx0KGZpZWxkcywgdHlwZSk6IFByb21pc2U8RG1zT2JqZWN0W10+IHtcblxuICAgIGxldCBxID0gT2JqZWN0LmtleXMoZmllbGRzKS5maWx0ZXIoayA9PiAoZmllbGRzW2tdICE9PSB1bmRlZmluZWQgJiYgZmllbGRzW2tdICE9PSBudWxsKSkubWFwKGsgPT4gayArICc9JyArIGZpZWxkc1trXSkuam9pbignOycpO1xuXG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxuICAgICAgLmdldEpzb24oYC9yZXN1bHQvcXVlcnk/cXVlcnk9JHtlbmNvZGVVUklDb21wb25lbnQocSl9JnR5cGU9JHt0eXBlfWApXG4gICAgICAudG9Qcm9taXNlKClcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGxldCByZXNPYmplY3RzID0gW107XG4gICAgICAgIGZvciAobGV0IGl0ZW0gb2YgcmVzcG9uc2UpIHtcbiAgICAgICAgICByZXNPYmplY3RzLnB1c2gobmV3IERtc09iamVjdChpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNPYmplY3RzKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2godGhpcy5oYW5kbGVFcnJvcik7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgYSBETVMgb2JqZWN0IGZyb20gdGhlIGJhY2tlbmQuXG4gICAqXG4gICAqIEBwYXJhbSBpZCAtIFRoZSBpZCBvZiB0aGUgRE1TLU9iamVjdCB0byBiZSBmZXRjaGVkLlxuICAgKiBAcGFyYW0gW3R5cGVdIC0gVGhlIG9iamVjdCB0eXBlIG9mIHRoZSBzZWxlY3RlZCBETVMtT2JqZWN0LiBXaWxsIGltcHJvdmUgcGVyZm9ybWFuY2UgaWYgc2V0LlxuICAgKiBAcGFyYW0gW3ZlcnNpb25dIC0gcmV0cmlldmUgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSBkbXMgb2JqZWN0XG4gICAqIEBwYXJhbSBbaW50ZW50XSAtIHVzZWQgZm9yIHNlcnZlciBzaWRlIGxvZ2dpbmcuIElmIHlvdSBwcm92aWRlIGFuIGludGVudCwgdGhlXG4gICAqXG4gICAqIEByZXR1cm5zIHdoaWNoIHdpbGwgYmUgcmVzb2x2ZWQgYnkgdGhlIERNUyBvYmplY3QgZmV0Y2hlZCBmcm9tIHRoZSBzZXJ2ZXJcbiAgICovXG4gIHB1YmxpYyBnZXREbXNPYmplY3QoaWQsIHR5cGUsIHZlcnNpb24sIGludGVudD8pOiBQcm9taXNlPERtc09iamVjdD4ge1xuXG4gICAgcmV0dXJuIHRoaXMuZG1zU2VydmljZS5nZXREbXNPYmplY3QoaWQsIHR5cGUsIHZlcnNpb24sIGludGVudClcbiAgICAgIC50b1Byb21pc2UoKVxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2godGhpcy5oYW5kbGVFcnJvcik7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yKGVycm9yOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvci5tZXNzYWdlIHx8IGVycm9yKTtcbiAgfVxufVxuIl19
|
|
@@ -62,7 +62,7 @@ export class ErrorHandlerService {
|
|
|
62
62
|
notificationsService.error(translate.instant('eo.error.connection.interrupted.title'), translate.instant('eo.error.connection.interrupted.text'), true);
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
|
-
else if (error.originalError
|
|
65
|
+
else if (error.originalError?.error.key === 'LICENSE_VALID_REQUIRED') {
|
|
66
66
|
notificationsService.error('', translate.instant('eo.error.license.expired.message'), true);
|
|
67
67
|
}
|
|
68
68
|
else {
|
|
@@ -86,4 +86,4 @@ export class ErrorHandlerService {
|
|
|
86
86
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ErrorHandlerService, decorators: [{
|
|
87
87
|
type: Injectable
|
|
88
88
|
}], ctorParameters: () => [{ type: i0.Injector }] });
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmstY29yZS9lcnJvci1oYW5kbGVyL2Vycm9yLWhhbmRsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkMsT0FBTyxFQUFlLFVBQVUsRUFBVyxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUMsaUJBQWlCLEVBQXdELFlBQVksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzNILE9BQU8sRUFBbUIsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLG9CQUFvQixFQUFFLE9BQU8sRUFBQyxNQUFNLGNBQWMsQ0FBQzs7QUFJaEYsTUFBTSxPQUFPLG1CQUFtQjtJQUU5QixZQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQ3RDLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBcUIsRUFBRSxJQUFpQjtRQUNoRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxpRUFBaUU7UUFDakUsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVyRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtB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T0FBTyxDQUFDLHVDQUF1QyxDQUFDLEVBQzFELFNBQVMsQ0FBQyxPQUFPLENBQUMsc0NBQXNDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDckUsQ0FBQztnQkFDSCxDQUFDO3FCQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsR0FBRyxLQUFLLHdCQUF3QixFQUFFLENBQUM7b0JBQ3ZFLG9CQUFvQixDQUFDLEtBQUssQ0FDdEIsRUFBRSxFQUNGLFNBQVMsQ0FBQyxPQUFPLENBQUMsa0NBQWtDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFFbkUsQ0FBQztxQkFBTSxDQUFDO29CQUNOLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNuRCxDQUFDO1lBRUgsQ0FBQztpQkFBTSxJQUFJLEtBQUssWUFBWSxPQUFPLEVBQUUsQ0FBQztnQkFDcEMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDbkQsQ0FBQztpQkFBTSxJQUFJLEtBQUssWUFBWSxTQUFTLEVBQUUsQ0FBQztnQkFDdEMsOENBQThDO1lBQ2hELENBQUM7aUJBQU0sSUFBSSxLQUFLLFlBQVksS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyw2Q0FBNkMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RHLDhDQUE4QztZQUNoRCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7OEdBL0VVLG1CQUFtQjtrSEFBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7RXJyb3JIYW5kbGVyLCBJbmplY3RhYmxlLCBJbmplY3Rvcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0h0dHBFcnJvclJlc3BvbnNlLCBIdHRwRXZlbnQsIEh0dHBIYW5kbGVyLCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBSZXF1ZXN0LCBIdHRwUmVzcG9uc2V9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7TmF2aWdhdGlvbkV4dHJhcywgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtBdXRoU2VydmljZSwgTG9nZ2VyLCBOb3RpZmljYXRpb25zU2VydmljZSwgRW9FcnJvcn0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFcnJvckhhbmRsZXJTZXJ2aWNlIGltcGxlbWVudHMgRXJyb3JIYW5kbGVyLCBIdHRwSW50ZXJjZXB0b3Ige1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gIH1cblxuICBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBjb25zdCBhdXRoID0gdGhpcy5pbmplY3Rvci5nZXQoQXV0aFNlcnZpY2UpO1xuICAgIGNvbnN0IHJvdXRlciA9IHRoaXMuaW5qZWN0b3IuZ2V0KFJvdXRlcik7XG4gICAgLy8gbmVlZCB0byB1c2UgbG9jYXRpb24gaGVyZSwgYmVjYXVzZSB0aGUgcm91dGVyIG1heSBub3QgYmUgcmVhZHlcbiAgICBjb25zdCBjdXJyZW50Um91dGVVcmwgPSBsb2NhdGlvbi5ocmVmLnN1YnN0cihsb2NhdGlvbi5vcmlnaW4ubGVuZ3RoKTtcblxuICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpLnBpcGUodGFwKChldmVudDogSHR0cEV2ZW50PGFueT4pID0+IHtcbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSkge1xuICAgICAgICAvLyBkbyBzdHVmZiB3aXRoIHJlc3BvbnNlIGlmIHlvdSB3YW50XG4gICAgICB9XG4gICAgfSwgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlIHx8IGVycm9yLmlzSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDAxKSB7XG4gICAgICAgICAgYXV0aC5sb2dvdXQoKTtcbiAgICAgICAgICBpZiAoIWN1cnJlbnRSb3V0ZVVybC5pbmNsdWRlcygnL2VudGVyJykpIHtcbiAgICAgICAgICAgIGNvbnN0IHJldHVyblVybCA9IGN1cnJlbnRSb3V0ZVVybDtcbiAgICAgICAgICAgIGNvbnN0IHVyaVBhcmFtUXVlcnk6IE5hdmlnYXRpb25FeHRyYXMgPSB7cXVlcnlQYXJhbXM6IHJldHVyblVybCA/IHtyZXR1cm5Vcmx9IDoge319O1xuICAgICAgICAgICAgcm91dGVyLm5hdmlnYXRlKFsnL2VudGVyJ10sIHVyaVBhcmFtUXVlcnkpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICByb3V0ZXIubmF2aWdhdGUoW3tvdXRsZXRzOiB7bW9kYWw6IG51bGx9fV0sIDxOYXZpZ2F0aW9uRXh0cmFzPntxdWVyeVBhcmFtc0hhbmRsaW5nOiAncHJlc2VydmUnfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBoYW5kbGVFcnJvcihlcnJvcikge1xuICAgIGlmIChlcnJvcikge1xuICAgICAgY29uc3QgbG9nZ2VyID0gdGhpcy5pbmplY3Rvci5nZXQoTG9nZ2VyKTtcbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbnNTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoTm90aWZpY2F0aW9uc1NlcnZpY2UpO1xuICAgICAgY29uc3QgdHJhbnNsYXRlID0gdGhpcy5pbmplY3Rvci5nZXQoVHJhbnNsYXRlU2VydmljZSk7XG5cbiAgICAgIGNvbnN0IHRpdGxlID0gZXJyb3IubmFtZSA/IGVycm9yLm5hbWUgOiBlcnJvci50b1N0cmluZygpO1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGVycm9yLm1lc3NhZ2UgPyBlcnJvci5tZXNzYWdlIDogJyc7XG5cbiAgICAgIGlmICghbWVzc2FnZS5pbmNsdWRlcygnRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvcicpKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcihlcnJvcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2dnZXIud2FybihlcnJvcik7XG4gICAgICB9XG5cbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVvRXJyb3IgJiYgZXJyb3Iuc2tpcE5vdGlmaWNhdGlvbikge1xuICAgICAgICAvLyBkbyBub3RoaW5nOiBlcnJvciBpcyBsb2dnZWQgaW4gY29uc29sZVxuICAgICAgfSBlbHNlIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlIHx8IGVycm9yLmlzSHR0cEVycm9yUmVzcG9uc2UpIHtcblxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDEpIHtcbiAgICAgICAgICAvLyBkbyBub3RoaW5nOiBpbnRlcmNlcHRvciBoYW5kbGVzIHRoZSBlcnJvclxuICAgICAgICB9IGVsc2UgaWYgKGVycm9yLnN0YXR1cyA9PT0gNTAzIHx8IGVycm9yLnN0YXR1cyA9PT0gNTAwKSB7XG5cbiAgICAgICAgICAvLyB0b2RvOiBpcyB0aGVyZSBhIGJldHRlciB3YXkgKFNlYXJjaHNlcnZpY2Ugc2hvdWxkIG5vdCByZXR1cm4gNTAwKVxuICAgICAgICAgIGlmIChlcnJvci51cmwubWF0Y2goL1xcL2FnZ3JlZ2F0ZXxcXC9hdXRvY29tcGxldGV8XFwvYXR0YWNobWVudHMvKSkge1xuICAgICAgICAgICAgLy8gbm90aWZpY2F0aW9uc1NlcnZpY2UuZXJyb3IodGl0bGUsIG1lc3NhZ2UpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBub3RpZmljYXRpb25zU2VydmljZS5lcnJvcihcbiAgICAgICAgICAgICAgdHJhbnNsYXRlLmluc3RhbnQoJ2VvLmVycm9yLmNvbm5lY3Rpb24uaW50ZXJydXB0ZWQudGl0bGUnKSxcbiAgICAgICAgICAgICAgdHJhbnNsYXRlLmluc3RhbnQoJ2VvLmVycm9yLmNvbm5lY3Rpb24uaW50ZXJydXB0ZWQudGV4dCcpLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3Iub3JpZ2luYWxFcnJvcj8uZXJyb3Iua2V5ID09PSAnTElDRU5TRV9WQUxJRF9SRVFVSVJFRCcpIHtcbiAgICAgICAgICBub3RpZmljYXRpb25zU2VydmljZS5lcnJvcihcbiAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZS5pbnN0YW50KCdlby5lcnJvci5saWNlbnNlLmV4cGlyZWQubWVzc2FnZScpLCB0cnVlKTtcblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5vdGlmaWNhdGlvbnNTZXJ2aWNlLmVycm9yKHRpdGxlLCBtZXNzYWdlLCB0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICB9IGVsc2UgaWYgKGVycm9yIGluc3RhbmNlb2YgRW9FcnJvcikge1xuICAgICAgICBub3RpZmljYXRpb25zU2VydmljZS5lcnJvcih0aXRsZSwgbWVzc2FnZSwgdHJ1ZSk7XG4gICAgICB9IGVsc2UgaWYgKGVycm9yIGluc3RhbmNlb2YgVHlwZUVycm9yKSB7XG4gICAgICAgIC8vIG5vdGlmaWNhdGlvbnNTZXJ2aWNlLmVycm9yKHRpdGxlLCBtZXNzYWdlKTtcbiAgICAgIH0gZWxzZSBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciAmJiAhbWVzc2FnZS5pbmNsdWRlcygnRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvcicpKSB7XG4gICAgICAgIC8vIG5vdGlmaWNhdGlvbnNTZXJ2aWNlLmVycm9yKHRpdGxlLCBtZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|