@c8y/ngx-components 1021.25.5 → 1021.29.0
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/alarms/alarm-details.component.d.ts +8 -13
- package/alarms/alarm-details.component.d.ts.map +1 -1
- package/alarms/alarm-details.service.d.ts +3 -20
- package/alarms/alarm-details.service.d.ts.map +1 -1
- package/alarms/alarm-info.component.d.ts +0 -1
- package/alarms/alarm-info.component.d.ts.map +1 -1
- package/branding/shared/data/branding-version.service.d.ts.map +1 -1
- package/branding/shared/lazy/branding-theme-form/branding-theme-form.component.d.ts.map +1 -1
- package/core/bootstrap/bootstrap.component.d.ts.map +1 -1
- package/core/common/geo.service.d.ts.map +1 -1
- package/core/common/inter-app.service.d.ts +1 -0
- package/core/common/inter-app.service.d.ts.map +1 -1
- package/core/plugins/plugins.model.d.ts +3 -1
- package/core/plugins/plugins.model.d.ts.map +1 -1
- package/core/plugins/plugins.service.d.ts.map +1 -1
- package/device-map/bounds-resolver.service.d.ts +12 -0
- package/device-map/bounds-resolver.service.d.ts.map +1 -0
- package/device-map/c8y-ngx-components-device-map.d.ts.map +1 -0
- package/device-map/device-map-navigation.factory.d.ts +9 -0
- package/device-map/device-map-navigation.factory.d.ts.map +1 -0
- package/device-map/device-map.component.d.ts +10 -0
- package/device-map/device-map.component.d.ts.map +1 -0
- package/device-map/device-map.feature.d.ts +3 -0
- package/device-map/device-map.feature.d.ts.map +1 -0
- package/device-map/index.d.ts +6 -0
- package/device-map/index.d.ts.map +1 -0
- package/device-map/location-resolver.service.d.ts +8 -0
- package/device-map/location-resolver.service.d.ts.map +1 -0
- package/ecosystem/application-plugins/application-plugins.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/orphaned-status-cell-renderer.component.d.ts.map +1 -1
- package/esm2022/alarms/alarm-details.component.mjs +14 -30
- package/esm2022/alarms/alarm-details.service.mjs +5 -25
- package/esm2022/alarms/alarm-info.component.mjs +1 -1
- package/esm2022/branding/shared/data/branding-version.service.mjs +9 -5
- package/esm2022/branding/shared/lazy/branding-theme-form/branding-theme-form.component.mjs +5 -2
- package/esm2022/core/bootstrap/bootstrap.component.mjs +4 -3
- package/esm2022/core/common/geo.service.mjs +2 -5
- package/esm2022/core/common/inter-app.service.mjs +3 -2
- package/esm2022/core/plugins/plugins.model.mjs +2 -1
- package/esm2022/core/plugins/plugins.service.mjs +7 -5
- package/esm2022/core/version/websdk-plugin-version.factory.mjs +2 -2
- package/esm2022/device-map/bounds-resolver.service.mjs +21 -0
- package/esm2022/device-map/c8y-ngx-components-device-map.mjs +5 -0
- package/esm2022/device-map/device-map-navigation.factory.mjs +25 -0
- package/esm2022/device-map/device-map.component.mjs +30 -0
- package/esm2022/device-map/device-map.feature.mjs +15 -0
- package/esm2022/device-map/index.mjs +6 -0
- package/esm2022/device-map/location-resolver.service.mjs +25 -0
- package/esm2022/ecosystem/application-plugins/application-plugins.component.mjs +66 -22
- package/esm2022/ecosystem/application-plugins/orphaned-status-cell-renderer.component.mjs +7 -1
- package/esm2022/location/location.component.mjs +3 -3
- package/esm2022/map/map-status.component.mjs +20 -7
- package/esm2022/map/map.component.mjs +15 -7
- package/esm2022/map/map.model.mjs +2 -2
- package/esm2022/map/map.module.mjs +25 -4
- package/esm2022/map/map.service.mjs +73 -7
- package/esm2022/repository/firmware/list/firmware-list.component.mjs +10 -10
- package/esm2022/repository/software/list/software-list.component.mjs +10 -10
- package/esm2022/tracking/tracking-marker-popup.component.mjs +10 -3
- package/esm2022/tracking/tracking.component.mjs +3 -4
- package/esm2022/tracking/tracking.service.mjs +6 -3
- package/fesm2022/c8y-ngx-components-alarms.mjs +18 -54
- package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +8 -4
- package/fesm2022/c8y-ngx-components-branding-shared-data.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +4 -1
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-map.mjs +106 -0
- package/fesm2022/c8y-ngx-components-device-map.mjs.map +1 -0
- package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +71 -21
- package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem.mjs +71 -21
- package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-location.mjs +2 -2
- package/fesm2022/c8y-ngx-components-location.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-map.mjs +122 -14
- package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-firmware.mjs +9 -9
- package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-repository-software.mjs +9 -9
- package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-tracking.mjs +16 -7
- package/fesm2022/c8y-ngx-components-tracking.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +14 -12
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/locales/de.po +13 -1
- package/locales/es.po +13 -1
- package/locales/fr.po +13 -1
- package/locales/ja_JP.po +15 -3
- package/locales/ko.po +13 -1
- package/locales/locales.pot +12 -0
- package/locales/nl.po +13 -1
- package/locales/pl.po +13 -1
- package/locales/pt_BR.po +13 -1
- package/locales/zh_CN.po +13 -1
- package/locales/zh_TW.po +13 -1
- package/map/map-status.component.d.ts +3 -1
- package/map/map-status.component.d.ts.map +1 -1
- package/map/map.component.d.ts +2 -1
- package/map/map.component.d.ts.map +1 -1
- package/map/map.model.d.ts +1 -0
- package/map/map.model.d.ts.map +1 -1
- package/map/map.module.d.ts +2 -1
- package/map/map.module.d.ts.map +1 -1
- package/map/map.service.d.ts +27 -2
- package/map/map.service.d.ts.map +1 -1
- package/package.json +1 -1
- package/repository/firmware/list/firmware-list.component.d.ts.map +1 -1
- package/repository/software/list/software-list.component.d.ts.map +1 -1
- package/tracking/tracking-marker-popup.component.d.ts +5 -1
- package/tracking/tracking-marker-popup.component.d.ts.map +1 -1
- package/tracking/tracking.component.d.ts.map +1 -1
- package/tracking/tracking.service.d.ts.map +1 -1
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { Component, ContentChild, ElementRef, EventEmitter, Inject, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
2
3
|
import { DatePipe, GeoService, gettext, ManagedObjectRealtimeService, sortByPriority, WidgetGlobalAutoRefreshService } from '@c8y/ngx-components';
|
|
3
4
|
import { TranslateService } from '@ngx-translate/core';
|
|
4
|
-
import { flatten, isEmpty, isUndefined, remove } from 'lodash-es';
|
|
5
|
+
import { every, flatten, isEmpty, isNull, isUndefined, remove } from 'lodash-es';
|
|
5
6
|
import { BehaviorSubject, combineLatest, fromEvent, NEVER, Observable, Subject } from 'rxjs';
|
|
6
7
|
import { filter, first, map, scan, switchMap, takeUntil } from 'rxjs/operators';
|
|
7
8
|
import { MapPopupDirective } from './map-popup.directive';
|
|
8
9
|
import { getC8yMarker, MAP_DEFAULT_CONFIG, MAP_TILE_LAYER } from './map.model';
|
|
9
10
|
import { MapService } from './map.service';
|
|
10
|
-
import { isNull, every } from 'lodash-es';
|
|
11
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
12
11
|
import * as i0 from "@angular/core";
|
|
13
12
|
import * as i1 from "@c8y/ngx-components";
|
|
14
13
|
import * as i2 from "./map.service";
|
|
@@ -39,6 +38,7 @@ export class MapComponent {
|
|
|
39
38
|
this.onInit = new EventEmitter();
|
|
40
39
|
this.unsubscribeTrigger$ = new Subject();
|
|
41
40
|
this.destroy$ = new Subject();
|
|
41
|
+
this.markerTitle = gettext('Marker at position {{lat}}, {{lng}}');
|
|
42
42
|
this.initOutputs();
|
|
43
43
|
}
|
|
44
44
|
startRealtime() {
|
|
@@ -89,8 +89,10 @@ export class MapComponent {
|
|
|
89
89
|
return;
|
|
90
90
|
}
|
|
91
91
|
const icon = this.getAssetIcon(asset);
|
|
92
|
+
const { lat, lng } = asset.c8y_Position;
|
|
92
93
|
const leafletMarker = this.leaflet.marker(this.geo.getLatLong(asset), {
|
|
93
|
-
icon
|
|
94
|
+
icon,
|
|
95
|
+
title: this.translateService.instant(this.markerTitle, { lat, lng })
|
|
94
96
|
});
|
|
95
97
|
const marker = getC8yMarker(leafletMarker, asset);
|
|
96
98
|
this.bindPopup(marker, asset);
|
|
@@ -101,7 +103,11 @@ export class MapComponent {
|
|
|
101
103
|
return;
|
|
102
104
|
}
|
|
103
105
|
const icon = this.getTrackingIcon();
|
|
104
|
-
const
|
|
106
|
+
const { lat, lng } = event.c8y_Position;
|
|
107
|
+
const leafletMarker = this.leaflet.marker(this.geo.getLatLong(event), {
|
|
108
|
+
icon,
|
|
109
|
+
title: this.translateService.instant(this.markerTitle, { lat, lng })
|
|
110
|
+
});
|
|
105
111
|
const marker = getC8yMarker(leafletMarker, null, event);
|
|
106
112
|
this.bindPopup(marker, event);
|
|
107
113
|
return marker;
|
|
@@ -217,13 +223,15 @@ export class MapComponent {
|
|
|
217
223
|
const defaultOptions = {
|
|
218
224
|
center: this.config.center || defaultConfig.center,
|
|
219
225
|
zoomSnap: 0,
|
|
220
|
-
zoom: this.config.zoomLevel || defaultConfig.zoomLevel
|
|
226
|
+
zoom: this.config.zoomLevel || defaultConfig.zoomLevel,
|
|
227
|
+
worldCopyJump: true
|
|
221
228
|
};
|
|
222
229
|
if (this.map) {
|
|
223
230
|
this.map.remove();
|
|
224
231
|
}
|
|
225
232
|
this.map = this.leaflet.map(this.mapElement.nativeElement, defaultOptions);
|
|
226
233
|
this.map.attributionControl.setPrefix('');
|
|
234
|
+
this.fitBounds(this.config.bounds);
|
|
227
235
|
this.addLayers(layers);
|
|
228
236
|
this.handleMobile();
|
|
229
237
|
this.onMap.next(this.map);
|
|
@@ -431,4 +439,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
431
439
|
}], onInit: [{
|
|
432
440
|
type: Output
|
|
433
441
|
}] } });
|
|
434
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL21hcC9tYXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vbWFwL21hcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUdOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQ0wsUUFBUSxFQUNSLFVBQVUsRUFDVixPQUFPLEVBQ1AsNEJBQTRCLEVBQzVCLGNBQWMsRUFDZCw4QkFBOEIsRUFDL0IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xFLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLFNBQVMsRUFDVCxLQUFLLEVBQ0wsVUFBVSxFQUNWLE9BQU8sRUFFUixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFHTCxZQUFZLEVBRVosa0JBQWtCLEVBQ2xCLGNBQWMsRUFFZixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRC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QUFNO3FCQUNILFdBQVcsRUFBRTtxQkFDYixTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGVBQWUsRUFBRTtvQkFDOUQsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7b0JBQ2pCLFFBQVEsRUFBRSxHQUFHO29CQUNiLE9BQU8sRUFBRSxJQUFJO29CQUNiLFdBQVcsRUFBRSxLQUFLO2lCQUNuQixDQUFDO3FCQUNELFNBQVMsRUFBRSxDQUFDO1lBQ2pCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7OEdBbmZVLFlBQVksd0ZBZ0ViLGNBQWMsYUFDZCxrQkFBa0I7a0dBakVqQixZQUFZLGlVQUZaLENBQUMsNEJBQTRCLENBQUMsNkRBdUIzQixpQkFBaUIsd0tDM0VqQyxrRkFJQTs7MkZEa0RhLFlBQVk7a0JBTHhCLFNBQVM7K0JBQ0UsU0FBUyxhQUVSLENBQUMsNEJBQTRCLENBQUM7OzBCQWtFdEMsTUFBTTsyQkFBQyxjQUFjOzswQkFDckIsTUFBTTsyQkFBQyxrQkFBa0I7cUtBOUM1QixVQUFVO3NCQURULFNBQVM7dUJBQUMsS0FBSztnQkFJaEIsS0FBSztzQkFESixZQUFZO3VCQUFDLGlCQUFpQjtnQkFJL0IsTUFBTTtzQkFETCxLQUFLO2dCQUlOLE1BQU07c0JBREwsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixNQUFNO2dCQUlQLE1BQU07c0JBREwsTUFBTTtnQkFJUCxTQUFTO3NCQURSLE1BQU07Z0JBSVAsV0FBVztzQkFEVixNQUFNO2dCQUlQLFNBQVM7c0JBRFIsTUFBTTtnQkFJUCxLQUFLO3NCQURKLE1BQU07Z0JBSVAsTUFBTTtzQkFETCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2UsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElFdmVudCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB0eXBlIHsgTWFwRGVmYXVsdENvbmZpZywgTWFwVGlsZUxheWVyIH0gZnJvbSAnQGM4eS9vcHRpb25zJztcbmltcG9ydCB7XG4gIERhdGVQaXBlLFxuICBHZW9TZXJ2aWNlLFxuICBnZXR0ZXh0LFxuICBNYW5hZ2VkT2JqZWN0UmVhbHRpbWVTZXJ2aWNlLFxuICBzb3J0QnlQcmlvcml0eSxcbiAgV2lkZ2V0R2xvYmFsQXV0b1JlZnJlc2hTZXJ2aWNlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHR5cGUgKiBhcyBMIGZyb20gJ2xlYWZsZXQnO1xuaW1wb3J0IHsgZmxhdHRlbiwgaXNFbXB0eSwgaXNVbmRlZmluZWQsIHJlbW92ZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZyb21FdmVudCxcbiAgTkVWRVIsXG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIFN1YnNjcmlwdGlvblxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgZmlyc3QsIG1hcCwgc2Nhbiwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNYXBQb3B1cERpcmVjdGl2ZSB9IGZyb20gJy4vbWFwLXBvcHVwLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1xuICBDOHlNYXJrZXIsXG4gIEM4eU1hcmtlckF0dHJpYnV0ZXMsXG4gIGdldEM4eU1hcmtlcixcbiAgTWFwQ29uZmlnLFxuICBNQVBfREVGQVVMVF9DT05GSUcsXG4gIE1BUF9USUxFX0xBWUVSLFxuICBQb3NpdGlvbk1hbmFnZWRPYmplY3Rcbn0gZnJvbSAnLi9tYXAubW9kZWwnO1xuaW1wb3J0IHsgTWFwU2VydmljZSB9IGZyb20gJy4vbWFwLnNlcnZpY2UnO1xuaW1wb3J0IHsgaXNOdWxsLCBldmVyeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1tYXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFwLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbTWFuYWdlZE9iamVjdFJlYWx0aW1lU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgTWFwQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSBsZWFmbGV0IG1hcCBvYmplY3QuXG4gICAqL1xuICBtYXA6IEwuTWFwO1xuICAvKipcbiAgICogVGhlIG1hcmtlcnMgcGxhY2VkIG9uIHRoZSBtYXAuXG4gICAqL1xuICBtYXJrZXJzOiBBcnJheTxDOHlNYXJrZXIgfCBMLk1hcmtlcj4gPSBbXTtcbiAgLyoqXG4gICAqIFRoZSBsZWFmbGV0IHJlcHJlc2VudGF0aW9uIHVzZWQuXG4gICAqL1xuICBsZWFmbGV0OiB0eXBlb2YgTDtcbiAgLyoqXG4gICAqIFRlbGxzIGlmIHRoZSBtYXAgd2FzIGFscmVhZHkgaW5pdGlhbGl6ZWQuXG4gICAqL1xuICBpc0luaXQgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdtYXAnKVxuICBtYXBFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gIEBDb250ZW50Q2hpbGQoTWFwUG9wdXBEaXJlY3RpdmUpXG4gIHBvcHVwOiBNYXBQb3B1cERpcmVjdGl2ZTtcblxuICBASW5wdXQoKVxuICBjb25maWc6IE1hcENvbmZpZyA9IHt9O1xuXG4gIEBJbnB1dCgpXG4gIGFzc2V0czogUG9zaXRpb25NYW5hZ2VkT2JqZWN0IHwgUG9zaXRpb25NYW5hZ2VkT2JqZWN0W107XG5cbiAgQElucHV0KClcbiAgcG9seWxpbmUkOiBPYnNlcnZhYmxlPEwuTGF0TG5nRXhwcmVzc2lvbltdIHwgTC5MYXRMbmdFeHByZXNzaW9uW11bXT4gPSBORVZFUjtcblxuICBASW5wdXQoKVxuICBwb2x5bGluZU9wdGlvbnM6IEwuUG9seWxpbmVPcHRpb25zO1xuXG4gIEBPdXRwdXQoKVxuICBvblJlYWx0aW1lVXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxQb3NpdGlvbk1hbmFnZWRPYmplY3Q+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uTW92ZTogT2JzZXJ2YWJsZTxMLkxlYWZsZXRFdmVudD47XG5cbiAgQE91dHB1dCgpXG4gIG9uTW92ZUVuZDogT2JzZXJ2YWJsZTxMLkxlYWZsZXRFdmVudD47XG5cbiAgQE91dHB1dCgpXG4gIG9uWm9vbVN0YXJ0OiBPYnNlcnZhYmxlPEwuTGVhZmxldEV2ZW50PjtcblxuICBAT3V0cHV0KClcbiAgb25ab29tRW5kOiBPYnNlcnZhYmxlPEwuTGVhZmxldEV2ZW50PjtcblxuICBAT3V0cHV0KClcbiAgb25NYXAgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEwuTWFwIHwgbnVsbD4obnVsbCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uSW5pdCA9IG5ldyBFdmVudEVtaXR0ZXI8dHlwZW9mIEw+KCk7XG5cbiAgcHJvdGVjdGVkIHJlYWx0aW1lU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCB1bnN1YnNjcmliZVRyaWdnZXIkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJvdGVjdGVkIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgbW9SZWFsdGltZVNlcnZpY2U6IE1hbmFnZWRPYmplY3RSZWFsdGltZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG1hcFNlcnZpY2U6IE1hcFNlcnZpY2UsXG4gICAgQEluamVjdChNQVBfVElMRV9MQVlFUikgcHJvdGVjdGVkIGxheWVycyQ6IE9ic2VydmFibGU8TWFwVGlsZUxheWVyW10+LFxuICAgIEBJbmplY3QoTUFQX0RFRkFVTFRfQ09ORklHKVxuICAgIHByb3RlY3RlZCBkZWZhdWx0Q29uZmlnJDogT2JzZXJ2YWJsZTxNYXBEZWZhdWx0Q29uZmlnPixcbiAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZ2VvOiBHZW9TZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBkYXRlUGlwZTogRGF0ZVBpcGUsXG4gICAgcHJvdGVjdGVkIHdpZGdldEdsb2JhbEF1dG9SZWZyZXNoU2VydmljZTogV2lkZ2V0R2xvYmFsQXV0b1JlZnJlc2hTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaW5pdE91dHB1dHMoKTtcbiAgfVxuXG4gIHN0YXJ0UmVhbHRpbWUoKSB7XG4gICAgaWYgKCF0aGlzLmFzc2V0cyB8fCAoQXJyYXkuaXNBcnJheSh0aGlzLmFzc2V0cykgJiYgdGhpcy5hc3NldHMubGVuZ3RoID4gMSkpIHtcbiAgICAgIHRoaXMuY29uZmlnLnJlYWx0aW1lID0gZmFsc2U7XG4gICAgICB0aGlzLnN0b3BSZWFsdGltZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBhc3NldCA9IEFycmF5LmlzQXJyYXkodGhpcy5hc3NldHMpID8gdGhpcy5hc3NldHNbMF0gOiB0aGlzLmFzc2V0cztcbiAgICB0aGlzLnJlYWx0aW1lU3Vic2NyaXB0aW9uID0gdGhpcy5tb1JlYWx0aW1lU2VydmljZVxuICAgICAgLm9uVXBkYXRlJChhc3NldClcbiAgICAgIC5zdWJzY3JpYmUoKGFzc2V0OiBQb3NpdGlvbk1hbmFnZWRPYmplY3QpID0+IHtcbiAgICAgICAgY29uc3QgbWFya2VyID0gdGhpcy5maW5kTWFya2VyKGFzc2V0LmlkKTtcbiAgICAgICAgY29uc3QgaWNvbiA9IHRoaXMuZ2V0QXNzZXRJY29uKGFzc2V0KTtcbiAgICAgICAgbWFya2VyLnNldEljb24oaWNvbik7XG4gICAgICAgIG1hcmtlci5zZXRMYXRMbmcodGhpcy5nZW8uZ2V0TGF0TG9uZyhhc3NldCkpO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmFzc2V0cykpIHtcbiAgICAgICAgICB0aGlzLmFzc2V0c1swXSA9IGFzc2V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuYXNzZXRzID0gYXNzZXQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tb3ZlVG9Qb3NpdGlvbk9mTW8oYXNzZXQpO1xuICAgICAgICB0aGlzLm9uUmVhbHRpbWVVcGRhdGUuZW1pdChhc3NldCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG1vdmVUb1Bvc2l0aW9uT2ZNbyhwb3NpdGlvbnM6IFBvc2l0aW9uTWFuYWdlZE9iamVjdCB8IFBvc2l0aW9uTWFuYWdlZE9iamVjdFtdKSB7XG4gICAgY29uc3QgcG9zaXRpb24gPSBBcnJheS5pc0FycmF5KHBvc2l0aW9ucykgPyBwb3NpdGlvbnNbMF0gOiBwb3NpdGlvbnM7XG4gICAgaWYgKHRoaXMuY29uZmlnLmZvbGxvdykge1xuICAgICAgdGhpcy5tYXAuc2V0VmlldyhbcG9zaXRpb24uYzh5X1Bvc2l0aW9uLmxhdCwgcG9zaXRpb24uYzh5X1Bvc2l0aW9uLmxuZ10pO1xuICAgIH1cbiAgfVxuXG4gIHN0b3BSZWFsdGltZSgpIHtcbiAgICBpZiAodGhpcy5yZWFsdGltZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5yZWFsdGltZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGZpbmRNYXJrZXIobW9PcklkOiBzdHJpbmcgfCBJRXZlbnQgfCBQb3NpdGlvbk1hbmFnZWRPYmplY3QpIHtcbiAgICBjb25zdCBnZXRJZCA9IG1vT3JJZCA9PiAodHlwZW9mIG1vT3JJZCA9PT0gJ3N0cmluZycgPyBtb09ySWQgOiBtb09ySWQ/LmlkKTtcbiAgICByZXR1cm4gdGhpcy5tYXJrZXJzLmZpbmQoXG4gICAgICAobWFya2VyOiBDOHlNYXJrZXIpID0+XG4gICAgICAgIG1hcmtlci5hc3NldD8uaWQgPT09IGdldElkKG1vT3JJZCkgfHwgbWFya2VyLmV2ZW50Py5pZCA9PT0gZ2V0SWQobW9PcklkKVxuICAgICk7XG4gIH1cblxuICBhZGRNYXJrZXJUb01hcChtYXJrZXI6IEM4eU1hcmtlciB8IEwuTWFya2VyKSB7XG4gICAgdGhpcy5tYXJrZXJzLnB1c2gobWFya2VyKTtcbiAgICBtYXJrZXIuYWRkVG8odGhpcy5tYXApO1xuICB9XG5cbiAgZ2V0QXNzZXRNYXJrZXIoYXNzZXQ6IFBvc2l0aW9uTWFuYWdlZE9iamVjdCkge1xuICAgIGlmICghYXNzZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpY29uID0gdGhpcy5nZXRBc3NldEljb24oYXNzZXQpO1xuICAgIGNvbnN0IGxlYWZsZXRNYXJrZXIgPSB0aGlzLmxlYWZsZXQubWFya2VyKHRoaXMuZ2VvLmdldExhdExvbmcoYXNzZXQpLCB7XG4gICAgICBpY29uXG4gICAgfSk7XG4gICAgY29uc3QgbWFya2VyID0gZ2V0Qzh5TWFya2VyKGxlYWZsZXRNYXJrZXIsIGFzc2V0KTtcbiAgICB0aGlzLmJpbmRQb3B1cChtYXJrZXIsIGFzc2V0KTtcblxuICAgIHJldHVybiBtYXJrZXI7XG4gIH1cblxuICBnZXRUcmFja2luZ01hcmtlcihldmVudDogSUV2ZW50KSB7XG4gICAgaWYgKCFldmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGljb24gPSB0aGlzLmdldFRyYWNraW5nSWNvbigpO1xuICAgIGNvbnN0IGxlYWZsZXRNYXJrZXIgPSB0aGlzLmxlYWZsZXQubWFya2VyKHRoaXMuZ2VvLmdldExhdExvbmcoZXZlbnQpLCB7IGljb24gfSk7XG4gICAgY29uc3QgbWFya2VyID0gZ2V0Qzh5TWFya2VyKGxlYWZsZXRNYXJrZXIsIG51bGwsIGV2ZW50KTtcbiAgICB0aGlzLmJpbmRQb3B1cChtYXJrZXIsIGV2ZW50KTtcblxuICAgIHJldHVybiBtYXJrZXI7XG4gIH1cblxuICBnZXRBc3NldEljb24oYXNzZXQ6IFBvc2l0aW9uTWFuYWdlZE9iamVjdCkge1xuICAgIGNvbnN0IGFzc2V0VHlwZUljb24gPSB0aGlzLmNvbmZpZy5pY29uIHx8IGFzc2V0Lmljb24/Lm5hbWU7XG4gICAgY29uc3Qgc3RhdHVzID0gTWFwU2VydmljZS5nZXRTdGF0dXMoYXNzZXQpO1xuICAgIGNvbnN0IGNvbG9yID0gdGhpcy5jb25maWcuY29sb3IgPyBgc3R5bGU9J2NvbG9yOiAke3RoaXMuY29uZmlnLmNvbG9yfTsnYCA6ICcnO1xuICAgIGNvbnN0IGljb24gPSB0aGlzLmxlYWZsZXQuZGl2SWNvbih7XG4gICAgICBodG1sOiBgPGRpdiBjbGFzcz1cImRsdC1jOHktaWNvbi1tYXJrZXIgaWNvbi0zeCAke3N0YXR1c31cIiAke2NvbG9yfT48aSBjbGFzcz1cImRsdC1jOHktaWNvbi0ke1xuICAgICAgICBhc3NldFR5cGVJY29uIHx8ICdkYXRhLXRyYW5zZmVyJ1xuICAgICAgfVwiIC8+PC9kaXY+YCxcbiAgICAgIGNsYXNzTmFtZTogJ2M4eS1tYXAtbWFya2VyLWljb24nLFxuICAgICAgLy8gaWNvbkFuY2hvciBpcyB1c2VkIHRvIHNldCB0aGUgbWFya2VyIGFjY3VyYXRlbHkgb24gY2xpY2tcbiAgICAgIGljb25BbmNob3I6IFs4LCA4XVxuICAgIH0pO1xuICAgIHJldHVybiBpY29uO1xuICB9XG5cbiAgZ2V0VHJhY2tpbmdJY29uKCkge1xuICAgIGNvbnN0IGljb24gPSB0aGlzLmxlYWZsZXQuZGl2SWNvbih7XG4gICAgICBodG1sOiBgPGRpdiBjbGFzcz1cImRsdC1jOHktaWNvbi1tYXJrZXIgaWNvbi0zeCB0ZXh0LW11dGVkXCI+PC9kaXY+YCxcbiAgICAgIGNsYXNzTmFtZTogJ2M4eS1tYXAtbWFya2VyLWljb24nLFxuICAgICAgLy8gaWNvbkFuY2hvciBpcyB1c2VkIHRvIHNldCB0aGUgbWFya2VyIGFjY3VyYXRlbHkgb24gY2xpY2tcbiAgICAgIGljb25BbmNob3I6IFs4LCA4XVxuICAgIH0pO1xuICAgIHJldHVybiBpY29uO1xuICB9XG5cbiAgcmVtb3ZlTWFya2VyKG1hcmtlcjogQzh5TWFya2VyIHwgTC5NYXJrZXIpIHtcbiAgICBpZiAobWFya2VyKSB7XG4gICAgICBtYXJrZXIucmVtb3ZlKCk7XG4gICAgICByZW1vdmUodGhpcy5tYXJrZXJzLCBtID0+IG0gPT09IG1hcmtlcik7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJNYXJrZXJzKGZyYWdtZW50PzogQzh5TWFya2VyQXR0cmlidXRlcykge1xuICAgIGNvbnN0IG1hdGNoaW5nTWFya2VycyA9IG1hcmtlciA9PiAhZnJhZ21lbnQgfHwgISFtYXJrZXJbZnJhZ21lbnRdO1xuICAgIHRoaXMubWFya2Vycy5maWx0ZXIobWF0Y2hpbmdNYXJrZXJzKS5mb3JFYWNoKG1hcmtlciA9PiBtYXJrZXIucmVtb3ZlKCkpO1xuICAgIHRoaXMubWFya2VycyA9IHRoaXMubWFya2Vycy5maWx0ZXIobWFya2VyID0+ICFtYXRjaGluZ01hcmtlcnMobWFya2VyKSk7XG4gIH1cblxuICByZWZyZXNoTWFya2VycygpIHtcbiAgICB0aGlzLmNsZWFyTWFya2VycygpO1xuICAgIGxldCBhc3NldHM6IFBvc2l0aW9uTWFuYWdlZE9iamVjdFtdID0gW107XG4gICAgaWYgKCFpc1VuZGVmaW5lZCh0aGlzLmFzc2V0cykpIHtcbiAgICAgIGFzc2V0cyA9IEFycmF5LmlzQXJyYXkodGhpcy5hc3NldHMpID8gdGhpcy5hc3NldHMgOiBbdGhpcy5hc3NldHNdO1xuICAgIH1cbiAgICBhc3NldHMuZm9yRWFjaChhc3NldCA9PiB7XG4gICAgICBjb25zdCBtYXJrZXIgPSB0aGlzLmdldEFzc2V0TWFya2VyKGFzc2V0KTtcbiAgICAgIHRoaXMuYWRkTWFya2VyVG9NYXAobWFya2VyKTtcbiAgICB9KTtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmNlbnRlcikge1xuICAgICAgdGhpcy56b29tVG9Cb3VuZChhc3NldHMpO1xuICAgIH1cbiAgICB0aGlzLnRvZ2dsZUNvbnRyb2xzKCk7XG4gIH1cblxuICBjZW50ZXIoKSB7XG4gICAgdGhpcy5tYXA/LnNldFZpZXcodGhpcy5jb25maWcuY2VudGVyKTtcbiAgfVxuXG4gIHJlZnJlc2goKSB7XG4gICAgaWYgKHRoaXMuaXNJbml0KSB7XG4gICAgICB0aGlzLnJlZnJlc2hNYXJrZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmxlYWZsZXQgPSBhd2FpdCB0aGlzLm1hcFNlcnZpY2UuZ2V0TGVhZmxldCgpO1xuICAgIGNvbnN0IGluaXRpYWxpemVkJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMubGF5ZXJzJCwgdGhpcy5kZWZhdWx0Q29uZmlnJF0pLnBpcGUoXG4gICAgICBmaXJzdCgpLFxuICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVUcmlnZ2VyJClcbiAgICApO1xuXG4gICAgaW5pdGlhbGl6ZWQkLnN1YnNjcmliZSgoW2xheWVycywgZGVmYXVsdENvbmZpZ10pID0+IHtcbiAgICAgIHRoaXMuaW5pdE1hcChsYXllcnMsIGRlZmF1bHRDb25maWcpO1xuICAgICAgdGhpcy5yZWZyZXNoTWFya2VycygpO1xuICAgIH0pO1xuXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5wb2x5bGluZSQsIGluaXRpYWxpemVkJF0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChbZXhwcmVzc2lvbnNdKSA9PiB0aGlzLmxlYWZsZXQucG9seWxpbmUoZXhwcmVzc2lvbnMsIHRoaXMucG9seWxpbmVPcHRpb25zKSksXG4gICAgICAgIHNjYW4oKG9sZFBvbHlsaW5lLCBuZXdQb2x5bGluZSkgPT4ge1xuICAgICAgICAgIGlmICghIW9sZFBvbHlsaW5lKSB7XG4gICAgICAgICAgICB0aGlzLm1hcC5yZW1vdmVMYXllcihvbGRQb2x5bGluZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghIW5ld1BvbHlsaW5lKSB7XG4gICAgICAgICAgICBuZXdQb2x5bGluZS5hZGRUbyh0aGlzLm1hcCk7XG4gICAgICAgICAgICB0aGlzLmZpdEJvdW5kcyhuZXdQb2x5bGluZS5nZXRCb3VuZHMoKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG5ld1BvbHlsaW5lO1xuICAgICAgICB9LCBudWxsKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVUcmlnZ2VyJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm1hcCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5hc3NldHM/LmN1cnJlbnRWYWx1ZSAmJiAhY2hhbmdlcy5hc3NldHM/LmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLnJlZnJlc2hNYXJrZXJzKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMuY29uZmlnPy5jdXJyZW50VmFsdWUgJiYgIWNoYW5nZXMuY29uZmlnPy5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5jaGFuZ2VDb25maWcoY2hhbmdlcy5jb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlQWxsTGlzdGVuZXJzKCk7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVuc3Vic2NyaWJlQWxsTGlzdGVuZXJzKCkge1xuICAgIHRoaXMudW5zdWJzY3JpYmVUcmlnZ2VyJC5uZXh0KCk7XG4gICAgdGhpcy5zdG9wUmVhbHRpbWUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0T3V0cHV0cygpIHtcbiAgICBjb25zdCBnZXRNYXBFdmVudE9ic2VydmFibGUgPSBldmVudE5hbWUgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMub25NYXAucGlwZShcbiAgICAgICAgZmlsdGVyKG1hcCA9PiAhIW1hcCksXG4gICAgICAgIHN3aXRjaE1hcChtYXAgPT4gZnJvbUV2ZW50PEwuTGVhZmxldEV2ZW50PihtYXAsIGV2ZW50TmFtZSkpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKVxuICAgICAgKTtcbiAgICB9O1xuICAgIGNvbnN0IGRyYWdTdGFydCQgPSBnZXRNYXBFdmVudE9ic2VydmFibGUoJ2RyYWdzdGFydCcpO1xuICAgIGNvbnN0IG1vdmUkID0gZ2V0TWFwRXZlbnRPYnNlcnZhYmxlKCdtb3ZlJyk7XG4gICAgY29uc3QgZHJhZ0VuZCQgPSBnZXRNYXBFdmVudE9ic2VydmFibGUoJ2RyYWdlbmQnKTtcblxuICAgIHRoaXMub25Nb3ZlID0gZHJhZ1N0YXJ0JC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IG1vdmUkLnBpcGUodGFrZVVudGlsKGRyYWdFbmQkKSkpLFxuICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVUcmlnZ2VyJClcbiAgICApO1xuXG4gICAgdGhpcy5vbk1vdmVFbmQgPSBnZXRNYXBFdmVudE9ic2VydmFibGUoJ21vdmVlbmQnKTtcblxuICAgIHRoaXMub25ab29tRW5kID0gZ2V0TWFwRXZlbnRPYnNlcnZhYmxlKCd6b29tZW5kJyk7XG5cbiAgICB0aGlzLm9uWm9vbVN0YXJ0ID0gZ2V0TWFwRXZlbnRPYnNlcnZhYmxlKCd6b29tc3RhcnQnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0TWFwKGxheWVyczogTWFwVGlsZUxheWVyW10sIGRlZmF1bHRDb25maWc6IE1hcENvbmZpZyk6IHZvaWQge1xuICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgICAgY2VudGVyOiB0aGlzLmNvbmZpZy5jZW50ZXIgfHwgZGVmYXVsdENvbmZpZy5jZW50ZXIsXG4gICAgICB6b29tU25hcDogMCxcbiAgICAgIHpvb206IHRoaXMuY29uZmlnLnpvb21MZXZlbCB8fCBkZWZhdWx0Q29uZmlnLnpvb21MZXZlbFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5tYXApIHtcbiAgICAgIHRoaXMubWFwLnJlbW92ZSgpO1xuICAgIH1cbiAgICB0aGlzLm1hcCA9IHRoaXMubGVhZmxldC5tYXAodGhpcy5tYXBFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIGRlZmF1bHRPcHRpb25zKTtcblxuICAgIHRoaXMubWFwLmF0dHJpYnV0aW9uQ29udHJvbC5zZXRQcmVmaXgoJycpO1xuXG4gICAgdGhpcy5hZGRMYXllcnMobGF5ZXJzKTtcblxuICAgIHRoaXMuaGFuZGxlTW9iaWxlKCk7XG5cbiAgICB0aGlzLm9uTWFwLm5leHQodGhpcy5tYXApO1xuXG4gICAgdGhpcy5pc0luaXQgPSB0cnVlO1xuICAgIHRoaXMub25Jbml0LmVtaXQodGhpcy5sZWFmbGV0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVNb2JpbGUoKSB7XG4gICAgLy8gYWRkaW5nIGV2ZW50IGxpc3RlbmVyIHRvIGRvIG1vYmlsZSAyIGZpbmdlciBzY3JvbGxpbmdcbiAgICBpZiAodGhpcy5sZWFmbGV0LkJyb3dzZXIubW9iaWxlKSB7XG4gICAgICBjb25zdCB0b3VjaE1zZyA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ1VzZSB0d28gZmluZ2VycyB0byBtb3ZlIHRoZSBtYXAuJykpO1xuICAgICAgdGhpcy5tYXAuZHJhZ2dpbmcuZGlzYWJsZSgpO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5tYXAuZ2V0Q29udGFpbmVyKCk7XG4gICAgICBjb250YWluZXIuc2V0QXR0cmlidXRlKCdkYXRhLXRvdWNoLXdhcm5pbmctY29udGVudCcsIHRvdWNoTXNnKTtcbiAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgZXZlbnQgPT4gdGhpcy5oYW5kbGVUb3VjaChldmVudCkpO1xuICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIGV2ZW50ID0+IHRoaXMuaGFuZGxlVG91Y2goZXZlbnQpKTtcbiAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIGV2ZW50ID0+IHRoaXMuaGFuZGxlVG91Y2goZXZlbnQpKTtcbiAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGNhbmNlbCcsIGV2ZW50ID0+IHRoaXMuaGFuZGxlVG91Y2goZXZlbnQpKTtcbiAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGV2ZW50ID0+IHRoaXMuaGFuZGxlVG91Y2goZXZlbnQpKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYWRkTGF5ZXJzKGxheWVyczogTWFwVGlsZUxheWVyW10pIHtcbiAgICBjb25zdCBmbGF0dGVuTGF5ZXJzOiBNYXBUaWxlTGF5ZXJbXSA9IGZsYXR0ZW4obGF5ZXJzKTtcbiAgICBjb25zdCBiYXNlTGF5ZXJzOiBMLkNvbnRyb2wuTGF5ZXJzT2JqZWN0ID0ge307XG4gICAgY29uc3Qgb3ZlcmxheXM6IEwuQ29udHJvbC5MYXllcnNPYmplY3QgPSB7fTtcbiAgICBsZXQgZmlyc3RMYXllciA9IHRydWU7XG4gICAgZm9yIChjb25zdCBsYXllciBvZiBzb3J0QnlQcmlvcml0eShmbGF0dGVuTGF5ZXJzKSkge1xuICAgICAgY29uc3Qgb2JqZWN0VG9BZGRUbyA9IGxheWVyLmlzT3ZlcmxheSA/IG92ZXJsYXlzIDogYmFzZUxheWVycztcbiAgICAgIGlmIChvYmplY3RUb0FkZFRvW2xheWVyLmxhYmVsXSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGlsZXMgPSB0aGlzLmxlYWZsZXQudGlsZUxheWVyKGxheWVyLmxheWVyVXJsLCBsYXllci5vcHRpb25zKTtcbiAgICAgIGlmICghbGF5ZXIuaXNPdmVybGF5ICYmIGZpcnN0TGF5ZXIpIHtcbiAgICAgICAgZmlyc3RMYXllciA9IGZhbHNlO1xuICAgICAgICB0aWxlcy5hZGRUbyh0aGlzLm1hcCk7XG4gICAgICB9XG4gICAgICBvYmplY3RUb0FkZFRvW2xheWVyLmxhYmVsXSA9IHRpbGVzO1xuICAgIH1cbiAgICBpZiAoZmxhdHRlbkxheWVycy5sZW5ndGggPiAxKSB7XG4gICAgICB0aGlzLmxlYWZsZXQuY29udHJvbC5sYXllcnMoYmFzZUxheWVycywgb3ZlcmxheXMsIHsgcG9zaXRpb246ICdib3R0b21sZWZ0JyB9KS5hZGRUbyh0aGlzLm1hcCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNoYW5nZUNvbmZpZyhjaGFuZ2U6IFNpbXBsZUNoYW5nZSkge1xuICAgIGlmICh0aGlzLmhhc0NoYW5nZWQoY2hhbmdlLCAnem9vbUxldmVsJykpIHtcbiAgICAgIHRoaXMubWFwLnNldFpvb20odGhpcy5jb25maWcuem9vbUxldmVsKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNDaGFuZ2VkKGNoYW5nZSwgJ2NlbnRlcicpICYmIGV2ZXJ5KGNoYW5nZS5jdXJyZW50VmFsdWUuY2VudGVyLCBwID0+ICFpc051bGwocCkpKSB7XG4gICAgICB0aGlzLm1hcC5zZXRWaWV3KGNoYW5nZS5jdXJyZW50VmFsdWUuY2VudGVyKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNDaGFuZ2VkKGNoYW5nZSwgJ2ljb24nKSB8fCB0aGlzLmhhc0NoYW5nZWQoY2hhbmdlLCAnY29sb3InKSkge1xuICAgICAgdGhpcy5yZWZyZXNoTWFya2VycygpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc0NoYW5nZWQoY2hhbmdlLCAncmVhbHRpbWUnKSAmJiBjaGFuZ2UuY3VycmVudFZhbHVlLnJlYWx0aW1lKSB7XG4gICAgICB0aGlzLnN0YXJ0UmVhbHRpbWUoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlLmN1cnJlbnRWYWx1ZS5yZWFsdGltZSA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuc3RvcFJlYWx0aW1lKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGFzQ2hhbmdlZChjaGFuZ2UsICdmb2xsb3cnKSkge1xuICAgICAgdGhpcy5tb3ZlVG9Qb3NpdGlvbk9mTW8odGhpcy5hc3NldHMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc0NoYW5nZWQoY2hhbmdlLCAnZGlzYWJsZVBhbicpIHx8IHRoaXMuaGFzQ2hhbmdlZChjaGFuZ2UsICdkaXNhYmxlWm9vbScpKSB7XG4gICAgICB0aGlzLnRvZ2dsZUNvbnRyb2xzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhc0NoYW5nZWQoY2hhbmdlOiBTaW1wbGVDaGFuZ2UsIHByb3A6IGtleW9mIE1hcENvbmZpZykge1xuICAgIHJldHVybiBjaGFuZ2UuY3VycmVudFZhbHVlW3Byb3BdICE9PSBjaGFuZ2UucHJldmlvdXNWYWx1ZVtwcm9wXTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVDb250cm9scygpIHtcbiAgICBpZiAodGhpcy5jb25maWcuZGlzYWJsZVpvb20pIHtcbiAgICAgIHRoaXMubWFwLnJlbW92ZUNvbnRyb2wodGhpcy5tYXAuem9vbUNvbnRyb2wpO1xuICAgICAgdGhpcy5tYXAuc2Nyb2xsV2hlZWxab29tLmRpc2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tYXAuYWRkQ29udHJvbCh0aGlzLm1hcC56b29tQ29udHJvbCk7XG4gICAgICB0aGlzLm1hcC5zY3JvbGxXaGVlbFpvb20uZW5hYmxlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbmZpZy5kaXNhYmxlUGFuKSB7XG4gICAgICB0aGlzLm1hcC5kcmFnZ2luZy5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWFwLmRyYWdnaW5nLmVuYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVG91Y2goZTogRXZlbnQpIHtcbiAgICAvLyBEaXNyZWdhcmQgdG91Y2ggZXZlbnRzIG9uIHRoZSBtaW5pbWFwIGlmIHByZXNlbnRcbiAgICBjb25zdCBpZ25vcmVMaXN0ID0gW1xuICAgICAgJ2xlYWZsZXQtY29udHJvbC1taW5pbWFwJyxcbiAgICAgICdsZWFmbGV0LWludGVyYWN0aXZlJyxcbiAgICAgICdsZWFmbGV0LXBvcHVwLWNvbnRlbnQnLFxuICAgICAgJ2xlYWZsZXQtcG9wdXAtY29udGVudC13cmFwcGVyJyxcbiAgICAgICdsZWFmbGV0LXBvcHVwLWNsb3NlLWJ1dHRvbicsXG4gICAgICAnbGVhZmxldC1jb250cm9sLXpvb20taW4nLFxuICAgICAgJ2xlYWZsZXQtY29udHJvbC16b29tLW91dCdcbiAgICBdO1xuXG4gICAgbGV0IGlnbm9yZUVsZW1lbnQgPSBmYWxzZTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlnbm9yZUxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmxlYWZsZXQuRG9tVXRpbC5oYXNDbGFzcyhlLnRhcmdldCBhcyBIVE1MRWxlbWVudCwgaWdub3JlTGlzdFtpXSkpIHtcbiAgICAgICAgaWdub3JlRWxlbWVudCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5tYXAuZ2V0Q29udGFpbmVyKCk7XG4gICAgaWYgKGlnbm9yZUVsZW1lbnQpIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5sZWFmbGV0LkRvbVV0aWwuaGFzQ2xhc3MoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQsICdsZWFmbGV0LWludGVyYWN0aXZlJykgJiZcbiAgICAgICAgZS50eXBlID09PSAndG91Y2htb3ZlJyAmJlxuICAgICAgICAoZSBhcyBUb3VjaEV2ZW50KS50b3VjaGVzLmxlbmd0aCA9PT0gMVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubGVhZmxldC5Eb21VdGlsLmFkZENsYXNzKGNvbnRhaW5lciwgJ3RvdWNoLXdhcm5pbmcnKTtcbiAgICAgICAgdGhpcy5tYXAuZHJhZ2dpbmcuZGlzYWJsZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sZWFmbGV0LkRvbVV0aWwucmVtb3ZlQ2xhc3MoY29udGFpbmVyLCAndG91Y2gtd2FybmluZycpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChlLnR5cGUgIT09ICd0b3VjaG1vdmUnICYmIGUudHlwZSAhPT0gJ3RvdWNoc3RhcnQnKSB7XG4gICAgICB0aGlzLmxlYWZsZXQuRG9tVXRpbC5yZW1vdmVDbGFzcyhjb250YWluZXIsICd0b3VjaC13YXJuaW5nJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICgoZSBhcyBUb3VjaEV2ZW50KS50b3VjaGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5sZWFmbGV0LkRvbVV0aWwuYWRkQ2xhc3MoY29udGFpbmVyLCAndG91Y2gtd2FybmluZycpO1xuICAgICAgdGhpcy5tYXAuZHJhZ2dpbmcuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1hcC5kcmFnZ2luZy5lbmFibGUoKTtcbiAgICAgIHRoaXMubGVhZmxldC5Eb21VdGlsLnJlbW92ZUNsYXNzKGNvbnRhaW5lciwgJ3RvdWNoLXdhcm5pbmcnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHpvb21Ub0JvdW5kKGFzc2V0czogUG9zaXRpb25NYW5hZ2VkT2JqZWN0W10pIHtcbiAgICBpZiAoaXNFbXB0eShhc3NldHMpKSByZXR1cm47XG5cbiAgICBjb25zdCBib3VuZHM6IFtudW1iZXIsIG51bWJlcl1bXSA9IGFzc2V0cy5tYXAoYXNzZXQgPT4gW1xuICAgICAgYXNzZXQuYzh5X1Bvc2l0aW9uLmxhdCxcbiAgICAgIGFzc2V0LmM4eV9Qb3NpdGlvbi5sbmdcbiAgICBdKTtcbiAgICBpZiAoYXNzZXRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMubWFwLmZseVRvQm91bmRzKGJvdW5kcywgeyBhbmltYXRlOiBmYWxzZSB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5tYXAuZmx5VG8oXG4gICAgICBbYXNzZXRzWzBdLmM4eV9Qb3NpdGlvbi5sYXQsIGFzc2V0c1swXS5jOHlfUG9zaXRpb24ubG5nXSxcbiAgICAgIHRoaXMubWFwLm9wdGlvbnMuem9vbSxcbiAgICAgIHtcbiAgICAgICAgYW5pbWF0ZTogZmFsc2VcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmaXRCb3VuZHMoYm91bmRzOiBMLkxhdExuZ0JvdW5kcykge1xuICAgIGlmIChib3VuZHM/LmlzVmFsaWQoKSkge1xuICAgICAgdGhpcy5tYXAuZml0Qm91bmRzKGJvdW5kcywgdGhpcy5jb25maWcuZml0Qm91bmRzT3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBiaW5kUG9wdXAobWFya2VyOiBDOHlNYXJrZXIsIGNvbnRleHQ6IFBvc2l0aW9uTWFuYWdlZE9iamVjdCB8IElFdmVudCkge1xuICAgIGlmICh0aGlzLnBvcHVwKSB7XG4gICAgICBtYXJrZXIub24oJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICB0aGlzLnBvcHVwLnZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgICAgICAgY29uc3QgdmlldyA9IHRoaXMucG9wdXAudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5wb3B1cC50ZW1wbGF0ZSwge1xuICAgICAgICAgICRpbXBsaWNpdDogY29udGV4dFxuICAgICAgICB9KTtcbiAgICAgICAgdmlldy5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIG1hcmtlclxuICAgICAgICAgIC51bmJpbmRQb3B1cCgpXG4gICAgICAgICAgLmJpbmRQb3B1cCh0aGlzLnBvcHVwLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wcmV2aW91c1NpYmxpbmcsIHtcbiAgICAgICAgICAgIG9mZnNldDogWy0zLCAtNDBdLFxuICAgICAgICAgICAgbWF4V2lkdGg6IDE0MCxcbiAgICAgICAgICAgIGF1dG9QYW46IHRydWUsXG4gICAgICAgICAgICBjbG9zZUJ1dHRvbjogZmFsc2VcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5vcGVuUG9wdXAoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImM4eS1tYXBcIj5cbiAgPGRpdiAjbWFwPjwvZGl2PlxuPC9kaXY+XG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=
|
|
442
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL21hcC9tYXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vbWFwL21hcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUdOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQ0wsUUFBUSxFQUNSLFVBQVUsRUFDVixPQUFPLEVBQ1AsNEJBQTRCLEVBQzVCLGNBQWMsRUFDZCw4QkFBOEIsRUFDL0IsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDakYsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsU0FBUyxFQUNULEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxFQUVSLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUdMLFlBQVksRUFDWixrQkFBa0IsRUFDbEIsY0FBYyxFQUdmLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQU8zQyxNQUFNLE9BQU8s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S0FoRDVCLFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxLQUFLO2dCQUloQixLQUFLO3NCQURKLFlBQVk7dUJBQUMsaUJBQWlCO2dCQUkvQixNQUFNO3NCQURMLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLE1BQU07Z0JBSVAsTUFBTTtzQkFETCxNQUFNO2dCQUlQLFNBQVM7c0JBRFIsTUFBTTtnQkFJUCxXQUFXO3NCQURWLE1BQU07Z0JBSVAsU0FBUztzQkFEUixNQUFNO2dCQUlQLEtBQUs7c0JBREosTUFBTTtnQkFJUCxNQUFNO3NCQURMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZSxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgSUV2ZW50IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgRGF0ZVBpcGUsXG4gIEdlb1NlcnZpY2UsXG4gIGdldHRleHQsXG4gIE1hbmFnZWRPYmplY3RSZWFsdGltZVNlcnZpY2UsXG4gIHNvcnRCeVByaW9yaXR5LFxuICBXaWRnZXRHbG9iYWxBdXRvUmVmcmVzaFNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IE1hcERlZmF1bHRDb25maWcsIE1hcFRpbGVMYXllciB9IGZyb20gJ0BjOHkvb3B0aW9ucyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgdHlwZSAqIGFzIEwgZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQgeyBldmVyeSwgZmxhdHRlbiwgaXNFbXB0eSwgaXNOdWxsLCBpc1VuZGVmaW5lZCwgcmVtb3ZlIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgZnJvbUV2ZW50LFxuICBORVZFUixcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgU3Vic2NyaXB0aW9uXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBmaXJzdCwgbWFwLCBzY2FuLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1hcFBvcHVwRGlyZWN0aXZlIH0gZnJvbSAnLi9tYXAtcG9wdXAuZGlyZWN0aXZlJztcbmltcG9ydCB7XG4gIEM4eU1hcmtlcixcbiAgQzh5TWFya2VyQXR0cmlidXRlcyxcbiAgZ2V0Qzh5TWFya2VyLFxuICBNQVBfREVGQVVMVF9DT05GSUcsXG4gIE1BUF9USUxFX0xBWUVSLFxuICBNYXBDb25maWcsXG4gIFBvc2l0aW9uTWFuYWdlZE9iamVjdFxufSBmcm9tICcuL21hcC5tb2RlbCc7XG5pbXBvcnQgeyBNYXBTZXJ2aWNlIH0gZnJvbSAnLi9tYXAuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1tYXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWFwLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbTWFuYWdlZE9iamVjdFJlYWx0aW1lU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgTWFwQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSBsZWFmbGV0IG1hcCBvYmplY3QuXG4gICAqL1xuICBtYXA6IEwuTWFwO1xuICAvKipcbiAgICogVGhlIG1hcmtlcnMgcGxhY2VkIG9uIHRoZSBtYXAuXG4gICAqL1xuICBtYXJrZXJzOiBBcnJheTxDOHlNYXJrZXIgfCBMLk1hcmtlcj4gPSBbXTtcbiAgLyoqXG4gICAqIFRoZSBsZWFmbGV0IHJlcHJlc2VudGF0aW9uIHVzZWQuXG4gICAqL1xuICBsZWFmbGV0OiB0eXBlb2YgTDtcbiAgLyoqXG4gICAqIFRlbGxzIGlmIHRoZSBtYXAgd2FzIGFscmVhZHkgaW5pdGlhbGl6ZWQuXG4gICAqL1xuICBpc0luaXQgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdtYXAnKVxuICBtYXBFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gIEBDb250ZW50Q2hpbGQoTWFwUG9wdXBEaXJlY3RpdmUpXG4gIHBvcHVwOiBNYXBQb3B1cERpcmVjdGl2ZTtcblxuICBASW5wdXQoKVxuICBjb25maWc6IE1hcENvbmZpZyA9IHt9O1xuXG4gIEBJbnB1dCgpXG4gIGFzc2V0czogUG9zaXRpb25NYW5hZ2VkT2JqZWN0IHwgUG9zaXRpb25NYW5hZ2VkT2JqZWN0W107XG5cbiAgQElucHV0KClcbiAgcG9seWxpbmUkOiBPYnNlcnZhYmxlPEwuTGF0TG5nRXhwcmVzc2lvbltdIHwgTC5MYXRMbmdFeHByZXNzaW9uW11bXT4gPSBORVZFUjtcblxuICBASW5wdXQoKVxuICBwb2x5bGluZU9wdGlvbnM6IEwuUG9seWxpbmVPcHRpb25zO1xuXG4gIEBPdXRwdXQoKVxuICBvblJlYWx0aW1lVXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxQb3NpdGlvbk1hbmFnZWRPYmplY3Q+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uTW92ZTogT2JzZXJ2YWJsZTxMLkxlYWZsZXRFdmVudD47XG5cbiAgQE91dHB1dCgpXG4gIG9uTW92ZUVuZDogT2JzZXJ2YWJsZTxMLkxlYWZsZXRFdmVudD47XG5cbiAgQE91dHB1dCgpXG4gIG9uWm9vbVN0YXJ0OiBPYnNlcnZhYmxlPEwuTGVhZmxldEV2ZW50PjtcblxuICBAT3V0cHV0KClcbiAgb25ab29tRW5kOiBPYnNlcnZhYmxlPEwuTGVhZmxldEV2ZW50PjtcblxuICBAT3V0cHV0KClcbiAgb25NYXAgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEwuTWFwIHwgbnVsbD4obnVsbCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uSW5pdCA9IG5ldyBFdmVudEVtaXR0ZXI8dHlwZW9mIEw+KCk7XG5cbiAgcHJvdGVjdGVkIHJlYWx0aW1lU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCB1bnN1YnNjcmliZVRyaWdnZXIkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJvdGVjdGVkIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIG1hcmtlclRpdGxlID0gZ2V0dGV4dCgnTWFya2VyIGF0IHBvc2l0aW9uIHt7bGF0fX0sIHt7bG5nfX0nKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgbW9SZWFsdGltZVNlcnZpY2U6IE1hbmFnZWRPYmplY3RSZWFsdGltZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG1hcFNlcnZpY2U6IE1hcFNlcnZpY2UsXG4gICAgQEluamVjdChNQVBfVElMRV9MQVlFUikgcHJvdGVjdGVkIGxheWVycyQ6IE9ic2VydmFibGU8TWFwVGlsZUxheWVyW10+LFxuICAgIEBJbmplY3QoTUFQX0RFRkFVTFRfQ09ORklHKVxuICAgIHByb3RlY3RlZCBkZWZhdWx0Q29uZmlnJDogT2JzZXJ2YWJsZTxNYXBEZWZhdWx0Q29uZmlnPixcbiAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZ2VvOiBHZW9TZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBkYXRlUGlwZTogRGF0ZVBpcGUsXG4gICAgcHJvdGVjdGVkIHdpZGdldEdsb2JhbEF1dG9SZWZyZXNoU2VydmljZTogV2lkZ2V0R2xvYmFsQXV0b1JlZnJlc2hTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaW5pdE91dHB1dHMoKTtcbiAgfVxuXG4gIHN0YXJ0UmVhbHRpbWUoKSB7XG4gICAgaWYgKCF0aGlzLmFzc2V0cyB8fCAoQXJyYXkuaXNBcnJheSh0aGlzLmFzc2V0cykgJiYgdGhpcy5hc3NldHMubGVuZ3RoID4gMSkpIHtcbiAgICAgIHRoaXMuY29uZmlnLnJlYWx0aW1lID0gZmFsc2U7XG4gICAgICB0aGlzLnN0b3BSZWFsdGltZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBhc3NldCA9IEFycmF5LmlzQXJyYXkodGhpcy5hc3NldHMpID8gdGhpcy5hc3NldHNbMF0gOiB0aGlzLmFzc2V0cztcbiAgICB0aGlzLnJlYWx0aW1lU3Vic2NyaXB0aW9uID0gdGhpcy5tb1JlYWx0aW1lU2VydmljZVxuICAgICAgLm9uVXBkYXRlJChhc3NldClcbiAgICAgIC5zdWJzY3JpYmUoKGFzc2V0OiBQb3NpdGlvbk1hbmFnZWRPYmplY3QpID0+IHtcbiAgICAgICAgY29uc3QgbWFya2VyID0gdGhpcy5maW5kTWFya2VyKGFzc2V0LmlkKTtcbiAgICAgICAgY29uc3QgaWNvbiA9IHRoaXMuZ2V0QXNzZXRJY29uKGFzc2V0KTtcbiAgICAgICAgbWFya2VyLnNldEljb24oaWNvbik7XG4gICAgICAgIG1hcmtlci5zZXRMYXRMbmcodGhpcy5nZW8uZ2V0TGF0TG9uZyhhc3NldCkpO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmFzc2V0cykpIHtcbiAgICAgICAgICB0aGlzLmFzc2V0c1swXSA9IGFzc2V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuYXNzZXRzID0gYXNzZXQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tb3ZlVG9Qb3NpdGlvbk9mTW8oYXNzZXQpO1xuICAgICAgICB0aGlzLm9uUmVhbHRpbWVVcGRhdGUuZW1pdChhc3NldCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG1vdmVUb1Bvc2l0aW9uT2ZNbyhwb3NpdGlvbnM6IFBvc2l0aW9uTWFuYWdlZE9iamVjdCB8IFBvc2l0aW9uTWFuYWdlZE9iamVjdFtdKSB7XG4gICAgY29uc3QgcG9zaXRpb24gPSBBcnJheS5pc0FycmF5KHBvc2l0aW9ucykgPyBwb3NpdGlvbnNbMF0gOiBwb3NpdGlvbnM7XG4gICAgaWYgKHRoaXMuY29uZmlnLmZvbGxvdykge1xuICAgICAgdGhpcy5tYXAuc2V0VmlldyhbcG9zaXRpb24uYzh5X1Bvc2l0aW9uLmxhdCwgcG9zaXRpb24uYzh5X1Bvc2l0aW9uLmxuZ10pO1xuICAgIH1cbiAgfVxuXG4gIHN0b3BSZWFsdGltZSgpIHtcbiAgICBpZiAodGhpcy5yZWFsdGltZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5yZWFsdGltZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGZpbmRNYXJrZXIobW9PcklkOiBzdHJpbmcgfCBJRXZlbnQgfCBQb3NpdGlvbk1hbmFnZWRPYmplY3QpIHtcbiAgICBjb25zdCBnZXRJZCA9IG1vT3JJZCA9PiAodHlwZW9mIG1vT3JJZCA9PT0gJ3N0cmluZycgPyBtb09ySWQgOiBtb09ySWQ/LmlkKTtcbiAgICByZXR1cm4gdGhpcy5tYXJrZXJzLmZpbmQoXG4gICAgICAobWFya2VyOiBDOHlNYXJrZXIpID0+XG4gICAgICAgIG1hcmtlci5hc3NldD8uaWQgPT09IGdldElkKG1vT3JJZCkgfHwgbWFya2VyLmV2ZW50Py5pZCA9PT0gZ2V0SWQobW9PcklkKVxuICAgICk7XG4gIH1cblxuICBhZGRNYXJrZXJUb01hcChtYXJrZXI6IEM4eU1hcmtlciB8IEwuTWFya2VyKSB7XG4gICAgdGhpcy5tYXJrZXJzLnB1c2gobWFya2VyKTtcbiAgICBtYXJrZXIuYWRkVG8odGhpcy5tYXApO1xuICB9XG5cbiAgZ2V0QXNzZXRNYXJrZXIoYXNzZXQ6IFBvc2l0aW9uTWFuYWdlZE9iamVjdCkge1xuICAgIGlmICghYXNzZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpY29uID0gdGhpcy5nZXRBc3NldEljb24oYXNzZXQpO1xuICAgIGNvbnN0IHsgbGF0LCBsbmcgfSA9IGFzc2V0LmM4eV9Qb3NpdGlvbjtcbiAgICBjb25zdCBsZWFmbGV0TWFya2VyID0gdGhpcy5sZWFmbGV0Lm1hcmtlcih0aGlzLmdlby5nZXRMYXRMb25nKGFzc2V0KSwge1xuICAgICAgaWNvbixcbiAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aGlzLm1hcmtlclRpdGxlLCB7IGxhdCwgbG5nIH0pXG4gICAgfSk7XG4gICAgY29uc3QgbWFya2VyID0gZ2V0Qzh5TWFya2VyKGxlYWZsZXRNYXJrZXIsIGFzc2V0KTtcbiAgICB0aGlzLmJpbmRQb3B1cChtYXJrZXIsIGFzc2V0KTtcblxuICAgIHJldHVybiBtYXJrZXI7XG4gIH1cblxuICBnZXRUcmFja2luZ01hcmtlcihldmVudDogSUV2ZW50KSB7XG4gICAgaWYgKCFldmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGljb24gPSB0aGlzLmdldFRyYWNraW5nSWNvbigpO1xuICAgIGNvbnN0IHsgbGF0LCBsbmcgfSA9IGV2ZW50LmM4eV9Qb3NpdGlvbjtcbiAgICBjb25zdCBsZWFmbGV0TWFya2VyID0gdGhpcy5sZWFmbGV0Lm1hcmtlcih0aGlzLmdlby5nZXRMYXRMb25nKGV2ZW50KSwge1xuICAgICAgaWNvbixcbiAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aGlzLm1hcmtlclRpdGxlLCB7IGxhdCwgbG5nIH0pXG4gICAgfSk7XG4gICAgY29uc3QgbWFya2VyID0gZ2V0Qzh5TWFya2VyKGxlYWZsZXRNYXJrZXIsIG51bGwsIGV2ZW50KTtcbiAgICB0aGlzLmJpbmRQb3B1cChtYXJrZXIsIGV2ZW50KTtcblxuICAgIHJldHVybiBtYXJrZXI7XG4gIH1cblxuICBnZXRBc3NldEljb24oYXNzZXQ6IFBvc2l0aW9uTWFuYWdlZE9iamVjdCkge1xuICAgIGNvbnN0IGFzc2V0VHlwZUljb24gPSB0aGlzLmNvbmZpZy5pY29uIHx8IGFzc2V0Lmljb24/Lm5hbWU7XG4gICAgY29uc3Qgc3RhdHVzID0gTWFwU2VydmljZS5nZXRTdGF0dXMoYXNzZXQpO1xuICAgIGNvbnN0IGNvbG9yID0gdGhpcy5jb25maWcuY29sb3IgPyBgc3R5bGU9J2NvbG9yOiAke3RoaXMuY29uZmlnLmNvbG9yfTsnYCA6ICcnO1xuICAgIGNvbnN0IGljb24gPSB0aGlzLmxlYWZsZXQuZGl2SWNvbih7XG4gICAgICBodG1sOiBgPGRpdiBjbGFzcz1cImRsdC1jOHktaWNvbi1tYXJrZXIgaWNvbi0zeCAke3N0YXR1c31cIiAke2NvbG9yfT48aSBjbGFzcz1cImRsdC1jOHktaWNvbi0ke1xuICAgICAgICBhc3NldFR5cGVJY29uIHx8ICdkYXRhLXRyYW5zZmVyJ1xuICAgICAgfVwiIC8+PC9kaXY+YCxcbiAgICAgIGNsYXNzTmFtZTogJ2M4eS1tYXAtbWFya2VyLWljb24nLFxuICAgICAgLy8gaWNvbkFuY2hvciBpcyB1c2VkIHRvIHNldCB0aGUgbWFya2VyIGFjY3VyYXRlbHkgb24gY2xpY2tcbiAgICAgIGljb25BbmNob3I6IFs4LCA4XVxuICAgIH0pO1xuICAgIHJldHVybiBpY29uO1xuICB9XG5cbiAgZ2V0VHJhY2tpbmdJY29uKCkge1xuICAgIGNvbnN0IGljb24gPSB0aGlzLmxlYWZsZXQuZGl2SWNvbih7XG4gICAgICBodG1sOiBgPGRpdiBjbGFzcz1cImRsdC1jOHktaWNvbi1tYXJrZXIgaWNvbi0zeCB0ZXh0LW11dGVkXCI+PC9kaXY+YCxcbiAgICAgIGNsYXNzTmFtZTogJ2M4eS1tYXAtbWFya2VyLWljb24nLFxuICAgICAgLy8gaWNvbkFuY2hvciBpcyB1c2VkIHRvIHNldCB0aGUgbWFya2VyIGFjY3VyYXRlbHkgb24gY2xpY2tcbiAgICAgIGljb25BbmNob3I6IFs4LCA4XVxuICAgIH0pO1xuICAgIHJldHVybiBpY29uO1xuICB9XG5cbiAgcmVtb3ZlTWFya2VyKG1hcmtlcjogQzh5TWFya2VyIHwgTC5NYXJrZXIpIHtcbiAgICBpZiAobWFya2VyKSB7XG4gICAgICBtYXJrZXIucmVtb3ZlKCk7XG4gICAgICByZW1vdmUodGhpcy5tYXJrZXJzLCBtID0+IG0gPT09IG1hcmtlcik7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJNYXJrZXJzKGZyYWdtZW50PzogQzh5TWFya2VyQXR0cmlidXRlcykge1xuICAgIGNvbnN0IG1hdGNoaW5nTWFya2VycyA9IG1hcmtlciA9PiAhZnJhZ21lbnQgfHwgISFtYXJrZXJbZnJhZ21lbnRdO1xuICAgIHRoaXMubWFya2Vycy5maWx0ZXIobWF0Y2hpbmdNYXJrZXJzKS5mb3JFYWNoKG1hcmtlciA9PiBtYXJrZXIucmVtb3ZlKCkpO1xuICAgIHRoaXMubWFya2VycyA9IHRoaXMubWFya2Vycy5maWx0ZXIobWFya2VyID0+ICFtYXRjaGluZ01hcmtlcnMobWFya2VyKSk7XG4gIH1cblxuICByZWZyZXNoTWFya2VycygpIHtcbiAgICB0aGlzLmNsZWFyTWFya2VycygpO1xuICAgIGxldCBhc3NldHM6IFBvc2l0aW9uTWFuYWdlZE9iamVjdFtdID0gW107XG4gICAgaWYgKCFpc1VuZGVmaW5lZCh0aGlzLmFzc2V0cykpIHtcbiAgICAgIGFzc2V0cyA9IEFycmF5LmlzQXJyYXkodGhpcy5hc3NldHMpID8gdGhpcy5hc3NldHMgOiBbdGhpcy5hc3NldHNdO1xuICAgIH1cbiAgICBhc3NldHMuZm9yRWFjaChhc3NldCA9PiB7XG4gICAgICBjb25zdCBtYXJrZXIgPSB0aGlzLmdldEFzc2V0TWFya2VyKGFzc2V0KTtcbiAgICAgIHRoaXMuYWRkTWFya2VyVG9NYXAobWFya2VyKTtcbiAgICB9KTtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmNlbnRlcikge1xuICAgICAgdGhpcy56b29tVG9Cb3VuZChhc3NldHMpO1xuICAgIH1cbiAgICB0aGlzLnRvZ2dsZUNvbnRyb2xzKCk7XG4gIH1cblxuICBjZW50ZXIoKSB7XG4gICAgdGhpcy5tYXA/LnNldFZpZXcodGhpcy5jb25maWcuY2VudGVyKTtcbiAgfVxuXG4gIHJlZnJlc2goKSB7XG4gICAgaWYgKHRoaXMuaXNJbml0KSB7XG4gICAgICB0aGlzLnJlZnJlc2hNYXJrZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmxlYWZsZXQgPSBhd2FpdCB0aGlzLm1hcFNlcnZpY2UuZ2V0TGVhZmxldCgpO1xuICAgIGNvbnN0IGluaXRpYWxpemVkJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMubGF5ZXJzJCwgdGhpcy5kZWZhdWx0Q29uZmlnJF0pLnBpcGUoXG4gICAgICBmaXJzdCgpLFxuICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVUcmlnZ2VyJClcbiAgICApO1xuXG4gICAgaW5pdGlhbGl6ZWQkLnN1YnNjcmliZSgoW2xheWVycywgZGVmYXVsdENvbmZpZ10pID0+IHtcbiAgICAgIHRoaXMuaW5pdE1hcChsYXllcnMsIGRlZmF1bHRDb25maWcpO1xuICAgICAgdGhpcy5yZWZyZXNoTWFya2VycygpO1xuICAgIH0pO1xuXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5wb2x5bGluZSQsIGluaXRpYWxpemVkJF0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChbZXhwcmVzc2lvbnNdKSA9PiB0aGlzLmxlYWZsZXQucG9seWxpbmUoZXhwcmVzc2lvbnMsIHRoaXMucG9seWxpbmVPcHRpb25zKSksXG4gICAgICAgIHNjYW4oKG9sZFBvbHlsaW5lLCBuZXdQb2x5bGluZSkgPT4ge1xuICAgICAgICAgIGlmICghIW9sZFBvbHlsaW5lKSB7XG4gICAgICAgICAgICB0aGlzLm1hcC5yZW1vdmVMYXllcihvbGRQb2x5bGluZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghIW5ld1BvbHlsaW5lKSB7XG4gICAgICAgICAgICBuZXdQb2x5bGluZS5hZGRUbyh0aGlzLm1hcCk7XG4gICAgICAgICAgICB0aGlzLmZpdEJvdW5kcyhuZXdQb2x5bGluZS5nZXRCb3VuZHMoKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG5ld1BvbHlsaW5lO1xuICAgICAgICB9LCBudWxsKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVUcmlnZ2VyJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm1hcCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5hc3NldHM/LmN1cnJlbnRWYWx1ZSAmJiAhY2hhbmdlcy5hc3NldHM/LmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLnJlZnJlc2hNYXJrZXJzKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMuY29uZmlnPy5jdXJyZW50VmFsdWUgJiYgIWNoYW5nZXMuY29uZmlnPy5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5jaGFuZ2VDb25maWcoY2hhbmdlcy5jb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlQWxsTGlzdGVuZXJzKCk7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVuc3Vic2NyaWJlQWxsTGlzdGVuZXJzKCkge1xuICAgIHRoaXMudW5zdWJzY3JpYmVUcmlnZ2VyJC5uZXh0KCk7XG4gICAgdGhpcy5zdG9wUmVhbHRpbWUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0T3V0cHV0cygpIHtcbiAgICBjb25zdCBnZXRNYXBFdmVudE9ic2VydmFibGUgPSBldmVudE5hbWUgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMub25NYXAucGlwZShcbiAgICAgICAgZmlsdGVyKG1hcCA9PiAhIW1hcCksXG4gICAgICAgIHN3aXRjaE1hcChtYXAgPT4gZnJvbUV2ZW50PEwuTGVhZmxldEV2ZW50PihtYXAsIGV2ZW50TmFtZSkpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKVxuICAgICAgKTtcbiAgICB9O1xuICAgIGNvbnN0IGRyYWdTdGFydCQgPSBnZXRNYXBFdmVudE9ic2VydmFibGUoJ2RyYWdzdGFydCcpO1xuICAgIGNvbnN0IG1vdmUkID0gZ2V0TWFwRXZlbnRPYnNlcnZhYmxlKCdtb3ZlJyk7XG4gICAgY29uc3QgZHJhZ0VuZCQgPSBnZXRNYXBFdmVudE9ic2VydmFibGUoJ2RyYWdlbmQnKTtcblxuICAgIHRoaXMub25Nb3ZlID0gZHJhZ1N0YXJ0JC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IG1vdmUkLnBpcGUodGFrZVVudGlsKGRyYWdFbmQkKSkpLFxuICAgICAgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVUcmlnZ2VyJClcbiAgICApO1xuXG4gICAgdGhpcy5vbk1vdmVFbmQgPSBnZXRNYXBFdmVudE9ic2VydmFibGUoJ21vdmVlbmQnKTtcblxuICAgIHRoaXMub25ab29tRW5kID0gZ2V0TWFwRXZlbnRPYnNlcnZhYmxlKCd6b29tZW5kJyk7XG5cbiAgICB0aGlzLm9uWm9vbVN0YXJ0ID0gZ2V0TWFwRXZlbnRPYnNlcnZhYmxlKCd6b29tc3RhcnQnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0TWFwKGxheWVyczogTWFwVGlsZUxheWVyW10sIGRlZmF1bHRDb25maWc6IE1hcENvbmZpZyk6IHZvaWQge1xuICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgICAgY2VudGVyOiB0aGlzLmNvbmZpZy5jZW50ZXIgfHwgZGVmYXVsdENvbmZpZy5jZW50ZXIsXG4gICAgICB6b29tU25hcDogMCxcbiAgICAgIHpvb206IHRoaXMuY29uZmlnLnpvb21MZXZlbCB8fCBkZWZhdWx0Q29uZmlnLnpvb21MZXZlbCxcbiAgICAgIHdvcmxkQ29weUp1bXA6IHRydWVcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMubWFwKSB7XG4gICAgICB0aGlzLm1hcC5yZW1vdmUoKTtcbiAgICB9XG4gICAgdGhpcy5tYXAgPSB0aGlzLmxlYWZsZXQubWFwKHRoaXMubWFwRWxlbWVudC5uYXRpdmVFbGVtZW50LCBkZWZhdWx0T3B0aW9ucyk7XG5cbiAgICB0aGlzLm1hcC5hdHRyaWJ1dGlvbkNvbnRyb2wuc2V0UHJlZml4KCcnKTtcblxuICAgIHRoaXMuZml0Qm91bmRzKHRoaXMuY29uZmlnLmJvdW5kcyk7XG5cbiAgICB0aGlzLmFkZExheWVycyhsYXllcnMpO1xuXG4gICAgdGhpcy5oYW5kbGVNb2JpbGUoKTtcblxuICAgIHRoaXMub25NYXAubmV4dCh0aGlzLm1hcCk7XG5cbiAgICB0aGlzLmlzSW5pdCA9IHRydWU7XG4gICAgdGhpcy5vbkluaXQuZW1pdCh0aGlzLmxlYWZsZXQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZU1vYmlsZSgpIHtcbiAgICAvLyBhZGRpbmcgZXZlbnQgbGlzdGVuZXIgdG8gZG8gbW9iaWxlIDIgZmluZ2VyIHNjcm9sbGluZ1xuICAgIGlmICh0aGlzLmxlYWZsZXQuQnJvd3Nlci5tb2JpbGUpIHtcbiAgICAgIGNvbnN0IHRvdWNoTXNnID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoZ2V0dGV4dCgnVXNlIHR3byBmaW5nZXJzIHRvIG1vdmUgdGhlIG1hcC4nKSk7XG4gICAgICB0aGlzLm1hcC5kcmFnZ2luZy5kaXNhYmxlKCk7XG4gICAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLm1hcC5nZXRDb250YWluZXIoKTtcbiAgICAgIGNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ2RhdGEtdG91Y2gtd2FybmluZy1jb250ZW50JywgdG91Y2hNc2cpO1xuICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBldmVudCA9PiB0aGlzLmhhbmRsZVRvdWNoKGV2ZW50KSk7XG4gICAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgZXZlbnQgPT4gdGhpcy5oYW5kbGVUb3VjaChldmVudCkpO1xuICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgZXZlbnQgPT4gdGhpcy5oYW5kbGVUb3VjaChldmVudCkpO1xuICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoY2FuY2VsJywgZXZlbnQgPT4gdGhpcy5oYW5kbGVUb3VjaChldmVudCkpO1xuICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZXZlbnQgPT4gdGhpcy5oYW5kbGVUb3VjaChldmVudCkpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhZGRMYXllcnMobGF5ZXJzOiBNYXBUaWxlTGF5ZXJbXSkge1xuICAgIGNvbnN0IGZsYXR0ZW5MYXllcnM6IE1hcFRpbGVMYXllcltdID0gZmxhdHRlbihsYXllcnMpO1xuICAgIGNvbnN0IGJhc2VMYXllcnM6IEwuQ29udHJvbC5MYXllcnNPYmplY3QgPSB7fTtcbiAgICBjb25zdCBvdmVybGF5czogTC5Db250cm9sLkxheWVyc09iamVjdCA9IHt9O1xuICAgIGxldCBmaXJzdExheWVyID0gdHJ1ZTtcbiAgICBmb3IgKGNvbnN0IGxheWVyIG9mIHNvcnRCeVByaW9yaXR5KGZsYXR0ZW5MYXllcnMpKSB7XG4gICAgICBjb25zdCBvYmplY3RUb0FkZFRvID0gbGF5ZXIuaXNPdmVybGF5ID8gb3ZlcmxheXMgOiBiYXNlTGF5ZXJzO1xuICAgICAgaWYgKG9iamVjdFRvQWRkVG9bbGF5ZXIubGFiZWxdKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0aWxlcyA9IHRoaXMubGVhZmxldC50aWxlTGF5ZXIobGF5ZXIubGF5ZXJVcmwsIGxheWVyLm9wdGlvbnMpO1xuICAgICAgaWYgKCFsYXllci5pc092ZXJsYXkgJiYgZmlyc3RMYXllcikge1xuICAgICAgICBmaXJzdExheWVyID0gZmFsc2U7XG4gICAgICAgIHRpbGVzLmFkZFRvKHRoaXMubWFwKTtcbiAgICAgIH1cbiAgICAgIG9iamVjdFRvQWRkVG9bbGF5ZXIubGFiZWxdID0gdGlsZXM7XG4gICAgfVxuICAgIGlmIChmbGF0dGVuTGF5ZXJzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMubGVhZmxldC5jb250cm9sLmxheWVycyhiYXNlTGF5ZXJzLCBvdmVybGF5cywgeyBwb3NpdGlvbjogJ2JvdHRvbWxlZnQnIH0pLmFkZFRvKHRoaXMubWFwKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY2hhbmdlQ29uZmlnKGNoYW5nZTogU2ltcGxlQ2hhbmdlKSB7XG4gICAgaWYgKHRoaXMuaGFzQ2hhbmdlZChjaGFuZ2UsICd6b29tTGV2ZWwnKSkge1xuICAgICAgdGhpcy5tYXAuc2V0Wm9vbSh0aGlzLmNvbmZpZy56b29tTGV2ZWwpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc0NoYW5nZWQoY2hhbmdlLCAnY2VudGVyJykgJiYgZXZlcnkoY2hhbmdlLmN1cnJlbnRWYWx1ZS5jZW50ZXIsIHAgPT4gIWlzTnVsbChwKSkpIHtcbiAgICAgIHRoaXMubWFwLnNldFZpZXcoY2hhbmdlLmN1cnJlbnRWYWx1ZS5jZW50ZXIpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc0NoYW5nZWQoY2hhbmdlLCAnaWNvbicpIHx8IHRoaXMuaGFzQ2hhbmdlZChjaGFuZ2UsICdjb2xvcicpKSB7XG4gICAgICB0aGlzLnJlZnJlc2hNYXJrZXJzKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGFzQ2hhbmdlZChjaGFuZ2UsICdyZWFsdGltZScpICYmIGNoYW5nZS5jdXJyZW50VmFsdWUucmVhbHRpbWUpIHtcbiAgICAgIHRoaXMuc3RhcnRSZWFsdGltZSgpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2UuY3VycmVudFZhbHVlLnJlYWx0aW1lID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5zdG9wUmVhbHRpbWUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNDaGFuZ2VkKGNoYW5nZSwgJ2ZvbGxvdycpKSB7XG4gICAgICB0aGlzLm1vdmVUb1Bvc2l0aW9uT2ZNbyh0aGlzLmFzc2V0cyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGFzQ2hhbmdlZChjaGFuZ2UsICdkaXNhYmxlUGFuJykgfHwgdGhpcy5oYXNDaGFuZ2VkKGNoYW5nZSwgJ2Rpc2FibGVab29tJykpIHtcbiAgICAgIHRoaXMudG9nZ2xlQ29udHJvbHMoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFzQ2hhbmdlZChjaGFuZ2U6IFNpbXBsZUNoYW5nZSwgcHJvcDoga2V5b2YgTWFwQ29uZmlnKSB7XG4gICAgcmV0dXJuIGNoYW5nZS5jdXJyZW50VmFsdWVbcHJvcF0gIT09IGNoYW5nZS5wcmV2aW91c1ZhbHVlW3Byb3BdO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRvZ2dsZUNvbnRyb2xzKCkge1xuICAgIGlmICh0aGlzLmNvbmZpZy5kaXNhYmxlWm9vbSkge1xuICAgICAgdGhpcy5tYXAucmVtb3ZlQ29udHJvbCh0aGlzLm1hcC56b29tQ29udHJvbCk7XG4gICAgICB0aGlzLm1hcC5zY3JvbGxXaGVlbFpvb20uZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1hcC5hZGRDb250cm9sKHRoaXMubWFwLnpvb21Db250cm9sKTtcbiAgICAgIHRoaXMubWFwLnNjcm9sbFdoZWVsWm9vbS5lbmFibGUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29uZmlnLmRpc2FibGVQYW4pIHtcbiAgICAgIHRoaXMubWFwLmRyYWdnaW5nLmRpc2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tYXAuZHJhZ2dpbmcuZW5hYmxlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVUb3VjaChlOiBFdmVudCkge1xuICAgIC8vIERpc3JlZ2FyZCB0b3VjaCBldmVudHMgb24gdGhlIG1pbmltYXAgaWYgcHJlc2VudFxuICAgIGNvbnN0IGlnbm9yZUxpc3QgPSBbXG4gICAgICAnbGVhZmxldC1jb250cm9sLW1pbmltYXAnLFxuICAgICAgJ2xlYWZsZXQtaW50ZXJhY3RpdmUnLFxuICAgICAgJ2xlYWZsZXQtcG9wdXAtY29udGVudCcsXG4gICAgICAnbGVhZmxldC1wb3B1cC1jb250ZW50LXdyYXBwZXInLFxuICAgICAgJ2xlYWZsZXQtcG9wdXAtY2xvc2UtYnV0dG9uJyxcbiAgICAgICdsZWFmbGV0LWNvbnRyb2wtem9vbS1pbicsXG4gICAgICAnbGVhZmxldC1jb250cm9sLXpvb20tb3V0J1xuICAgIF07XG5cbiAgICBsZXQgaWdub3JlRWxlbWVudCA9IGZhbHNlO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaWdub3JlTGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMubGVhZmxldC5Eb21VdGlsLmhhc0NsYXNzKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50LCBpZ25vcmVMaXN0W2ldKSkge1xuICAgICAgICBpZ25vcmVFbGVtZW50ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLm1hcC5nZXRDb250YWluZXIoKTtcbiAgICBpZiAoaWdub3JlRWxlbWVudCkge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmxlYWZsZXQuRG9tVXRpbC5oYXNDbGFzcyhlLnRhcmdldCBhcyBIVE1MRWxlbWVudCwgJ2xlYWZsZXQtaW50ZXJhY3RpdmUnKSAmJlxuICAgICAgICBlLnR5cGUgPT09ICd0b3VjaG1vdmUnICYmXG4gICAgICAgIChlIGFzIFRvdWNoRXZlbnQpLnRvdWNoZXMubGVuZ3RoID09PSAxXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5sZWFmbGV0LkRvbVV0aWwuYWRkQ2xhc3MoY29udGFpbmVyLCAndG91Y2gtd2FybmluZycpO1xuICAgICAgICB0aGlzLm1hcC5kcmFnZ2luZy5kaXNhYmxlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxlYWZsZXQuRG9tVXRpbC5yZW1vdmVDbGFzcyhjb250YWluZXIsICd0b3VjaC13YXJuaW5nJyk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGUudHlwZSAhPT0gJ3RvdWNobW92ZScgJiYgZS50eXBlICE9PSAndG91Y2hzdGFydCcpIHtcbiAgICAgIHRoaXMubGVhZmxldC5Eb21VdGlsLnJlbW92ZUNsYXNzKGNvbnRhaW5lciwgJ3RvdWNoLXdhcm5pbmcnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKChlIGFzIFRvdWNoRXZlbnQpLnRvdWNoZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICB0aGlzLmxlYWZsZXQuRG9tVXRpbC5hZGRDbGFzcyhjb250YWluZXIsICd0b3VjaC13YXJuaW5nJyk7XG4gICAgICB0aGlzLm1hcC5kcmFnZ2luZy5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWFwLmRyYWdnaW5nLmVuYWJsZSgpO1xuICAgICAgdGhpcy5sZWFmbGV0LkRvbVV0aWwucmVtb3ZlQ2xhc3MoY29udGFpbmVyLCAndG91Y2gtd2FybmluZycpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgem9vbVRvQm91bmQoYXNzZXRzOiBQb3NpdGlvbk1hbmFnZWRPYmplY3RbXSkge1xuICAgIGlmIChpc0VtcHR5KGFzc2V0cykpIHJldHVybjtcblxuICAgIGNvbnN0IGJvdW5kczogW251bWJlciwgbnVtYmVyXVtdID0gYXNzZXRzLm1hcChhc3NldCA9PiBbXG4gICAgICBhc3NldC5jOHlfUG9zaXRpb24ubGF0LFxuICAgICAgYXNzZXQuYzh5X1Bvc2l0aW9uLmxuZ1xuICAgIF0pO1xuICAgIGlmIChhc3NldHMubGVuZ3RoID4gMSkge1xuICAgICAgdGhpcy5tYXAuZmx5VG9Cb3VuZHMoYm91bmRzLCB7IGFuaW1hdGU6IGZhbHNlIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm1hcC5mbHlUbyhcbiAgICAgIFthc3NldHNbMF0uYzh5X1Bvc2l0aW9uLmxhdCwgYXNzZXRzWzBdLmM4eV9Qb3NpdGlvbi5sbmddLFxuICAgICAgdGhpcy5tYXAub3B0aW9ucy56b29tLFxuICAgICAge1xuICAgICAgICBhbmltYXRlOiBmYWxzZVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGZpdEJvdW5kcyhib3VuZHM6IEwuTGF0TG5nQm91bmRzKSB7XG4gICAgaWYgKGJvdW5kcz8uaXNWYWxpZCgpKSB7XG4gICAgICB0aGlzLm1hcC5maXRCb3VuZHMoYm91bmRzLCB0aGlzLmNvbmZpZy5maXRCb3VuZHNPcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGJpbmRQb3B1cChtYXJrZXI6IEM4eU1hcmtlciwgY29udGV4dDogUG9zaXRpb25NYW5hZ2VkT2JqZWN0IHwgSUV2ZW50KSB7XG4gICAgaWYgKHRoaXMucG9wdXApIHtcbiAgICAgIG1hcmtlci5vbignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucG9wdXAudmlld0NvbnRhaW5lci5jbGVhcigpO1xuICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy5wb3B1cC52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnBvcHVwLnRlbXBsYXRlLCB7XG4gICAgICAgICAgJGltcGxpY2l0OiBjb250ZXh0XG4gICAgICAgIH0pO1xuICAgICAgICB2aWV3LmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgbWFya2VyXG4gICAgICAgICAgLnVuYmluZFBvcHVwKClcbiAgICAgICAgICAuYmluZFBvcHVwKHRoaXMucG9wdXAuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnByZXZpb3VzU2libGluZywge1xuICAgICAgICAgICAgb2Zmc2V0OiBbLTMsIC00MF0sXG4gICAgICAgICAgICBtYXhXaWR0aDogMTQwLFxuICAgICAgICAgICAgYXV0b1BhbjogdHJ1ZSxcbiAgICAgICAgICAgIGNsb3NlQnV0dG9uOiBmYWxzZVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLm9wZW5Qb3B1cCgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYzh5LW1hcFwiPlxuICA8ZGl2ICNtYXA+PC9kaXY+XG48L2Rpdj5cbjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
|
|
@@ -25,11 +25,11 @@ export const defaultLayer = {
|
|
|
25
25
|
maxZoom: 18,
|
|
26
26
|
minZoom: 2,
|
|
27
27
|
attribution: '©<a href="http://www.openstreetmap.org/copyright" rel="noreferrer nofollow">OpenStreetMap</a>',
|
|
28
|
-
noWrap:
|
|
28
|
+
noWrap: false
|
|
29
29
|
}
|
|
30
30
|
};
|
|
31
31
|
export const defaultMapConfig = {
|
|
32
32
|
center: [51.23544, 6.79599], // Düsseldorf
|
|
33
33
|
zoomLevel: 2
|
|
34
34
|
};
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbWFwL21hcC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTy9DLE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBZ0IsRUFBRSxLQUE2QixFQUFFLEtBQWM7SUFDekYsTUFBb0IsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ25DLE1BQW9CLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNwQyxPQUFPLE1BQW1CLENBQUM7QUFDN0IsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBNkIsZ0JBQWdCLENBQUMsQ0FBQztBQWMvRixNQUFNLENBQU4sSUFBWSxXQUlYO0FBSkQsV0FBWSxXQUFXO0lBQ3JCLDZDQUFRLENBQUE7SUFDUiw2Q0FBUSxDQUFBO0lBQ1IsbURBQVcsQ0FBQTtBQUNiLENBQUMsRUFKVyxXQUFXLEtBQVgsV0FBVyxRQUl0QjtBQUVELE1BQU0sQ0FBTixJQUFZLG1CQUdYO0FBSEQsV0FBWSxtQkFBbUI7SUFDN0IsNENBQXFCLENBQUE7SUFDckIsNENBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQUhXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFHOUI7QUFxQ0QsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQ2xELG9CQUFvQixDQUNyQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFpQjtJQUN4QyxRQUFRLEVBQUUsb0RBQW9EO0lBQzlELEtBQUssRUFBRSxlQUFlO0lBQ3RCLFFBQVEsRUFBRSxJQUFJO0lBQ2QsT0FBTyxFQUFFO1FBQ1AsT0FBTyxFQUFFLEVBQUU7UUFDWCxPQUFPLEVBQUUsQ0FBQztRQUNWLFdBQVcsRUFDVCxvR0FBb0c7UUFDdEcsTUFBTSxFQUFFLEtBQUs7S0FDZDtDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBcUI7SUFDaEQsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLGFBQWE7SUFDMUMsU0FBUyxFQUFFLENBQUM7Q0FDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElFdmVudCwgSU1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgdHlwZSB7IE1hcERlZmF1bHRDb25maWcsIE1hcFRpbGVMYXllciB9IGZyb20gJ0BjOHkvb3B0aW9ucyc7XG5pbXBvcnQgdHlwZSAqIGFzIEwgZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBHbG9iYWxBdXRvUmVmcmVzaFdpZGdldENvbmZpZyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Qzh5TWFya2VyKG1hcmtlcjogTC5NYXJrZXIsIGFzc2V0PzogUG9zaXRpb25NYW5hZ2VkT2JqZWN0LCBldmVudD86IElFdmVudCkge1xuICAobWFya2VyIGFzIEM4eU1hcmtlcikuYXNzZXQgPSBhc3NldDtcbiAgKG1hcmtlciBhcyBDOHlNYXJrZXIpLmV2ZW50ID0gZXZlbnQ7XG4gIHJldHVybiBtYXJrZXIgYXMgQzh5TWFya2VyO1xufVxuXG5leHBvcnQgY29uc3QgTUFQX1RJTEVfTEFZRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48T2JzZXJ2YWJsZTxNYXBUaWxlTGF5ZXJbXT4+KCdNQVBfVElMRV9MQVlFUicpO1xuXG50eXBlIFJlcXVpcmVPbmx5T25lPFQsIEtleXMgZXh0ZW5kcyBrZXlvZiBUID0ga2V5b2YgVD4gPSBQaWNrPFQsIEV4Y2x1ZGU8a2V5b2YgVCwgS2V5cz4+ICZcbiAgeyBbSyBpbiBLZXlzXS0/OiBSZXF1aXJlZDxQaWNrPFQsIEs+PiAmIFBhcnRpYWw8UmVjb3JkPEV4Y2x1ZGU8S2V5cywgSz4sIHVuZGVmaW5lZD4+IH1bS2V5c107XG5cbmludGVyZmFjZSBDOHlNYXJrZXJBdHRyIHtcbiAgYXNzZXQ6IFBvc2l0aW9uTWFuYWdlZE9iamVjdDtcbiAgZXZlbnQ6IElFdmVudDtcbn1cblxuZXhwb3J0IHR5cGUgQzh5TWFya2VyQXR0cmlidXRlcyA9IGtleW9mIEM4eU1hcmtlckF0dHI7XG5cbmV4cG9ydCB0eXBlIEM4eU1hcmtlciA9IEwuTWFya2VyICYgUmVxdWlyZU9ubHlPbmU8Qzh5TWFya2VyQXR0ciwgJ2Fzc2V0JyB8ICdldmVudCc+O1xuXG5leHBvcnQgZW51bSBDbHVzdGVyU2l6ZSB7XG4gIE5PTkUgPSAwLFxuICBGT1VSID0gMSxcbiAgU0lYVEVFTiA9IDJcbn1cblxuZXhwb3J0IGVudW0gTWFwVGVuYW50T3B0aW9uS2V5cyB7XG4gIENPTkZJRyA9ICdtYXAtY29uZmlnJyxcbiAgTEFZRVJTID0gJ21hcC1sYXllcnMnXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUG9zaXRpb25NYW5hZ2VkT2JqZWN0IGV4dGVuZHMgSU1hbmFnZWRPYmplY3Qge1xuICBjOHlfUG9zaXRpb246IHtcbiAgICBsYXQ6IG51bWJlcjtcbiAgICBsbmc6IG51bWJlcjtcbiAgICBhbHQ/OiBudW1iZXI7XG4gIH07XG5cbiAgYzh5X0FjdGl2ZUFsYXJtc1N0YXR1cz86IHtcbiAgICBtaW5vcjogbnVtYmVyO1xuICAgIG1ham9yOiBudW1iZXI7XG4gICAgd2FybmluZzogbnVtYmVyO1xuICAgIGNyaXRpY2FsOiBudW1iZXI7XG4gIH07XG5cbiAgaWNvbj86IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIENsdXN0ZXJNYXBDb25maWcgPSBNYXBDb25maWcgJiB7XG4gIGNlbnRlcjogW251bWJlciwgbnVtYmVyXTtcbiAgcmVmcmVzaEludGVydmFsPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgTWFwQ29uZmlnID0gTWFwRGVmYXVsdENvbmZpZyAmIHtcbiAgZm9sbG93PzogYm9vbGVhbjtcbiAgcmVhbHRpbWU/OiBib29sZWFuO1xuICBpY29uPzogc3RyaW5nO1xuICBjb2xvcj86IHN0cmluZztcbiAgZGlzYWJsZVpvb20/OiBib29sZWFuO1xuICBkaXNhYmxlUGFuPzogYm9vbGVhbjtcbiAgYm91bmRzPzogTC5MYXRMbmdCb3VuZHM7XG4gIGZpdEJvdW5kc09wdGlvbnM/OiBMLkZpdEJvdW5kc09wdGlvbnM7XG59ICYgR2xvYmFsQXV0b1JlZnJlc2hXaWRnZXRDb25maWc7XG5cbmV4cG9ydCBjb25zdCBNQVBfREVGQVVMVF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48T2JzZXJ2YWJsZTxNYXBEZWZhdWx0Q29uZmlnPj4oXG4gICdNQVBfREVGQVVMVF9DT05GSUcnXG4pO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdExheWVyOiBNYXBUaWxlTGF5ZXIgPSB7XG4gIGxheWVyVXJsOiAnaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLFxuICBsYWJlbDogJ09wZW5TdHJlZXRNYXAnLFxuICBwcmlvcml0eTogMTAwMCxcbiAgb3B0aW9uczoge1xuICAgIG1heFpvb206IDE4LFxuICAgIG1pblpvb206IDIsXG4gICAgYXR0cmlidXRpb246XG4gICAgICAnJmNvcHk7PGEgaHJlZj1cImh0dHA6Ly93d3cub3BlbnN0cmVldG1hcC5vcmcvY29weXJpZ2h0XCIgcmVsPVwibm9yZWZlcnJlciBub2ZvbGxvd1wiPk9wZW5TdHJlZXRNYXA8L2E+JyxcbiAgICBub1dyYXA6IGZhbHNlXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0TWFwQ29uZmlnOiBNYXBEZWZhdWx0Q29uZmlnID0ge1xuICBjZW50ZXI6IFs1MS4yMzU0NCwgNi43OTU5OV0sIC8vIETDvHNzZWxkb3JmXG4gIHpvb21MZXZlbDogMlxufTtcblxuZXhwb3J0IHR5cGUgTWFwU3RhdHVzQnV0dG9uc0NvbmZpZyA9IFJlY29yZDwncmVhbHRpbWUnLCB7IHNob3c6IGJvb2xlYW47IGRpc2FibGVkPzogYm9vbGVhbiB9PjtcbiJdfQ==
|
|
@@ -2,6 +2,7 @@ import { CommonModule as NgCommonModule } from '@angular/common';
|
|
|
2
2
|
import { NgModule } from '@angular/core';
|
|
3
3
|
import { FormsModule as NgFormsModule } from '@angular/forms';
|
|
4
4
|
import { CommonModule, CoreModule, FormsModule, RealtimeModule } from '@c8y/ngx-components';
|
|
5
|
+
import { TooltipModule } from 'ngx-bootstrap/tooltip';
|
|
5
6
|
import { ClusterMapComponent } from './cluster-map.component';
|
|
6
7
|
import { MapPopupDirective } from './map-popup.directive';
|
|
7
8
|
import { MapStatusComponent } from './map-status.component';
|
|
@@ -11,7 +12,13 @@ import { MapService } from './map.service';
|
|
|
11
12
|
import * as i0 from "@angular/core";
|
|
12
13
|
export class MapModule {
|
|
13
14
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: MapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
14
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: MapModule, declarations: [MapComponent, MapStatusComponent, ClusterMapComponent, MapPopupDirective], imports: [NgCommonModule,
|
|
15
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: MapModule, declarations: [MapComponent, MapStatusComponent, ClusterMapComponent, MapPopupDirective], imports: [NgCommonModule,
|
|
16
|
+
NgFormsModule,
|
|
17
|
+
CommonModule,
|
|
18
|
+
FormsModule,
|
|
19
|
+
RealtimeModule,
|
|
20
|
+
CoreModule,
|
|
21
|
+
TooltipModule], exports: [MapComponent, MapStatusComponent, ClusterMapComponent, MapPopupDirective] }); }
|
|
15
22
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: MapModule, providers: [
|
|
16
23
|
{
|
|
17
24
|
provide: MAP_TILE_LAYER,
|
|
@@ -27,13 +34,27 @@ export class MapModule {
|
|
|
27
34
|
},
|
|
28
35
|
deps: [MapService]
|
|
29
36
|
}
|
|
30
|
-
], imports: [NgCommonModule,
|
|
37
|
+
], imports: [NgCommonModule,
|
|
38
|
+
NgFormsModule,
|
|
39
|
+
CommonModule,
|
|
40
|
+
FormsModule,
|
|
41
|
+
RealtimeModule,
|
|
42
|
+
CoreModule,
|
|
43
|
+
TooltipModule] }); }
|
|
31
44
|
}
|
|
32
45
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: MapModule, decorators: [{
|
|
33
46
|
type: NgModule,
|
|
34
47
|
args: [{
|
|
35
48
|
declarations: [MapComponent, MapStatusComponent, ClusterMapComponent, MapPopupDirective],
|
|
36
|
-
imports: [
|
|
49
|
+
imports: [
|
|
50
|
+
NgCommonModule,
|
|
51
|
+
NgFormsModule,
|
|
52
|
+
CommonModule,
|
|
53
|
+
FormsModule,
|
|
54
|
+
RealtimeModule,
|
|
55
|
+
CoreModule,
|
|
56
|
+
TooltipModule
|
|
57
|
+
],
|
|
37
58
|
exports: [MapComponent, MapStatusComponent, ClusterMapComponent, MapPopupDirective],
|
|
38
59
|
providers: [
|
|
39
60
|
{
|
|
@@ -53,4 +74,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
53
74
|
]
|
|
54
75
|
}]
|
|
55
76
|
}] });
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL21hcC9tYXAubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLElBQUksY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxJQUFJLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUErQjNDLE1BQU0sT0FBTyxTQUFTOzhHQUFULFNBQVM7K0dBQVQsU0FBUyxpQkE1QkwsWUFBWSxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixhQUVyRixjQUFjO1lBQ2QsYUFBYTtZQUNiLFlBQVk7WUFDWixXQUFXO1lBQ1gsY0FBYztZQUNkLFVBQVU7WUFDVixhQUFhLGFBRUwsWUFBWSxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLGlCQUFpQjsrR0FrQnZFLFNBQVMsYUFqQlQ7WUFDVDtnQkFDRSxPQUFPLEVBQUUsY0FBYztnQkFDdkIsVUFBVSxFQUFFLENBQUMsVUFBc0IsRUFBRSxFQUFFO29CQUNyQyxPQUFPLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUN4QyxDQUFDO2dCQUNELElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQzthQUNuQjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxrQkFBa0I7Z0JBQzNCLFVBQVUsRUFBRSxDQUFDLFVBQXNCLEVBQUUsRUFBRTtvQkFDckMsT0FBTyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDdkMsQ0FBQztnQkFDRCxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUM7YUFDbkI7U0FDRixZQXhCQyxjQUFjO1lBQ2QsYUFBYTtZQUNiLFlBQVk7WUFDWixXQUFXO1lBQ1gsY0FBYztZQUNkLFVBQVU7WUFDVixhQUFhOzsyRkFvQkosU0FBUztrQkE3QnJCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsWUFBWSxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixDQUFDO29CQUN4RixPQUFPLEVBQUU7d0JBQ1AsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxjQUFjO3dCQUNkLFVBQVU7d0JBQ1YsYUFBYTtxQkFDZDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLENBQUM7b0JBQ25GLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsY0FBYzs0QkFDdkIsVUFBVSxFQUFFLENBQUMsVUFBc0IsRUFBRSxFQUFFO2dDQUNyQyxPQUFPLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDOzRCQUN4QyxDQUFDOzRCQUNELElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQzt5QkFDbkI7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGtCQUFrQjs0QkFDM0IsVUFBVSxFQUFFLENBQUMsVUFBc0IsRUFBRSxFQUFFO2dDQUNyQyxPQUFPLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDOzRCQUN2QyxDQUFDOzRCQUNELElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQzt5QkFDbkI7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgYXMgTmdDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIGFzIE5nRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIENvcmVNb2R1bGUsIEZvcm1zTW9kdWxlLCBSZWFsdGltZU1vZHVsZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvdG9vbHRpcCc7XG5pbXBvcnQgeyBDbHVzdGVyTWFwQ29tcG9uZW50IH0gZnJvbSAnLi9jbHVzdGVyLW1hcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWFwUG9wdXBEaXJlY3RpdmUgfSBmcm9tICcuL21hcC1wb3B1cC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTWFwU3RhdHVzQ29tcG9uZW50IH0gZnJvbSAnLi9tYXAtc3RhdHVzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXBDb21wb25lbnQgfSBmcm9tICcuL21hcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTUFQX0RFRkFVTFRfQ09ORklHLCBNQVBfVElMRV9MQVlFUiB9IGZyb20gJy4vbWFwLm1vZGVsJztcbmltcG9ydCB7IE1hcFNlcnZpY2UgfSBmcm9tICcuL21hcC5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbTWFwQ29tcG9uZW50LCBNYXBTdGF0dXNDb21wb25lbnQsIENsdXN0ZXJNYXBDb21wb25lbnQsIE1hcFBvcHVwRGlyZWN0aXZlXSxcbiAgaW1wb3J0czogW1xuICAgIE5nQ29tbW9uTW9kdWxlLFxuICAgIE5nRm9ybXNNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWx0aW1lTW9kdWxlLFxuICAgIENvcmVNb2R1bGUsXG4gICAgVG9vbHRpcE1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbTWFwQ29tcG9uZW50LCBNYXBTdGF0dXNDb21wb25lbnQsIENsdXN0ZXJNYXBDb21wb25lbnQsIE1hcFBvcHVwRGlyZWN0aXZlXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTUFQX1RJTEVfTEFZRVIsXG4gICAgICB1c2VGYWN0b3J5OiAobWFwU2VydmljZTogTWFwU2VydmljZSkgPT4ge1xuICAgICAgICByZXR1cm4gbWFwU2VydmljZS5nZXRNYXBUaWxlTGF5ZXJzJCgpO1xuICAgICAgfSxcbiAgICAgIGRlcHM6IFtNYXBTZXJ2aWNlXVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTUFQX0RFRkFVTFRfQ09ORklHLFxuICAgICAgdXNlRmFjdG9yeTogKG1hcFNlcnZpY2U6IE1hcFNlcnZpY2UpID0+IHtcbiAgICAgICAgcmV0dXJuIG1hcFNlcnZpY2UuZ2V0RGVmYXVsdENvbmZpZygpO1xuICAgICAgfSxcbiAgICAgIGRlcHM6IFtNYXBTZXJ2aWNlXVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBNYXBNb2R1bGUge31cbiJdfQ==
|