@smarterplan/ngx-smarterplan-core 1.2.45 → 1.2.47
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/README.md +24 -24
- package/esm2020/lib/components/csv-export/csv-export.component.mjs +59 -59
- package/esm2020/lib/components/loader/loader.component.mjs +23 -23
- package/esm2020/lib/components/menu-bar/avatar/avatar.component.mjs +80 -80
- package/esm2020/lib/components/menu-bar/menu-bar.component.mjs +99 -99
- package/esm2020/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +384 -384
- package/esm2020/lib/components/menu-bar/range-date-picker/range-date-picker.component.mjs +147 -147
- package/esm2020/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +40 -40
- package/esm2020/lib/components/search-bar/search-bar.component.mjs +63 -63
- package/esm2020/lib/components/support-modal/support-modal.component.mjs +66 -66
- package/esm2020/lib/config.mjs +4 -4
- package/esm2020/lib/helpers.service.mjs +470 -470
- package/esm2020/lib/matterport-extensions/hsl-loader/HlsLoader.mjs +69 -69
- package/esm2020/lib/matterport-extensions/nest-thermostat/CanvasImage.mjs +51 -51
- package/esm2020/lib/matterport-extensions/nest-thermostat/CanvasRenderer.mjs +61 -61
- package/esm2020/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +158 -158
- package/esm2020/lib/matterport-extensions/nest-thermostat/PlaneRenderer.mjs +85 -85
- package/esm2020/lib/matterport-extensions/scene-component/SceneComponent.mjs +128 -128
- package/esm2020/lib/matterport-extensions/security-camera/SecurityCamera.mjs +249 -249
- package/esm2020/lib/matterport-extensions/tv-player/TvPlayer.mjs +98 -98
- package/esm2020/lib/matterport-extensions/video-renderer/VideoRenderer.mjs +64 -64
- package/esm2020/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.mjs +221 -221
- package/esm2020/lib/mattertagData.mjs +165 -165
- package/esm2020/lib/ngx-smarterplan-core.module.mjs +122 -122
- package/esm2020/lib/ngx-smarterplan-core.service.mjs +14 -14
- package/esm2020/lib/pipes/duration-to-string.pipe.mjs +66 -66
- package/esm2020/lib/pipes/format-date-number-to-digits.pipe.mjs +30 -30
- package/esm2020/lib/pipes/hashtag-from-id.pipe.mjs +26 -26
- package/esm2020/lib/pipes/safe-url.pipe.mjs +20 -20
- package/esm2020/lib/pipes/time-date-to-local-string.pipe.mjs +104 -104
- package/esm2020/lib/pipes/username-from-id.pipe.mjs +29 -29
- package/esm2020/lib/services/amplify-cache.service.mjs +72 -72
- package/esm2020/lib/services/base-tab.service.mjs +24 -24
- package/esm2020/lib/services/baseVisibility.service.mjs +18 -18
- package/esm2020/lib/services/content.service.mjs +135 -135
- package/esm2020/lib/services/filter.service.mjs +599 -599
- package/esm2020/lib/services/intervention.service.mjs +236 -236
- package/esm2020/lib/services/locale.service.mjs +45 -45
- package/esm2020/lib/services/matterport-import.service.mjs +340 -340
- package/esm2020/lib/services/matterport.service.mjs +1587 -1587
- package/esm2020/lib/services/models/affectation.service.mjs +60 -60
- package/esm2020/lib/services/models/base-object.service.mjs +70 -70
- package/esm2020/lib/services/models/capture.service.mjs +34 -34
- package/esm2020/lib/services/models/comment.service.mjs +98 -98
- package/esm2020/lib/services/models/domain.service.mjs +78 -78
- package/esm2020/lib/services/models/equipment.service.mjs +683 -683
- package/esm2020/lib/services/models/event.service.mjs +128 -128
- package/esm2020/lib/services/models/feature.service.mjs +380 -380
- package/esm2020/lib/services/models/hashtag.service.mjs +38 -38
- package/esm2020/lib/services/models/layer.service.mjs +33 -33
- package/esm2020/lib/services/models/measurement.service.mjs +199 -199
- package/esm2020/lib/services/models/mission.service.mjs +206 -206
- package/esm2020/lib/services/models/navigation.service.mjs +92 -92
- package/esm2020/lib/services/models/node.service.mjs +31 -31
- package/esm2020/lib/services/models/object3D.service.mjs +364 -364
- package/esm2020/lib/services/models/operation.service.mjs +59 -59
- package/esm2020/lib/services/models/organisation.service.mjs +73 -73
- package/esm2020/lib/services/models/plan.service.mjs +799 -799
- package/esm2020/lib/services/models/poi.service.mjs +103 -103
- package/esm2020/lib/services/models/profile.service.mjs +58 -58
- package/esm2020/lib/services/models/property.service.mjs +44 -44
- package/esm2020/lib/services/models/space.service.mjs +204 -204
- package/esm2020/lib/services/models/template.service.mjs +41 -41
- package/esm2020/lib/services/models/ticket.service.mjs +526 -526
- package/esm2020/lib/services/models/visit.service.mjs +130 -130
- package/esm2020/lib/services/models/zone.service.mjs +225 -225
- package/esm2020/lib/services/navigator.service.mjs +212 -212
- package/esm2020/lib/services/s3.service.mjs +137 -137
- package/esm2020/lib/services/search.service.mjs +124 -124
- package/esm2020/lib/services/support.service.mjs +42 -42
- package/esm2020/lib/services/tag.service.mjs +111 -111
- package/esm2020/lib/services/user.service.mjs +501 -501
- package/esm2020/lib/services/validators.service.mjs +50 -50
- package/esm2020/lib/services/viewer.service.mjs +389 -389
- package/esm2020/lib/services/zone-drawer.service.mjs +76 -76
- package/esm2020/lib/services/zoneChange.service.mjs +30 -30
- package/esm2020/lib/types.service.mjs +311 -311
- package/esm2020/lib/validators/email.directive.mjs +7 -7
- package/esm2020/lib/validators/no-empty.directive.mjs +12 -12
- package/esm2020/lib/validators/number.directive.mjs +12 -12
- package/esm2020/lib/validators/text.directive.mjs +12 -12
- package/esm2020/public-api.mjs +72 -72
- package/esm2020/smarterplan-ngx-smarterplan-core.mjs +4 -4
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs +13014 -13014
- package/fesm2015/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs +12263 -12263
- package/fesm2020/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/lib/components/csv-export/csv-export.component.d.ts +18 -18
- package/lib/components/loader/loader.component.d.ts +10 -10
- package/lib/components/menu-bar/avatar/avatar.component.d.ts +21 -21
- package/lib/components/menu-bar/menu-bar.component.d.ts +38 -38
- package/lib/components/menu-bar/navigation-bar/navigation-bar.component.d.ts +73 -73
- package/lib/components/menu-bar/range-date-picker/range-date-picker.component.d.ts +35 -35
- package/lib/components/modal-switch-visit/modal-switch-visit.component.d.ts +22 -22
- package/lib/components/search-bar/search-bar.component.d.ts +16 -16
- package/lib/components/support-modal/support-modal.component.d.ts +26 -26
- package/lib/config.d.ts +22 -22
- package/lib/helpers.service.d.ts +79 -79
- package/lib/matterport-extensions/hsl-loader/HlsLoader.d.ts +26 -26
- package/lib/matterport-extensions/nest-thermostat/CanvasImage.d.ts +31 -31
- package/lib/matterport-extensions/nest-thermostat/CanvasRenderer.d.ts +37 -37
- package/lib/matterport-extensions/nest-thermostat/NestThermostat.d.ts +42 -42
- package/lib/matterport-extensions/nest-thermostat/PlaneRenderer.d.ts +46 -46
- package/lib/matterport-extensions/scene-component/SceneComponent.d.ts +388 -388
- package/lib/matterport-extensions/security-camera/SecurityCamera.d.ts +47 -47
- package/lib/matterport-extensions/tv-player/TvPlayer.d.ts +26 -26
- package/lib/matterport-extensions/video-renderer/VideoRenderer.d.ts +26 -26
- package/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.d.ts +43 -43
- package/lib/mattertagData.d.ts +70 -70
- package/lib/ngx-smarterplan-core.module.d.ts +29 -29
- package/lib/ngx-smarterplan-core.service.d.ts +6 -6
- package/lib/pipes/duration-to-string.pipe.d.ts +12 -12
- package/lib/pipes/format-date-number-to-digits.pipe.d.ts +10 -10
- package/lib/pipes/hashtag-from-id.pipe.d.ts +10 -10
- package/lib/pipes/safe-url.pipe.d.ts +10 -10
- package/lib/pipes/time-date-to-local-string.pipe.d.ts +16 -16
- package/lib/pipes/username-from-id.pipe.d.ts +11 -11
- package/lib/services/amplify-cache.service.d.ts +37 -37
- package/lib/services/base-tab.service.d.ts +10 -10
- package/lib/services/baseVisibility.service.d.ts +9 -9
- package/lib/services/content.service.d.ts +28 -28
- package/lib/services/filter.service.d.ts +60 -60
- package/lib/services/intervention.service.d.ts +25 -25
- package/lib/services/locale.service.d.ts +23 -23
- package/lib/services/matterport-import.service.d.ts +53 -53
- package/lib/services/matterport.service.d.ts +336 -336
- package/lib/services/models/affectation.service.d.ts +14 -14
- package/lib/services/models/base-object.service.d.ts +20 -20
- package/lib/services/models/capture.service.d.ts +13 -13
- package/lib/services/models/comment.service.d.ts +26 -26
- package/lib/services/models/domain.service.d.ts +19 -19
- package/lib/services/models/equipment.service.d.ts +93 -93
- package/lib/services/models/event.service.d.ts +43 -43
- package/lib/services/models/feature.service.d.ts +75 -75
- package/lib/services/models/hashtag.service.d.ts +13 -13
- package/lib/services/models/layer.service.d.ts +11 -11
- package/lib/services/models/measurement.service.d.ts +51 -51
- package/lib/services/models/mission.service.d.ts +39 -39
- package/lib/services/models/navigation.service.d.ts +29 -29
- package/lib/services/models/node.service.d.ts +12 -12
- package/lib/services/models/object3D.service.d.ts +57 -57
- package/lib/services/models/operation.service.d.ts +15 -15
- package/lib/services/models/organisation.service.d.ts +19 -19
- package/lib/services/models/plan.service.d.ts +133 -133
- package/lib/services/models/poi.service.d.ts +25 -25
- package/lib/services/models/profile.service.d.ts +16 -16
- package/lib/services/models/property.service.d.ts +13 -13
- package/lib/services/models/space.service.d.ts +46 -46
- package/lib/services/models/template.service.d.ts +15 -15
- package/lib/services/models/ticket.service.d.ts +93 -93
- package/lib/services/models/visit.service.d.ts +24 -24
- package/lib/services/models/zone.service.d.ts +50 -50
- package/lib/services/navigator.service.d.ts +61 -61
- package/lib/services/s3.service.d.ts +14 -14
- package/lib/services/search.service.d.ts +20 -20
- package/lib/services/support.service.d.ts +17 -17
- package/lib/services/tag.service.d.ts +29 -29
- package/lib/services/user.service.d.ts +118 -118
- package/lib/services/validators.service.d.ts +18 -18
- package/lib/services/viewer.service.d.ts +110 -110
- package/lib/services/zone-drawer.service.d.ts +7 -7
- package/lib/services/zoneChange.service.d.ts +17 -17
- package/lib/types.service.d.ts +842 -842
- package/lib/validators/email.directive.d.ts +2 -2
- package/lib/validators/no-empty.directive.d.ts +2 -2
- package/lib/validators/number.directive.d.ts +2 -2
- package/lib/validators/text.directive.d.ts +2 -2
- package/package.json +2 -2
- package/public-api.d.ts +64 -64
- package/smarterplan-ngx-smarterplan-core.d.ts +5 -5
|
@@ -1,225 +1,225 @@
|
|
|
1
|
-
/* eslint-disable class-methods-use-this */
|
|
2
|
-
import { Inject, Injectable } from '@angular/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../user.service";
|
|
5
|
-
export class ZoneService {
|
|
6
|
-
constructor(apiInjected, userService) {
|
|
7
|
-
this.userService = userService;
|
|
8
|
-
this.API = apiInjected;
|
|
9
|
-
}
|
|
10
|
-
async getZonesBySpace(spaceID) {
|
|
11
|
-
const list = [];
|
|
12
|
-
if (this.API.__proto__.hasOwnProperty('ZonesBySpace')) {
|
|
13
|
-
const zones = await this.API.__proto__.ZonesBySpace(spaceID);
|
|
14
|
-
if (zones) {
|
|
15
|
-
for (const zone of zones.items) {
|
|
16
|
-
const zoneObject = { ...zone };
|
|
17
|
-
zoneObject.virtual = this.zoneIsVirtual(zone);
|
|
18
|
-
list.push(zoneObject);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
return list;
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
throw new Error('ZonesBySpace not implemented');
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
async getZonesBySpaceForUser(spaceID) {
|
|
28
|
-
const missionForLocation = this.userService.currentMission(spaceID);
|
|
29
|
-
const list = [];
|
|
30
|
-
if (missionForLocation && missionForLocation.zoneID) {
|
|
31
|
-
const allowedZone = await this.getZone(missionForLocation.zoneID);
|
|
32
|
-
allowedZone.virtual = this.zoneIsVirtual(allowedZone);
|
|
33
|
-
if (!allowedZone.parent) {
|
|
34
|
-
// the whole building is authorized
|
|
35
|
-
return this.getZonesBySpace(spaceID);
|
|
36
|
-
}
|
|
37
|
-
list.push(allowedZone);
|
|
38
|
-
// allow all children zones of an allowed parent
|
|
39
|
-
const children = (await this.API.__proto__.ZonesByZone(allowedZone.id))
|
|
40
|
-
.items;
|
|
41
|
-
if (children.length > 0) {
|
|
42
|
-
for (const child of children) {
|
|
43
|
-
const childZone = { ...child };
|
|
44
|
-
childZone.virtual = this.zoneIsVirtual(child);
|
|
45
|
-
list.push(childZone);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
// allow the parent Floor of the allowed zone
|
|
49
|
-
if (allowedZone.parent.layer &&
|
|
50
|
-
allowedZone.parent.layer.name === 'FLOOR') {
|
|
51
|
-
list.push(allowedZone.parent);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
return this.getZonesBySpace(spaceID);
|
|
56
|
-
}
|
|
57
|
-
return list;
|
|
58
|
-
}
|
|
59
|
-
async filterZonesIDsForUser(zones) {
|
|
60
|
-
const { spaceID } = zones[0];
|
|
61
|
-
const zoneIDs = new Set(zones.map((zone) => zone.id));
|
|
62
|
-
const allowedZones = await this.getZonesBySpaceForUser(spaceID);
|
|
63
|
-
const filteredZones = allowedZones.filter((zone) => zoneIDs.has(zone.id));
|
|
64
|
-
return filteredZones;
|
|
65
|
-
}
|
|
66
|
-
async deleteZone(zoneID) {
|
|
67
|
-
return this.API.__proto__.DeleteZone({ id: zoneID });
|
|
68
|
-
}
|
|
69
|
-
async getZonesForSweepForSpace(sweepID, spaceID) {
|
|
70
|
-
const zonesSpace = (await this.API.__proto__.ZonesBySpace(spaceID)).items;
|
|
71
|
-
return zonesSpace.filter((zone) => zone.sweepIDs && zone.sweepIDs.includes(sweepID));
|
|
72
|
-
}
|
|
73
|
-
// // eslint-disable-next-line class-methods-use-this
|
|
74
|
-
sortZonesFromChildToParent(zonesToSort) {
|
|
75
|
-
// get default
|
|
76
|
-
const defaultZone = zonesToSort.find((z) => !z.parentID);
|
|
77
|
-
if (defaultZone) {
|
|
78
|
-
const indexOf = zonesToSort.indexOf(defaultZone);
|
|
79
|
-
zonesToSort.splice(indexOf, 1);
|
|
80
|
-
}
|
|
81
|
-
const zones = zonesToSort.sort((a, b) => {
|
|
82
|
-
if (a.parentID === b.id) {
|
|
83
|
-
return -1;
|
|
84
|
-
}
|
|
85
|
-
return 0;
|
|
86
|
-
});
|
|
87
|
-
// so far by number of navigation points in them
|
|
88
|
-
// const zones = zonesToSort.sort(
|
|
89
|
-
// (a, b) => a.navigations.items.length - b.navigations.items.length,
|
|
90
|
-
// );
|
|
91
|
-
if (defaultZone) {
|
|
92
|
-
zones.push(defaultZone);
|
|
93
|
-
}
|
|
94
|
-
return zones;
|
|
95
|
-
}
|
|
96
|
-
async getZonesForObject(object) {
|
|
97
|
-
if (object.pois.items && object.pois.items.length > 0) {
|
|
98
|
-
const [poi] = object.pois.items;
|
|
99
|
-
if (poi.matterportSweepID) {
|
|
100
|
-
const zones = await this.getZonesForSweepForSpace(poi.matterportSweepID, object.spaceID);
|
|
101
|
-
return zones;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
return null;
|
|
105
|
-
}
|
|
106
|
-
async createVirtualZone(zoneInput) {
|
|
107
|
-
zoneInput.sweepIDs = [];
|
|
108
|
-
const zone = await this.API.__proto__.CreateZone(zoneInput);
|
|
109
|
-
console.log('virtual zone created', zone);
|
|
110
|
-
return zone;
|
|
111
|
-
}
|
|
112
|
-
zoneIsVirtual(zone) {
|
|
113
|
-
if (!zone.sweepIDs) {
|
|
114
|
-
return true;
|
|
115
|
-
}
|
|
116
|
-
if ((zone.tags && zone.tags.includes('virtual')) ||
|
|
117
|
-
zone.sweepIDs.length === 0) {
|
|
118
|
-
return true;
|
|
119
|
-
}
|
|
120
|
-
return false;
|
|
121
|
-
}
|
|
122
|
-
async getModel3DForZone(zoneID) {
|
|
123
|
-
const zone = await this.API.__proto__.GetZone(zoneID);
|
|
124
|
-
if (zone.nodeIDs) {
|
|
125
|
-
const node = await this.API.__proto__.GetNode(zone.nodeIDs[0]);
|
|
126
|
-
return node.model3D;
|
|
127
|
-
}
|
|
128
|
-
return null;
|
|
129
|
-
}
|
|
130
|
-
async getZone(zoneID) {
|
|
131
|
-
return this.API.__proto__.GetZone(zoneID);
|
|
132
|
-
}
|
|
133
|
-
async getDefaultZoneForSpace(spaceID) {
|
|
134
|
-
return this.getZonesBySpace(spaceID).then(async (zones) => {
|
|
135
|
-
const zonesBuilding = zones.filter((zone) => zone.layer && zone.layer.name === 'BUILDING');
|
|
136
|
-
if (zonesBuilding.length === 1) {
|
|
137
|
-
return zonesBuilding[0];
|
|
138
|
-
}
|
|
139
|
-
const parentZone = zones.find((zone) => !zone.parentID);
|
|
140
|
-
return parentZone;
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
async create(input) {
|
|
144
|
-
return this.API.__proto__.CreateZone(input);
|
|
145
|
-
}
|
|
146
|
-
// async getSortedZonesForSweepForUser(
|
|
147
|
-
// sweep: string,
|
|
148
|
-
// spaceID: string,
|
|
149
|
-
// ): Promise<Zone[]> {
|
|
150
|
-
// if (!spaceID) {
|
|
151
|
-
// return [];
|
|
152
|
-
// }
|
|
153
|
-
// const zones = await this.getZonesForSweepForSpace(sweep, spaceID);
|
|
154
|
-
// if (zones.length === 0) {
|
|
155
|
-
// return [];
|
|
156
|
-
// }
|
|
157
|
-
// const filteredZones = await this.filterZonesIDsForUser(zones);
|
|
158
|
-
// if (filteredZones.length > 0) {
|
|
159
|
-
// let zonesSorted = this.sortZonesFromChildToParent(filteredZones);
|
|
160
|
-
// zonesSorted = zonesSorted.filter((zone) => zone !== undefined);
|
|
161
|
-
// return zonesSorted;
|
|
162
|
-
// }
|
|
163
|
-
// return [];
|
|
164
|
-
// }
|
|
165
|
-
async updateZone(input) {
|
|
166
|
-
return this.API.__proto__.UpdateZone(input);
|
|
167
|
-
}
|
|
168
|
-
async getZonesForNodeForSpace(nodeID, spaceID) {
|
|
169
|
-
return this.API.__proto__.ZonesBySpace(spaceID).then(async (zones) => {
|
|
170
|
-
const filteredZones = zones.items.filter((zone) => zone.nodeIDs && zone.nodeIDs.includes(nodeID));
|
|
171
|
-
return filteredZones;
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Gets the Zone (layer FLOOR) for a matterport sweep ID in a given Space
|
|
176
|
-
* @param sweepID
|
|
177
|
-
* @param spaceID
|
|
178
|
-
* @returns Zone
|
|
179
|
-
*/
|
|
180
|
-
async getFloorZoneForSweepInSpace(sweepID, spaceID) {
|
|
181
|
-
const zones = await this.getZonesForSweepForSpace(sweepID, spaceID);
|
|
182
|
-
const floors = zones.filter((zone) => zone.layer && zone.layer.name.includes('FLOOR'));
|
|
183
|
-
return floors.length > 0 ? floors[0] : null;
|
|
184
|
-
}
|
|
185
|
-
/**
|
|
186
|
-
* Get zones with audio track for entire space
|
|
187
|
-
* @param spaceID
|
|
188
|
-
* @returns Promise<Zone[]>
|
|
189
|
-
*/
|
|
190
|
-
async getAudioZonesForSpace(spaceID) {
|
|
191
|
-
const allZones = await this.getZonesBySpace(spaceID);
|
|
192
|
-
return allZones.filter((zone) => zone.audioID);
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Get audio zones for user (within allowed zones)
|
|
196
|
-
* @param spaceID
|
|
197
|
-
* @returns Promise<Zone[]>
|
|
198
|
-
*/
|
|
199
|
-
async getAudioZonesForUserForSpace(spaceID) {
|
|
200
|
-
const userZones = await this.getZonesBySpaceForUser(spaceID);
|
|
201
|
-
return userZones.filter((zone) => zone.audioID);
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Get Zones by Parent Zone ID
|
|
205
|
-
* @param parentZoneID string
|
|
206
|
-
* @returns Promise<Zone[]>
|
|
207
|
-
*/
|
|
208
|
-
async getZonesByParentZone(parentZoneID) {
|
|
209
|
-
return this.API.__proto__
|
|
210
|
-
.ZonesByZone(parentZoneID)
|
|
211
|
-
.then((res) => res.items);
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
ZoneService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ZoneService, deps: [{ token: 'currentAPIService' }, { token: i1.BaseUserService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
215
|
-
ZoneService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ZoneService, providedIn: 'root' });
|
|
216
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ZoneService, decorators: [{
|
|
217
|
-
type: Injectable,
|
|
218
|
-
args: [{
|
|
219
|
-
providedIn: 'root',
|
|
220
|
-
}]
|
|
221
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
222
|
-
type: Inject,
|
|
223
|
-
args: ['currentAPIService']
|
|
224
|
-
}] }, { type: i1.BaseUserService }]; } });
|
|
225
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvem9uZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBT25ELE1BQU0sT0FBTyxXQUFXO0lBR3RCLFlBQytCLFdBQWdCLEVBQ3JDLFdBQTRCO1FBQTVCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUVwQyxJQUFJLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQztJQUN6QixDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxPQUFlO1FBQ25DLE1BQU0sSUFBSSxHQUFXLEVBQUUsQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUNyRCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM3RCxJQUFJLEtBQUssRUFBRTtnQkFDVCxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUU7b0JBQzlCLE1BQU0sVUFBVSxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQVUsQ0FBQztvQkFDdkMsVUFBVSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUN2QjthQUNGO1lBQ0QsT0FBTyxJQUFJLENBQUM7U0FDYjthQUFNO1lBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1NBQ2pEO0lBQ0gsQ0FBQztJQUVE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QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzlDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLHFCQUFxQixDQUFDLE9BQWU7UUFDekMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLDRCQUE0QixDQUFDLE9BQWU7UUFDaEQsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0QsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsb0JBQW9CLENBQUMsWUFBb0I7UUFDN0MsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVM7YUFDdEIsV0FBVyxDQUFDLFlBQVksQ0FBQzthQUN6QixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDOzt3R0E3UFUsV0FBVyxrQkFJWixtQkFBbUI7NEdBSmxCLFdBQVcsY0FGVixNQUFNOzJGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFLSSxNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMgKi9cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGJPYmplY3RUeXBlLCBab25lIH0gZnJvbSAnLi4vLi4vdHlwZXMuc2VydmljZSc7XG5pbXBvcnQgeyBCYXNlVXNlclNlcnZpY2UgfSBmcm9tICcuLi91c2VyLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgWm9uZVNlcnZpY2Uge1xuICBBUEk6IGFueTsgLy9BV1MgQVBJU2VydmljZVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBCYXNlVXNlclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5BUEkgPSBhcGlJbmplY3RlZDtcbiAgfVxuXG4gIGFzeW5jIGdldFpvbmVzQnlTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPEFycmF5PFpvbmU+PiB7XG4gICAgY29uc3QgbGlzdDogWm9uZVtdID0gW107XG4gICAgaWYgKHRoaXMuQVBJLl9fcHJvdG9fXy5oYXNPd25Qcm9wZXJ0eSgnWm9uZXNCeVNwYWNlJykpIHtcbiAgICAgIGNvbnN0IHpvbmVzID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLlpvbmVzQnlTcGFjZShzcGFjZUlEKTtcbiAgICAgIGlmICh6b25lcykge1xuICAgICAgICBmb3IgKGNvbnN0IHpvbmUgb2Ygem9uZXMuaXRlbXMpIHtcbiAgICAgICAgICBjb25zdCB6b25lT2JqZWN0ID0geyAuLi56b25lIH0gYXMgWm9uZTtcbiAgICAgICAgICB6b25lT2JqZWN0LnZpcnR1YWwgPSB0aGlzLnpvbmVJc1ZpcnR1YWwoem9uZSk7XG4gICAgICAgICAgbGlzdC5wdXNoKHpvbmVPYmplY3QpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbGlzdDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdab25lc0J5U3BhY2Ugbm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0Wm9uZXNCeVNwYWNlRm9yVXNlcihzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFpvbmVbXT4ge1xuICAgIGNvbnN0IG1pc3Npb25Gb3JMb2NhdGlvbiA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb24oc3BhY2VJRCk7XG4gICAgY29uc3QgbGlzdCA9IFtdO1xuICAgIGlmIChtaXNzaW9uRm9yTG9jYXRpb24gJiYgbWlzc2lvbkZvckxvY2F0aW9uLnpvbmVJRCkge1xuICAgICAgY29uc3QgYWxsb3dlZFpvbmUgPSBhd2FpdCB0aGlzLmdldFpvbmUobWlzc2lvbkZvckxvY2F0aW9uLnpvbmVJRCk7XG4gICAgICBhbGxvd2VkWm9uZS52aXJ0dWFsID0gdGhpcy56b25lSXNWaXJ0dWFsKGFsbG93ZWRab25lKTtcbiAgICAgIGlmICghYWxsb3dlZFpvbmUucGFyZW50KSB7XG4gICAgICAgIC8vIHRoZSB3aG9sZSBidWlsZGluZyBpcyBhdXRob3JpemVkXG4gICAgICAgIHJldHVybiB0aGlzLmdldFpvbmVzQnlTcGFjZShzcGFjZUlEKTtcbiAgICAgIH1cbiAgICAgIGxpc3QucHVzaChhbGxvd2VkWm9uZSk7XG4gICAgICAvLyBhbGxvdyBhbGwgY2hpbGRyZW4gem9uZXMgb2YgYW4gYWxsb3dlZCBwYXJlbnRcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gKGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5ab25lc0J5Wm9uZShhbGxvd2VkWm9uZS5pZCkpXG4gICAgICAgIC5pdGVtcztcbiAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgICAgICBjb25zdCBjaGlsZFpvbmUgPSB7IC4uLmNoaWxkIH0gYXMgWm9uZTtcbiAgICAgICAgICBjaGlsZFpvbmUudmlydHVhbCA9IHRoaXMuem9uZUlzVmlydHVhbChjaGlsZCk7XG4gICAgICAgICAgbGlzdC5wdXNoKGNoaWxkWm9uZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIGFsbG93IHRoZSBwYXJlbnQgRmxvb3Igb2YgdGhlIGFsbG93ZWQgem9uZVxuICAgICAgaWYgKFxuICAgICAgICBhbGxvd2VkWm9uZS5wYXJlbnQubGF5ZXIgJiZcbiAgICAgICAgYWxsb3dlZFpvbmUucGFyZW50LmxheWVyLm5hbWUgPT09ICdGTE9PUidcbiAgICAgICkge1xuICAgICAgICBsaXN0LnB1c2goYWxsb3dlZFpvbmUucGFyZW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Wm9uZXNCeVNwYWNlKHNwYWNlSUQpO1xuICAgIH1cbiAgICByZXR1cm4gbGlzdDtcbiAgfVxuXG4gIGFzeW5jIGZpbHRlclpvbmVzSURzRm9yVXNlcih6b25lczogWm9uZVtdKTogUHJvbWlzZTxab25lW10+IHtcbiAgICBjb25zdCB7IHNwYWNlSUQgfSA9IHpvbmVzWzBdO1xuICAgIGNvbnN0IHpvbmVJRHMgPSBuZXcgU2V0KHpvbmVzLm1hcCgoem9uZSkgPT4gem9uZS5pZCkpO1xuICAgIGNvbnN0IGFsbG93ZWRab25lcyA9IGF3YWl0IHRoaXMuZ2V0Wm9uZXNCeVNwYWNlRm9yVXNlcihzcGFjZUlEKTtcbiAgICBjb25zdCBmaWx0ZXJlZFpvbmVzID0gYWxsb3dlZFpvbmVzLmZpbHRlcigoem9uZSkgPT4gem9uZUlEcy5oYXMoem9uZS5pZCkpO1xuICAgIHJldHVybiBmaWx0ZXJlZFpvbmVzO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlWm9uZSh6b25lSUQ6IHN0cmluZyk6IFByb21pc2U8Wm9uZT4ge1xuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlWm9uZSh7IGlkOiB6b25lSUQgfSk7XG4gIH1cblxuICBhc3luYyBnZXRab25lc0ZvclN3ZWVwRm9yU3BhY2UoXG4gICAgc3dlZXBJRDogc3RyaW5nLFxuICAgIHNwYWNlSUQ6IHN0cmluZ1xuICApOiBQcm9taXNlPFpvbmVbXT4ge1xuICAgIGNvbnN0IHpvbmVzU3BhY2UgPSAoYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLlpvbmVzQnlTcGFjZShzcGFjZUlEKSkuaXRlbXM7XG4gICAgcmV0dXJuIHpvbmVzU3BhY2UuZmlsdGVyKFxuICAgICAgKHpvbmUpID0+IHpvbmUuc3dlZXBJRHMgJiYgem9uZS5zd2VlcElEcy5pbmNsdWRlcyhzd2VlcElEKVxuICAgICk7XG4gIH1cblxuICAvLyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuICBzb3J0Wm9uZXNGcm9tQ2hpbGRUb1BhcmVudCh6b25lc1RvU29ydDogWm9uZVtdKSB7XG4gICAgLy8gZ2V0IGRlZmF1bHRcbiAgICBjb25zdCBkZWZhdWx0Wm9uZSA9IHpvbmVzVG9Tb3J0LmZpbmQoKHopID0+ICF6LnBhcmVudElEKTtcbiAgICBpZiAoZGVmYXVsdFpvbmUpIHtcbiAgICAgIGNvbnN0IGluZGV4T2YgPSB6b25lc1RvU29ydC5pbmRleE9mKGRlZmF1bHRab25lKTtcbiAgICAgIHpvbmVzVG9Tb3J0LnNwbGljZShpbmRleE9mLCAxKTtcbiAgICB9XG4gICAgY29uc3Qgem9uZXMgPSB6b25lc1RvU29ydC5zb3J0KChhLCBiKSA9PiB7XG4gICAgICBpZiAoYS5wYXJlbnRJRCA9PT0gYi5pZCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgICByZXR1cm4gMDtcbiAgICB9KTtcbiAgICAvLyBzbyBmYXIgYnkgbnVtYmVyIG9mIG5hdmlnYXRpb24gcG9pbnRzIGluIHRoZW1cbiAgICAvLyBjb25zdCB6b25lcyA9IHpvbmVzVG9Tb3J0LnNvcnQoXG4gICAgLy8gICAgIChhLCBiKSA9PiBhLm5hdmlnYXRpb25zLml0ZW1zLmxlbmd0aCAtIGIubmF2aWdhdGlvbnMuaXRlbXMubGVuZ3RoLFxuICAgIC8vICk7XG4gICAgaWYgKGRlZmF1bHRab25lKSB7XG4gICAgICB6b25lcy5wdXNoKGRlZmF1bHRab25lKTtcbiAgICB9XG4gICAgcmV0dXJuIHpvbmVzO1xuICB9XG5cbiAgYXN5bmMgZ2V0Wm9uZXNGb3JPYmplY3Qob2JqZWN0OiBEYk9iamVjdFR5cGUpOiBQcm9taXNlPFpvbmVbXT4ge1xuICAgIGlmIChvYmplY3QucG9pcy5pdGVtcyAmJiBvYmplY3QucG9pcy5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBbcG9pXSA9IG9iamVjdC5wb2lzLml0ZW1zO1xuICAgICAgaWYgKHBvaS5tYXR0ZXJwb3J0U3dlZXBJRCkge1xuICAgICAgICBjb25zdCB6b25lcyA9IGF3YWl0IHRoaXMuZ2V0Wm9uZXNGb3JTd2VlcEZvclNwYWNlKFxuICAgICAgICAgIHBvaS5tYXR0ZXJwb3J0U3dlZXBJRCxcbiAgICAgICAgICBvYmplY3Quc3BhY2VJRFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gem9uZXM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlVmlydHVhbFpvbmUoem9uZUlucHV0OiBab25lKTogUHJvbWlzZTxab25lPiB7XG4gICAgem9uZUlucHV0LnN3ZWVwSURzID0gW107XG4gICAgY29uc3Qgem9uZSA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVab25lKHpvbmVJbnB1dCk7XG4gICAgY29uc29sZS5sb2coJ3ZpcnR1YWwgem9uZSBjcmVhdGVkJywgem9uZSk7XG4gICAgcmV0dXJuIHpvbmU7XG4gIH1cblxuICB6b25lSXNWaXJ0dWFsKHpvbmU6IFpvbmUpOiBib29sZWFuIHtcbiAgICBpZiAoIXpvbmUuc3dlZXBJRHMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAoem9uZS50YWdzICYmIHpvbmUudGFncy5pbmNsdWRlcygndmlydHVhbCcpKSB8fFxuICAgICAgem9uZS5zd2VlcElEcy5sZW5ndGggPT09IDBcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBhc3luYyBnZXRNb2RlbDNERm9yWm9uZSh6b25lSUQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3Qgem9uZSA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5HZXRab25lKHpvbmVJRCk7XG4gICAgaWYgKHpvbmUubm9kZUlEcykge1xuICAgICAgY29uc3Qgbm9kZSA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5HZXROb2RlKHpvbmUubm9kZUlEc1swXSk7XG4gICAgICByZXR1cm4gbm9kZS5tb2RlbDNEO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIGdldFpvbmUoem9uZUlEOiBzdHJpbmcpOiBQcm9taXNlPFpvbmU+IHtcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkdldFpvbmUoem9uZUlEKTtcbiAgfVxuXG4gIGFzeW5jIGdldERlZmF1bHRab25lRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxab25lPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Wm9uZXNCeVNwYWNlKHNwYWNlSUQpLnRoZW4oYXN5bmMgKHpvbmVzKSA9PiB7XG4gICAgICBjb25zdCB6b25lc0J1aWxkaW5nID0gem9uZXMuZmlsdGVyKFxuICAgICAgICAoem9uZSkgPT4gem9uZS5sYXllciAmJiB6b25lLmxheWVyLm5hbWUgPT09ICdCVUlMRElORydcbiAgICAgICk7XG4gICAgICBpZiAoem9uZXNCdWlsZGluZy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHpvbmVzQnVpbGRpbmdbMF07XG4gICAgICB9XG4gICAgICBjb25zdCBwYXJlbnRab25lID0gem9uZXMuZmluZCgoem9uZSkgPT4gIXpvbmUucGFyZW50SUQpO1xuICAgICAgcmV0dXJuIHBhcmVudFpvbmU7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBjcmVhdGUoaW5wdXQ6IFpvbmUpOiBQcm9taXNlPFpvbmU+IHtcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZVpvbmUoaW5wdXQpO1xuICB9XG5cbiAgLy8gYXN5bmMgZ2V0U29ydGVkWm9uZXNGb3JTd2VlcEZvclVzZXIoXG4gIC8vICAgICBzd2VlcDogc3RyaW5nLFxuICAvLyAgICAgc3BhY2VJRDogc3RyaW5nLFxuICAvLyApOiBQcm9taXNlPFpvbmVbXT4ge1xuICAvLyAgICAgaWYgKCFzcGFjZUlEKSB7XG4gIC8vICAgICAgICAgcmV0dXJuIFtdO1xuICAvLyAgICAgfVxuICAvLyAgICAgY29uc3Qgem9uZXMgPSBhd2FpdCB0aGlzLmdldFpvbmVzRm9yU3dlZXBGb3JTcGFjZShzd2VlcCwgc3BhY2VJRCk7XG4gIC8vICAgICBpZiAoem9uZXMubGVuZ3RoID09PSAwKSB7XG4gIC8vICAgICAgICAgcmV0dXJuIFtdO1xuICAvLyAgICAgfVxuICAvLyAgICAgY29uc3QgZmlsdGVyZWRab25lcyA9IGF3YWl0IHRoaXMuZmlsdGVyWm9uZXNJRHNGb3JVc2VyKHpvbmVzKTtcbiAgLy8gICAgIGlmIChmaWx0ZXJlZFpvbmVzLmxlbmd0aCA+IDApIHtcbiAgLy8gICAgICAgICBsZXQgem9uZXNTb3J0ZWQgPSB0aGlzLnNvcnRab25lc0Zyb21DaGlsZFRvUGFyZW50KGZpbHRlcmVkWm9uZXMpO1xuICAvLyAgICAgICAgIHpvbmVzU29ydGVkID0gem9uZXNTb3J0ZWQuZmlsdGVyKCh6b25lKSA9PiB6b25lICE9PSB1bmRlZmluZWQpO1xuICAvLyAgICAgICAgIHJldHVybiB6b25lc1NvcnRlZDtcbiAgLy8gICAgIH1cbiAgLy8gICAgIHJldHVybiBbXTtcbiAgLy8gfVxuXG4gIGFzeW5jIHVwZGF0ZVpvbmUoaW5wdXQ6IGFueSk6IFByb21pc2U8Wm9uZT4ge1xuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uVXBkYXRlWm9uZShpbnB1dCk7XG4gIH1cblxuICBhc3luYyBnZXRab25lc0Zvck5vZGVGb3JTcGFjZShcbiAgICBub2RlSUQ6IHN0cmluZyxcbiAgICBzcGFjZUlEOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxab25lW10+IHtcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLlpvbmVzQnlTcGFjZShzcGFjZUlEKS50aGVuKGFzeW5jICh6b25lcykgPT4ge1xuICAgICAgY29uc3QgZmlsdGVyZWRab25lcyA9IHpvbmVzLml0ZW1zLmZpbHRlcihcbiAgICAgICAgKHpvbmUpID0+IHpvbmUubm9kZUlEcyAmJiB6b25lLm5vZGVJRHMuaW5jbHVkZXMobm9kZUlEKVxuICAgICAgKTtcbiAgICAgIHJldHVybiBmaWx0ZXJlZFpvbmVzO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIFpvbmUgKGxheWVyIEZMT09SKSBmb3IgYSBtYXR0ZXJwb3J0IHN3ZWVwIElEIGluIGEgZ2l2ZW4gU3BhY2VcbiAgICogQHBhcmFtIHN3ZWVwSURcbiAgICogQHBhcmFtIHNwYWNlSURcbiAgICogQHJldHVybnMgWm9uZVxuICAgKi9cbiAgYXN5bmMgZ2V0Rmxvb3Jab25lRm9yU3dlZXBJblNwYWNlKFxuICAgIHN3ZWVwSUQ6IHN0cmluZyxcbiAgICBzcGFjZUlEOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxab25lPiB7XG4gICAgY29uc3Qgem9uZXMgPSBhd2FpdCB0aGlzLmdldFpvbmVzRm9yU3dlZXBGb3JTcGFjZShzd2VlcElELCBzcGFjZUlEKTtcbiAgICBjb25zdCBmbG9vcnMgPSB6b25lcy5maWx0ZXIoXG4gICAgICAoem9uZSkgPT4gem9uZS5sYXllciAmJiB6b25lLmxheWVyLm5hbWUuaW5jbHVkZXMoJ0ZMT09SJylcbiAgICApO1xuICAgIHJldHVybiBmbG9vcnMubGVuZ3RoID4gMCA/IGZsb29yc1swXSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHpvbmVzIHdpdGggYXVkaW8gdHJhY2sgZm9yIGVudGlyZSBzcGFjZVxuICAgKiBAcGFyYW0gc3BhY2VJRFxuICAgKiBAcmV0dXJucyAgUHJvbWlzZTxab25lW10+XG4gICAqL1xuICBhc3luYyBnZXRBdWRpb1pvbmVzRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxab25lW10+IHtcbiAgICBjb25zdCBhbGxab25lcyA9IGF3YWl0IHRoaXMuZ2V0Wm9uZXNCeVNwYWNlKHNwYWNlSUQpO1xuICAgIHJldHVybiBhbGxab25lcy5maWx0ZXIoKHpvbmUpID0+IHpvbmUuYXVkaW9JRCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGF1ZGlvIHpvbmVzIGZvciB1c2VyICh3aXRoaW4gYWxsb3dlZCB6b25lcylcbiAgICogQHBhcmFtIHNwYWNlSURcbiAgICogQHJldHVybnMgIFByb21pc2U8Wm9uZVtdPlxuICAgKi9cbiAgYXN5bmMgZ2V0QXVkaW9ab25lc0ZvclVzZXJGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFpvbmVbXT4ge1xuICAgIGNvbnN0IHVzZXJab25lcyA9IGF3YWl0IHRoaXMuZ2V0Wm9uZXNCeVNwYWNlRm9yVXNlcihzcGFjZUlEKTtcbiAgICByZXR1cm4gdXNlclpvbmVzLmZpbHRlcigoem9uZSkgPT4gem9uZS5hdWRpb0lEKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgWm9uZXMgYnkgUGFyZW50IFpvbmUgSURcbiAgICogQHBhcmFtIHBhcmVudFpvbmVJRCBzdHJpbmdcbiAgICogQHJldHVybnMgUHJvbWlzZTxab25lW10+XG4gICAqL1xuICBhc3luYyBnZXRab25lc0J5UGFyZW50Wm9uZShwYXJlbnRab25lSUQ6IHN0cmluZyk6IFByb21pc2U8Wm9uZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fX1xuICAgICAgLlpvbmVzQnlab25lKHBhcmVudFpvbmVJRClcbiAgICAgIC50aGVuKChyZXMpID0+IHJlcy5pdGVtcyk7XG4gIH1cbn1cbiJdfQ==
|
|
1
|
+
/* eslint-disable class-methods-use-this */
|
|
2
|
+
import { Inject, Injectable } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../user.service";
|
|
5
|
+
export class ZoneService {
|
|
6
|
+
constructor(apiInjected, userService) {
|
|
7
|
+
this.userService = userService;
|
|
8
|
+
this.API = apiInjected;
|
|
9
|
+
}
|
|
10
|
+
async getZonesBySpace(spaceID) {
|
|
11
|
+
const list = [];
|
|
12
|
+
if (this.API.__proto__.hasOwnProperty('ZonesBySpace')) {
|
|
13
|
+
const zones = await this.API.__proto__.ZonesBySpace(spaceID);
|
|
14
|
+
if (zones) {
|
|
15
|
+
for (const zone of zones.items) {
|
|
16
|
+
const zoneObject = { ...zone };
|
|
17
|
+
zoneObject.virtual = this.zoneIsVirtual(zone);
|
|
18
|
+
list.push(zoneObject);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return list;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
throw new Error('ZonesBySpace not implemented');
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async getZonesBySpaceForUser(spaceID) {
|
|
28
|
+
const missionForLocation = this.userService.currentMission(spaceID);
|
|
29
|
+
const list = [];
|
|
30
|
+
if (missionForLocation && missionForLocation.zoneID) {
|
|
31
|
+
const allowedZone = await this.getZone(missionForLocation.zoneID);
|
|
32
|
+
allowedZone.virtual = this.zoneIsVirtual(allowedZone);
|
|
33
|
+
if (!allowedZone.parent) {
|
|
34
|
+
// the whole building is authorized
|
|
35
|
+
return this.getZonesBySpace(spaceID);
|
|
36
|
+
}
|
|
37
|
+
list.push(allowedZone);
|
|
38
|
+
// allow all children zones of an allowed parent
|
|
39
|
+
const children = (await this.API.__proto__.ZonesByZone(allowedZone.id))
|
|
40
|
+
.items;
|
|
41
|
+
if (children.length > 0) {
|
|
42
|
+
for (const child of children) {
|
|
43
|
+
const childZone = { ...child };
|
|
44
|
+
childZone.virtual = this.zoneIsVirtual(child);
|
|
45
|
+
list.push(childZone);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// allow the parent Floor of the allowed zone
|
|
49
|
+
if (allowedZone.parent.layer &&
|
|
50
|
+
allowedZone.parent.layer.name === 'FLOOR') {
|
|
51
|
+
list.push(allowedZone.parent);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
return this.getZonesBySpace(spaceID);
|
|
56
|
+
}
|
|
57
|
+
return list;
|
|
58
|
+
}
|
|
59
|
+
async filterZonesIDsForUser(zones) {
|
|
60
|
+
const { spaceID } = zones[0];
|
|
61
|
+
const zoneIDs = new Set(zones.map((zone) => zone.id));
|
|
62
|
+
const allowedZones = await this.getZonesBySpaceForUser(spaceID);
|
|
63
|
+
const filteredZones = allowedZones.filter((zone) => zoneIDs.has(zone.id));
|
|
64
|
+
return filteredZones;
|
|
65
|
+
}
|
|
66
|
+
async deleteZone(zoneID) {
|
|
67
|
+
return this.API.__proto__.DeleteZone({ id: zoneID });
|
|
68
|
+
}
|
|
69
|
+
async getZonesForSweepForSpace(sweepID, spaceID) {
|
|
70
|
+
const zonesSpace = (await this.API.__proto__.ZonesBySpace(spaceID)).items;
|
|
71
|
+
return zonesSpace.filter((zone) => zone.sweepIDs && zone.sweepIDs.includes(sweepID));
|
|
72
|
+
}
|
|
73
|
+
// // eslint-disable-next-line class-methods-use-this
|
|
74
|
+
sortZonesFromChildToParent(zonesToSort) {
|
|
75
|
+
// get default
|
|
76
|
+
const defaultZone = zonesToSort.find((z) => !z.parentID);
|
|
77
|
+
if (defaultZone) {
|
|
78
|
+
const indexOf = zonesToSort.indexOf(defaultZone);
|
|
79
|
+
zonesToSort.splice(indexOf, 1);
|
|
80
|
+
}
|
|
81
|
+
const zones = zonesToSort.sort((a, b) => {
|
|
82
|
+
if (a.parentID === b.id) {
|
|
83
|
+
return -1;
|
|
84
|
+
}
|
|
85
|
+
return 0;
|
|
86
|
+
});
|
|
87
|
+
// so far by number of navigation points in them
|
|
88
|
+
// const zones = zonesToSort.sort(
|
|
89
|
+
// (a, b) => a.navigations.items.length - b.navigations.items.length,
|
|
90
|
+
// );
|
|
91
|
+
if (defaultZone) {
|
|
92
|
+
zones.push(defaultZone);
|
|
93
|
+
}
|
|
94
|
+
return zones;
|
|
95
|
+
}
|
|
96
|
+
async getZonesForObject(object) {
|
|
97
|
+
if (object.pois.items && object.pois.items.length > 0) {
|
|
98
|
+
const [poi] = object.pois.items;
|
|
99
|
+
if (poi.matterportSweepID) {
|
|
100
|
+
const zones = await this.getZonesForSweepForSpace(poi.matterportSweepID, object.spaceID);
|
|
101
|
+
return zones;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
async createVirtualZone(zoneInput) {
|
|
107
|
+
zoneInput.sweepIDs = [];
|
|
108
|
+
const zone = await this.API.__proto__.CreateZone(zoneInput);
|
|
109
|
+
console.log('virtual zone created', zone);
|
|
110
|
+
return zone;
|
|
111
|
+
}
|
|
112
|
+
zoneIsVirtual(zone) {
|
|
113
|
+
if (!zone.sweepIDs) {
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
if ((zone.tags && zone.tags.includes('virtual')) ||
|
|
117
|
+
zone.sweepIDs.length === 0) {
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
async getModel3DForZone(zoneID) {
|
|
123
|
+
const zone = await this.API.__proto__.GetZone(zoneID);
|
|
124
|
+
if (zone.nodeIDs) {
|
|
125
|
+
const node = await this.API.__proto__.GetNode(zone.nodeIDs[0]);
|
|
126
|
+
return node.model3D;
|
|
127
|
+
}
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
async getZone(zoneID) {
|
|
131
|
+
return this.API.__proto__.GetZone(zoneID);
|
|
132
|
+
}
|
|
133
|
+
async getDefaultZoneForSpace(spaceID) {
|
|
134
|
+
return this.getZonesBySpace(spaceID).then(async (zones) => {
|
|
135
|
+
const zonesBuilding = zones.filter((zone) => zone.layer && zone.layer.name === 'BUILDING');
|
|
136
|
+
if (zonesBuilding.length === 1) {
|
|
137
|
+
return zonesBuilding[0];
|
|
138
|
+
}
|
|
139
|
+
const parentZone = zones.find((zone) => !zone.parentID);
|
|
140
|
+
return parentZone;
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
async create(input) {
|
|
144
|
+
return this.API.__proto__.CreateZone(input);
|
|
145
|
+
}
|
|
146
|
+
// async getSortedZonesForSweepForUser(
|
|
147
|
+
// sweep: string,
|
|
148
|
+
// spaceID: string,
|
|
149
|
+
// ): Promise<Zone[]> {
|
|
150
|
+
// if (!spaceID) {
|
|
151
|
+
// return [];
|
|
152
|
+
// }
|
|
153
|
+
// const zones = await this.getZonesForSweepForSpace(sweep, spaceID);
|
|
154
|
+
// if (zones.length === 0) {
|
|
155
|
+
// return [];
|
|
156
|
+
// }
|
|
157
|
+
// const filteredZones = await this.filterZonesIDsForUser(zones);
|
|
158
|
+
// if (filteredZones.length > 0) {
|
|
159
|
+
// let zonesSorted = this.sortZonesFromChildToParent(filteredZones);
|
|
160
|
+
// zonesSorted = zonesSorted.filter((zone) => zone !== undefined);
|
|
161
|
+
// return zonesSorted;
|
|
162
|
+
// }
|
|
163
|
+
// return [];
|
|
164
|
+
// }
|
|
165
|
+
async updateZone(input) {
|
|
166
|
+
return this.API.__proto__.UpdateZone(input);
|
|
167
|
+
}
|
|
168
|
+
async getZonesForNodeForSpace(nodeID, spaceID) {
|
|
169
|
+
return this.API.__proto__.ZonesBySpace(spaceID).then(async (zones) => {
|
|
170
|
+
const filteredZones = zones.items.filter((zone) => zone.nodeIDs && zone.nodeIDs.includes(nodeID));
|
|
171
|
+
return filteredZones;
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Gets the Zone (layer FLOOR) for a matterport sweep ID in a given Space
|
|
176
|
+
* @param sweepID
|
|
177
|
+
* @param spaceID
|
|
178
|
+
* @returns Zone
|
|
179
|
+
*/
|
|
180
|
+
async getFloorZoneForSweepInSpace(sweepID, spaceID) {
|
|
181
|
+
const zones = await this.getZonesForSweepForSpace(sweepID, spaceID);
|
|
182
|
+
const floors = zones.filter((zone) => zone.layer && zone.layer.name.includes('FLOOR'));
|
|
183
|
+
return floors.length > 0 ? floors[0] : null;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Get zones with audio track for entire space
|
|
187
|
+
* @param spaceID
|
|
188
|
+
* @returns Promise<Zone[]>
|
|
189
|
+
*/
|
|
190
|
+
async getAudioZonesForSpace(spaceID) {
|
|
191
|
+
const allZones = await this.getZonesBySpace(spaceID);
|
|
192
|
+
return allZones.filter((zone) => zone.audioID);
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Get audio zones for user (within allowed zones)
|
|
196
|
+
* @param spaceID
|
|
197
|
+
* @returns Promise<Zone[]>
|
|
198
|
+
*/
|
|
199
|
+
async getAudioZonesForUserForSpace(spaceID) {
|
|
200
|
+
const userZones = await this.getZonesBySpaceForUser(spaceID);
|
|
201
|
+
return userZones.filter((zone) => zone.audioID);
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Get Zones by Parent Zone ID
|
|
205
|
+
* @param parentZoneID string
|
|
206
|
+
* @returns Promise<Zone[]>
|
|
207
|
+
*/
|
|
208
|
+
async getZonesByParentZone(parentZoneID) {
|
|
209
|
+
return this.API.__proto__
|
|
210
|
+
.ZonesByZone(parentZoneID)
|
|
211
|
+
.then((res) => res.items);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
ZoneService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ZoneService, deps: [{ token: 'currentAPIService' }, { token: i1.BaseUserService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
215
|
+
ZoneService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ZoneService, providedIn: 'root' });
|
|
216
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ZoneService, decorators: [{
|
|
217
|
+
type: Injectable,
|
|
218
|
+
args: [{
|
|
219
|
+
providedIn: 'root',
|
|
220
|
+
}]
|
|
221
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
222
|
+
type: Inject,
|
|
223
|
+
args: ['currentAPIService']
|
|
224
|
+
}] }, { type: i1.BaseUserService }]; } });
|
|
225
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvem9uZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBT25ELE1BQU0sT0FBTyxXQUFXO0lBR3RCLFlBQytCLFdBQWdCLEVBQ3JDLFdBQTRCO1FBQTVCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUVwQyxJQUFJLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQztJQUN6QixDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxPQUFlO1FBQ25DLE1BQU0sSUFBSSxHQUFXLEVBQUUsQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUNyRCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM3RCxJQUFJLEtBQUssRUFBRTtnQkFDVCxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUU7b0JBQzlCLE1BQU0sVUFBVSxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQVUsQ0FBQztvQkFDdkMsVUFBVSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUN2QjthQUNGO1lBQ0QsT0FBTyxJQUFJLENBQUM7U0FDYjthQUFNO1lBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1NBQ2pEO0lBQ0gsQ0FBQztJQUVE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QyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzlDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLHFCQUFxQixDQUFDLE9BQWU7UUFDekMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLDRCQUE0QixDQUFDLE9BQWU7UUFDaEQsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0QsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsb0JBQW9CLENBQUMsWUFBb0I7UUFDN0MsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVM7YUFDdEIsV0FBVyxDQUFDLFlBQVksQ0FBQzthQUN6QixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDOzt3R0E3UFUsV0FBVyxrQkFJWixtQkFBbUI7NEdBSmxCLFdBQVcsY0FGVixNQUFNOzJGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFLSSxNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMgKi9cclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERiT2JqZWN0VHlwZSwgWm9uZSB9IGZyb20gJy4uLy4uL3R5cGVzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYXNlVXNlclNlcnZpY2UgfSBmcm9tICcuLi91c2VyLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFpvbmVTZXJ2aWNlIHtcclxuICBBUEk6IGFueTsgLy9BV1MgQVBJU2VydmljZVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueSxcclxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5BUEkgPSBhcGlJbmplY3RlZDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFpvbmVzQnlTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPEFycmF5PFpvbmU+PiB7XHJcbiAgICBjb25zdCBsaXN0OiBab25lW10gPSBbXTtcclxuICAgIGlmICh0aGlzLkFQSS5fX3Byb3RvX18uaGFzT3duUHJvcGVydHkoJ1pvbmVzQnlTcGFjZScpKSB7XHJcbiAgICAgIGNvbnN0IHpvbmVzID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLlpvbmVzQnlTcGFjZShzcGFjZUlEKTtcclxuICAgICAgaWYgKHpvbmVzKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCB6b25lIG9mIHpvbmVzLml0ZW1zKSB7XHJcbiAgICAgICAgICBjb25zdCB6b25lT2JqZWN0ID0geyAuLi56b25lIH0gYXMgWm9uZTtcclxuICAgICAgICAgIHpvbmVPYmplY3QudmlydHVhbCA9IHRoaXMuem9uZUlzVmlydHVhbCh6b25lKTtcclxuICAgICAgICAgIGxpc3QucHVzaCh6b25lT2JqZWN0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGxpc3Q7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1pvbmVzQnlTcGFjZSBub3QgaW1wbGVtZW50ZWQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFpvbmVzQnlTcGFjZUZvclVzZXIoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxab25lW10+IHtcclxuICAgIGNvbnN0IG1pc3Npb25Gb3JMb2NhdGlvbiA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb24oc3BhY2VJRCk7XHJcbiAgICBjb25zdCBsaXN0ID0gW107XHJcbiAgICBpZiAobWlzc2lvbkZvckxvY2F0aW9uICYmIG1pc3Npb25Gb3JMb2NhdGlvbi56b25lSUQpIHtcclxuICAgICAgY29uc3QgYWxsb3dlZFpvbmUgPSBhd2FpdCB0aGlzLmdldFpvbmUobWlzc2lvbkZvckxvY2F0aW9uLnpvbmVJRCk7XHJcbiAgICAgIGFsbG93ZWRab25lLnZpcnR1YWwgPSB0aGlzLnpvbmVJc1ZpcnR1YWwoYWxsb3dlZFpvbmUpO1xyXG4gICAgICBpZiAoIWFsbG93ZWRab25lLnBhcmVudCkge1xyXG4gICAgICAgIC8vIHRoZSB3aG9sZSBidWlsZGluZyBpcyBhdXRob3JpemVkXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Wm9uZXNCeVNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICB9XHJcbiAgICAgIGxpc3QucHVzaChhbGxvd2VkWm9uZSk7XHJcbiAgICAgIC8vIGFsbG93IGFsbCBjaGlsZHJlbiB6b25lcyBvZiBhbiBhbGxvd2VkIHBhcmVudFxyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IChhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uWm9uZXNCeVpvbmUoYWxsb3dlZFpvbmUuaWQpKVxyXG4gICAgICAgIC5pdGVtcztcclxuICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XHJcbiAgICAgICAgICBjb25zdCBjaGlsZFpvbmUgPSB7IC4uLmNoaWxkIH0gYXMgWm9uZTtcclxuICAgICAgICAgIGNoaWxkWm9uZS52aXJ0dWFsID0gdGhpcy56b25lSXNWaXJ0dWFsKGNoaWxkKTtcclxuICAgICAgICAgIGxpc3QucHVzaChjaGlsZFpvbmUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyBhbGxvdyB0aGUgcGFyZW50IEZsb29yIG9mIHRoZSBhbGxvd2VkIHpvbmVcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGFsbG93ZWRab25lLnBhcmVudC5sYXllciAmJlxyXG4gICAgICAgIGFsbG93ZWRab25lLnBhcmVudC5sYXllci5uYW1lID09PSAnRkxPT1InXHJcbiAgICAgICkge1xyXG4gICAgICAgIGxpc3QucHVzaChhbGxvd2VkWm9uZS5wYXJlbnQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRab25lc0J5U3BhY2Uoc3BhY2VJRCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbGlzdDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGZpbHRlclpvbmVzSURzRm9yVXNlcih6b25lczogWm9uZVtdKTogUHJvbWlzZTxab25lW10+IHtcclxuICAgIGNvbnN0IHsgc3BhY2VJRCB9ID0gem9uZXNbMF07XHJcbiAgICBjb25zdCB6b25lSURzID0gbmV3IFNldCh6b25lcy5tYXAoKHpvbmUpID0+IHpvbmUuaWQpKTtcclxuICAgIGNvbnN0IGFsbG93ZWRab25lcyA9IGF3YWl0IHRoaXMuZ2V0Wm9uZXNCeVNwYWNlRm9yVXNlcihzcGFjZUlEKTtcclxuICAgIGNvbnN0IGZpbHRlcmVkWm9uZXMgPSBhbGxvd2VkWm9uZXMuZmlsdGVyKCh6b25lKSA9PiB6b25lSURzLmhhcyh6b25lLmlkKSk7XHJcbiAgICByZXR1cm4gZmlsdGVyZWRab25lcztcclxuICB9XHJcblxyXG4gIGFzeW5jIGRlbGV0ZVpvbmUoem9uZUlEOiBzdHJpbmcpOiBQcm9taXNlPFpvbmU+IHtcclxuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlWm9uZSh7IGlkOiB6b25lSUQgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRab25lc0ZvclN3ZWVwRm9yU3BhY2UoXHJcbiAgICBzd2VlcElEOiBzdHJpbmcsXHJcbiAgICBzcGFjZUlEOiBzdHJpbmdcclxuICApOiBQcm9taXNlPFpvbmVbXT4ge1xyXG4gICAgY29uc3Qgem9uZXNTcGFjZSA9IChhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uWm9uZXNCeVNwYWNlKHNwYWNlSUQpKS5pdGVtcztcclxuICAgIHJldHVybiB6b25lc1NwYWNlLmZpbHRlcihcclxuICAgICAgKHpvbmUpID0+IHpvbmUuc3dlZXBJRHMgJiYgem9uZS5zd2VlcElEcy5pbmNsdWRlcyhzd2VlcElEKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzXHJcbiAgc29ydFpvbmVzRnJvbUNoaWxkVG9QYXJlbnQoem9uZXNUb1NvcnQ6IFpvbmVbXSkge1xyXG4gICAgLy8gZ2V0IGRlZmF1bHRcclxuICAgIGNvbnN0IGRlZmF1bHRab25lID0gem9uZXNUb1NvcnQuZmluZCgoeikgPT4gIXoucGFyZW50SUQpO1xyXG4gICAgaWYgKGRlZmF1bHRab25lKSB7XHJcbiAgICAgIGNvbnN0IGluZGV4T2YgPSB6b25lc1RvU29ydC5pbmRleE9mKGRlZmF1bHRab25lKTtcclxuICAgICAgem9uZXNUb1NvcnQuc3BsaWNlKGluZGV4T2YsIDEpO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgem9uZXMgPSB6b25lc1RvU29ydC5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgIGlmIChhLnBhcmVudElEID09PSBiLmlkKSB7XHJcbiAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfSk7XHJcbiAgICAvLyBzbyBmYXIgYnkgbnVtYmVyIG9mIG5hdmlnYXRpb24gcG9pbnRzIGluIHRoZW1cclxuICAgIC8vIGNvbnN0IHpvbmVzID0gem9uZXNUb1NvcnQuc29ydChcclxuICAgIC8vICAgICAoYSwgYikgPT4gYS5uYXZpZ2F0aW9ucy5pdGVtcy5sZW5ndGggLSBiLm5hdmlnYXRpb25zLml0ZW1zLmxlbmd0aCxcclxuICAgIC8vICk7XHJcbiAgICBpZiAoZGVmYXVsdFpvbmUpIHtcclxuICAgICAgem9uZXMucHVzaChkZWZhdWx0Wm9uZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gem9uZXM7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRab25lc0Zvck9iamVjdChvYmplY3Q6IERiT2JqZWN0VHlwZSk6IFByb21pc2U8Wm9uZVtdPiB7XHJcbiAgICBpZiAob2JqZWN0LnBvaXMuaXRlbXMgJiYgb2JqZWN0LnBvaXMuaXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBbcG9pXSA9IG9iamVjdC5wb2lzLml0ZW1zO1xyXG4gICAgICBpZiAocG9pLm1hdHRlcnBvcnRTd2VlcElEKSB7XHJcbiAgICAgICAgY29uc3Qgem9uZXMgPSBhd2FpdCB0aGlzLmdldFpvbmVzRm9yU3dlZXBGb3JTcGFjZShcclxuICAgICAgICAgIHBvaS5tYXR0ZXJwb3J0U3dlZXBJRCxcclxuICAgICAgICAgIG9iamVjdC5zcGFjZUlEXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gem9uZXM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgY3JlYXRlVmlydHVhbFpvbmUoem9uZUlucHV0OiBab25lKTogUHJvbWlzZTxab25lPiB7XHJcbiAgICB6b25lSW5wdXQuc3dlZXBJRHMgPSBbXTtcclxuICAgIGNvbnN0IHpvbmUgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uQ3JlYXRlWm9uZSh6b25lSW5wdXQpO1xyXG4gICAgY29uc29sZS5sb2coJ3ZpcnR1YWwgem9uZSBjcmVhdGVkJywgem9uZSk7XHJcbiAgICByZXR1cm4gem9uZTtcclxuICB9XHJcblxyXG4gIHpvbmVJc1ZpcnR1YWwoem9uZTogWm9uZSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF6b25lLnN3ZWVwSURzKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICAoem9uZS50YWdzICYmIHpvbmUudGFncy5pbmNsdWRlcygndmlydHVhbCcpKSB8fFxyXG4gICAgICB6b25lLnN3ZWVwSURzLmxlbmd0aCA9PT0gMFxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0TW9kZWwzREZvclpvbmUoem9uZUlEOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgY29uc3Qgem9uZSA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5HZXRab25lKHpvbmVJRCk7XHJcbiAgICBpZiAoem9uZS5ub2RlSURzKSB7XHJcbiAgICAgIGNvbnN0IG5vZGUgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uR2V0Tm9kZSh6b25lLm5vZGVJRHNbMF0pO1xyXG4gICAgICByZXR1cm4gbm9kZS5tb2RlbDNEO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRab25lKHpvbmVJRDogc3RyaW5nKTogUHJvbWlzZTxab25lPiB7XHJcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkdldFpvbmUoem9uZUlEKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldERlZmF1bHRab25lRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxab25lPiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRab25lc0J5U3BhY2Uoc3BhY2VJRCkudGhlbihhc3luYyAoem9uZXMpID0+IHtcclxuICAgICAgY29uc3Qgem9uZXNCdWlsZGluZyA9IHpvbmVzLmZpbHRlcihcclxuICAgICAgICAoem9uZSkgPT4gem9uZS5sYXllciAmJiB6b25lLmxheWVyLm5hbWUgPT09ICdCVUlMRElORydcclxuICAgICAgKTtcclxuICAgICAgaWYgKHpvbmVzQnVpbGRpbmcubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgcmV0dXJuIHpvbmVzQnVpbGRpbmdbMF07XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcGFyZW50Wm9uZSA9IHpvbmVzLmZpbmQoKHpvbmUpID0+ICF6b25lLnBhcmVudElEKTtcclxuICAgICAgcmV0dXJuIHBhcmVudFpvbmU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGNyZWF0ZShpbnB1dDogWm9uZSk6IFByb21pc2U8Wm9uZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVab25lKGlucHV0KTtcclxuICB9XHJcblxyXG4gIC8vIGFzeW5jIGdldFNvcnRlZFpvbmVzRm9yU3dlZXBGb3JVc2VyKFxyXG4gIC8vICAgICBzd2VlcDogc3RyaW5nLFxyXG4gIC8vICAgICBzcGFjZUlEOiBzdHJpbmcsXHJcbiAgLy8gKTogUHJvbWlzZTxab25lW10+IHtcclxuICAvLyAgICAgaWYgKCFzcGFjZUlEKSB7XHJcbiAgLy8gICAgICAgICByZXR1cm4gW107XHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgY29uc3Qgem9uZXMgPSBhd2FpdCB0aGlzLmdldFpvbmVzRm9yU3dlZXBGb3JTcGFjZShzd2VlcCwgc3BhY2VJRCk7XHJcbiAgLy8gICAgIGlmICh6b25lcy5sZW5ndGggPT09IDApIHtcclxuICAvLyAgICAgICAgIHJldHVybiBbXTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgICBjb25zdCBmaWx0ZXJlZFpvbmVzID0gYXdhaXQgdGhpcy5maWx0ZXJab25lc0lEc0ZvclVzZXIoem9uZXMpO1xyXG4gIC8vICAgICBpZiAoZmlsdGVyZWRab25lcy5sZW5ndGggPiAwKSB7XHJcbiAgLy8gICAgICAgICBsZXQgem9uZXNTb3J0ZWQgPSB0aGlzLnNvcnRab25lc0Zyb21DaGlsZFRvUGFyZW50KGZpbHRlcmVkWm9uZXMpO1xyXG4gIC8vICAgICAgICAgem9uZXNTb3J0ZWQgPSB6b25lc1NvcnRlZC5maWx0ZXIoKHpvbmUpID0+IHpvbmUgIT09IHVuZGVmaW5lZCk7XHJcbiAgLy8gICAgICAgICByZXR1cm4gem9uZXNTb3J0ZWQ7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgcmV0dXJuIFtdO1xyXG4gIC8vIH1cclxuXHJcbiAgYXN5bmMgdXBkYXRlWm9uZShpbnB1dDogYW55KTogUHJvbWlzZTxab25lPiB7XHJcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLlVwZGF0ZVpvbmUoaW5wdXQpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0Wm9uZXNGb3JOb2RlRm9yU3BhY2UoXHJcbiAgICBub2RlSUQ6IHN0cmluZyxcclxuICAgIHNwYWNlSUQ6IHN0cmluZ1xyXG4gICk6IFByb21pc2U8Wm9uZVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLlpvbmVzQnlTcGFjZShzcGFjZUlEKS50aGVuKGFzeW5jICh6b25lcykgPT4ge1xyXG4gICAgICBjb25zdCBmaWx0ZXJlZFpvbmVzID0gem9uZXMuaXRlbXMuZmlsdGVyKFxyXG4gICAgICAgICh6b25lKSA9PiB6b25lLm5vZGVJRHMgJiYgem9uZS5ub2RlSURzLmluY2x1ZGVzKG5vZGVJRClcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuIGZpbHRlcmVkWm9uZXM7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIFpvbmUgKGxheWVyIEZMT09SKSBmb3IgYSBtYXR0ZXJwb3J0IHN3ZWVwIElEIGluIGEgZ2l2ZW4gU3BhY2VcclxuICAgKiBAcGFyYW0gc3dlZXBJRFxyXG4gICAqIEBwYXJhbSBzcGFjZUlEXHJcbiAgICogQHJldHVybnMgWm9uZVxyXG4gICAqL1xyXG4gIGFzeW5jIGdldEZsb29yWm9uZUZvclN3ZWVwSW5TcGFjZShcclxuICAgIHN3ZWVwSUQ6IHN0cmluZyxcclxuICAgIHNwYWNlSUQ6IHN0cmluZ1xyXG4gICk6IFByb21pc2U8Wm9uZT4ge1xyXG4gICAgY29uc3Qgem9uZXMgPSBhd2FpdCB0aGlzLmdldFpvbmVzRm9yU3dlZXBGb3JTcGFjZShzd2VlcElELCBzcGFjZUlEKTtcclxuICAgIGNvbnN0IGZsb29ycyA9IHpvbmVzLmZpbHRlcihcclxuICAgICAgKHpvbmUpID0+IHpvbmUubGF5ZXIgJiYgem9uZS5sYXllci5uYW1lLmluY2x1ZGVzKCdGTE9PUicpXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIGZsb29ycy5sZW5ndGggPiAwID8gZmxvb3JzWzBdIDogbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB6b25lcyB3aXRoIGF1ZGlvIHRyYWNrIGZvciBlbnRpcmUgc3BhY2VcclxuICAgKiBAcGFyYW0gc3BhY2VJRFxyXG4gICAqIEByZXR1cm5zICBQcm9taXNlPFpvbmVbXT5cclxuICAgKi9cclxuICBhc3luYyBnZXRBdWRpb1pvbmVzRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxab25lW10+IHtcclxuICAgIGNvbnN0IGFsbFpvbmVzID0gYXdhaXQgdGhpcy5nZXRab25lc0J5U3BhY2Uoc3BhY2VJRCk7XHJcbiAgICByZXR1cm4gYWxsWm9uZXMuZmlsdGVyKCh6b25lKSA9PiB6b25lLmF1ZGlvSUQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGF1ZGlvIHpvbmVzIGZvciB1c2VyICh3aXRoaW4gYWxsb3dlZCB6b25lcylcclxuICAgKiBAcGFyYW0gc3BhY2VJRFxyXG4gICAqIEByZXR1cm5zICBQcm9taXNlPFpvbmVbXT5cclxuICAgKi9cclxuICBhc3luYyBnZXRBdWRpb1pvbmVzRm9yVXNlckZvclNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8Wm9uZVtdPiB7XHJcbiAgICBjb25zdCB1c2VyWm9uZXMgPSBhd2FpdCB0aGlzLmdldFpvbmVzQnlTcGFjZUZvclVzZXIoc3BhY2VJRCk7XHJcbiAgICByZXR1cm4gdXNlclpvbmVzLmZpbHRlcigoem9uZSkgPT4gem9uZS5hdWRpb0lEKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBab25lcyBieSBQYXJlbnQgWm9uZSBJRFxyXG4gICAqIEBwYXJhbSBwYXJlbnRab25lSUQgc3RyaW5nXHJcbiAgICogQHJldHVybnMgUHJvbWlzZTxab25lW10+XHJcbiAgICovXHJcbiAgYXN5bmMgZ2V0Wm9uZXNCeVBhcmVudFpvbmUocGFyZW50Wm9uZUlEOiBzdHJpbmcpOiBQcm9taXNlPFpvbmVbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fX1xyXG4gICAgICAuWm9uZXNCeVpvbmUocGFyZW50Wm9uZUlEKVxyXG4gICAgICAudGhlbigocmVzKSA9PiByZXMuaXRlbXMpO1xyXG4gIH1cclxufVxyXG4iXX0=
|