@igo2/context 16.3.0 → 17.0.0-next.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/context-import-export/context-import-export/context-import-export.component.mjs +43 -18
- package/esm2022/lib/context-import-export/context-import-export.module.mjs +10 -66
- package/esm2022/lib/context-import-export/shared/context-export.service.mjs +4 -4
- package/esm2022/lib/context-import-export/shared/context-export.utils.mjs +1 -1
- package/esm2022/lib/context-import-export/shared/context-import.errors.mjs +1 -1
- package/esm2022/lib/context-import-export/shared/context-import.service.mjs +7 -7
- package/esm2022/lib/context-import-export/shared/context-import.utils.mjs +1 -1
- package/esm2022/lib/context-manager/context-edit/context-edit-binding.directive.mjs +10 -9
- package/esm2022/lib/context-manager/context-edit/context-edit.component.mjs +10 -9
- package/esm2022/lib/context-manager/context-form/context-form.component.mjs +32 -16
- package/esm2022/lib/context-manager/context-item/context-item.component.mjs +31 -15
- package/esm2022/lib/context-manager/context-list/context-list-binding.directive.mjs +18 -12
- package/esm2022/lib/context-manager/context-list/context-list.component.mjs +56 -36
- package/esm2022/lib/context-manager/context-manager.directive.mjs +19 -0
- package/esm2022/lib/context-manager/context-manager.module.mjs +23 -102
- package/esm2022/lib/context-manager/context-permissions/context-permissions-binding.directive.mjs +12 -9
- package/esm2022/lib/context-manager/context-permissions/context-permissions.component.mjs +49 -18
- package/esm2022/lib/context-manager/index.mjs +2 -1
- package/esm2022/lib/context-manager/shared/context.interface.mjs +1 -1
- package/esm2022/lib/context-manager/shared/context.service.mjs +20 -17
- package/esm2022/lib/context-manager/shared/layer-context.directive.mjs +14 -9
- package/esm2022/lib/context-manager/shared/map-context.directive.mjs +9 -8
- package/esm2022/lib/context-map-button/bookmark-button/bookmark-button.component.mjs +14 -10
- package/esm2022/lib/context-map-button/bookmark-button/bookmark-dialog.component.mjs +25 -11
- package/esm2022/lib/context-map-button/context-map-button.directive.mjs +10 -0
- package/esm2022/lib/context-map-button/context-map-button.module.mjs +16 -75
- package/esm2022/lib/context-map-button/index.mjs +2 -1
- package/esm2022/lib/context-map-button/poi-button/poi-button.component.mjs +34 -16
- package/esm2022/lib/context-map-button/poi-button/poi-dialog.component.mjs +25 -11
- package/esm2022/lib/context-map-button/poi-button/shared/poi.service.mjs +7 -7
- package/esm2022/lib/context-map-button/user-button/user-button.animation.mjs +1 -1
- package/esm2022/lib/context-map-button/user-button/user-button.component.mjs +24 -13
- package/esm2022/lib/context-map-button/user-button/user-dialog.component.mjs +17 -9
- package/esm2022/lib/context.module.mjs +9 -11
- package/esm2022/lib/environment/environment.interface.mjs +1 -1
- package/esm2022/lib/environment/index.mjs +1 -1
- package/esm2022/lib/share-map/index.mjs +2 -1
- package/esm2022/lib/share-map/share-map/share-map-api.component.mjs +36 -18
- package/esm2022/lib/share-map/share-map/share-map-url.component.mjs +28 -15
- package/esm2022/lib/share-map/share-map/share-map.component.mjs +21 -13
- package/esm2022/lib/share-map/share-map.module.mjs +15 -50
- package/esm2022/lib/share-map/shared/share-map.service.mjs +8 -8
- package/esm2022/lib/sidenav/sidenav.component.mjs +31 -16
- package/esm2022/lib/sidenav/sidenav.module.mjs +10 -46
- package/esm2022/public_api.mjs +1 -1
- package/fesm2022/igo2-context.mjs +1000 -1027
- package/fesm2022/igo2-context.mjs.map +1 -1
- package/lib/context-import-export/context-import-export/context-import-export.component.d.ts +3 -2
- package/lib/context-import-export/context-import-export.module.d.ts +4 -15
- package/lib/context-import-export/shared/context-export.utils.d.ts +1 -1
- package/lib/context-import-export/shared/context-import.service.d.ts +1 -1
- package/lib/context-import-export/shared/context-import.utils.d.ts +1 -1
- package/lib/context-manager/context-edit/context-edit-binding.directive.d.ts +2 -2
- package/lib/context-manager/context-edit/context-edit.component.d.ts +1 -1
- package/lib/context-manager/context-form/context-form.component.d.ts +2 -2
- package/lib/context-manager/context-item/context-item.component.d.ts +2 -2
- package/lib/context-manager/context-list/context-list-binding.directive.d.ts +5 -3
- package/lib/context-manager/context-list/context-list.component.d.ts +8 -10
- package/lib/context-manager/context-manager.directive.d.ts +7 -0
- package/lib/context-manager/context-manager.module.d.ts +6 -22
- package/lib/context-manager/context-permissions/context-permissions-binding.directive.d.ts +3 -2
- package/lib/context-manager/context-permissions/context-permissions.component.d.ts +2 -2
- package/lib/context-manager/index.d.ts +1 -0
- package/lib/context-manager/shared/context.interface.d.ts +2 -2
- package/lib/context-manager/shared/context.service.d.ts +6 -2
- package/lib/context-manager/shared/layer-context.directive.d.ts +3 -2
- package/lib/context-manager/shared/map-context.directive.d.ts +2 -2
- package/lib/context-map-button/bookmark-button/bookmark-button.component.d.ts +2 -2
- package/lib/context-map-button/bookmark-button/bookmark-dialog.component.d.ts +1 -1
- package/lib/context-map-button/context-map-button.directive.d.ts +4 -0
- package/lib/context-map-button/context-map-button.module.d.ts +5 -18
- package/lib/context-map-button/index.d.ts +1 -0
- package/lib/context-map-button/poi-button/poi-button.component.d.ts +4 -3
- package/lib/context-map-button/poi-button/poi-dialog.component.d.ts +1 -1
- package/lib/context-map-button/poi-button/shared/poi.service.d.ts +1 -1
- package/lib/context-map-button/user-button/user-button.component.d.ts +2 -2
- package/lib/context-map-button/user-button/user-dialog.component.d.ts +2 -2
- package/lib/context.module.d.ts +9 -9
- package/lib/share-map/index.d.ts +1 -0
- package/lib/share-map/share-map/share-map-api.component.d.ts +3 -2
- package/lib/share-map/share-map/share-map-url.component.d.ts +2 -2
- package/lib/share-map/share-map/share-map.component.d.ts +2 -2
- package/lib/share-map/share-map.module.d.ts +8 -11
- package/lib/share-map/shared/share-map.service.d.ts +1 -1
- package/lib/sidenav/sidenav.component.d.ts +4 -3
- package/lib/sidenav/sidenav.module.d.ts +4 -10
- package/locale/en.context.json +200 -200
- package/locale/fr.context.json +200 -200
- package/package.json +13 -13
- package/src/context-theme.scss +5 -5
- package/src/lib/context-manager/context-item/context-item.theming.scss +21 -21
- package/src/lib/context-manager/context-list/context-list.theming.scss +23 -23
- package/src/lib/context-manager/context-manager.theming.scss +7 -7
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { HttpClient } from '@angular/common/http';
|
|
2
2
|
import { Injectable, Optional } from '@angular/core';
|
|
3
3
|
import { AuthService } from '@igo2/auth';
|
|
4
|
-
import { ConfigService
|
|
4
|
+
import { ConfigService } from '@igo2/core/config';
|
|
5
|
+
import { LanguageService } from '@igo2/core/language';
|
|
6
|
+
import { MessageService } from '@igo2/core/message';
|
|
7
|
+
import { RouteService } from '@igo2/core/route';
|
|
8
|
+
import { StorageService } from '@igo2/core/storage';
|
|
5
9
|
import { ExportService } from '@igo2/geo';
|
|
6
10
|
import { ObjectUtils, uuid } from '@igo2/utils';
|
|
7
11
|
import GeoJSON from 'ol/format/GeoJSON';
|
|
@@ -14,8 +18,12 @@ import { TypePermission } from './context.enum';
|
|
|
14
18
|
import * as i0 from "@angular/core";
|
|
15
19
|
import * as i1 from "@angular/common/http";
|
|
16
20
|
import * as i2 from "@igo2/auth";
|
|
17
|
-
import * as i3 from "@igo2/core";
|
|
18
|
-
import * as i4 from "@igo2/
|
|
21
|
+
import * as i3 from "@igo2/core/language";
|
|
22
|
+
import * as i4 from "@igo2/core/config";
|
|
23
|
+
import * as i5 from "@igo2/core/message";
|
|
24
|
+
import * as i6 from "@igo2/core/storage";
|
|
25
|
+
import * as i7 from "@igo2/geo";
|
|
26
|
+
import * as i8 from "@igo2/core/route";
|
|
19
27
|
export class ContextService {
|
|
20
28
|
http;
|
|
21
29
|
authService;
|
|
@@ -442,19 +450,14 @@ export class ContextService {
|
|
|
442
450
|
delete layerFound.sourceOptions[`source`];
|
|
443
451
|
delete layerFound.sourceOptions[`format`];
|
|
444
452
|
}
|
|
453
|
+
delete layerFound.source;
|
|
445
454
|
const opts = {
|
|
446
|
-
|
|
455
|
+
...layerFound,
|
|
447
456
|
title: layer.options.title,
|
|
448
457
|
zIndex: layer.zIndex,
|
|
449
|
-
igoStyle: {
|
|
450
|
-
styleByAttribute: layerFoundAs.igoStyle?.styleByAttribute,
|
|
451
|
-
clusterBaseStyle: layerFoundAs.igoStyle?.clusterBaseStyle
|
|
452
|
-
},
|
|
453
458
|
style: layerStyle,
|
|
454
|
-
clusterParam: layerFound[`clusterParam`],
|
|
455
459
|
visible: layer.visible,
|
|
456
|
-
opacity: layer.opacity
|
|
457
|
-
sourceOptions: layerFound.sourceOptions
|
|
460
|
+
opacity: layer.opacity
|
|
458
461
|
};
|
|
459
462
|
context.layers.push(opts);
|
|
460
463
|
}
|
|
@@ -652,15 +655,15 @@ export class ContextService {
|
|
|
652
655
|
}
|
|
653
656
|
return found;
|
|
654
657
|
}
|
|
655
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
656
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
658
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextService, deps: [{ token: i1.HttpClient }, { token: i2.AuthService }, { token: i3.LanguageService }, { token: i4.ConfigService }, { token: i5.MessageService }, { token: i6.StorageService }, { token: i7.ExportService }, { token: i8.RouteService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
659
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextService, providedIn: 'root' });
|
|
657
660
|
}
|
|
658
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
661
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ContextService, decorators: [{
|
|
659
662
|
type: Injectable,
|
|
660
663
|
args: [{
|
|
661
664
|
providedIn: 'root'
|
|
662
665
|
}]
|
|
663
|
-
}], ctorParameters:
|
|
666
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.AuthService }, { type: i3.LanguageService }, { type: i4.ConfigService }, { type: i5.MessageService }, { type: i6.StorageService }, { type: i7.ExportService }, { type: i8.RouteService, decorators: [{
|
|
664
667
|
type: Optional
|
|
665
|
-
}] }]
|
|
666
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29udGV4dC9zcmMvbGliL2NvbnRleHQtbWFuYWdlci9zaGFyZWQvY29udGV4dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQXFCLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV6QyxPQUFPLEVBQ0wsYUFBYSxFQUNiLGVBQWUsRUFFZixjQUFjLEVBQ2QsWUFBWSxFQUNaLGNBQWMsRUFDZixNQUFNLFlBQVksQ0FBQztBQVFwQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWhELE9BQU8sT0FBTyxNQUFNLG1CQUFtQixDQUFDO0FBRXhDLE9BQU8sT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUNwQyxPQUFPLE9BQU8sTUFBTSxtQkFBbUIsQ0FBQztBQUN4QyxPQUFPLGNBQWMsTUFBTSxrQkFBa0IsQ0FBQztBQUc5QyxPQUFPLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEUsT0FBTyxFQUNMLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLEdBQUcsRUFDSCxRQUFRLEVBQ1IsSUFBSSxFQUNKLEdBQUcsRUFDSixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBZWhELE1BQU0sT0FBTyxjQUFjO0lBNkJmO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ1k7SUFuQ2YsUUFB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QUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDM0M7U0FDRjtJQUNILENBQUM7SUFFTyxXQUFXLENBQUMsT0FBZ0I7UUFDbEMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNaLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUN0QyxJQUFJLEtBQUssQ0FBQztRQUNWLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN2QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUIsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQ2hCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDSixDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsS0FBSyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNuQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQ3pDLENBQUM7WUFDRixJQUFJLEtBQUssRUFBRTtnQkFDVCxNQUFNO2FBQ1A7U0FDRjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzt3R0FseEJVLGNBQWM7NEdBQWQsY0FBYyxjQUZiLE1BQU07OzRGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFxQ0ksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICdAaWdvMi9hdXRoJztcclxuaW1wb3J0IHsgVG9vbCB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQ29uZmlnU2VydmljZSxcclxuICBMYW5ndWFnZVNlcnZpY2UsXHJcbiAgTWVzc2FnZSxcclxuICBNZXNzYWdlU2VydmljZSxcclxuICBSb3V0ZVNlcnZpY2UsXHJcbiAgU3RvcmFnZVNlcnZpY2VcclxufSBmcm9tICdAaWdvMi9jb3JlJztcclxuaW1wb3J0IHR5cGUge1xyXG4gIEFueUxheWVyT3B0aW9ucyxcclxuICBJZ29NYXAsXHJcbiAgTGF5ZXIsXHJcbiAgVmVjdG9yTGF5ZXJPcHRpb25zLFxyXG4gIFZlY3RvclRpbGVMYXllck9wdGlvbnNcclxufSBmcm9tICdAaWdvMi9nZW8nO1xyXG5pbXBvcnQgeyBFeHBvcnRTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvZ2VvJztcclxuaW1wb3J0IHsgT2JqZWN0VXRpbHMsIHV1aWQgfSBmcm9tICdAaWdvMi91dGlscyc7XHJcblxyXG5pbXBvcnQgR2VvSlNPTiBmcm9tICdvbC9mb3JtYXQvR2VvSlNPTic7XHJcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbSc7XHJcbmltcG9ydCBvbFBvaW50IGZyb20gJ29sL2dlb20vUG9pbnQnO1xyXG5pbXBvcnQgQ2x1c3RlciBmcm9tICdvbC9zb3VyY2UvQ2x1c3Rlcic7XHJcbmltcG9ydCBvbFZlY3RvclNvdXJjZSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yJztcclxuXHJcbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tICdvbCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuICBjYXRjaEVycm9yLFxyXG4gIGRlYm91bmNlVGltZSxcclxuICBmaXJzdCxcclxuICBtYXAsXHJcbiAgbWVyZ2VNYXAsXHJcbiAgc2tpcCxcclxuICB0YXBcclxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBUeXBlUGVybWlzc2lvbiB9IGZyb20gJy4vY29udGV4dC5lbnVtJztcclxuaW1wb3J0IHtcclxuICBDb250ZXh0LFxyXG4gIENvbnRleHRNYXBWaWV3LFxyXG4gIENvbnRleHRQZXJtaXNzaW9uLFxyXG4gIENvbnRleHRQcm9maWxzLFxyXG4gIENvbnRleHRTZXJ2aWNlT3B0aW9ucyxcclxuICBDb250ZXh0c0xpc3QsXHJcbiAgRGV0YWlsZWRDb250ZXh0LFxyXG4gIEV4dHJhRmVhdHVyZXNcclxufSBmcm9tICcuL2NvbnRleHQuaW50ZXJmYWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbnRleHRTZXJ2aWNlIHtcclxuICBwdWJsaWMgY29udGV4dCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERldGFpbGVkQ29udGV4dD4odW5kZWZpbmVkKTtcclxuICBwdWJsaWMgY29udGV4dHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDb250ZXh0c0xpc3Q+KHsgb3VyczogW10gfSk7XHJcbiAgcHVibGljIGRlZmF1bHRDb250ZXh0SWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KHVuZGVmaW5lZCk7XHJcbiAgcHVibGljIGVkaXRlZENvbnRleHQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEZXRhaWxlZENvbnRleHQ+KHVuZGVmaW5lZCk7XHJcbiAgcHVibGljIGltcG9ydGVkQ29udGV4dDogQXJyYXk8RGV0YWlsZWRDb250ZXh0PiA9IFtdO1xyXG4gIHB1YmxpYyB0b29sc0NoYW5nZWQkID0gbmV3IFN1YmplY3Q8RGV0YWlsZWRDb250ZXh0PigpO1xyXG4gIHByaXZhdGUgbWFwVmlld0Zyb21Sb3V0ZTogQ29udGV4dE1hcFZpZXcgPSB7fTtcclxuICBwcml2YXRlIG9wdGlvbnM6IENvbnRleHRTZXJ2aWNlT3B0aW9ucztcclxuICBwcml2YXRlIGJhc2VVcmw6IHN0cmluZztcclxuXHJcbiAgLy8gVW50aWwgdGhlIENvbnRleHRTZXJ2aWNlIGlzIGNvbXBsZXRlbHkgcmVmYWN0b3JlZCwgdGhpcyBpcyBuZWVkZWRcclxuICAvLyB0byB0cmFjayB0aGUgY3VycmVudCB0b29sc1xyXG4gIHByaXZhdGUgdG9vbHM6IFRvb2xbXTtcclxuICBwcml2YXRlIHRvb2xiYXI6IHN0cmluZ1tdO1xyXG5cclxuICBnZXQgZGVmYXVsdENvbnRleHRVcmkoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgICh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldCgnZmF2b3JpdGUuY29udGV4dC51cmknKSBhcyBzdHJpbmcpIHx8XHJcbiAgICAgIHRoaXMuX2RlZmF1bHRDb250ZXh0VXJpIHx8XHJcbiAgICAgIHRoaXMub3B0aW9ucy5kZWZhdWx0Q29udGV4dFVyaVxyXG4gICAgKTtcclxuICB9XHJcbiAgc2V0IGRlZmF1bHRDb250ZXh0VXJpKHVyaTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9kZWZhdWx0Q29udGV4dFVyaSA9IHVyaTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfZGVmYXVsdENvbnRleHRVcmk6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbmZpZzogQ29uZmlnU2VydmljZSxcclxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGV4cG9ydFNlcnZpY2U6IEV4cG9ydFNlcnZpY2UsXHJcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJvdXRlOiBSb3V0ZVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oXHJcbiAgICAgIHtcclxuICAgICAgICBiYXNlUGF0aDogJ2NvbnRleHRzJyxcclxuICAgICAgICBjb250ZXh0TGlzdEZpbGU6ICdfY29udGV4dHMuanNvbicsXHJcbiAgICAgICAgZGVmYXVsdENvbnRleHRVcmk6ICdfZGVmYXVsdCdcclxuICAgICAgfSxcclxuICAgICAgdGhpcy5jb25maWcuZ2V0Q29uZmlnKCdjb250ZXh0JylcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5iYXNlVXJsID0gdGhpcy5vcHRpb25zLnVybCA/PyAnJztcclxuXHJcbiAgICB0aGlzLnJlYWRQYXJhbXNGcm9tUm91dGUoKTtcclxuXHJcbiAgICBpZiAodGhpcy5hdXRoU2VydmljZS5oYXNBdXRoU2VydmljZSkge1xyXG4gICAgICB0aGlzLmF1dGhTZXJ2aWNlLmxvZ2dlZCQuc3Vic2NyaWJlKChsb2dnZWQpID0+IHtcclxuICAgICAgICBpZiAobG9nZ2VkKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbnRleHRzJC5waXBlKHNraXAoMSksIGZpcnN0KCkpLnN1YnNjcmliZSgoYykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNvbnRleHRzQ2hhbmdlKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMubG9hZENvbnRleHRzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubG9hZENvbnRleHRzKCk7XHJcbiAgICAgIHRoaXMuaGFuZGxlQ29udGV4dHNDaGFuZ2UoZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0KHBlcm1pc3Npb25zPzogc3RyaW5nW10sIGhpZGRlbj86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPENvbnRleHRzTGlzdD4ge1xyXG4gICAgbGV0IHVybCA9IHRoaXMuYmFzZVVybCArICcvY29udGV4dHMnO1xyXG4gICAgaWYgKHBlcm1pc3Npb25zICYmIHRoaXMuYXV0aFNlcnZpY2UuYXV0aGVudGljYXRlZCkge1xyXG4gICAgICB1cmwgKz0gJz9wZXJtaXNzaW9uPScgKyBwZXJtaXNzaW9ucy5qb2luKCk7XHJcbiAgICAgIGlmIChoaWRkZW4pIHtcclxuICAgICAgICB1cmwgKz0gJyZoaWRkZW49dHJ1ZSc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PENvbnRleHRzTGlzdD4odXJsKTtcclxuICB9XHJcblxyXG4gIGdldEJ5SWQoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Q29udGV4dD4ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5iYXNlVXJsICsgJy9jb250ZXh0cy8nICsgaWQ7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxDb250ZXh0Pih1cmwpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGV0YWlscyhpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxEZXRhaWxlZENvbnRleHQ+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVybH0vY29udGV4dHMvJHtpZH0vZGV0YWlsc2A7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxEZXRhaWxlZENvbnRleHQ+KHVybCkucGlwZShcclxuICAgICAgY2F0Y2hFcnJvcigocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihyZXMsIGlkKTtcclxuICAgICAgICB0aHJvdyByZXM7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGVmYXVsdCgpOiBPYnNlcnZhYmxlPERldGFpbGVkQ29udGV4dD4ge1xyXG4gICAgaWYgKHRoaXMuYXV0aFNlcnZpY2UuYXV0aGVudGljYXRlZCkge1xyXG4gICAgICBjb25zdCB1cmwgPSB0aGlzLmJhc2VVcmwgKyAnL2NvbnRleHRzL2RlZmF1bHQnO1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxEZXRhaWxlZENvbnRleHQ+KHVybCkucGlwZShcclxuICAgICAgICB0YXAoKGNvbnRleHQpID0+IHtcclxuICAgICAgICAgIHRoaXMuZGVmYXVsdENvbnRleHRJZCQubmV4dChjb250ZXh0LmlkKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgdXJpID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXQoJ2Zhdm9yaXRlLmNvbnRleHQudXJpJykgYXMgc3RyaW5nO1xyXG4gICAgICB0aGlzLmRlZmF1bHRDb250ZXh0SWQkLm5leHQodXJpKTtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q29udGV4dEJ5VXJpKHVyaSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRQcm9maWxCeVVzZXIoKTogT2JzZXJ2YWJsZTxDb250ZXh0UHJvZmlsc1tdPiB7XHJcbiAgICBpZiAodGhpcy5iYXNlVXJsKSB7XHJcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMuYmFzZVVybCArICcvcHJvZmlscz8nO1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxDb250ZXh0UHJvZmlsc1tdPih1cmwpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG9mKFtdKTtcclxuICB9XHJcblxyXG4gIHNldERlZmF1bHQoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBpZiAodGhpcy5hdXRoU2VydmljZS5hdXRoZW50aWNhdGVkKSB7XHJcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMuYmFzZVVybCArICcvY29udGV4dHMvZGVmYXVsdCc7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh1cmwsIHsgZGVmYXVsdENvbnRleHRJZDogaWQgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldCgnZmF2b3JpdGUuY29udGV4dC51cmknLCBpZCk7XHJcbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGlkZUNvbnRleHQoaWQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5iYXNlVXJsICsgJy9jb250ZXh0cy8nICsgaWQgKyAnL2hpZGUnO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHVybCwge30pO1xyXG4gIH1cclxuXHJcbiAgc2hvd0NvbnRleHQoaWQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5iYXNlVXJsICsgJy9jb250ZXh0cy8nICsgaWQgKyAnL3Nob3cnO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHVybCwge30pO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlKGlkOiBzdHJpbmcsIGltcG9ydGVkID0gZmFsc2UpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcclxuICAgIGNvbnN0IGNvbnRleHRzOiBDb250ZXh0c0xpc3QgPSB7IG91cnM6IFtdIH07XHJcbiAgICBPYmplY3Qua2V5cyh0aGlzLmNvbnRleHRzJC52YWx1ZSkuZm9yRWFjaChcclxuICAgICAgKGtleSkgPT5cclxuICAgICAgICAoY29udGV4dHNba2V5XSA9IHRoaXMuY29udGV4dHMkLnZhbHVlW2tleV0uZmlsdGVyKChjKSA9PiBjLmlkICE9PSBpZCkpXHJcbiAgICApO1xyXG5cclxuICAgIGlmIChpbXBvcnRlZCkge1xyXG4gICAgICB0aGlzLmltcG9ydGVkQ29udGV4dCA9IHRoaXMuaW1wb3J0ZWRDb250ZXh0LmZpbHRlcigoYykgPT4gYy5pZCAhPT0gaWQpO1xyXG4gICAgICByZXR1cm4gb2YodGhpcy5jb250ZXh0cyQubmV4dChjb250ZXh0cykpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHVybCA9IHRoaXMuYmFzZVVybCArICcvY29udGV4dHMvJyArIGlkO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8dm9pZD4odXJsKS5waXBlKFxyXG4gICAgICB0YXAoKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuY29udGV4dHMkLm5leHQoY29udGV4dHMpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZShjb250ZXh0OiBEZXRhaWxlZENvbnRleHQpOiBPYnNlcnZhYmxlPENvbnRleHQ+IHtcclxuICAgIGNvbnN0IHVybCA9IHRoaXMuYmFzZVVybCArICcvY29udGV4dHMnO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PENvbnRleHQ+KHVybCwgY29udGV4dCkucGlwZShcclxuICAgICAgbWFwKChjb250ZXh0Q3JlYXRlZCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmF1dGhTZXJ2aWNlLmF1dGhlbnRpY2F0ZWQpIHtcclxuICAgICAgICAgIGNvbnRleHRDcmVhdGVkLnBlcm1pc3Npb24gPSBUeXBlUGVybWlzc2lvbltUeXBlUGVybWlzc2lvbi53cml0ZV07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnRleHRDcmVhdGVkLnBlcm1pc3Npb24gPSBUeXBlUGVybWlzc2lvbltUeXBlUGVybWlzc2lvbi5yZWFkXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb250ZXh0cyQudmFsdWUub3Vycy51bnNoaWZ0KGNvbnRleHRDcmVhdGVkKTtcclxuICAgICAgICB0aGlzLmNvbnRleHRzJC5uZXh0KHRoaXMuY29udGV4dHMkLnZhbHVlKTtcclxuICAgICAgICByZXR1cm4gY29udGV4dENyZWF0ZWQ7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgY2xvbmUoaWQ6IHN0cmluZywgcHJvcGVydGllcyA9IHt9KTogT2JzZXJ2YWJsZTxDb250ZXh0PiB7XHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJhc2VVcmwgKyAnL2NvbnRleHRzLycgKyBpZCArICcvY2xvbmUnO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PENvbnRleHQ+KHVybCwgcHJvcGVydGllcykucGlwZShcclxuICAgICAgbWFwKChjb250ZXh0Q2xvbmVkKSA9PiB7XHJcbiAgICAgICAgY29udGV4dENsb25lZC5wZXJtaXNzaW9uID0gVHlwZVBlcm1pc3Npb25bVHlwZVBlcm1pc3Npb24ud3JpdGVdO1xyXG4gICAgICAgIHRoaXMuY29udGV4dHMkLnZhbHVlLm91cnMudW5zaGlmdChjb250ZXh0Q2xvbmVkKTtcclxuICAgICAgICB0aGlzLmNvbnRleHRzJC5uZXh0KHRoaXMuY29udGV4dHMkLnZhbHVlKTtcclxuICAgICAgICByZXR1cm4gY29udGV4dENsb25lZDtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGUoaWQ6IHN0cmluZywgY29udGV4dDogQ29udGV4dCk6IE9ic2VydmFibGU8Q29udGV4dD4ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5iYXNlVXJsICsgJy9jb250ZXh0cy8nICsgaWQ7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBhdGNoPENvbnRleHQ+KHVybCwgY29udGV4dCk7XHJcbiAgfVxyXG5cclxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG5cclxuICBhZGRUb29sQXNzb2NpYXRpb24oY29udGV4dElkOiBzdHJpbmcsIHRvb2xJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcmx9L2NvbnRleHRzLyR7Y29udGV4dElkfS90b29sc2A7XHJcbiAgICBjb25zdCBhc3NvY2lhdGlvbiA9IHtcclxuICAgICAgdG9vbElkXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PHZvaWQ+KHVybCwgYXNzb2NpYXRpb24pO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlVG9vbEFzc29jaWF0aW9uKGNvbnRleHRJZDogc3RyaW5nLCB0b29sSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcmx9L2NvbnRleHRzLyR7Y29udGV4dElkfS90b29scy8ke3Rvb2xJZH1gO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUodXJsKTtcclxuICB9XHJcblxyXG4gIGdldFBlcm1pc3Npb25zKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENvbnRleHRQZXJtaXNzaW9uW10+IHtcclxuICAgIGNvbnN0IHVybCA9IHRoaXMuYmFzZVVybCArICcvY29udGV4dHMvJyArIGlkICsgJy9wZXJtaXNzaW9ucyc7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxDb250ZXh0UGVybWlzc2lvbltdPih1cmwpO1xyXG4gIH1cclxuXHJcbiAgYWRkUGVybWlzc2lvbkFzc29jaWF0aW9uKFxyXG4gICAgY29udGV4dElkOiBzdHJpbmcsXHJcbiAgICBwcm9maWw6IHN0cmluZyxcclxuICAgIHR5cGU6IFR5cGVQZXJtaXNzaW9uXHJcbiAgKTogT2JzZXJ2YWJsZTxDb250ZXh0UGVybWlzc2lvbltdPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcmx9L2NvbnRleHRzLyR7Y29udGV4dElkfS9wZXJtaXNzaW9uc2A7XHJcbiAgICBjb25zdCBhc3NvY2lhdGlvbiA9IHtcclxuICAgICAgcHJvZmlsLFxyXG4gICAgICB0eXBlUGVybWlzc2lvbjogdHlwZVxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8Q29udGV4dFBlcm1pc3Npb25bXT4odXJsLCBhc3NvY2lhdGlvbikucGlwZShcclxuICAgICAgY2F0Y2hFcnJvcigocmVzKSA9PiB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihyZXMsIHVuZGVmaW5lZCwgdHJ1ZSk7XHJcbiAgICAgICAgdGhyb3cgW3Jlc107IC8vIFRPRE8gTm90IHN1cmUgYWJvdXQgdGhpcy5cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVQZXJtaXNzaW9uQXNzb2NpYXRpb24oXHJcbiAgICBjb250ZXh0SWQ6IHN0cmluZyxcclxuICAgIHBlcm1pc3Npb25JZDogc3RyaW5nXHJcbiAgKTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcmx9L2NvbnRleHRzLyR7Y29udGV4dElkfS9wZXJtaXNzaW9ucy8ke3Blcm1pc3Npb25JZH1gO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8dm9pZD4odXJsKTtcclxuICB9XHJcblxyXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuXHJcbiAgZ2V0TG9jYWxDb250ZXh0cygpOiBPYnNlcnZhYmxlPENvbnRleHRzTGlzdD4ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5nZXRQYXRoKHRoaXMub3B0aW9ucy5jb250ZXh0TGlzdEZpbGUpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8Q29udGV4dHNMaXN0Pih1cmwpLnBpcGUoXHJcbiAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICByZXR1cm4geyBvdXJzOiByZXMgfTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRMb2NhbENvbnRleHQodXJpOiBzdHJpbmcpOiBPYnNlcnZhYmxlPERldGFpbGVkQ29udGV4dD4ge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5nZXRQYXRoKGAke3VyaX0uanNvbmApO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8RGV0YWlsZWRDb250ZXh0Pih1cmwpLnBpcGUoXHJcbiAgICAgIG1lcmdlTWFwKChyZXMpID0+IHtcclxuICAgICAgICBpZiAoIXJlcy5iYXNlKSB7XHJcbiAgICAgICAgICByZXR1cm4gb2YocmVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdXJsQmFzZSA9IHRoaXMuZ2V0UGF0aChgJHtyZXMuYmFzZX0uanNvbmApO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PERldGFpbGVkQ29udGV4dD4odXJsQmFzZSkucGlwZShcclxuICAgICAgICAgIG1hcCgocmVzQmFzZTogRGV0YWlsZWRDb250ZXh0KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc01lcmdlID0gcmVzO1xyXG4gICAgICAgICAgICByZXNNZXJnZS5tYXAgPSBPYmplY3RVdGlscy5tZXJnZURlZXAocmVzQmFzZS5tYXAsIHJlcy5tYXApO1xyXG4gICAgICAgICAgICByZXNNZXJnZS5sYXllcnMgPSAocmVzQmFzZS5sYXllcnMgfHwgW10pXHJcbiAgICAgICAgICAgICAgLmNvbmNhdChyZXMubGF5ZXJzIHx8IFtdKVxyXG4gICAgICAgICAgICAgIC5yZXZlcnNlKClcclxuICAgICAgICAgICAgICAuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgKGwsIGluZGV4LCBzZWxmKSA9PlxyXG4gICAgICAgICAgICAgICAgICAhbC5pZCB8fCBzZWxmLmZpbmRJbmRleCgobDIpID0+IGwyLmlkID09PSBsLmlkKSA9PT0gaW5kZXhcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgLnJldmVyc2UoKTtcclxuICAgICAgICAgICAgcmVzTWVyZ2UudG9vbGJhciA9IHJlcy50b29sYmFyIHx8IHJlc0Jhc2UudG9vbGJhcjtcclxuICAgICAgICAgICAgcmVzTWVyZ2UubWVzc2FnZSA9IHJlcy5tZXNzYWdlIHx8IHJlc0Jhc2UubWVzc2FnZTtcclxuICAgICAgICAgICAgcmVzTWVyZ2UubWVzc2FnZXMgPSByZXMubWVzc2FnZXMgfHwgcmVzQmFzZS5tZXNzYWdlcztcclxuICAgICAgICAgICAgcmVzTWVyZ2UudG9vbHMgPSAocmVzLnRvb2xzIHx8IFtdKVxyXG4gICAgICAgICAgICAgIC5jb25jYXQocmVzQmFzZS50b29scyB8fCBbXSlcclxuICAgICAgICAgICAgICAuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgKHQsIGluZGV4LCBzZWxmKSA9PlxyXG4gICAgICAgICAgICAgICAgICBzZWxmLmZpbmRJbmRleCgodDIpID0+IHQyLm5hbWUgPT09IHQubmFtZSkgPT09IGluZGV4XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc01lcmdlO1xyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnIsIHVyaSk7XHJcbiAgICAgICAgICAgIHRocm93IGVycjtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycjIpID0+IHtcclxuICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycjIsIHVyaSk7XHJcbiAgICAgICAgdGhyb3cgZXJyMjtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBsb2FkQ29udGV4dHMocGVybWlzc2lvbnM/OiBzdHJpbmdbXSwgaGlkZGVuPzogYm9vbGVhbikge1xyXG4gICAgbGV0IHJlcXVlc3Q7XHJcbiAgICBpZiAodGhpcy5iYXNlVXJsKSB7XHJcbiAgICAgIHJlcXVlc3QgPSB0aGlzLmdldChwZXJtaXNzaW9ucywgaGlkZGVuKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlcXVlc3QgPSB0aGlzLmdldExvY2FsQ29udGV4dHMoKTtcclxuICAgIH1cclxuICAgIHJlcXVlc3Quc3Vic2NyaWJlKChjb250ZXh0cykgPT4ge1xyXG4gICAgICBjb250ZXh0cy5vdXJzID0gdGhpcy5pbXBvcnRlZENvbnRleHQuY29uY2F0KGNvbnRleHRzLm91cnMpO1xyXG4gICAgICB0aGlzLmNvbnRleHRzJC5uZXh0KGNvbnRleHRzKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZERlZmF1bHRDb250ZXh0KCkge1xyXG4gICAgY29uc3QgbG9hZEZjdCA9IChkaXJlY3QgPSBmYWxzZSkgPT4ge1xyXG4gICAgICBpZiAoIWRpcmVjdCAmJiB0aGlzLmJhc2VVcmwgJiYgdGhpcy5hdXRoU2VydmljZS5hdXRoZW50aWNhdGVkKSB7XHJcbiAgICAgICAgdGhpcy5nZXREZWZhdWx0KCkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgKF9jb250ZXh0OiBEZXRhaWxlZENvbnRleHQpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kZWZhdWx0Q29udGV4dFVyaSA9IF9jb250ZXh0LnVyaTtcclxuICAgICAgICAgICAgdGhpcy5hZGRDb250ZXh0VG9MaXN0KF9jb250ZXh0KTtcclxuICAgICAgICAgICAgdGhpcy5zZXRDb250ZXh0KF9jb250ZXh0KTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdENvbnRleHRJZCQubmV4dCh1bmRlZmluZWQpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRDb250ZXh0KHRoaXMuZGVmYXVsdENvbnRleHRVcmkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5sb2FkQ29udGV4dCh0aGlzLmRlZmF1bHRDb250ZXh0VXJpKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy5yb3V0ZSAmJiB0aGlzLnJvdXRlLm9wdGlvbnMuY29udGV4dEtleSkge1xyXG4gICAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnBpcGUoZGVib3VuY2VUaW1lKDEwMCkpLnN1YnNjcmliZSgocGFyYW1zKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29udGV4dFBhcmFtID0gcGFyYW1zW3RoaXMucm91dGUub3B0aW9ucy5jb250ZXh0S2V5IGFzIHN0cmluZ107XHJcbiAgICAgICAgbGV0IGRpcmVjdCA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChjb250ZXh0UGFyYW0pIHtcclxuICAgICAgICAgIHRoaXMuZGVmYXVsdENvbnRleHRVcmkgPSBjb250ZXh0UGFyYW07XHJcbiAgICAgICAgICBkaXJlY3QgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsb2FkRmN0KGRpcmVjdCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbG9hZEZjdCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9hZENvbnRleHQodXJpOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNvbnRleHQkLnZhbHVlO1xyXG5cclxuICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQudXJpID09PSB1cmkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZ2V0Q29udGV4dEJ5VXJpKHVyaSlcclxuICAgICAgLnBpcGUoZmlyc3QoKSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAoX2NvbnRleHQ6IERldGFpbGVkQ29udGV4dCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5hZGRDb250ZXh0VG9MaXN0KF9jb250ZXh0KTtcclxuICAgICAgICAgIHRoaXMuc2V0Q29udGV4dChfY29udGV4dCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAoZXJyKSA9PiB7XHJcbiAgICAgICAgICBpZiAodXJpICE9PSB0aGlzLm9wdGlvbnMuZGVmYXVsdENvbnRleHRVcmkpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkQ29udGV4dCh0aGlzLm9wdGlvbnMuZGVmYXVsdENvbnRleHRVcmkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHNldENvbnRleHQoY29udGV4dDogRGV0YWlsZWRDb250ZXh0KSB7XHJcbiAgICB0aGlzLmhhbmRsZUNvbnRleHRNZXNzYWdlKGNvbnRleHQpO1xyXG4gICAgY29uc3QgY3VycmVudENvbnRleHQgPSB0aGlzLmNvbnRleHQkLnZhbHVlO1xyXG4gICAgaWYgKGN1cnJlbnRDb250ZXh0ICYmIGNvbnRleHQgJiYgY29udGV4dC5pZCA9PT0gY3VycmVudENvbnRleHQuaWQpIHtcclxuICAgICAgaWYgKGNvbnRleHQubWFwLnZpZXcua2VlcEN1cnJlbnRWaWV3ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBjb250ZXh0Lm1hcC52aWV3LmtlZXBDdXJyZW50VmlldyA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jb250ZXh0JC5uZXh0KGNvbnRleHQpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFjb250ZXh0Lm1hcCkge1xyXG4gICAgICBjb250ZXh0Lm1hcCA9IHsgdmlldzoge30gfTtcclxuICAgIH1cclxuXHJcbiAgICBPYmplY3QuYXNzaWduKGNvbnRleHQubWFwLnZpZXcsIHRoaXMubWFwVmlld0Zyb21Sb3V0ZSk7XHJcblxyXG4gICAgdGhpcy5jb250ZXh0JC5uZXh0KGNvbnRleHQpO1xyXG4gIH1cclxuXHJcbiAgbG9hZEVkaXRlZENvbnRleHQodXJpOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZ2V0Q29udGV4dEJ5VXJpKHVyaSkuc3Vic2NyaWJlKChfY29udGV4dDogRGV0YWlsZWRDb250ZXh0KSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0RWRpdGVkQ29udGV4dChfY29udGV4dCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldEVkaXRlZENvbnRleHQoY29udGV4dDogRGV0YWlsZWRDb250ZXh0KSB7XHJcbiAgICB0aGlzLmVkaXRlZENvbnRleHQkLm5leHQoY29udGV4dCk7XHJcbiAgfVxyXG5cclxuICBnZXRDb250ZXh0RnJvbU1hcChpZ29NYXA6IElnb01hcCwgZW1wdHk/OiBib29sZWFuKTogRGV0YWlsZWRDb250ZXh0IHtcclxuICAgIGNvbnN0IHZpZXcgPSBpZ29NYXAub2wuZ2V0VmlldygpO1xyXG4gICAgY29uc3QgcHJvaiA9IHZpZXcuZ2V0UHJvamVjdGlvbigpLmdldENvZGUoKTtcclxuICAgIGNvbnN0IGNlbnRlcjogYW55ID0gbmV3IG9sUG9pbnQodmlldy5nZXRDZW50ZXIoKSkudHJhbnNmb3JtKFxyXG4gICAgICBwcm9qLFxyXG4gICAgICAnRVBTRzo0MzI2J1xyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBjb250ZXh0OiBEZXRhaWxlZENvbnRleHQgPSB7XHJcbiAgICAgIHVyaTogdXVpZCgpLFxyXG4gICAgICB0aXRsZTogJycsXHJcbiAgICAgIHNjb3BlOiAncHJpdmF0ZScsXHJcbiAgICAgIG1hcDoge1xyXG4gICAgICAgIHZpZXc6IHtcclxuICAgICAgICAgIGNlbnRlcjogY2VudGVyLmdldENvb3JkaW5hdGVzKCksXHJcbiAgICAgICAgICB6b29tOiB2aWV3LmdldFpvb20oKSxcclxuICAgICAgICAgIHByb2plY3Rpb246IHByb2osXHJcbiAgICAgICAgICBtYXhab29tT25FeHRlbnQ6IGlnb01hcC52aWV3Q29udHJvbGxlci5tYXhab29tT25FeHRlbnRcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGxheWVyczogW10sXHJcbiAgICAgIHRvb2xzOiBbXVxyXG4gICAgfTtcclxuXHJcbiAgICBsZXQgbGF5ZXJzID0gW107XHJcbiAgICBpZiAoZW1wdHkgPT09IHRydWUpIHtcclxuICAgICAgbGF5ZXJzID0gaWdvTWFwLmxheWVycyRcclxuICAgICAgICAuZ2V0VmFsdWUoKVxyXG4gICAgICAgIC5maWx0ZXIoXHJcbiAgICAgICAgICAobGF5KSA9PlxyXG4gICAgICAgICAgICBsYXkuYmFzZUxheWVyID09PSB0cnVlIHx8XHJcbiAgICAgICAgICAgIGxheS5vcHRpb25zLmlkID09PSAnc2VhcmNoUG9pbnRlclN1bW1hcnlJZCdcclxuICAgICAgICApXHJcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuekluZGV4IC0gYi56SW5kZXgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGF5ZXJzID0gaWdvTWFwLmxheWVycyRcclxuICAgICAgICAuZ2V0VmFsdWUoKVxyXG4gICAgICAgIC5maWx0ZXIoKGxheSkgPT4gIWxheS5pZC5pbmNsdWRlcygnV2ZzV29ya3NwYWNlVGFibGVEZXN0JykpXHJcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuekluZGV4IC0gYi56SW5kZXgpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBpID0gMDtcclxuICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgbGF5ZXJzKSB7XHJcbiAgICAgIGNvbnN0IGxheWVyT3B0aW9uczogQW55TGF5ZXJPcHRpb25zID0ge1xyXG4gICAgICAgIHRpdGxlOiBsYXllci5vcHRpb25zLnRpdGxlLFxyXG4gICAgICAgIHpJbmRleDogKytpLFxyXG4gICAgICAgIHZpc2libGU6IGxheWVyLnZpc2libGUsXHJcbiAgICAgICAgc2VjdXJpdHk6IGxheWVyLm9wdGlvbnMuc2VjdXJpdHksXHJcbiAgICAgICAgb3BhY2l0eTogbGF5ZXIub3BhY2l0eVxyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBvcHRzID0ge1xyXG4gICAgICAgIGlkOiBsYXllci5vcHRpb25zLmlkID8gU3RyaW5nKGxheWVyLm9wdGlvbnMuaWQpIDogdW5kZWZpbmVkLFxyXG4gICAgICAgIGxheWVyT3B0aW9ucyxcclxuICAgICAgICBzb3VyY2VPcHRpb25zOiB7XHJcbiAgICAgICAgICB0eXBlOiBsYXllci5kYXRhU291cmNlLm9wdGlvbnMudHlwZSxcclxuICAgICAgICAgIHBhcmFtczogbGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLnBhcmFtcyxcclxuICAgICAgICAgIHVybDogbGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLnVybCxcclxuICAgICAgICAgIHF1ZXJ5YWJsZTogbGF5ZXIucXVlcnlhYmxlXHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgICBpZiAob3B0cy5zb3VyY2VPcHRpb25zLnR5cGUpIHtcclxuICAgICAgICBjb250ZXh0LmxheWVycy5wdXNoKG9wdHMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29udGV4dC50b29scyA9IHRoaXMudG9vbHMubWFwKCh0b29sKSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgaWQ6IFN0cmluZyh0b29sLmlkKSxcclxuICAgICAgICBnbG9iYWw6IHRvb2wuZ2xvYmFsXHJcbiAgICAgIH0gYXMgVG9vbDtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBjb250ZXh0O1xyXG4gIH1cclxuXHJcbiAgZ2V0Q29udGV4dEZyb21MYXllcnMoXHJcbiAgICBpZ29NYXA6IElnb01hcCxcclxuICAgIGxheWVyczogTGF5ZXJbXSxcclxuICAgIG5hbWU6IHN0cmluZyxcclxuICAgIGtlZXBDdXJyZW50Vmlldz86IGJvb2xlYW5cclxuICApOiBEZXRhaWxlZENvbnRleHQge1xyXG4gICAgY29uc3QgY3VycmVudENvbnRleHQgPSB0aGlzLmNvbnRleHQkLmdldFZhbHVlKCk7XHJcbiAgICBjb25zdCB2aWV3ID0gaWdvTWFwLm9sLmdldFZpZXcoKTtcclxuICAgIGNvbnN0IHByb2ogPSB2aWV3LmdldFByb2plY3Rpb24oKS5nZXRDb2RlKCk7XHJcbiAgICBjb25zdCBjZW50ZXI6IGFueSA9IG5ldyBvbFBvaW50KHZpZXcuZ2V0Q2VudGVyKCkpLnRyYW5zZm9ybShcclxuICAgICAgcHJvaixcclxuICAgICAgJ0VQU0c6NDMyNidcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgY29udGV4dDogRGV0YWlsZWRDb250ZXh0ID0ge1xyXG4gICAgICB1cmk6IG5hbWUsXHJcbiAgICAgIHRpdGxlOiBuYW1lLFxyXG4gICAgICBtYXA6IHtcclxuICAgICAgICB2aWV3OiB7XHJcbiAgICAgICAgICBjZW50ZXI6IGNlbnRlci5nZXRDb29yZGluYXRlcygpLFxyXG4gICAgICAgICAgem9vbTogdmlldy5nZXRab29tKCksXHJcbiAgICAgICAgICBwcm9qZWN0aW9uOiBwcm9qLFxyXG4gICAgICAgICAga2VlcEN1cnJlbnRWaWV3XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBsYXllcnM6IFtdLFxyXG4gICAgICB0b29sYmFyOiBbXSxcclxuICAgICAgdG9vbHM6IFtdLFxyXG4gICAgICBleHRyYUZlYXR1cmVzOiBbXVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBjdXJyZW50TGF5ZXJzID0gaWdvTWFwLmxheWVycyQuZ2V0VmFsdWUoKTtcclxuICAgIGNvbnRleHQubGF5ZXJzID0gY3VycmVudExheWVyc1xyXG4gICAgICAuZmlsdGVyKChsKSA9PiBsLmJhc2VMYXllcilcclxuICAgICAgLm1hcCgobCkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBiYXNlTGF5ZXI6IHRydWUsXHJcbiAgICAgICAgICBzb3VyY2VPcHRpb25zOiBsLm9wdGlvbnMuc291cmNlT3B0aW9ucyxcclxuICAgICAgICAgIHRpdGxlOiBsLm9wdGlvbnMudGl0bGUsXHJcbiAgICAgICAgICB2aXNpYmxlOiBsLnZpc2libGVcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuXHJcbiAgICBsYXllcnMuZm9yRWFjaCgobGF5ZXIpID0+IHtcclxuICAgICAgLy8gRG8gbm90IHNlZW0gdG8gd29yayBwcm9wZXJseS4gbGF5ZXJGb3VuZCBpcyBhbHdheXMgdW5kZWZpbmVkLlxyXG4gICAgICBjb25zdCBsYXllckZvdW5kID0gY3VycmVudENvbnRleHQubGF5ZXJzLmZpbmQoKGNvbnRleHRMYXllcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IGNvbnRleHRMYXllci5zb3VyY2U7XHJcbiAgICAgICAgcmV0dXJuIHNvdXJjZSAmJiBsYXllci5pZCA9PT0gc291cmNlLmlkICYmICFjb250ZXh0TGF5ZXIuYmFzZUxheWVyO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKGxheWVyRm91bmQpIHtcclxuICAgICAgICBsZXQgbGF5ZXJGb3VuZEFzID0gbGF5ZXJGb3VuZCBhc1xyXG4gICAgICAgICAgfCBWZWN0b3JMYXllck9wdGlvbnNcclxuICAgICAgICAgIHwgVmVjdG9yVGlsZUxheWVyT3B0aW9ucztcclxuICAgICAgICBsZXQgbGF5ZXJTdHlsZSA9IGxheWVyRm91bmRBcy5zdHlsZTtcclxuICAgICAgICBpZiAobGF5ZXJGb3VuZEFzLmlnb1N0eWxlPy5zdHlsZUJ5QXR0cmlidXRlKSB7XHJcbiAgICAgICAgICBsYXllclN0eWxlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobGF5ZXJGb3VuZEFzLmlnb1N0eWxlPy5jbHVzdGVyQmFzZVN0eWxlKSB7XHJcbiAgICAgICAgICBsYXllclN0eWxlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgZGVsZXRlIGxheWVyRm91bmQuc291cmNlT3B0aW9uc1tgc291cmNlYF07XHJcbiAgICAgICAgICBkZWxldGUgbGF5ZXJGb3VuZC5zb3VyY2VPcHRpb25zW2Bmb3JtYXRgXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgb3B0cyA9IHtcclxuICAgICAgICAgIGJhc2VMYXllcjogbGF5ZXJGb3VuZC5iYXNlTGF5ZXIsXHJcbiAgICAgICAgICB0aXRsZTogbGF5ZXIub3B0aW9ucy50aXRsZSxcclxuICAgICAgICAgIHpJbmRleDogbGF5ZXIuekluZGV4LFxyXG4gICAgICAgICAgaWdvU3R5bGU6IHtcclxuICAgICAgICAgICAgc3R5bGVCeUF0dHJpYnV0ZTogbGF5ZXJGb3VuZEFzLmlnb1N0eWxlPy5zdHlsZUJ5QXR0cmlidXRlLFxyXG4gICAgICAgICAgICBjbHVzdGVyQmFzZVN0eWxlOiBsYXllckZvdW5kQXMuaWdvU3R5bGU/LmNsdXN0ZXJCYXNlU3R5bGVcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBzdHlsZTogbGF5ZXJTdHlsZSxcclxuICAgICAgICAgIGNsdXN0ZXJQYXJhbTogbGF5ZXJGb3VuZFtgY2x1c3RlclBhcmFtYF0sXHJcbiAgICAgICAgICB2aXNpYmxlOiBsYXllci52aXNpYmxlLFxyXG4gICAgICAgICAgb3BhY2l0eTogbGF5ZXIub3BhY2l0eSxcclxuICAgICAgICAgIHNvdXJjZU9wdGlvbnM6IGxheWVyRm91bmQuc291cmNlT3B0aW9uc1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgY29udGV4dC5sYXllcnMucHVzaChvcHRzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoIShsYXllci5vbC5nZXRTb3VyY2UoKSBpbnN0YW5jZW9mIG9sVmVjdG9yU291cmNlKSkge1xyXG4gICAgICAgICAgY29uc3QgY2F0YWxvZ0xheWVyID0gbGF5ZXIub3B0aW9ucztcclxuICAgICAgICAgIGNhdGFsb2dMYXllci56SW5kZXggPSBsYXllci56SW5kZXg7XHJcbiAgICAgICAgICAoY2F0YWxvZ0xheWVyLnZpc2libGUgPSBsYXllci52aXNpYmxlKSxcclxuICAgICAgICAgICAgKGNhdGFsb2dMYXllci5vcGFjaXR5ID0gbGF5ZXIub3BhY2l0eSk7XHJcbiAgICAgICAgICBkZWxldGUgY2F0YWxvZ0xheWVyLnNvdXJjZTtcclxuICAgICAgICAgIGNvbnRleHQubGF5ZXJzLnB1c2goY2F0YWxvZ0xheWVyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgZXh0cmFGZWF0dXJlcyA9IHRoaXMuZ2V0RXh0cmFGZWF0dXJlcyhsYXllcik7XHJcbiAgICAgICAgICBleHRyYUZlYXR1cmVzLm5hbWUgPSBsYXllci5vcHRpb25zLnRpdGxlO1xyXG4gICAgICAgICAgZXh0cmFGZWF0dXJlcy5vcGFjaXR5ID0gbGF5ZXIub3BhY2l0eTtcclxuICAgICAgICAgIGV4dHJhRmVhdHVyZXMudmlzaWJsZSA9IGxheWVyLnZpc2libGU7XHJcbiAgICAgICAgICBjb250ZXh0LmV4dHJhRmVhdHVyZXMucHVzaChleHRyYUZlYXR1cmVzKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnRleHQudG9vbGJhciA9IHRoaXMudG9vbGJhcjtcclxuICAgIGNvbnRleHQudG9vbHMgPSB0aGlzLnRvb2xzO1xyXG5cclxuICAgIHJldHVybiBjb250ZXh0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRFeHRyYUZlYXR1cmVzKGxheWVyOiBMYXllcik6IEV4dHJhRmVhdHVyZXMge1xyXG4gICAgY29uc3Qgd3JpdGVyID0gbmV3IEdlb0pTT04oKTtcclxuICAgIGxldCBvbEZlYXR1cmVzOiBGZWF0dXJlPEdlb21ldHJ5PltdO1xyXG4gICAgaWYgKGxheWVyLm9sLmdldFNvdXJjZSgpIGluc3RhbmNlb2YgQ2x1c3Rlcikge1xyXG4gICAgICBjb25zdCBjbHVzdGVyU291cmNlID0gbGF5ZXIub2wuZ2V0U291cmNlKCkgYXMgQ2x1c3RlcjtcclxuICAgICAgb2xGZWF0dXJlcyA9IGNsdXN0ZXJTb3VyY2UuZ2V0RmVhdHVyZXMoKTtcclxuICAgICAgb2xGZWF0dXJlcyA9IChvbEZlYXR1cmVzIGFzIGFueSkuZmxhdE1hcCgoY2x1c3RlcjogYW55KSA9PlxyXG4gICAgICAgIGNsdXN0ZXIuZ2V0KCdmZWF0dXJlcycpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBzb3VyY2UgPSBsYXllci5vbC5nZXRTb3VyY2UoKSBhcyBvbFZlY3RvclNvdXJjZTtcclxuICAgICAgb2xGZWF0dXJlcyA9IHNvdXJjZS5nZXRGZWF0dXJlcygpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY2xlYW5lZE9sRmVhdHVyZXMgPSB0aGlzLmV4cG9ydFNlcnZpY2UuZ2VuZXJhdGVGZWF0dXJlKFxyXG4gICAgICBvbEZlYXR1cmVzLFxyXG4gICAgICAnR2VvSlNPTicsXHJcbiAgICAgICdfZmVhdHVyZVN0b3JlJ1xyXG4gICAgKTtcclxuICAgIGNvbnN0IGZlYXR1cmVzID0gd3JpdGVyLndyaXRlRmVhdHVyZXMoY2xlYW5lZE9sRmVhdHVyZXMsIHtcclxuICAgICAgZGF0YVByb2plY3Rpb246ICdFUFNHOjQzMjYnLFxyXG4gICAgICBmZWF0dXJlUHJvamVjdGlvbjogJ0VQU0c6Mzg1NydcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoZmVhdHVyZXMpO1xyXG4gIH1cclxuXHJcbiAgc2V0VG9vbHModG9vbHM6IFRvb2xbXSkge1xyXG4gICAgdGhpcy50b29scyA9IHRvb2xzO1xyXG4gIH1cclxuXHJcbiAgc2V0VG9vbGJhcih0b29sYmFyOiBzdHJpbmdbXSkge1xyXG4gICAgdGhpcy50b29sYmFyID0gdG9vbGJhcjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlQ29udGV4dE1lc3NhZ2UoY29udGV4dDogRGV0YWlsZWRDb250ZXh0KSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuY29udGV4dCQudmFsdWUgJiZcclxuICAgICAgY29udGV4dC51cmkgJiZcclxuICAgICAgdGhpcy5jb250ZXh0JC52YWx1ZS51cmkgIT09IGNvbnRleHQudXJpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5yZW1vdmVBbGxBcmVOb3RFcnJvcigpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnRleHQubWVzc2FnZXMgPSBjb250ZXh0Lm1lc3NhZ2VzID8gY29udGV4dC5tZXNzYWdlcyA6IFtdO1xyXG4gICAgY29udGV4dC5tZXNzYWdlcy5wdXNoKGNvbnRleHQubWVzc2FnZSk7XHJcbiAgICBjb250ZXh0Lm1lc3NhZ2VzLm1hcCgobWVzc2FnZSkgPT4ge1xyXG4gICAgICBpZiAobWVzc2FnZSkge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UubWVzc2FnZShtZXNzYWdlIGFzIE1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q29udGV4dEJ5VXJpKHVyaTogc3RyaW5nKTogT2JzZXJ2YWJsZTxEZXRhaWxlZENvbnRleHQ+IHtcclxuICAgIGlmICh0aGlzLmJhc2VVcmwpIHtcclxuICAgICAgbGV0IGNvbnRleHRUb0xvYWQ7XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuY29udGV4dHMkLnZhbHVlKSkge1xyXG4gICAgICAgIGNvbnRleHRUb0xvYWQgPSB0aGlzLmNvbnRleHRzJC52YWx1ZVtrZXldLmZpbmQoKGMpID0+IHtcclxuICAgICAgICAgIHJldHVybiBjLnVyaSA9PT0gdXJpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChjb250ZXh0VG9Mb2FkKSB7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChjb250ZXh0VG9Mb2FkICYmIGNvbnRleHRUb0xvYWQuaW1wb3J0ZWQpIHtcclxuICAgICAgICByZXR1cm4gb2YoY29udGV4dFRvTG9hZCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFRPRE8gOiB1c2UgYWx3YXlzIGlkIG9yIHVyaVxyXG4gICAgICBjb25zdCBpZCA9IGNvbnRleHRUb0xvYWQgPyBjb250ZXh0VG9Mb2FkLmlkIDogdXJpO1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXREZXRhaWxzKGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpbXBvcnRlZENvbnRleHQgPSB0aGlzLmNvbnRleHRzJC52YWx1ZS5vdXJzLmZpbmQoKGN1cnJlbnRDb250ZXh0KSA9PiB7XHJcbiAgICAgIHJldHVybiBjdXJyZW50Q29udGV4dC51cmkgPT09IHVyaSAmJiBjdXJyZW50Q29udGV4dC5pbXBvcnRlZCA9PT0gdHJ1ZTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChpbXBvcnRlZENvbnRleHQpIHtcclxuICAgICAgcmV0dXJuIG9mKGltcG9ydGVkQ29udGV4dCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRMb2NhbENvbnRleHQodXJpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldENvbnRleHRMYXllcnMoaWdvTWFwOiBJZ29NYXApIHtcclxuICAgIGNvbnN0IGxheWVyczogTGF5ZXJbXSA9IFtdO1xyXG4gICAgY29uc3QgbWFwTGF5ZXJzID0gaWdvTWFwLmxheWVycyQuZ2V0VmFsdWUoKTtcclxuICAgIG1hcExheWVycy5mb3JFYWNoKChsYXllcikgPT4ge1xyXG4gICAgICBpZiAoIWxheWVyLmJhc2VMYXllciAmJiBsYXllci5vcHRpb25zLmlkICE9PSAnc2VhcmNoUG9pbnRlclN1bW1hcnlJZCcpIHtcclxuICAgICAgICBsYXllcnMucHVzaChsYXllcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGxheWVycztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVhZFBhcmFtc0Zyb21Sb3V0ZSgpIHtcclxuICAgIGlmICghdGhpcy5yb3V0ZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xyXG4gICAgICBjb25zdCBjZW50ZXJLZXkgPSB0aGlzLnJvdXRlLm9wdGlvbnMuY2VudGVyS2V5O1xyXG4gICAgICBpZiAoY2VudGVyS2V5ICYmIHBhcmFtc1tjZW50ZXJLZXkgYXMgc3RyaW5nXSkge1xyXG4gICAgICAgIGNvbnN0IGNlbnRlclBhcmFtcyA9IHBhcmFtc1tjZW50ZXJLZXkgYXMgc3RyaW5nXTtcclxuICAgICAgICB0aGlzLm1hcFZpZXdGcm9tUm91dGUuY2VudGVyID0gY2VudGVyUGFyYW1zLnNwbGl0KCcsJykubWFwKE51bWJlcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHByb2plY3Rpb25LZXkgPSB0aGlzLnJvdXRlLm9wdGlvbnMucHJvamVjdGlvbktleTtcclxuICAgICAgaWYgKHByb2plY3Rpb25LZXkgJiYgcGFyYW1zW3Byb2plY3Rpb25LZXkgYXMgc3RyaW5nXSkge1xyXG4gICAgICAgIGNvbnN0IHByb2plY3Rpb25QYXJhbSA9IHBhcmFtc1twcm9qZWN0aW9uS2V5IGFzIHN0cmluZ107XHJcbiAgICAgICAgdGhpcy5tYXBWaWV3RnJvbVJvdXRlLnByb2plY3Rpb24gPSBwcm9qZWN0aW9uUGFyYW07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHpvb21LZXkgPSB0aGlzLnJvdXRlLm9wdGlvbnMuem9vbUtleTtcclxuICAgICAgaWYgKHpvb21LZXkgJiYgcGFyYW1zW3pvb21LZXkgYXMgc3RyaW5nXSkge1xyXG4gICAgICAgIGNvbnN0IHpvb21QYXJhbSA9IHBhcmFtc1t6b29tS2V5IGFzIHN0cmluZ107XHJcbiAgICAgICAgdGhpcy5tYXBWaWV3RnJvbVJvdXRlLnpvb20gPSBOdW1iZXIoem9vbVBhcmFtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFBhdGgoZmlsZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBiYXNlUGF0aCA9IHRoaXMub3B0aW9ucy5iYXNlUGF0aC5yZXBsYWNlKC9cXC8kLywgJycpO1xyXG5cclxuICAgIHJldHVybiBgJHtiYXNlUGF0aH0vJHtmaWxlfWA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUVycm9yKFxyXG4gICAgZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlLFxyXG4gICAgdXJpOiBzdHJpbmcsXHJcbiAgICBwZXJtaXNzaW9uRXJyb3I/OiBib29sZWFuXHJcbiAgKSB7XHJcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jb250ZXh0cyQudmFsdWUub3Vycy5maW5kKChvYmopID0+IG9iai51cmkgPT09IHVyaSk7XHJcbiAgICBjb25zdCB0aXRsZUNvbnRleHQgPSBjb250ZXh0ID8gY29udGV4dC50aXRsZSA6IHVyaTtcclxuICAgIGVycm9yLmVycm9yLnRpdGxlID0gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5pbnZhbGlkLnRpdGxlJ1xyXG4gICAgKTtcclxuXHJcbiAgICBlcnJvci5lcnJvci5tZXNzYWdlID0gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXHJcbiAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5pbnZhbGlkLnRleHQnLFxyXG4gICAgICB7IHZhbHVlOiB0aXRsZUNvbnRleHQgfVxyXG4gICAgKTtcclxuXHJcbiAgICBlcnJvci5lcnJvci50b0Rpc3BsYXkgPSB0cnVlO1xyXG5cclxuICAgIGlmIChwZXJtaXNzaW9uRXJyb3IpIHtcclxuICAgICAgZXJyb3IuZXJyb3IudGl0bGUgPSB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcclxuICAgICAgICAnaWdvLmNvbnRleHQuY29udGV4dE1hbmFnZXIuZXJyb3JzLmFkZFBlcm1pc3Npb25UaXRsZSdcclxuICAgICAgKTtcclxuICAgICAgZXJyb3IuZXJyb3IubWVzc2FnZSA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxyXG4gICAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5lcnJvcnMuYWRkUGVybWlzc2lvbidcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZXJyb3IoXHJcbiAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5lcnJvcnMuYWRkUGVybWlzc2lvbicsXHJcbiAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5lcnJvcnMuYWRkUGVybWlzc2lvblRpdGxlJ1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlQ29udGV4dHNDaGFuZ2Uoa2VlcEN1cnJlbnRDb250ZXh0ID0gdHJ1ZSkge1xyXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuY29udGV4dCQudmFsdWU7XHJcbiAgICBjb25zdCBlZGl0ZWRDb250ZXh0ID0gdGhpcy5lZGl0ZWRDb250ZXh0JC52YWx1ZTtcclxuICAgIGlmICghY29udGV4dCB8fCBjb250ZXh0LnVyaSA9PT0gdGhpcy5vcHRpb25zLmRlZmF1bHRDb250ZXh0VXJpKSB7XHJcbiAgICAgIGtlZXBDdXJyZW50Q29udGV4dCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKCFrZWVwQ3VycmVudENvbnRleHQgfHwgIXRoaXMuZmluZENvbnRleHQoY29udGV4dCkpIHtcclxuICAgICAgdGhpcy5kZWZhdWx0Q29udGV4dFVyaSA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy5sb2FkRGVmYXVsdENvbnRleHQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ2V0Q29udGV4dEJ5VXJpKGNvbnRleHQudXJpKVxyXG4gICAgICAgIC5waXBlKGZpcnN0KCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgobmV3Q29udGV4dDogRGV0YWlsZWRDb250ZXh0KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvb2xzQ2hhbmdlZCQubmV4dChuZXdDb250ZXh0KTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmJhc2VVcmwgJiYgdGhpcy5hdXRoU2VydmljZS5hdXRoZW50aWNhdGVkKSB7XHJcbiAgICAgICAgdGhpcy5nZXREZWZhdWx0KCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnN0IGVkaXRlZEZvdW5kID0gdGhpcy5maW5kQ29udGV4dChlZGl0ZWRDb250ZXh0KTtcclxuICAgIGlmICghZWRpdGVkRm91bmQgfHwgZWRpdGVkRm91bmQucGVybWlzc2lvbiAhPT0gJ3dyaXRlJykge1xyXG4gICAgICB0aGlzLnNldEVkaXRlZENvbnRleHQodW5kZWZpbmVkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkQ29udGV4dFRvTGlzdChjb250ZXh0OiBDb250ZXh0KSB7XHJcbiAgICBjb25zdCBjb250ZXh0Rm91bmQgPSB0aGlzLmZpbmRDb250ZXh0KGNvbnRleHQpO1xyXG4gICAgaWYgKCFjb250ZXh0Rm91bmQpIHtcclxuICAgICAgY29uc3QgY29udGV4dFNpbXBsaWZpZSA9IHtcclxuICAgICAgICBpZDogY29udGV4dC5pZCxcclxuICAgICAgICB1cmk6IGNvbnRleHQudXJpLFxyXG4gICAgICAgIHRpdGxlOiBjb250ZXh0LnRpdGxlLFxyXG4gICAgICAgIHNjb3BlOiBjb250ZXh0LnNjb3BlLFxyXG4gICAgICAgIHBlcm1pc3Npb246IFR5cGVQZXJtaXNzaW9uW1R5cGVQZXJtaXNzaW9uLnJlYWRdXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBpZiAodGhpcy5jb250ZXh0cyQudmFsdWUgJiYgdGhpcy5jb250ZXh0cyQudmFsdWUucHVibGljKSB7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0cyQudmFsdWUucHVibGljLnB1c2goY29udGV4dFNpbXBsaWZpZSk7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0cyQubmV4dCh0aGlzLmNvbnRleHRzJC52YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZENvbnRleHQoY29udGV4dDogQ29udGV4dCkge1xyXG4gICAgaWYgKCFjb250ZXh0KSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb250ZXh0cyA9IHRoaXMuY29udGV4dHMkLnZhbHVlO1xyXG4gICAgbGV0IGZvdW5kO1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoY29udGV4dHMpKSB7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gY29udGV4dHNba2V5XTtcclxuICAgICAgZm91bmQgPSB2YWx1ZS5maW5kKFxyXG4gICAgICAgIChjKSA9PlxyXG4gICAgICAgICAgKGNvbnRleHQuaWQgJiYgYy5pZCA9PT0gY29udGV4dC5pZCkgfHxcclxuICAgICAgICAgIChjb250ZXh0LnVyaSAmJiBjLnVyaSA9PT0gY29udGV4dC51cmkpXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChmb3VuZCkge1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZvdW5kO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
668
|
+
}] }] });
|
|
669
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29udGV4dC9zcmMvbGliL2NvbnRleHQtbWFuYWdlci9zaGFyZWQvY29udGV4dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQXFCLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBVyxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBUXBELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDMUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFaEQsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUM7QUFFeEMsT0FBTyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBQ3BDLE9BQU8sT0FBTyxNQUFNLG1CQUFtQixDQUFDO0FBQ3hDLE9BQU8sY0FBYyxNQUFNLGtCQUFrQixDQUFDO0FBRzlDLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQ0wsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsR0FBRyxFQUNILFFBQVEsRUFDUixJQUFJLEVBQ0osR0FBRyxFQUNKLE1B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QUFLLENBQUMsSUFBSSxDQUNoQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQ0osQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDbkMsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUN6QyxDQUFDO1lBQ0YsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixNQUFNO1lBQ1IsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7dUdBN3dCVSxjQUFjOzJHQUFkLGNBQWMsY0FGYixNQUFNOzsyRkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBcUNJLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvYXV0aCc7XG5pbXBvcnQgeyBUb29sIH0gZnJvbSAnQGlnbzIvY29tbW9uL3Rvb2wnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvY29uZmlnJztcbmltcG9ydCB7IExhbmd1YWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xuaW1wb3J0IHsgTWVzc2FnZSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL21lc3NhZ2UnO1xuaW1wb3J0IHsgUm91dGVTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9yb3V0ZSc7XG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvc3RvcmFnZSc7XG5pbXBvcnQgdHlwZSB7XG4gIEFueUxheWVyT3B0aW9ucyxcbiAgSWdvTWFwLFxuICBMYXllcixcbiAgVmVjdG9yTGF5ZXJPcHRpb25zLFxuICBWZWN0b3JUaWxlTGF5ZXJPcHRpb25zXG59IGZyb20gJ0BpZ28yL2dlbyc7XG5pbXBvcnQgeyBFeHBvcnRTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvZ2VvJztcbmltcG9ydCB7IE9iamVjdFV0aWxzLCB1dWlkIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgR2VvSlNPTiBmcm9tICdvbC9mb3JtYXQvR2VvSlNPTic7XG5pbXBvcnQgeyBHZW9tZXRyeSB9IGZyb20gJ29sL2dlb20nO1xuaW1wb3J0IG9sUG9pbnQgZnJvbSAnb2wvZ2VvbS9Qb2ludCc7XG5pbXBvcnQgQ2x1c3RlciBmcm9tICdvbC9zb3VyY2UvQ2x1c3Rlcic7XG5pbXBvcnQgb2xWZWN0b3JTb3VyY2UgZnJvbSAnb2wvc291cmNlL1ZlY3Rvcic7XG5cbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tICdvbCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBjYXRjaEVycm9yLFxuICBkZWJvdW5jZVRpbWUsXG4gIGZpcnN0LFxuICBtYXAsXG4gIG1lcmdlTWFwLFxuICBza2lwLFxuICB0YXBcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBUeXBlUGVybWlzc2lvbiB9IGZyb20gJy4vY29udGV4dC5lbnVtJztcbmltcG9ydCB7XG4gIENvbnRleHQsXG4gIENvbnRleHRNYXBWaWV3LFxuICBDb250ZXh0UGVybWlzc2lvbixcbiAgQ29udGV4dFByb2ZpbHMsXG4gIENvbnRleHRTZXJ2aWNlT3B0aW9ucyxcbiAgQ29udGV4dHNMaXN0LFxuICBEZXRhaWxlZENvbnRleHQsXG4gIEV4dHJhRmVhdHVyZXNcbn0gZnJvbSAnLi9jb250ZXh0LmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvbnRleHRTZXJ2aWNlIHtcbiAgcHVibGljIGNvbnRleHQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEZXRhaWxlZENvbnRleHQ+KHVuZGVmaW5lZCk7XG4gIHB1YmxpYyBjb250ZXh0cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENvbnRleHRzTGlzdD4oeyBvdXJzOiBbXSB9KTtcbiAgcHVibGljIGRlZmF1bHRDb250ZXh0SWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KHVuZGVmaW5lZCk7XG4gIHB1YmxpYyBlZGl0ZWRDb250ZXh0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGV0YWlsZWRDb250ZXh0Pih1bmRlZmluZWQpO1xuICBwdWJsaWMgaW1wb3J0ZWRDb250ZXh0OiBBcnJheTxEZXRhaWxlZENvbnRleHQ+ID0gW107XG4gIHB1YmxpYyB0b29sc0NoYW5nZWQkID0gbmV3IFN1YmplY3Q8RGV0YWlsZWRDb250ZXh0PigpO1xuICBwcml2YXRlIG1hcFZpZXdGcm9tUm91dGU6IENvbnRleHRNYXBWaWV3ID0ge307XG4gIHByaXZhdGUgb3B0aW9uczogQ29udGV4dFNlcnZpY2VPcHRpb25zO1xuICBwcml2YXRlIGJhc2VVcmw6IHN0cmluZztcblxuICAvLyBVbnRpbCB0aGUgQ29udGV4dFNlcnZpY2UgaXMgY29tcGxldGVseSByZWZhY3RvcmVkLCB0aGlzIGlzIG5lZWRlZFxuICAvLyB0byB0cmFjayB0aGUgY3VycmVudCB0b29sc1xuICBwcml2YXRlIHRvb2xzOiBUb29sW107XG4gIHByaXZhdGUgdG9vbGJhcjogc3RyaW5nW107XG5cbiAgZ2V0IGRlZmF1bHRDb250ZXh0VXJpKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIChcbiAgICAgICh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldCgnZmF2b3JpdGUuY29udGV4dC51cmknKSBhcyBzdHJpbmcpIHx8XG4gICAgICB0aGlzLl9kZWZhdWx0Q29udGV4dFVyaSB8fFxuICAgICAgdGhpcy5vcHRpb25zLmRlZmF1bHRDb250ZXh0VXJpXG4gICAgKTtcbiAgfVxuICBzZXQgZGVmYXVsdENvbnRleHRVcmkodXJpOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9kZWZhdWx0Q29udGV4dFVyaSA9IHVyaTtcbiAgfVxuICBwcml2YXRlIF9kZWZhdWx0Q29udGV4dFVyaTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBwcml2YXRlIGxhbmd1YWdlU2VydmljZTogTGFuZ3VhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXhwb3J0U2VydmljZTogRXhwb3J0U2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJvdXRlOiBSb3V0ZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5vcHRpb25zID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHtcbiAgICAgICAgYmFzZVBhdGg6ICdjb250ZXh0cycsXG4gICAgICAgIGNvbnRleHRMaXN0RmlsZTogJ19jb250ZXh0cy5qc29uJyxcbiAgICAgICAgZGVmYXVsdENvbnRleHRVcmk6ICdfZGVmYXVsdCdcbiAgICAgIH0sXG4gICAgICB0aGlzLmNvbmZpZy5nZXRDb25maWcoJ2NvbnRleHQnKVxuICAgICk7XG5cbiAgICB0aGlzLmJhc2VVcmwgPSB0aGlzLm9wdGlvbnMudXJsID8/ICcnO1xuXG4gICAgdGhpcy5yZWFkUGFyYW1zRnJvbVJvdXRlKCk7XG5cbiAgICBpZiAodGhpcy5hdXRoU2VydmljZS5oYXNBdXRoU2VydmljZSkge1xuICAgICAgdGhpcy5hdXRoU2VydmljZS5sb2dnZWQkLnN1YnNjcmliZSgobG9nZ2VkKSA9PiB7XG4gICAgICAgIGlmIChsb2dnZWQpIHtcbiAgICAgICAgICB0aGlzLmNvbnRleHRzJC5waXBlKHNraXAoMSksIGZpcnN0KCkpLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVDb250ZXh0c0NoYW5nZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMubG9hZENvbnRleHRzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvYWRDb250ZXh0cygpO1xuICAgICAgdGhpcy5oYW5kbGVDb250ZXh0c0NoYW5nZShmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0KHBlcm1pc3Npb25zPzogc3RyaW5nW10sIGhpZGRlbj86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPENvbnRleHRzTGlzdD4ge1xuICAgIGxldCB1cmwgPSB0aGlzLmJhc2VVcmwgKyAnL2NvbnRleHRzJztcbiAgICBpZiAocGVybWlzc2lvbnMgJiYgdGhpcy5hdXRoU2VydmljZS5hdXRoZW50aWNhdGVkKSB7XG4gICAgICB1cmwgKz0gJz9wZXJtaXNzaW9uPScgKyBwZXJtaXNzaW9ucy5qb2luKCk7XG4gICAgICBpZiAoaGlkZGVuKSB7XG4gICAgICAgIHVybCArPSAnJmhpZGRlbj10cnVlJztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8Q29udGV4dHNMaXN0Pih1cmwpO1xuICB9XG5cbiAgZ2V0QnlJZChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxDb250ZXh0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5iYXNlVXJsICsgJy9jb250ZXh0cy8nICsgaWQ7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8Q29udGV4dD4odXJsKTtcbiAgfVxuXG4gIGdldERldGFpbHMoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8RGV0YWlsZWRDb250ZXh0PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJsfS9jb250ZXh0cy8ke2lkfS9kZXRhaWxzYDtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxEZXRhaWxlZENvbnRleHQ+KHVybCkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKHJlcykgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUVycm9yKHJlcywgaWQpO1xuICAgICAgICB0aHJvdyByZXM7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBnZXREZWZhdWx0KCk6IE9ic2VydmFibGU8RGV0YWlsZWRDb250ZXh0PiB7XG4gICAgaWYgKHRoaXMuYXV0aFNlcnZpY2UuYXV0aGVudGljYXRlZCkge1xuICAgICAgY29uc3QgdXJsID0gdGhpcy5iYXNlVXJsICsgJy9jb250ZXh0cy9kZWZhdWx0JztcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PERldGFpbGVkQ29udGV4dD4odXJsKS5waXBlKFxuICAgICAgICB0YXAoKGNvbnRleHQpID0+IHtcbiAgICAgICAgICB0aGlzLmRlZmF1bHRDb250ZXh0SWQkLm5leHQoY29udGV4dC5pZCk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB1cmkgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldCgnZmF2b3JpdGUuY29udGV4dC51cmknKSBhcyBzdHJpbmc7XG4gICAgICB0aGlzLmRlZmF1bHRDb250ZXh0SWQkLm5leHQodXJpKTtcbiAgICAgIHJldHVybiB0aGlzLmdldENvbnRleHRCeVVyaSh1cmkpO1xuICAgIH1cbiAgfVxuXG4gIGdldFByb2ZpbEJ5VXNlcigpOiBPYnNlcnZhYmxlPENvbnRleHRQcm9maWxzW10+IHtcbiAgICBpZiAodGhpcy5iYXNlVXJsKSB7XG4gICAgICBjb25zdCB1cmwgPSB0aGlzLmJhc2VVcmwgKyAnL3Byb2ZpbHM/JztcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PENvbnRleHRQcm9maWxzW10+KHVybCk7XG4gICAgfVxuICAgIHJldHVybiBvZihbXSk7XG4gIH1cblxuICBzZXREZWZhdWx0KGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICh0aGlzLmF1dGhTZXJ2aWNlLmF1dGhlbnRpY2F0ZWQpIHtcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMuYmFzZVVybCArICcvY29udGV4dHMvZGVmYXVsdCc7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodXJsLCB7IGRlZmF1bHRDb250ZXh0SWQ6IGlkIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldCgnZmF2b3JpdGUuY29udGV4dC51cmknLCBpZCk7XG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICBoaWRlQ29udGV4dChpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5iYXNlVXJsICsgJy9jb250ZXh0cy8nICsgaWQgKyAnL2hpZGUnO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh1cmwsIHt9KTtcbiAgfVxuXG4gIHNob3dDb250ZXh0KGlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJhc2VVcmwgKyAnL2NvbnRleHRzLycgKyBpZCArICcvc2hvdyc7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHVybCwge30pO1xuICB9XG5cbiAgZGVsZXRlKGlkOiBzdHJpbmcsIGltcG9ydGVkID0gZmFsc2UpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCBjb250ZXh0czogQ29udGV4dHNMaXN0ID0geyBvdXJzOiBbXSB9O1xuICAgIE9iamVjdC5rZXlzKHRoaXMuY29udGV4dHMkLnZhbHVlKS5mb3JFYWNoKFxuICAgICAgKGtleSkgPT5cbiAgICAgICAgKGNvbnRleHRzW2tleV0gPSB0aGlzLmNvbnRleHRzJC52YWx1ZVtrZXldLmZpbHRlcigoYykgPT4gYy5pZCAhPT0gaWQpKVxuICAgICk7XG5cbiAgICBpZiAoaW1wb3J0ZWQpIHtcbiAgICAgIHRoaXMuaW1wb3J0ZWRDb250ZXh0ID0gdGhpcy5pbXBvcnRlZENvbnRleHQuZmlsdGVyKChjKSA9PiBjLmlkICE9PSBpZCk7XG4gICAgICByZXR1cm4gb2YodGhpcy5jb250ZXh0cyQubmV4dChjb250ZXh0cykpO1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHRoaXMuYmFzZVVybCArICcvY29udGV4dHMvJyArIGlkO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPHZvaWQ+KHVybCkucGlwZShcbiAgICAgIHRhcCgocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuY29udGV4dHMkLm5leHQoY29udGV4dHMpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgY3JlYXRlKGNvbnRleHQ6IERldGFpbGVkQ29udGV4dCk6IE9ic2VydmFibGU8Q29udGV4dD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYmFzZVVybCArICcvY29udGV4dHMnO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxDb250ZXh0Pih1cmwsIGNvbnRleHQpLnBpcGUoXG4gICAgICBtYXAoKGNvbnRleHRDcmVhdGVkKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmF1dGhTZXJ2aWNlLmF1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgICBjb250ZXh0Q3JlYXRlZC5wZXJtaXNzaW9uID0gVHlwZVBlcm1pc3Npb25bVHlwZVBlcm1pc3Npb24ud3JpdGVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRleHRDcmVhdGVkLnBlcm1pc3Npb24gPSBUeXBlUGVybWlzc2lvbltUeXBlUGVybWlzc2lvbi5yZWFkXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbnRleHRzJC52YWx1ZS5vdXJzLnVuc2hpZnQoY29udGV4dENyZWF0ZWQpO1xuICAgICAgICB0aGlzLmNvbnRleHRzJC5uZXh0KHRoaXMuY29udGV4dHMkLnZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGNvbnRleHRDcmVhdGVkO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgY2xvbmUoaWQ6IHN0cmluZywgcHJvcGVydGllcyA9IHt9KTogT2JzZXJ2YWJsZTxDb250ZXh0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5iYXNlVXJsICsgJy9jb250ZXh0cy8nICsgaWQgKyAnL2Nsb25lJztcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8Q29udGV4dD4odXJsLCBwcm9wZXJ0aWVzKS5waXBlKFxuICAgICAgbWFwKChjb250ZXh0Q2xvbmVkKSA9PiB7XG4gICAgICAgIGNvbnRleHRDbG9uZWQucGVybWlzc2lvbiA9IFR5cGVQZXJtaXNzaW9uW1R5cGVQZXJtaXNzaW9uLndyaXRlXTtcbiAgICAgICAgdGhpcy5jb250ZXh0cyQudmFsdWUub3Vycy51bnNoaWZ0KGNvbnRleHRDbG9uZWQpO1xuICAgICAgICB0aGlzLmNvbnRleHRzJC5uZXh0KHRoaXMuY29udGV4dHMkLnZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGNvbnRleHRDbG9uZWQ7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICB1cGRhdGUoaWQ6IHN0cmluZywgY29udGV4dDogQ29udGV4dCk6IE9ic2VydmFibGU8Q29udGV4dD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYmFzZVVybCArICcvY29udGV4dHMvJyArIGlkO1xuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2g8Q29udGV4dD4odXJsLCBjb250ZXh0KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgYWRkVG9vbEFzc29jaWF0aW9uKGNvbnRleHRJZDogc3RyaW5nLCB0b29sSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVybH0vY29udGV4dHMvJHtjb250ZXh0SWR9L3Rvb2xzYDtcbiAgICBjb25zdCBhc3NvY2lhdGlvbiA9IHtcbiAgICAgIHRvb2xJZFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PHZvaWQ+KHVybCwgYXNzb2NpYXRpb24pO1xuICB9XG5cbiAgZGVsZXRlVG9vbEFzc29jaWF0aW9uKGNvbnRleHRJZDogc3RyaW5nLCB0b29sSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJsfS9jb250ZXh0cy8ke2NvbnRleHRJZH0vdG9vbHMvJHt0b29sSWR9YDtcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZSh1cmwpO1xuICB9XG5cbiAgZ2V0UGVybWlzc2lvbnMoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Q29udGV4dFBlcm1pc3Npb25bXT4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYmFzZVVybCArICcvY29udGV4dHMvJyArIGlkICsgJy9wZXJtaXNzaW9ucyc7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8Q29udGV4dFBlcm1pc3Npb25bXT4odXJsKTtcbiAgfVxuXG4gIGFkZFBlcm1pc3Npb25Bc3NvY2lhdGlvbihcbiAgICBjb250ZXh0SWQ6IHN0cmluZyxcbiAgICBwcm9maWw6IHN0cmluZyxcbiAgICB0eXBlOiBUeXBlUGVybWlzc2lvblxuICApOiBPYnNlcnZhYmxlPENvbnRleHRQZXJtaXNzaW9uW10+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcmx9L2NvbnRleHRzLyR7Y29udGV4dElkfS9wZXJtaXNzaW9uc2A7XG4gICAgY29uc3QgYXNzb2NpYXRpb24gPSB7XG4gICAgICBwcm9maWwsXG4gICAgICB0eXBlUGVybWlzc2lvbjogdHlwZVxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8Q29udGV4dFBlcm1pc3Npb25bXT4odXJsLCBhc3NvY2lhdGlvbikucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKHJlcykgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUVycm9yKHJlcywgdW5kZWZpbmVkLCB0cnVlKTtcbiAgICAgICAgdGhyb3cgW3Jlc107IC8vIFRPRE8gTm90IHN1cmUgYWJvdXQgdGhpcy5cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGRlbGV0ZVBlcm1pc3Npb25Bc3NvY2lhdGlvbihcbiAgICBjb250ZXh0SWQ6IHN0cmluZyxcbiAgICBwZXJtaXNzaW9uSWQ6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcmx9L2NvbnRleHRzLyR7Y29udGV4dElkfS9wZXJtaXNzaW9ucy8ke3Blcm1pc3Npb25JZH1gO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPHZvaWQ+KHVybCk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgZ2V0TG9jYWxDb250ZXh0cygpOiBPYnNlcnZhYmxlPENvbnRleHRzTGlzdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuZ2V0UGF0aCh0aGlzLm9wdGlvbnMuY29udGV4dExpc3RGaWxlKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxDb250ZXh0c0xpc3Q+KHVybCkucGlwZShcbiAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgb3VyczogcmVzIH07XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBnZXRMb2NhbENvbnRleHQodXJpOiBzdHJpbmcpOiBPYnNlcnZhYmxlPERldGFpbGVkQ29udGV4dD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuZ2V0UGF0aChgJHt1cml9Lmpzb25gKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxEZXRhaWxlZENvbnRleHQ+KHVybCkucGlwZShcbiAgICAgIG1lcmdlTWFwKChyZXMpID0+IHtcbiAgICAgICAgaWYgKCFyZXMuYmFzZSkge1xuICAgICAgICAgIHJldHVybiBvZihyZXMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVybEJhc2UgPSB0aGlzLmdldFBhdGgoYCR7cmVzLmJhc2V9Lmpzb25gKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8RGV0YWlsZWRDb250ZXh0Pih1cmxCYXNlKS5waXBlKFxuICAgICAgICAgIG1hcCgocmVzQmFzZTogRGV0YWlsZWRDb250ZXh0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXNNZXJnZSA9IHJlcztcbiAgICAgICAgICAgIHJlc01lcmdlLm1hcCA9IE9iamVjdFV0aWxzLm1lcmdlRGVlcChyZXNCYXNlLm1hcCwgcmVzLm1hcCk7XG4gICAgICAgICAgICByZXNNZXJnZS5sYXllcnMgPSAocmVzQmFzZS5sYXllcnMgfHwgW10pXG4gICAgICAgICAgICAgIC5jb25jYXQocmVzLmxheWVycyB8fCBbXSlcbiAgICAgICAgICAgICAgLnJldmVyc2UoKVxuICAgICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChsLCBpbmRleCwgc2VsZikgPT5cbiAgICAgICAgICAgICAgICAgICFsLmlkIHx8IHNlbGYuZmluZEluZGV4KChsMikgPT4gbDIuaWQgPT09IGwuaWQpID09PSBpbmRleFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5yZXZlcnNlKCk7XG4gICAgICAgICAgICByZXNNZXJnZS50b29sYmFyID0gcmVzLnRvb2xiYXIgfHwgcmVzQmFzZS50b29sYmFyO1xuICAgICAgICAgICAgcmVzTWVyZ2UubWVzc2FnZSA9IHJlcy5tZXNzYWdlIHx8IHJlc0Jhc2UubWVzc2FnZTtcbiAgICAgICAgICAgIHJlc01lcmdlLm1lc3NhZ2VzID0gcmVzLm1lc3NhZ2VzIHx8IHJlc0Jhc2UubWVzc2FnZXM7XG4gICAgICAgICAgICByZXNNZXJnZS50b29scyA9IChyZXMudG9vbHMgfHwgW10pXG4gICAgICAgICAgICAgIC5jb25jYXQocmVzQmFzZS50b29scyB8fCBbXSlcbiAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAodCwgaW5kZXgsIHNlbGYpID0+XG4gICAgICAgICAgICAgICAgICBzZWxmLmZpbmRJbmRleCgodDIpID0+IHQyLm5hbWUgPT09IHQubmFtZSkgPT09IGluZGV4XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gcmVzTWVyZ2U7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVyciwgdXJpKTtcbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKChlcnIyKSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyMiwgdXJpKTtcbiAgICAgICAgdGhyb3cgZXJyMjtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGxvYWRDb250ZXh0cyhwZXJtaXNzaW9ucz86IHN0cmluZ1tdLCBoaWRkZW4/OiBib29sZWFuKSB7XG4gICAgbGV0IHJlcXVlc3Q7XG4gICAgaWYgKHRoaXMuYmFzZVVybCkge1xuICAgICAgcmVxdWVzdCA9IHRoaXMuZ2V0KHBlcm1pc3Npb25zLCBoaWRkZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0ID0gdGhpcy5nZXRMb2NhbENvbnRleHRzKCk7XG4gICAgfVxuICAgIHJlcXVlc3Quc3Vic2NyaWJlKChjb250ZXh0cykgPT4ge1xuICAgICAgY29udGV4dHMub3VycyA9IHRoaXMuaW1wb3J0ZWRDb250ZXh0LmNvbmNhdChjb250ZXh0cy5vdXJzKTtcbiAgICAgIHRoaXMuY29udGV4dHMkLm5leHQoY29udGV4dHMpO1xuICAgIH0pO1xuICB9XG5cbiAgbG9hZERlZmF1bHRDb250ZXh0KCkge1xuICAgIGNvbnN0IGxvYWRGY3QgPSAoZGlyZWN0ID0gZmFsc2UpID0+IHtcbiAgICAgIGlmICghZGlyZWN0ICYmIHRoaXMuYmFzZVVybCAmJiB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgdGhpcy5nZXREZWZhdWx0KCkuc3Vic2NyaWJlKFxuICAgICAgICAgIChfY29udGV4dDogRGV0YWlsZWRDb250ZXh0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRDb250ZXh0VXJpID0gX2NvbnRleHQudXJpO1xuICAgICAgICAgICAgdGhpcy5hZGRDb250ZXh0VG9MaXN0KF9jb250ZXh0KTtcbiAgICAgICAgICAgIHRoaXMuc2V0Q29udGV4dChfY29udGV4dCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRDb250ZXh0SWQkLm5leHQodW5kZWZpbmVkKTtcbiAgICAgICAgICAgIHRoaXMubG9hZENvbnRleHQodGhpcy5kZWZhdWx0Q29udGV4dFVyaSk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2FkQ29udGV4dCh0aGlzLmRlZmF1bHRDb250ZXh0VXJpKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKHRoaXMucm91dGUgJiYgdGhpcy5yb3V0ZS5vcHRpb25zLmNvbnRleHRLZXkpIHtcbiAgICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMucGlwZShkZWJvdW5jZVRpbWUoMTAwKSkuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgICAgY29uc3QgY29udGV4dFBhcmFtID0gcGFyYW1zW3RoaXMucm91dGUub3B0aW9ucy5jb250ZXh0S2V5IGFzIHN0cmluZ107XG4gICAgICAgIGxldCBkaXJlY3QgPSBmYWxzZTtcbiAgICAgICAgaWYgKGNvbnRleHRQYXJhbSkge1xuICAgICAgICAgIHRoaXMuZGVmYXVsdENvbnRleHRVcmkgPSBjb250ZXh0UGFyYW07XG4gICAgICAgICAgZGlyZWN0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBsb2FkRmN0KGRpcmVjdCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9hZEZjdCgpO1xuICAgIH1cbiAgfVxuXG4gIGxvYWRDb250ZXh0KHVyaTogc3RyaW5nKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuY29udGV4dCQudmFsdWU7XG5cbiAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0LnVyaSA9PT0gdXJpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5nZXRDb250ZXh0QnlVcmkodXJpKVxuICAgICAgLnBpcGUoZmlyc3QoKSlcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIChfY29udGV4dDogRGV0YWlsZWRDb250ZXh0KSA9PiB7XG4gICAgICAgICAgdGhpcy5hZGRDb250ZXh0VG9MaXN0KF9jb250ZXh0KTtcbiAgICAgICAgICB0aGlzLnNldENvbnRleHQoX2NvbnRleHQpO1xuICAgICAgICB9LFxuICAgICAgICAoZXJyKSA9PiB7XG4gICAgICAgICAgaWYgKHVyaSAhPT0gdGhpcy5vcHRpb25zLmRlZmF1bHRDb250ZXh0VXJpKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRDb250ZXh0KHRoaXMub3B0aW9ucy5kZWZhdWx0Q29udGV4dFVyaSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgc2V0Q29udGV4dChjb250ZXh0OiBEZXRhaWxlZENvbnRleHQpIHtcbiAgICB0aGlzLmhhbmRsZUNvbnRleHRNZXNzYWdlKGNvbnRleHQpO1xuICAgIGNvbnN0IGN1cnJlbnRDb250ZXh0ID0gdGhpcy5jb250ZXh0JC52YWx1ZTtcbiAgICBpZiAoY3VycmVudENvbnRleHQgJiYgY29udGV4dCAmJiBjb250ZXh0LmlkID09PSBjdXJyZW50Q29udGV4dC5pZCkge1xuICAgICAgaWYgKGNvbnRleHQubWFwLnZpZXcua2VlcEN1cnJlbnRWaWV3ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29udGV4dC5tYXAudmlldy5rZWVwQ3VycmVudFZpZXcgPSB0cnVlO1xuICAgICAgfVxuICAgICAgdGhpcy5jb250ZXh0JC5uZXh0KGNvbnRleHQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghY29udGV4dC5tYXApIHtcbiAgICAgIGNvbnRleHQubWFwID0geyB2aWV3OiB7fSB9O1xuICAgIH1cblxuICAgIE9iamVjdC5hc3NpZ24oY29udGV4dC5tYXAudmlldywgdGhpcy5tYXBWaWV3RnJvbVJvdXRlKTtcblxuICAgIHRoaXMuY29udGV4dCQubmV4dChjb250ZXh0KTtcbiAgfVxuXG4gIGxvYWRFZGl0ZWRDb250ZXh0KHVyaTogc3RyaW5nKSB7XG4gICAgdGhpcy5nZXRDb250ZXh0QnlVcmkodXJpKS5zdWJzY3JpYmUoKF9jb250ZXh0OiBEZXRhaWxlZENvbnRleHQpID0+IHtcbiAgICAgIHRoaXMuc2V0RWRpdGVkQ29udGV4dChfY29udGV4dCk7XG4gICAgfSk7XG4gIH1cblxuICBzZXRFZGl0ZWRDb250ZXh0KGNvbnRleHQ6IERldGFpbGVkQ29udGV4dCkge1xuICAgIHRoaXMuZWRpdGVkQ29udGV4dCQubmV4dChjb250ZXh0KTtcbiAgfVxuXG4gIGdldENvbnRleHRGcm9tTWFwKGlnb01hcDogSWdvTWFwLCBlbXB0eT86IGJvb2xlYW4pOiBEZXRhaWxlZENvbnRleHQge1xuICAgIGNvbnN0IHZpZXcgPSBpZ29NYXAub2wuZ2V0VmlldygpO1xuICAgIGNvbnN0IHByb2ogPSB2aWV3LmdldFByb2plY3Rpb24oKS5nZXRDb2RlKCk7XG4gICAgY29uc3QgY2VudGVyOiBhbnkgPSBuZXcgb2xQb2ludCh2aWV3LmdldENlbnRlcigpKS50cmFuc2Zvcm0oXG4gICAgICBwcm9qLFxuICAgICAgJ0VQU0c6NDMyNidcbiAgICApO1xuXG4gICAgY29uc3QgY29udGV4dDogRGV0YWlsZWRDb250ZXh0ID0ge1xuICAgICAgdXJpOiB1dWlkKCksXG4gICAgICB0aXRsZTogJycsXG4gICAgICBzY29wZTogJ3ByaXZhdGUnLFxuICAgICAgbWFwOiB7XG4gICAgICAgIHZpZXc6IHtcbiAgICAgICAgICBjZW50ZXI6IGNlbnRlci5nZXRDb29yZGluYXRlcygpLFxuICAgICAgICAgIHpvb206IHZpZXcuZ2V0Wm9vbSgpLFxuICAgICAgICAgIHByb2plY3Rpb246IHByb2osXG4gICAgICAgICAgbWF4Wm9vbU9uRXh0ZW50OiBpZ29NYXAudmlld0NvbnRyb2xsZXIubWF4Wm9vbU9uRXh0ZW50XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBsYXllcnM6IFtdLFxuICAgICAgdG9vbHM6IFtdXG4gICAgfTtcblxuICAgIGxldCBsYXllcnMgPSBbXTtcbiAgICBpZiAoZW1wdHkgPT09IHRydWUpIHtcbiAgICAgIGxheWVycyA9IGlnb01hcC5sYXllcnMkXG4gICAgICAgIC5nZXRWYWx1ZSgpXG4gICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgKGxheSkgPT5cbiAgICAgICAgICAgIGxheS5iYXNlTGF5ZXIgPT09IHRydWUgfHxcbiAgICAgICAgICAgIGxheS5vcHRpb25zLmlkID09PSAnc2VhcmNoUG9pbnRlclN1bW1hcnlJZCdcbiAgICAgICAgKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gYS56SW5kZXggLSBiLnpJbmRleCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxheWVycyA9IGlnb01hcC5sYXllcnMkXG4gICAgICAgIC5nZXRWYWx1ZSgpXG4gICAgICAgIC5maWx0ZXIoKGxheSkgPT4gIWxheS5pZC5pbmNsdWRlcygnV2ZzV29ya3NwYWNlVGFibGVEZXN0JykpXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLnpJbmRleCAtIGIuekluZGV4KTtcbiAgICB9XG5cbiAgICBsZXQgaSA9IDA7XG4gICAgZm9yIChjb25zdCBsYXllciBvZiBsYXllcnMpIHtcbiAgICAgIGNvbnN0IGxheWVyT3B0aW9uczogQW55TGF5ZXJPcHRpb25zID0ge1xuICAgICAgICB0aXRsZTogbGF5ZXIub3B0aW9ucy50aXRsZSxcbiAgICAgICAgekluZGV4OiArK2ksXG4gICAgICAgIHZpc2libGU6IGxheWVyLnZpc2libGUsXG4gICAgICAgIHNlY3VyaXR5OiBsYXllci5vcHRpb25zLnNlY3VyaXR5LFxuICAgICAgICBvcGFjaXR5OiBsYXllci5vcGFjaXR5XG4gICAgICB9O1xuICAgICAgY29uc3Qgb3B0cyA9IHtcbiAgICAgICAgaWQ6IGxheWVyLm9wdGlvbnMuaWQgPyBTdHJpbmcobGF5ZXIub3B0aW9ucy5pZCkgOiB1bmRlZmluZWQsXG4gICAgICAgIGxheWVyT3B0aW9ucyxcbiAgICAgICAgc291cmNlT3B0aW9uczoge1xuICAgICAgICAgIHR5cGU6IGxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy50eXBlLFxuICAgICAgICAgIHBhcmFtczogbGF5ZXIuZGF0YVNvdXJjZS5vcHRpb25zLnBhcmFtcyxcbiAgICAgICAgICB1cmw6IGxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucy51cmwsXG4gICAgICAgICAgcXVlcnlhYmxlOiBsYXllci5xdWVyeWFibGVcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGlmIChvcHRzLnNvdXJjZU9wdGlvbnMudHlwZSkge1xuICAgICAgICBjb250ZXh0LmxheWVycy5wdXNoKG9wdHMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnRleHQudG9vbHMgPSB0aGlzLnRvb2xzLm1hcCgodG9vbCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IFN0cmluZyh0b29sLmlkKSxcbiAgICAgICAgZ2xvYmFsOiB0b29sLmdsb2JhbFxuICAgICAgfSBhcyBUb29sO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvbnRleHQ7XG4gIH1cblxuICBnZXRDb250ZXh0RnJvbUxheWVycyhcbiAgICBpZ29NYXA6IElnb01hcCxcbiAgICBsYXllcnM6IExheWVyW10sXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGtlZXBDdXJyZW50Vmlldz86IGJvb2xlYW5cbiAgKTogRGV0YWlsZWRDb250ZXh0IHtcbiAgICBjb25zdCBjdXJyZW50Q29udGV4dCA9IHRoaXMuY29udGV4dCQuZ2V0VmFsdWUoKTtcbiAgICBjb25zdCB2aWV3ID0gaWdvTWFwLm9sLmdldFZpZXcoKTtcbiAgICBjb25zdCBwcm9qID0gdmlldy5nZXRQcm9qZWN0aW9uKCkuZ2V0Q29kZSgpO1xuICAgIGNvbnN0IGNlbnRlcjogYW55ID0gbmV3IG9sUG9pbnQodmlldy5nZXRDZW50ZXIoKSkudHJhbnNmb3JtKFxuICAgICAgcHJvaixcbiAgICAgICdFUFNHOjQzMjYnXG4gICAgKTtcblxuICAgIGNvbnN0IGNvbnRleHQ6IERldGFpbGVkQ29udGV4dCA9IHtcbiAgICAgIHVyaTogbmFtZSxcbiAgICAgIHRpdGxlOiBuYW1lLFxuICAgICAgbWFwOiB7XG4gICAgICAgIHZpZXc6IHtcbiAgICAgICAgICBjZW50ZXI6IGNlbnRlci5nZXRDb29yZGluYXRlcygpLFxuICAgICAgICAgIHpvb206IHZpZXcuZ2V0Wm9vbSgpLFxuICAgICAgICAgIHByb2plY3Rpb246IHByb2osXG4gICAgICAgICAga2VlcEN1cnJlbnRWaWV3XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBsYXllcnM6IFtdLFxuICAgICAgdG9vbGJhcjogW10sXG4gICAgICB0b29sczogW10sXG4gICAgICBleHRyYUZlYXR1cmVzOiBbXVxuICAgIH07XG5cbiAgICBjb25zdCBjdXJyZW50TGF5ZXJzID0gaWdvTWFwLmxheWVycyQuZ2V0VmFsdWUoKTtcbiAgICBjb250ZXh0LmxheWVycyA9IGN1cnJlbnRMYXllcnNcbiAgICAgIC5maWx0ZXIoKGwpID0+IGwuYmFzZUxheWVyKVxuICAgICAgLm1hcCgobCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGJhc2VMYXllcjogdHJ1ZSxcbiAgICAgICAgICBzb3VyY2VPcHRpb25zOiBsLm9wdGlvbnMuc291cmNlT3B0aW9ucyxcbiAgICAgICAgICB0aXRsZTogbC5vcHRpb25zLnRpdGxlLFxuICAgICAgICAgIHZpc2libGU6IGwudmlzaWJsZVxuICAgICAgICB9O1xuICAgICAgfSk7XG5cbiAgICBsYXllcnMuZm9yRWFjaCgobGF5ZXIpID0+IHtcbiAgICAgIC8vIERvIG5vdCBzZWVtIHRvIHdvcmsgcHJvcGVybHkuIGxheWVyRm91bmQgaXMgYWx3YXlzIHVuZGVmaW5lZC5cbiAgICAgIGNvbnN0IGxheWVyRm91bmQgPSBjdXJyZW50Q29udGV4dC5sYXllcnMuZmluZCgoY29udGV4dExheWVyKSA9PiB7XG4gICAgICAgIGNvbnN0IHNvdXJjZSA9IGNvbnRleHRMYXllci5zb3VyY2U7XG4gICAgICAgIHJldHVybiBzb3VyY2UgJiYgbGF5ZXIuaWQgPT09IHNvdXJjZS5pZCAmJiAhY29udGV4dExheWVyLmJhc2VMYXllcjtcbiAgICAgIH0pO1xuICAgICAgaWYgKGxheWVyRm91bmQpIHtcbiAgICAgICAgbGV0IGxheWVyRm91bmRBcyA9IGxheWVyRm91bmQgYXNcbiAgICAgICAgICB8IFZlY3RvckxheWVyT3B0aW9uc1xuICAgICAgICAgIHwgVmVjdG9yVGlsZUxheWVyT3B0aW9ucztcbiAgICAgICAgbGV0IGxheWVyU3R5bGUgPSBsYXllckZvdW5kQXMuc3R5bGU7XG4gICAgICAgIGlmIChsYXllckZvdW5kQXMuaWdvU3R5bGU/LnN0eWxlQnlBdHRyaWJ1dGUpIHtcbiAgICAgICAgICBsYXllclN0eWxlID0gdW5kZWZpbmVkO1xuICAgICAgICB9IGVsc2UgaWYgKGxheWVyRm91bmRBcy5pZ29TdHlsZT8uY2x1c3RlckJhc2VTdHlsZSkge1xuICAgICAgICAgIGxheWVyU3R5bGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgZGVsZXRlIGxheWVyRm91bmQuc291cmNlT3B0aW9uc1tgc291cmNlYF07XG4gICAgICAgICAgZGVsZXRlIGxheWVyRm91bmQuc291cmNlT3B0aW9uc1tgZm9ybWF0YF07XG4gICAgICAgIH1cbiAgICAgICAgZGVsZXRlIGxheWVyRm91bmQuc291cmNlO1xuICAgICAgICBjb25zdCBvcHRzOiBBbnlMYXllck9wdGlvbnMgPSB7XG4gICAgICAgICAgLi4ubGF5ZXJGb3VuZCxcbiAgICAgICAgICB0aXRsZTogbGF5ZXIub3B0aW9ucy50aXRsZSxcbiAgICAgICAgICB6SW5kZXg6IGxheWVyLnpJbmRleCxcbiAgICAgICAgICBzdHlsZTogbGF5ZXJTdHlsZSxcbiAgICAgICAgICB2aXNpYmxlOiBsYXllci52aXNpYmxlLFxuICAgICAgICAgIG9wYWNpdHk6IGxheWVyLm9wYWNpdHlcbiAgICAgICAgfTtcbiAgICAgICAgY29udGV4dC5sYXllcnMucHVzaChvcHRzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghKGxheWVyLm9sLmdldFNvdXJjZSgpIGluc3RhbmNlb2Ygb2xWZWN0b3JTb3VyY2UpKSB7XG4gICAgICAgICAgY29uc3QgY2F0YWxvZ0xheWVyID0gbGF5ZXIub3B0aW9ucztcbiAgICAgICAgICBjYXRhbG9nTGF5ZXIuekluZGV4ID0gbGF5ZXIuekluZGV4O1xuICAgICAgICAgIChjYXRhbG9nTGF5ZXIudmlzaWJsZSA9IGxheWVyLnZpc2libGUpLFxuICAgICAgICAgICAgKGNhdGFsb2dMYXllci5vcGFjaXR5ID0gbGF5ZXIub3BhY2l0eSk7XG4gICAgICAgICAgZGVsZXRlIGNhdGFsb2dMYXllci5zb3VyY2U7XG4gICAgICAgICAgY29udGV4dC5sYXllcnMucHVzaChjYXRhbG9nTGF5ZXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGV4dHJhRmVhdHVyZXMgPSB0aGlzLmdldEV4dHJhRmVhdHVyZXMobGF5ZXIpO1xuICAgICAgICAgIGV4dHJhRmVhdHVyZXMubmFtZSA9IGxheWVyLm9wdGlvbnMudGl0bGU7XG4gICAgICAgICAgZXh0cmFGZWF0dXJlcy5vcGFjaXR5ID0gbGF5ZXIub3BhY2l0eTtcbiAgICAgICAgICBleHRyYUZlYXR1cmVzLnZpc2libGUgPSBsYXllci52aXNpYmxlO1xuICAgICAgICAgIGNvbnRleHQuZXh0cmFGZWF0dXJlcy5wdXNoKGV4dHJhRmVhdHVyZXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb250ZXh0LnRvb2xiYXIgPSB0aGlzLnRvb2xiYXI7XG4gICAgY29udGV4dC50b29scyA9IHRoaXMudG9vbHM7XG5cbiAgICByZXR1cm4gY29udGV4dDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXh0cmFGZWF0dXJlcyhsYXllcjogTGF5ZXIpOiBFeHRyYUZlYXR1cmVzIHtcbiAgICBjb25zdCB3cml0ZXIgPSBuZXcgR2VvSlNPTigpO1xuICAgIGxldCBvbEZlYXR1cmVzOiBGZWF0dXJlPEdlb21ldHJ5PltdO1xuICAgIGlmIChsYXllci5vbC5nZXRTb3VyY2UoKSBpbnN0YW5jZW9mIENsdXN0ZXIpIHtcbiAgICAgIGNvbnN0IGNsdXN0ZXJTb3VyY2UgPSBsYXllci5vbC5nZXRTb3VyY2UoKSBhcyBDbHVzdGVyO1xuICAgICAgb2xGZWF0dXJlcyA9IGNsdXN0ZXJTb3VyY2UuZ2V0RmVhdHVyZXMoKTtcbiAgICAgIG9sRmVhdHVyZXMgPSAob2xGZWF0dXJlcyBhcyBhbnkpLmZsYXRNYXAoKGNsdXN0ZXI6IGFueSkgPT5cbiAgICAgICAgY2x1c3Rlci5nZXQoJ2ZlYXR1cmVzJylcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNvdXJjZSA9IGxheWVyLm9sLmdldFNvdXJjZSgpIGFzIG9sVmVjdG9yU291cmNlO1xuICAgICAgb2xGZWF0dXJlcyA9IHNvdXJjZS5nZXRGZWF0dXJlcygpO1xuICAgIH1cbiAgICBjb25zdCBjbGVhbmVkT2xGZWF0dXJlcyA9IHRoaXMuZXhwb3J0U2VydmljZS5nZW5lcmF0ZUZlYXR1cmUoXG4gICAgICBvbEZlYXR1cmVzLFxuICAgICAgJ0dlb0pTT04nLFxuICAgICAgJ19mZWF0dXJlU3RvcmUnXG4gICAgKTtcbiAgICBjb25zdCBmZWF0dXJlcyA9IHdyaXRlci53cml0ZUZlYXR1cmVzKGNsZWFuZWRPbEZlYXR1cmVzLCB7XG4gICAgICBkYXRhUHJvamVjdGlvbjogJ0VQU0c6NDMyNicsXG4gICAgICBmZWF0dXJlUHJvamVjdGlvbjogJ0VQU0c6Mzg1NydcbiAgICB9KTtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShmZWF0dXJlcyk7XG4gIH1cblxuICBzZXRUb29scyh0b29sczogVG9vbFtdKSB7XG4gICAgdGhpcy50b29scyA9IHRvb2xzO1xuICB9XG5cbiAgc2V0VG9vbGJhcih0b29sYmFyOiBzdHJpbmdbXSkge1xuICAgIHRoaXMudG9vbGJhciA9IHRvb2xiYXI7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNvbnRleHRNZXNzYWdlKGNvbnRleHQ6IERldGFpbGVkQ29udGV4dCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMuY29udGV4dCQudmFsdWUgJiZcbiAgICAgIGNvbnRleHQudXJpICYmXG4gICAgICB0aGlzLmNvbnRleHQkLnZhbHVlLnVyaSAhPT0gY29udGV4dC51cmlcbiAgICApIHtcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UucmVtb3ZlQWxsQXJlTm90RXJyb3IoKTtcbiAgICB9XG5cbiAgICBjb250ZXh0Lm1lc3NhZ2VzID0gY29udGV4dC5tZXNzYWdlcyA/IGNvbnRleHQubWVzc2FnZXMgOiBbXTtcbiAgICBjb250ZXh0Lm1lc3NhZ2VzLnB1c2goY29udGV4dC5tZXNzYWdlKTtcbiAgICBjb250ZXh0Lm1lc3NhZ2VzLm1hcCgobWVzc2FnZSkgPT4ge1xuICAgICAgaWYgKG1lc3NhZ2UpIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5tZXNzYWdlKG1lc3NhZ2UgYXMgTWVzc2FnZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldENvbnRleHRCeVVyaSh1cmk6IHN0cmluZyk6IE9ic2VydmFibGU8RGV0YWlsZWRDb250ZXh0PiB7XG4gICAgaWYgKHRoaXMuYmFzZVVybCkge1xuICAgICAgbGV0IGNvbnRleHRUb0xvYWQ7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLmNvbnRleHRzJC52YWx1ZSkpIHtcbiAgICAgICAgY29udGV4dFRvTG9hZCA9IHRoaXMuY29udGV4dHMkLnZhbHVlW2tleV0uZmluZCgoYykgPT4ge1xuICAgICAgICAgIHJldHVybiBjLnVyaSA9PT0gdXJpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGNvbnRleHRUb0xvYWQpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY29udGV4dFRvTG9hZCAmJiBjb250ZXh0VG9Mb2FkLmltcG9ydGVkKSB7XG4gICAgICAgIHJldHVybiBvZihjb250ZXh0VG9Mb2FkKTtcbiAgICAgIH1cblxuICAgICAgLy8gVE9ETyA6IHVzZSBhbHdheXMgaWQgb3IgdXJpXG4gICAgICBjb25zdCBpZCA9IGNvbnRleHRUb0xvYWQgPyBjb250ZXh0VG9Mb2FkLmlkIDogdXJpO1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0RGV0YWlscyhpZCk7XG4gICAgfVxuXG4gICAgY29uc3QgaW1wb3J0ZWRDb250ZXh0ID0gdGhpcy5jb250ZXh0cyQudmFsdWUub3Vycy5maW5kKChjdXJyZW50Q29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIGN1cnJlbnRDb250ZXh0LnVyaSA9PT0gdXJpICYmIGN1cnJlbnRDb250ZXh0LmltcG9ydGVkID09PSB0cnVlO1xuICAgIH0pO1xuXG4gICAgaWYgKGltcG9ydGVkQ29udGV4dCkge1xuICAgICAgcmV0dXJuIG9mKGltcG9ydGVkQ29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmdldExvY2FsQ29udGV4dCh1cmkpO1xuICAgIH1cbiAgfVxuXG4gIGdldENvbnRleHRMYXllcnMoaWdvTWFwOiBJZ29NYXApIHtcbiAgICBjb25zdCBsYXllcnM6IExheWVyW10gPSBbXTtcbiAgICBjb25zdCBtYXBMYXllcnMgPSBpZ29NYXAubGF5ZXJzJC5nZXRWYWx1ZSgpO1xuICAgIG1hcExheWVycy5mb3JFYWNoKChsYXllcikgPT4ge1xuICAgICAgaWYgKCFsYXllci5iYXNlTGF5ZXIgJiYgbGF5ZXIub3B0aW9ucy5pZCAhPT0gJ3NlYXJjaFBvaW50ZXJTdW1tYXJ5SWQnKSB7XG4gICAgICAgIGxheWVycy5wdXNoKGxheWVyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbGF5ZXJzO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkUGFyYW1zRnJvbVJvdXRlKCkge1xuICAgIGlmICghdGhpcy5yb3V0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgIGNvbnN0IGNlbnRlcktleSA9IHRoaXMucm91dGUub3B0aW9ucy5jZW50ZXJLZXk7XG4gICAgICBpZiAoY2VudGVyS2V5ICYmIHBhcmFtc1tjZW50ZXJLZXkgYXMgc3RyaW5nXSkge1xuICAgICAgICBjb25zdCBjZW50ZXJQYXJhbXMgPSBwYXJhbXNbY2VudGVyS2V5IGFzIHN0cmluZ107XG4gICAgICAgIHRoaXMubWFwVmlld0Zyb21Sb3V0ZS5jZW50ZXIgPSBjZW50ZXJQYXJhbXMuc3BsaXQoJywnKS5tYXAoTnVtYmVyKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJvamVjdGlvbktleSA9IHRoaXMucm91dGUub3B0aW9ucy5wcm9qZWN0aW9uS2V5O1xuICAgICAgaWYgKHByb2plY3Rpb25LZXkgJiYgcGFyYW1zW3Byb2plY3Rpb25LZXkgYXMgc3RyaW5nXSkge1xuICAgICAgICBjb25zdCBwcm9qZWN0aW9uUGFyYW0gPSBwYXJhbXNbcHJvamVjdGlvbktleSBhcyBzdHJpbmddO1xuICAgICAgICB0aGlzLm1hcFZpZXdGcm9tUm91dGUucHJvamVjdGlvbiA9IHByb2plY3Rpb25QYXJhbTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgem9vbUtleSA9IHRoaXMucm91dGUub3B0aW9ucy56b29tS2V5O1xuICAgICAgaWYgKHpvb21LZXkgJiYgcGFyYW1zW3pvb21LZXkgYXMgc3RyaW5nXSkge1xuICAgICAgICBjb25zdCB6b29tUGFyYW0gPSBwYXJhbXNbem9vbUtleSBhcyBzdHJpbmddO1xuICAgICAgICB0aGlzLm1hcFZpZXdGcm9tUm91dGUuem9vbSA9IE51bWJlcih6b29tUGFyYW0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXRoKGZpbGU6IHN0cmluZykge1xuICAgIGNvbnN0IGJhc2VQYXRoID0gdGhpcy5vcHRpb25zLmJhc2VQYXRoLnJlcGxhY2UoL1xcLyQvLCAnJyk7XG5cbiAgICByZXR1cm4gYCR7YmFzZVBhdGh9LyR7ZmlsZX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihcbiAgICBlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UsXG4gICAgdXJpOiBzdHJpbmcsXG4gICAgcGVybWlzc2lvbkVycm9yPzogYm9vbGVhblxuICApIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jb250ZXh0cyQudmFsdWUub3Vycy5maW5kKChvYmopID0+IG9iai51cmkgPT09IHVyaSk7XG4gICAgY29uc3QgdGl0bGVDb250ZXh0ID0gY29udGV4dCA/IGNvbnRleHQudGl0bGUgOiB1cmk7XG4gICAgZXJyb3IuZXJyb3IudGl0bGUgPSB0aGlzLmxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5pbnZhbGlkLnRpdGxlJ1xuICAgICk7XG5cbiAgICBlcnJvci5lcnJvci5tZXNzYWdlID0gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAnaWdvLmNvbnRleHQuY29udGV4dE1hbmFnZXIuaW52YWxpZC50ZXh0JyxcbiAgICAgIHsgdmFsdWU6IHRpdGxlQ29udGV4dCB9XG4gICAgKTtcblxuICAgIGVycm9yLmVycm9yLnRvRGlzcGxheSA9IHRydWU7XG5cbiAgICBpZiAocGVybWlzc2lvbkVycm9yKSB7XG4gICAgICBlcnJvci5lcnJvci50aXRsZSA9IHRoaXMubGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAnaWdvLmNvbnRleHQuY29udGV4dE1hbmFnZXIuZXJyb3JzLmFkZFBlcm1pc3Npb25UaXRsZSdcbiAgICAgICk7XG4gICAgICBlcnJvci5lcnJvci5tZXNzYWdlID0gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICdpZ28uY29udGV4dC5jb250ZXh0TWFuYWdlci5lcnJvcnMuYWRkUGVybWlzc2lvbidcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuZXJyb3IoXG4gICAgICAnaWdvLmNvbnRleHQuY29udGV4dE1hbmFnZXIuZXJyb3JzLmFkZFBlcm1pc3Npb24nLFxuICAgICAgJ2lnby5jb250ZXh0LmNvbnRleHRNYW5hZ2VyLmVycm9ycy5hZGRQZXJtaXNzaW9uVGl0bGUnXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ29udGV4dHNDaGFuZ2Uoa2VlcEN1cnJlbnRDb250ZXh0ID0gdHJ1ZSkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNvbnRleHQkLnZhbHVlO1xuICAgIGNvbnN0IGVkaXRlZENvbnRleHQgPSB0aGlzLmVkaXRlZENvbnRleHQkLnZhbHVlO1xuICAgIGlmICghY29udGV4dCB8fCBjb250ZXh0LnVyaSA9PT0gdGhpcy5vcHRpb25zLmRlZmF1bHRDb250ZXh0VXJpKSB7XG4gICAgICBrZWVwQ3VycmVudENvbnRleHQgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFrZWVwQ3VycmVudENvbnRleHQgfHwgIXRoaXMuZmluZENvbnRleHQoY29udGV4dCkpIHtcbiAgICAgIHRoaXMuZGVmYXVsdENvbnRleHRVcmkgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmxvYWREZWZhdWx0Q29udGV4dCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdldENvbnRleHRCeVVyaShjb250ZXh0LnVyaSlcbiAgICAgICAgLnBpcGUoZmlyc3QoKSlcbiAgICAgICAgLnN1YnNjcmliZSgobmV3Q29udGV4dDogRGV0YWlsZWRDb250ZXh0KSA9PiB7XG4gICAgICAgICAgdGhpcy50b29sc0NoYW5nZWQkLm5leHQobmV3Q29udGV4dCk7XG4gICAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5iYXNlVXJsICYmIHRoaXMuYXV0aFNlcnZpY2UuYXV0aGVudGljYXRlZCkge1xuICAgICAgICB0aGlzLmdldERlZmF1bHQoKS5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgZWRpdGVkRm91bmQgPSB0aGlzLmZpbmRDb250ZXh0KGVkaXRlZENvbnRleHQpO1xuICAgIGlmICghZWRpdGVkRm91bmQgfHwgZWRpdGVkRm91bmQucGVybWlzc2lvbiAhPT0gJ3dyaXRlJykge1xuICAgICAgdGhpcy5zZXRFZGl0ZWRDb250ZXh0KHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRDb250ZXh0VG9MaXN0KGNvbnRleHQ6IENvbnRleHQpIHtcbiAgICBjb25zdCBjb250ZXh0Rm91bmQgPSB0aGlzLmZpbmRDb250ZXh0KGNvbnRleHQpO1xuICAgIGlmICghY29udGV4dEZvdW5kKSB7XG4gICAgICBjb25zdCBjb250ZXh0U2ltcGxpZmllID0ge1xuICAgICAgICBpZDogY29udGV4dC5pZCxcbiAgICAgICAgdXJpOiBjb250ZXh0LnVyaSxcbiAgICAgICAgdGl0bGU6IGNvbnRleHQudGl0bGUsXG4gICAgICAgIHNjb3BlOiBjb250ZXh0LnNjb3BlLFxuICAgICAgICBwZXJtaXNzaW9uOiBUeXBlUGVybWlzc2lvbltUeXBlUGVybWlzc2lvbi5yZWFkXVxuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMuY29udGV4dHMkLnZhbHVlICYmIHRoaXMuY29udGV4dHMkLnZhbHVlLnB1YmxpYykge1xuICAgICAgICB0aGlzLmNvbnRleHRzJC52YWx1ZS5wdWJsaWMucHVzaChjb250ZXh0U2ltcGxpZmllKTtcbiAgICAgICAgdGhpcy5jb250ZXh0cyQubmV4dCh0aGlzLmNvbnRleHRzJC52YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmaW5kQ29udGV4dChjb250ZXh0OiBDb250ZXh0KSB7XG4gICAgaWYgKCFjb250ZXh0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGV4dHMgPSB0aGlzLmNvbnRleHRzJC52YWx1ZTtcbiAgICBsZXQgZm91bmQ7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoY29udGV4dHMpKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGNvbnRleHRzW2tleV07XG4gICAgICBmb3VuZCA9IHZhbHVlLmZpbmQoXG4gICAgICAgIChjKSA9PlxuICAgICAgICAgIChjb250ZXh0LmlkICYmIGMuaWQgPT09IGNvbnRleHQuaWQpIHx8XG4gICAgICAgICAgKGNvbnRleHQudXJpICYmIGMudXJpID09PSBjb250ZXh0LnVyaSlcbiAgICAgICk7XG4gICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvdW5kO1xuICB9XG59XG4iXX0=
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { HttpClientModule } from '@angular/common/http';
|
|
1
2
|
import { Directive, Input, Optional } from '@angular/core';
|
|
2
|
-
import { ConfigService
|
|
3
|
+
import { ConfigService } from '@igo2/core/config';
|
|
4
|
+
import { RouteService } from '@igo2/core/route';
|
|
3
5
|
import { LayerService, MapBrowserComponent, StyleListService, StyleService } from '@igo2/geo';
|
|
4
6
|
import { ObjectUtils } from '@igo2/utils';
|
|
5
7
|
import { merge } from 'rxjs';
|
|
@@ -9,7 +11,8 @@ import { ContextService } from './context.service';
|
|
|
9
11
|
import * as i0 from "@angular/core";
|
|
10
12
|
import * as i1 from "@igo2/geo";
|
|
11
13
|
import * as i2 from "./context.service";
|
|
12
|
-
import * as i3 from "@igo2/core";
|
|
14
|
+
import * as i3 from "@igo2/core/config";
|
|
15
|
+
import * as i4 from "@igo2/core/route";
|
|
13
16
|
export class LayerContextDirective {
|
|
14
17
|
component;
|
|
15
18
|
contextService;
|
|
@@ -144,17 +147,19 @@ export class LayerContextDirective {
|
|
|
144
147
|
}
|
|
145
148
|
return visible;
|
|
146
149
|
}
|
|
147
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
148
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
150
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: LayerContextDirective, deps: [{ token: i1.MapBrowserComponent }, { token: i2.ContextService }, { token: i1.LayerService }, { token: i3.ConfigService }, { token: i1.StyleListService }, { token: i1.StyleService }, { token: i4.RouteService, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
151
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.9", type: LayerContextDirective, isStandalone: true, selector: "[igoLayerContext]", inputs: { removeLayersOnContextChange: "removeLayersOnContextChange" }, providers: [HttpClientModule], ngImport: i0 });
|
|
149
152
|
}
|
|
150
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
153
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: LayerContextDirective, decorators: [{
|
|
151
154
|
type: Directive,
|
|
152
155
|
args: [{
|
|
153
|
-
selector: '[igoLayerContext]'
|
|
156
|
+
selector: '[igoLayerContext]',
|
|
157
|
+
standalone: true,
|
|
158
|
+
providers: [HttpClientModule]
|
|
154
159
|
}]
|
|
155
|
-
}], ctorParameters:
|
|
160
|
+
}], ctorParameters: () => [{ type: i1.MapBrowserComponent }, { type: i2.ContextService }, { type: i1.LayerService }, { type: i3.ConfigService }, { type: i1.StyleListService }, { type: i1.StyleService }, { type: i4.RouteService, decorators: [{
|
|
156
161
|
type: Optional
|
|
157
|
-
}] }]
|
|
162
|
+
}] }], propDecorators: { removeLayersOnContextChange: [{
|
|
158
163
|
type: Input
|
|
159
164
|
}] } });
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItY29udGV4dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZXh0L3NyYy9saWIvY29udGV4dC1tYW5hZ2VyL3NoYXJlZC9sYXllci1jb250ZXh0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3pELE9BQU8sRUFHTCxZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixZQUFZLEVBQ2IsTUFBTSxXQUFXLENBQUM7QUFFbkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUxQyxPQUFPLEVBQWdCLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckUsT0FBTyxFQUNMLDhCQUE4QixFQUM5Qix3QkFBd0IsRUFDekIsTUFBTSx5REFBeUQsQ0FBQztBQUVqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7O0FBS25ELE1BQU0sT0FBTyxxQkFBcUI7SUFhdEI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ1k7SUFsQmQsU0FBUyxDQUFlO0lBQ3hCLFdBQVcsQ0FBTTtJQUVqQixhQUFhLEdBQVksRUFBRSxDQUFDO0lBRTNCLDJCQUEyQixHQUFZLElBQUksQ0FBQztJQUVyRCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO0lBQzVCLENBQUM7SUFFRCxZQUNVLFNBQThCLEVBQzlCLGNBQThCLEVBQzlCLFlBQTBCLEVB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QUssR0FBRyxFQUFFO2dCQUNsQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2FBQ2pCO1lBRUQseUVBQXlFO1lBQ3pFLGFBQWEsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakQsZUFBZSxHQUFHLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNwRCxJQUNFLGFBQWEsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMxQyxhQUFhLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUNyRDtnQkFDQSxPQUFPLEdBQUcsSUFBSSxDQUFDO2FBQ2hCO1lBQ0QsSUFDRSxlQUFlLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDNUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDdkQ7Z0JBQ0EsT0FBTyxHQUFHLEtBQUssQ0FBQzthQUNqQjtTQUNGO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzt3R0FuS1UscUJBQXFCOzRGQUFyQixxQkFBcUI7OzRGQUFyQixxQkFBcUI7a0JBSGpDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtpQkFDOUI7OzBCQW9CSSxRQUFROzRDQWJGLDJCQUEyQjtzQkFBbkMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQ29uZmlnU2VydmljZSwgUm91dGVTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgTGF5ZXIsXHJcbiAgTGF5ZXJPcHRpb25zLFxyXG4gIExheWVyU2VydmljZSxcclxuICBNYXBCcm93c2VyQ29tcG9uZW50LFxyXG4gIFN0eWxlTGlzdFNlcnZpY2UsXHJcbiAgU3R5bGVTZXJ2aWNlXHJcbn0gZnJvbSAnQGlnbzIvZ2VvJztcclxuaW1wb3J0IHR5cGUgeyBJZ29NYXAgfSBmcm9tICdAaWdvMi9nZW8nO1xyXG5pbXBvcnQgeyBPYmplY3RVdGlscyB9IGZyb20gJ0BpZ28yL3V0aWxzJztcclxuXHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgbWVyZ2UgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgYnVmZmVyLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQge1xyXG4gIGFkZEltcG9ydGVkRmVhdHVyZXNTdHlsZWRUb01hcCxcclxuICBhZGRJbXBvcnRlZEZlYXR1cmVzVG9NYXBcclxufSBmcm9tICcuLi8uLi9jb250ZXh0LWltcG9ydC1leHBvcnQvc2hhcmVkL2NvbnRleHQtaW1wb3J0LnV0aWxzJztcclxuaW1wb3J0IHsgRGV0YWlsZWRDb250ZXh0IH0gZnJvbSAnLi9jb250ZXh0LmludGVyZmFjZSc7XHJcbmltcG9ydCB7IENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi9jb250ZXh0LnNlcnZpY2UnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbaWdvTGF5ZXJDb250ZXh0XSdcclxufSlcclxuZXhwb3J0IGNsYXNzIExheWVyQ29udGV4dERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIGNvbnRleHQkJDogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgcXVlcnlQYXJhbXM6IGFueTtcclxuXHJcbiAgcHJpdmF0ZSBjb250ZXh0TGF5ZXJzOiBMYXllcltdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIHJlbW92ZUxheWVyc09uQ29udGV4dENoYW5nZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIGdldCBtYXAoKTogSWdvTWFwIHtcclxuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudC5tYXA7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY29tcG9uZW50OiBNYXBCcm93c2VyQ29tcG9uZW50LFxyXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxheWVyU2VydmljZTogTGF5ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdHlsZUxpc3RTZXJ2aWNlOiBTdHlsZUxpc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzdHlsZVNlcnZpY2U6IFN0eWxlU2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcm91dGU6IFJvdXRlU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmNvbnRleHQkJCA9IHRoaXMuY29udGV4dFNlcnZpY2UuY29udGV4dCRcclxuICAgICAgLnBpcGUoZmlsdGVyKChjb250ZXh0KSA9PiBjb250ZXh0ICE9PSB1bmRlZmluZWQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChjb250ZXh0KSA9PiB0aGlzLmhhbmRsZUNvbnRleHRDaGFuZ2UoY29udGV4dCkpO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5yb3V0ZSAmJlxyXG4gICAgICB0aGlzLnJvdXRlLm9wdGlvbnMudmlzaWJsZU9uTGF5ZXJzS2V5ICYmXHJcbiAgICAgIHRoaXMucm91dGUub3B0aW9ucy52aXNpYmxlT2ZmTGF5ZXJzS2V5ICYmXHJcbiAgICAgIHRoaXMucm91dGUub3B0aW9ucy5jb250ZXh0S2V5XHJcbiAgICApIHtcclxuICAgICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtc1xyXG4gICAgICAgIC5waXBlKGZpcnN0KChwYXJhbXMpID0+ICFPYmplY3RVdGlscy5pc0VtcHR5KHBhcmFtcykpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5xdWVyeVBhcmFtcyA9IHBhcmFtcztcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5jb250ZXh0JCQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlQ29udGV4dENoYW5nZShjb250ZXh0OiBEZXRhaWxlZENvbnRleHQpIHtcclxuICAgIGlmIChjb250ZXh0LmxheWVycyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJlbW92ZUxheWVyc09uQ29udGV4dENoYW5nZSA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLm1hcC5yZW1vdmVBbGxMYXllcnMoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubWFwLnJlbW92ZUxheWVycyh0aGlzLmNvbnRleHRMYXllcnMpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb250ZXh0TGF5ZXJzID0gW107XHJcblxyXG4gICAgY29uc3QgbGF5ZXJzQW5kSW5kZXgkID0gbWVyZ2UoXHJcbiAgICAgIC4uLmNvbnRleHQubGF5ZXJzLm1hcCgobGF5ZXJPcHRpb25zOiBMYXllck9wdGlvbnMsIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sYXllclNlcnZpY2UuY3JlYXRlQXN5bmNMYXllcihsYXllck9wdGlvbnMsIGNvbnRleHQudXJpKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgbGF5ZXJzQW5kSW5kZXgkXHJcbiAgICAgIC5waXBlKGJ1ZmZlcihsYXllcnNBbmRJbmRleCQucGlwZShkZWJvdW5jZVRpbWUoNTAwKSkpKVxyXG4gICAgICAuc3Vic2NyaWJlKChsYXllcnM6IExheWVyW10pID0+IHtcclxuICAgICAgICB0aGlzLmhhbmRsZUFkZExheWVycyhsYXllcnMpO1xyXG5cclxuICAgICAgICBpZiAoY29udGV4dC5leHRyYUZlYXR1cmVzKSB7XHJcbiAgICAgICAgICBjb250ZXh0LmV4dHJhRmVhdHVyZXMuZm9yRWFjaCgoZmVhdHVyZUNvbGxlY3Rpb24pID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW1wb3J0RXhwb3J0T3B0aW9ucyA9XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZygnaW1wb3J0RXhwb3J0Jyk7XHJcbiAgICAgICAgICAgIGlmICghaW1wb3J0RXhwb3J0T3B0aW9ucz8uaW1wb3J0V2l0aFN0eWxlKSB7XHJcbiAgICAgICAgICAgICAgYWRkSW1wb3J0ZWRGZWF0dXJlc1RvTWFwKGZlYXR1cmVDb2xsZWN0aW9uLCB0aGlzLm1hcCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgYWRkSW1wb3J0ZWRGZWF0dXJlc1N0eWxlZFRvTWFwKFxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZUNvbGxlY3Rpb24sXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1hcCxcclxuICAgICAgICAgICAgICAgIHRoaXMuc3R5bGVMaXN0U2VydmljZSxcclxuICAgICAgICAgICAgICAgIHRoaXMuc3R5bGVTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLmxheWVyU2VydmljZVxyXG4gICAgICAuY3JlYXRlQXN5bmNJZGJMYXllcnMoY29udGV4dC51cmkpXHJcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSg1MDApKVxyXG4gICAgICAuc3Vic2NyaWJlKChsYXllcnM6IExheWVyW10pID0+IHRoaXMuaGFuZGxlQWRkTGF5ZXJzKGxheWVycykpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVBZGRMYXllcnMobGF5ZXJzOiBMYXllcltdKSB7XHJcbiAgICBsYXllcnMgPSBsYXllcnNcclxuICAgICAgLmZpbHRlcigobGF5ZXI6IExheWVyKSA9PiBsYXllciAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAubWFwKChsYXllcikgPT4ge1xyXG4gICAgICAgIGxheWVyLnZpc2libGUgPSB0aGlzLmNvbXB1dGVMYXllclZpc2liaWxpdHlGcm9tVXJsKGxheWVyKTtcclxuICAgICAgICBsYXllci56SW5kZXggPSBsYXllci56SW5kZXg7XHJcblxyXG4gICAgICAgIHJldHVybiBsYXllcjtcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmNvbnRleHRMYXllcnMuY29uY2F0KGxheWVycyk7XHJcbiAgICB0aGlzLm1hcC5hZGRMYXllcnMobGF5ZXJzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29tcHV0ZUxheWVyVmlzaWJpbGl0eUZyb21VcmwobGF5ZXI6IExheWVyKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB0aGlzLnF1ZXJ5UGFyYW1zO1xyXG4gICAgY29uc3QgY3VycmVudENvbnRleHQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLmNvbnRleHQkLnZhbHVlLnVyaTtcclxuICAgIGNvbnN0IGN1cnJlbnRMYXllcmlkOiBzdHJpbmcgPSBsYXllci5pZDtcclxuXHJcbiAgICBsZXQgdmlzaWJsZSA9IGxheWVyLnZpc2libGU7XHJcbiAgICBpZiAoIXBhcmFtcyB8fCAhY3VycmVudExheWVyaWQpIHtcclxuICAgICAgcmV0dXJuIHZpc2libGU7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29udGV4dFBhcmFtcyA9IHBhcmFtc1t0aGlzLnJvdXRlLm9wdGlvbnMuY29udGV4dEtleSBhcyBzdHJpbmddO1xyXG4gICAgaWYgKGNvbnRleHRQYXJhbXMgPT09IGN1cnJlbnRDb250ZXh0IHx8ICFjb250ZXh0UGFyYW1zKSB7XHJcbiAgICAgIGxldCB2aXNpYmxlT25MYXllcnNQYXJhbXMgPSAnJztcclxuICAgICAgbGV0IHZpc2libGVPZmZMYXllcnNQYXJhbXMgPSAnJztcclxuICAgICAgbGV0IHZpc2libGVsYXllcnM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgIGxldCBpbnZpc2libGVsYXllcnM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5yb3V0ZS5vcHRpb25zLnZpc2libGVPbkxheWVyc0tleSAmJlxyXG4gICAgICAgIHBhcmFtc1t0aGlzLnJvdXRlLm9wdGlvbnMudmlzaWJsZU9uTGF5ZXJzS2V5IGFzIHN0cmluZ11cclxuICAgICAgKSB7XHJcbiAgICAgICAgdmlzaWJsZU9uTGF5ZXJzUGFyYW1zID1cclxuICAgICAgICAgIHBhcmFtc1t0aGlzLnJvdXRlLm9wdGlvbnMudmlzaWJsZU9uTGF5ZXJzS2V5IGFzIHN0cmluZ107XHJcbiAgICAgIH1cclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMucm91dGUub3B0aW9ucy52aXNpYmxlT2ZmTGF5ZXJzS2V5ICYmXHJcbiAgICAgICAgcGFyYW1zW3RoaXMucm91dGUub3B0aW9ucy52aXNpYmxlT2ZmTGF5ZXJzS2V5IGFzIHN0cmluZ11cclxuICAgICAgKSB7XHJcbiAgICAgICAgdmlzaWJsZU9mZkxheWVyc1BhcmFtcyA9XHJcbiAgICAgICAgICBwYXJhbXNbdGhpcy5yb3V0ZS5vcHRpb25zLnZpc2libGVPZmZMYXllcnNLZXkgYXMgc3RyaW5nXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLyogVGhpcyBvcmRlciBpcyBpbXBvcnRhbnQgYmVjYXVzZSB0byBjb250cm9sIHdoaWNoZXZlclxyXG4gICAgICAgdGhlIG9yZGVyIG9mICogcGFyYW0uIEZpcnN0IHdoZSBvcGVuIGFuZCBjbG9zZSBldmVyeXRoaW5nLiovXHJcbiAgICAgIGlmICh2aXNpYmxlT25MYXllcnNQYXJhbXMgPT09ICcqJykge1xyXG4gICAgICAgIHZpc2libGUgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh2aXNpYmxlT2ZmTGF5ZXJzUGFyYW1zID09PSAnKicpIHtcclxuICAgICAgICB2aXNpYmxlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEFmdGVyLCBtYW5hZ2luZyBuYW1lZCBsYXllciBieSBpZCAoY29udGV4dC5qc29uIE9SIGlkIGZyb20gZGF0YXNvdXJjZSlcclxuICAgICAgdmlzaWJsZWxheWVycyA9IHZpc2libGVPbkxheWVyc1BhcmFtcy5zcGxpdCgnLCcpO1xyXG4gICAgICBpbnZpc2libGVsYXllcnMgPSB2aXNpYmxlT2ZmTGF5ZXJzUGFyYW1zLnNwbGl0KCcsJyk7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB2aXNpYmxlbGF5ZXJzLmluZGV4T2YoY3VycmVudExheWVyaWQpID4gLTEgfHxcclxuICAgICAgICB2aXNpYmxlbGF5ZXJzLmluZGV4T2YoY3VycmVudExheWVyaWQudG9TdHJpbmcoKSkgPiAtMVxyXG4gICAgICApIHtcclxuICAgICAgICB2aXNpYmxlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgaW52aXNpYmxlbGF5ZXJzLmluZGV4T2YoY3VycmVudExheWVyaWQpID4gLTEgfHxcclxuICAgICAgICBpbnZpc2libGVsYXllcnMuaW5kZXhPZihjdXJyZW50TGF5ZXJpZC50b1N0cmluZygpKSA+IC0xXHJcbiAgICAgICkge1xyXG4gICAgICAgIHZpc2libGUgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB2aXNpYmxlO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItY29udGV4dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb250ZXh0L3NyYy9saWIvY29udGV4dC1tYW5hZ2VyL3NoYXJlZC9sYXllci1jb250ZXh0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUdMLFlBQVksRUFDWixtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDYixNQUFNLFdBQVcsQ0FBQztBQUVuQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTFDLE9BQU8sRUFBZ0IsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRSxPQUFPLEVBQ0wsOEJBQThCLEVBQzlCLHdCQUF3QixFQUN6QixNQUFNLHlEQUF5RCxDQUFDO0FBRWpFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7O0FBT25ELE1BQU0sT0FBTyxxQkFBcUI7SUFhdEI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ1k7SUFsQmQsU0FBUyxDQUFlO0lBQ3hCLFdBQVcsQ0FBTTtJQUVqQixhQUFhLEdBQVksRUFBRSxDQUFDO0lBRTNCLDJCQUEyQixHQUFZLElBQUksQ0FBQztJQUVyRCxJQUFJLEdBQUc7UUFDTCxPQUFPLElB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QUFDLGdCQUFnQixDQUFDO2lCQUM5Qjs7MEJBb0JJLFFBQVE7eUNBYkYsMkJBQTJCO3NCQUFuQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9jb25maWcnO1xuaW1wb3J0IHsgUm91dGVTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9yb3V0ZSc7XG5pbXBvcnQge1xuICBMYXllcixcbiAgTGF5ZXJPcHRpb25zLFxuICBMYXllclNlcnZpY2UsXG4gIE1hcEJyb3dzZXJDb21wb25lbnQsXG4gIFN0eWxlTGlzdFNlcnZpY2UsXG4gIFN0eWxlU2VydmljZVxufSBmcm9tICdAaWdvMi9nZW8nO1xuaW1wb3J0IHR5cGUgeyBJZ29NYXAgfSBmcm9tICdAaWdvMi9nZW8nO1xuaW1wb3J0IHsgT2JqZWN0VXRpbHMgfSBmcm9tICdAaWdvMi91dGlscyc7XG5cbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgbWVyZ2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGJ1ZmZlciwgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBhZGRJbXBvcnRlZEZlYXR1cmVzU3R5bGVkVG9NYXAsXG4gIGFkZEltcG9ydGVkRmVhdHVyZXNUb01hcFxufSBmcm9tICcuLi8uLi9jb250ZXh0LWltcG9ydC1leHBvcnQvc2hhcmVkL2NvbnRleHQtaW1wb3J0LnV0aWxzJztcbmltcG9ydCB7IERldGFpbGVkQ29udGV4dCB9IGZyb20gJy4vY29udGV4dC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuL2NvbnRleHQuc2VydmljZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tpZ29MYXllckNvbnRleHRdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBbSHR0cENsaWVudE1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgTGF5ZXJDb250ZXh0RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGNvbnRleHQkJDogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHF1ZXJ5UGFyYW1zOiBhbnk7XG5cbiAgcHJpdmF0ZSBjb250ZXh0TGF5ZXJzOiBMYXllcltdID0gW107XG5cbiAgQElucHV0KCkgcmVtb3ZlTGF5ZXJzT25Db250ZXh0Q2hhbmdlOiBib29sZWFuID0gdHJ1ZTtcblxuICBnZXQgbWFwKCk6IElnb01hcCB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50Lm1hcDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29tcG9uZW50OiBNYXBCcm93c2VyQ29tcG9uZW50LFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGF5ZXJTZXJ2aWNlOiBMYXllclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3R5bGVMaXN0U2VydmljZTogU3R5bGVMaXN0U2VydmljZSxcbiAgICBwcml2YXRlIHN0eWxlU2VydmljZTogU3R5bGVTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcm91dGU6IFJvdXRlU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jb250ZXh0JCQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLmNvbnRleHQkXG4gICAgICAucGlwZShmaWx0ZXIoKGNvbnRleHQpID0+IGNvbnRleHQgIT09IHVuZGVmaW5lZCkpXG4gICAgICAuc3Vic2NyaWJlKChjb250ZXh0KSA9PiB0aGlzLmhhbmRsZUNvbnRleHRDaGFuZ2UoY29udGV4dCkpO1xuXG4gICAgaWYgKFxuICAgICAgdGhpcy5yb3V0ZSAmJlxuICAgICAgdGhpcy5yb3V0ZS5vcHRpb25zLnZpc2libGVPbkxheWVyc0tleSAmJlxuICAgICAgdGhpcy5yb3V0ZS5vcHRpb25zLnZpc2libGVPZmZMYXllcnNLZXkgJiZcbiAgICAgIHRoaXMucm91dGUub3B0aW9ucy5jb250ZXh0S2V5XG4gICAgKSB7XG4gICAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zXG4gICAgICAgIC5waXBlKGZpcnN0KChwYXJhbXMpID0+ICFPYmplY3RVdGlscy5pc0VtcHR5KHBhcmFtcykpKVxuICAgICAgICAuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcbiAgICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zID0gcGFyYW1zO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmNvbnRleHQkJC51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDb250ZXh0Q2hhbmdlKGNvbnRleHQ6IERldGFpbGVkQ29udGV4dCkge1xuICAgIGlmIChjb250ZXh0LmxheWVycyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnJlbW92ZUxheWVyc09uQ29udGV4dENoYW5nZSA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5tYXAucmVtb3ZlQWxsTGF5ZXJzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWFwLnJlbW92ZUxheWVycyh0aGlzLmNvbnRleHRMYXllcnMpO1xuICAgIH1cbiAgICB0aGlzLmNvbnRleHRMYXllcnMgPSBbXTtcblxuICAgIGNvbnN0IGxheWVyc0FuZEluZGV4JCA9IG1lcmdlKFxuICAgICAgLi4uY29udGV4dC5sYXllcnMubWFwKChsYXllck9wdGlvbnM6IExheWVyT3B0aW9ucywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sYXllclNlcnZpY2UuY3JlYXRlQXN5bmNMYXllcihsYXllck9wdGlvbnMsIGNvbnRleHQudXJpKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGxheWVyc0FuZEluZGV4JFxuICAgICAgLnBpcGUoYnVmZmVyKGxheWVyc0FuZEluZGV4JC5waXBlKGRlYm91bmNlVGltZSg1MDApKSkpXG4gICAgICAuc3Vic2NyaWJlKChsYXllcnM6IExheWVyW10pID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVBZGRMYXllcnMobGF5ZXJzKTtcblxuICAgICAgICBpZiAoY29udGV4dC5leHRyYUZlYXR1cmVzKSB7XG4gICAgICAgICAgY29udGV4dC5leHRyYUZlYXR1cmVzLmZvckVhY2goKGZlYXR1cmVDb2xsZWN0aW9uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbXBvcnRFeHBvcnRPcHRpb25zID1cbiAgICAgICAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLmdldENvbmZpZygnaW1wb3J0RXhwb3J0Jyk7XG4gICAgICAgICAgICBpZiAoIWltcG9ydEV4cG9ydE9wdGlvbnM/LmltcG9ydFdpdGhTdHlsZSkge1xuICAgICAgICAgICAgICBhZGRJbXBvcnRlZEZlYXR1cmVzVG9NYXAoZmVhdHVyZUNvbGxlY3Rpb24sIHRoaXMubWFwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGFkZEltcG9ydGVkRmVhdHVyZXNTdHlsZWRUb01hcChcbiAgICAgICAgICAgICAgICBmZWF0dXJlQ29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICB0aGlzLm1hcCxcbiAgICAgICAgICAgICAgICB0aGlzLnN0eWxlTGlzdFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgdGhpcy5zdHlsZVNlcnZpY2VcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLmxheWVyU2VydmljZVxuICAgICAgLmNyZWF0ZUFzeW5jSWRiTGF5ZXJzKGNvbnRleHQudXJpKVxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpXG4gICAgICAuc3Vic2NyaWJlKChsYXllcnM6IExheWVyW10pID0+IHRoaXMuaGFuZGxlQWRkTGF5ZXJzKGxheWVycykpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVBZGRMYXllcnMobGF5ZXJzOiBMYXllcltdKSB7XG4gICAgbGF5ZXJzID0gbGF5ZXJzXG4gICAgICAuZmlsdGVyKChsYXllcjogTGF5ZXIpID0+IGxheWVyICE9PSB1bmRlZmluZWQpXG4gICAgICAubWFwKChsYXllcikgPT4ge1xuICAgICAgICBsYXllci52aXNpYmxlID0gdGhpcy5jb21wdXRlTGF5ZXJWaXNpYmlsaXR5RnJvbVVybChsYXllcik7XG4gICAgICAgIGxheWVyLnpJbmRleCA9IGxheWVyLnpJbmRleDtcblxuICAgICAgICByZXR1cm4gbGF5ZXI7XG4gICAgICB9KTtcbiAgICB0aGlzLmNvbnRleHRMYXllcnMuY29uY2F0KGxheWVycyk7XG4gICAgdGhpcy5tYXAuYWRkTGF5ZXJzKGxheWVycyk7XG4gIH1cblxuICBwcml2YXRlIGNvbXB1dGVMYXllclZpc2liaWxpdHlGcm9tVXJsKGxheWVyOiBMYXllcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMucXVlcnlQYXJhbXM7XG4gICAgY29uc3QgY3VycmVudENvbnRleHQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLmNvbnRleHQkLnZhbHVlLnVyaTtcbiAgICBjb25zdCBjdXJyZW50TGF5ZXJpZDogc3RyaW5nID0gbGF5ZXIuaWQ7XG5cbiAgICBsZXQgdmlzaWJsZSA9IGxheWVyLnZpc2libGU7XG4gICAgaWYgKCFwYXJhbXMgfHwgIWN1cnJlbnRMYXllcmlkKSB7XG4gICAgICByZXR1cm4gdmlzaWJsZTtcbiAgICB9XG5cbiAgICBjb25zdCBjb250ZXh0UGFyYW1zID0gcGFyYW1zW3RoaXMucm91dGUub3B0aW9ucy5jb250ZXh0S2V5IGFzIHN0cmluZ107XG4gICAgaWYgKGNvbnRleHRQYXJhbXMgPT09IGN1cnJlbnRDb250ZXh0IHx8ICFjb250ZXh0UGFyYW1zKSB7XG4gICAgICBsZXQgdmlzaWJsZU9uTGF5ZXJzUGFyYW1zID0gJyc7XG4gICAgICBsZXQgdmlzaWJsZU9mZkxheWVyc1BhcmFtcyA9ICcnO1xuICAgICAgbGV0IHZpc2libGVsYXllcnM6IHN0cmluZ1tdID0gW107XG4gICAgICBsZXQgaW52aXNpYmxlbGF5ZXJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMucm91dGUub3B0aW9ucy52aXNpYmxlT25MYXllcnNLZXkgJiZcbiAgICAgICAgcGFyYW1zW3RoaXMucm91dGUub3B0aW9ucy52aXNpYmxlT25MYXllcnNLZXkgYXMgc3RyaW5nXVxuICAgICAgKSB7XG4gICAgICAgIHZpc2libGVPbkxheWVyc1BhcmFtcyA9XG4gICAgICAgICAgcGFyYW1zW3RoaXMucm91dGUub3B0aW9ucy52aXNpYmxlT25MYXllcnNLZXkgYXMgc3RyaW5nXTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5yb3V0ZS5vcHRpb25zLnZpc2libGVPZmZMYXllcnNLZXkgJiZcbiAgICAgICAgcGFyYW1zW3RoaXMucm91dGUub3B0aW9ucy52aXNpYmxlT2ZmTGF5ZXJzS2V5IGFzIHN0cmluZ11cbiAgICAgICkge1xuICAgICAgICB2aXNpYmxlT2ZmTGF5ZXJzUGFyYW1zID1cbiAgICAgICAgICBwYXJhbXNbdGhpcy5yb3V0ZS5vcHRpb25zLnZpc2libGVPZmZMYXllcnNLZXkgYXMgc3RyaW5nXTtcbiAgICAgIH1cblxuICAgICAgLyogVGhpcyBvcmRlciBpcyBpbXBvcnRhbnQgYmVjYXVzZSB0byBjb250cm9sIHdoaWNoZXZlclxuICAgICAgIHRoZSBvcmRlciBvZiAqIHBhcmFtLiBGaXJzdCB3aGUgb3BlbiBhbmQgY2xvc2UgZXZlcnl0aGluZy4qL1xuICAgICAgaWYgKHZpc2libGVPbkxheWVyc1BhcmFtcyA9PT0gJyonKSB7XG4gICAgICAgIHZpc2libGUgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHZpc2libGVPZmZMYXllcnNQYXJhbXMgPT09ICcqJykge1xuICAgICAgICB2aXNpYmxlID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vIEFmdGVyLCBtYW5hZ2luZyBuYW1lZCBsYXllciBieSBpZCAoY29udGV4dC5qc29uIE9SIGlkIGZyb20gZGF0YXNvdXJjZSlcbiAgICAgIHZpc2libGVsYXllcnMgPSB2aXNpYmxlT25MYXllcnNQYXJhbXMuc3BsaXQoJywnKTtcbiAgICAgIGludmlzaWJsZWxheWVycyA9IHZpc2libGVPZmZMYXllcnNQYXJhbXMuc3BsaXQoJywnKTtcbiAgICAgIGlmIChcbiAgICAgICAgdmlzaWJsZWxheWVycy5pbmRleE9mKGN1cnJlbnRMYXllcmlkKSA+IC0xIHx8XG4gICAgICAgIHZpc2libGVsYXllcnMuaW5kZXhPZihjdXJyZW50TGF5ZXJpZC50b1N0cmluZygpKSA+IC0xXG4gICAgICApIHtcbiAgICAgICAgdmlzaWJsZSA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGludmlzaWJsZWxheWVycy5pbmRleE9mKGN1cnJlbnRMYXllcmlkKSA+IC0xIHx8XG4gICAgICAgIGludmlzaWJsZWxheWVycy5pbmRleE9mKGN1cnJlbnRMYXllcmlkLnRvU3RyaW5nKCkpID4gLTFcbiAgICAgICkge1xuICAgICAgICB2aXNpYmxlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHZpc2libGU7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Directive } from '@angular/core';
|
|
2
|
-
import { MediaService } from '@igo2/core';
|
|
2
|
+
import { MediaService } from '@igo2/core/media';
|
|
3
3
|
import { MapBrowserComponent } from '@igo2/geo';
|
|
4
4
|
import { filter } from 'rxjs/operators';
|
|
5
5
|
import { ContextService } from './context.service';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "@igo2/geo";
|
|
8
8
|
import * as i2 from "./context.service";
|
|
9
|
-
import * as i3 from "@igo2/core";
|
|
9
|
+
import * as i3 from "@igo2/core/media";
|
|
10
10
|
export class MapContextDirective {
|
|
11
11
|
contextService;
|
|
12
12
|
mediaService;
|
|
@@ -67,13 +67,14 @@ export class MapContextDirective {
|
|
|
67
67
|
this.component.controls = controlsContext;
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
71
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
70
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: MapContextDirective, deps: [{ token: i1.MapBrowserComponent }, { token: i2.ContextService }, { token: i3.MediaService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
71
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.9", type: MapContextDirective, isStandalone: true, selector: "[igoMapContext]", ngImport: i0 });
|
|
72
72
|
}
|
|
73
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
73
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: MapContextDirective, decorators: [{
|
|
74
74
|
type: Directive,
|
|
75
75
|
args: [{
|
|
76
|
-
selector: '[igoMapContext]'
|
|
76
|
+
selector: '[igoMapContext]',
|
|
77
|
+
standalone: true
|
|
77
78
|
}]
|
|
78
|
-
}], ctorParameters:
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
}], ctorParameters: () => [{ type: i1.MapBrowserComponent }, { type: i2.ContextService }, { type: i3.MediaService }] });
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNvbnRleHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29udGV4dC9zcmMvbGliL2NvbnRleHQtbWFuYWdlci9zaGFyZWQvbWFwLWNvbnRleHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQ0wsbUJBQW1CLEVBSXBCLE1BQU0sV0FBVyxDQUFDO0FBSW5CLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7O0FBTW5ELE1BQU0sT0FBTyxtQkFBbUI7SUFVcEI7SUFDQTtJQVZGLFNBQVMsQ0FBc0I7SUFDL0IsU0FBUyxDQUFlO0lBRWhDLElBQUksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7SUFDNUIsQ0FBQztJQUVELFlBQ0UsU0FBOEIsRUFDdEIsY0FBOEIsRUFDOUIsWUFBMEI7UUFEMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBRWxDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0lBQzdCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVE7YUFDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQyxDQUFDO2FBQ2hELFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxPQUF3QjtRQUNsRCxJQUFJLE9BQU8sQ0FBQyxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDOUIsT0FBTztRQUNULENBQUM7UUFFRCxpRUFBaUU7UUFDakUsb0VBQW9FO1FBQ3BFLHlFQUF5RTtRQUN6RSwyRUFBMkU7UUFDM0Usa0VBQWtFO1FBQ2xFLHVFQUF1RTtRQUN2RSxzRUFBc0U7UUFDdEUsV0FBVztRQUVYLG9EQUFvRDtRQUNwRCw4Q0FBOEM7UUFDOUMsNkJBQTZCO1FBQzdCLDJDQUEyQztRQUUzQyxNQUFNLFdBQVcsR0FBbUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDckQsSUFDRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSTtZQUNwQixXQUFXLENBQUMsZUFBZSxLQUFLLElBQUk7WUFDcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUNuRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsV0FBNkIsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLHdCQUF3QixDQUMvRCxXQUFXLENBQ1osQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLGVBQWUsR0FBdUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDakUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ2hELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLE9BQU8sZUFBZSxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztvQkFDbkQsTUFBTSxlQUFlLEdBQ25CLGVBQWUsQ0FBQyxTQUFnQyxDQUFDO29CQUNuRCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO3dCQUM5QixlQUFlLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQzt3QkFDbEUsZUFBZSxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUM7b0JBQzlDLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7dUdBekVVLG1CQUFtQjsyRkFBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUovQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTWVkaWFTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9tZWRpYSc7XG5pbXBvcnQge1xuICBNYXBCcm93c2VyQ29tcG9uZW50LFxuICBNYXBDb250cm9sc09wdGlvbnMsXG4gIE1hcFNjYWxlTGluZU9wdGlvbnMsXG4gIE1hcFZpZXdPcHRpb25zXG59IGZyb20gJ0BpZ28yL2dlbyc7XG5pbXBvcnQgdHlwZSB7IElnb01hcCB9IGZyb20gJ0BpZ28yL2dlbyc7XG5cbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBDb250ZXh0TWFwVmlldywgRGV0YWlsZWRDb250ZXh0IH0gZnJvbSAnLi9jb250ZXh0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSB9IGZyb20gJy4vY29udGV4dC5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2lnb01hcENvbnRleHRdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNYXBDb250ZXh0RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGNvbXBvbmVudDogTWFwQnJvd3NlckNvbXBvbmVudDtcbiAgcHJpdmF0ZSBjb250ZXh0JCQ6IFN1YnNjcmlwdGlvbjtcblxuICBnZXQgbWFwKCk6IElnb01hcCB7XG4gICAgcmV0dXJuIHRoaXMuY29tcG9uZW50Lm1hcDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNvbXBvbmVudDogTWFwQnJvd3NlckNvbXBvbmVudCxcbiAgICBwcml2YXRlIGNvbnRleHRTZXJ2aWNlOiBDb250ZXh0U2VydmljZSxcbiAgICBwcml2YXRlIG1lZGlhU2VydmljZTogTWVkaWFTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jb250ZXh0JCQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLmNvbnRleHQkXG4gICAgICAucGlwZShmaWx0ZXIoKGNvbnRleHQpID0+IGNvbnRleHQgIT09IHVuZGVmaW5lZCkpXG4gICAgICAuc3Vic2NyaWJlKChjb250ZXh0KSA9PiB0aGlzLmhhbmRsZUNvbnRleHRDaGFuZ2UoY29udGV4dCkpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5jb250ZXh0JCQudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ29udGV4dENoYW5nZShjb250ZXh0OiBEZXRhaWxlZENvbnRleHQpIHtcbiAgICBpZiAoY29udGV4dC5tYXAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFRoaXMgY3JlYXRlcyBhIG5ldyBvbC5NYXAgd2hlbiB0aGUgY29udGV4dCBjaGFuZ2VzLiBEb2luZyB0aGF0XG4gICAgLy8gYWxsb3dzIHRoZSBwcmludCB0b29sIHRvIHdvcmsgcHJvcGVybHkgZXZlbiB3aGVuIHRoZSBtYXAncyBjYW52YXNcbiAgICAvLyBoYXMgYmVlbiB0YWludGVkIChDT1JTKSB3aXRoIHRoZSBsYXllcnMgb2YgYW5vdGhlciBjb250ZXh0LiBUaGlzIGNvdWxkXG4gICAgLy8gaGF2ZSBzb21lIHNpZGUgZWZmZWN0cyBzdWNoIGFzIHVuYmluZGluZyBhbGwgbGlzdGVuZXJzIG9uIHRoZSBmaXJzdCBtYXAuXG4gICAgLy8gQSBiZXR0ZXIgc29sdXRpb24gd291bGQgYmUgdG8gY3JlYXRlIGEgbmV3IG1hcCAocHJldmlldykgYmVmb3JlXG4gICAgLy8gcHJpbnRpbmcgYW5kIGF2b2lkIHRoZSB0YWludGVkIGNhbnZhcyBpc3N1ZS4gVGhpcyB3aWxsIGNvbWUgbGF0ZXIgc29cbiAgICAvLyB0aGlzIHNuaXBwZXQgb2YgY29kZSBpcyBrZXB0IGhlcmUgaW4gY2FzZSBpdCB0YWtlcyB0b28gbG9uZyBiZWNvbWVzXG4gICAgLy8gYW4gaXNzdWVcblxuICAgIC8vIGNvbnN0IHRhcmdldCA9IHRoaXMuY29tcG9uZW50Lm1hcC5vbC5nZXRUYXJnZXQoKTtcbiAgICAvLyB0aGlzLmNvbXBvbmVudC5tYXAub2wuc2V0VGFyZ2V0KHVuZGVmaW5lZCk7XG4gICAgLy8gdGhpcy5jb21wb25lbnQubWFwLmluaXQoKTtcbiAgICAvLyB0aGlzLmNvbXBvbmVudC5tYXAub2wuc2V0VGFyZ2V0KHRhcmdldCk7XG5cbiAgICBjb25zdCB2aWV3Q29udGV4dDogQ29udGV4dE1hcFZpZXcgPSBjb250ZXh0Lm1hcC52aWV3O1xuICAgIGlmIChcbiAgICAgICF0aGlzLmNvbXBvbmVudC52aWV3IHx8XG4gICAgICB2aWV3Q29udGV4dC5rZWVwQ3VycmVudFZpZXcgIT09IHRydWUgfHxcbiAgICAgIGNvbnRleHQubWFwLnZpZXcucHJvamVjdGlvbiAhPT0gdGhpcy5tYXAucHJvamVjdGlvblxuICAgICkge1xuICAgICAgdGhpcy5jb21wb25lbnQudmlldyA9IHZpZXdDb250ZXh0IGFzIE1hcFZpZXdPcHRpb25zO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb21wb25lbnQubWFwLmdlb2xvY2F0aW9uQ29udHJvbGxlcikge1xuICAgICAgdGhpcy5jb21wb25lbnQubWFwLmdlb2xvY2F0aW9uQ29udHJvbGxlci51cGRhdGVHZW9sb2NhdGlvbk9wdGlvbnMoXG4gICAgICAgIHZpZXdDb250ZXh0XG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRyb2xzQ29udGV4dDogTWFwQ29udHJvbHNPcHRpb25zID0gY29udGV4dC5tYXAuY29udHJvbHM7XG4gICAgaWYgKCF0aGlzLmNvbXBvbmVudC5jb250cm9scyAmJiBjb250cm9sc0NvbnRleHQpIHtcbiAgICAgIGlmICh0aGlzLm1lZGlhU2VydmljZS5pc01vYmlsZSgpKSB7XG4gICAgICAgIGlmICh0eXBlb2YgY29udHJvbHNDb250ZXh0LnNjYWxlTGluZSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgY29uc3Qgc2NhbGVMaW5lT3B0aW9uID1cbiAgICAgICAgICAgIGNvbnRyb2xzQ29udGV4dC5zY2FsZUxpbmUgYXMgTWFwU2NhbGVMaW5lT3B0aW9ucztcbiAgICAgICAgICBpZiAoIXNjYWxlTGluZU9wdGlvbi5taW5XaWR0aCkge1xuICAgICAgICAgICAgc2NhbGVMaW5lT3B0aW9uLm1pbldpZHRoID0gTWF0aC5taW4oNjQsIHNjYWxlTGluZU9wdGlvbi5taW5XaWR0aCk7XG4gICAgICAgICAgICBjb250cm9sc0NvbnRleHQuc2NhbGVMaW5lID0gc2NhbGVMaW5lT3B0aW9uO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5jb21wb25lbnQuY29udHJvbHMgPSBjb250cm9sc0NvbnRleHQ7XG4gICAgfVxuICB9XG59XG4iXX0=
|