@c8y/ngx-components 1018.503.1 → 1018.503.22
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/core/common/ApplicationOptions.d.ts +4 -2
- package/core/common/files.service.d.ts +10 -2
- package/core/common/global-config.service.d.ts +1 -1
- package/core/common/permissions.service.d.ts +67 -0
- package/core/common/tenant-ui.service.d.ts +1 -1
- package/core/i18n/pattern-messages.data.d.ts +20 -20
- package/esm2020/assets-navigator/asset-node.service.mjs +5 -4
- package/esm2020/auth-configuration/auth-configuration.guard.mjs +5 -2
- package/esm2020/auth-configuration/factories/navigation.factory.mjs +3 -3
- package/esm2020/cockpit-config/cockpit-config.guard.mjs +2 -2
- package/esm2020/cockpit-config/cockpit-config.service.mjs +2 -2
- package/esm2020/context-dashboard/add-dashboard.factory.mjs +6 -3
- package/esm2020/context-dashboard/context-dashboard.component.mjs +2 -2
- package/esm2020/context-dashboard/context-dashboard.service.mjs +3 -3
- package/esm2020/context-dashboard/dashboard-detail.component.mjs +2 -2
- package/esm2020/context-dashboard/report-dashboard/report-dashboard-list.component.mjs +3 -3
- package/esm2020/core/common/ApplicationOptions.mjs +1 -1
- package/esm2020/core/common/files.service.mjs +20 -4
- package/esm2020/core/common/global-config.service.mjs +7 -2
- package/esm2020/core/common/permissions.service.mjs +68 -1
- package/esm2020/core/common/tenant-ui.service.mjs +3 -2
- package/esm2020/core/common/user-preferences/user-preferences.service.mjs +6 -2
- package/esm2020/core/docs/support-outlet/support-outlet.component.mjs +3 -2
- package/esm2020/core/drop-area/drop-area.component.mjs +3 -1
- package/esm2020/core/i18n/pattern-messages.data.mjs +21 -21
- package/esm2020/core/setup/setup.service.mjs +2 -2
- package/esm2020/ecosystem/application-properties/application-properties.component.mjs +2 -2
- package/esm2020/ecosystem/application-properties/subscription-modal/subscription-modal.component.mjs +3 -3
- package/esm2020/ecosystem/ecosystem-navigation.factory.mjs +3 -3
- package/esm2020/ecosystem/packages/package-list/packages-list.component.mjs +2 -2
- package/esm2020/ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.mjs +2 -2
- package/esm2020/files-repository/files-repository.guard.mjs +5 -3
- package/esm2020/location/location.component.mjs +20 -13
- package/esm2020/map/cluster-map.component.mjs +19 -11
- package/esm2020/map/cluster-map.mjs +8 -3
- package/esm2020/map/map-status.component.mjs +19 -5
- package/esm2020/map/map.component.mjs +10 -10
- package/esm2020/map/map.model.mjs +1 -19
- package/esm2020/map/map.service.mjs +24 -1
- package/esm2020/protocol-lwm2m/components/bootstrap-parameters/lwm2m-bootstrap-parameters.component.mjs +2 -2
- package/esm2020/protocol-lwm2m/components/configuration/typed-forms/form-wrapper-base.component.mjs +2 -2
- package/esm2020/register-device/register-device-navigation.factory.mjs +3 -3
- package/esm2020/replace-device/replace-device.service.mjs +5 -5
- package/esm2020/reports/export-schedules.component.mjs +3 -3
- package/esm2020/repository/configuration/device-tab/configuration-preview.component.mjs +4 -4
- package/esm2020/sms-gateway/sms-gateway.guard.mjs +2 -2
- package/esm2020/sms-gateway/sms-gateway.module.mjs +6 -6
- package/esm2020/sub-assets/add-group/add-group.component.mjs +2 -2
- package/esm2020/sub-assets/asset-properties-item.component.mjs +6 -6
- package/esm2020/sub-assets/groups.component.mjs +2 -2
- package/esm2020/sub-assets/sub-assets.component.mjs +2 -2
- package/esm2020/sub-assets/sub-assets.service.mjs +16 -10
- package/esm2020/tenants/tenant-list/tenant-list.component.mjs +12 -7
- package/esm2020/upgrade/ng1/downgraded.services.mjs +3 -2
- package/esm2020/upgrade/ng1/index.mjs +4 -3
- package/esm2020/widgets/cockpit/index.mjs +1 -1
- package/esm2020/widgets/device-management/index.mjs +1 -1
- package/fesm2015/c8y-ngx-components-assets-navigator.mjs +4 -3
- package/fesm2015/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-auth-configuration.mjs +7 -4
- package/fesm2015/c8y-ngx-components-auth-configuration.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-cockpit-config.mjs +3 -3
- package/fesm2015/c8y-ngx-components-cockpit-config.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-context-dashboard.mjs +12 -9
- package/fesm2015/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-ecosystem.mjs +8 -8
- package/fesm2015/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-files-repository.mjs +5 -3
- package/fesm2015/c8y-ngx-components-files-repository.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-location.mjs +20 -13
- package/fesm2015/c8y-ngx-components-location.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-map.mjs +174 -142
- package/fesm2015/c8y-ngx-components-map.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs +2 -2
- package/fesm2015/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs +1 -1
- package/fesm2015/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-register-device.mjs +3 -3
- package/fesm2015/c8y-ngx-components-register-device.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-replace-device.mjs +5 -5
- package/fesm2015/c8y-ngx-components-replace-device.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-reports.mjs +2 -2
- package/fesm2015/c8y-ngx-components-reports.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-repository-configuration.mjs +3 -3
- package/fesm2015/c8y-ngx-components-repository-configuration.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-sms-gateway.mjs +6 -6
- package/fesm2015/c8y-ngx-components-sms-gateway.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-sub-assets.mjs +24 -18
- package/fesm2015/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-tenants.mjs +11 -6
- package/fesm2015/c8y-ngx-components-tenants.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-upgrade.mjs +4 -2
- package/fesm2015/c8y-ngx-components-upgrade.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-widgets-device-management.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components.mjs +121 -28
- package/fesm2015/c8y-ngx-components.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-assets-navigator.mjs +4 -3
- package/fesm2020/c8y-ngx-components-assets-navigator.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-auth-configuration.mjs +7 -4
- package/fesm2020/c8y-ngx-components-auth-configuration.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-cockpit-config.mjs +3 -3
- package/fesm2020/c8y-ngx-components-cockpit-config.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-context-dashboard.mjs +12 -9
- package/fesm2020/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-ecosystem.mjs +8 -8
- package/fesm2020/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-files-repository.mjs +5 -3
- package/fesm2020/c8y-ngx-components-files-repository.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-location.mjs +20 -13
- package/fesm2020/c8y-ngx-components-location.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-map.mjs +174 -142
- package/fesm2020/c8y-ngx-components-map.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs +2 -2
- package/fesm2020/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs +1 -1
- package/fesm2020/c8y-ngx-components-protocol-lwm2m-components-configuration.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-register-device.mjs +3 -3
- package/fesm2020/c8y-ngx-components-register-device.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-replace-device.mjs +5 -5
- package/fesm2020/c8y-ngx-components-replace-device.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-reports.mjs +2 -2
- package/fesm2020/c8y-ngx-components-reports.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-repository-configuration.mjs +3 -3
- package/fesm2020/c8y-ngx-components-repository-configuration.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-sms-gateway.mjs +6 -6
- package/fesm2020/c8y-ngx-components-sms-gateway.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-sub-assets.mjs +24 -18
- package/fesm2020/c8y-ngx-components-sub-assets.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-tenants.mjs +11 -6
- package/fesm2020/c8y-ngx-components-tenants.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-upgrade.mjs +4 -2
- package/fesm2020/c8y-ngx-components-upgrade.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-widgets-device-management.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components.mjs +121 -28
- package/fesm2020/c8y-ngx-components.mjs.map +1 -1
- package/locales/locales.pot +3 -0
- package/location/location.component.d.ts +2 -2
- package/map/cluster-map.component.d.ts +3 -1
- package/map/map-status.component.d.ts +12 -1
- package/map/map.component.d.ts +1 -1
- package/map/map.model.d.ts +0 -1
- package/map/map.service.d.ts +6 -0
- package/package.json +1 -1
- package/tenants/tenant-list/tenant-list.component.d.ts +4 -2
- package/upgrade/ng1/downgraded.services.d.ts +1 -0
- package/widgets/cockpit/index.d.ts +2 -1
- package/widgets/device-management/index.d.ts +2 -1
|
@@ -5,7 +5,7 @@ import { flatten, isUndefined } from 'lodash-es';
|
|
|
5
5
|
import { Observable, Subject, combineLatest, fromEvent } from 'rxjs';
|
|
6
6
|
import { first, takeUntil } from 'rxjs/operators';
|
|
7
7
|
import { MapPopupDirective } from './map-popup.directive';
|
|
8
|
-
import { MAP_DEFAULT_CONFIG, MAP_TILE_LAYER, getC8yMarker
|
|
8
|
+
import { MAP_DEFAULT_CONFIG, MAP_TILE_LAYER, getC8yMarker } from './map.model';
|
|
9
9
|
import { MapService } from './map.service';
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
11
|
import * as i1 from "@c8y/ngx-components";
|
|
@@ -34,7 +34,7 @@ export class MapComponent {
|
|
|
34
34
|
this.onZoomEnd = new EventEmitter();
|
|
35
35
|
this.onRealtimeUpdate = new EventEmitter();
|
|
36
36
|
this.onInit = new EventEmitter();
|
|
37
|
-
this.
|
|
37
|
+
this.unsubscribeTrigger$ = new Subject();
|
|
38
38
|
}
|
|
39
39
|
startRealtime() {
|
|
40
40
|
if (!this.assets || (Array.isArray(this.assets) && this.assets.length > 1)) {
|
|
@@ -108,7 +108,7 @@ export class MapComponent {
|
|
|
108
108
|
}
|
|
109
109
|
getAssetIcon(asset) {
|
|
110
110
|
const assetTypeIcon = this.config.icon || asset.icon?.name;
|
|
111
|
-
const status = getStatus(asset);
|
|
111
|
+
const status = MapService.getStatus(asset);
|
|
112
112
|
const color = this.config.color ? `style='color: ${this.config.color};'` : '';
|
|
113
113
|
const icon = this.leaflet.divIcon({
|
|
114
114
|
html: `<div class="dlt-c8y-icon-marker icon-3x ${status}" ${color}><i class="dlt-c8y-icon-${assetTypeIcon || 'data-transfer'}" /></div>`,
|
|
@@ -148,7 +148,7 @@ export class MapComponent {
|
|
|
148
148
|
async ngAfterViewInit() {
|
|
149
149
|
this.leaflet = await this.mapService.getLeaflet();
|
|
150
150
|
combineLatest([this.layers$, this.defaultConfig$])
|
|
151
|
-
.pipe(first(), takeUntil(this.
|
|
151
|
+
.pipe(first(), takeUntil(this.unsubscribeTrigger$))
|
|
152
152
|
.subscribe(([layers, defaultConfig]) => {
|
|
153
153
|
this.initMap(layers, defaultConfig);
|
|
154
154
|
this.refreshMarkers();
|
|
@@ -166,7 +166,7 @@ export class MapComponent {
|
|
|
166
166
|
this.unsubscribeAllListeners();
|
|
167
167
|
}
|
|
168
168
|
unsubscribeAllListeners() {
|
|
169
|
-
this.
|
|
169
|
+
this.unsubscribeTrigger$.next();
|
|
170
170
|
this.stopRealtime();
|
|
171
171
|
}
|
|
172
172
|
initMap(layers, defaultConfig) {
|
|
@@ -183,16 +183,16 @@ export class MapComponent {
|
|
|
183
183
|
this.addLayers(layers);
|
|
184
184
|
this.handleMobile();
|
|
185
185
|
fromEvent(this.map, 'moveend')
|
|
186
|
-
.pipe(takeUntil(this.
|
|
186
|
+
.pipe(takeUntil(this.unsubscribeTrigger$))
|
|
187
187
|
.subscribe(event => this.onMoveEnd.emit(event));
|
|
188
188
|
fromEvent(this.map, 'move')
|
|
189
|
-
.pipe(takeUntil(this.
|
|
189
|
+
.pipe(takeUntil(this.unsubscribeTrigger$))
|
|
190
190
|
.subscribe(event => this.onMove.emit(event));
|
|
191
191
|
fromEvent(this.map, 'zoomend')
|
|
192
|
-
.pipe(takeUntil(this.
|
|
192
|
+
.pipe(takeUntil(this.unsubscribeTrigger$))
|
|
193
193
|
.subscribe(event => this.onZoomEnd.emit(event));
|
|
194
194
|
fromEvent(this.map, 'zoomstart')
|
|
195
|
-
.pipe(takeUntil(this.
|
|
195
|
+
.pipe(takeUntil(this.unsubscribeTrigger$))
|
|
196
196
|
.subscribe(event => this.onZoomStart.emit(event));
|
|
197
197
|
this.isInit = true;
|
|
198
198
|
this.onInit.emit(this.leaflet);
|
|
@@ -356,4 +356,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
356
356
|
}], onInit: [{
|
|
357
357
|
type: Output
|
|
358
358
|
}] } });
|
|
359
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL21hcC9tYXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vbWFwL21hcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUdOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsNEJBQTRCLEVBRTVCLE9BQU8sRUFDUCxjQUFjLEVBRWYsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBZ0IsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRixPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFFTCxrQkFBa0IsRUFDbEIsY0FBYyxFQUdkLFlBQVksRUFDWixTQUFTLEVBQ1YsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBTzNDLE1BQU0sT0FBTyxZQUFZO0lBbUR2QixZQUNZLGlCQUErQyxFQUMvQyxVQUFzQixFQUNFLE9BQW1DLEVBRTNELGNBQTRDLEVBQzVDLGdCQUFrQztRQUxsQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQThCO1FBQy9DLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDRSxZQUFPLEdBQVAsT0FBTyxDQUE0QjtRQUUzRCxtQkFB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QjtnQkFJL0IsTUFBTTtzQkFETCxLQUFLO2dCQUlOLE1BQU07c0JBREwsS0FBSztnQkFJTixNQUFNO3NCQURMLE1BQU07Z0JBSVAsU0FBUztzQkFEUixNQUFNO2dCQUlQLFdBQVc7c0JBRFYsTUFBTTtnQkFJUCxTQUFTO3NCQURSLE1BQU07Z0JBSVAsZ0JBQWdCO3NCQURmLE1BQU07Z0JBSVAsTUFBTTtzQkFETCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2UsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE1hbmFnZWRPYmplY3RSZWFsdGltZVNlcnZpY2UsXG4gIE1hcFRpbGVMYXllcixcbiAgZ2V0dGV4dCxcbiAgc29ydEJ5UHJpb3JpdHksXG4gIE1hcERlZmF1bHRDb25maWdcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgdHlwZSAqIGFzIEwgZnJvbSAnbGVhZmxldCc7XG5pbXBvcnQgeyBmbGF0dGVuLCBpc1VuZGVmaW5lZCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGNvbWJpbmVMYXRlc3QsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlyc3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1hcFBvcHVwRGlyZWN0aXZlIH0gZnJvbSAnLi9tYXAtcG9wdXAuZGlyZWN0aXZlJztcbmltcG9ydCB7XG4gIEM4eU1hcmtlcixcbiAgTUFQX0RFRkFVTFRfQ09ORklHLFxuICBNQVBfVElMRV9MQVlFUixcbiAgTWFwQ29uZmlnLFxuICBQb3NpdGlvbk1hbmFnZWRPYmplY3QsXG4gIGdldEM4eU1hcmtlcixcbiAgZ2V0U3RhdHVzXG59IGZyb20gJy4vbWFwLm1vZGVsJztcbmltcG9ydCB7IE1hcFNlcnZpY2UgfSBmcm9tICcuL21hcC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LW1hcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXAuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtNYW5hZ2VkT2JqZWN0UmVhbHRpbWVTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBNYXBDb21wb25lbnQge1xuICAvKipcbiAgICogVGhlIGxlYWZsZXQgbWFwIG9iamVjdC5cbiAgICovXG4gIG1hcDogTC5NYXA7XG4gIC8qKlxuICAgKiBUaGUgbWFya2VycyBwbGFjZWQgb24gdGhlIG1hcC5cbiAgICovXG4gIG1hcmtlcnM6IEFycmF5PEM4eU1hcmtlciB8IEwuTWFya2VyPiA9IFtdO1xuICAvKipcbiAgICogVGhlIGxlYWZsZXQgcmVwcmVzZW50YXRpb24gdXNlZC5cbiAgICovXG4gIGxlYWZsZXQ6IHR5cGVvZiBMO1xuICAvKipcbiAgICogVGVsbHMgaWYgdGhlIG1hcCB3YXMgYWxyZWFkeSBpbml0aWFsaXplZC5cbiAgICovXG4gIGlzSW5pdCA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ21hcCcpXG4gIG1hcEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgQENvbnRlbnRDaGlsZChNYXBQb3B1cERpcmVjdGl2ZSlcbiAgcG9wdXA6IE1hcFBvcHVwRGlyZWN0aXZlO1xuXG4gIEBJbnB1dCgpXG4gIGNvbmZpZzogTWFwQ29uZmlnID0ge307XG5cbiAgQElucHV0KClcbiAgYXNzZXRzOiBQb3NpdGlvbk1hbmFnZWRPYmplY3QgfCBQb3NpdGlvbk1hbmFnZWRPYmplY3RbXTtcblxuICBAT3V0cHV0KClcbiAgb25Nb3ZlID0gbmV3IEV2ZW50RW1pdHRlcjxMLkxlYWZsZXRFdmVudD4oKTtcblxuICBAT3V0cHV0KClcbiAgb25Nb3ZlRW5kID0gbmV3IEV2ZW50RW1pdHRlcjxMLkxlYWZsZXRFdmVudD4oKTtcblxuICBAT3V0cHV0KClcbiAgb25ab29tU3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPEwuTGVhZmxldEV2ZW50PigpO1xuXG4gIEBPdXRwdXQoKVxuICBvblpvb21FbmQgPSBuZXcgRXZlbnRFbWl0dGVyPEwuTGVhZmxldEV2ZW50PigpO1xuXG4gIEBPdXRwdXQoKVxuICBvblJlYWx0aW1lVXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxQb3NpdGlvbk1hbmFnZWRPYmplY3Q+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uSW5pdCA9IG5ldyBFdmVudEVtaXR0ZXI8dHlwZW9mIEw+KCk7XG5cbiAgcHJvdGVjdGVkIHJlYWx0aW1lU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIG1vUmVhbHRpbWVTZXJ2aWNlOiBNYW5hZ2VkT2JqZWN0UmVhbHRpbWVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBtYXBTZXJ2aWNlOiBNYXBTZXJ2aWNlLFxuICAgIEBJbmplY3QoTUFQX1RJTEVfTEFZRVIpIHByb3RlY3RlZCBsYXllcnMkOiBPYnNlcnZhYmxlPE1hcFRpbGVMYXllcltdPixcbiAgICBASW5qZWN0KE1BUF9ERUZBVUxUX0NPTkZJRylcbiAgICBwcm90ZWN0ZWQgZGVmYXVsdENvbmZpZyQ6IE9ic2VydmFibGU8TWFwRGVmYXVsdENvbmZpZz4sXG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7fVxuXG4gIHN0YXJ0UmVhbHRpbWUoKSB7XG4gICAgaWYgKCF0aGlzLmFzc2V0cyB8fCAoQXJyYXkuaXNBcnJheSh0aGlzLmFzc2V0cykgJiYgdGhpcy5hc3NldHMubGVuZ3RoID4gMSkpIHtcbiAgICAgIHRoaXMuY29uZmlnLnJlYWx0aW1lID0gZmFsc2U7XG4gICAgICB0aGlzLnN0b3BSZWFsdGltZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBhc3NldCA9IEFycmF5LmlzQXJyYXkodGhpcy5hc3NldHMpID8gdGhpcy5hc3NldHNbMF0gOiB0aGlzLmFzc2V0cztcbiAgICB0aGlzLnJlYWx0aW1lU3Vic2NyaXB0aW9uID0gdGhpcy5tb1JlYWx0aW1lU2VydmljZVxuICAgICAgLm9uVXBkYXRlJChhc3NldClcbiAgICAgIC5zdWJzY3JpYmUoKGFzc2V0OiBQb3NpdGlvbk1hbmFnZWRPYmplY3QpID0+IHtcbiAgICAgICAgY29uc3QgbWFya2VyID0gdGhpcy5maW5kTWFya2VyKGFzc2V0LmlkKTtcbiAgICAgICAgY29uc3QgaWNvbiA9IHRoaXMuZ2V0QXNzZXRJY29uKGFzc2V0KTtcbiAgICAgICAgbWFya2VyLnNldEljb24oaWNvbik7XG4gICAgICAgIG1hcmtlci5zZXRMYXRMbmcoW2Fzc2V0LmM4eV9Qb3NpdGlvbi5sYXQsIGFzc2V0LmM4eV9Qb3NpdGlvbi5sbmddKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5hc3NldHMpKSB7XG4gICAgICAgICAgdGhpcy5hc3NldHNbMF0gPSBhc3NldDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmFzc2V0cyA9IGFzc2V0O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubW92ZVRvUG9zaXRpb25PZk1vKGFzc2V0KTtcbiAgICAgICAgdGhpcy5vblJlYWx0aW1lVXBkYXRlLmVtaXQoYXNzZXQpO1xuICAgICAgfSk7XG4gIH1cblxuICBtb3ZlVG9Qb3NpdGlvbk9mTW8ocG9zaXRpb25zOiBQb3NpdGlvbk1hbmFnZWRPYmplY3QgfCBQb3NpdGlvbk1hbmFnZWRPYmplY3RbXSkge1xuICAgIGNvbnN0IHBvc2l0aW9uID0gQXJyYXkuaXNBcnJheShwb3NpdGlvbnMpID8gcG9zaXRpb25zWzBdIDogcG9zaXRpb25zO1xuICAgIGlmICh0aGlzLmNvbmZpZy5mb2xsb3cpIHtcbiAgICAgIHRoaXMubWFwLnNldFZpZXcoW3Bvc2l0aW9uLmM4eV9Qb3NpdGlvbi5sYXQsIHBvc2l0aW9uLmM4eV9Qb3NpdGlvbi5sbmddKTtcbiAgICB9XG4gIH1cblxuICBzdG9wUmVhbHRpbWUoKSB7XG4gICAgaWYgKHRoaXMucmVhbHRpbWVTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMucmVhbHRpbWVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBmaW5kTWFya2VyKGFzc2V0SWQpIHtcbiAgICByZXR1cm4gdGhpcy5tYXJrZXJzLmZpbmQoKG1hcmtlcjogQzh5TWFya2VyKSA9PiBtYXJrZXIuYXNzZXQ/LmlkID09PSBhc3NldElkKTtcbiAgfVxuXG4gIGFkZE1hcmtlclRvTWFwKG1hcmtlcjogQzh5TWFya2VyIHwgTC5NYXJrZXIpIHtcbiAgICB0aGlzLm1hcmtlcnMucHVzaChtYXJrZXIpO1xuICAgIG1hcmtlci5hZGRUbyh0aGlzLm1hcCk7XG4gIH1cblxuICBnZXRBc3NldE1hcmtlcihhc3NldDogUG9zaXRpb25NYW5hZ2VkT2JqZWN0KSB7XG4gICAgaWYgKCFhc3NldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGljb24gPSB0aGlzLmdldEFzc2V0SWNvbihhc3NldCk7XG4gICAgY29uc3QgbGVhZmxldE1hcmtlciA9IHRoaXMubGVhZmxldC5tYXJrZXIoW2Fzc2V0LmM4eV9Qb3NpdGlvbi5sYXQsIGFzc2V0LmM4eV9Qb3NpdGlvbi5sbmddLCB7XG4gICAgICBpY29uXG4gICAgfSk7XG4gICAgY29uc3QgbWFya2VyID0gZ2V0Qzh5TWFya2VyKGxlYWZsZXRNYXJrZXIsIGFzc2V0KTtcblxuICAgIGlmICh0aGlzLnBvcHVwKSB7XG4gICAgICBtYXJrZXIub24oJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICB0aGlzLnBvcHVwLnZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgICAgICAgY29uc3QgdmlldyA9IHRoaXMucG9wdXAudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5wb3B1cC50ZW1wbGF0ZSwge1xuICAgICAgICAgICRpbXBsaWNpdDogYXNzZXRcbiAgICAgICAgfSk7XG4gICAgICAgIHZpZXcuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBtYXJrZXJcbiAgICAgICAgICAudW5iaW5kUG9wdXAoKVxuICAgICAgICAgIC5iaW5kUG9wdXAodGhpcy5wb3B1cC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucHJldmlvdXNTaWJsaW5nLCB7XG4gICAgICAgICAgICBvZmZzZXQ6IFswLCAtMzBdLFxuICAgICAgICAgICAgbWF4V2lkdGg6IDE0MCxcbiAgICAgICAgICAgIGF1dG9QYW46IGZhbHNlXG4gICAgICAgICAgfSlcbiAgICAgICAgICAub3BlblBvcHVwKCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFya2VyO1xuICB9XG5cbiAgZ2V0QXNzZXRJY29uKGFzc2V0OiBQb3NpdGlvbk1hbmFnZWRPYmplY3QpIHtcbiAgICBjb25zdCBhc3NldFR5cGVJY29uID0gdGhpcy5jb25maWcuaWNvbiB8fCBhc3NldC5pY29uPy5uYW1lO1xuICAgIGNvbnN0IHN0YXR1cyA9IGdldFN0YXR1cyhhc3NldCk7XG4gICAgY29uc3QgY29sb3IgPSB0aGlzLmNvbmZpZy5jb2xvciA/IGBzdHlsZT0nY29sb3I6ICR7dGhpcy5jb25maWcuY29sb3J9OydgIDogJyc7XG4gICAgY29uc3QgaWNvbiA9IHRoaXMubGVhZmxldC5kaXZJY29uKHtcbiAgICAgIGh0bWw6IGA8ZGl2IGNsYXNzPVwiZGx0LWM4eS1pY29uLW1hcmtlciBpY29uLTN4ICR7c3RhdHVzfVwiICR7Y29sb3J9PjxpIGNsYXNzPVwiZGx0LWM4eS1pY29uLSR7XG4gICAgICAgIGFzc2V0VHlwZUljb24gfHwgJ2RhdGEtdHJhbnNmZXInXG4gICAgICB9XCIgLz48L2Rpdj5gLFxuICAgICAgY2xhc3NOYW1lOiAnYzh5LW1hcC1tYXJrZXItaWNvbicsXG4gICAgICAvLyBpY29uQW5jaG9yIGlzIHVzZWQgdG8gc2V0IHRoZSBtYXJrZXIgYWNjdXJhdGVseSBvbiBjbGlja1xuICAgICAgaWNvbkFuY2hvcjogWzgsIDhdXG4gICAgfSk7XG4gICAgcmV0dXJuIGljb247XG4gIH1cblxuICBjbGVhck1hcmtlcnMoKSB7XG4gICAgdGhpcy5tYXJrZXJzLmZvckVhY2gobWFya2VyID0+IG1hcmtlci5yZW1vdmUoKSk7XG4gICAgdGhpcy5tYXJrZXJzID0gW107XG4gIH1cblxuICByZWZyZXNoTWFya2VycygpIHtcbiAgICB0aGlzLmNsZWFyTWFya2VycygpO1xuICAgIGxldCBhc3NldHM6IFBvc2l0aW9uTWFuYWdlZE9iamVjdFtdID0gW107XG4gICAgaWYgKCFpc1VuZGVmaW5lZCh0aGlzLmFzc2V0cykpIHtcbiAgICAgIGFzc2V0cyA9IEFycmF5LmlzQXJyYXkodGhpcy5hc3NldHMpID8gdGhpcy5hc3NldHMgOiBbdGhpcy5hc3NldHNdO1xuICAgIH1cbiAgICBhc3NldHMuZm9yRWFjaChhc3NldCA9PiB7XG4gICAgICBjb25zdCBtYXJrZXIgPSB0aGlzLmdldEFzc2V0TWFya2VyKGFzc2V0KTtcbiAgICAgIHRoaXMuYWRkTWFya2VyVG9NYXAobWFya2VyKTtcbiAgICB9KTtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmNlbnRlcikge1xuICAgICAgdGhpcy56b29tVG9Cb3VuZChhc3NldHMpO1xuICAgIH1cbiAgICB0aGlzLnRvZ2dsZUNvbnRyb2xzKCk7XG4gIH1cblxuICBjZW50ZXIoKSB7XG4gICAgdGhpcy5tYXAuc2V0Vmlldyh0aGlzLmNvbmZpZy5jZW50ZXIpO1xuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICBpZiAodGhpcy5pc0luaXQpIHtcbiAgICAgIHRoaXMucmVmcmVzaE1hcmtlcnMoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMubGVhZmxldCA9IGF3YWl0IHRoaXMubWFwU2VydmljZS5nZXRMZWFmbGV0KCk7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5sYXllcnMkLCB0aGlzLmRlZmF1bHRDb25maWckXSlcbiAgICAgIC5waXBlKGZpcnN0KCksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKFtsYXllcnMsIGRlZmF1bHRDb25maWddKSA9PiB7XG4gICAgICAgIHRoaXMuaW5pdE1hcChsYXllcnMsIGRlZmF1bHRDb25maWcpO1xuICAgICAgICB0aGlzLnJlZnJlc2hNYXJrZXJzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuYXNzZXRzPy5jdXJyZW50VmFsdWUgJiYgIWNoYW5nZXMuYXNzZXRzPy5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5yZWZyZXNoTWFya2VycygpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLmNvbmZpZz8uY3VycmVudFZhbHVlICYmICFjaGFuZ2VzLmNvbmZpZz8uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuY2hhbmdlQ29uZmlnKGNoYW5nZXMuY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bnN1YnNjcmliZUFsbExpc3RlbmVycygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVuc3Vic2NyaWJlQWxsTGlzdGVuZXJzKCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuc3RvcFJlYWx0aW1lKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5pdE1hcChsYXllcnM6IE1hcFRpbGVMYXllcltdLCBkZWZhdWx0Q29uZmlnOiBNYXBDb25maWcpOiB2b2lkIHtcbiAgICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICAgIGNlbnRlcjogdGhpcy5jb25maWcuY2VudGVyIHx8IGRlZmF1bHRDb25maWcuY2VudGVyLFxuICAgICAgem9vbVNuYXA6IDAsXG4gICAgICB6b29tOiB0aGlzLmNvbmZpZy56b29tTGV2ZWwgfHwgZGVmYXVsdENvbmZpZy56b29tTGV2ZWxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMubWFwKSB7XG4gICAgICB0aGlzLm1hcC5yZW1vdmUoKTtcbiAgICB9XG4gICAgdGhpcy5tYXAgPSB0aGlzLmxlYWZsZXQubWFwKHRoaXMubWFwRWxlbWVudC5uYXRpdmVFbGVtZW50LCBkZWZhdWx0T3B0aW9ucyk7XG5cbiAgICB0aGlzLm1hcC5hdHRyaWJ1dGlvbkNvbnRyb2wuc2V0UHJlZml4KCcnKTtcblxuICAgIHRoaXMuYWRkTGF5ZXJzKGxheWVycyk7XG5cbiAgICB0aGlzLmhhbmRsZU1vYmlsZSgpO1xuXG4gICAgZnJvbUV2ZW50PEwuTGVhZmxldEV2ZW50Pih0aGlzLm1hcCwgJ21vdmVlbmQnKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB0aGlzLm9uTW92ZUVuZC5lbWl0KGV2ZW50KSk7XG5cbiAgICBmcm9tRXZlbnQ8TC5MZWFmbGV0RXZlbnQ+KHRoaXMubWFwLCAnbW92ZScpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHRoaXMub25Nb3ZlLmVtaXQoZXZlbnQpKTtcblxuICAgIGZyb21FdmVudDxMLkxlYWZsZXRFdmVudD4odGhpcy5tYXAsICd6b29tZW5kJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4gdGhpcy5vblpvb21FbmQuZW1pdChldmVudCkpO1xuXG4gICAgZnJvbUV2ZW50PEwuTGVhZmxldEV2ZW50Pih0aGlzLm1hcCwgJ3pvb21zdGFydCcpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHRoaXMub25ab29tU3RhcnQuZW1pdChldmVudCkpO1xuXG4gICAgdGhpcy5pc0luaXQgPSB0cnVlO1xuICAgIHRoaXMub25Jbml0LmVtaXQodGhpcy5sZWFmbGV0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVNb2JpbGUoKSB7XG4gICAgLy8gYWRkaW5nIGV2ZW50IGxpc3RlbmVyIHRvIGRvIG1vYmlsZSAyIGZpbmdlciBzY3JvbGxpbmdcbiAgICBpZiAodGhpcy5sZWFmbGV0LkJyb3dzZXIubW9iaWxlKSB7XG4gICAgICBjb25zdCB0b3VjaE1zZyA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGdldHRleHQoJ1VzZSB0d28gZmluZ2VycyB0byBtb3ZlIHRoZSBtYXAuJykpO1xuICAgICAgdGhpcy5tYXAuZHJhZ2dpbmcuZGlzYWJsZSgpO1xuICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5tYXAuZ2V0Q29udGFpbmVyKCk7XG4gICAgICBjb250YWluZXIuc2V0QXR0cmlidXRlKCdkYXRhLXRvdWNoLXdhcm5pbmctY29udGVudCcsIHRvdWNoTXNnKTtcbiAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgZXZlbnQgPT4gdGhpcy5oYW5kbGVUb3VjaChldmVudCkpO1xuICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIGV2ZW50ID0+IHRoaXMuaGFuZGxlVG91Y2goZXZlbnQpKTtcbiAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIGV2ZW50ID0+IHRoaXMuaGFuZGxlVG91Y2goZXZlbnQpKTtcbiAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGNhbmNlbCcsIGV2ZW50ID0+IHRoaXMuaGFuZGxlVG91Y2goZXZlbnQpKTtcbiAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGV2ZW50ID0+IHRoaXMuaGFuZGxlVG91Y2goZXZlbnQpKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYWRkTGF5ZXJzKGxheWVyczogTWFwVGlsZUxheWVyW10pIHtcbiAgICBjb25zdCBmbGF0dGVuTGF5ZXJzOiBNYXBUaWxlTGF5ZXJbXSA9IGZsYXR0ZW4obGF5ZXJzKTtcbiAgICBjb25zdCB0aWxlTGF5ZXJzID0gc29ydEJ5UHJpb3JpdHkoZmxhdHRlbkxheWVycykucmVkdWNlKChhY2MsIGxheWVyKSA9PiB7XG4gICAgICBjb25zdCB0aWxlcyA9IHRoaXMubGVhZmxldC50aWxlTGF5ZXIobGF5ZXIubGF5ZXJVcmwsIGxheWVyLm9wdGlvbnMpO1xuICAgICAgdGlsZXMuYWRkVG8odGhpcy5tYXApO1xuICAgICAgYWNjID0geyBbbGF5ZXIubGFiZWxdOiB0aWxlcywgLi4uYWNjIH07XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcbiAgICBpZiAoZmxhdHRlbkxheWVycy5sZW5ndGggPiAxKSB7XG4gICAgICB0aGlzLmxlYWZsZXQuY29udHJvbC5sYXllcnModGlsZUxheWVycywgbnVsbCwgeyBwb3NpdGlvbjogJ2JvdHRvbWxlZnQnIH0pLmFkZFRvKHRoaXMubWFwKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY2hhbmdlQ29uZmlnKGNoYW5nZTogU2ltcGxlQ2hhbmdlKSB7XG4gICAgaWYgKHRoaXMuaGFzQ2hhbmdlZChjaGFuZ2UsICd6b29tTGV2ZWwnKSkge1xuICAgICAgdGhpcy5tYXAuc2V0Wm9vbSh0aGlzLmNvbmZpZy56b29tTGV2ZWwpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc0NoYW5nZWQoY2hhbmdlLCAnY2VudGVyJykpIHtcbiAgICAgIHRoaXMubWFwLnNldFZpZXcoY2hhbmdlLmN1cnJlbnRWYWx1ZS5jZW50ZXIgfHwgdGhpcy5jb25maWcuY2VudGVyKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNDaGFuZ2VkKGNoYW5nZSwgJ2ljb24nKSB8fCB0aGlzLmhhc0NoYW5nZWQoY2hhbmdlLCAnY29sb3InKSkge1xuICAgICAgdGhpcy5yZWZyZXNoTWFya2VycygpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc0NoYW5nZWQoY2hhbmdlLCAncmVhbHRpbWUnKSAmJiBjaGFuZ2UuY3VycmVudFZhbHVlLnJlYWx0aW1lKSB7XG4gICAgICB0aGlzLnN0YXJ0UmVhbHRpbWUoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlLmN1cnJlbnRWYWx1ZS5yZWFsdGltZSA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuc3RvcFJlYWx0aW1lKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGFzQ2hhbmdlZChjaGFuZ2UsICdmb2xsb3cnKSkge1xuICAgICAgdGhpcy5tb3ZlVG9Qb3NpdGlvbk9mTW8odGhpcy5hc3NldHMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc0NoYW5nZWQoY2hhbmdlLCAnZGlzYWJsZVBhbicpIHx8IHRoaXMuaGFzQ2hhbmdlZChjaGFuZ2UsICdkaXNhYmxlWm9vbScpKSB7XG4gICAgICB0aGlzLnRvZ2dsZUNvbnRyb2xzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhc0NoYW5nZWQoY2hhbmdlOiBTaW1wbGVDaGFuZ2UsIHByb3A6IGtleW9mIE1hcENvbmZpZykge1xuICAgIHJldHVybiBjaGFuZ2UuY3VycmVudFZhbHVlW3Byb3BdICE9PSBjaGFuZ2UucHJldmlvdXNWYWx1ZVtwcm9wXTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVDb250cm9scygpIHtcbiAgICBpZiAodGhpcy5jb25maWcuZGlzYWJsZVpvb20pIHtcbiAgICAgIHRoaXMubWFwLnJlbW92ZUNvbnRyb2wodGhpcy5tYXAuem9vbUNvbnRyb2wpO1xuICAgICAgdGhpcy5tYXAuc2Nyb2xsV2hlZWxab29tLmRpc2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tYXAuYWRkQ29udHJvbCh0aGlzLm1hcC56b29tQ29udHJvbCk7XG4gICAgICB0aGlzLm1hcC5zY3JvbGxXaGVlbFpvb20uZW5hYmxlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbmZpZy5kaXNhYmxlUGFuKSB7XG4gICAgICB0aGlzLm1hcC5kcmFnZ2luZy5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWFwLmRyYWdnaW5nLmVuYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVG91Y2goZTogRXZlbnQpIHtcbiAgICAvLyBEaXNyZWdhcmQgdG91Y2ggZXZlbnRzIG9uIHRoZSBtaW5pbWFwIGlmIHByZXNlbnRcbiAgICBjb25zdCBpZ25vcmVMaXN0ID0gW1xuICAgICAgJ2xlYWZsZXQtY29udHJvbC1taW5pbWFwJyxcbiAgICAgICdsZWFmbGV0LWludGVyYWN0aXZlJyxcbiAgICAgICdsZWFmbGV0LXBvcHVwLWNvbnRlbnQnLFxuICAgICAgJ2xlYWZsZXQtcG9wdXAtY29udGVudC13cmFwcGVyJyxcbiAgICAgICdsZWFmbGV0LXBvcHVwLWNsb3NlLWJ1dHRvbicsXG4gICAgICAnbGVhZmxldC1jb250cm9sLXpvb20taW4nLFxuICAgICAgJ2xlYWZsZXQtY29udHJvbC16b29tLW91dCdcbiAgICBdO1xuXG4gICAgbGV0IGlnbm9yZUVsZW1lbnQgPSBmYWxzZTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlnbm9yZUxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmxlYWZsZXQuRG9tVXRpbC5oYXNDbGFzcyhlLnRhcmdldCBhcyBIVE1MRWxlbWVudCwgaWdub3JlTGlzdFtpXSkpIHtcbiAgICAgICAgaWdub3JlRWxlbWVudCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5tYXAuZ2V0Q29udGFpbmVyKCk7XG4gICAgaWYgKGlnbm9yZUVsZW1lbnQpIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5sZWFmbGV0LkRvbVV0aWwuaGFzQ2xhc3MoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQsICdsZWFmbGV0LWludGVyYWN0aXZlJykgJiZcbiAgICAgICAgZS50eXBlID09PSAndG91Y2htb3ZlJyAmJlxuICAgICAgICAoZSBhcyBUb3VjaEV2ZW50KS50b3VjaGVzLmxlbmd0aCA9PT0gMVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubGVhZmxldC5Eb21VdGlsLmFkZENsYXNzKGNvbnRhaW5lciwgJ3RvdWNoLXdhcm5pbmcnKTtcbiAgICAgICAgdGhpcy5tYXAuZHJhZ2dpbmcuZGlzYWJsZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sZWFmbGV0LkRvbVV0aWwucmVtb3ZlQ2xhc3MoY29udGFpbmVyLCAndG91Y2gtd2FybmluZycpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChlLnR5cGUgIT09ICd0b3VjaG1vdmUnICYmIGUudHlwZSAhPT0gJ3RvdWNoc3RhcnQnKSB7XG4gICAgICB0aGlzLmxlYWZsZXQuRG9tVXRpbC5yZW1vdmVDbGFzcyhjb250YWluZXIsICd0b3VjaC13YXJuaW5nJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICgoZSBhcyBUb3VjaEV2ZW50KS50b3VjaGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5sZWFmbGV0LkRvbVV0aWwuYWRkQ2xhc3MoY29udGFpbmVyLCAndG91Y2gtd2FybmluZycpO1xuICAgICAgdGhpcy5tYXAuZHJhZ2dpbmcuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1hcC5kcmFnZ2luZy5lbmFibGUoKTtcbiAgICAgIHRoaXMubGVhZmxldC5Eb21VdGlsLnJlbW92ZUNsYXNzKGNvbnRhaW5lciwgJ3RvdWNoLXdhcm5pbmcnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHpvb21Ub0JvdW5kKGFzc2V0czogUG9zaXRpb25NYW5hZ2VkT2JqZWN0W10pIHtcbiAgICBjb25zdCBib3VuZHM6IFtudW1iZXIsIG51bWJlcl1bXSA9IGFzc2V0cy5tYXAoYXNzZXQgPT4gW1xuICAgICAgYXNzZXQuYzh5X1Bvc2l0aW9uLmxhdCxcbiAgICAgIGFzc2V0LmM4eV9Qb3NpdGlvbi5sbmdcbiAgICBdKTtcbiAgICBpZiAoYXNzZXRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMubWFwLmZseVRvQm91bmRzKGJvdW5kcywgeyBhbmltYXRlOiBmYWxzZSB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5tYXAuZmx5VG8oXG4gICAgICBbYXNzZXRzWzBdLmM4eV9Qb3NpdGlvbi5sYXQsIGFzc2V0c1swXS5jOHlfUG9zaXRpb24ubG5nXSxcbiAgICAgIHRoaXMubWFwLm9wdGlvbnMuem9vbSxcbiAgICAgIHtcbiAgICAgICAgYW5pbWF0ZTogZmFsc2VcbiAgICAgIH1cbiAgICApO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYzh5LW1hcFwiPlxuICA8ZGl2ICNtYXA+PC9kaXY+XG48L2Rpdj5cbjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
|
|
359
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL21hcC9tYXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vbWFwL21hcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUdOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsNEJBQTRCLEVBRTVCLE9BQU8sRUFDUCxjQUFjLEVBRWYsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBZ0IsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRixPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFFTCxrQkFBa0IsRUFDbEIsY0FBYyxFQUdkLFlBQVksRUFDYixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFPM0MsTUFBTSxPQUFPLFlBQVk7SUFtRHZCLFlBQ1ksaUJBQStDLEVBQy9DLFVBQXNCLEVBQ0UsT0FBbUMsRUFFM0QsY0FBNEMsRUFDNUMsZ0JBQWtDO1FBTGxDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBOEI7UUFDL0MsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNFLFlBQU8sR0FBUCxPQUFPLENBQTRCO1FBRTNELG1CQUFjLEdBQWQsY0FB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QVk7dUJBQUMsaUJBQWlCO2dCQUkvQixNQUFNO3NCQURMLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO2dCQUlOLE1BQU07c0JBREwsTUFBTTtnQkFJUCxTQUFTO3NCQURSLE1BQU07Z0JBSVAsV0FBVztzQkFEVixNQUFNO2dCQUlQLFNBQVM7c0JBRFIsTUFBTTtnQkFJUCxnQkFBZ0I7c0JBRGYsTUFBTTtnQkFJUCxNQUFNO3NCQURMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZSxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgTWFuYWdlZE9iamVjdFJlYWx0aW1lU2VydmljZSxcbiAgTWFwVGlsZUxheWVyLFxuICBnZXR0ZXh0LFxuICBzb3J0QnlQcmlvcml0eSxcbiAgTWFwRGVmYXVsdENvbmZpZ1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB0eXBlICogYXMgTCBmcm9tICdsZWFmbGV0JztcbmltcG9ydCB7IGZsYXR0ZW4sIGlzVW5kZWZpbmVkIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgY29tYmluZUxhdGVzdCwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaXJzdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTWFwUG9wdXBEaXJlY3RpdmUgfSBmcm9tICcuL21hcC1wb3B1cC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtcbiAgQzh5TWFya2VyLFxuICBNQVBfREVGQVVMVF9DT05GSUcsXG4gIE1BUF9USUxFX0xBWUVSLFxuICBNYXBDb25maWcsXG4gIFBvc2l0aW9uTWFuYWdlZE9iamVjdCxcbiAgZ2V0Qzh5TWFya2VyXG59IGZyb20gJy4vbWFwLm1vZGVsJztcbmltcG9ydCB7IE1hcFNlcnZpY2UgfSBmcm9tICcuL21hcC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LW1hcCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXAuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtNYW5hZ2VkT2JqZWN0UmVhbHRpbWVTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBNYXBDb21wb25lbnQge1xuICAvKipcbiAgICogVGhlIGxlYWZsZXQgbWFwIG9iamVjdC5cbiAgICovXG4gIG1hcDogTC5NYXA7XG4gIC8qKlxuICAgKiBUaGUgbWFya2VycyBwbGFjZWQgb24gdGhlIG1hcC5cbiAgICovXG4gIG1hcmtlcnM6IEFycmF5PEM4eU1hcmtlciB8IEwuTWFya2VyPiA9IFtdO1xuICAvKipcbiAgICogVGhlIGxlYWZsZXQgcmVwcmVzZW50YXRpb24gdXNlZC5cbiAgICovXG4gIGxlYWZsZXQ6IHR5cGVvZiBMO1xuICAvKipcbiAgICogVGVsbHMgaWYgdGhlIG1hcCB3YXMgYWxyZWFkeSBpbml0aWFsaXplZC5cbiAgICovXG4gIGlzSW5pdCA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ21hcCcpXG4gIG1hcEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgQENvbnRlbnRDaGlsZChNYXBQb3B1cERpcmVjdGl2ZSlcbiAgcG9wdXA6IE1hcFBvcHVwRGlyZWN0aXZlO1xuXG4gIEBJbnB1dCgpXG4gIGNvbmZpZzogTWFwQ29uZmlnID0ge307XG5cbiAgQElucHV0KClcbiAgYXNzZXRzOiBQb3NpdGlvbk1hbmFnZWRPYmplY3QgfCBQb3NpdGlvbk1hbmFnZWRPYmplY3RbXTtcblxuICBAT3V0cHV0KClcbiAgb25Nb3ZlID0gbmV3IEV2ZW50RW1pdHRlcjxMLkxlYWZsZXRFdmVudD4oKTtcblxuICBAT3V0cHV0KClcbiAgb25Nb3ZlRW5kID0gbmV3IEV2ZW50RW1pdHRlcjxMLkxlYWZsZXRFdmVudD4oKTtcblxuICBAT3V0cHV0KClcbiAgb25ab29tU3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPEwuTGVhZmxldEV2ZW50PigpO1xuXG4gIEBPdXRwdXQoKVxuICBvblpvb21FbmQgPSBuZXcgRXZlbnRFbWl0dGVyPEwuTGVhZmxldEV2ZW50PigpO1xuXG4gIEBPdXRwdXQoKVxuICBvblJlYWx0aW1lVXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxQb3NpdGlvbk1hbmFnZWRPYmplY3Q+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uSW5pdCA9IG5ldyBFdmVudEVtaXR0ZXI8dHlwZW9mIEw+KCk7XG5cbiAgcHJvdGVjdGVkIHJlYWx0aW1lU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCB1bnN1YnNjcmliZVRyaWdnZXIkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgbW9SZWFsdGltZVNlcnZpY2U6IE1hbmFnZWRPYmplY3RSZWFsdGltZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG1hcFNlcnZpY2U6IE1hcFNlcnZpY2UsXG4gICAgQEluamVjdChNQVBfVElMRV9MQVlFUikgcHJvdGVjdGVkIGxheWVycyQ6IE9ic2VydmFibGU8TWFwVGlsZUxheWVyW10+LFxuICAgIEBJbmplY3QoTUFQX0RFRkFVTFRfQ09ORklHKVxuICAgIHByb3RlY3RlZCBkZWZhdWx0Q29uZmlnJDogT2JzZXJ2YWJsZTxNYXBEZWZhdWx0Q29uZmlnPixcbiAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHt9XG5cbiAgc3RhcnRSZWFsdGltZSgpIHtcbiAgICBpZiAoIXRoaXMuYXNzZXRzIHx8IChBcnJheS5pc0FycmF5KHRoaXMuYXNzZXRzKSAmJiB0aGlzLmFzc2V0cy5sZW5ndGggPiAxKSkge1xuICAgICAgdGhpcy5jb25maWcucmVhbHRpbWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuc3RvcFJlYWx0aW1lKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGFzc2V0ID0gQXJyYXkuaXNBcnJheSh0aGlzLmFzc2V0cykgPyB0aGlzLmFzc2V0c1swXSA6IHRoaXMuYXNzZXRzO1xuICAgIHRoaXMucmVhbHRpbWVTdWJzY3JpcHRpb24gPSB0aGlzLm1vUmVhbHRpbWVTZXJ2aWNlXG4gICAgICAub25VcGRhdGUkKGFzc2V0KVxuICAgICAgLnN1YnNjcmliZSgoYXNzZXQ6IFBvc2l0aW9uTWFuYWdlZE9iamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBtYXJrZXIgPSB0aGlzLmZpbmRNYXJrZXIoYXNzZXQuaWQpO1xuICAgICAgICBjb25zdCBpY29uID0gdGhpcy5nZXRBc3NldEljb24oYXNzZXQpO1xuICAgICAgICBtYXJrZXIuc2V0SWNvbihpY29uKTtcbiAgICAgICAgbWFya2VyLnNldExhdExuZyhbYXNzZXQuYzh5X1Bvc2l0aW9uLmxhdCwgYXNzZXQuYzh5X1Bvc2l0aW9uLmxuZ10pO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmFzc2V0cykpIHtcbiAgICAgICAgICB0aGlzLmFzc2V0c1swXSA9IGFzc2V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuYXNzZXRzID0gYXNzZXQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tb3ZlVG9Qb3NpdGlvbk9mTW8oYXNzZXQpO1xuICAgICAgICB0aGlzLm9uUmVhbHRpbWVVcGRhdGUuZW1pdChhc3NldCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG1vdmVUb1Bvc2l0aW9uT2ZNbyhwb3NpdGlvbnM6IFBvc2l0aW9uTWFuYWdlZE9iamVjdCB8IFBvc2l0aW9uTWFuYWdlZE9iamVjdFtdKSB7XG4gICAgY29uc3QgcG9zaXRpb24gPSBBcnJheS5pc0FycmF5KHBvc2l0aW9ucykgPyBwb3NpdGlvbnNbMF0gOiBwb3NpdGlvbnM7XG4gICAgaWYgKHRoaXMuY29uZmlnLmZvbGxvdykge1xuICAgICAgdGhpcy5tYXAuc2V0VmlldyhbcG9zaXRpb24uYzh5X1Bvc2l0aW9uLmxhdCwgcG9zaXRpb24uYzh5X1Bvc2l0aW9uLmxuZ10pO1xuICAgIH1cbiAgfVxuXG4gIHN0b3BSZWFsdGltZSgpIHtcbiAgICBpZiAodGhpcy5yZWFsdGltZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5yZWFsdGltZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGZpbmRNYXJrZXIoYXNzZXRJZCkge1xuICAgIHJldHVybiB0aGlzLm1hcmtlcnMuZmluZCgobWFya2VyOiBDOHlNYXJrZXIpID0+IG1hcmtlci5hc3NldD8uaWQgPT09IGFzc2V0SWQpO1xuICB9XG5cbiAgYWRkTWFya2VyVG9NYXAobWFya2VyOiBDOHlNYXJrZXIgfCBMLk1hcmtlcikge1xuICAgIHRoaXMubWFya2Vycy5wdXNoKG1hcmtlcik7XG4gICAgbWFya2VyLmFkZFRvKHRoaXMubWFwKTtcbiAgfVxuXG4gIGdldEFzc2V0TWFya2VyKGFzc2V0OiBQb3NpdGlvbk1hbmFnZWRPYmplY3QpIHtcbiAgICBpZiAoIWFzc2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaWNvbiA9IHRoaXMuZ2V0QXNzZXRJY29uKGFzc2V0KTtcbiAgICBjb25zdCBsZWFmbGV0TWFya2VyID0gdGhpcy5sZWFmbGV0Lm1hcmtlcihbYXNzZXQuYzh5X1Bvc2l0aW9uLmxhdCwgYXNzZXQuYzh5X1Bvc2l0aW9uLmxuZ10sIHtcbiAgICAgIGljb25cbiAgICB9KTtcbiAgICBjb25zdCBtYXJrZXIgPSBnZXRDOHlNYXJrZXIobGVhZmxldE1hcmtlciwgYXNzZXQpO1xuXG4gICAgaWYgKHRoaXMucG9wdXApIHtcbiAgICAgIG1hcmtlci5vbignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgIHRoaXMucG9wdXAudmlld0NvbnRhaW5lci5jbGVhcigpO1xuICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy5wb3B1cC52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnBvcHVwLnRlbXBsYXRlLCB7XG4gICAgICAgICAgJGltcGxpY2l0OiBhc3NldFxuICAgICAgICB9KTtcbiAgICAgICAgdmlldy5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIG1hcmtlclxuICAgICAgICAgIC51bmJpbmRQb3B1cCgpXG4gICAgICAgICAgLmJpbmRQb3B1cCh0aGlzLnBvcHVwLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wcmV2aW91c1NpYmxpbmcsIHtcbiAgICAgICAgICAgIG9mZnNldDogWzAsIC0zMF0sXG4gICAgICAgICAgICBtYXhXaWR0aDogMTQwLFxuICAgICAgICAgICAgYXV0b1BhbjogZmFsc2VcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5vcGVuUG9wdXAoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBtYXJrZXI7XG4gIH1cblxuICBnZXRBc3NldEljb24oYXNzZXQ6IFBvc2l0aW9uTWFuYWdlZE9iamVjdCkge1xuICAgIGNvbnN0IGFzc2V0VHlwZUljb24gPSB0aGlzLmNvbmZpZy5pY29uIHx8IGFzc2V0Lmljb24/Lm5hbWU7XG4gICAgY29uc3Qgc3RhdHVzID0gTWFwU2VydmljZS5nZXRTdGF0dXMoYXNzZXQpO1xuICAgIGNvbnN0IGNvbG9yID0gdGhpcy5jb25maWcuY29sb3IgPyBgc3R5bGU9J2NvbG9yOiAke3RoaXMuY29uZmlnLmNvbG9yfTsnYCA6ICcnO1xuICAgIGNvbnN0IGljb24gPSB0aGlzLmxlYWZsZXQuZGl2SWNvbih7XG4gICAgICBodG1sOiBgPGRpdiBjbGFzcz1cImRsdC1jOHktaWNvbi1tYXJrZXIgaWNvbi0zeCAke3N0YXR1c31cIiAke2NvbG9yfT48aSBjbGFzcz1cImRsdC1jOHktaWNvbi0ke1xuICAgICAgICBhc3NldFR5cGVJY29uIHx8ICdkYXRhLXRyYW5zZmVyJ1xuICAgICAgfVwiIC8+PC9kaXY+YCxcbiAgICAgIGNsYXNzTmFtZTogJ2M4eS1tYXAtbWFya2VyLWljb24nLFxuICAgICAgLy8gaWNvbkFuY2hvciBpcyB1c2VkIHRvIHNldCB0aGUgbWFya2VyIGFjY3VyYXRlbHkgb24gY2xpY2tcbiAgICAgIGljb25BbmNob3I6IFs4LCA4XVxuICAgIH0pO1xuICAgIHJldHVybiBpY29uO1xuICB9XG5cbiAgY2xlYXJNYXJrZXJzKCkge1xuICAgIHRoaXMubWFya2Vycy5mb3JFYWNoKG1hcmtlciA9PiBtYXJrZXIucmVtb3ZlKCkpO1xuICAgIHRoaXMubWFya2VycyA9IFtdO1xuICB9XG5cbiAgcmVmcmVzaE1hcmtlcnMoKSB7XG4gICAgdGhpcy5jbGVhck1hcmtlcnMoKTtcbiAgICBsZXQgYXNzZXRzOiBQb3NpdGlvbk1hbmFnZWRPYmplY3RbXSA9IFtdO1xuICAgIGlmICghaXNVbmRlZmluZWQodGhpcy5hc3NldHMpKSB7XG4gICAgICBhc3NldHMgPSBBcnJheS5pc0FycmF5KHRoaXMuYXNzZXRzKSA/IHRoaXMuYXNzZXRzIDogW3RoaXMuYXNzZXRzXTtcbiAgICB9XG4gICAgYXNzZXRzLmZvckVhY2goYXNzZXQgPT4ge1xuICAgICAgY29uc3QgbWFya2VyID0gdGhpcy5nZXRBc3NldE1hcmtlcihhc3NldCk7XG4gICAgICB0aGlzLmFkZE1hcmtlclRvTWFwKG1hcmtlcik7XG4gICAgfSk7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5jZW50ZXIpIHtcbiAgICAgIHRoaXMuem9vbVRvQm91bmQoYXNzZXRzKTtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVDb250cm9scygpO1xuICB9XG5cbiAgY2VudGVyKCkge1xuICAgIHRoaXMubWFwLnNldFZpZXcodGhpcy5jb25maWcuY2VudGVyKTtcbiAgfVxuXG4gIHJlZnJlc2goKSB7XG4gICAgaWYgKHRoaXMuaXNJbml0KSB7XG4gICAgICB0aGlzLnJlZnJlc2hNYXJrZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmxlYWZsZXQgPSBhd2FpdCB0aGlzLm1hcFNlcnZpY2UuZ2V0TGVhZmxldCgpO1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMubGF5ZXJzJCwgdGhpcy5kZWZhdWx0Q29uZmlnJF0pXG4gICAgICAucGlwZShmaXJzdCgpLCB0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZVRyaWdnZXIkKSlcbiAgICAgIC5zdWJzY3JpYmUoKFtsYXllcnMsIGRlZmF1bHRDb25maWddKSA9PiB7XG4gICAgICAgIHRoaXMuaW5pdE1hcChsYXllcnMsIGRlZmF1bHRDb25maWcpO1xuICAgICAgICB0aGlzLnJlZnJlc2hNYXJrZXJzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuYXNzZXRzPy5jdXJyZW50VmFsdWUgJiYgIWNoYW5nZXMuYXNzZXRzPy5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5yZWZyZXNoTWFya2VycygpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLmNvbmZpZz8uY3VycmVudFZhbHVlICYmICFjaGFuZ2VzLmNvbmZpZz8uZmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuY2hhbmdlQ29uZmlnKGNoYW5nZXMuY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bnN1YnNjcmliZUFsbExpc3RlbmVycygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVuc3Vic2NyaWJlQWxsTGlzdGVuZXJzKCkge1xuICAgIHRoaXMudW5zdWJzY3JpYmVUcmlnZ2VyJC5uZXh0KCk7XG4gICAgdGhpcy5zdG9wUmVhbHRpbWUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0TWFwKGxheWVyczogTWFwVGlsZUxheWVyW10sIGRlZmF1bHRDb25maWc6IE1hcENvbmZpZyk6IHZvaWQge1xuICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgICAgY2VudGVyOiB0aGlzLmNvbmZpZy5jZW50ZXIgfHwgZGVmYXVsdENvbmZpZy5jZW50ZXIsXG4gICAgICB6b29tU25hcDogMCxcbiAgICAgIHpvb206IHRoaXMuY29uZmlnLnpvb21MZXZlbCB8fCBkZWZhdWx0Q29uZmlnLnpvb21MZXZlbFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5tYXApIHtcbiAgICAgIHRoaXMubWFwLnJlbW92ZSgpO1xuICAgIH1cbiAgICB0aGlzLm1hcCA9IHRoaXMubGVhZmxldC5tYXAodGhpcy5tYXBFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIGRlZmF1bHRPcHRpb25zKTtcblxuICAgIHRoaXMubWFwLmF0dHJpYnV0aW9uQ29udHJvbC5zZXRQcmVmaXgoJycpO1xuXG4gICAgdGhpcy5hZGRMYXllcnMobGF5ZXJzKTtcblxuICAgIHRoaXMuaGFuZGxlTW9iaWxlKCk7XG5cbiAgICBmcm9tRXZlbnQ8TC5MZWFmbGV0RXZlbnQ+KHRoaXMubWFwLCAnbW92ZWVuZCcpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZVRyaWdnZXIkKSlcbiAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4gdGhpcy5vbk1vdmVFbmQuZW1pdChldmVudCkpO1xuXG4gICAgZnJvbUV2ZW50PEwuTGVhZmxldEV2ZW50Pih0aGlzLm1hcCwgJ21vdmUnKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmVUcmlnZ2VyJCkpXG4gICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHRoaXMub25Nb3ZlLmVtaXQoZXZlbnQpKTtcblxuICAgIGZyb21FdmVudDxMLkxlYWZsZXRFdmVudD4odGhpcy5tYXAsICd6b29tZW5kJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlVHJpZ2dlciQpKVxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB0aGlzLm9uWm9vbUVuZC5lbWl0KGV2ZW50KSk7XG5cbiAgICBmcm9tRXZlbnQ8TC5MZWFmbGV0RXZlbnQ+KHRoaXMubWFwLCAnem9vbXN0YXJ0JylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlVHJpZ2dlciQpKVxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB0aGlzLm9uWm9vbVN0YXJ0LmVtaXQoZXZlbnQpKTtcblxuICAgIHRoaXMuaXNJbml0ID0gdHJ1ZTtcbiAgICB0aGlzLm9uSW5pdC5lbWl0KHRoaXMubGVhZmxldCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlTW9iaWxlKCkge1xuICAgIC8vIGFkZGluZyBldmVudCBsaXN0ZW5lciB0byBkbyBtb2JpbGUgMiBmaW5nZXIgc2Nyb2xsaW5nXG4gICAgaWYgKHRoaXMubGVhZmxldC5Ccm93c2VyLm1vYmlsZSkge1xuICAgICAgY29uc3QgdG91Y2hNc2cgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChnZXR0ZXh0KCdVc2UgdHdvIGZpbmdlcnMgdG8gbW92ZSB0aGUgbWFwLicpKTtcbiAgICAgIHRoaXMubWFwLmRyYWdnaW5nLmRpc2FibGUoKTtcbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMubWFwLmdldENvbnRhaW5lcigpO1xuICAgICAgY29udGFpbmVyLnNldEF0dHJpYnV0ZSgnZGF0YS10b3VjaC13YXJuaW5nLWNvbnRlbnQnLCB0b3VjaE1zZyk7XG4gICAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIGV2ZW50ID0+IHRoaXMuaGFuZGxlVG91Y2goZXZlbnQpKTtcbiAgICAgIGNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBldmVudCA9PiB0aGlzLmhhbmRsZVRvdWNoKGV2ZW50KSk7XG4gICAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCBldmVudCA9PiB0aGlzLmhhbmRsZVRvdWNoKGV2ZW50KSk7XG4gICAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hjYW5jZWwnLCBldmVudCA9PiB0aGlzLmhhbmRsZVRvdWNoKGV2ZW50KSk7XG4gICAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBldmVudCA9PiB0aGlzLmhhbmRsZVRvdWNoKGV2ZW50KSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFkZExheWVycyhsYXllcnM6IE1hcFRpbGVMYXllcltdKSB7XG4gICAgY29uc3QgZmxhdHRlbkxheWVyczogTWFwVGlsZUxheWVyW10gPSBmbGF0dGVuKGxheWVycyk7XG4gICAgY29uc3QgdGlsZUxheWVycyA9IHNvcnRCeVByaW9yaXR5KGZsYXR0ZW5MYXllcnMpLnJlZHVjZSgoYWNjLCBsYXllcikgPT4ge1xuICAgICAgY29uc3QgdGlsZXMgPSB0aGlzLmxlYWZsZXQudGlsZUxheWVyKGxheWVyLmxheWVyVXJsLCBsYXllci5vcHRpb25zKTtcbiAgICAgIHRpbGVzLmFkZFRvKHRoaXMubWFwKTtcbiAgICAgIGFjYyA9IHsgW2xheWVyLmxhYmVsXTogdGlsZXMsIC4uLmFjYyB9O1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG4gICAgaWYgKGZsYXR0ZW5MYXllcnMubGVuZ3RoID4gMSkge1xuICAgICAgdGhpcy5sZWFmbGV0LmNvbnRyb2wubGF5ZXJzKHRpbGVMYXllcnMsIG51bGwsIHsgcG9zaXRpb246ICdib3R0b21sZWZ0JyB9KS5hZGRUbyh0aGlzLm1hcCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNoYW5nZUNvbmZpZyhjaGFuZ2U6IFNpbXBsZUNoYW5nZSkge1xuICAgIGlmICh0aGlzLmhhc0NoYW5nZWQoY2hhbmdlLCAnem9vbUxldmVsJykpIHtcbiAgICAgIHRoaXMubWFwLnNldFpvb20odGhpcy5jb25maWcuem9vbUxldmVsKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNDaGFuZ2VkKGNoYW5nZSwgJ2NlbnRlcicpKSB7XG4gICAgICB0aGlzLm1hcC5zZXRWaWV3KGNoYW5nZS5jdXJyZW50VmFsdWUuY2VudGVyIHx8IHRoaXMuY29uZmlnLmNlbnRlcik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGFzQ2hhbmdlZChjaGFuZ2UsICdpY29uJykgfHwgdGhpcy5oYXNDaGFuZ2VkKGNoYW5nZSwgJ2NvbG9yJykpIHtcbiAgICAgIHRoaXMucmVmcmVzaE1hcmtlcnMoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNDaGFuZ2VkKGNoYW5nZSwgJ3JlYWx0aW1lJykgJiYgY2hhbmdlLmN1cnJlbnRWYWx1ZS5yZWFsdGltZSkge1xuICAgICAgdGhpcy5zdGFydFJlYWx0aW1lKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZS5jdXJyZW50VmFsdWUucmVhbHRpbWUgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnN0b3BSZWFsdGltZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc0NoYW5nZWQoY2hhbmdlLCAnZm9sbG93JykpIHtcbiAgICAgIHRoaXMubW92ZVRvUG9zaXRpb25PZk1vKHRoaXMuYXNzZXRzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNDaGFuZ2VkKGNoYW5nZSwgJ2Rpc2FibGVQYW4nKSB8fCB0aGlzLmhhc0NoYW5nZWQoY2hhbmdlLCAnZGlzYWJsZVpvb20nKSkge1xuICAgICAgdGhpcy50b2dnbGVDb250cm9scygpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYXNDaGFuZ2VkKGNoYW5nZTogU2ltcGxlQ2hhbmdlLCBwcm9wOiBrZXlvZiBNYXBDb25maWcpIHtcbiAgICByZXR1cm4gY2hhbmdlLmN1cnJlbnRWYWx1ZVtwcm9wXSAhPT0gY2hhbmdlLnByZXZpb3VzVmFsdWVbcHJvcF07XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9nZ2xlQ29udHJvbHMoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmRpc2FibGVab29tKSB7XG4gICAgICB0aGlzLm1hcC5yZW1vdmVDb250cm9sKHRoaXMubWFwLnpvb21Db250cm9sKTtcbiAgICAgIHRoaXMubWFwLnNjcm9sbFdoZWVsWm9vbS5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWFwLmFkZENvbnRyb2wodGhpcy5tYXAuem9vbUNvbnRyb2wpO1xuICAgICAgdGhpcy5tYXAuc2Nyb2xsV2hlZWxab29tLmVuYWJsZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb25maWcuZGlzYWJsZVBhbikge1xuICAgICAgdGhpcy5tYXAuZHJhZ2dpbmcuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1hcC5kcmFnZ2luZy5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVRvdWNoKGU6IEV2ZW50KSB7XG4gICAgLy8gRGlzcmVnYXJkIHRvdWNoIGV2ZW50cyBvbiB0aGUgbWluaW1hcCBpZiBwcmVzZW50XG4gICAgY29uc3QgaWdub3JlTGlzdCA9IFtcbiAgICAgICdsZWFmbGV0LWNvbnRyb2wtbWluaW1hcCcsXG4gICAgICAnbGVhZmxldC1pbnRlcmFjdGl2ZScsXG4gICAgICAnbGVhZmxldC1wb3B1cC1jb250ZW50JyxcbiAgICAgICdsZWFmbGV0LXBvcHVwLWNvbnRlbnQtd3JhcHBlcicsXG4gICAgICAnbGVhZmxldC1wb3B1cC1jbG9zZS1idXR0b24nLFxuICAgICAgJ2xlYWZsZXQtY29udHJvbC16b29tLWluJyxcbiAgICAgICdsZWFmbGV0LWNvbnRyb2wtem9vbS1vdXQnXG4gICAgXTtcblxuICAgIGxldCBpZ25vcmVFbGVtZW50ID0gZmFsc2U7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpZ25vcmVMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5sZWFmbGV0LkRvbVV0aWwuaGFzQ2xhc3MoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQsIGlnbm9yZUxpc3RbaV0pKSB7XG4gICAgICAgIGlnbm9yZUVsZW1lbnQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRoaXMubWFwLmdldENvbnRhaW5lcigpO1xuICAgIGlmIChpZ25vcmVFbGVtZW50KSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMubGVhZmxldC5Eb21VdGlsLmhhc0NsYXNzKGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50LCAnbGVhZmxldC1pbnRlcmFjdGl2ZScpICYmXG4gICAgICAgIGUudHlwZSA9PT0gJ3RvdWNobW92ZScgJiZcbiAgICAgICAgKGUgYXMgVG91Y2hFdmVudCkudG91Y2hlcy5sZW5ndGggPT09IDFcbiAgICAgICkge1xuICAgICAgICB0aGlzLmxlYWZsZXQuRG9tVXRpbC5hZGRDbGFzcyhjb250YWluZXIsICd0b3VjaC13YXJuaW5nJyk7XG4gICAgICAgIHRoaXMubWFwLmRyYWdnaW5nLmRpc2FibGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubGVhZmxldC5Eb21VdGlsLnJlbW92ZUNsYXNzKGNvbnRhaW5lciwgJ3RvdWNoLXdhcm5pbmcnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZS50eXBlICE9PSAndG91Y2htb3ZlJyAmJiBlLnR5cGUgIT09ICd0b3VjaHN0YXJ0Jykge1xuICAgICAgdGhpcy5sZWFmbGV0LkRvbVV0aWwucmVtb3ZlQ2xhc3MoY29udGFpbmVyLCAndG91Y2gtd2FybmluZycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoKGUgYXMgVG91Y2hFdmVudCkudG91Y2hlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHRoaXMubGVhZmxldC5Eb21VdGlsLmFkZENsYXNzKGNvbnRhaW5lciwgJ3RvdWNoLXdhcm5pbmcnKTtcbiAgICAgIHRoaXMubWFwLmRyYWdnaW5nLmRpc2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tYXAuZHJhZ2dpbmcuZW5hYmxlKCk7XG4gICAgICB0aGlzLmxlYWZsZXQuRG9tVXRpbC5yZW1vdmVDbGFzcyhjb250YWluZXIsICd0b3VjaC13YXJuaW5nJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB6b29tVG9Cb3VuZChhc3NldHM6IFBvc2l0aW9uTWFuYWdlZE9iamVjdFtdKSB7XG4gICAgY29uc3QgYm91bmRzOiBbbnVtYmVyLCBudW1iZXJdW10gPSBhc3NldHMubWFwKGFzc2V0ID0+IFtcbiAgICAgIGFzc2V0LmM4eV9Qb3NpdGlvbi5sYXQsXG4gICAgICBhc3NldC5jOHlfUG9zaXRpb24ubG5nXG4gICAgXSk7XG4gICAgaWYgKGFzc2V0cy5sZW5ndGggPiAxKSB7XG4gICAgICB0aGlzLm1hcC5mbHlUb0JvdW5kcyhib3VuZHMsIHsgYW5pbWF0ZTogZmFsc2UgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubWFwLmZseVRvKFxuICAgICAgW2Fzc2V0c1swXS5jOHlfUG9zaXRpb24ubGF0LCBhc3NldHNbMF0uYzh5X1Bvc2l0aW9uLmxuZ10sXG4gICAgICB0aGlzLm1hcC5vcHRpb25zLnpvb20sXG4gICAgICB7XG4gICAgICAgIGFuaW1hdGU6IGZhbHNlXG4gICAgICB9XG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImM4eS1tYXBcIj5cbiAgPGRpdiAjbWFwPjwvZGl2PlxuPC9kaXY+XG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=
|
|
@@ -1,22 +1,4 @@
|
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
|
2
|
-
export function getStatus(device) {
|
|
3
|
-
if (!device.c8y_ActiveAlarmsStatus) {
|
|
4
|
-
return 'text-primary';
|
|
5
|
-
}
|
|
6
|
-
if (device.c8y_ActiveAlarmsStatus.critical) {
|
|
7
|
-
return 'status critical';
|
|
8
|
-
}
|
|
9
|
-
if (device.c8y_ActiveAlarmsStatus.major) {
|
|
10
|
-
return 'status major';
|
|
11
|
-
}
|
|
12
|
-
if (device.c8y_ActiveAlarmsStatus.warning) {
|
|
13
|
-
return 'status warning';
|
|
14
|
-
}
|
|
15
|
-
if (device.c8y_ActiveAlarmsStatus.minor) {
|
|
16
|
-
return 'status minor';
|
|
17
|
-
}
|
|
18
|
-
return 'text-primary';
|
|
19
|
-
}
|
|
20
2
|
export function getC8yMarker(marker, asset) {
|
|
21
3
|
marker.asset = asset;
|
|
22
4
|
return marker;
|
|
@@ -49,4 +31,4 @@ export const defaultMapConfig = {
|
|
|
49
31
|
center: [51.23544, 6.79599],
|
|
50
32
|
zoomLevel: 2
|
|
51
33
|
};
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbWFwL21hcC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTS9DLE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBZ0IsRUFBRSxLQUE0QjtJQUN4RSxNQUFvQixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDcEMsT0FBTyxNQUFtQixDQUFDO0FBQzdCLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQTZCLGdCQUFnQixDQUFDLENBQUM7QUFJL0YsTUFBTSxDQUFOLElBQVksV0FJWDtBQUpELFdBQVksV0FBVztJQUNyQiw2Q0FBUSxDQUFBO0lBQ1IsNkNBQVEsQ0FBQTtJQUNSLG1EQUFXLENBQUE7QUFDYixDQUFDLEVBSlcsV0FBVyxLQUFYLFdBQVcsUUFJdEI7QUFFRCxNQUFNLENBQU4sSUFBWSxtQkFHWDtBQUhELFdBQVksbUJBQW1CO0lBQzdCLDRDQUFxQixDQUFBO0lBQ3JCLDRDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFIVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBRzlCO0FBbUNELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUNsRCxvQkFBb0IsQ0FDckIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBaUI7SUFDeEMsUUFBUSxFQUFFLG9EQUFvRDtJQUM5RCxLQUFLLEVBQUUsZUFBZTtJQUN0QixRQUFRLEVBQUUsSUFBSTtJQUNkLE9BQU8sRUFBRTtRQUNQLE9BQU8sRUFBRSxFQUFFO1FBQ1gsT0FBTyxFQUFFLENBQUM7UUFDVixXQUFXLEVBQ1Qsb0dBQW9HO1FBQ3RHLE1BQU0sRUFBRSxJQUFJO0tBQ2I7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQXFCO0lBQ2hELE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUM7SUFDM0IsU0FBUyxFQUFFLENBQUM7Q0FDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgTWFwVGlsZUxheWVyLCBNYXBEZWZhdWx0Q29uZmlnIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgdHlwZSAqIGFzIEwgZnJvbSAnbGVhZmxldCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDOHlNYXJrZXIobWFya2VyOiBMLk1hcmtlciwgYXNzZXQ6IFBvc2l0aW9uTWFuYWdlZE9iamVjdCkge1xuICAobWFya2VyIGFzIEM4eU1hcmtlcikuYXNzZXQgPSBhc3NldDtcbiAgcmV0dXJuIG1hcmtlciBhcyBDOHlNYXJrZXI7XG59XG5cbmV4cG9ydCBjb25zdCBNQVBfVElMRV9MQVlFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxPYnNlcnZhYmxlPE1hcFRpbGVMYXllcltdPj4oJ01BUF9USUxFX0xBWUVSJyk7XG5cbmV4cG9ydCB0eXBlIEM4eU1hcmtlciA9IEwuTWFya2VyICYgeyBhc3NldDogUG9zaXRpb25NYW5hZ2VkT2JqZWN0IH07XG5cbmV4cG9ydCBlbnVtIENsdXN0ZXJTaXplIHtcbiAgTk9ORSA9IDAsXG4gIEZPVVIgPSAxLFxuICBTSVhURUVOID0gMlxufVxuXG5leHBvcnQgZW51bSBNYXBUZW5hbnRPcHRpb25LZXlzIHtcbiAgQ09ORklHID0gJ21hcC1jb25maWcnLFxuICBMQVlFUlMgPSAnbWFwLWxheWVycydcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQb3NpdGlvbk1hbmFnZWRPYmplY3QgZXh0ZW5kcyBJTWFuYWdlZE9iamVjdCB7XG4gIGM4eV9Qb3NpdGlvbjoge1xuICAgIGxhdDogbnVtYmVyO1xuICAgIGxuZzogbnVtYmVyO1xuICAgIGFsdD86IG51bWJlcjtcbiAgfTtcblxuICBjOHlfQWN0aXZlQWxhcm1zU3RhdHVzPzoge1xuICAgIG1pbm9yOiBudW1iZXI7XG4gICAgbWFqb3I6IG51bWJlcjtcbiAgICB3YXJuaW5nOiBudW1iZXI7XG4gICAgY3JpdGljYWw6IG51bWJlcjtcbiAgfTtcblxuICBpY29uPzoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbHVzdGVyTWFwQ29uZmlnIGV4dGVuZHMgTWFwQ29uZmlnIHtcbiAgY2VudGVyOiBbbnVtYmVyLCBudW1iZXJdO1xuICByZWZyZXNoSW50ZXJ2YWw/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwQ29uZmlnIGV4dGVuZHMgTWFwRGVmYXVsdENvbmZpZyB7XG4gIGZvbGxvdz86IGJvb2xlYW47XG4gIHJlYWx0aW1lPzogYm9vbGVhbjtcbiAgaWNvbj86IHN0cmluZztcbiAgY29sb3I/OiBzdHJpbmc7XG4gIGRpc2FibGVab29tPzogYm9vbGVhbjtcbiAgZGlzYWJsZVBhbj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBNQVBfREVGQVVMVF9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48T2JzZXJ2YWJsZTxNYXBEZWZhdWx0Q29uZmlnPj4oXG4gICdNQVBfREVGQVVMVF9DT05GSUcnXG4pO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdExheWVyOiBNYXBUaWxlTGF5ZXIgPSB7XG4gIGxheWVyVXJsOiAnaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLFxuICBsYWJlbDogJ09wZW5TdHJlZXRNYXAnLFxuICBwcmlvcml0eTogMTAwMCxcbiAgb3B0aW9uczoge1xuICAgIG1heFpvb206IDE4LFxuICAgIG1pblpvb206IDIsXG4gICAgYXR0cmlidXRpb246XG4gICAgICAnJmNvcHk7PGEgaHJlZj1cImh0dHA6Ly93d3cub3BlbnN0cmVldG1hcC5vcmcvY29weXJpZ2h0XCIgcmVsPVwibm9yZWZlcnJlciBub2ZvbGxvd1wiPk9wZW5TdHJlZXRNYXA8L2E+JyxcbiAgICBub1dyYXA6IHRydWVcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRNYXBDb25maWc6IE1hcERlZmF1bHRDb25maWcgPSB7XG4gIGNlbnRlcjogWzUxLjIzNTQ0LCA2Ljc5NTk5XSwgLy8gRMO8c3NlbGRvcmZcbiAgem9vbUxldmVsOiAyXG59O1xuXG5leHBvcnQgdHlwZSBNYXBTdGF0dXNCdXR0b25zQ29uZmlnID0gUmVjb3JkPCdyZWFsdGltZScsIHsgc2hvdzogYm9vbGVhbjsgZGlzYWJsZWQ/OiBib29sZWFuIH0+O1xuIl19
|
|
@@ -8,6 +8,29 @@ import * as i0 from "@angular/core";
|
|
|
8
8
|
import * as i1 from "@c8y/client";
|
|
9
9
|
import * as i2 from "@c8y/ngx-components";
|
|
10
10
|
export class MapService {
|
|
11
|
+
/**
|
|
12
|
+
* Returns asset icon status for highest alarm severity found in device object.
|
|
13
|
+
* @param device Device that contains alarms information.
|
|
14
|
+
* @returns Status string according to alarm severity
|
|
15
|
+
*/
|
|
16
|
+
static getStatus(device) {
|
|
17
|
+
if (!device.c8y_ActiveAlarmsStatus) {
|
|
18
|
+
return 'text-muted';
|
|
19
|
+
}
|
|
20
|
+
if (device.c8y_ActiveAlarmsStatus.critical) {
|
|
21
|
+
return 'status critical';
|
|
22
|
+
}
|
|
23
|
+
if (device.c8y_ActiveAlarmsStatus.major) {
|
|
24
|
+
return 'status major';
|
|
25
|
+
}
|
|
26
|
+
if (device.c8y_ActiveAlarmsStatus.minor) {
|
|
27
|
+
return 'status minor';
|
|
28
|
+
}
|
|
29
|
+
if (device.c8y_ActiveAlarmsStatus.warning) {
|
|
30
|
+
return 'status warning';
|
|
31
|
+
}
|
|
32
|
+
return 'text-muted';
|
|
33
|
+
}
|
|
11
34
|
/**
|
|
12
35
|
* @ignore: Only DI.
|
|
13
36
|
*/
|
|
@@ -159,4 +182,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
159
182
|
providedIn: 'root'
|
|
160
183
|
}]
|
|
161
184
|
}], ctorParameters: function () { return [{ type: i1.InventoryService }, { type: i2.OptionsService }]; } });
|
|
162
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9tYXAvbWFwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWtCLGdCQUFnQixFQUF1QixNQUFNLGFBQWEsQ0FBQztBQUVwRixPQUFPLEVBQUUsSUFBSSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFDTCxXQUFXLEVBQ1gsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixtQkFBbUIsRUFFcEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGNBQWMsRUFBa0MsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFLckMsTUFBTSxPQUFPLFVBQVU7SUFXckI7O09BRUc7SUFDSCxZQUFvQixTQUEyQixFQUFVLE9BQXVCO1FBQTVELGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFiaEY7O1dBRUc7UUFDSCwyQkFBc0IsR0FBRyxHQUFHLENBQUM7UUFDN0I7OztXQUdHO1FBQ0gsNEJBQXVCLEdBQUcsR0FBRyxDQUFDO0lBS3FELENBQUM7SUFFcEY7O09BRUc7SUFDSCxLQUFLLENBQUMsVUFBVTtRQUNkLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxNQUFNLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUM3RCxPQUFPLGtCQUFrQixDQUFDO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxrQkFBa0IsQ0FBQyxFQUFrQjtRQUNuQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxZQUFZLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7O09BR0c7SUFD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SCxDQUFDO0lBQ0osQ0FBQzs7dUdBaE9VLFVBQVU7MkdBQVYsVUFBVSxjQUZULE1BQU07MkZBRVAsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSwgSVJlc3VsdExpc3QsIFBhZ2luZyB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB0eXBlICogYXMgTCBmcm9tICdsZWFmbGV0JztcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIENsdXN0ZXJTaXplLFxuICBkZWZhdWx0TGF5ZXIsXG4gIGRlZmF1bHRNYXBDb25maWcsXG4gIE1hcFRlbmFudE9wdGlvbktleXMsXG4gIFBvc2l0aW9uTWFuYWdlZE9iamVjdFxufSBmcm9tICcuL21hcC5tb2RlbCc7XG5pbXBvcnQgeyBPcHRpb25zU2VydmljZSwgTWFwVGlsZUxheWVyLCBNYXBEZWZhdWx0Q29uZmlnIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1hcFNlcnZpY2Uge1xuICAvKipcbiAgICogVGhlIGRldmljZXMgdGhhdCBhcmUgbWF4aW1hbCBkaXNwbGF5ZWQgaW4gb25lIGNsdXN0ZXIuXG4gICAqL1xuICBNQVhfREVWSUNFX1BFUl9DTFVTVEVSID0gMjAwO1xuICAvKipcbiAgICogVGhlIGNvdW50IHVudGlsIHRoZSBjbHVzdGVyIGlzIHNpemVkLiBUaGVyZSBhcmUgYSBtYXhpbXVtIG9mXG4gICAqIHRocmVlIGNsdXN0ZXJzOiAxLCA0IG9yIDE2LlxuICAgKi9cbiAgQ0xVU1RFUl9MRVZFTF9USFJFU0hPTEQgPSA1MDA7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmU6IE9ubHkgREkuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGludmVudG9yeTogSW52ZW50b3J5U2VydmljZSwgcHJpdmF0ZSBvcHRpb25zOiBPcHRpb25zU2VydmljZSkge31cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbGVhZmxldCBpbnN0YW5jZSB1c2VkIGJ5IHRoZSBjdW11bG9jaXR5IGNvcmUuXG4gICAqL1xuICBhc3luYyBnZXRMZWFmbGV0KCkge1xuICAgIGNvbnN0IGM4eUxlYWZsZXRJbnN0YW5jZSA9IChhd2FpdCBpbXBvcnQoJ2xlYWZsZXQnKSkuZGVmYXVsdDtcbiAgICByZXR1cm4gYzh5TGVhZmxldEluc3RhbmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIGlmIGEgZ2l2ZW4gbWFuYWdlZCBvYmplY3QgaXMgYSBkZXZpY2Ugd2l0aCBhIHBvc2l0aW9uIGZyYWdtZW50LlxuICAgKiBAcGFyYW0gbW8gVGhlIGdpdmVuIG1hbmFnZWQgb2JqZWN0LlxuICAgKi9cbiAgaXNQb3NpdGlvbmVkRGV2aWNlKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJldHVybiAhIShtbz8uYzh5X0lzRGV2aWNlICYmIHRoaXMuaGFzUG9zaXRpb24obW8pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyBpZiBhIGdpdmVuIG1hbmFnZWQgb2JqZWN0IGhhcyBhIHBvc2l0aW9uIGZyYWdtZW50LlxuICAgKiBAcGFyYW0gbW8gVGhlIGdpdmVuIG1hbmFnZWQgb2JqZWN0LlxuICAgKi9cbiAgaGFzUG9zaXRpb24obW86IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgcmV0dXJuIG1vPy5jOHlfUG9zaXRpb247XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbGF5ZXJzIGNvbmZpZ3VyZWQgaW4gdGhlIGN1cnJlbnQgcGxhdGZvcm0gdmlhIHRlbmFudCBvcHRpb25zLlxuICAgKiBAcmV0dXJucyBUaGUgbGF5ZXJzLiBJZiBub3Qgc2V0IGluIHRlbmFudCBvcHRpb25zIHRoZSBkZWZhdWx0IGxheWVycy5cbiAgICovXG4gIGdldERlZmF1bHRMYXllcnMoKTogT2JzZXJ2YWJsZTxNYXBUaWxlTGF5ZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLmdldE1hcE9wdGlvbjxNYXBUaWxlTGF5ZXJbXT4oXG4gICAgICBNYXBUZW5hbnRPcHRpb25LZXlzLkxBWUVSUyxcbiAgICAgIHRoaXMub3B0aW9ucy5tYXBMYXllcnMgfHwgW2RlZmF1bHRMYXllcl1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG1hcCBjb25maWd1cmF0aW9uIGNvbmZpZ3VyZWQgb24gdGhlIHRlbmFudC5cbiAgICogQHJldHVybnMgVGhlIGNvbmZpZ3VyYXRpb24uIElmIG5vdCBzZXQgaW4gdGVuYW50IG9wdGlvbnMgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIGdldERlZmF1bHRDb25maWcoKTogT2JzZXJ2YWJsZTxNYXBEZWZhdWx0Q29uZmlnPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TWFwT3B0aW9uPE1hcERlZmF1bHRDb25maWc+KFxuICAgICAgTWFwVGVuYW50T3B0aW9uS2V5cy5DT05GSUcsXG4gICAgICB0aGlzLm9wdGlvbnMubWFwQ29uZmlnIHx8IGRlZmF1bHRNYXBDb25maWdcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENvdW50cyBhbGwgbWFuYWdlZCBvYmplY3RzIGluIGEgZ2l2ZW4gYm91bmQgd2l0aCBhIGM4eV9Qb3NpdGlvbiBmcmFnbWVudC5cbiAgICogQHBhcmFtIGJvdW5kIFRoZSBsYXQgbG5nIGJvdW5kIHRvIHJlcXVlc3QgdGhlIG1hbmFnZWQgb2JqZWN0cyBmb3IuXG4gICAqIEBwYXJhbSBieUdyb3VwSWRNTyBUaGUgZ3JvdXAgbWFuYWdlZCBvYmplY3Qgb2Ygd2hpY2ggZGlyZWN0IGNoaWxkcmVuIHNob3VsZCBiZSBzZWFyY2hlZCBmb3IuXG4gICAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgYWxsIHBvc2l0aW9uIG1hbmFnZWQgb2JqZWN0cyBpbiB0aGUgZ2l2ZW4gYm91bmQgKGFuZCBncm91cCkuXG4gICAqL1xuICBhc3luYyBnZXRQb3NpdGlvbk1Pc0Zyb21Cb3VuZENvdW50KFxuICAgIGJvdW5kOiBMLkxhdExuZ0JvdW5kcyxcbiAgICBieUdyb3VwSWRNTz86IElNYW5hZ2VkT2JqZWN0XG4gICk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UG9zaXRpb25NT3NGcm9tQm91bmQoYm91bmQsIGJ5R3JvdXBJZE1PLCB0cnVlKSBhcyBQcm9taXNlPG51bWJlcj47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbGwgbWFuYWdlZCBvYmplY3RzIHdpdGggYSBjOHlfUG9zaXRpb24gZnJhZ21lbnQgaW4gYSBjZXJ0YWluIGJvdW5kYXJ5LlxuICAgKiBAcGFyYW0gYm91bmQgVGhlIGxhdCBsbmcgYm91bmQgdG8gcmVxdWVzdCB0aGUgbWFuYWdlZCBvYmplY3RzIGZvci5cbiAgICogQHJldHVybnMgQWxsIHBvc2l0aW9uIG1hbmFnZWQgb2JqZWN0cyBpbiB0aGUgZ2l2ZW4gYm91bmQuXG4gICAqL1xuICBhc3luYyBnZXRQb3NpdGlvbk1Pc0Zyb21Cb3VuZChib3VuZDogTC5MYXRMbmdCb3VuZHMpOiBQcm9taXNlPFBvc2l0aW9uTWFuYWdlZE9iamVjdFtdPjtcbiAgLyoqXG4gICAqIFJldHVybnMgYWxsIG1hbmFnZWQgb2JqZWN0cyB3aXRoIGEgYzh5X1Bvc2l0aW9uIGZyYWdtZW50IGluIGEgY2VydGFpbiBib3VuZGFyeSB0aGF0IGJlbG9uZ3MgdG8gYSBjZXJ0YWluIGdyb3VwLlxuICAgKiBAcGFyYW0gYm91bmQgVGhlIGxhdCBsbmcgYm91bmQgdG8gcmVxdWVzdCB0aGUgbWFuYWdlZCBvYmplY3RzIGZvci5cbiAgICogQHBhcmFtIGJ5R3JvdXBJZE1PIFRoZSBncm91cCBtYW5hZ2VkIG9iamVjdCBvZiB3aGljaCBkaXJlY3QgY2hpbGRyZW4gc2hvdWxkIGJlIHNlYXJjaGVkIGZvci5cbiAgICogQHJldHVybnMgQWxsIHBvc2l0aW9uIG1hbmFnZWQgb2JqZWN0cyBpbiB0aGUgZ2l2ZW4gYm91bmQgdGhhdCBhcmUgY2hpbGRyZW4gb2YgdGhlIGdpdmVuIGdyb3VwLlxuICAgKi9cbiAgYXN5bmMgZ2V0UG9zaXRpb25NT3NGcm9tQm91bmQoXG4gICAgYm91bmQ6IEwuTGF0TG5nQm91bmRzLFxuICAgIGJ5R3JvdXBJZE1POiBJTWFuYWdlZE9iamVjdFxuICApOiBQcm9taXNlPFBvc2l0aW9uTWFuYWdlZE9iamVjdFtdPjtcbiAgLyoqXG4gICAqIENvdW50cyB0aGUgbWFuYWdlZCBvYmplY3RzIGluIGEgY2VydGFpbiBib3VuZGFyeSBiZWxvbmdpbmcgdG8gYSBncm91cC5cbiAgICogQHBhcmFtIGJvdW5kIFRoZSBsYXQgbG5nIGJvdW5kIHRvIHJlcXVlc3QgdGhlIG1hbmFnZWQgb2JqZWN0cyBmb3IuXG4gICAqIEBwYXJhbSBieUdyb3VwSWRNTyBUaGUgZ3JvdXAgbWFuYWdlZCBvYmplY3Qgb2Ygd2hpY2ggZGlyZWN0IGNoaWxkcmVuIHNob3VsZCBiZSBzZWFyY2hlZCBmb3IuXG4gICAqIEByZXR1cm4gVGhlIGNvdW50IG9mIHRoZSBtYW5hZ2VkIG9iamVjdHMuXG4gICAqL1xuICBhc3luYyBnZXRQb3NpdGlvbk1Pc0Zyb21Cb3VuZChcbiAgICBib3VuZDogTC5MYXRMbmdCb3VuZHMsXG4gICAgYnlHcm91cElkTU86IElNYW5hZ2VkT2JqZWN0LFxuICAgIGNvdW50OiB0cnVlXG4gICk6IFByb21pc2U8bnVtYmVyPjtcbiAgYXN5bmMgZ2V0UG9zaXRpb25NT3NGcm9tQm91bmQoXG4gICAgYm91bmQ6IEwuTGF0TG5nQm91bmRzLFxuICAgIGJ5R3JvdXBJZE1PPzogSU1hbmFnZWRPYmplY3QsXG4gICAgY291bnQgPSBmYWxzZVxuICApOiBQcm9taXNlPFBvc2l0aW9uTWFuYWdlZE9iamVjdFtdIHwgbnVtYmVyPiB7XG4gICAgY29uc3QgeyBsYXQ6IGxhdE1pbiwgbG5nOiBsbmdNaW4gfSA9IGJvdW5kLmdldFNvdXRoV2VzdCgpO1xuICAgIGNvbnN0IHsgbGF0OiBsYXRNYXgsIGxuZzogbG5nTWF4IH0gPSBib3VuZC5nZXROb3J0aEVhc3QoKTtcbiAgICBjb25zdCBieUdyb3VwSWRGaWx0ZXIgPSBieUdyb3VwSWRNT1xuICAgICAgPyBgKGJ5Z3JvdXBpZCgke2J5R3JvdXBJZE1PLmlkfSkgb3IgaWQgZXEgJyR7YnlHcm91cElkTU8uaWR9JykgYW5kIGBcbiAgICAgIDogJyc7XG4gICAgY29uc3QgYm91bmRGaWx0ZXIgPSBgJGZpbHRlcj0ke2J5R3JvdXBJZEZpbHRlcn1oYXMoYzh5X1Bvc2l0aW9uKSBhbmQgYzh5X1Bvc2l0aW9uLmxuZyBndCAke2xuZ01pbn1kIGFuZCBjOHlfUG9zaXRpb24ubGF0IGd0ICR7bGF0TWlufWQgYW5kIGM4eV9Qb3NpdGlvbi5sbmcgbHQgJHtsbmdNYXh9ZCBhbmQgYzh5X1Bvc2l0aW9uLmxhdCBsdCAke2xhdE1heH1kYDtcbiAgICBjb25zdCB7IHBhZ2luZywgZGF0YSB9ID0gYXdhaXQgdGhpcy5pbnZlbnRvcnkubGlzdCh7XG4gICAgICBwYWdlU2l6ZTogY291bnQgPyAxIDogdGhpcy5NQVhfREVWSUNFX1BFUl9DTFVTVEVSLFxuICAgICAgd2l0aFRvdGFsUGFnZXM6IGNvdW50LFxuICAgICAgcXVlcnk6IGJvdW5kRmlsdGVyXG4gICAgfSk7XG4gICAgaWYgKGNvdW50KSB7XG4gICAgICByZXR1cm4gcGFnaW5nLnRvdGFsUGFnZXM7XG4gICAgfVxuICAgIHJldHVybiBkYXRhIGFzIFBvc2l0aW9uTWFuYWdlZE9iamVjdFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYWxsIGRldmljZXMgd2l0aCBjOHlfUG9zaXRpb24uXG4gICAqL1xuICBhc3luYyBnZXRQb3NpdGlvbkRldmljZXMoKTogUHJvbWlzZTxQb3NpdGlvbk1hbmFnZWRPYmplY3RbXT47XG4gIC8qKlxuICAgKiBSZXR1cm5zIGFsbCBkZXZpY2VzIHdpdGggYzh5X1Bvc2l0aW9uLlxuICAgKiBAcGFyYW0gcGFnZVNpemUgVGhlIHBhZ2Ugc2l6ZSB0byByZXR1cm4uXG4gICAqL1xuICBhc3luYyBnZXRQb3NpdGlvbkRldmljZXMocGFnZVNpemU6IG51bWJlcik6IFByb21pc2U8UG9zaXRpb25NYW5hZ2VkT2JqZWN0W10+O1xuICAvKipcbiAgICogUmV0dXJucyBhbGwgZGV2aWNlcyB3aXRoIGM4eV9Qb3NpdGlvbi5cbiAgICogQHBhcmFtIHBhZ2VTaXplIFRoZSBwYWdlIHNpemUgdG8gcmV0dXJuLlxuICAgKiBAcGFyYW0gY291bnQgQ291bnRpbmcgaXMgZGlzYWJsZWRcbiAgICovXG4gIGFzeW5jIGdldFBvc2l0aW9uRGV2aWNlcyhwYWdlU2l6ZTogbnVtYmVyLCBjb3VudDogZmFsc2UpOiBQcm9taXNlPFBvc2l0aW9uTWFuYWdlZE9iamVjdFtdPjtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBhbGwgZGV2aWNlcyB3aXRoIGM4eV9Qb3NpdGlvbi5cbiAgICogQHBhcmFtIHBhZ2VTaXplIFRoZSBwYWdlIHNpemUgdG8gcmV0dXJuLlxuICAgKiBAcGFyYW0gY291bnQgQ291bnRpbmcgaXMgZW5hYmxlZFxuICAgKi9cbiAgYXN5bmMgZ2V0UG9zaXRpb25EZXZpY2VzKHBhZ2VTaXplOiBudW1iZXIsIGNvdW50OiB0cnVlKTogUHJvbWlzZTxudW1iZXI+O1xuICAvKipcbiAgICogUmV0dXJucyBhbGwgZGV2aWNlcyB3aXRoIGM4eV9Qb3NpdGlvbi5cbiAgICogQHBhcmFtIHBhZ2VTaXplIFRoZSBwYWdlIHNpemUgdG8gcmV0dXJuLlxuICAgKiBAcGFyYW0gY291bnQgU3dpdGNoZXMgdG8gY291bnRpbmcgb25seS5cbiAgICogQHJldHVybnMgQWxsIGRldmljZXMgb3IgdGhlIGRldmljZSBjb3VudCB3aXRoIGEgYzh5X1Bvc2l0aW9uIGZyYWdtZW50LlxuICAgKi9cbiAgYXN5bmMgZ2V0UG9zaXRpb25EZXZpY2VzKFxuICAgIHBhZ2VTaXplID0gdGhpcy5NQVhfREVWSUNFX1BFUl9DTFVTVEVSLFxuICAgIGNvdW50PzogYm9vbGVhblxuICApOiBQcm9taXNlPG51bWJlciB8IFBvc2l0aW9uTWFuYWdlZE9iamVjdFtdPiB7XG4gICAgY29uc3QgeyBwYWdpbmcsIGRhdGEgfSA9IGF3YWl0IHRoaXMuaW52ZW50b3J5Lmxpc3Qoe1xuICAgICAgcGFnZVNpemU6IGNvdW50ID8gMSA6IHBhZ2VTaXplLFxuICAgICAgd2l0aFRvdGFsUGFnZXM6ICEhY291bnQsXG4gICAgICBxdWVyeTogJyRmaWx0ZXI9aGFzKGM4eV9Qb3NpdGlvbikgYW5kIGhhcyhjOHlfSXNEZXZpY2UpJ1xuICAgIH0pO1xuICAgIGlmIChjb3VudCkge1xuICAgICAgcmV0dXJuIHBhZ2luZy50b3RhbFBhZ2VzO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YSBhcyBQb3NpdGlvbk1hbmFnZWRPYmplY3RbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFsbCBtYW5hZ2VkIG9iamVjdCB3aXRoIGEgYzh5X1Bvc2l0aW9uIGZyYWdtZW50LlxuICAgKiBAcGFyYW0gYnlHcm91cElkTU8gVGhlIGdyb3VwIG1hbmFnZWQgb2JqZWN0IG9mIHdoaWNoIGRpcmVjdCBjaGlsZHJlbiBzaG91bGQgYmUgc2VhcmNoZWQgZm9yLlxuICAgKiBAcGFyYW0gcGFnZVNpemUgRGVmaW5lcyBob3cgbWFueSByZXN1bHRzIHNob3VsZCBiZSByZXR1cm5lZC5cbiAgICogQHJldHVybnMgVGhlIG1hbmFnZWQgb2JqZWN0cyB3aXRoIHBvc2l0aW9uLlxuICAgKi9cbiAgYXN5bmMgZ2V0QWxsUG9zaXRpb25NT3MoXG4gICAgYnlHcm91cElkTU8/OiBJTWFuYWdlZE9iamVjdCxcbiAgICBwYWdlU2l6ZSA9IDUwMFxuICApOiBQcm9taXNlPElSZXN1bHRMaXN0PFBvc2l0aW9uTWFuYWdlZE9iamVjdD4+IHtcbiAgICBjb25zdCBmaWx0ZXI6IHsgcGFnZVNpemU6IG51bWJlcjsgd2l0aFRvdGFsUGFnZXM6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmcgfSA9IHtcbiAgICAgIHBhZ2VTaXplLFxuICAgICAgd2l0aFRvdGFsUGFnZXM6IHRydWUsXG4gICAgICBxdWVyeTogJ2hhcyhjOHlfUG9zaXRpb24pJ1xuICAgIH07XG5cbiAgICBpZiAoYnlHcm91cElkTU8pIHtcbiAgICAgIGZpbHRlci5xdWVyeSA9IGAkZmlsdGVyPShieWdyb3VwaWQoJHtieUdyb3VwSWRNTy5pZH0pIG9yIGlkIGVxICcke2J5R3JvdXBJZE1PLmlkfScpIGFuZCBoYXMoYzh5X1Bvc2l0aW9uKWA7XG4gICAgfVxuXG4gICAgY29uc3QgeyBwYWdpbmcsIGRhdGEsIHJlcyB9ID0gYXdhaXQgdGhpcy5pbnZlbnRvcnkubGlzdChmaWx0ZXIpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJlcyxcbiAgICAgIHBhZ2luZzogcGFnaW5nIGFzIFBhZ2luZzxQb3NpdGlvbk1hbmFnZWRPYmplY3Q+LFxuICAgICAgZGF0YTogZGF0YSBhcyBQb3NpdGlvbk1hbmFnZWRPYmplY3RbXVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY2x1c3RlciBzaXplIGZvciBjbHVzdGVyZWQgbWFwcy4gQ291bnRpbmcgdGhlIHBvc2l0aW9uIE1PcyBpbiBhIGJvdW5kaW5nXG4gICAqIGFuZCBpZiBpdCByZWFjaCBhIHRocmVzaG9sZCwgcmV0dXJuaW5nIGEgW1tDbHVzdGVyU2l6ZV1dLlxuICAgKiBAcGFyYW0gYm91bmQgVGhlIGJvdW5kaW5nIHRvIGNoZWNrIGZvciBjbHVzdGVyIHNpemUuXG4gICAqIEByZXR1cm5zIFRoZSBjbHVzdGVyIHNpemUsIGNhbiBiZSBOT05FLCBGT1VSIG9yIFNJWFRFRU4uXG4gICAqL1xuICBhc3luYyBnZXRDbHVzdGVyU2l6ZShib3VuZDogTC5MYXRMbmdCb3VuZHMpIHtcbiAgICBjb25zdCBjb3VudCA9IGF3YWl0IHRoaXMuZ2V0UG9zaXRpb25NT3NGcm9tQm91bmRDb3VudChib3VuZCk7XG4gICAgbGV0IGNsdXN0ZXJTaXplID0gQ2x1c3RlclNpemUuTk9ORTtcbiAgICBpZiAoY291bnQgPiB0aGlzLkNMVVNURVJfTEVWRUxfVEhSRVNIT0xEKSB7XG4gICAgICBjbHVzdGVyU2l6ZSA9IENsdXN0ZXJTaXplLlNJWFRFRU47XG4gICAgfSBlbHNlIGlmIChjb3VudCA+IHRoaXMuTUFYX0RFVklDRV9QRVJfQ0xVU1RFUikge1xuICAgICAgY2x1c3RlclNpemUgPSBDbHVzdGVyU2l6ZS5GT1VSO1xuICAgIH1cbiAgICByZXR1cm4gY2x1c3RlclNpemU7XG4gIH1cblxuICBwcml2YXRlIGdldE1hcE9wdGlvbjxUPihrZXk6IE1hcFRlbmFudE9wdGlvbktleXMsIGRlZmF1bHRWYWx1ZTogVCkge1xuICAgIHJldHVybiBmcm9tKHRoaXMub3B0aW9ucy5nZXRUZW5hbnRPcHRpb248VCB8IHN0cmluZz4oJ2NvbmZpZ3VyYXRpb24nLCBrZXksIGRlZmF1bHRWYWx1ZSkpLnBpcGUoXG4gICAgICBtYXAoY29uZmlnID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIGBUaGUgdGVuYW50IG9wdGlvbiBmb3IgbWFwcyAnY29uZmlndXJhdGlvbi4ke2tleX0nIGlzIG5vdCBhIHZhbGlkIEpTT04gc3RydWN0dXJlLmBcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9tYXAvbWFwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWtCLGdCQUFnQixFQUF1QixNQUFNLGFBQWEsQ0FBQztBQUVwRixPQUFPLEVBQUUsSUFBSSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3hDLE9BQU8sRUFDTCxXQUFXLEVBQ1gsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixtQkFBbUIsRUFFcEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLGNBQWMsRUFBa0MsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFLckMsTUFBTSxPQUFPLFVBQVU7SUFDckI7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBNkI7UUFDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRTtZQUNsQyxPQUFPLFlBQVksQ0FBQztTQUNyQjtRQUNELElBQUksTUFBTSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRTtZQUMxQyxPQUFPLGlCQUFpQixDQUFDO1NBQzFCO1FBQ0QsSUFBSSxNQUFNLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFO1lBQ3ZDLE9BQU8sY0FBYyxDQUFDO1NBQ3ZCO1FBQ0QsSUFBSSxNQUFNLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFO1lBQ3ZDLE9BQU8sY0FBYyxDQUFDO1NBQ3ZCO1FBQ0QsSUFBSSxNQUFNLENBQUMsc0JBQXNCLENBQUMsT0FBTyxFQUFFO1lBQ3pDLE9BQU8sZ0JBQWdCLENBQUM7U0FDekI7UUFDRCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBV0Q7O09BRUc7SUFDSCxZQUNVLFNBQTJCLEVBQzNCLE9BQXVCO1FBRHZCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBZmpDOztXQUVHO1FBQ0gsMkJBQXNCLEdBQUcsR0FBRyxDQUFDO1FBQzdCOzs7V0FHRztRQUNILDRCQUF1QixHQUFHLEdBQUcsQ0FBQztJQVEzQixDQUFDO0lBRUo7O09BRUc7SUFDSCxLQUFLLENBQUMsVUFBVTtRQUNkLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxNQUFNLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUM3RCxPQUFPLGtCQUFrQixDQUFDO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxrQkFBa0IsQ0FBQyxFQUFrQjtRQUNuQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxZQUFZLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXLENBQUMsRUFBa0I7UUFDNUIsT0FBTyxFQUFFLEVBQUUsWUFBWSxDQUFDO0lBQzFCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQ3RCLG1CQUFtQixDQUFDLE1BQU0sRUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FDekMsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQ3RCLG1CQUFtQixDQUFDLE1BQU0sRUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksZ0JBQWdCLENBQzNDLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsNEJBQTRCLENBQ2hDLEtBQXFCLEVBQ3JCLFdBQTRCO1FBRTVCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFvQixDQUFDO0lBQ25GLENBQUM7SUE2QkQsS0FBSyxDQUFDLHVCQUF1QixDQUMzQixLQUFxQixFQUNyQixXQUE0QixFQUM1QixLQUFLLEdBQUcsS0FBSztRQUViLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDMUQsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxRCxNQUFNLGVBQWUsR0FBRyxXQUFXO1lBQ2pDLENBQUMsQ0FBQyxjQUFjLFdBQVcsQ0FBQyxFQUFFLGVBQWUsV0FBVyxDQUFDLEVBQUUsU0FBUztZQUNwRSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1AsTUFBTSxXQUFXLEdBQUcsV0FBVyxlQUFlLDZDQUE2QyxNQUFNLDZCQUE2QixNQUFNLDZCQUE2QixNQUFNLDZCQUE2QixNQUFNLEdBQUcsQ0FBQztRQUM5TSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDakQsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCO1lBQ2pELGNBQWMsRUFBRSxLQUFLO1lBQ3JCLEtBQUssRUFBRSxXQUFXO1NBQ25CLENBQUMsQ0FBQztRQUNILElBQUksS0FBSyxFQUFFO1lBQ1QsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDO1NBQzFCO1FBQ0QsT0FBTyxJQUErQixDQUFDO0lBQ3pDLENBQUM7SUF1QkQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsa0JBQWtCLENBQ3RCLFFBQVEsR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQ3RDLEtBQWU7UUFFZixNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDakQsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRO1lBQzlCLGNBQWMsRUFBRSxDQUFDLENBQUMsS0FBSztZQUN2QixLQUFLLEVBQUUsaURBQWlEO1NBQ3pELENBQUMsQ0FBQztRQUNILElBQUksS0FBSyxFQUFFO1lBQ1QsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDO1NBQzFCO1FBQ0QsT0FBTyxJQUErQixDQUFDO0lBQ3pDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxpQkFBaUIsQ0FDckIsV0FBNEIsRUFDNUIsUUFBUSxHQUFHLEdBQUc7UUFFZCxNQUFNLE1BQU0sR0FBaUU7WUFDM0UsUUFBUTtZQUNSLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLEtBQUssRUFBRSxtQkFBbUI7U0FDM0IsQ0FBQztRQUVGLElBQUksV0FBVyxFQUFFO1lBQ2YsTUFBTSxDQUFDLEtBQUssR0FBRyxzQkFBc0IsV0FBVyxDQUFDLEVBQUUsZUFBZSxXQUFXLENBQUMsRUFBRSwwQkFBMEIsQ0FBQztTQUM1RztRQUVELE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFaEUsT0FBTztZQUNMLEdBQUc7WUFDSCxNQUFNLEVBQUUsTUFBdUM7WUFDL0MsSUFBSSxFQUFFLElBQStCO1NBQ3RDLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQXFCO1FBQ3hDLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdELElBQUksV0FBVyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDbkMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFO1lBQ3hDLFdBQVcsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDO1NBQ25DO2FBQU0sSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQzlDLFdBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1NBQ2hDO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVPLFlBQVksQ0FBSSxHQUF3QixFQUFFLFlBQWU7UUFDL0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQWEsZUFBZSxFQUFFLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDNUYsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ1gsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUU7Z0JBQzlCLE9BQU8sQ0FBQyxLQUFLLENBQ1gsNkNBQTZDLEdBQUcsa0NBQWtDLENBQ25GLENBQUM7Z0JBQ0YsT0FBTyxZQUFZLENBQUM7YUFDckI7WUFDRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7dUdBMVBVLFVBQVU7MkdBQVYsVUFBVSxjQUZULE1BQU07MkZBRVAsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSwgSVJlc3VsdExpc3QsIFBhZ2luZyB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB0eXBlICogYXMgTCBmcm9tICdsZWFmbGV0JztcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIENsdXN0ZXJTaXplLFxuICBkZWZhdWx0TGF5ZXIsXG4gIGRlZmF1bHRNYXBDb25maWcsXG4gIE1hcFRlbmFudE9wdGlvbktleXMsXG4gIFBvc2l0aW9uTWFuYWdlZE9iamVjdFxufSBmcm9tICcuL21hcC5tb2RlbCc7XG5pbXBvcnQgeyBPcHRpb25zU2VydmljZSwgTWFwVGlsZUxheWVyLCBNYXBEZWZhdWx0Q29uZmlnIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1hcFNlcnZpY2Uge1xuICAvKipcbiAgICogUmV0dXJucyBhc3NldCBpY29uIHN0YXR1cyBmb3IgaGlnaGVzdCBhbGFybSBzZXZlcml0eSBmb3VuZCBpbiBkZXZpY2Ugb2JqZWN0LlxuICAgKiBAcGFyYW0gZGV2aWNlIERldmljZSB0aGF0IGNvbnRhaW5zIGFsYXJtcyBpbmZvcm1hdGlvbi5cbiAgICogQHJldHVybnMgU3RhdHVzIHN0cmluZyBhY2NvcmRpbmcgdG8gYWxhcm0gc2V2ZXJpdHlcbiAgICovXG4gIHN0YXRpYyBnZXRTdGF0dXMoZGV2aWNlOiBQb3NpdGlvbk1hbmFnZWRPYmplY3QpIHtcbiAgICBpZiAoIWRldmljZS5jOHlfQWN0aXZlQWxhcm1zU3RhdHVzKSB7XG4gICAgICByZXR1cm4gJ3RleHQtbXV0ZWQnO1xuICAgIH1cbiAgICBpZiAoZGV2aWNlLmM4eV9BY3RpdmVBbGFybXNTdGF0dXMuY3JpdGljYWwpIHtcbiAgICAgIHJldHVybiAnc3RhdHVzIGNyaXRpY2FsJztcbiAgICB9XG4gICAgaWYgKGRldmljZS5jOHlfQWN0aXZlQWxhcm1zU3RhdHVzLm1ham9yKSB7XG4gICAgICByZXR1cm4gJ3N0YXR1cyBtYWpvcic7XG4gICAgfVxuICAgIGlmIChkZXZpY2UuYzh5X0FjdGl2ZUFsYXJtc1N0YXR1cy5taW5vcikge1xuICAgICAgcmV0dXJuICdzdGF0dXMgbWlub3InO1xuICAgIH1cbiAgICBpZiAoZGV2aWNlLmM4eV9BY3RpdmVBbGFybXNTdGF0dXMud2FybmluZykge1xuICAgICAgcmV0dXJuICdzdGF0dXMgd2FybmluZyc7XG4gICAgfVxuICAgIHJldHVybiAndGV4dC1tdXRlZCc7XG4gIH1cbiAgLyoqXG4gICAqIFRoZSBkZXZpY2VzIHRoYXQgYXJlIG1heGltYWwgZGlzcGxheWVkIGluIG9uZSBjbHVzdGVyLlxuICAgKi9cbiAgTUFYX0RFVklDRV9QRVJfQ0xVU1RFUiA9IDIwMDtcbiAgLyoqXG4gICAqIFRoZSBjb3VudCB1bnRpbCB0aGUgY2x1c3RlciBpcyBzaXplZC4gVGhlcmUgYXJlIGEgbWF4aW11bSBvZlxuICAgKiB0aHJlZSBjbHVzdGVyczogMSwgNCBvciAxNi5cbiAgICovXG4gIENMVVNURVJfTEVWRUxfVEhSRVNIT0xEID0gNTAwO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlOiBPbmx5IERJLlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnk6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcHRpb25zOiBPcHRpb25zU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGxlYWZsZXQgaW5zdGFuY2UgdXNlZCBieSB0aGUgY3VtdWxvY2l0eSBjb3JlLlxuICAgKi9cbiAgYXN5bmMgZ2V0TGVhZmxldCgpIHtcbiAgICBjb25zdCBjOHlMZWFmbGV0SW5zdGFuY2UgPSAoYXdhaXQgaW1wb3J0KCdsZWFmbGV0JykpLmRlZmF1bHQ7XG4gICAgcmV0dXJuIGM4eUxlYWZsZXRJbnN0YW5jZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyBpZiBhIGdpdmVuIG1hbmFnZWQgb2JqZWN0IGlzIGEgZGV2aWNlIHdpdGggYSBwb3NpdGlvbiBmcmFnbWVudC5cbiAgICogQHBhcmFtIG1vIFRoZSBnaXZlbiBtYW5hZ2VkIG9iamVjdC5cbiAgICovXG4gIGlzUG9zaXRpb25lZERldmljZShtbzogSU1hbmFnZWRPYmplY3QpIHtcbiAgICByZXR1cm4gISEobW8/LmM4eV9Jc0RldmljZSAmJiB0aGlzLmhhc1Bvc2l0aW9uKG1vKSk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpZXMgaWYgYSBnaXZlbiBtYW5hZ2VkIG9iamVjdCBoYXMgYSBwb3NpdGlvbiBmcmFnbWVudC5cbiAgICogQHBhcmFtIG1vIFRoZSBnaXZlbiBtYW5hZ2VkIG9iamVjdC5cbiAgICovXG4gIGhhc1Bvc2l0aW9uKG1vOiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHJldHVybiBtbz8uYzh5X1Bvc2l0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGxheWVycyBjb25maWd1cmVkIGluIHRoZSBjdXJyZW50IHBsYXRmb3JtIHZpYSB0ZW5hbnQgb3B0aW9ucy5cbiAgICogQHJldHVybnMgVGhlIGxheWVycy4gSWYgbm90IHNldCBpbiB0ZW5hbnQgb3B0aW9ucyB0aGUgZGVmYXVsdCBsYXllcnMuXG4gICAqL1xuICBnZXREZWZhdWx0TGF5ZXJzKCk6IE9ic2VydmFibGU8TWFwVGlsZUxheWVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRNYXBPcHRpb248TWFwVGlsZUxheWVyW10+KFxuICAgICAgTWFwVGVuYW50T3B0aW9uS2V5cy5MQVlFUlMsXG4gICAgICB0aGlzLm9wdGlvbnMubWFwTGF5ZXJzIHx8IFtkZWZhdWx0TGF5ZXJdXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBtYXAgY29uZmlndXJhdGlvbiBjb25maWd1cmVkIG9uIHRoZSB0ZW5hbnQuXG4gICAqIEByZXR1cm5zIFRoZSBjb25maWd1cmF0aW9uLiBJZiBub3Qgc2V0IGluIHRlbmFudCBvcHRpb25zIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBnZXREZWZhdWx0Q29uZmlnKCk6IE9ic2VydmFibGU8TWFwRGVmYXVsdENvbmZpZz4ge1xuICAgIHJldHVybiB0aGlzLmdldE1hcE9wdGlvbjxNYXBEZWZhdWx0Q29uZmlnPihcbiAgICAgIE1hcFRlbmFudE9wdGlvbktleXMuQ09ORklHLFxuICAgICAgdGhpcy5vcHRpb25zLm1hcENvbmZpZyB8fCBkZWZhdWx0TWFwQ29uZmlnXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb3VudHMgYWxsIG1hbmFnZWQgb2JqZWN0cyBpbiBhIGdpdmVuIGJvdW5kIHdpdGggYSBjOHlfUG9zaXRpb24gZnJhZ21lbnQuXG4gICAqIEBwYXJhbSBib3VuZCBUaGUgbGF0IGxuZyBib3VuZCB0byByZXF1ZXN0IHRoZSBtYW5hZ2VkIG9iamVjdHMgZm9yLlxuICAgKiBAcGFyYW0gYnlHcm91cElkTU8gVGhlIGdyb3VwIG1hbmFnZWQgb2JqZWN0IG9mIHdoaWNoIGRpcmVjdCBjaGlsZHJlbiBzaG91bGQgYmUgc2VhcmNoZWQgZm9yLlxuICAgKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGFsbCBwb3NpdGlvbiBtYW5hZ2VkIG9iamVjdHMgaW4gdGhlIGdpdmVuIGJvdW5kIChhbmQgZ3JvdXApLlxuICAgKi9cbiAgYXN5bmMgZ2V0UG9zaXRpb25NT3NGcm9tQm91bmRDb3VudChcbiAgICBib3VuZDogTC5MYXRMbmdCb3VuZHMsXG4gICAgYnlHcm91cElkTU8/OiBJTWFuYWdlZE9iamVjdFxuICApOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLmdldFBvc2l0aW9uTU9zRnJvbUJvdW5kKGJvdW5kLCBieUdyb3VwSWRNTywgdHJ1ZSkgYXMgUHJvbWlzZTxudW1iZXI+O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYWxsIG1hbmFnZWQgb2JqZWN0cyB3aXRoIGEgYzh5X1Bvc2l0aW9uIGZyYWdtZW50IGluIGEgY2VydGFpbiBib3VuZGFyeS5cbiAgICogQHBhcmFtIGJvdW5kIFRoZSBsYXQgbG5nIGJvdW5kIHRvIHJlcXVlc3QgdGhlIG1hbmFnZWQgb2JqZWN0cyBmb3IuXG4gICAqIEByZXR1cm5zIEFsbCBwb3NpdGlvbiBtYW5hZ2VkIG9iamVjdHMgaW4gdGhlIGdpdmVuIGJvdW5kLlxuICAgKi9cbiAgYXN5bmMgZ2V0UG9zaXRpb25NT3NGcm9tQm91bmQoYm91bmQ6IEwuTGF0TG5nQm91bmRzKTogUHJvbWlzZTxQb3NpdGlvbk1hbmFnZWRPYmplY3RbXT47XG4gIC8qKlxuICAgKiBSZXR1cm5zIGFsbCBtYW5hZ2VkIG9iamVjdHMgd2l0aCBhIGM4eV9Qb3NpdGlvbiBmcmFnbWVudCBpbiBhIGNlcnRhaW4gYm91bmRhcnkgdGhhdCBiZWxvbmdzIHRvIGEgY2VydGFpbiBncm91cC5cbiAgICogQHBhcmFtIGJvdW5kIFRoZSBsYXQgbG5nIGJvdW5kIHRvIHJlcXVlc3QgdGhlIG1hbmFnZWQgb2JqZWN0cyBmb3IuXG4gICAqIEBwYXJhbSBieUdyb3VwSWRNTyBUaGUgZ3JvdXAgbWFuYWdlZCBvYmplY3Qgb2Ygd2hpY2ggZGlyZWN0IGNoaWxkcmVuIHNob3VsZCBiZSBzZWFyY2hlZCBmb3IuXG4gICAqIEByZXR1cm5zIEFsbCBwb3NpdGlvbiBtYW5hZ2VkIG9iamVjdHMgaW4gdGhlIGdpdmVuIGJvdW5kIHRoYXQgYXJlIGNoaWxkcmVuIG9mIHRoZSBnaXZlbiBncm91cC5cbiAgICovXG4gIGFzeW5jIGdldFBvc2l0aW9uTU9zRnJvbUJvdW5kKFxuICAgIGJvdW5kOiBMLkxhdExuZ0JvdW5kcyxcbiAgICBieUdyb3VwSWRNTzogSU1hbmFnZWRPYmplY3RcbiAgKTogUHJvbWlzZTxQb3NpdGlvbk1hbmFnZWRPYmplY3RbXT47XG4gIC8qKlxuICAgKiBDb3VudHMgdGhlIG1hbmFnZWQgb2JqZWN0cyBpbiBhIGNlcnRhaW4gYm91bmRhcnkgYmVsb25naW5nIHRvIGEgZ3JvdXAuXG4gICAqIEBwYXJhbSBib3VuZCBUaGUgbGF0IGxuZyBib3VuZCB0byByZXF1ZXN0IHRoZSBtYW5hZ2VkIG9iamVjdHMgZm9yLlxuICAgKiBAcGFyYW0gYnlHcm91cElkTU8gVGhlIGdyb3VwIG1hbmFnZWQgb2JqZWN0IG9mIHdoaWNoIGRpcmVjdCBjaGlsZHJlbiBzaG91bGQgYmUgc2VhcmNoZWQgZm9yLlxuICAgKiBAcmV0dXJuIFRoZSBjb3VudCBvZiB0aGUgbWFuYWdlZCBvYmplY3RzLlxuICAgKi9cbiAgYXN5bmMgZ2V0UG9zaXRpb25NT3NGcm9tQm91bmQoXG4gICAgYm91bmQ6IEwuTGF0TG5nQm91bmRzLFxuICAgIGJ5R3JvdXBJZE1POiBJTWFuYWdlZE9iamVjdCxcbiAgICBjb3VudDogdHJ1ZVxuICApOiBQcm9taXNlPG51bWJlcj47XG4gIGFzeW5jIGdldFBvc2l0aW9uTU9zRnJvbUJvdW5kKFxuICAgIGJvdW5kOiBMLkxhdExuZ0JvdW5kcyxcbiAgICBieUdyb3VwSWRNTz86IElNYW5hZ2VkT2JqZWN0LFxuICAgIGNvdW50ID0gZmFsc2VcbiAgKTogUHJvbWlzZTxQb3NpdGlvbk1hbmFnZWRPYmplY3RbXSB8IG51bWJlcj4ge1xuICAgIGNvbnN0IHsgbGF0OiBsYXRNaW4sIGxuZzogbG5nTWluIH0gPSBib3VuZC5nZXRTb3V0aFdlc3QoKTtcbiAgICBjb25zdCB7IGxhdDogbGF0TWF4LCBsbmc6IGxuZ01heCB9ID0gYm91bmQuZ2V0Tm9ydGhFYXN0KCk7XG4gICAgY29uc3QgYnlHcm91cElkRmlsdGVyID0gYnlHcm91cElkTU9cbiAgICAgID8gYChieWdyb3VwaWQoJHtieUdyb3VwSWRNTy5pZH0pIG9yIGlkIGVxICcke2J5R3JvdXBJZE1PLmlkfScpIGFuZCBgXG4gICAgICA6ICcnO1xuICAgIGNvbnN0IGJvdW5kRmlsdGVyID0gYCRmaWx0ZXI9JHtieUdyb3VwSWRGaWx0ZXJ9aGFzKGM4eV9Qb3NpdGlvbikgYW5kIGM4eV9Qb3NpdGlvbi5sbmcgZ3QgJHtsbmdNaW59ZCBhbmQgYzh5X1Bvc2l0aW9uLmxhdCBndCAke2xhdE1pbn1kIGFuZCBjOHlfUG9zaXRpb24ubG5nIGx0ICR7bG5nTWF4fWQgYW5kIGM4eV9Qb3NpdGlvbi5sYXQgbHQgJHtsYXRNYXh9ZGA7XG4gICAgY29uc3QgeyBwYWdpbmcsIGRhdGEgfSA9IGF3YWl0IHRoaXMuaW52ZW50b3J5Lmxpc3Qoe1xuICAgICAgcGFnZVNpemU6IGNvdW50ID8gMSA6IHRoaXMuTUFYX0RFVklDRV9QRVJfQ0xVU1RFUixcbiAgICAgIHdpdGhUb3RhbFBhZ2VzOiBjb3VudCxcbiAgICAgIHF1ZXJ5OiBib3VuZEZpbHRlclxuICAgIH0pO1xuICAgIGlmIChjb3VudCkge1xuICAgICAgcmV0dXJuIHBhZ2luZy50b3RhbFBhZ2VzO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YSBhcyBQb3NpdGlvbk1hbmFnZWRPYmplY3RbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFsbCBkZXZpY2VzIHdpdGggYzh5X1Bvc2l0aW9uLlxuICAgKi9cbiAgYXN5bmMgZ2V0UG9zaXRpb25EZXZpY2VzKCk6IFByb21pc2U8UG9zaXRpb25NYW5hZ2VkT2JqZWN0W10+O1xuICAvKipcbiAgICogUmV0dXJucyBhbGwgZGV2aWNlcyB3aXRoIGM4eV9Qb3NpdGlvbi5cbiAgICogQHBhcmFtIHBhZ2VTaXplIFRoZSBwYWdlIHNpemUgdG8gcmV0dXJuLlxuICAgKi9cbiAgYXN5bmMgZ2V0UG9zaXRpb25EZXZpY2VzKHBhZ2VTaXplOiBudW1iZXIpOiBQcm9taXNlPFBvc2l0aW9uTWFuYWdlZE9iamVjdFtdPjtcbiAgLyoqXG4gICAqIFJldHVybnMgYWxsIGRldmljZXMgd2l0aCBjOHlfUG9zaXRpb24uXG4gICAqIEBwYXJhbSBwYWdlU2l6ZSBUaGUgcGFnZSBzaXplIHRvIHJldHVybi5cbiAgICogQHBhcmFtIGNvdW50IENvdW50aW5nIGlzIGRpc2FibGVkXG4gICAqL1xuICBhc3luYyBnZXRQb3NpdGlvbkRldmljZXMocGFnZVNpemU6IG51bWJlciwgY291bnQ6IGZhbHNlKTogUHJvbWlzZTxQb3NpdGlvbk1hbmFnZWRPYmplY3RbXT47XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYWxsIGRldmljZXMgd2l0aCBjOHlfUG9zaXRpb24uXG4gICAqIEBwYXJhbSBwYWdlU2l6ZSBUaGUgcGFnZSBzaXplIHRvIHJldHVybi5cbiAgICogQHBhcmFtIGNvdW50IENvdW50aW5nIGlzIGVuYWJsZWRcbiAgICovXG4gIGFzeW5jIGdldFBvc2l0aW9uRGV2aWNlcyhwYWdlU2l6ZTogbnVtYmVyLCBjb3VudDogdHJ1ZSk6IFByb21pc2U8bnVtYmVyPjtcbiAgLyoqXG4gICAqIFJldHVybnMgYWxsIGRldmljZXMgd2l0aCBjOHlfUG9zaXRpb24uXG4gICAqIEBwYXJhbSBwYWdlU2l6ZSBUaGUgcGFnZSBzaXplIHRvIHJldHVybi5cbiAgICogQHBhcmFtIGNvdW50IFN3aXRjaGVzIHRvIGNvdW50aW5nIG9ubHkuXG4gICAqIEByZXR1cm5zIEFsbCBkZXZpY2VzIG9yIHRoZSBkZXZpY2UgY291bnQgd2l0aCBhIGM4eV9Qb3NpdGlvbiBmcmFnbWVudC5cbiAgICovXG4gIGFzeW5jIGdldFBvc2l0aW9uRGV2aWNlcyhcbiAgICBwYWdlU2l6ZSA9IHRoaXMuTUFYX0RFVklDRV9QRVJfQ0xVU1RFUixcbiAgICBjb3VudD86IGJvb2xlYW5cbiAgKTogUHJvbWlzZTxudW1iZXIgfCBQb3NpdGlvbk1hbmFnZWRPYmplY3RbXT4ge1xuICAgIGNvbnN0IHsgcGFnaW5nLCBkYXRhIH0gPSBhd2FpdCB0aGlzLmludmVudG9yeS5saXN0KHtcbiAgICAgIHBhZ2VTaXplOiBjb3VudCA/IDEgOiBwYWdlU2l6ZSxcbiAgICAgIHdpdGhUb3RhbFBhZ2VzOiAhIWNvdW50LFxuICAgICAgcXVlcnk6ICckZmlsdGVyPWhhcyhjOHlfUG9zaXRpb24pIGFuZCBoYXMoYzh5X0lzRGV2aWNlKSdcbiAgICB9KTtcbiAgICBpZiAoY291bnQpIHtcbiAgICAgIHJldHVybiBwYWdpbmcudG90YWxQYWdlcztcbiAgICB9XG4gICAgcmV0dXJuIGRhdGEgYXMgUG9zaXRpb25NYW5hZ2VkT2JqZWN0W107XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbGwgbWFuYWdlZCBvYmplY3Qgd2l0aCBhIGM4eV9Qb3NpdGlvbiBmcmFnbWVudC5cbiAgICogQHBhcmFtIGJ5R3JvdXBJZE1PIFRoZSBncm91cCBtYW5hZ2VkIG9iamVjdCBvZiB3aGljaCBkaXJlY3QgY2hpbGRyZW4gc2hvdWxkIGJlIHNlYXJjaGVkIGZvci5cbiAgICogQHBhcmFtIHBhZ2VTaXplIERlZmluZXMgaG93IG1hbnkgcmVzdWx0cyBzaG91bGQgYmUgcmV0dXJuZWQuXG4gICAqIEByZXR1cm5zIFRoZSBtYW5hZ2VkIG9iamVjdHMgd2l0aCBwb3NpdGlvbi5cbiAgICovXG4gIGFzeW5jIGdldEFsbFBvc2l0aW9uTU9zKFxuICAgIGJ5R3JvdXBJZE1PPzogSU1hbmFnZWRPYmplY3QsXG4gICAgcGFnZVNpemUgPSA1MDBcbiAgKTogUHJvbWlzZTxJUmVzdWx0TGlzdDxQb3NpdGlvbk1hbmFnZWRPYmplY3Q+PiB7XG4gICAgY29uc3QgZmlsdGVyOiB7IHBhZ2VTaXplOiBudW1iZXI7IHdpdGhUb3RhbFBhZ2VzOiBib29sZWFuOyBxdWVyeTogc3RyaW5nIH0gPSB7XG4gICAgICBwYWdlU2l6ZSxcbiAgICAgIHdpdGhUb3RhbFBhZ2VzOiB0cnVlLFxuICAgICAgcXVlcnk6ICdoYXMoYzh5X1Bvc2l0aW9uKSdcbiAgICB9O1xuXG4gICAgaWYgKGJ5R3JvdXBJZE1PKSB7XG4gICAgICBmaWx0ZXIucXVlcnkgPSBgJGZpbHRlcj0oYnlncm91cGlkKCR7YnlHcm91cElkTU8uaWR9KSBvciBpZCBlcSAnJHtieUdyb3VwSWRNTy5pZH0nKSBhbmQgaGFzKGM4eV9Qb3NpdGlvbilgO1xuICAgIH1cblxuICAgIGNvbnN0IHsgcGFnaW5nLCBkYXRhLCByZXMgfSA9IGF3YWl0IHRoaXMuaW52ZW50b3J5Lmxpc3QoZmlsdGVyKTtcblxuICAgIHJldHVybiB7XG4gICAgICByZXMsXG4gICAgICBwYWdpbmc6IHBhZ2luZyBhcyBQYWdpbmc8UG9zaXRpb25NYW5hZ2VkT2JqZWN0PixcbiAgICAgIGRhdGE6IGRhdGEgYXMgUG9zaXRpb25NYW5hZ2VkT2JqZWN0W11cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNsdXN0ZXIgc2l6ZSBmb3IgY2x1c3RlcmVkIG1hcHMuIENvdW50aW5nIHRoZSBwb3NpdGlvbiBNT3MgaW4gYSBib3VuZGluZ1xuICAgKiBhbmQgaWYgaXQgcmVhY2ggYSB0aHJlc2hvbGQsIHJldHVybmluZyBhIFtbQ2x1c3RlclNpemVdXS5cbiAgICogQHBhcmFtIGJvdW5kIFRoZSBib3VuZGluZyB0byBjaGVjayBmb3IgY2x1c3RlciBzaXplLlxuICAgKiBAcmV0dXJucyBUaGUgY2x1c3RlciBzaXplLCBjYW4gYmUgTk9ORSwgRk9VUiBvciBTSVhURUVOLlxuICAgKi9cbiAgYXN5bmMgZ2V0Q2x1c3RlclNpemUoYm91bmQ6IEwuTGF0TG5nQm91bmRzKSB7XG4gICAgY29uc3QgY291bnQgPSBhd2FpdCB0aGlzLmdldFBvc2l0aW9uTU9zRnJvbUJvdW5kQ291bnQoYm91bmQpO1xuICAgIGxldCBjbHVzdGVyU2l6ZSA9IENsdXN0ZXJTaXplLk5PTkU7XG4gICAgaWYgKGNvdW50ID4gdGhpcy5DTFVTVEVSX0xFVkVMX1RIUkVTSE9MRCkge1xuICAgICAgY2x1c3RlclNpemUgPSBDbHVzdGVyU2l6ZS5TSVhURUVOO1xuICAgIH0gZWxzZSBpZiAoY291bnQgPiB0aGlzLk1BWF9ERVZJQ0VfUEVSX0NMVVNURVIpIHtcbiAgICAgIGNsdXN0ZXJTaXplID0gQ2x1c3RlclNpemUuRk9VUjtcbiAgICB9XG4gICAgcmV0dXJuIGNsdXN0ZXJTaXplO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNYXBPcHRpb248VD4oa2V5OiBNYXBUZW5hbnRPcHRpb25LZXlzLCBkZWZhdWx0VmFsdWU6IFQpIHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLm9wdGlvbnMuZ2V0VGVuYW50T3B0aW9uPFQgfCBzdHJpbmc+KCdjb25maWd1cmF0aW9uJywga2V5LCBkZWZhdWx0VmFsdWUpKS5waXBlKFxuICAgICAgbWFwKGNvbmZpZyA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBgVGhlIHRlbmFudCBvcHRpb24gZm9yIG1hcHMgJ2NvbmZpZ3VyYXRpb24uJHtrZXl9JyBpcyBub3QgYSB2YWxpZCBKU09OIHN0cnVjdHVyZS5gXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb25maWc7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -273,7 +273,7 @@ export class Lwm2mBootstrapParametersComponent {
|
|
|
273
273
|
}
|
|
274
274
|
];
|
|
275
275
|
this.builder.buildForm(this.form, this.fields, this.model, this.options);
|
|
276
|
-
const userHasWritePermission = this.permissions.hasRole(
|
|
276
|
+
const userHasWritePermission = this.permissions.hasRole(Permissions.ROLE_INVENTORY_ADMIN);
|
|
277
277
|
if (Object.keys(parameters).length === 0 || !userHasWritePermission) {
|
|
278
278
|
this.form.disable();
|
|
279
279
|
this.options.formState.disabled = true;
|
|
@@ -330,4 +330,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
330
330
|
type: Component,
|
|
331
331
|
args: [{ selector: 'c8y-lwm2m-bootstrap-parameters', imports: [CommonModule, CoreModule], standalone: true, template: "<form (ngSubmit)=\"save()\">\n <div class=\"card content-fullpage fit-h\">\n <div class=\"card-header separator grid__col--fullspan\">\n <h1 class=\"card-title\">{{ 'LWM2M bootstrap parameters' | translate }}</h1>\n </div>\n <div class=\"inner-scroll\">\n <formly-form\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n [options]=\"options\"\n ></formly-form>\n </div>\n <div\n [hidden]=\"options.formState.disabled\"\n class=\"card-footer separator grid__col--fullspan sticky-bottom\"\n >\n <button\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary\"\n [disabled]=\"form.invalid || !form.dirty\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n</form>\n" }]
|
|
332
332
|
}], ctorParameters: function () { return [{ type: i1.AlertService }, { type: i1.Permissions }, { type: i2.FormlyFormBuilder }, { type: i3.Lwm2mBootstrapParametersService }, { type: i4.ActivatedRoute }]; } });
|
|
333
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHdtMm0tYm9vdHN0cmFwLXBhcmFtZXRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvdG9jb2wtbHdtMm0vY29tcG9uZW50cy9ib290c3RyYXAtcGFyYW1ldGVycy9sd20ybS1ib290c3RyYXAtcGFyYW1ldGVycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm90b2NvbC1sd20ybS9jb21wb25lbnRzL2Jvb3RzdHJhcC1wYXJhbWV0ZXJzL2x3bTJtLWJvb3RzdHJhcC1wYXJhbWV0ZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFxQixpQkFBaUIsRUFBcUIsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM5RixPQUFPLEVBQ0wsV0FBVyxFQUVYLFlBQVksRUFDYixNQUFNLDBDQUEwQyxDQUFDO0FBQ2xELE9BQU8sRUFDTCxPQUFPLEVBQ1AsWUFBWSxFQUNaLFdBQVcsRUFFWCxZQUFZLEVBQ1osVUFBVSxFQUNYLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUFRN0IsTUFBTSxPQUFPLGlDQUFpQztJQXNCNUMsWUFDVSxZQUEwQixFQUMxQixXQUF3QixFQUN4QixPQUEwQixFQUMxQiwyQkFBNEQsRUFDNUQsS0FBcUI7UUFKckIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFDMUIsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUFpQztRQUM1RCxVQUFLLEdB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QUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQ3BDO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ2xEO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxzQkFBc0I7UUFDMUIsSUFBSTtZQUNGLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUNsRSxJQUFnQyxDQUFDO1NBQ3JDO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ2pELE9BQU8sRUFBRSxDQUFDO1NBQ1g7SUFDSCxDQUFDOzs4SEFuV1UsaUNBQWlDO2tIQUFqQyxpQ0FBaUMsMEZDekI5QyxzMEJBNEJBLDJDRE5ZLFlBQVksOEZBQUUsVUFBVTsyRkFHdkIsaUNBQWlDO2tCQU43QyxTQUFTOytCQUNFLGdDQUFnQyxXQUVqQyxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsY0FDdkIsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnLCBGb3JtbHlGb3JtQnVpbGRlciwgRm9ybWx5Rm9ybU9wdGlvbnMgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IEx3bTJtQm9vdHN0cmFwUGFyYW1ldGVyc1NlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL3Byb3RvY29sLWx3bTJtL3NlcnZpY2VzJztcbmltcG9ydCB7XG4gIEJpbmRpbmdNb2RlLFxuICBMd20ybUJvb3RzdHJhcFBhcmFtZXRlcnMsXG4gIFNlY3VyaXR5TW9kZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL3Byb3RvY29sLWx3bTJtL21vZGVsJztcbmltcG9ydCB7XG4gIGdldHRleHQsXG4gIEFsZXJ0U2VydmljZSxcbiAgUGVybWlzc2lvbnMsXG4gIEFsZXJ0LFxuICBDb21tb25Nb2R1bGUsXG4gIENvcmVNb2R1bGVcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1sd20ybS1ib290c3RyYXAtcGFyYW1ldGVycycsXG4gIHRlbXBsYXRlVXJsOiAnLi9sd20ybS1ib290c3RyYXAtcGFyYW1ldGVycy5jb21wb25lbnQuaHRtbCcsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIENvcmVNb2R1bGVdLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEx3bTJtQm9vdHN0cmFwUGFyYW1ldGVyc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdO1xuICBmb3JtOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgbW9kZWwgPSB7fTtcbiAgb3B0aW9uczogRm9ybWx5Rm9ybU9wdGlvbnMgPSB7XG4gICAgZm9ybVN0YXRlOiB7XG4gICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgICBtYWluTW9kZWw6IHRoaXMubW9kZWxcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSByZWFkb25seSB3cml0ZVBlcm1pc3Npb25NaXNzaW5nQWxlcnQ6IEFsZXJ0ID0ge1xuICAgIHRleHQ6IGdldHRleHQoJ1lvdSBkbyBub3QgaGF2ZSB3cml0ZSBwZXJtaXNzaW9ucy4gVGhpcyBmb3JtIGlzIHJlYWQtb25seS4nKSxcbiAgICB0eXBlOiAnaW5mbydcbiAgfTtcblxuICBwcml2YXRlIHJlYWRvbmx5IERJU0FCTEVEX0hJTlRfVEVYVDogc3RyaW5nID0gZ2V0dGV4dChcbiAgICAnQ2hhbmdlIHRoZSBzZWN1cml0eSBtb2RlIHRvIGVuYWJsZSB0aGlzIGZpZWxkLidcbiAgKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwYXR0ZXJuOiBSZWdFeHAgPSAvXihbYS1mQS1GMC05XXsyfSkrJC87XG4gIHByaXZhdGUgZGV2aWNlSWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25zLFxuICAgIHByaXZhdGUgYnVpbGRlcjogRm9ybWx5Rm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBsd20ybUJvb3RzdHJhcFBhcmFtZXRlcnNTdmM6IEx3bTJtQm9vdHN0cmFwUGFyYW1ldGVyc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGVcbiAgKSB7XG4gICAgdGhpcy5kZXZpY2VJZCA9IHRoaXMucm91dGU/LnNuYXBzaG90Py5wYXJlbnQ/LnBhcmFtcz8uaWQ7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJzOiBMd20ybUJvb3RzdHJhcFBhcmFtZXRlcnMgPSBhd2FpdCB0aGlzLmdldEJvb3RzdHJhcFBhcmFtZXRlcnMoKTtcbiAgICBjb25zdCB7XG4gICAgICBiaW5kaW5nTW9kZSxcbiAgICAgIGJvb3RzdHJhcElkLFxuICAgICAgYm9vdHN0cmFwS2V5LFxuICAgICAgYm9vdHN0cmFwU2hvcnRTZXJ2ZXJJZCxcbiAgICAgIGRlZmF1bHRNYXhpbXVtUGVyaW9kLFxuICAgICAgZGVmYXVsdE1pbmltdW1QZXJpb2QsXG4gICAgICBzZWN1cml0eU1vZGUsXG4gICAgICBlbmRwb2ludCxcbiAgICAgIGdlbmVyYXRlQm9vdHN0cmFwU2VydmVyQ29uZmlnLFxuICAgICAgbHdtMm1TaG9ydFNlcnZlcklkLFxuICAgICAgc2VydmVyVXJpLFxuICAgICAgcmVnaXN0cmF0aW9uTGlmZVRpbWUsXG4gICAgICBzZXJ2ZXJQdWJsaWNLZXksXG4gICAgICBzZWN1cml0eUluc3RhbmNlT2Zmc2V0LFxuICAgICAgcHVibGljS2V5T3JJZCxcbiAgICAgIHNlY3JldEtleVxuICAgIH06IEx3bTJtQm9vdHN0cmFwUGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7XG5cbiAgICBjb25zdCBsZWZ0RmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW1xuICAgICAge1xuICAgICAgICBrZXk6ICdlbmRwb2ludCcsXG4gICAgICAgIGlkOiAnYnMtZW5kcG9pbnQnLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBlbmRwb2ludCxcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0VuZHBvaW50JyksXG4gICAgICAgICAgcGxhY2Vob2xkZXI6ICd1cm46aW1laTowMTIzNDU2Nzg5MDEyMzQnLFxuICAgICAgICAgIHJlYWRvbmx5OiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ3NlY3VyaXR5TW9kZScsXG4gICAgICAgIGlkOiAnYnMtc2VjdXJpdHlNb2RlJyxcbiAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogc2VjdXJpdHlNb2RlIHx8IFNlY3VyaXR5TW9kZS5OT19TRUMsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdTZWN1cml0eSBtb2RlJyksXG4gICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgeyBsYWJlbDogU2VjdXJpdHlNb2RlLk5PX1NFQywgdmFsdWU6IFNlY3VyaXR5TW9kZS5OT19TRUMgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6IFNlY3VyaXR5TW9kZS5QU0ssIHZhbHVlOiBTZWN1cml0eU1vZGUuUFNLIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2Jvb3RzdHJhcElkJyxcbiAgICAgICAgaWQ6ICdicy1ib290c3RyYXBJZCcsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQm9vdHN0cmFwIFBTSyBJRCcpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLkRJU0FCTEVEX0hJTlRfVEVYVCxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBob29rczoge1xuICAgICAgICAgIG9uSW5pdDogKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZykgPT4ge1xuICAgICAgICAgICAgZmllbGQuZm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShib290c3RyYXBJZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBleHByZXNzaW9uUHJvcGVydGllczoge1xuICAgICAgICAgICd0ZW1wbGF0ZU9wdGlvbnMuZGlzYWJsZWQnOiAobW9kZWw6IGFueSwgZm9ybVN0YXRlOiBhbnksIGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZykgPT5cbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZVBTS0ZpZWxkKGZvcm1TdGF0ZSwgZmllbGQpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2Jvb3RzdHJhcEtleScsXG4gICAgICAgIGlkOiAnYnMtYm9vdHN0cmFwS2V5JyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdCb290c3RyYXAgcHJlLXNoYXJlZCBrZXknKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5ESVNBQkxFRF9ISU5UX1RFWFQsXG4gICAgICAgICAgcGxhY2Vob2xkZXI6ICcwMTIzNDU2Nzg5YWJjZGVmJyxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICBwYXR0ZXJuOiB0aGlzLnBhdHRlcm5cbiAgICAgICAgfSxcbiAgICAgICAgaG9va3M6IHtcbiAgICAgICAgICBvbkluaXQ6IChmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+IHtcbiAgICAgICAgICAgIGZpZWxkLmZvcm1Db250cm9sLnBhdGNoVmFsdWUoYm9vdHN0cmFwS2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGV4cHJlc3Npb25Qcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgJ3RlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCc6IChtb2RlbDogYW55LCBmb3JtU3RhdGU6IGFueSwgZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSA9PlxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlUFNLRmllbGQoZm9ybVN0YXRlLCBmaWVsZClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnc2VjdXJpdHlJbnN0YW5jZU9mZnNldCcsXG4gICAgICAgIGlkOiAnYnMtc2VjdXJpdHlJbnN0YW5jZU9mZnNldCcsXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IHNlY3VyaXR5SW5zdGFuY2VPZmZzZXQsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdTZWN1cml0eSBpbnN0YW5jZSBvZmZzZXQnKSxcbiAgICAgICAgICBwbGFjZWhvbGRlcjogJzAnLFxuICAgICAgICAgIG1pbjogMFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdib290c3RyYXBTaG9ydFNlcnZlcklkJyxcbiAgICAgICAgaWQ6ICdicy1ib290c3RyYXBTaG9ydFNlcnZlcklkJyxcbiAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogYm9vdHN0cmFwU2hvcnRTZXJ2ZXJJZCxcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0xXTTJNIGJvb3RzdHJhcCBzaG9ydCBzZXJ2ZXIgSUQnKSxcbiAgICAgICAgICBwbGFjZWhvbGRlcjogJzAnLFxuICAgICAgICAgIG1pbjogMFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdyZWdpc3RyYXRpb25MaWZlVGltZScsXG4gICAgICAgIGlkOiAnYnMtcmVnaXN0cmF0aW9uTGlmZVRpbWUnLFxuICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiByZWdpc3RyYXRpb25MaWZlVGltZSxcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1JlZ2lzdHJhdGlvbiBsaWZldGltZScpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBnZXR0ZXh0KCdpbiBzZWNvbmRzJyksXG4gICAgICAgICAgcGxhY2Vob2xkZXI6ICc2MDAnLFxuICAgICAgICAgIG1pbjogMFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdiaW5kaW5nTW9kZScsXG4gICAgICAgIGlkOiAnYnMtYmluZGluZ01vZGUnLFxuICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBiaW5kaW5nTW9kZSB8fCBCaW5kaW5nTW9kZS5VLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQmluZGluZyBtb2RlJyksXG4gICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgeyBsYWJlbDogZ2V0dGV4dCgnVURQJyksIHZhbHVlOiBCaW5kaW5nTW9kZS5VIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiBnZXR0ZXh0KCdVRFAgd2l0aCBxdWV1ZSBtb2RlJyksIHZhbHVlOiBCaW5kaW5nTW9kZS5VUSB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgXTtcblxuICAgIGNvbnN0IHJpZ2h0RmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdID0gW1xuICAgICAge1xuICAgICAgICBrZXk6ICdzZXJ2ZXJQdWJsaWNLZXknLFxuICAgICAgICBpZDogJ2JzLXNlcnZlclB1YmxpY0tleScsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IHNlcnZlclB1YmxpY0tleSxcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1NlcnZlciBwdWJsaWMga2V5JyksXG4gICAgICAgICAgcGxhY2Vob2xkZXI6ICdBQUFBQjNOemFDMXljMkXigKYnXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ3NlcnZlclVyaScsXG4gICAgICAgIGlkOiAnYnMtc2VydmVyVXJpJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogc2VydmVyVXJpLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnTFdNMk0gc2VydmVyIFVSSScpLFxuICAgICAgICAgIHBsYWNlaG9sZGVyOiAnY29hcHM6Ly88TFdNMk0tc2VydmVyLWRvbWFpbj46PGNvYXBzLXBvcnQ+J1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdwdWJsaWNLZXlPcklkJyxcbiAgICAgICAgaWQ6ICdicy1wdWJsaWNLZXlPcklkJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdMV00yTSBQU0sgSUQnKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5ESVNBQkxFRF9ISU5UX1RFWFQsXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgaG9va3M6IHtcbiAgICAgICAgICBvbkluaXQ6IChmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+IHtcbiAgICAgICAgICAgIGZpZWxkLmZvcm1Db250cm9sLnBhdGNoVmFsdWUocHVibGljS2V5T3JJZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBleHByZXNzaW9uUHJvcGVydGllczoge1xuICAgICAgICAgICd0ZW1wbGF0ZU9wdGlvbnMuZGlzYWJsZWQnOiAobW9kZWw6IGFueSwgZm9ybVN0YXRlOiBhbnksIGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZykgPT5cbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZVBTS0ZpZWxkKGZvcm1TdGF0ZSwgZmllbGQpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ3NlY3JldEtleScsXG4gICAgICAgIGlkOiAnYnMtc2VjcmV0S2V5JyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdMV00yTSBwcmUtc2hhcmVkIGtleScpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLkRJU0FCTEVEX0hJTlRfVEVYVCxcbiAgICAgICAgICBwbGFjZWhvbGRlcjogJzAxMjM0NTY3ODlhYmNkZWYnLFxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgIHBhdHRlcm46IHRoaXMucGF0dGVyblxuICAgICAgICB9LFxuICAgICAgICBob29rczoge1xuICAgICAgICAgIG9uSW5pdDogKGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZykgPT4ge1xuICAgICAgICAgICAgZmllbGQuZm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShzZWNyZXRLZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXhwcmVzc2lvblByb3BlcnRpZXM6IHtcbiAgICAgICAgICAndGVtcGxhdGVPcHRpb25zLmRpc2FibGVkJzogKG1vZGVsOiBhbnksIGZvcm1TdGF0ZTogYW55LCBmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVQU0tGaWVsZChmb3JtU3RhdGUsIGZpZWxkKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdsd20ybVNob3J0U2VydmVySWQnLFxuICAgICAgICBpZDogJ2JzLWx3bTJtU2hvcnRTZXJ2ZXJJZCcsXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGx3bTJtU2hvcnRTZXJ2ZXJJZCxcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0xXTTJNIHNob3J0IHNlcnZlciBJRCcpLFxuICAgICAgICAgIHBsYWNlaG9sZGVyOiAnMCcsXG4gICAgICAgICAgbWluOiAwXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2dlbmVyYXRlQm9vdHN0cmFwU2VydmVyQ29uZmlnJyxcbiAgICAgICAgaWQ6ICdicy1nZW5lcmF0ZUJvb3RzdHJhcFNlcnZlckNvbmZpZycsXG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGdlbmVyYXRlQm9vdHN0cmFwU2VydmVyQ29uZmlnIHx8IGZhbHNlLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnR2VuZXJhdGUgYm9vdHN0cmFwIHNlcnZlciBjb25maWcnKSxcbiAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICB7IGxhYmVsOiBnZXR0ZXh0KCdZZXMnKSwgdmFsdWU6IHRydWUgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6IGdldHRleHQoJ05vJyksIHZhbHVlOiBmYWxzZSB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdkZWZhdWx0TWluaW11bVBlcmlvZCcsXG4gICAgICAgIGlkOiAnYnMtZGVmYXVsdE1pbmltdW1QZXJpb2QnLFxuICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBkZWZhdWx0TWluaW11bVBlcmlvZCxcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0RlZmF1bHQgbWluaW11bSBwZXJpb2QnKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnaW4gc2Vjb25kcycpLFxuICAgICAgICAgIHBsYWNlaG9sZGVyOiAnMTAnLFxuICAgICAgICAgIG1pbjogMFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdkZWZhdWx0TWF4aW11bVBlcmlvZCcsXG4gICAgICAgIGlkOiAnYnMtZGVmYXVsdE1heGltdW1QZXJpb2QnLFxuICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBkZWZhdWx0TWF4aW11bVBlcmlvZCxcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0RlZmF1bHQgbWF4aW11bSBwZXJpb2QnKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnaW4gc2Vjb25kcycpLFxuICAgICAgICAgIHBsYWNlaG9sZGVyOiAnNjAnLFxuICAgICAgICAgIG1pbjogMFxuICAgICAgICB9XG4gICAgICB9XG4gICAgXTtcblxuICAgIHRoaXMuZmllbGRzID0gW1xuICAgICAge1xuICAgICAgICBmaWVsZEdyb3VwQ2xhc3NOYW1lOiAnY2FyZC1ibG9jayBkLWdyaWQgZ3JpZF9fY29sLS02LTYnLFxuICAgICAgICBmaWVsZEdyb3VwOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgZmllbGRHcm91cENsYXNzTmFtZTogJ2Zvcm0tZ3JvdXAgcC0yNCBwLXQtOCBwLWItOCBtLWItMCcsXG4gICAgICAgICAgICBmaWVsZEdyb3VwOiBsZWZ0RmllbGRzXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmaWVsZEdyb3VwQ2xhc3NOYW1lOiAnZm9ybS1ncm91cCBwLTI0IHAtdC04IHAtYi04IG0tYi0wJyxcbiAgICAgICAgICAgIGZpZWxkR3JvdXA6IHJpZ2h0RmllbGRzXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXTtcblxuICAgIHRoaXMuYnVpbGRlci5idWlsZEZvcm0odGhpcy5mb3JtLCB0aGlzLmZpZWxkcywgdGhpcy5tb2RlbCwgdGhpcy5vcHRpb25zKTtcblxuICAgIGNvbnN0IHVzZXJIYXNXcml0ZVBlcm1pc3Npb24gPSB0aGlzLnBlcm1pc3Npb25zLmhhc1JvbGUoJ1JPTEVfSU5WRU5UT1JZX0FETUlOJyk7XG5cbiAgICBpZiAoT2JqZWN0LmtleXMocGFyYW1ldGVycykubGVuZ3RoID09PSAwIHx8ICF1c2VySGFzV3JpdGVQZXJtaXNzaW9uKSB7XG4gICAgICB0aGlzLmZvcm0uZGlzYWJsZSgpO1xuXG4gICAgICB0aGlzLm9wdGlvbnMuZm9ybVN0YXRlLmRpc2FibGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIXVzZXJIYXNXcml0ZVBlcm1pc3Npb24pIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8odGhpcy53cml0ZVBlcm1pc3Npb25NaXNzaW5nQWxlcnQudGV4dCBhcyBzdHJpbmcpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIC8vIGFsZXJ0U2VydmljZSBjaGVja3MgaWYgZ2l2ZW4gYWxlcnQgZXhpc3RzLlxuICAgIC8vIHNhdmUgdG8gcmVtb3ZlIGl0IHdpdGhvdXQgYWRkaXRpb25hbCBjaGVja3NcbiAgICB0aGlzLmFsZXJ0U2VydmljZS5yZW1vdmUodGhpcy53cml0ZVBlcm1pc3Npb25NaXNzaW5nQWxlcnQpO1xuICB9XG5cbiAgZGlzYWJsZVBTS0ZpZWxkKFxuICAgIGZvcm1TdGF0ZTogeyBkaXNhYmxlZDogYm9vbGVhbjsgbWFpbk1vZGVsOiBMd20ybUJvb3RzdHJhcFBhcmFtZXRlcnMgfSxcbiAgICBmaWVsZDogRm9ybWx5RmllbGRDb25maWdcbiAgKSB7XG4gICAgaWYgKGZvcm1TdGF0ZS5kaXNhYmxlZCkge1xuICAgICAgZGVsZXRlIGZpZWxkLnRlbXBsYXRlT3B0aW9ucy5kZXNjcmlwdGlvbjtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAhZm9ybVN0YXRlLm1haW5Nb2RlbC5zZWN1cml0eU1vZGUgfHxcbiAgICAgIGZvcm1TdGF0ZS5tYWluTW9kZWwuc2VjdXJpdHlNb2RlID09PSBTZWN1cml0eU1vZGUuTk9fU0VDXG4gICAgKSB7XG4gICAgICBmaWVsZC50ZW1wbGF0ZU9wdGlvbnMuZGVzY3JpcHRpb24gPSB0aGlzLkRJU0FCTEVEX0hJTlRfVEVYVDtcbiAgICAgIGZpZWxkLmZvcm1Db250cm9sLnBhdGNoVmFsdWUobnVsbCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZGVsZXRlIGZpZWxkLnRlbXBsYXRlT3B0aW9ucy5kZXNjcmlwdGlvbjtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBhc3luYyBzYXZlKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmx3bTJtQm9vdHN0cmFwUGFyYW1ldGVyc1N2Yy51cGRhdGUoeyAuLi50aGlzLm1vZGVsLCAuLi57IGlkOiB0aGlzLmRldmljZUlkIH0gfSk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGdldHRleHQoJ0Jvb3RzdHJhcCBwYXJhbWV0ZXJzIHVwZGF0ZWQnKSk7XG4gICAgICAvLyBkaXNhYmxlcyBzYXZlIGJ1dHRvblxuICAgICAgdGhpcy5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICB0aGlzLmZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKHsgLi4uZXJyb3IgfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0Qm9vdHN0cmFwUGFyYW1ldGVycygpOiBQcm9taXNlPEx3bTJtQm9vdHN0cmFwUGFyYW1ldGVycz4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gKGF3YWl0IHRoaXMubHdtMm1Cb290c3RyYXBQYXJhbWV0ZXJzU3ZjLmRldGFpbCh0aGlzLmRldmljZUlkKSlcbiAgICAgICAgLmRhdGEgYXMgTHdtMm1Cb290c3RyYXBQYXJhbWV0ZXJzO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKHsgLi4uZXJyb3IgfSk7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9XG59XG4iLCI8Zm9ybSAobmdTdWJtaXQpPVwic2F2ZSgpXCI+XG4gIDxkaXYgY2xhc3M9XCJjYXJkIGNvbnRlbnQtZnVsbHBhZ2UgZml0LWhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgc2VwYXJhdG9yIGdyaWRfX2NvbC0tZnVsbHNwYW5cIj5cbiAgICAgIDxoMSBjbGFzcz1cImNhcmQtdGl0bGVcIj57eyAnTFdNMk0gYm9vdHN0cmFwIHBhcmFtZXRlcnMnIHwgdHJhbnNsYXRlIH19PC9oMT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsXCI+XG4gICAgICA8Zm9ybWx5LWZvcm1cbiAgICAgICAgW2Zvcm1dPVwiZm9ybVwiXG4gICAgICAgIFtmaWVsZHNdPVwiZmllbGRzXCJcbiAgICAgICAgW21vZGVsXT1cIm1vZGVsXCJcbiAgICAgICAgW29wdGlvbnNdPVwib3B0aW9uc1wiXG4gICAgICA+PC9mb3JtbHktZm9ybT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBbaGlkZGVuXT1cIm9wdGlvbnMuZm9ybVN0YXRlLmRpc2FibGVkXCJcbiAgICAgIGNsYXNzPVwiY2FyZC1mb290ZXIgc2VwYXJhdG9yIGdyaWRfX2NvbC0tZnVsbHNwYW4gc3RpY2t5LWJvdHRvbVwiXG4gICAgPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0aXRsZT1cInt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWQgfHwgIWZvcm0uZGlydHlcIlxuICAgICAgPlxuICAgICAgICB7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
|
|
333
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHdtMm0tYm9vdHN0cmFwLXBhcmFtZXRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvdG9jb2wtbHdtMm0vY29tcG9uZW50cy9ib290c3RyYXAtcGFyYW1ldGVycy9sd20ybS1ib290c3RyYXAtcGFyYW1ldGVycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm90b2NvbC1sd20ybS9jb21wb25lbnRzL2Jvb3RzdHJhcC1wYXJhbWV0ZXJzL2x3bTJtLWJvb3RzdHJhcC1wYXJhbWV0ZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFxQixpQkFBaUIsRUFBcUIsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM5RixPQUFPLEVBQ0wsV0FBVyxFQUVYLFlBQVksRUFDYixNQUFNLDBDQUEwQyxDQUFDO0FBQ2xELE9BQU8sRUFDTCxPQUFPLEVBQ1AsWUFBWSxFQUNaLFdBQVcsRUFFWCxZQUFZLEVBQ1osVUFBVSxFQUNYLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7QUFRN0IsTUFBTSxPQUFPLGlDQUFpQztJQXNCNUMsWUFDVSxZQUEwQixFQUMxQixXQUF3QixFQUN4QixPQUEwQixFQUMxQiwyQkFBNEQsRUFDNUQsS0FBcUI7UUFKckIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFDMUIsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUFpQztRQUM1RCxVQUFLLEdB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QzNCLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztTQUNwQztRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNsRDtJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsc0JBQXNCO1FBQzFCLElBQUk7WUFDRixPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsMkJBQTJCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDbEUsSUFBZ0MsQ0FBQztTQUNyQztRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNqRCxPQUFPLEVBQUUsQ0FBQztTQUNYO0lBQ0gsQ0FBQzs7OEhBbldVLGlDQUFpQztrSEFBakMsaUNBQWlDLDBGQ3pCOUMsczBCQTRCQSwyQ0ROWSxZQUFZLDhGQUFFLFVBQVU7MkZBR3ZCLGlDQUFpQztrQkFON0MsU0FBUzsrQkFDRSxnQ0FBZ0MsV0FFakMsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLGNBQ3ZCLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZywgRm9ybWx5Rm9ybUJ1aWxkZXIsIEZvcm1seUZvcm1PcHRpb25zIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBMd20ybUJvb3RzdHJhcFBhcmFtZXRlcnNTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9wcm90b2NvbC1sd20ybS9zZXJ2aWNlcyc7XG5pbXBvcnQge1xuICBCaW5kaW5nTW9kZSxcbiAgTHdtMm1Cb290c3RyYXBQYXJhbWV0ZXJzLFxuICBTZWN1cml0eU1vZGVcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9wcm90b2NvbC1sd20ybS9tb2RlbCc7XG5pbXBvcnQge1xuICBnZXR0ZXh0LFxuICBBbGVydFNlcnZpY2UsXG4gIFBlcm1pc3Npb25zLFxuICBBbGVydCxcbiAgQ29tbW9uTW9kdWxlLFxuICBDb3JlTW9kdWxlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktbHdtMm0tYm9vdHN0cmFwLXBhcmFtZXRlcnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vbHdtMm0tYm9vdHN0cmFwLXBhcmFtZXRlcnMuY29tcG9uZW50Lmh0bWwnLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBDb3JlTW9kdWxlXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBMd20ybUJvb3RzdHJhcFBhcmFtZXRlcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXTtcbiAgZm9ybTogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIG1vZGVsID0ge307XG4gIG9wdGlvbnM6IEZvcm1seUZvcm1PcHRpb25zID0ge1xuICAgIGZvcm1TdGF0ZToge1xuICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgbWFpbk1vZGVsOiB0aGlzLm1vZGVsXG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgd3JpdGVQZXJtaXNzaW9uTWlzc2luZ0FsZXJ0OiBBbGVydCA9IHtcbiAgICB0ZXh0OiBnZXR0ZXh0KCdZb3UgZG8gbm90IGhhdmUgd3JpdGUgcGVybWlzc2lvbnMuIFRoaXMgZm9ybSBpcyByZWFkLW9ubHkuJyksXG4gICAgdHlwZTogJ2luZm8nXG4gIH07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBESVNBQkxFRF9ISU5UX1RFWFQ6IHN0cmluZyA9IGdldHRleHQoXG4gICAgJ0NoYW5nZSB0aGUgc2VjdXJpdHkgbW9kZSB0byBlbmFibGUgdGhpcyBmaWVsZC4nXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGF0dGVybjogUmVnRXhwID0gL14oW2EtZkEtRjAtOV17Mn0pKyQvO1xuICBwcml2YXRlIGRldmljZUlkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9ucyxcbiAgICBwcml2YXRlIGJ1aWxkZXI6IEZvcm1seUZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgbHdtMm1Cb290c3RyYXBQYXJhbWV0ZXJzU3ZjOiBMd20ybUJvb3RzdHJhcFBhcmFtZXRlcnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlXG4gICkge1xuICAgIHRoaXMuZGV2aWNlSWQgPSB0aGlzLnJvdXRlPy5zbmFwc2hvdD8ucGFyZW50Py5wYXJhbXM/LmlkO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgcGFyYW1ldGVyczogTHdtMm1Cb290c3RyYXBQYXJhbWV0ZXJzID0gYXdhaXQgdGhpcy5nZXRCb290c3RyYXBQYXJhbWV0ZXJzKCk7XG4gICAgY29uc3Qge1xuICAgICAgYmluZGluZ01vZGUsXG4gICAgICBib290c3RyYXBJZCxcbiAgICAgIGJvb3RzdHJhcEtleSxcbiAgICAgIGJvb3RzdHJhcFNob3J0U2VydmVySWQsXG4gICAgICBkZWZhdWx0TWF4aW11bVBlcmlvZCxcbiAgICAgIGRlZmF1bHRNaW5pbXVtUGVyaW9kLFxuICAgICAgc2VjdXJpdHlNb2RlLFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBnZW5lcmF0ZUJvb3RzdHJhcFNlcnZlckNvbmZpZyxcbiAgICAgIGx3bTJtU2hvcnRTZXJ2ZXJJZCxcbiAgICAgIHNlcnZlclVyaSxcbiAgICAgIHJlZ2lzdHJhdGlvbkxpZmVUaW1lLFxuICAgICAgc2VydmVyUHVibGljS2V5LFxuICAgICAgc2VjdXJpdHlJbnN0YW5jZU9mZnNldCxcbiAgICAgIHB1YmxpY0tleU9ySWQsXG4gICAgICBzZWNyZXRLZXlcbiAgICB9OiBMd20ybUJvb3RzdHJhcFBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzO1xuXG4gICAgY29uc3QgbGVmdEZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSA9IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiAnZW5kcG9pbnQnLFxuICAgICAgICBpZDogJ2JzLWVuZHBvaW50JyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZW5kcG9pbnQsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdFbmRwb2ludCcpLFxuICAgICAgICAgIHBsYWNlaG9sZGVyOiAndXJuOmltZWk6MDEyMzQ1Njc4OTAxMjM0JyxcbiAgICAgICAgICByZWFkb25seTogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdzZWN1cml0eU1vZGUnLFxuICAgICAgICBpZDogJ2JzLXNlY3VyaXR5TW9kZScsXG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IHNlY3VyaXR5TW9kZSB8fCBTZWN1cml0eU1vZGUuTk9fU0VDLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnU2VjdXJpdHkgbW9kZScpLFxuICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgIHsgbGFiZWw6IFNlY3VyaXR5TW9kZS5OT19TRUMsIHZhbHVlOiBTZWN1cml0eU1vZGUuTk9fU0VDIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiBTZWN1cml0eU1vZGUuUFNLLCB2YWx1ZTogU2VjdXJpdHlNb2RlLlBTSyB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdib290c3RyYXBJZCcsXG4gICAgICAgIGlkOiAnYnMtYm9vdHN0cmFwSWQnLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0Jvb3RzdHJhcCBQU0sgSUQnKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5ESVNBQkxFRF9ISU5UX1RFWFQsXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgaG9va3M6IHtcbiAgICAgICAgICBvbkluaXQ6IChmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+IHtcbiAgICAgICAgICAgIGZpZWxkLmZvcm1Db250cm9sLnBhdGNoVmFsdWUoYm9vdHN0cmFwSWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXhwcmVzc2lvblByb3BlcnRpZXM6IHtcbiAgICAgICAgICAndGVtcGxhdGVPcHRpb25zLmRpc2FibGVkJzogKG1vZGVsOiBhbnksIGZvcm1TdGF0ZTogYW55LCBmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVQU0tGaWVsZChmb3JtU3RhdGUsIGZpZWxkKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdib290c3RyYXBLZXknLFxuICAgICAgICBpZDogJ2JzLWJvb3RzdHJhcEtleScsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQm9vdHN0cmFwIHByZS1zaGFyZWQga2V5JyksXG4gICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuRElTQUJMRURfSElOVF9URVhULFxuICAgICAgICAgIHBsYWNlaG9sZGVyOiAnMDEyMzQ1Njc4OWFiY2RlZicsXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgcGF0dGVybjogdGhpcy5wYXR0ZXJuXG4gICAgICAgIH0sXG4gICAgICAgIGhvb2tzOiB7XG4gICAgICAgICAgb25Jbml0OiAoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSA9PiB7XG4gICAgICAgICAgICBmaWVsZC5mb3JtQ29udHJvbC5wYXRjaFZhbHVlKGJvb3RzdHJhcEtleSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBleHByZXNzaW9uUHJvcGVydGllczoge1xuICAgICAgICAgICd0ZW1wbGF0ZU9wdGlvbnMuZGlzYWJsZWQnOiAobW9kZWw6IGFueSwgZm9ybVN0YXRlOiBhbnksIGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZykgPT5cbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZVBTS0ZpZWxkKGZvcm1TdGF0ZSwgZmllbGQpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ3NlY3VyaXR5SW5zdGFuY2VPZmZzZXQnLFxuICAgICAgICBpZDogJ2JzLXNlY3VyaXR5SW5zdGFuY2VPZmZzZXQnLFxuICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBzZWN1cml0eUluc3RhbmNlT2Zmc2V0LFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnU2VjdXJpdHkgaW5zdGFuY2Ugb2Zmc2V0JyksXG4gICAgICAgICAgcGxhY2Vob2xkZXI6ICcwJyxcbiAgICAgICAgICBtaW46IDBcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnYm9vdHN0cmFwU2hvcnRTZXJ2ZXJJZCcsXG4gICAgICAgIGlkOiAnYnMtYm9vdHN0cmFwU2hvcnRTZXJ2ZXJJZCcsXG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGJvb3RzdHJhcFNob3J0U2VydmVySWQsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdMV00yTSBib290c3RyYXAgc2hvcnQgc2VydmVyIElEJyksXG4gICAgICAgICAgcGxhY2Vob2xkZXI6ICcwJyxcbiAgICAgICAgICBtaW46IDBcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAncmVnaXN0cmF0aW9uTGlmZVRpbWUnLFxuICAgICAgICBpZDogJ2JzLXJlZ2lzdHJhdGlvbkxpZmVUaW1lJyxcbiAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogcmVnaXN0cmF0aW9uTGlmZVRpbWUsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdSZWdpc3RyYXRpb24gbGlmZXRpbWUnKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dCgnaW4gc2Vjb25kcycpLFxuICAgICAgICAgIHBsYWNlaG9sZGVyOiAnNjAwJyxcbiAgICAgICAgICBtaW46IDBcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnYmluZGluZ01vZGUnLFxuICAgICAgICBpZDogJ2JzLWJpbmRpbmdNb2RlJyxcbiAgICAgICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogYmluZGluZ01vZGUgfHwgQmluZGluZ01vZGUuVSxcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0JpbmRpbmcgbW9kZScpLFxuICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgIHsgbGFiZWw6IGdldHRleHQoJ1VEUCcpLCB2YWx1ZTogQmluZGluZ01vZGUuVSB9LFxuICAgICAgICAgICAgeyBsYWJlbDogZ2V0dGV4dCgnVURQIHdpdGggcXVldWUgbW9kZScpLCB2YWx1ZTogQmluZGluZ01vZGUuVVEgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIF07XG5cbiAgICBjb25zdCByaWdodEZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSA9IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiAnc2VydmVyUHVibGljS2V5JyxcbiAgICAgICAgaWQ6ICdicy1zZXJ2ZXJQdWJsaWNLZXknLFxuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBzZXJ2ZXJQdWJsaWNLZXksXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdTZXJ2ZXIgcHVibGljIGtleScpLFxuICAgICAgICAgIHBsYWNlaG9sZGVyOiAnQUFBQUIzTnphQzF5YzJF4oCmJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdzZXJ2ZXJVcmknLFxuICAgICAgICBpZDogJ2JzLXNlcnZlclVyaScsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IHNlcnZlclVyaSxcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0xXTTJNIHNlcnZlciBVUkknKSxcbiAgICAgICAgICBwbGFjZWhvbGRlcjogJ2NvYXBzOi8vPExXTTJNLXNlcnZlci1kb21haW4+Ojxjb2Fwcy1wb3J0PidcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAncHVibGljS2V5T3JJZCcsXG4gICAgICAgIGlkOiAnYnMtcHVibGljS2V5T3JJZCcsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnTFdNMk0gUFNLIElEJyksXG4gICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuRElTQUJMRURfSElOVF9URVhULFxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIGhvb2tzOiB7XG4gICAgICAgICAgb25Jbml0OiAoZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSA9PiB7XG4gICAgICAgICAgICBmaWVsZC5mb3JtQ29udHJvbC5wYXRjaFZhbHVlKHB1YmxpY0tleU9ySWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXhwcmVzc2lvblByb3BlcnRpZXM6IHtcbiAgICAgICAgICAndGVtcGxhdGVPcHRpb25zLmRpc2FibGVkJzogKG1vZGVsOiBhbnksIGZvcm1TdGF0ZTogYW55LCBmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVQU0tGaWVsZChmb3JtU3RhdGUsIGZpZWxkKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdzZWNyZXRLZXknLFxuICAgICAgICBpZDogJ2JzLXNlY3JldEtleScsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnTFdNMk0gcHJlLXNoYXJlZCBrZXknKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5ESVNBQkxFRF9ISU5UX1RFWFQsXG4gICAgICAgICAgcGxhY2Vob2xkZXI6ICcwMTIzNDU2Nzg5YWJjZGVmJyxcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICBwYXR0ZXJuOiB0aGlzLnBhdHRlcm5cbiAgICAgICAgfSxcbiAgICAgICAgaG9va3M6IHtcbiAgICAgICAgICBvbkluaXQ6IChmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+IHtcbiAgICAgICAgICAgIGZpZWxkLmZvcm1Db250cm9sLnBhdGNoVmFsdWUoc2VjcmV0S2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGV4cHJlc3Npb25Qcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgJ3RlbXBsYXRlT3B0aW9ucy5kaXNhYmxlZCc6IChtb2RlbDogYW55LCBmb3JtU3RhdGU6IGFueSwgZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnKSA9PlxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlUFNLRmllbGQoZm9ybVN0YXRlLCBmaWVsZClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnbHdtMm1TaG9ydFNlcnZlcklkJyxcbiAgICAgICAgaWQ6ICdicy1sd20ybVNob3J0U2VydmVySWQnLFxuICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBsd20ybVNob3J0U2VydmVySWQsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdMV00yTSBzaG9ydCBzZXJ2ZXIgSUQnKSxcbiAgICAgICAgICBwbGFjZWhvbGRlcjogJzAnLFxuICAgICAgICAgIG1pbjogMFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdnZW5lcmF0ZUJvb3RzdHJhcFNlcnZlckNvbmZpZycsXG4gICAgICAgIGlkOiAnYnMtZ2VuZXJhdGVCb290c3RyYXBTZXJ2ZXJDb25maWcnLFxuICAgICAgICB0eXBlOiAnc2VsZWN0JyxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBnZW5lcmF0ZUJvb3RzdHJhcFNlcnZlckNvbmZpZyB8fCBmYWxzZSxcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0dlbmVyYXRlIGJvb3RzdHJhcCBzZXJ2ZXIgY29uZmlnJyksXG4gICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgeyBsYWJlbDogZ2V0dGV4dCgnWWVzJyksIHZhbHVlOiB0cnVlIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiBnZXR0ZXh0KCdObycpLCB2YWx1ZTogZmFsc2UgfVxuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnZGVmYXVsdE1pbmltdW1QZXJpb2QnLFxuICAgICAgICBpZDogJ2JzLWRlZmF1bHRNaW5pbXVtUGVyaW9kJyxcbiAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZGVmYXVsdE1pbmltdW1QZXJpb2QsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdEZWZhdWx0IG1pbmltdW0gcGVyaW9kJyksXG4gICAgICAgICAgZGVzY3JpcHRpb246IGdldHRleHQoJ2luIHNlY29uZHMnKSxcbiAgICAgICAgICBwbGFjZWhvbGRlcjogJzEwJyxcbiAgICAgICAgICBtaW46IDBcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnZGVmYXVsdE1heGltdW1QZXJpb2QnLFxuICAgICAgICBpZDogJ2JzLWRlZmF1bHRNYXhpbXVtUGVyaW9kJyxcbiAgICAgICAgdHlwZTogJ251bWJlcicsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZGVmYXVsdE1heGltdW1QZXJpb2QsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdEZWZhdWx0IG1heGltdW0gcGVyaW9kJyksXG4gICAgICAgICAgZGVzY3JpcHRpb246IGdldHRleHQoJ2luIHNlY29uZHMnKSxcbiAgICAgICAgICBwbGFjZWhvbGRlcjogJzYwJyxcbiAgICAgICAgICBtaW46IDBcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF07XG5cbiAgICB0aGlzLmZpZWxkcyA9IFtcbiAgICAgIHtcbiAgICAgICAgZmllbGRHcm91cENsYXNzTmFtZTogJ2NhcmQtYmxvY2sgZC1ncmlkIGdyaWRfX2NvbC0tNi02JyxcbiAgICAgICAgZmllbGRHcm91cDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZpZWxkR3JvdXBDbGFzc05hbWU6ICdmb3JtLWdyb3VwIHAtMjQgcC10LTggcC1iLTggbS1iLTAnLFxuICAgICAgICAgICAgZmllbGRHcm91cDogbGVmdEZpZWxkc1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZmllbGRHcm91cENsYXNzTmFtZTogJ2Zvcm0tZ3JvdXAgcC0yNCBwLXQtOCBwLWItOCBtLWItMCcsXG4gICAgICAgICAgICBmaWVsZEdyb3VwOiByaWdodEZpZWxkc1xuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIF07XG5cbiAgICB0aGlzLmJ1aWxkZXIuYnVpbGRGb3JtKHRoaXMuZm9ybSwgdGhpcy5maWVsZHMsIHRoaXMubW9kZWwsIHRoaXMub3B0aW9ucyk7XG5cbiAgICBjb25zdCB1c2VySGFzV3JpdGVQZXJtaXNzaW9uID0gdGhpcy5wZXJtaXNzaW9ucy5oYXNSb2xlKFBlcm1pc3Npb25zLlJPTEVfSU5WRU5UT1JZX0FETUlOKTtcblxuICAgIGlmIChPYmplY3Qua2V5cyhwYXJhbWV0ZXJzKS5sZW5ndGggPT09IDAgfHwgIXVzZXJIYXNXcml0ZVBlcm1pc3Npb24pIHtcbiAgICAgIHRoaXMuZm9ybS5kaXNhYmxlKCk7XG5cbiAgICAgIHRoaXMub3B0aW9ucy5mb3JtU3RhdGUuZGlzYWJsZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICghdXNlckhhc1dyaXRlUGVybWlzc2lvbikge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuaW5mbyh0aGlzLndyaXRlUGVybWlzc2lvbk1pc3NpbmdBbGVydC50ZXh0IGFzIHN0cmluZyk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgLy8gYWxlcnRTZXJ2aWNlIGNoZWNrcyBpZiBnaXZlbiBhbGVydCBleGlzdHMuXG4gICAgLy8gc2F2ZSB0byByZW1vdmUgaXQgd2l0aG91dCBhZGRpdGlvbmFsIGNoZWNrc1xuICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnJlbW92ZSh0aGlzLndyaXRlUGVybWlzc2lvbk1pc3NpbmdBbGVydCk7XG4gIH1cblxuICBkaXNhYmxlUFNLRmllbGQoXG4gICAgZm9ybVN0YXRlOiB7IGRpc2FibGVkOiBib29sZWFuOyBtYWluTW9kZWw6IEx3bTJtQm9vdHN0cmFwUGFyYW1ldGVycyB9LFxuICAgIGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZ1xuICApIHtcbiAgICBpZiAoZm9ybVN0YXRlLmRpc2FibGVkKSB7XG4gICAgICBkZWxldGUgZmllbGQudGVtcGxhdGVPcHRpb25zLmRlc2NyaXB0aW9uO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgICFmb3JtU3RhdGUubWFpbk1vZGVsLnNlY3VyaXR5TW9kZSB8fFxuICAgICAgZm9ybVN0YXRlLm1haW5Nb2RlbC5zZWN1cml0eU1vZGUgPT09IFNlY3VyaXR5TW9kZS5OT19TRUNcbiAgICApIHtcbiAgICAgIGZpZWxkLnRlbXBsYXRlT3B0aW9ucy5kZXNjcmlwdGlvbiA9IHRoaXMuRElTQUJMRURfSElOVF9URVhUO1xuICAgICAgZmllbGQuZm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShudWxsKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBkZWxldGUgZmllbGQudGVtcGxhdGVPcHRpb25zLmRlc2NyaXB0aW9uO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIHNhdmUoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMubHdtMm1Cb290c3RyYXBQYXJhbWV0ZXJzU3ZjLnVwZGF0ZSh7IC4uLnRoaXMubW9kZWwsIC4uLnsgaWQ6IHRoaXMuZGV2aWNlSWQgfSB9KTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnN1Y2Nlc3MoZ2V0dGV4dCgnQm9vdHN0cmFwIHBhcmFtZXRlcnMgdXBkYXRlZCcpKTtcbiAgICAgIC8vIGRpc2FibGVzIHNhdmUgYnV0dG9uXG4gICAgICB0aGlzLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgIHRoaXMuZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoeyAuLi5lcnJvciB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRCb290c3RyYXBQYXJhbWV0ZXJzKCk6IFByb21pc2U8THdtMm1Cb290c3RyYXBQYXJhbWV0ZXJzPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAoYXdhaXQgdGhpcy5sd20ybUJvb3RzdHJhcFBhcmFtZXRlcnNTdmMuZGV0YWlsKHRoaXMuZGV2aWNlSWQpKVxuICAgICAgICAuZGF0YSBhcyBMd20ybUJvb3RzdHJhcFBhcmFtZXRlcnM7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoeyAuLi5lcnJvciB9KTtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH1cbn1cbiIsIjxmb3JtIChuZ1N1Ym1pdCk9XCJzYXZlKClcIj5cbiAgPGRpdiBjbGFzcz1cImNhcmQgY29udGVudC1mdWxscGFnZSBmaXQtaFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBzZXBhcmF0b3IgZ3JpZF9fY29sLS1mdWxsc3BhblwiPlxuICAgICAgPGgxIGNsYXNzPVwiY2FyZC10aXRsZVwiPnt7ICdMV00yTSBib290c3RyYXAgcGFyYW1ldGVycycgfCB0cmFuc2xhdGUgfX08L2gxPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGxcIj5cbiAgICAgIDxmb3JtbHktZm9ybVxuICAgICAgICBbZm9ybV09XCJmb3JtXCJcbiAgICAgICAgW2ZpZWxkc109XCJmaWVsZHNcIlxuICAgICAgICBbbW9kZWxdPVwibW9kZWxcIlxuICAgICAgICBbb3B0aW9uc109XCJvcHRpb25zXCJcbiAgICAgID48L2Zvcm1seS1mb3JtPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIFtoaWRkZW5dPVwib3B0aW9ucy5mb3JtU3RhdGUuZGlzYWJsZWRcIlxuICAgICAgY2xhc3M9XCJjYXJkLWZvb3RlciBzZXBhcmF0b3IgZ3JpZF9fY29sLS1mdWxsc3BhbiBzdGlja3ktYm90dG9tXCJcbiAgICA+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHRpdGxlPVwie3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZCB8fCAhZm9ybS5kaXJ0eVwiXG4gICAgICA+XG4gICAgICAgIHt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9mb3JtPlxuIl19
|
package/esm2020/protocol-lwm2m/components/configuration/typed-forms/form-wrapper-base.component.mjs
CHANGED
|
@@ -29,7 +29,7 @@ export class Lwm2mFormWrapperBase {
|
|
|
29
29
|
};
|
|
30
30
|
this.fields = this.createForm();
|
|
31
31
|
inject(FormlyFormBuilder)?.buildForm(this.form, this.fields, this.model, this.options);
|
|
32
|
-
if (!inject(Permissions)?.hasRole(
|
|
32
|
+
if (!inject(Permissions)?.hasRole(Permissions.ROLE_INVENTORY_ADMIN)) {
|
|
33
33
|
this.alertService = inject(AlertService);
|
|
34
34
|
this.alertService.info(permissionAlert.text);
|
|
35
35
|
this.form.disable();
|
|
@@ -57,4 +57,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
|
|
|
57
57
|
type: Component,
|
|
58
58
|
args: [{ imports: [CoreModule, Lwm2mUIThemeModule], standalone: true, template: "<formly-form\n *ngIf=\"fields?.length > 0; else empty\"\n [model]=\"model\"\n [form]=\"form\"\n [fields]=\"fields\"\n [options]=\"options\"\n data-cy=\"lwm2m-device-configuration--formly-form\"\n></formly-form>\n<ng-template #empty>\n <c8y-ui-empty-state\n [icon]=\"'c8y-device-protocols'\"\n title=\"{{ 'No configuration selected' | translate }}\"\n subtitle=\"{{ 'Select a configuration on the left' | translate }}\"\n ></c8y-ui-empty-state>\n</ng-template>\n" }]
|
|
59
59
|
}], ctorParameters: function () { return [{ type: i1.Lwm2mConfigurationService }]; } });
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS13cmFwcGVyLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvdG9jb2wtbHdtMm0vY29tcG9uZW50cy9jb25maWd1cmF0aW9uL3R5cGVkLWZvcm1zL2Zvcm0td3JhcHBlci1iYXNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb3RvY29sLWx3bTJtL2NvbXBvbmVudHMvY29uZmlndXJhdGlvbi90eXBlZC1mb3Jtcy9mb3JtLXdyYXBwZXItYmFzZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDL0UsT0FBTyxFQUFxQixpQkFBaUIsRUFBcUIsTUFBTSxrQkFBa0IsQ0FBQztBQUMzRixPQUFPLEVBQVksZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDckYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7Ozs7QUFPeEYsTUFBTSxPQUFnQixvQkFBb0I7SUFheEMsWUFBc0IsT0FBcUM7UUFBckMsWUFBTyxHQUFQLE9BQU8sQ0FBOEI7UUFWakQsYUFBUSxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRWxELFVBQUssR0FBRyxFQUFPLENBQUM7UUFDaEIsU0FBSSxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLFdBQU0sR0FBd0IsRUFBRSxDQUFDO1FBQ2pDLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixZQUFPLEdBQXNCO1lBQzNCLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7U0FDL0IsQ0FBQztRQWtDRixXQUFNLEdBQUcsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQUM7UUFsQ0EsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFaEMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV2RixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsRUFBRTtZQUNuRSxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBYyxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQztJQUlELFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzdGLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7O2lIQTNDbUIsb0JBQW9CO3FHQUFwQixvQkFBb0Isd0VDZjFDLGdlQWVBLDJDREhZLFVBQVUsMmRBQUUsa0JBQWtCOzJGQUdwQixvQkFBb0I7a0JBTHpDLFNBQVM7OEJBRUMsQ0FBQyxVQUFVLEVBQUUsa0JBQWtCLENBQUMsY0FDN0IsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBDb3JlTW9kdWxlLCBQZXJtaXNzaW9ucyB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTHdtMm1VSVRoZW1lTW9kdWxlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9wcm90b2NvbC1sd20ybS9mb3JtbHknO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcsIEZvcm1seUZvcm1CdWlsZGVyLCBGb3JtbHlGb3JtT3B0aW9ucyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgRW5kcG9pbnQsIHBlcm1pc3Npb25BbGVydCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvcHJvdG9jb2wtbHdtMm0vbW9kZWwnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTHdtMm1Db25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvcHJvdG9jb2wtbHdtMm0vc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0td3JhcHBlci1iYXNlLmNvbXBvbmVudC5odG1sJyxcbiAgaW1wb3J0czogW0NvcmVNb2R1bGUsIEx3bTJtVUlUaGVtZU1vZHVsZV0sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTHdtMm1Gb3JtV3JhcHBlckJhc2U8VD4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2U7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBlbmRwb2ludDogRW5kcG9pbnQ7XG4gIHByb3RlY3RlZCBkZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgbW9kZWwgPSB7fSBhcyBUO1xuICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIGZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSA9IFtdO1xuICBidXR0b25zID0ge307XG4gIG9wdGlvbnM6IEZvcm1seUZvcm1PcHRpb25zID0ge1xuICAgIGZvcm1TdGF0ZTogeyBkaXNhYmxlZDogZmFsc2UgfVxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzZXJ2aWNlOiBMd20ybUNvbmZpZ3VyYXRpb25TZXJ2aWNlPFQ+KSB7XG4gICAgdGhpcy5maWVsZHMgPSB0aGlzLmNyZWF0ZUZvcm0oKTtcblxuICAgIGluamVjdChGb3JtbHlGb3JtQnVpbGRlcik/LmJ1aWxkRm9ybSh0aGlzLmZvcm0sIHRoaXMuZmllbGRzLCB0aGlzLm1vZGVsLCB0aGlzLm9wdGlvbnMpO1xuXG4gICAgaWYgKCFpbmplY3QoUGVybWlzc2lvbnMpPy5oYXNSb2xlKFBlcm1pc3Npb25zLlJPTEVfSU5WRU5UT1JZX0FETUlOKSkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UgPSBpbmplY3QoQWxlcnRTZXJ2aWNlKTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmluZm8ocGVybWlzc2lvbkFsZXJ0LnRleHQgYXMgc3RyaW5nKTtcbiAgICAgIHRoaXMuZm9ybS5kaXNhYmxlKCk7XG4gICAgICB0aGlzLm9wdGlvbnMuZm9ybVN0YXRlLmRpc2FibGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBhYnN0cmFjdCBjcmVhdGVGb3JtKCk6IEZvcm1seUZpZWxkQ29uZmlnW107XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXJ2aWNlLnNldHRpbmdzJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKG5leHQgPT4gKHRoaXMubW9kZWwgPSBuZXh0KSk7XG4gICAgdGhpcy5zZXJ2aWNlLmdldFNldHRpbmdzRm9yKHsgZW5kcG9pbnQ6IHRoaXMuZW5kcG9pbnQgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmFsZXJ0U2VydmljZT8ucmVtb3ZlKHBlcm1pc3Npb25BbGVydCk7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgc2F2ZSgpIHtcbiAgICB0aGlzLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcbiAgICB0aGlzLmZvcm0ubWFya0FzVW50b3VjaGVkKCk7XG4gICAgdGhpcy5zZXJ2aWNlLnVwZGF0ZUNvbmZpZyh0aGlzLm1vZGVsLCB0aGlzLmVuZHBvaW50KTtcbiAgfVxuXG4gIGNhbmNlbCA9ICgpID0+IHtcbiAgICB0aGlzLm9wdGlvbnMucmVzZXRNb2RlbCgpO1xuICAgIHRoaXMuc2VydmljZS5nZXRTZXR0aW5nc0Zvcih7IGVuZHBvaW50OiB0aGlzLmVuZHBvaW50IH0pO1xuICB9O1xufVxuIiwiPGZvcm1seS1mb3JtXG4gICpuZ0lmPVwiZmllbGRzPy5sZW5ndGggPiAwOyBlbHNlIGVtcHR5XCJcbiAgW21vZGVsXT1cIm1vZGVsXCJcbiAgW2Zvcm1dPVwiZm9ybVwiXG4gIFtmaWVsZHNdPVwiZmllbGRzXCJcbiAgW29wdGlvbnNdPVwib3B0aW9uc1wiXG4gIGRhdGEtY3k9XCJsd20ybS1kZXZpY2UtY29uZmlndXJhdGlvbi0tZm9ybWx5LWZvcm1cIlxuPjwvZm9ybWx5LWZvcm0+XG48bmctdGVtcGxhdGUgI2VtcHR5PlxuICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgW2ljb25dPVwiJ2M4eS1kZXZpY2UtcHJvdG9jb2xzJ1wiXG4gICAgdGl0bGU9XCJ7eyAnTm8gY29uZmlndXJhdGlvbiBzZWxlY3RlZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIHN1YnRpdGxlPVwie3sgJ1NlbGVjdCBhIGNvbmZpZ3VyYXRpb24gb24gdGhlIGxlZnQnIHwgdHJhbnNsYXRlIH19XCJcbiAgPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|