@smarterplan/ngx-smarterplan-core 1.4.13 → 1.4.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/pipes/hashtag-from-id.pipe.mjs +26 -7
- package/esm2022/lib/services/matterport-tag-copy.service.mjs +838 -195
- package/esm2022/lib/services/models/comment.service.mjs +35 -1
- package/esm2022/lib/services/models/equipment.service.mjs +4 -2
- package/esm2022/lib/services/models/feature.service.mjs +26 -1
- package/esm2022/lib/services/models/hashtag.service.mjs +29 -2
- package/esm2022/lib/services/s3.service.mjs +29 -1
- package/esm2022/lib/services/utils/matterport-transform.util.mjs +29 -3
- package/fesm2022/smarterplan-ngx-smarterplan-core.mjs +1004 -202
- package/fesm2022/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
- package/lib/pipes/hashtag-from-id.pipe.d.ts +9 -0
- package/lib/services/matterport-tag-copy.service.d.ts +196 -15
- package/lib/services/models/comment.service.d.ts +16 -0
- package/lib/services/models/equipment.service.d.ts +4 -1
- package/lib/services/models/feature.service.d.ts +11 -0
- package/lib/services/models/hashtag.service.d.ts +6 -0
- package/lib/services/s3.service.d.ts +14 -0
- package/lib/services/utils/matterport-transform.util.d.ts +16 -1
- package/package.json +1 -1
|
@@ -174,6 +174,31 @@ export class FeatureService extends BaseObjectService {
|
|
|
174
174
|
}
|
|
175
175
|
return features;
|
|
176
176
|
}
|
|
177
|
+
/**
|
|
178
|
+
* Returns EVERY feature of a space, following `nextToken` until the index is
|
|
179
|
+
* exhausted, with no user/archive filtering at all.
|
|
180
|
+
*
|
|
181
|
+
* `getFeaturesBySpaceWithoutFiltering()` reads a single page (the AppSync default
|
|
182
|
+
* caps it at 100 items) and calls `isArchived()`, which dereferences the current
|
|
183
|
+
* user's mission ON THAT SPACE — so it both truncates large spaces and throws for a
|
|
184
|
+
* space the operator has no mission on. Duplication has to see the raw, complete
|
|
185
|
+
* list, hence this separate accessor rather than a change of the existing one.
|
|
186
|
+
*/
|
|
187
|
+
async getAllFeaturesBySpaceRaw(spaceID) {
|
|
188
|
+
if (!spaceID) {
|
|
189
|
+
return [];
|
|
190
|
+
}
|
|
191
|
+
const all = [];
|
|
192
|
+
let nextToken = null;
|
|
193
|
+
do {
|
|
194
|
+
const page = await this.API.__proto__.FeaturesBySpace(spaceID, undefined, undefined, 1000, nextToken);
|
|
195
|
+
if (page?.items?.length > 0) {
|
|
196
|
+
all.push(...page.items.filter((item) => !!item));
|
|
197
|
+
}
|
|
198
|
+
nextToken = page?.nextToken ?? null;
|
|
199
|
+
} while (nextToken);
|
|
200
|
+
return all;
|
|
201
|
+
}
|
|
177
202
|
isBookingPlace(feature) {
|
|
178
203
|
feature.isBookingPlace = feature.type === FeatureType.DESK;
|
|
179
204
|
}
|
|
@@ -386,4 +411,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
386
411
|
type: Inject,
|
|
387
412
|
args: ['currentAPIService']
|
|
388
413
|
}] }, { type: i1.NavigatorService }, { type: i2.FilterService }, { type: i3.PoiService }, { type: i4.CommentService }, { type: i5.BaseUserService }, { type: i6.NavigationService }, { type: i7.HashtagService }, { type: i8.ZoneChangeService }] });
|
|
389
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvZmVhdHVyZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQUFxQztBQUNyQywyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEQsT0FBTyxFQUFvQixXQUFXLEVBQUUsV0FBVyxFQUFPLE9BQU8sRUFBc0IsTUFBTSxxQkFBcUIsQ0FBQztBQUluSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7OztBQVUxRCxNQUFNLE9BQU8sY0FBZSxTQUFRLGlCQUFpQjtJQXlDckM7SUFDQTtJQUVBO0lBQ0E7SUFFQTtJQUNBO0lBL0NaLEdBQUcsQ0FBTSxDQUFDLEtBQUs7SUFFZixjQUFjLEdBR1QsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVuQixlQUFlLEdBQTJDO1FBQ3RELEtBQUssRUFBRSxFQUFFO1FBQ1QsSUFBSSxFQUFFLEVBQUU7S0FDWCxDQUFDO0lBRUYsV0FBVyxHQUErQixJQUFJLGVBQWUsQ0FBWSxJQUFJLENBQUMsQ0FBQztJQUUvRSxlQUFlLEdBQWMsRUFBRSxDQUFDO0lBRWhDLFVBQVUsR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUU3QyxZQUFZLENBQVM7SUFFckIsY0FBYyxDQUFTO0lBRXZCLFFBQVEsR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUUzQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBRW5CLG1CQUFtQixHQUFhLElBQUksQ0FBQztJQUVyQyxnQkFBZ0IsR0FBYSxJQUFJLENBQUM7SUFFbEMsbUJBQW1CLEdB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LGtCQXdDWCxtQkFBbUI7NEdBeEN0QixjQUFjLGNBRlgsTUFBTTs7NEZBRVQsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7OzBCQXlDUSxNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWF3YWl0LWluLWxvb3AgKi9cclxuLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyAqL1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBNYXR0ZXJ0YWdEYXRhIH0gZnJvbSBcIi4uLy4uL21hdHRlcnRhZ0RhdGFcIjtcclxuaW1wb3J0IHsgRmVhdHVyZSwgSGFzaHRhZywgRmVhdHVyZVR5cGUsIENvbW1lbnRUeXBlLCBQT0ksIFBvaVR5cGUsIEV2ZW50LCBMZXZlbFN0YXR1cyB9IGZyb20gXCIuLi8uLi90eXBlcy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UgfSBmcm9tIFwiLi4vZmlsdGVyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTmF2aWdhdG9yU2VydmljZSB9IGZyb20gXCIuLi9uYXZpZ2F0b3Iuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBCYXNlVXNlclNlcnZpY2UgfSBmcm9tIFwiLi4vdXNlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEJhc2VPYmplY3RTZXJ2aWNlIH0gZnJvbSBcIi4vYmFzZS1vYmplY3Quc2VydmljZVwiO1xyXG5pbXBvcnQgeyBDb21tZW50U2VydmljZSB9IGZyb20gXCIuL2NvbW1lbnQuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBIYXNodGFnU2VydmljZSB9IGZyb20gXCIuL2hhc2h0YWcuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gXCIuL25hdmlnYXRpb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBQb2lTZXJ2aWNlIH0gZnJvbSBcIi4vcG9pLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtab25lQ2hhbmdlU2VydmljZX0gZnJvbSBcIi4uL3pvbmVDaGFuZ2Uuc2VydmljZVwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogXCJyb290XCIsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGZWF0dXJlU2VydmljZSBleHRlbmRzIEJhc2VPYmplY3RTZXJ2aWNlIHtcclxuICAgIEFQSTogYW55OyAvL0FXU1xyXG5cclxuICAgIGZlYXR1cmVVcGRhdGVkOiBTdWJqZWN0PHtcclxuICAgICAgICBzcGFjZTogRmVhdHVyZVtdO1xyXG4gICAgICAgIHpvbmU6IEZlYXR1cmVbXTtcclxuICAgIH0+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgICBjdXJyZW50RmVhdHVyZXM6IHsgc3BhY2U6IEZlYXR1cmVbXTsgem9uZTogRmVhdHVyZVtdOyB9ID0ge1xyXG4gICAgICAgIHNwYWNlOiBbXSxcclxuICAgICAgICB6b25lOiBbXSxcclxuICAgIH07XHJcblxyXG4gICAgZmVhdHVyZVRhZ3M6IEJlaGF2aW9yU3ViamVjdDxGZWF0dXJlW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGZWF0dXJlW10+KG51bGwpO1xyXG5cclxuICAgIGZlYXR1cmVGaWx0ZXJlZDogRmVhdHVyZVtdID0gW107XHJcblxyXG4gICAgdXBkYXRlRG9uZTogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gICAgem9uZUlERmlsdGVyOiBzdHJpbmc7XHJcblxyXG4gICAgY3VycmVudFNwYWNlSUQ6IHN0cmluZztcclxuXHJcbiAgICB1cGRhdGluZzogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gICAgaXNVcGRhdGluZyA9IGZhbHNlO1xyXG5cclxuICAgIGZlYXR1cmVEb21haW5GaWx0ZXI6IHN0cmluZ1tdID0gbnVsbDtcclxuXHJcbiAgICBkZXNrRG9tYWluRmlsdGVyOiBzdHJpbmdbXSA9IG51bGw7XHJcblxyXG4gICAgZGVza0Jvb2tpbmdzVXBkYXRlZDogU3ViamVjdDxFdmVudFtdPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gICAgcHVibGljIGN1cnJlbnRIYXNodGFnczogSGFzaHRhZ1tdID0gW107XHJcblxyXG4gICAgY3JlYXRlT2JzZXJ2YWJsZTogU3ViamVjdDxGZWF0dXJlPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gICAgZGVsZXRlT2JzZXJ2YWJsZTogU3ViamVjdDxGZWF0dXJlPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgQEluamVjdCgnY3VycmVudEFQSVNlcnZpY2UnKSBhcGlJbmplY3RlZDogYW55LFxyXG4gICAgICAgIHByaXZhdGUgbmF2aWdhdG9yU2VydmljZTogTmF2aWdhdG9yU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGZpbHRlclNlcnZpY2U6IEZpbHRlclNlcnZpY2UsXHJcbiAgICAgICAgcG9pU2VydmljZTogUG9pU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGNvbW1lbnRTZXJ2aWNlOiBDb21tZW50U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBCYXNlVXNlclNlcnZpY2UsXHJcbiAgICAgICAgbmF2aWdhdGlvblNlcnZpY2U6IE5hdmlnYXRpb25TZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgaGFzaHRhZ1NlcnZpY2U6IEhhc2h0YWdTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgem9uZUNoYW5nZVNlcnZpY2U6IFpvbmVDaGFuZ2VTZXJ2aWNlLFxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIocG9pU2VydmljZSwgbmF2aWdhdGlvblNlcnZpY2UpO1xyXG4gICAgICAgIHRoaXMuQVBJID0gYXBpSW5qZWN0ZWQ7XHJcbiAgICAgICAgdGhpcy5mZWF0dXJlVXBkYXRlZC5zdWJzY3JpYmUoKGxpc3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmVhdHVyZXMgPSBsaXN0O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2Uuem9uZUNoYW5nZS5zdWJzY3JpYmUoKHpvbmUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRCA9IHRoaXMubmF2aWdhdG9yU2VydmljZS5jdXJyZW50U3BhY2VJRDtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZlYXR1cmVUYWdzLm5leHQobnVsbCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZlYXR1cmVVcGRhdGVkLm5leHQoeyBzcGFjZTogW10sIHpvbmU6IG51bGwgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlciA9IG51bGw7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoem9uZS5pZCAhPT0gdGhpcy56b25lSURGaWx0ZXIgJiYgIXRoaXMudXNlclNlcnZpY2UuaXNNdXNldW1Vc2VyKHRoaXMuY3VycmVudFNwYWNlSUQpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlciA9IHpvbmUuaWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRGZWF0dXJlcygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVEb25lLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRGZWF0dXJlcygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuZGVsZXRlT2JzZXJ2YWJsZS5zdWJzY3JpYmUoKGZlYXR1cmUpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRHVlVG9EZWxldGUoZmVhdHVyZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5jcmVhdGVPYnNlcnZhYmxlLnN1YnNjcmliZSgoZmVhdHVyZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50U3BhY2VJRCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVEdWVUb0NyZWF0ZShmZWF0dXJlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qXHJcbiAgICAqIENSVURcclxuICAgICovXHJcbiAgICBhc3luYyBjcmVhdGVGZWF0dXJlKGZlYXR1cmU6IEZlYXR1cmUpOiBQcm9taXNlPEZlYXR1cmU+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZUZlYXR1cmUoZmVhdHVyZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZGVsZXRlRmVhdHVyZShmZWF0dXJlOiBGZWF0dXJlKTogUHJvbWlzZTxGZWF0dXJlPiB7XHJcbiAgICAgICAgY29uc3QgZGVsZXRlZCA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5EZWxldGVGZWF0dXJlKHsgaWQ6IGZlYXR1cmUuaWQgfSk7XHJcbiAgICAgICAgaWYgKGRlbGV0ZWQpIHtcclxuICAgICAgICAgICAgY29uc3QgcG9pID0gYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmdldFBvaUJ5RWxlbWVudElkKGZlYXR1cmUuaWQpO1xyXG4gICAgICAgICAgICBpZiAocG9pKSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuZGVsZXRlUG9pKHBvaS5pZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gZGVsZXRlIGNvbW1lbnRzXHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29tbWVudCBvZiBkZWxldGVkLmNvbW1lbnRzLml0ZW1zKSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmNvbW1lbnRTZXJ2aWNlLmRlbGV0ZUNvbW1lbnQoY29tbWVudC5pZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGRlbGV0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdXBkYXRlRmVhdHVyZShmZWF0dXJlOiBhbnkpOiBQcm9taXNlPEZlYXR1cmU+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLlVwZGF0ZUZlYXR1cmUoZmVhdHVyZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0RmVhdHVyZShpZDogc3RyaW5nKTogUHJvbWlzZTxGZWF0dXJlPiB7XHJcbiAgICAgICAgY29uc3QgZmVhdHVyZSA9IChhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uR2V0RmVhdHVyZShpZCkpIGFzIEZlYXR1cmU7XHJcbiAgICAgICAgZmVhdHVyZS5ldmVudHM/Lml0ZW1zLnNvcnQoKGEsIGIpID0+IGIucmVhbFN0YXJ0RGF0ZSAtIGEucmVhbFN0YXJ0RGF0ZSk7XHJcbiAgICAgICAgdGhpcy5zZXRDb3ZlckltYWdlKGZlYXR1cmUpO1xyXG4gICAgICAgIHRoaXMuc2V0SW1hZ2VzKGZlYXR1cmUpO1xyXG4gICAgICAgIHRoaXMuc2V0VmlkZW9zKGZlYXR1cmUpO1xyXG4gICAgICAgIHRoaXMuc2V0RG9jdW1lbnRzKGZlYXR1cmUpO1xyXG4gICAgICAgIHRoaXMuc2V0QXVkaW8oZmVhdHVyZSk7XHJcbiAgICAgICAgdGhpcy5zZXRFeHRlcm5hbExpbmtzKGZlYXR1cmUpO1xyXG4gICAgICAgIHRoaXMuc2V0RW1iZWRzKGZlYXR1cmUpO1xyXG4gICAgICAgIHRoaXMuc2V0SWZyYW1lcyhmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLmlzQm9va2luZ1BsYWNlKGZlYXR1cmUpO1xyXG4gICAgICAgIHJldHVybiBmZWF0dXJlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBhc3luYyBpbml0RmVhdHVyZXMoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51cGRhdGluZy5uZXh0KHRydWUpO1xyXG4gICAgICAgIHRoaXMuaXNVcGRhdGluZyA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgZmVhdHVyZUxpc3QgPSBhd2FpdCB0aGlzLmdldEZlYXR1cmVzRm9yU3BhY2UodGhpcy5jdXJyZW50U3BhY2VJRCk7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50SGFzaHRhZ3MgPSBhd2FpdCB0aGlzLmhhc2h0YWdTZXJ2aWNlLmdldEhhc2h0YWdzRm9yU3BhY2UoXHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNwYWNlSUQsXHJcbiAgICAgICAgKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmN1cnJlbnRIYXNodGFncyk7XHJcbiAgICAgICAgaWYgKGZlYXR1cmVMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgbGV0IGZpbHRlcmVkRmVhdHVyZXMgPSBbLi4uZmVhdHVyZUxpc3RdO1xyXG4gICAgICAgICAgICBsZXQgZmlsdGVyZWRQb2ludEludGVyZXN0ID0gZmlsdGVyZWRGZWF0dXJlcy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAoZmVhdHVyZSkgPT4gZmVhdHVyZS50eXBlICE9PSBGZWF0dXJlVHlwZS5ERVNLLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBsZXQgZmlsdGVyZWREZXNrcyA9IGZpbHRlcmVkRmVhdHVyZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgKGZlYXR1cmUpID0+IGZlYXR1cmUudHlwZSA9PT0gRmVhdHVyZVR5cGUuREVTSyxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZmVhdHVyZURvbWFpbkZpbHRlcikge1xyXG4gICAgICAgICAgICAgICAgZmlsdGVyZWRQb2ludEludGVyZXN0ID0gZmlsdGVyZWRQb2ludEludGVyZXN0LmZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgICAoZmVhdHVyZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mZWF0dXJlRG9tYWluRmlsdGVyLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZG9tYWluKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmUuZG9tYWluICYmIGRvbWFpbiA9PT0gZmVhdHVyZS5kb21haW4uaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRlc2tEb21haW5GaWx0ZXIpIHtcclxuICAgICAgICAgICAgICAgIGZpbHRlcmVkRGVza3MgPSBmaWx0ZXJlZERlc2tzLmZpbHRlcigoZmVhdHVyZSkgPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlc2tEb21haW5GaWx0ZXIuZmluZChcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGRvbWFpbikgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmUuZG9tYWluICYmIGRvbWFpbiA9PT0gZmVhdHVyZS5kb21haW4uaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZmlsdGVyZWRGZWF0dXJlcyA9IFsuLi5maWx0ZXJlZFBvaW50SW50ZXJlc3QsIC4uLmZpbHRlcmVkRGVza3NdO1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRGZWF0dXJlcy5zcGFjZSA9IGZpbHRlcmVkRmVhdHVyZXMuc29ydChcclxuICAgICAgICAgICAgICAgIChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgLy8gZW1pdCBvbiB0YWdzIHNob3VsZCBiZSBhZnRlciBzZXR0aW5nIGN1cnJlbnQuc3BhY2UgISFcclxuICAgICAgICAgICAgaWYgKHRoaXMuem9uZUlERmlsdGVyKSB7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJlZEZlYXR1cmVzID1cclxuICAgICAgICAgICAgICAgICAgICAoYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlck9iamVjdHNGb3Jab25lKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZEZlYXR1cmVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnpvbmVJREZpbHRlcixcclxuICAgICAgICAgICAgICAgICAgICApKSBhcyBGZWF0dXJlW107XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuZmVhdHVyZVRhZ3MubmV4dChmaWx0ZXJlZEZlYXR1cmVzKTsgLy8gZm9yIHRoaXMgem9uZVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmVhdHVyZXMuem9uZSA9IGZpbHRlcmVkRmVhdHVyZXMuc29ydChcclxuICAgICAgICAgICAgICAgIChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5jdXJyZW50RmVhdHVyZXMpO1xyXG4gICAgICAgICAgICB0aGlzLmZlYXR1cmVVcGRhdGVkLm5leHQodGhpcy5jdXJyZW50RmVhdHVyZXMpOyAvLyBmb3IgbGF0ZXJhbCBtZW51XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5mZWF0dXJlVXBkYXRlZC5uZXh0KHsgc3BhY2U6IFtdLCB6b25lOiBbXSB9KTsgLy8gZm9yIGxhdGVyYWwgbWVudVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVwZGF0aW5nLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuaXNVcGRhdGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldEZlYXR1cmVzRm9yU3BhY2UoXHJcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgICAgIGtlZXBBcmNoaXZlZDogYm9vbGVhbiA9IGZhbHNlLFxyXG4gICAgKTogUHJvbWlzZTxGZWF0dXJlW10+IHtcclxuICAgICAgICBjb25zdCBmZWF0dXJlcyA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5GZWF0dXJlc0J5U3BhY2Uoc3BhY2VJRCkudGhlbihcclxuICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiByZXNwb25zZS5pdGVtcyxcclxuICAgICAgICApO1xyXG4gICAgICAgIGxldCBmZWF0dXJlc0ZvclVzZXIgPVxyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyRmVhdHVyZXNGb3JDdXJyZW50VXNlckluU3BhY2UoXHJcbiAgICAgICAgICAgICAgICBmZWF0dXJlcyxcclxuICAgICAgICAgICAgICAgIHNwYWNlSUQsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgaWYgKCFrZWVwQXJjaGl2ZWQpIHtcclxuICAgICAgICAgICAgZmVhdHVyZXNGb3JVc2VyID0gZmVhdHVyZXNGb3JVc2VyLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIChmZWF0dXJlKSA9PiAhdGhpcy5pc0FyY2hpdmVkKGZlYXR1cmUpLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGNvbnN0IGZlYXR1cmUgb2YgZmVhdHVyZXNGb3JVc2VyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Q292ZXJJbWFnZShmZWF0dXJlKTtcclxuICAgICAgICAgICAgdGhpcy5pc0Jvb2tpbmdQbGFjZShmZWF0dXJlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZlYXR1cmVzRm9yVXNlcjtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRGZWF0dXJlc0J5U3BhY2VXaXRob3V0RmlsdGVyaW5nKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8RmVhdHVyZVtdPiB7XHJcbiAgICAgICAgbGV0IGZlYXR1cmVzID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkZlYXR1cmVzQnlTcGFjZShzcGFjZUlEKS50aGVuKFxyXG4gICAgICAgICAgICAocmVzcG9uc2UpID0+IHJlc3BvbnNlLml0ZW1zLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgZmVhdHVyZXMgPSBmZWF0dXJlcy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChmZWF0dXJlKSA9PiAhdGhpcy5pc0FyY2hpdmVkKGZlYXR1cmUpLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgZm9yIChjb25zdCBmZWF0dXJlIG9mIGZlYXR1cmVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Q292ZXJJbWFnZShmZWF0dXJlKTtcclxuICAgICAgICAgICAgdGhpcy5pc0Jvb2tpbmdQbGFjZShmZWF0dXJlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZlYXR1cmVzO1xyXG4gICAgfVxyXG5cclxuICAgIGlzQm9va2luZ1BsYWNlKGZlYXR1cmU6IEZlYXR1cmUpIHtcclxuICAgICAgICBmZWF0dXJlLmlzQm9va2luZ1BsYWNlID0gZmVhdHVyZS50eXBlID09PSBGZWF0dXJlVHlwZS5ERVNLO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBzZXRDb3ZlckltYWdlKGZlYXR1cmU6IEZlYXR1cmUpIHtcclxuICAgICAgICBjb25zdCBjb3ZlckltYWdlID0gZmVhdHVyZS5jb21tZW50cy5pdGVtcy5maW5kKFxyXG4gICAgICAgICAgICAoY29tKSA9PiBjb20uaXNDb3ZlckltYWdlLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGNvdmVySW1hZ2UpIHtcclxuICAgICAgICAgICAgZmVhdHVyZS5jb3ZlckltYWdlVXJsID0gY292ZXJJbWFnZS5hbm5leGU7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZlYXR1cmUuY29tbWVudHMuaXRlbXMuc29tZSgoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuWU9VVFVCRSkpIHtcclxuICAgICAgICAgICAgY29uc3QgeW91dHViZUNvbW1lbnQgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zLmZpbmQoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLllPVVRVQkUpO1xyXG4gICAgICAgICAgICAvLyB3ZSBjYW4gdXNlIHRoZSBwcmV2aWV3IGltYWdlIG9mIHlvdXR1YmVcclxuICAgICAgICAgICAgZmVhdHVyZS5jb3ZlckltYWdlVXJsID0gYGh0dHBzOi8vaW1nLnlvdXR1YmUuY29tL3ZpLyR7eW91dHViZUNvbW1lbnQuZXh0ZXJuYWxMaW5rfS8wLmpwZ2A7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zLnNvbWUoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLklNQUdFKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICBjb25zdCBpbWFnZUNvbW1lbnQgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuSU1BR0UsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGZlYXR1cmUuY292ZXJJbWFnZVVybCA9IGltYWdlQ29tbWVudC5hbm5leGU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB1cGRhdGVGZWF0dXJlTG9jYXRpb24oXHJcbiAgICAgICAgZmVhdHVyZTogRmVhdHVyZSxcclxuICAgICAgICB0YWdEYXRhOiBNYXR0ZXJ0YWdEYXRhLFxyXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAgICk6IFByb21pc2U8UE9JPiB7XHJcbiAgICAgICAgY29uc3QgcG9pSW5wdXQgPSB7XHJcbiAgICAgICAgICAgIGNvb3JkaW5hdGU6IHRhZ0RhdGEuZ2V0Q29vcmRpbmF0ZVN0cmluZygpLFxyXG4gICAgICAgICAgICB0eXBlOiBmZWF0dXJlLmlzQm9va2luZ1BsYWNlID8gUG9pVHlwZS5ERVNLIDogUG9pVHlwZS5EQVRBLFxyXG4gICAgICAgICAgICBlbGVtZW50SUQ6IGZlYXR1cmUuaWQsXHJcbiAgICAgICAgICAgIG1ldGFkYXRhOiB0YWdEYXRhLmdldE1ldGFkYXRhU3RyaW5nKCksXHJcbiAgICAgICAgICAgIG1hdHRlcnBvcnRTd2VlcElEOiB0YWdEYXRhLmdldFN3ZWVwSUQoKSxcclxuICAgICAgICB9IGFzIFBPSTtcclxuICAgICAgICBjb25zdCBwb2kgPSBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuY3JlYXRlUE9JRm9yU3BhY2VJRChwb2lJbnB1dCk7XHJcbiAgICAgICAgcmV0dXJuIHBvaTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRJbWFnZXMoZmVhdHVyZTogRmVhdHVyZSkge1xyXG4gICAgICAgIGNvbnN0IGltYWdlc0NvbW1lbnRzID0gZmVhdHVyZS5jb21tZW50cy5pdGVtc1xyXG4gICAgICAgICAgICAuZmlsdGVyKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5JTUFHRSlcclxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4KTtcclxuICAgICAgICBjb25zdCBpbWFnZXMgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGltYWdlIG9mIGltYWdlc0NvbW1lbnRzKSB7XHJcbiAgICAgICAgICAgIGltYWdlcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHBhdGg6IGltYWdlLmFubmV4ZSxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBpbWFnZS50aXRsZSxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWFnZS5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgIHNob3dJblRhZzogaW1hZ2Uuc2hvd25JblRhZyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZlYXR1cmUuaW1hZ2VzID0gaW1hZ2VzO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFZpZGVvcyhmZWF0dXJlOiBGZWF0dXJlKSB7XHJcbiAgICAgICAgY29uc3QgdmlkZW9zQ29tbWVudHMgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLlZJREVPIHx8IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5ZT1VUVUJFKVxyXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgpO1xyXG4gICAgICAgIGNvbnN0IHZpZGVvcyA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgdmlkZW8gb2YgdmlkZW9zQ29tbWVudHMpIHtcclxuICAgICAgICAgICAgdmlkZW9zLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgcGF0aDogdmlkZW8udHlwZSA9PT0gQ29tbWVudFR5cGUuWU9VVFVCRSA/ICdodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC8nICsgdmlkZW8uZXh0ZXJuYWxMaW5rIDogdmlkZW8uYW5uZXhlLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHZpZGVvLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHZpZGVvLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogdmlkZW8udHlwZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZlYXR1cmUudmlkZW9zID0gdmlkZW9zO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERvY3VtZW50cyhmZWF0dXJlOiBGZWF0dXJlKSB7XHJcbiAgICAgICAgY29uc3QgZG9jdW1lbnRDb21tZW50cyA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXNcclxuICAgICAgICAgICAgLmZpbHRlcigoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuRE9DVU1FTlQpXHJcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XHJcbiAgICAgICAgY29uc3QgZG9jcyA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgZG9jdW1lbnQgb2YgZG9jdW1lbnRDb21tZW50cykge1xyXG4gICAgICAgICAgICBkb2NzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgcGF0aDogZG9jdW1lbnQuYW5uZXhlLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGRvY3VtZW50LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGRvY3VtZW50LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmVhdHVyZS5kb2N1bWVudHMgPSBkb2NzO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEF1ZGlvKGZlYXR1cmU6IEZlYXR1cmUpIHtcclxuICAgICAgICBjb25zdCBhdWRpb0NvbW1lbnRzID0gZmVhdHVyZS5jb21tZW50cy5pdGVtc1xyXG4gICAgICAgICAgICAuZmlsdGVyKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5BVURJTylcclxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4KTtcclxuICAgICAgICBjb25zdCBhdWRpb3MgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGF1ZGlvIG9mIGF1ZGlvQ29tbWVudHMpIHtcclxuICAgICAgICAgICAgYXVkaW9zLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgcGF0aDogYXVkaW8uYW5uZXhlLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGF1ZGlvLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGF1ZGlvLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmVhdHVyZS5hdWRpb3MgPSBhdWRpb3M7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RXh0ZXJuYWxMaW5rcyhmZWF0dXJlOiBGZWF0dXJlKSB7XHJcbiAgICAgICAgY29uc3QgbGlua3NDb21tZW50cyA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXNcclxuICAgICAgICAgICAgLmZpbHRlcigoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuVVJMKVxyXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgpO1xyXG4gICAgICAgIGNvbnN0IGV4dGVybmFsTGlua3MgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3NDb21tZW50cykge1xyXG4gICAgICAgICAgICBleHRlcm5hbExpbmtzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgcGF0aDogbGluay5leHRlcm5hbExpbmssXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogbGluay50aXRsZSxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBsaW5rLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgc2hvd0luVGFnOiBsaW5rLnNob3duSW5UYWcsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmZWF0dXJlLmV4dGVybmFsTGlua3MgPSBleHRlcm5hbExpbmtzO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEVtYmVkcyhmZWF0dXJlOiBGZWF0dXJlKSB7XHJcbiAgICAgICAgY29uc3QgZW1iZWRDb21tZW50cyA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXNcclxuICAgICAgICAgICAgLmZpbHRlcigoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuRU1CRUQpXHJcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XHJcbiAgICAgICAgY29uc3QgZW1iZWRzID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCBlbWJlZCBvZiBlbWJlZENvbW1lbnRzKSB7XHJcbiAgICAgICAgICAgIGVtYmVkcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHBhdGg6IGVtYmVkLmV4dGVybmFsTGluayxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBlbWJlZC50aXRsZSxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBlbWJlZC5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgIHNob3dJblRhZzogZW1iZWQuc2hvd25JblRhZyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZlYXR1cmUuZW1iZWRzID0gZW1iZWRzO1xyXG4gICAgfVxyXG5cclxuICAgIHNldElmcmFtZXMoZmVhdHVyZTogRmVhdHVyZSkge1xyXG4gICAgICAgIGNvbnN0IGlmcmFtZUNvbW1lbnRzID0gZmVhdHVyZS5jb21tZW50cy5pdGVtc1xyXG4gICAgICAgICAgICAuZmlsdGVyKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5JRlJBTUUpXHJcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XHJcbiAgICAgICAgY29uc3QgaWZyYW1lcyA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgaWZyYW1lIG9mIGlmcmFtZUNvbW1lbnRzKSB7XHJcbiAgICAgICAgICAgIGlmcmFtZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiBpZnJhbWUuZXh0ZXJuYWxMaW5rLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGlmcmFtZS50aXRsZSxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpZnJhbWUuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICBzaG93SW5UYWc6IGlmcmFtZS5zaG93bkluVGFnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmVhdHVyZS5pZnJhbWVzID0gaWZyYW1lcztcclxuICAgIH1cclxuXHJcblxyXG4gICAgYXN5bmMgZ2V0Rmlyc3RGZWF0dXJlRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxGZWF0dXJlPiB7XHJcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBhd2FpdCB0aGlzLmdldEZlYXR1cmVzRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgY29uc3QgZmlyc3QgPSBmZWF0dXJlcy5maW5kKChmZWF0KSA9PiBmZWF0LmluZGV4ID09PSAxKTtcclxuICAgICAgICByZXR1cm4gZmlyc3Q7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdXBkYXRlSWNvbkZvckFsbEZlYXR1cmVzSW5TcGFjZShcclxuICAgICAgICB0YWdJY29uOiBzdHJpbmcsXHJcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgICAgIGNhdGVnb3J5SUQ6IHN0cmluZyA9IG51bGwsXHJcbiAgICApOiBQcm9taXNlPHsgZmVhdHVyZXM6IEZlYXR1cmVbXTsgcG9pczogUE9JW107IH0+IHtcclxuICAgICAgICBsZXQgZmVhdHVyZXMgPSBhd2FpdCB0aGlzLmdldEZlYXR1cmVzRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgaWYgKGNhdGVnb3J5SUQpIHtcclxuICAgICAgICAgICAgZmVhdHVyZXMgPSBmZWF0dXJlcy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAoZmVhdHVyZSkgPT4gZmVhdHVyZS5kb21haW5JRCA9PT0gY2F0ZWdvcnlJRCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcG9pcyA9IGF3YWl0IHRoaXMudXBkYXRlSWNvbkZvckFsbE9iamVjdHMoZmVhdHVyZXMsIHRhZ0ljb24pO1xyXG4gICAgICAgIHJldHVybiB7IGZlYXR1cmVzLCBwb2lzIH07XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0Q3JlYXRlZEluZGljZXNGb3JGZWF0dXJlc0luU3BhY2UoXHJcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgKTogUHJvbWlzZTxudW1iZXJbXT4ge1xyXG4gICAgICAgIGxldCBmZWF0dXJlcyA9IChhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uRmVhdHVyZXNCeVNwYWNlKHNwYWNlSUQpKS5pdGVtcztcclxuICAgICAgICBmZWF0dXJlcyA9IGZlYXR1cmVzLmZpbHRlcigoZmVhdCkgPT4gZmVhdC5pbmRleCk7XHJcbiAgICAgICAgcmV0dXJuIGZlYXR1cmVzLm1hcCgoZmVhdCkgPT4gZmVhdC5pbmRleCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0RGVza3NGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPEZlYXR1cmVbXT4ge1xyXG4gICAgICAgIGNvbnN0IGZlYXR1cmVzID0gYXdhaXQgdGhpcy5nZXRGZWF0dXJlc0ZvclNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgIHJldHVybiBmZWF0dXJlcy5maWx0ZXIoKGZlYXQpID0+IGZlYXQuaXNCb29raW5nUGxhY2UpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyBhcmNoaXZlZCB0aGlzIGZlYXR1cmUgKi9cclxuICAgIGlzQXJjaGl2ZWQoZmVhdHVyZTogRmVhdHVyZSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBmZWF0dXJlLmFyY2hpdmVkRm9yTWlzc2lvbklEXHJcbiAgICAgICAgICAgID8gZmVhdHVyZS5hcmNoaXZlZEZvck1pc3Npb25JRC5pbmNsdWRlcyhcclxuICAgICAgICAgICAgICAgIHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb24oZmVhdHVyZS5zcGFjZUlEKS5pZCxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICA6IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEFyY2hpdmVkKGZlYXR1cmU6IEZlYXR1cmUsIGFyY2hpdmVkOiBib29sZWFuKSB7XHJcbiAgICAgICAgbGV0IGFyY2hpdmVkTGlzdCA9IGZlYXR1cmUuYXJjaGl2ZWRGb3JNaXNzaW9uSURcclxuICAgICAgICAgICAgPyBmZWF0dXJlLmFyY2hpdmVkRm9yTWlzc2lvbklEXHJcbiAgICAgICAgICAgIDogW107XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbklEID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbihmZWF0dXJlLnNwYWNlSUQpLmlkO1xyXG5cclxuICAgICAgICBhcmNoaXZlZExpc3QgPSBhcmNoaXZlZExpc3QuZmlsdGVyKChtKSA9PiBtICE9PSBtaXNzaW9uSUQpO1xyXG5cclxuICAgICAgICBpZiAoYXJjaGl2ZWQpIHtcclxuICAgICAgICAgICAgYXJjaGl2ZWRMaXN0LnB1c2gobWlzc2lvbklEKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZUZlYXR1cmUoe1xyXG4gICAgICAgICAgICBpZDogZmVhdHVyZS5pZCxcclxuICAgICAgICAgICAgYXJjaGl2ZWRGb3JNaXNzaW9uSUQ6IGFyY2hpdmVkTGlzdCxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgYXN5bmMgdXBkYXRlRHVlVG9DcmVhdGUoZmVhdHVyZTogRmVhdHVyZSkge1xyXG4gICAgICAgIHRoaXMuY3VycmVudEZlYXR1cmVzLnNwYWNlLnVuc2hpZnQoZmVhdHVyZSk7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RmVhdHVyZXMuem9uZS51bnNoaWZ0KGZlYXR1cmUpO1xyXG4gICAgICAgIHRoaXMuZmVhdHVyZVVwZGF0ZWQubmV4dCh7XHJcbiAgICAgICAgICAgIHNwYWNlOiB0aGlzLmN1cnJlbnRGZWF0dXJlcy5zcGFjZSxcclxuICAgICAgICAgICAgem9uZTogdGhpcy5jdXJyZW50RmVhdHVyZXMuem9uZSxcclxuICAgICAgICB9KTsgLy8gZm9yIGxhdGVyYWwgbWVudVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZUR1ZVRvRGVsZXRlKGRlbGV0ZWRGZWF0dXJlOiBGZWF0dXJlKSB7XHJcbiAgICAgICAgY29uc3QgZmVhdHVyZSA9IHRoaXMuY3VycmVudEZlYXR1cmVzLnNwYWNlLmZpbmQoXHJcbiAgICAgICAgICAgIChfZmVhdHVyZSkgPT4gX2ZlYXR1cmUuaWQgPT09IGRlbGV0ZWRGZWF0dXJlLmlkLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGZlYXR1cmUpIHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmN1cnJlbnRGZWF0dXJlcy5zcGFjZS5pbmRleE9mKGZlYXR1cmUpO1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRGZWF0dXJlcy5zcGFjZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB6b25lRmVhdHVyZSA9IHRoaXMuY3VycmVudEZlYXR1cmVzLnpvbmUuZmluZChcclxuICAgICAgICAgICAgKF9mZWF0dXJlKSA9PiBfZmVhdHVyZS5pZCA9PT0gZGVsZXRlZEZlYXR1cmUuaWQsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoem9uZUZlYXR1cmUpIHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmN1cnJlbnRGZWF0dXJlcy56b25lLmluZGV4T2Yoem9uZUZlYXR1cmUpO1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRGZWF0dXJlcy56b25lLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZmVhdHVyZVVwZGF0ZWQubmV4dCh7XHJcbiAgICAgICAgICAgIHNwYWNlOiB0aGlzLmN1cnJlbnRGZWF0dXJlcy5zcGFjZSxcclxuICAgICAgICAgICAgem9uZTogdGhpcy5jdXJyZW50RmVhdHVyZXMuem9uZSxcclxuICAgICAgICB9KTsgLy8gZm9yIGxhdGVyYWwgbWVudVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
414
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvZmVhdHVyZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQUFxQztBQUNyQywyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEQsT0FBTyxFQUFvQixXQUFXLEVBQUUsV0FBVyxFQUFPLE9BQU8sRUFBc0IsTUFBTSxxQkFBcUIsQ0FBQztBQUluSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7OztBQVUxRCxNQUFNLE9BQU8sY0FBZSxTQUFRLGlCQUFpQjtJQXlDckM7SUFDQTtJQUVBO0lBQ0E7SUFFQTtJQUNBO0lBL0NaLEdBQUcsQ0FBTSxDQUFDLEtBQUs7SUFFZixjQUFjLEdBR1QsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVuQixlQUFlLEdBQTJDO1FBQ3RELEtBQUssRUFBRSxFQUFFO1FBQ1QsSUFBSSxFQUFFLEVBQUU7S0FDWCxDQUFDO0lBRUYsV0FBVyxHQUErQixJQUFJLGVBQWUsQ0FBWSxJQUFJLENBQUMsQ0FBQztJQUUvRSxlQUFlLEdBQWMsRUFBRSxDQUFDO0lBRWhDLFVBQVUsR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUU3QyxZQUFZLENBQVM7SUFFckIsY0FBYyxDQUFTO0lBRXZCLFFBQVEsR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUUzQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBRW5CLG1CQUFtQixHQUFhLElBQUksQ0FBQztJQUVyQyxnQkFBZ0IsR0FBYSxJQUFJLENBQUM7SUFFbEMsbUJBQW1CLEdB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QUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUM5QyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxjQUFjLENBQUMsRUFBRSxDQUNsRCxDQUFDO1FBQ0YsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNkLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM3RCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztZQUNyQixLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLO1lBQ2pDLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUk7U0FDbEMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CO0lBQzNCLENBQUM7d0dBN2ZRLGNBQWMsa0JBd0NYLG1CQUFtQjs0R0F4Q3RCLGNBQWMsY0FGWCxNQUFNOzs0RkFFVCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBeUNRLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IE1hdHRlcnRhZ0RhdGEgfSBmcm9tIFwiLi4vLi4vbWF0dGVydGFnRGF0YVwiO1xyXG5pbXBvcnQgeyBGZWF0dXJlLCBIYXNodGFnLCBGZWF0dXJlVHlwZSwgQ29tbWVudFR5cGUsIFBPSSwgUG9pVHlwZSwgRXZlbnQsIExldmVsU3RhdHVzIH0gZnJvbSBcIi4uLy4uL3R5cGVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRmlsdGVyU2VydmljZSB9IGZyb20gXCIuLi9maWx0ZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBOYXZpZ2F0b3JTZXJ2aWNlIH0gZnJvbSBcIi4uL25hdmlnYXRvci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEJhc2VVc2VyU2VydmljZSB9IGZyb20gXCIuLi91c2VyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQmFzZU9iamVjdFNlcnZpY2UgfSBmcm9tIFwiLi9iYXNlLW9iamVjdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENvbW1lbnRTZXJ2aWNlIH0gZnJvbSBcIi4vY29tbWVudC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEhhc2h0YWdTZXJ2aWNlIH0gZnJvbSBcIi4vaGFzaHRhZy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4vbmF2aWdhdGlvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFBvaVNlcnZpY2UgfSBmcm9tIFwiLi9wb2kuc2VydmljZVwiO1xyXG5pbXBvcnQge1pvbmVDaGFuZ2VTZXJ2aWNlfSBmcm9tIFwiLi4vem9uZUNoYW5nZS5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEZlYXR1cmVTZXJ2aWNlIGV4dGVuZHMgQmFzZU9iamVjdFNlcnZpY2Uge1xyXG4gICAgQVBJOiBhbnk7IC8vQVdTXHJcblxyXG4gICAgZmVhdHVyZVVwZGF0ZWQ6IFN1YmplY3Q8e1xyXG4gICAgICAgIHNwYWNlOiBGZWF0dXJlW107XHJcbiAgICAgICAgem9uZTogRmVhdHVyZVtdO1xyXG4gICAgfT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIGN1cnJlbnRGZWF0dXJlczogeyBzcGFjZTogRmVhdHVyZVtdOyB6b25lOiBGZWF0dXJlW107IH0gPSB7XHJcbiAgICAgICAgc3BhY2U6IFtdLFxyXG4gICAgICAgIHpvbmU6IFtdLFxyXG4gICAgfTtcclxuXHJcbiAgICBmZWF0dXJlVGFnczogQmVoYXZpb3JTdWJqZWN0PEZlYXR1cmVbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZlYXR1cmVbXT4obnVsbCk7XHJcblxyXG4gICAgZmVhdHVyZUZpbHRlcmVkOiBGZWF0dXJlW10gPSBbXTtcclxuXHJcbiAgICB1cGRhdGVEb25lOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgICB6b25lSURGaWx0ZXI6IHN0cmluZztcclxuXHJcbiAgICBjdXJyZW50U3BhY2VJRDogc3RyaW5nO1xyXG5cclxuICAgIHVwZGF0aW5nOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgICBpc1VwZGF0aW5nID0gZmFsc2U7XHJcblxyXG4gICAgZmVhdHVyZURvbWFpbkZpbHRlcjogc3RyaW5nW10gPSBudWxsO1xyXG5cclxuICAgIGRlc2tEb21haW5GaWx0ZXI6IHN0cmluZ1tdID0gbnVsbDtcclxuXHJcbiAgICBkZXNrQm9va2luZ3NVcGRhdGVkOiBTdWJqZWN0PEV2ZW50W10+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgICBwdWJsaWMgY3VycmVudEhhc2h0YWdzOiBIYXNodGFnW10gPSBbXTtcclxuXHJcbiAgICBjcmVhdGVPYnNlcnZhYmxlOiBTdWJqZWN0PEZlYXR1cmU+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgICBkZWxldGVPYnNlcnZhYmxlOiBTdWJqZWN0PEZlYXR1cmU+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBASW5qZWN0KCdjdXJyZW50QVBJU2VydmljZScpIGFwaUluamVjdGVkOiBhbnksXHJcbiAgICAgICAgcHJpdmF0ZSBuYXZpZ2F0b3JTZXJ2aWNlOiBOYXZpZ2F0b3JTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSxcclxuICAgICAgICBwb2lTZXJ2aWNlOiBQb2lTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgY29tbWVudFNlcnZpY2U6IENvbW1lbnRTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcclxuICAgICAgICBuYXZpZ2F0aW9uU2VydmljZTogTmF2aWdhdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBoYXNodGFnU2VydmljZTogSGFzaHRhZ1NlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSB6b25lQ2hhbmdlU2VydmljZTogWm9uZUNoYW5nZVNlcnZpY2UsXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihwb2lTZXJ2aWNlLCBuYXZpZ2F0aW9uU2VydmljZSk7XHJcbiAgICAgICAgdGhpcy5BUEkgPSBhcGlJbmplY3RlZDtcclxuICAgICAgICB0aGlzLmZlYXR1cmVVcGRhdGVkLnN1YnNjcmliZSgobGlzdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRGZWF0dXJlcyA9IGxpc3Q7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy56b25lQ2hhbmdlU2VydmljZS56b25lQ2hhbmdlLnN1YnNjcmliZSgoem9uZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZUlEID0gdGhpcy5uYXZpZ2F0b3JTZXJ2aWNlLmN1cnJlbnRTcGFjZUlEO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmVhdHVyZVRhZ3MubmV4dChudWxsKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmVhdHVyZVVwZGF0ZWQubmV4dCh7IHNwYWNlOiBbXSwgem9uZTogbnVsbCB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuem9uZUlERmlsdGVyID0gbnVsbDtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh6b25lLmlkICE9PSB0aGlzLnpvbmVJREZpbHRlciAmJiAhdGhpcy51c2VyU2VydmljZS5pc011c2V1bVVzZXIodGhpcy5jdXJyZW50U3BhY2VJRCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuem9uZUlERmlsdGVyID0gem9uZS5pZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdEZlYXR1cmVzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnVwZGF0ZURvbmUuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdEZlYXR1cmVzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5kZWxldGVPYnNlcnZhYmxlLnN1YnNjcmliZSgoZmVhdHVyZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50U3BhY2VJRCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVEdWVUb0RlbGV0ZShmZWF0dXJlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmNyZWF0ZU9ic2VydmFibGUuc3Vic2NyaWJlKChmZWF0dXJlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUR1ZVRvQ3JlYXRlKGZlYXR1cmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLypcclxuICAgICogQ1JVRFxyXG4gICAgKi9cclxuICAgIGFzeW5jIGNyZWF0ZUZlYXR1cmUoZmVhdHVyZTogRmVhdHVyZSk6IFByb21pc2U8RmVhdHVyZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uQ3JlYXRlRmVhdHVyZShmZWF0dXJlKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkZWxldGVGZWF0dXJlKGZlYXR1cmU6IEZlYXR1cmUpOiBQcm9taXNlPEZlYXR1cmU+IHtcclxuICAgICAgICBjb25zdCBkZWxldGVkID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkRlbGV0ZUZlYXR1cmUoeyBpZDogZmVhdHVyZS5pZCB9KTtcclxuICAgICAgICBpZiAoZGVsZXRlZCkge1xyXG4gICAgICAgICAgICBjb25zdCBwb2kgPSBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuZ2V0UG9pQnlFbGVtZW50SWQoZmVhdHVyZS5pZCk7XHJcbiAgICAgICAgICAgIGlmIChwb2kpIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucG9pU2VydmljZS5kZWxldGVQb2kocG9pLmlkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBkZWxldGUgY29tbWVudHNcclxuICAgICAgICAgICAgZm9yIChjb25zdCBjb21tZW50IG9mIGRlbGV0ZWQuY29tbWVudHMuaXRlbXMpIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY29tbWVudFNlcnZpY2UuZGVsZXRlQ29tbWVudChjb21tZW50LmlkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGVsZXRlZDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB1cGRhdGVGZWF0dXJlKGZlYXR1cmU6IGFueSk6IFByb21pc2U8RmVhdHVyZT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uVXBkYXRlRmVhdHVyZShmZWF0dXJlKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRGZWF0dXJlKGlkOiBzdHJpbmcpOiBQcm9taXNlPEZlYXR1cmU+IHtcclxuICAgICAgICBjb25zdCBmZWF0dXJlID0gKGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5HZXRGZWF0dXJlKGlkKSkgYXMgRmVhdHVyZTtcclxuICAgICAgICBmZWF0dXJlLmV2ZW50cz8uaXRlbXMuc29ydCgoYSwgYikgPT4gYi5yZWFsU3RhcnREYXRlIC0gYS5yZWFsU3RhcnREYXRlKTtcclxuICAgICAgICB0aGlzLnNldENvdmVySW1hZ2UoZmVhdHVyZSk7XHJcbiAgICAgICAgdGhpcy5zZXRJbWFnZXMoZmVhdHVyZSk7XHJcbiAgICAgICAgdGhpcy5zZXRWaWRlb3MoZmVhdHVyZSk7XHJcbiAgICAgICAgdGhpcy5zZXREb2N1bWVudHMoZmVhdHVyZSk7XHJcbiAgICAgICAgdGhpcy5zZXRBdWRpbyhmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldEV4dGVybmFsTGlua3MoZmVhdHVyZSk7XHJcbiAgICAgICAgdGhpcy5zZXRFbWJlZHMoZmVhdHVyZSk7XHJcbiAgICAgICAgdGhpcy5zZXRJZnJhbWVzKGZlYXR1cmUpO1xyXG4gICAgICAgIHRoaXMuaXNCb29raW5nUGxhY2UoZmVhdHVyZSk7XHJcbiAgICAgICAgcmV0dXJuIGZlYXR1cmU7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGFzeW5jIGluaXRGZWF0dXJlcygpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVwZGF0aW5nLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5pc1VwZGF0aW5nID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBmZWF0dXJlTGlzdCA9IGF3YWl0IHRoaXMuZ2V0RmVhdHVyZXNGb3JTcGFjZSh0aGlzLmN1cnJlbnRTcGFjZUlEKTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRIYXNodGFncyA9IGF3YWl0IHRoaXMuaGFzaHRhZ1NlcnZpY2UuZ2V0SGFzaHRhZ3NGb3JTcGFjZShcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRCxcclxuICAgICAgICApO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY3VycmVudEhhc2h0YWdzKTtcclxuICAgICAgICBpZiAoZmVhdHVyZUxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBsZXQgZmlsdGVyZWRGZWF0dXJlcyA9IFsuLi5mZWF0dXJlTGlzdF07XHJcbiAgICAgICAgICAgIGxldCBmaWx0ZXJlZFBvaW50SW50ZXJlc3QgPSBmaWx0ZXJlZEZlYXR1cmVzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIChmZWF0dXJlKSA9PiBmZWF0dXJlLnR5cGUgIT09IEZlYXR1cmVUeXBlLkRFU0ssXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGxldCBmaWx0ZXJlZERlc2tzID0gZmlsdGVyZWRGZWF0dXJlcy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAoZmVhdHVyZSkgPT4gZmVhdHVyZS50eXBlID09PSBGZWF0dXJlVHlwZS5ERVNLLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mZWF0dXJlRG9tYWluRmlsdGVyKSB7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJlZFBvaW50SW50ZXJlc3QgPSBmaWx0ZXJlZFBvaW50SW50ZXJlc3QuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgICAgIChmZWF0dXJlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZlYXR1cmVEb21haW5GaWx0ZXIuZmluZChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb21haW4pID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZS5kb21haW4gJiYgZG9tYWluID09PSBmZWF0dXJlLmRvbWFpbi5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMuZGVza0RvbWFpbkZpbHRlcikge1xyXG4gICAgICAgICAgICAgICAgZmlsdGVyZWREZXNrcyA9IGZpbHRlcmVkRGVza3MuZmlsdGVyKChmZWF0dXJlKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVza0RvbWFpbkZpbHRlci5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoZG9tYWluKSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZS5kb21haW4gJiYgZG9tYWluID09PSBmZWF0dXJlLmRvbWFpbi5pZCxcclxuICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmaWx0ZXJlZEZlYXR1cmVzID0gWy4uLmZpbHRlcmVkUG9pbnRJbnRlcmVzdCwgLi4uZmlsdGVyZWREZXNrc107XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZlYXR1cmVzLnNwYWNlID0gZmlsdGVyZWRGZWF0dXJlcy5zb3J0KFxyXG4gICAgICAgICAgICAgICAgKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAvLyBlbWl0IG9uIHRhZ3Mgc2hvdWxkIGJlIGFmdGVyIHNldHRpbmcgY3VycmVudC5zcGFjZSAhIVxyXG4gICAgICAgICAgICBpZiAodGhpcy56b25lSURGaWx0ZXIpIHtcclxuICAgICAgICAgICAgICAgIGZpbHRlcmVkRmVhdHVyZXMgPVxyXG4gICAgICAgICAgICAgICAgICAgIChhd2FpdCB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyT2JqZWN0c0ZvclpvbmUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkRmVhdHVyZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuem9uZUlERmlsdGVyLFxyXG4gICAgICAgICAgICAgICAgICAgICkpIGFzIEZlYXR1cmVbXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5mZWF0dXJlVGFncy5uZXh0KGZpbHRlcmVkRmVhdHVyZXMpOyAvLyBmb3IgdGhpcyB6b25lXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRGZWF0dXJlcy56b25lID0gZmlsdGVyZWRGZWF0dXJlcy5zb3J0KFxyXG4gICAgICAgICAgICAgICAgKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4LFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmN1cnJlbnRGZWF0dXJlcyk7XHJcbiAgICAgICAgICAgIHRoaXMuZmVhdHVyZVVwZGF0ZWQubmV4dCh0aGlzLmN1cnJlbnRGZWF0dXJlcyk7IC8vIGZvciBsYXRlcmFsIG1lbnVcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZlYXR1cmVVcGRhdGVkLm5leHQoeyBzcGFjZTogW10sIHpvbmU6IFtdIH0pOyAvLyBmb3IgbGF0ZXJhbCBtZW51XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudXBkYXRpbmcubmV4dChmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5pc1VwZGF0aW5nID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0RmVhdHVyZXNGb3JTcGFjZShcclxuICAgICAgICBzcGFjZUlEOiBzdHJpbmcsXHJcbiAgICAgICAga2VlcEFyY2hpdmVkOiBib29sZWFuID0gZmFsc2UsXHJcbiAgICApOiBQcm9taXNlPEZlYXR1cmVbXT4ge1xyXG4gICAgICAgIGNvbnN0IGZlYXR1cmVzID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkZlYXR1cmVzQnlTcGFjZShzcGFjZUlEKS50aGVuKFxyXG4gICAgICAgICAgICAocmVzcG9uc2UpID0+IHJlc3BvbnNlLml0ZW1zLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgbGV0IGZlYXR1cmVzRm9yVXNlciA9XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJGZWF0dXJlc0ZvckN1cnJlbnRVc2VySW5TcGFjZShcclxuICAgICAgICAgICAgICAgIGZlYXR1cmVzLFxyXG4gICAgICAgICAgICAgICAgc3BhY2VJRCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICBpZiAoIWtlZXBBcmNoaXZlZCkge1xyXG4gICAgICAgICAgICBmZWF0dXJlc0ZvclVzZXIgPSBmZWF0dXJlc0ZvclVzZXIuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgKGZlYXR1cmUpID0+ICF0aGlzLmlzQXJjaGl2ZWQoZmVhdHVyZSksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAoY29uc3QgZmVhdHVyZSBvZiBmZWF0dXJlc0ZvclVzZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRDb3ZlckltYWdlKGZlYXR1cmUpO1xyXG4gICAgICAgICAgICB0aGlzLmlzQm9va2luZ1BsYWNlKGZlYXR1cmUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmVhdHVyZXNGb3JVc2VyO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldEZlYXR1cmVzQnlTcGFjZVdpdGhvdXRGaWx0ZXJpbmcoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxGZWF0dXJlW10+IHtcclxuICAgICAgICBsZXQgZmVhdHVyZXMgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uRmVhdHVyZXNCeVNwYWNlKHNwYWNlSUQpLnRoZW4oXHJcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4gcmVzcG9uc2UuaXRlbXMsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBmZWF0dXJlcyA9IGZlYXR1cmVzLmZpbHRlcihcclxuICAgICAgICAgICAgKGZlYXR1cmUpID0+ICF0aGlzLmlzQXJjaGl2ZWQoZmVhdHVyZSksXHJcbiAgICAgICAgKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGZlYXR1cmUgb2YgZmVhdHVyZXMpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRDb3ZlckltYWdlKGZlYXR1cmUpO1xyXG4gICAgICAgICAgICB0aGlzLmlzQm9va2luZ1BsYWNlKGZlYXR1cmUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmVhdHVyZXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIEVWRVJZIGZlYXR1cmUgb2YgYSBzcGFjZSwgZm9sbG93aW5nIGBuZXh0VG9rZW5gIHVudGlsIHRoZSBpbmRleCBpc1xyXG4gICAgICogZXhoYXVzdGVkLCB3aXRoIG5vIHVzZXIvYXJjaGl2ZSBmaWx0ZXJpbmcgYXQgYWxsLlxyXG4gICAgICpcclxuICAgICAqIGBnZXRGZWF0dXJlc0J5U3BhY2VXaXRob3V0RmlsdGVyaW5nKClgIHJlYWRzIGEgc2luZ2xlIHBhZ2UgKHRoZSBBcHBTeW5jIGRlZmF1bHRcclxuICAgICAqIGNhcHMgaXQgYXQgMTAwIGl0ZW1zKSBhbmQgY2FsbHMgYGlzQXJjaGl2ZWQoKWAsIHdoaWNoIGRlcmVmZXJlbmNlcyB0aGUgY3VycmVudFxyXG4gICAgICogdXNlcidzIG1pc3Npb24gT04gVEhBVCBTUEFDRSDigJQgc28gaXQgYm90aCB0cnVuY2F0ZXMgbGFyZ2Ugc3BhY2VzIGFuZCB0aHJvd3MgZm9yIGFcclxuICAgICAqIHNwYWNlIHRoZSBvcGVyYXRvciBoYXMgbm8gbWlzc2lvbiBvbi4gRHVwbGljYXRpb24gaGFzIHRvIHNlZSB0aGUgcmF3LCBjb21wbGV0ZVxyXG4gICAgICogbGlzdCwgaGVuY2UgdGhpcyBzZXBhcmF0ZSBhY2Nlc3NvciByYXRoZXIgdGhhbiBhIGNoYW5nZSBvZiB0aGUgZXhpc3Rpbmcgb25lLlxyXG4gICAgICovXHJcbiAgICBhc3luYyBnZXRBbGxGZWF0dXJlc0J5U3BhY2VSYXcoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxGZWF0dXJlW10+IHtcclxuICAgICAgICBpZiAoIXNwYWNlSUQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBhbGw6IEZlYXR1cmVbXSA9IFtdO1xyXG4gICAgICAgIGxldCBuZXh0VG9rZW46IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgICAgICBkbyB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhZ2UgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uRmVhdHVyZXNCeVNwYWNlKFxyXG4gICAgICAgICAgICAgICAgc3BhY2VJRCxcclxuICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIDEwMDAsXHJcbiAgICAgICAgICAgICAgICBuZXh0VG9rZW4sXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChwYWdlPy5pdGVtcz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgYWxsLnB1c2goLi4ucGFnZS5pdGVtcy5maWx0ZXIoKGl0ZW06IEZlYXR1cmUgfCBudWxsKSA9PiAhIWl0ZW0pKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBuZXh0VG9rZW4gPSBwYWdlPy5uZXh0VG9rZW4gPz8gbnVsbDtcclxuICAgICAgICB9IHdoaWxlIChuZXh0VG9rZW4pO1xyXG5cclxuICAgICAgICByZXR1cm4gYWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlzQm9va2luZ1BsYWNlKGZlYXR1cmU6IEZlYXR1cmUpIHtcclxuICAgICAgICBmZWF0dXJlLmlzQm9va2luZ1BsYWNlID0gZmVhdHVyZS50eXBlID09PSBGZWF0dXJlVHlwZS5ERVNLO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBzZXRDb3ZlckltYWdlKGZlYXR1cmU6IEZlYXR1cmUpIHtcclxuICAgICAgICBjb25zdCBjb3ZlckltYWdlID0gZmVhdHVyZS5jb21tZW50cy5pdGVtcy5maW5kKFxyXG4gICAgICAgICAgICAoY29tKSA9PiBjb20uaXNDb3ZlckltYWdlLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGNvdmVySW1hZ2UpIHtcclxuICAgICAgICAgICAgZmVhdHVyZS5jb3ZlckltYWdlVXJsID0gY292ZXJJbWFnZS5hbm5leGU7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZlYXR1cmUuY29tbWVudHMuaXRlbXMuc29tZSgoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuWU9VVFVCRSkpIHtcclxuICAgICAgICAgICAgY29uc3QgeW91dHViZUNvbW1lbnQgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zLmZpbmQoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLllPVVRVQkUpO1xyXG4gICAgICAgICAgICAvLyB3ZSBjYW4gdXNlIHRoZSBwcmV2aWV3IGltYWdlIG9mIHlvdXR1YmVcclxuICAgICAgICAgICAgZmVhdHVyZS5jb3ZlckltYWdlVXJsID0gYGh0dHBzOi8vaW1nLnlvdXR1YmUuY29tL3ZpLyR7eW91dHViZUNvbW1lbnQuZXh0ZXJuYWxMaW5rfS8wLmpwZ2A7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zLnNvbWUoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLklNQUdFKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICBjb25zdCBpbWFnZUNvbW1lbnQgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuSU1BR0UsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGZlYXR1cmUuY292ZXJJbWFnZVVybCA9IGltYWdlQ29tbWVudC5hbm5leGU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB1cGRhdGVGZWF0dXJlTG9jYXRpb24oXHJcbiAgICAgICAgZmVhdHVyZTogRmVhdHVyZSxcclxuICAgICAgICB0YWdEYXRhOiBNYXR0ZXJ0YWdEYXRhLFxyXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAgICk6IFByb21pc2U8UE9JPiB7XHJcbiAgICAgICAgY29uc3QgcG9pSW5wdXQgPSB7XHJcbiAgICAgICAgICAgIGNvb3JkaW5hdGU6IHRhZ0RhdGEuZ2V0Q29vcmRpbmF0ZVN0cmluZygpLFxyXG4gICAgICAgICAgICB0eXBlOiBmZWF0dXJlLmlzQm9va2luZ1BsYWNlID8gUG9pVHlwZS5ERVNLIDogUG9pVHlwZS5EQVRBLFxyXG4gICAgICAgICAgICBlbGVtZW50SUQ6IGZlYXR1cmUuaWQsXHJcbiAgICAgICAgICAgIG1ldGFkYXRhOiB0YWdEYXRhLmdldE1ldGFkYXRhU3RyaW5nKCksXHJcbiAgICAgICAgICAgIG1hdHRlcnBvcnRTd2VlcElEOiB0YWdEYXRhLmdldFN3ZWVwSUQoKSxcclxuICAgICAgICB9IGFzIFBPSTtcclxuICAgICAgICBjb25zdCBwb2kgPSBhd2FpdCB0aGlzLnBvaVNlcnZpY2UuY3JlYXRlUE9JRm9yU3BhY2VJRChwb2lJbnB1dCk7XHJcbiAgICAgICAgcmV0dXJuIHBvaTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRJbWFnZXMoZmVhdHVyZTogRmVhdHVyZSkge1xyXG4gICAgICAgIGNvbnN0IGltYWdlc0NvbW1lbnRzID0gZmVhdHVyZS5jb21tZW50cy5pdGVtc1xyXG4gICAgICAgICAgICAuZmlsdGVyKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5JTUFHRSlcclxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4KTtcclxuICAgICAgICBjb25zdCBpbWFnZXMgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGltYWdlIG9mIGltYWdlc0NvbW1lbnRzKSB7XHJcbiAgICAgICAgICAgIGltYWdlcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHBhdGg6IGltYWdlLmFubmV4ZSxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBpbWFnZS50aXRsZSxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpbWFnZS5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgIHNob3dJblRhZzogaW1hZ2Uuc2hvd25JblRhZyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZlYXR1cmUuaW1hZ2VzID0gaW1hZ2VzO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFZpZGVvcyhmZWF0dXJlOiBGZWF0dXJlKSB7XHJcbiAgICAgICAgY29uc3QgdmlkZW9zQ29tbWVudHMgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLlZJREVPIHx8IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5ZT1VUVUJFKVxyXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgpO1xyXG4gICAgICAgIGNvbnN0IHZpZGVvcyA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgdmlkZW8gb2YgdmlkZW9zQ29tbWVudHMpIHtcclxuICAgICAgICAgICAgdmlkZW9zLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgcGF0aDogdmlkZW8udHlwZSA9PT0gQ29tbWVudFR5cGUuWU9VVFVCRSA/ICdodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC8nICsgdmlkZW8uZXh0ZXJuYWxMaW5rIDogdmlkZW8uYW5uZXhlLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHZpZGVvLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHZpZGVvLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogdmlkZW8udHlwZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZlYXR1cmUudmlkZW9zID0gdmlkZW9zO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERvY3VtZW50cyhmZWF0dXJlOiBGZWF0dXJlKSB7XHJcbiAgICAgICAgY29uc3QgZG9jdW1lbnRDb21tZW50cyA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXNcclxuICAgICAgICAgICAgLmZpbHRlcigoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuRE9DVU1FTlQpXHJcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XHJcbiAgICAgICAgY29uc3QgZG9jcyA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgZG9jdW1lbnQgb2YgZG9jdW1lbnRDb21tZW50cykge1xyXG4gICAgICAgICAgICBkb2NzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgcGF0aDogZG9jdW1lbnQuYW5uZXhlLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGRvY3VtZW50LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGRvY3VtZW50LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmVhdHVyZS5kb2N1bWVudHMgPSBkb2NzO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEF1ZGlvKGZlYXR1cmU6IEZlYXR1cmUpIHtcclxuICAgICAgICBjb25zdCBhdWRpb0NvbW1lbnRzID0gZmVhdHVyZS5jb21tZW50cy5pdGVtc1xyXG4gICAgICAgICAgICAuZmlsdGVyKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5BVURJTylcclxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4KTtcclxuICAgICAgICBjb25zdCBhdWRpb3MgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGF1ZGlvIG9mIGF1ZGlvQ29tbWVudHMpIHtcclxuICAgICAgICAgICAgYXVkaW9zLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgcGF0aDogYXVkaW8uYW5uZXhlLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGF1ZGlvLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGF1ZGlvLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmVhdHVyZS5hdWRpb3MgPSBhdWRpb3M7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RXh0ZXJuYWxMaW5rcyhmZWF0dXJlOiBGZWF0dXJlKSB7XHJcbiAgICAgICAgY29uc3QgbGlua3NDb21tZW50cyA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXNcclxuICAgICAgICAgICAgLmZpbHRlcigoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuVVJMKVxyXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgpO1xyXG4gICAgICAgIGNvbnN0IGV4dGVybmFsTGlua3MgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3NDb21tZW50cykge1xyXG4gICAgICAgICAgICBleHRlcm5hbExpbmtzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgcGF0aDogbGluay5leHRlcm5hbExpbmssXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogbGluay50aXRsZSxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBsaW5rLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgc2hvd0luVGFnOiBsaW5rLnNob3duSW5UYWcsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmZWF0dXJlLmV4dGVybmFsTGlua3MgPSBleHRlcm5hbExpbmtzO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEVtYmVkcyhmZWF0dXJlOiBGZWF0dXJlKSB7XHJcbiAgICAgICAgY29uc3QgZW1iZWRDb21tZW50cyA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXNcclxuICAgICAgICAgICAgLmZpbHRlcigoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuRU1CRUQpXHJcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XHJcbiAgICAgICAgY29uc3QgZW1iZWRzID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCBlbWJlZCBvZiBlbWJlZENvbW1lbnRzKSB7XHJcbiAgICAgICAgICAgIGVtYmVkcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHBhdGg6IGVtYmVkLmV4dGVybmFsTGluayxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBlbWJlZC50aXRsZSxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBlbWJlZC5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgIHNob3dJblRhZzogZW1iZWQuc2hvd25JblRhZyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZlYXR1cmUuZW1iZWRzID0gZW1iZWRzO1xyXG4gICAgfVxyXG5cclxuICAgIHNldElmcmFtZXMoZmVhdHVyZTogRmVhdHVyZSkge1xyXG4gICAgICAgIGNvbnN0IGlmcmFtZUNvbW1lbnRzID0gZmVhdHVyZS5jb21tZW50cy5pdGVtc1xyXG4gICAgICAgICAgICAuZmlsdGVyKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5JRlJBTUUpXHJcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XHJcbiAgICAgICAgY29uc3QgaWZyYW1lcyA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgaWZyYW1lIG9mIGlmcmFtZUNvbW1lbnRzKSB7XHJcbiAgICAgICAgICAgIGlmcmFtZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiBpZnJhbWUuZXh0ZXJuYWxMaW5rLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGlmcmFtZS50aXRsZSxcclxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBpZnJhbWUuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICBzaG93SW5UYWc6IGlmcmFtZS5zaG93bkluVGFnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmVhdHVyZS5pZnJhbWVzID0gaWZyYW1lcztcclxuICAgIH1cclxuXHJcblxyXG4gICAgYXN5bmMgZ2V0Rmlyc3RGZWF0dXJlRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxGZWF0dXJlPiB7XHJcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBhd2FpdCB0aGlzLmdldEZlYXR1cmVzRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgY29uc3QgZmlyc3QgPSBmZWF0dXJlcy5maW5kKChmZWF0KSA9PiBmZWF0LmluZGV4ID09PSAxKTtcclxuICAgICAgICByZXR1cm4gZmlyc3Q7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdXBkYXRlSWNvbkZvckFsbEZlYXR1cmVzSW5TcGFjZShcclxuICAgICAgICB0YWdJY29uOiBzdHJpbmcsXHJcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgICAgIGNhdGVnb3J5SUQ6IHN0cmluZyA9IG51bGwsXHJcbiAgICApOiBQcm9taXNlPHsgZmVhdHVyZXM6IEZlYXR1cmVbXTsgcG9pczogUE9JW107IH0+IHtcclxuICAgICAgICBsZXQgZmVhdHVyZXMgPSBhd2FpdCB0aGlzLmdldEZlYXR1cmVzRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgaWYgKGNhdGVnb3J5SUQpIHtcclxuICAgICAgICAgICAgZmVhdHVyZXMgPSBmZWF0dXJlcy5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAoZmVhdHVyZSkgPT4gZmVhdHVyZS5kb21haW5JRCA9PT0gY2F0ZWdvcnlJRCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcG9pcyA9IGF3YWl0IHRoaXMudXBkYXRlSWNvbkZvckFsbE9iamVjdHMoZmVhdHVyZXMsIHRhZ0ljb24pO1xyXG4gICAgICAgIHJldHVybiB7IGZlYXR1cmVzLCBwb2lzIH07XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0Q3JlYXRlZEluZGljZXNGb3JGZWF0dXJlc0luU3BhY2UoXHJcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgKTogUHJvbWlzZTxudW1iZXJbXT4ge1xyXG4gICAgICAgIGxldCBmZWF0dXJlcyA9IChhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uRmVhdHVyZXNCeVNwYWNlKHNwYWNlSUQpKS5pdGVtcztcclxuICAgICAgICBmZWF0dXJlcyA9IGZlYXR1cmVzLmZpbHRlcigoZmVhdCkgPT4gZmVhdC5pbmRleCk7XHJcbiAgICAgICAgcmV0dXJuIGZlYXR1cmVzLm1hcCgoZmVhdCkgPT4gZmVhdC5pbmRleCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0RGVza3NGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPEZlYXR1cmVbXT4ge1xyXG4gICAgICAgIGNvbnN0IGZlYXR1cmVzID0gYXdhaXQgdGhpcy5nZXRGZWF0dXJlc0ZvclNwYWNlKHNwYWNlSUQpO1xyXG4gICAgICAgIHJldHVybiBmZWF0dXJlcy5maWx0ZXIoKGZlYXQpID0+IGZlYXQuaXNCb29raW5nUGxhY2UpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgY3VycmVudCB1c2VyIGhhcyBhcmNoaXZlZCB0aGlzIGZlYXR1cmUgKi9cclxuICAgIGlzQXJjaGl2ZWQoZmVhdHVyZTogRmVhdHVyZSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBmZWF0dXJlLmFyY2hpdmVkRm9yTWlzc2lvbklEXHJcbiAgICAgICAgICAgID8gZmVhdHVyZS5hcmNoaXZlZEZvck1pc3Npb25JRC5pbmNsdWRlcyhcclxuICAgICAgICAgICAgICAgIHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb24oZmVhdHVyZS5zcGFjZUlEKS5pZCxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICA6IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEFyY2hpdmVkKGZlYXR1cmU6IEZlYXR1cmUsIGFyY2hpdmVkOiBib29sZWFuKSB7XHJcbiAgICAgICAgbGV0IGFyY2hpdmVkTGlzdCA9IGZlYXR1cmUuYXJjaGl2ZWRGb3JNaXNzaW9uSURcclxuICAgICAgICAgICAgPyBmZWF0dXJlLmFyY2hpdmVkRm9yTWlzc2lvbklEXHJcbiAgICAgICAgICAgIDogW107XHJcbiAgICAgICAgY29uc3QgbWlzc2lvbklEID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbihmZWF0dXJlLnNwYWNlSUQpLmlkO1xyXG5cclxuICAgICAgICBhcmNoaXZlZExpc3QgPSBhcmNoaXZlZExpc3QuZmlsdGVyKChtKSA9PiBtICE9PSBtaXNzaW9uSUQpO1xyXG5cclxuICAgICAgICBpZiAoYXJjaGl2ZWQpIHtcclxuICAgICAgICAgICAgYXJjaGl2ZWRMaXN0LnB1c2gobWlzc2lvbklEKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZUZlYXR1cmUoe1xyXG4gICAgICAgICAgICBpZDogZmVhdHVyZS5pZCxcclxuICAgICAgICAgICAgYXJjaGl2ZWRGb3JNaXNzaW9uSUQ6IGFyY2hpdmVkTGlzdCxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgYXN5bmMgdXBkYXRlRHVlVG9DcmVhdGUoZmVhdHVyZTogRmVhdHVyZSkge1xyXG4gICAgICAgIHRoaXMuY3VycmVudEZlYXR1cmVzLnNwYWNlLnVuc2hpZnQoZmVhdHVyZSk7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RmVhdHVyZXMuem9uZS51bnNoaWZ0KGZlYXR1cmUpO1xyXG4gICAgICAgIHRoaXMuZmVhdHVyZVVwZGF0ZWQubmV4dCh7XHJcbiAgICAgICAgICAgIHNwYWNlOiB0aGlzLmN1cnJlbnRGZWF0dXJlcy5zcGFjZSxcclxuICAgICAgICAgICAgem9uZTogdGhpcy5jdXJyZW50RmVhdHVyZXMuem9uZSxcclxuICAgICAgICB9KTsgLy8gZm9yIGxhdGVyYWwgbWVudVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZUR1ZVRvRGVsZXRlKGRlbGV0ZWRGZWF0dXJlOiBGZWF0dXJlKSB7XHJcbiAgICAgICAgY29uc3QgZmVhdHVyZSA9IHRoaXMuY3VycmVudEZlYXR1cmVzLnNwYWNlLmZpbmQoXHJcbiAgICAgICAgICAgIChfZmVhdHVyZSkgPT4gX2ZlYXR1cmUuaWQgPT09IGRlbGV0ZWRGZWF0dXJlLmlkLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGZlYXR1cmUpIHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmN1cnJlbnRGZWF0dXJlcy5zcGFjZS5pbmRleE9mKGZlYXR1cmUpO1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRGZWF0dXJlcy5zcGFjZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB6b25lRmVhdHVyZSA9IHRoaXMuY3VycmVudEZlYXR1cmVzLnpvbmUuZmluZChcclxuICAgICAgICAgICAgKF9mZWF0dXJlKSA9PiBfZmVhdHVyZS5pZCA9PT0gZGVsZXRlZEZlYXR1cmUuaWQsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoem9uZUZlYXR1cmUpIHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmN1cnJlbnRGZWF0dXJlcy56b25lLmluZGV4T2Yoem9uZUZlYXR1cmUpO1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRGZWF0dXJlcy56b25lLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZmVhdHVyZVVwZGF0ZWQubmV4dCh7XHJcbiAgICAgICAgICAgIHNwYWNlOiB0aGlzLmN1cnJlbnRGZWF0dXJlcy5zcGFjZSxcclxuICAgICAgICAgICAgem9uZTogdGhpcy5jdXJyZW50RmVhdHVyZXMuem9uZSxcclxuICAgICAgICB9KTsgLy8gZm9yIGxhdGVyYWwgbWVudVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -10,6 +10,33 @@ export class HashtagService {
|
|
|
10
10
|
async getHashtag(hashtagID) {
|
|
11
11
|
return this.API.__proto__.GetHashtag(hashtagID);
|
|
12
12
|
}
|
|
13
|
+
/*
|
|
14
|
+
* ---------------------------------------------------------------------------
|
|
15
|
+
* Pure data access — NO side effect on currentHashtags / currentSpaceID.
|
|
16
|
+
*
|
|
17
|
+
* `currentHashtags` is shared UI state read by HashtagFromIdPipe to render a
|
|
18
|
+
* keyword's name. Batch work (space duplication, export, admin tooling) touches
|
|
19
|
+
* hashtags of spaces the operator is not editing, and must not reshape what the
|
|
20
|
+
* screens are displaying — hence this side-effect-free trio.
|
|
21
|
+
* ---------------------------------------------------------------------------
|
|
22
|
+
*/
|
|
23
|
+
/** Reads a space's keywords without touching the shared cache. */
|
|
24
|
+
async listHashtagsForSpace(spaceID) {
|
|
25
|
+
return this.API.__proto__.HashtagsBySpace(spaceID).then((response) => response.items);
|
|
26
|
+
}
|
|
27
|
+
/** Creates a keyword in a space without adding it to the shared cache. */
|
|
28
|
+
async createHashtagForSpace(name, spaceID) {
|
|
29
|
+
return this.API.__proto__.CreateHashtag({ name, spaceID });
|
|
30
|
+
}
|
|
31
|
+
/** Deletes a keyword without touching the shared cache. */
|
|
32
|
+
async deleteHashtagById(hashtagID) {
|
|
33
|
+
return this.API.__proto__.DeleteHashtag({ id: hashtagID });
|
|
34
|
+
}
|
|
35
|
+
/*
|
|
36
|
+
* ---------------------------------------------------------------------------
|
|
37
|
+
* UI-facing operations — same actions, plus maintenance of the shared cache.
|
|
38
|
+
* ---------------------------------------------------------------------------
|
|
39
|
+
*/
|
|
13
40
|
async createHashtag(hashtag) {
|
|
14
41
|
const hashtagCreated = await this.API.__proto__.CreateHashtag(hashtag);
|
|
15
42
|
this.currentHashtags.push(hashtagCreated);
|
|
@@ -23,7 +50,7 @@ export class HashtagService {
|
|
|
23
50
|
return this.currentHashtags;
|
|
24
51
|
}
|
|
25
52
|
this.currentSpaceID = spaceID;
|
|
26
|
-
return this.
|
|
53
|
+
return this.listHashtagsForSpace(spaceID);
|
|
27
54
|
}
|
|
28
55
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HashtagService, deps: [{ token: 'currentAPIService' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
29
56
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HashtagService, providedIn: "root" });
|
|
@@ -37,4 +64,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
37
64
|
type: Inject,
|
|
38
65
|
args: ['currentAPIService']
|
|
39
66
|
}] }] });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaHRhZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvaGFzaHRhZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU1uRCxNQUFNLE9BQU8sY0FBYztJQUN2QixjQUFjLENBQVM7SUFFdkIsZUFBZSxHQUFjLEVBQUUsQ0FBQztJQUVoQyxHQUFHLENBQU07SUFFVCxZQUF5QyxXQUFnQjtRQUNyRCxJQUFJLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFpQjtRQUM5QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBRUgsa0VBQWtFO0lBQ2xFLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxPQUFlO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDbkQsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQy9CLENBQUM7SUFDTixDQUFDO0lBRUQsMEVBQTBFO0lBQzFFLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxJQUFZLEVBQUUsT0FBZTtRQUNyRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCwyREFBMkQ7SUFDM0QsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFNBQWlCO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7O09BSUc7SUFFSCxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQWdCO1FBQ2hDLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sY0FBYyxDQUFDO0lBQzFCLENBQUM7SUFFRCxLQUFLLENBQUMsbUJBQW1CLENBQUMsVUFBa0IsSUFBSTtRQUM1QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDWCxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzNELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQy9ELENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUMvQixDQUFDO1lBQ04sQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUMsQ0FBQzt3R0FsRVEsY0FBYyxrQkFPSCxtQkFBbUI7NEdBUDlCLGNBQWMsY0FGWCxNQUFNOzs0RkFFVCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBUWdCLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSGFzaHRhZywgTm9kZSB9IGZyb20gXCIuLi8uLi90eXBlcy5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEhhc2h0YWdTZXJ2aWNlIHtcclxuICAgIGN1cnJlbnRTcGFjZUlEOiBzdHJpbmc7XHJcblxyXG4gICAgY3VycmVudEhhc2h0YWdzOiBIYXNodGFnW10gPSBbXTtcclxuXHJcbiAgICBBUEk6IGFueTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KCdjdXJyZW50QVBJU2VydmljZScpIGFwaUluamVjdGVkOiBhbnkpIHtcclxuICAgICAgICB0aGlzLkFQSSA9IGFwaUluamVjdGVkO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldEhhc2h0YWcoaGFzaHRhZ0lEOiBzdHJpbmcpOiBQcm9taXNlPEhhc2h0YWc+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkdldEhhc2h0YWcoaGFzaHRhZ0lEKTtcclxuICAgIH1cclxuXHJcbiAgICAvKlxyXG4gICAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAgKiBQdXJlIGRhdGEgYWNjZXNzIOKAlCBOTyBzaWRlIGVmZmVjdCBvbiBjdXJyZW50SGFzaHRhZ3MgLyBjdXJyZW50U3BhY2VJRC5cclxuICAgICAqXHJcbiAgICAgKiBgY3VycmVudEhhc2h0YWdzYCBpcyBzaGFyZWQgVUkgc3RhdGUgcmVhZCBieSBIYXNodGFnRnJvbUlkUGlwZSB0byByZW5kZXIgYVxyXG4gICAgICoga2V5d29yZCdzIG5hbWUuIEJhdGNoIHdvcmsgKHNwYWNlIGR1cGxpY2F0aW9uLCBleHBvcnQsIGFkbWluIHRvb2xpbmcpIHRvdWNoZXNcclxuICAgICAqIGhhc2h0YWdzIG9mIHNwYWNlcyB0aGUgb3BlcmF0b3IgaXMgbm90IGVkaXRpbmcsIGFuZCBtdXN0IG5vdCByZXNoYXBlIHdoYXQgdGhlXHJcbiAgICAgKiBzY3JlZW5zIGFyZSBkaXNwbGF5aW5nIOKAlCBoZW5jZSB0aGlzIHNpZGUtZWZmZWN0LWZyZWUgdHJpby5cclxuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICovXHJcblxyXG4gICAgLyoqIFJlYWRzIGEgc3BhY2UncyBrZXl3b3JkcyB3aXRob3V0IHRvdWNoaW5nIHRoZSBzaGFyZWQgY2FjaGUuICovXHJcbiAgICBhc3luYyBsaXN0SGFzaHRhZ3NGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPEhhc2h0YWdbXT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uSGFzaHRhZ3NCeVNwYWNlKHNwYWNlSUQpLnRoZW4oXHJcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4gcmVzcG9uc2UuaXRlbXMsXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQ3JlYXRlcyBhIGtleXdvcmQgaW4gYSBzcGFjZSB3aXRob3V0IGFkZGluZyBpdCB0byB0aGUgc2hhcmVkIGNhY2hlLiAqL1xyXG4gICAgYXN5bmMgY3JlYXRlSGFzaHRhZ0ZvclNwYWNlKG5hbWU6IHN0cmluZywgc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxIYXNodGFnPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVIYXNodGFnKHsgbmFtZSwgc3BhY2VJRCB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogRGVsZXRlcyBhIGtleXdvcmQgd2l0aG91dCB0b3VjaGluZyB0aGUgc2hhcmVkIGNhY2hlLiAqL1xyXG4gICAgYXN5bmMgZGVsZXRlSGFzaHRhZ0J5SWQoaGFzaHRhZ0lEOiBzdHJpbmcpOiBQcm9taXNlPEhhc2h0YWc+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkRlbGV0ZUhhc2h0YWcoeyBpZDogaGFzaHRhZ0lEIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qXHJcbiAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAqIFVJLWZhY2luZyBvcGVyYXRpb25zIOKAlCBzYW1lIGFjdGlvbnMsIHBsdXMgbWFpbnRlbmFuY2Ugb2YgdGhlIHNoYXJlZCBjYWNoZS5cclxuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICovXHJcblxyXG4gICAgYXN5bmMgY3JlYXRlSGFzaHRhZyhoYXNodGFnOiBIYXNodGFnKTogUHJvbWlzZTxIYXNodGFnPiB7XHJcbiAgICAgICAgY29uc3QgaGFzaHRhZ0NyZWF0ZWQgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uQ3JlYXRlSGFzaHRhZyhoYXNodGFnKTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRIYXNodGFncy5wdXNoKGhhc2h0YWdDcmVhdGVkKTtcclxuICAgICAgICByZXR1cm4gaGFzaHRhZ0NyZWF0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0SGFzaHRhZ3NGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcgPSBudWxsKTogUHJvbWlzZTxIYXNodGFnW10+IHtcclxuICAgICAgICBpZiAoIXNwYWNlSUQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudEhhc2h0YWdzLmxlbmd0aCA9PT0gMCAmJiB0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkhhc2h0YWdzQnlTcGFjZSh0aGlzLmN1cnJlbnRTcGFjZUlEKS50aGVuKFxyXG4gICAgICAgICAgICAgICAgICAgIChyZXNwb25zZSkgPT4gcmVzcG9uc2UuaXRlbXMsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRIYXNodGFncztcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRCA9IHNwYWNlSUQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubGlzdEhhc2h0YWdzRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -145,4 +145,32 @@ export const copyFileInS3 = async (sourceKey, destKey) => {
|
|
|
145
145
|
const result = await Storage.copy({ key: sourceKey, level: "public" }, { key: destKey, level: "public" });
|
|
146
146
|
return result.key;
|
|
147
147
|
};
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvczMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3RDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7SUFDdkMsTUFBTSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQztTQUMxQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDaEUsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDekUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEtBQUssRUFDL0IsSUFBWSxFQUNaLElBQVUsRUFDVixRQUF1QixFQUNSLEVBQUU7SUFDakIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMxRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRTtRQUNoRCxnQkFBZ0IsQ0FBQyxRQUFRO1lBQ3JCLHdDQUF3QztRQUM1QyxDQUFDO1FBQ0QsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJO0tBQ3pCLENBQUM7U0FDRyxJQUFJ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LE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxDQUFDO0FBQ1gsQ0FBQyxDQUFDO0FBRUY7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEtBQUssRUFDN0IsU0FBaUIsRUFDakIsT0FBZSxFQUNBLEVBQUU7SUFDakIsTUFBTSxNQUFNLEdBQVEsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUNsQyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUNuQyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUNwQyxDQUFDO0lBQ0YsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQ3RCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0b3JhZ2UgfSBmcm9tIFwiYXdzLWFtcGxpZnlcIjtcclxuaW1wb3J0IHsgRXF1aXBtZW50IH0gZnJvbSBcIi4uL3R5cGVzLnNlcnZpY2VcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBkZWxldGVGcm9tUzMgPSBhc3luYyAocGF0aCkgPT4ge1xyXG4gICAgYXdhaXQgU3RvcmFnZS5yZW1vdmUocGF0aCwgeyBsZXZlbDogXCJwdWJsaWNcIiB9KVxyXG4gICAgICAgIC50aGVuKChyZXN1bHQpID0+IGNvbnNvbGUubG9nKFwiU3VjY2Vzc2Z1bGx5IGRlbGV0ZWQgPT5cIiwgcmVzdWx0KSlcclxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb25zb2xlLmxvZyhcIkRlbGV0aW5nIGZyb20gUzMgZXJyb3I6XCIsIGVycm9yKSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgdXBsb2FkRmlsZVRvUzMgPSBhc3luYyAoXHJcbiAgICBwYXRoOiBzdHJpbmcsXHJcbiAgICBmaWxlOiBGaWxlLFxyXG4gICAgb2JqZWN0SWQ6IHN0cmluZyB8IG51bGwsXHJcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XHJcbiAgICBjb25zdCBwcmVmaXggPSBvYmplY3RJZCA/IGAke29iamVjdElkLnNsaWNlKDAsIDgpfV9gIDogXCJcIjtcclxuICAgIHJldHVybiBTdG9yYWdlLnB1dChwYXRoICsgcHJlZml4ICsgZmlsZS5uYW1lLCBmaWxlLCB7XHJcbiAgICAgICAgcHJvZ3Jlc3NDYWxsYmFjayhwcm9ncmVzcykge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnVXBsb2FkZWQgOiAnLCBwcm9ncmVzcyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb250ZW50VHlwZTogZmlsZS50eXBlLFxyXG4gICAgfSlcclxuICAgICAgICAudGhlbigocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJTdWNjZXNzID0+XCIsIHJlc3VsdCk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQua2V5O1xyXG4gICAgICAgIH0pO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldFNpZ25lZEltYWdlVXJsRm9yRXF1aXBtZW50ID0gYXN5bmMgKFxyXG4gICAgZXF1aXA6IEVxdWlwbWVudCxcclxuKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiA9PiB7XHJcbiAgICBpZiAoIWVxdWlwLnBob3RvKSB7XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcclxuICAgIH1cclxuICAgIHJldHVybiBTdG9yYWdlLmdldChlcXVpcC5waG90bywgeyBsZXZlbDogXCJwdWJsaWNcIiB9KVxyXG4gICAgICAgIC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBzdHJpbmc7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3IgZmV0Y2hpbmcgZmlsZSBmcm9tIHMzID0+XCIsIGVycm9yKTtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSk7XHJcblxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldFNpZ25lZEltYWdlVXJsRm9yUHJvZmlsZSA9IGFzeW5jIChcclxuICAgIHByb2ZpbGUsXHJcbik6IFByb21pc2U8c3RyaW5nIHwgdm9pZD4gPT4ge1xyXG4gICAgcmV0dXJuIFN0b3JhZ2UuZ2V0KHByb2ZpbGUuYXZhdGFyLCB7IGxldmVsOiBcInB1YmxpY1wiIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIHN0cmluZztcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvciBmZXRjaGluZyBmaWxlIGZyb20gczMgPT5cIiwgZXJyb3IpO1xyXG4gICAgICAgIH0pO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldFNpZ25lZEltYWdlVXJsRm9yU3BhY2UgPSBhc3luYyAoXHJcbiAgICBzcGFjZSxcclxuKTogUHJvbWlzZTxzdHJpbmcgfCB2b2lkPiA9PiB7XHJcbiAgICByZXR1cm4gU3RvcmFnZS5nZXQoc3BhY2UuYW5uZXhlcywgeyBsZXZlbDogXCJwdWJsaWNcIiB9KVxyXG4gICAgICAgIC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBzdHJpbmc7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3IgZmV0Y2hpbmcgZmlsZSBmcm9tIHMzID0+XCIsIGVycm9yKTtcclxuICAgICAgICB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCB1cGxvYWRCYXNlNjRJbWFnZSA9IGFzeW5jIChcclxuICAgIHVyaTogc3RyaW5nLFxyXG4gICAgb2JqZWN0SWQ6IHN0cmluZyB8IG51bGwsXHJcbiAgICBwYXRoOiBzdHJpbmcsXHJcbiAgICBmcmllbmRseUZpbGVOYW1lOiBzdHJpbmcsXHJcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XHJcbiAgICByZXR1cm4gZmV0Y2godXJpKVxyXG4gICAgICAgIC50aGVuKChyZXMpID0+IHJlcy5ibG9iKCkpXHJcbiAgICAgICAgLnRoZW4oKGJsb2IpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZmlsZSA9IG5ldyBGaWxlKFtibG9iXSwgYCR7ZnJpZW5kbHlGaWxlTmFtZX0uanBlZ2AsIHtcclxuICAgICAgICAgICAgICAgIHR5cGU6IFwiaW1hZ2UvanBlZ1wiLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHVwbG9hZEZpbGVUb1MzKHBhdGgsIGZpbGUsIG9iamVjdElkKTtcclxuICAgICAgICB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCB1cGxvYWRCYXNlNjRJbWFnZVdpdGhSZXRyeSA9IGFzeW5jIChcclxuICAgIHVyaTogc3RyaW5nLFxyXG4gICAgb2JqZWN0SWQ6IHN0cmluZyB8IG51bGwsXHJcbiAgICBwYXRoOiBzdHJpbmcsXHJcbiAgICBmcmllbmRseUZpbGVOYW1lOiBzdHJpbmcsXHJcbiAgICByZXRyeTogbnVtYmVyXHJcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgIHdoaWxlIChyZXRyeSA+IDApIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHIgPSBhd2FpdCB1cGxvYWRCYXNlNjRJbWFnZSh1cmksIG9iamVjdElkLCBwYXRoLCBmcmllbmRseUZpbGVOYW1lKTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUocik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHJ5LS07XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBVcGxvYWQgZXJyb3IsIHJldHJ5IG7CsCAke3JldHJ5fSA6IGAsIGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmVqZWN0KFwiTWF4IHJldHJ5IGV4Y2VlZGVkXCIpO1xyXG4gICAgfSk7XHJcbn07XHJcblxyXG5cclxuZXhwb3J0IGNvbnN0IHJlbW92ZUFsbEZpbGVzRnJvbUZvbGRlclMzID0gYXN5bmMgKFxyXG4gICAgZm9sZGVyUGF0aDogc3RyaW5nLFxyXG4pOiBQcm9taXNlPGFueT4gPT4ge1xyXG4gICAgY29uc3QgYXJyYXlPZlByb21pc2VzID0gW107XHJcbiAgICBTdG9yYWdlLmxpc3QoZm9sZGVyUGF0aCwgeyBsZXZlbDogXCJwdWJsaWNcIiB9KVxyXG4gICAgICAgIC50aGVuKChyZXMpID0+IHtcclxuICAgICAgICAgICAgT2JqZWN0LmtleXMocmVzKS5tYXAoYXN5bmMgKGtleSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZSA9IHJlc1trZXldO1xyXG4gICAgICAgICAgICAgICAgYXJyYXlPZlByb21pc2VzLnB1c2goZGVsZXRlRnJvbVMzKGZpbGUua2V5KSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29uc29sZS5lcnJvcihcIkxpc3QgZmFpbHVyZVwiLCBlcnJvcikpO1xyXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKGFycmF5T2ZQcm9taXNlcyk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgbGlzdEZpbGVzSW5Gb2xkZXIgPSBhc3luYyAoZm9sZGVyUGF0aDogc3RyaW5nKTogUHJvbWlzZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiBTdG9yYWdlLmxpc3QoZm9sZGVyUGF0aCwgeyBsZXZlbDogXCJwdWJsaWNcIiwgcGFnZVNpemU6ICdBTEwnIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlcykgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzLnJlc3VsdHM7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKFwiTGlzdCBmYWlsdXJlXCIsIGVycm9yKSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0U2lnbmVkRmlsZSA9IGFzeW5jIChwYXRoKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiA9PiB7XHJcbiAgICByZXR1cm4gU3RvcmFnZS5nZXQocGF0aCwgeyBsZXZlbDogXCJwdWJsaWNcIiB9KVxyXG4gICAgICAgIC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBzdHJpbmc7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3IgZmV0Y2hpbmcgZmlsZSBmcm9tIHMzID0+XCIsIGVycm9yKTtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSk7XHJcblxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGRvd25sb2FkRmlsZUFzT2JqZWN0ID0gYXN5bmMgKHBhdGgpOiBQcm9taXNlPE9iamVjdCB8IHZvaWQ+ID0+IHtcclxuICAgIHJldHVybiBTdG9yYWdlLmdldChwYXRoLCB7IGRvd25sb2FkOiB0cnVlLCBsZXZlbDogXCJwdWJsaWNcIiB9KVxyXG4gICAgICAgIC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBPYmplY3Q7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3IgZmV0Y2hpbmcgZmlsZSBmcm9tIHMzID0+XCIsIGVycm9yKTtcclxuICAgICAgICB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRCdWZmZXJGb3JGaWxlRnJvbVMzID0gYXN5bmMgKHBhdGgpOiBQcm9taXNlPEFycmF5QnVmZmVyPiA9PiB7XHJcbiAgICBjb25zdCBvYmplY3QgPSBhd2FpdCBkb3dubG9hZEZpbGVBc09iamVjdChwYXRoKTtcclxuICAgIGlmIChvYmplY3QpIHtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheUJ1ZmZlcihvYmplY3QuQm9keSwgXCJiaW5hcnlcIik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCB1cGxvYWRKc29uVG9TMyA9IGFzeW5jIChcclxuICAgIHBhdGg6IHN0cmluZyxcclxuICAgIGpzb246IHN0cmluZyxcclxuICAgIGZpbGVuYW1lOiBzdHJpbmcsXHJcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XHJcbiAgICByZXR1cm4gU3RvcmFnZS5wdXQocGF0aCArIGZpbGVuYW1lLCBqc29uLCB7XHJcbiAgICAgICAgY29udGVudFR5cGU6IFwiYXBwbGljYXRpb24vanNvblwiLFxyXG4gICAgfSlcclxuICAgICAgICAudGhlbigocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJTdWNjZXNzID0+XCIsIHJlc3VsdCk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQua2V5O1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yID0+XCIsIGVycm9yKTtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSk7XHJcbn07XHJcblxyXG4vKipcclxuICogUGh5c2ljYWxseSBkdXBsaWNhdGVzIGFuIFMzIG9iamVjdCB0byBhIG5ldyBrZXkuIFVzZWQgd2hlbiBjb3B5aW5nIGF0dGFjaG1lbnRzXHJcbiAqIGJldHdlZW4gZmVhdHVyZXMvdGlja2V0cy9ldGMuIHNvIHRoZSBjb3B5IGlzIGZ1bGx5IGluZGVwZW5kZW50OiBkZWxldGluZyB0aGVcclxuICogb3JpZ2luYWwgZmlsZSBsYXRlciBtdXN0IG5vdCBhZmZlY3QgdGhlIGNvcHkuXHJcbiAqIElNUE9SVEFOVDogZG9lcyBOT1Qgc3dhbGxvdyBlcnJvcnMg4oCUIGNhbGxlcnMgbmVlZCB0aGUgcmVhbCBlcnJvciAoZS5nLiBOb1N1Y2hLZXkpXHJcbiAqIHRvIGRpc3Rpbmd1aXNoIGFuIG9ycGhhbmVkIERCIHJlZmVyZW5jZSBmcm9tIGEgZ2VudWluZSBjb3B5IGZhaWx1cmUuXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgY29weUZpbGVJblMzID0gYXN5bmMgKFxyXG4gICAgc291cmNlS2V5OiBzdHJpbmcsXHJcbiAgICBkZXN0S2V5OiBzdHJpbmcsXHJcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XHJcbiAgICBjb25zdCByZXN1bHQ6IGFueSA9IGF3YWl0IFN0b3JhZ2UuY29weShcclxuICAgICAgICB7IGtleTogc291cmNlS2V5LCBsZXZlbDogXCJwdWJsaWNcIiB9LFxyXG4gICAgICAgIHsga2V5OiBkZXN0S2V5LCBsZXZlbDogXCJwdWJsaWNcIiB9LFxyXG4gICAgKTtcclxuICAgIHJldHVybiByZXN1bHQua2V5O1xyXG59O1xyXG5cclxuIl19
|
|
148
|
+
/**
|
|
149
|
+
* Fallback duplication: downloads the object and re-uploads it under the new key.
|
|
150
|
+
*
|
|
151
|
+
* Storage.copy() builds the S3 `x-amz-copy-source` header by plain string concatenation
|
|
152
|
+
* (see @aws-amplify/storage AWSS3Provider.copy: `${bucket}/${srcPrefix}${srcKey}`), with no
|
|
153
|
+
* URL-encoding of the key. A key holding a space, an accent or a parenthesis therefore
|
|
154
|
+
* yields a header that does not match the signed canonical request, and S3 answers
|
|
155
|
+
* "The request signature we calculated does not match the signature you provided".
|
|
156
|
+
*
|
|
157
|
+
* Round-tripping the bytes avoids that header entirely and works for any key, at the cost
|
|
158
|
+
* of transferring the file through the browser — hence its use as a fallback only.
|
|
159
|
+
* IMPORTANT: like copyFileInS3, this must NOT swallow errors.
|
|
160
|
+
*/
|
|
161
|
+
export const copyFileInS3ViaDownload = async (sourceKey, destKey) => {
|
|
162
|
+
const downloaded = await Storage.get(sourceKey, {
|
|
163
|
+
download: true,
|
|
164
|
+
level: "public",
|
|
165
|
+
});
|
|
166
|
+
const body = downloaded?.Body;
|
|
167
|
+
if (!body) {
|
|
168
|
+
throw new Error(`Empty download for "${sourceKey}", cannot duplicate it`);
|
|
169
|
+
}
|
|
170
|
+
const result = await Storage.put(destKey, body, {
|
|
171
|
+
level: "public",
|
|
172
|
+
contentType: downloaded.ContentType || undefined,
|
|
173
|
+
});
|
|
174
|
+
return result.key;
|
|
175
|
+
};
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvczMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3RDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7SUFDdkMsTUFBTSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQztTQUMxQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDaEUsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDekUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEtBQUssRUFDL0IsSUFBWSxFQUNaLElBQVUsRUFDVixRQUF1QixFQUNSLEVBQUU7SUFDakIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMxRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRTtRQUNoRCxnQkFBZ0IsQ0FBQyxRQUFRO1lBQ3JCLHdDQUF3QztRQUM1QyxDQUFDO1FBQ0QsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJO0tBQ3pCLENBQUM7U0FDRyxJQUFJ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fSBmcm9tIFwiYXdzLWFtcGxpZnlcIjtcclxuaW1wb3J0IHsgRXF1aXBtZW50IH0gZnJvbSBcIi4uL3R5cGVzLnNlcnZpY2VcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBkZWxldGVGcm9tUzMgPSBhc3luYyAocGF0aCkgPT4ge1xyXG4gICAgYXdhaXQgU3RvcmFnZS5yZW1vdmUocGF0aCwgeyBsZXZlbDogXCJwdWJsaWNcIiB9KVxyXG4gICAgICAgIC50aGVuKChyZXN1bHQpID0+IGNvbnNvbGUubG9nKFwiU3VjY2Vzc2Z1bGx5IGRlbGV0ZWQgPT5cIiwgcmVzdWx0KSlcclxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb25zb2xlLmxvZyhcIkRlbGV0aW5nIGZyb20gUzMgZXJyb3I6XCIsIGVycm9yKSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgdXBsb2FkRmlsZVRvUzMgPSBhc3luYyAoXHJcbiAgICBwYXRoOiBzdHJpbmcsXHJcbiAgICBmaWxlOiBGaWxlLFxyXG4gICAgb2JqZWN0SWQ6IHN0cmluZyB8IG51bGwsXHJcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XHJcbiAgICBjb25zdCBwcmVmaXggPSBvYmplY3RJZCA/IGAke29iamVjdElkLnNsaWNlKDAsIDgpfV9gIDogXCJcIjtcclxuICAgIHJldHVybiBTdG9yYWdlLnB1dChwYXRoICsgcHJlZml4ICsgZmlsZS5uYW1lLCBmaWxlLCB7XHJcbiAgICAgICAgcHJvZ3Jlc3NDYWxsYmFjayhwcm9ncmVzcykge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnVXBsb2FkZWQgOiAnLCBwcm9ncmVzcyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb250ZW50VHlwZTogZmlsZS50eXBlLFxyXG4gICAgfSlcclxuICAgICAgICAudGhlbigocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJTdWNjZXNzID0+XCIsIHJlc3VsdCk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQua2V5O1xyXG4gICAgICAgIH0pO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldFNpZ25lZEltYWdlVXJsRm9yRXF1aXBtZW50ID0gYXN5bmMgKFxyXG4gICAgZXF1aXA6IEVxdWlwbWVudCxcclxuKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiA9PiB7XHJcbiAgICBpZiAoIWVxdWlwLnBob3RvKSB7XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcclxuICAgIH1cclxuICAgIHJldHVybiBTdG9yYWdlLmdldChlcXVpcC5waG90bywgeyBsZXZlbDogXCJwdWJsaWNcIiB9KVxyXG4gICAgICAgIC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBzdHJpbmc7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3IgZmV0Y2hpbmcgZmlsZSBmcm9tIHMzID0+XCIsIGVycm9yKTtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSk7XHJcblxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldFNpZ25lZEltYWdlVXJsRm9yUHJvZmlsZSA9IGFzeW5jIChcclxuICAgIHByb2ZpbGUsXHJcbik6IFByb21pc2U8c3RyaW5nIHwgdm9pZD4gPT4ge1xyXG4gICAgcmV0dXJuIFN0b3JhZ2UuZ2V0KHByb2ZpbGUuYXZhdGFyLCB7IGxldmVsOiBcInB1YmxpY1wiIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIHN0cmluZztcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvciBmZXRjaGluZyBmaWxlIGZyb20gczMgPT5cIiwgZXJyb3IpO1xyXG4gICAgICAgIH0pO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldFNpZ25lZEltYWdlVXJsRm9yU3BhY2UgPSBhc3luYyAoXHJcbiAgICBzcGFjZSxcclxuKTogUHJvbWlzZTxzdHJpbmcgfCB2b2lkPiA9PiB7XHJcbiAgICByZXR1cm4gU3RvcmFnZS5nZXQoc3BhY2UuYW5uZXhlcywgeyBsZXZlbDogXCJwdWJsaWNcIiB9KVxyXG4gICAgICAgIC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBzdHJpbmc7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3IgZmV0Y2hpbmcgZmlsZSBmcm9tIHMzID0+XCIsIGVycm9yKTtcclxuICAgICAgICB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCB1cGxvYWRCYXNlNjRJbWFnZSA9IGFzeW5jIChcclxuICAgIHVyaTogc3RyaW5nLFxyXG4gICAgb2JqZWN0SWQ6IHN0cmluZyB8IG51bGwsXHJcbiAgICBwYXRoOiBzdHJpbmcsXHJcbiAgICBmcmllbmRseUZpbGVOYW1lOiBzdHJpbmcsXHJcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XHJcbiAgICByZXR1cm4gZmV0Y2godXJpKVxyXG4gICAgICAgIC50aGVuKChyZXMpID0+IHJlcy5ibG9iKCkpXHJcbiAgICAgICAgLnRoZW4oKGJsb2IpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZmlsZSA9IG5ldyBGaWxlKFtibG9iXSwgYCR7ZnJpZW5kbHlGaWxlTmFtZX0uanBlZ2AsIHtcclxuICAgICAgICAgICAgICAgIHR5cGU6IFwiaW1hZ2UvanBlZ1wiLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHVwbG9hZEZpbGVUb1MzKHBhdGgsIGZpbGUsIG9iamVjdElkKTtcclxuICAgICAgICB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCB1cGxvYWRCYXNlNjRJbWFnZVdpdGhSZXRyeSA9IGFzeW5jIChcclxuICAgIHVyaTogc3RyaW5nLFxyXG4gICAgb2JqZWN0SWQ6IHN0cmluZyB8IG51bGwsXHJcbiAgICBwYXRoOiBzdHJpbmcsXHJcbiAgICBmcmllbmRseUZpbGVOYW1lOiBzdHJpbmcsXHJcbiAgICByZXRyeTogbnVtYmVyXHJcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgIHdoaWxlIChyZXRyeSA+IDApIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHIgPSBhd2FpdCB1cGxvYWRCYXNlNjRJbWFnZSh1cmksIG9iamVjdElkLCBwYXRoLCBmcmllbmRseUZpbGVOYW1lKTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUocik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIHJldHJ5LS07XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBVcGxvYWQgZXJyb3IsIHJldHJ5IG7CsCAke3JldHJ5fSA6IGAsIGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmVqZWN0KFwiTWF4IHJldHJ5IGV4Y2VlZGVkXCIpO1xyXG4gICAgfSk7XHJcbn07XHJcblxyXG5cclxuZXhwb3J0IGNvbnN0IHJlbW92ZUFsbEZpbGVzRnJvbUZvbGRlclMzID0gYXN5bmMgKFxyXG4gICAgZm9sZGVyUGF0aDogc3RyaW5nLFxyXG4pOiBQcm9taXNlPGFueT4gPT4ge1xyXG4gICAgY29uc3QgYXJyYXlPZlByb21pc2VzID0gW107XHJcbiAgICBTdG9yYWdlLmxpc3QoZm9sZGVyUGF0aCwgeyBsZXZlbDogXCJwdWJsaWNcIiB9KVxyXG4gICAgICAgIC50aGVuKChyZXMpID0+IHtcclxuICAgICAgICAgICAgT2JqZWN0LmtleXMocmVzKS5tYXAoYXN5bmMgKGtleSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZSA9IHJlc1trZXldO1xyXG4gICAgICAgICAgICAgICAgYXJyYXlPZlByb21pc2VzLnB1c2goZGVsZXRlRnJvbVMzKGZpbGUua2V5KSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29uc29sZS5lcnJvcihcIkxpc3QgZmFpbHVyZVwiLCBlcnJvcikpO1xyXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKGFycmF5T2ZQcm9taXNlcyk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgbGlzdEZpbGVzSW5Gb2xkZXIgPSBhc3luYyAoZm9sZGVyUGF0aDogc3RyaW5nKTogUHJvbWlzZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiBTdG9yYWdlLmxpc3QoZm9sZGVyUGF0aCwgeyBsZXZlbDogXCJwdWJsaWNcIiwgcGFnZVNpemU6ICdBTEwnIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlcykgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzLnJlc3VsdHM7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKFwiTGlzdCBmYWlsdXJlXCIsIGVycm9yKSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0U2lnbmVkRmlsZSA9IGFzeW5jIChwYXRoKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiA9PiB7XHJcbiAgICByZXR1cm4gU3RvcmFnZS5nZXQocGF0aCwgeyBsZXZlbDogXCJwdWJsaWNcIiB9KVxyXG4gICAgICAgIC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBzdHJpbmc7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3IgZmV0Y2hpbmcgZmlsZSBmcm9tIHMzID0+XCIsIGVycm9yKTtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSk7XHJcblxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGRvd25sb2FkRmlsZUFzT2JqZWN0ID0gYXN5bmMgKHBhdGgpOiBQcm9taXNlPE9iamVjdCB8IHZvaWQ+ID0+IHtcclxuICAgIHJldHVybiBTdG9yYWdlLmdldChwYXRoLCB7IGRvd25sb2FkOiB0cnVlLCBsZXZlbDogXCJwdWJsaWNcIiB9KVxyXG4gICAgICAgIC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBPYmplY3Q7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3IgZmV0Y2hpbmcgZmlsZSBmcm9tIHMzID0+XCIsIGVycm9yKTtcclxuICAgICAgICB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRCdWZmZXJGb3JGaWxlRnJvbVMzID0gYXN5bmMgKHBhdGgpOiBQcm9taXNlPEFycmF5QnVmZmVyPiA9PiB7XHJcbiAgICBjb25zdCBvYmplY3QgPSBhd2FpdCBkb3dubG9hZEZpbGVBc09iamVjdChwYXRoKTtcclxuICAgIGlmIChvYmplY3QpIHtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheUJ1ZmZlcihvYmplY3QuQm9keSwgXCJiaW5hcnlcIik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCB1cGxvYWRKc29uVG9TMyA9IGFzeW5jIChcclxuICAgIHBhdGg6IHN0cmluZyxcclxuICAgIGpzb246IHN0cmluZyxcclxuICAgIGZpbGVuYW1lOiBzdHJpbmcsXHJcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XHJcbiAgICByZXR1cm4gU3RvcmFnZS5wdXQocGF0aCArIGZpbGVuYW1lLCBqc29uLCB7XHJcbiAgICAgICAgY29udGVudFR5cGU6IFwiYXBwbGljYXRpb24vanNvblwiLFxyXG4gICAgfSlcclxuICAgICAgICAudGhlbigocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJTdWNjZXNzID0+XCIsIHJlc3VsdCk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQua2V5O1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yID0+XCIsIGVycm9yKTtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfSk7XHJcbn07XHJcblxyXG4vKipcclxuICogUGh5c2ljYWxseSBkdXBsaWNhdGVzIGFuIFMzIG9iamVjdCB0byBhIG5ldyBrZXkuIFVzZWQgd2hlbiBjb3B5aW5nIGF0dGFjaG1lbnRzXHJcbiAqIGJldHdlZW4gZmVhdHVyZXMvdGlja2V0cy9ldGMuIHNvIHRoZSBjb3B5IGlzIGZ1bGx5IGluZGVwZW5kZW50OiBkZWxldGluZyB0aGVcclxuICogb3JpZ2luYWwgZmlsZSBsYXRlciBtdXN0IG5vdCBhZmZlY3QgdGhlIGNvcHkuXHJcbiAqIElNUE9SVEFOVDogZG9lcyBOT1Qgc3dhbGxvdyBlcnJvcnMg4oCUIGNhbGxlcnMgbmVlZCB0aGUgcmVhbCBlcnJvciAoZS5nLiBOb1N1Y2hLZXkpXHJcbiAqIHRvIGRpc3Rpbmd1aXNoIGFuIG9ycGhhbmVkIERCIHJlZmVyZW5jZSBmcm9tIGEgZ2VudWluZSBjb3B5IGZhaWx1cmUuXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgY29weUZpbGVJblMzID0gYXN5bmMgKFxyXG4gICAgc291cmNlS2V5OiBzdHJpbmcsXHJcbiAgICBkZXN0S2V5OiBzdHJpbmcsXHJcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XHJcbiAgICBjb25zdCByZXN1bHQ6IGFueSA9IGF3YWl0IFN0b3JhZ2UuY29weShcclxuICAgICAgICB7IGtleTogc291cmNlS2V5LCBsZXZlbDogXCJwdWJsaWNcIiB9LFxyXG4gICAgICAgIHsga2V5OiBkZXN0S2V5LCBsZXZlbDogXCJwdWJsaWNcIiB9LFxyXG4gICAgKTtcclxuICAgIHJldHVybiByZXN1bHQua2V5O1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIEZhbGxiYWNrIGR1cGxpY2F0aW9uOiBkb3dubG9hZHMgdGhlIG9iamVjdCBhbmQgcmUtdXBsb2FkcyBpdCB1bmRlciB0aGUgbmV3IGtleS5cclxuICpcclxuICogU3RvcmFnZS5jb3B5KCkgYnVpbGRzIHRoZSBTMyBgeC1hbXotY29weS1zb3VyY2VgIGhlYWRlciBieSBwbGFpbiBzdHJpbmcgY29uY2F0ZW5hdGlvblxyXG4gKiAoc2VlIEBhd3MtYW1wbGlmeS9zdG9yYWdlIEFXU1MzUHJvdmlkZXIuY29weTogYCR7YnVja2V0fS8ke3NyY1ByZWZpeH0ke3NyY0tleX1gKSwgd2l0aCBub1xyXG4gKiBVUkwtZW5jb2Rpbmcgb2YgdGhlIGtleS4gQSBrZXkgaG9sZGluZyBhIHNwYWNlLCBhbiBhY2NlbnQgb3IgYSBwYXJlbnRoZXNpcyB0aGVyZWZvcmVcclxuICogeWllbGRzIGEgaGVhZGVyIHRoYXQgZG9lcyBub3QgbWF0Y2ggdGhlIHNpZ25lZCBjYW5vbmljYWwgcmVxdWVzdCwgYW5kIFMzIGFuc3dlcnNcclxuICogXCJUaGUgcmVxdWVzdCBzaWduYXR1cmUgd2UgY2FsY3VsYXRlZCBkb2VzIG5vdCBtYXRjaCB0aGUgc2lnbmF0dXJlIHlvdSBwcm92aWRlZFwiLlxyXG4gKlxyXG4gKiBSb3VuZC10cmlwcGluZyB0aGUgYnl0ZXMgYXZvaWRzIHRoYXQgaGVhZGVyIGVudGlyZWx5IGFuZCB3b3JrcyBmb3IgYW55IGtleSwgYXQgdGhlIGNvc3RcclxuICogb2YgdHJhbnNmZXJyaW5nIHRoZSBmaWxlIHRocm91Z2ggdGhlIGJyb3dzZXIg4oCUIGhlbmNlIGl0cyB1c2UgYXMgYSBmYWxsYmFjayBvbmx5LlxyXG4gKiBJTVBPUlRBTlQ6IGxpa2UgY29weUZpbGVJblMzLCB0aGlzIG11c3QgTk9UIHN3YWxsb3cgZXJyb3JzLlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGNvcHlGaWxlSW5TM1ZpYURvd25sb2FkID0gYXN5bmMgKFxyXG4gICAgc291cmNlS2V5OiBzdHJpbmcsXHJcbiAgICBkZXN0S2V5OiBzdHJpbmcsXHJcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XHJcbiAgICBjb25zdCBkb3dubG9hZGVkOiBhbnkgPSBhd2FpdCBTdG9yYWdlLmdldChzb3VyY2VLZXksIHtcclxuICAgICAgICBkb3dubG9hZDogdHJ1ZSxcclxuICAgICAgICBsZXZlbDogXCJwdWJsaWNcIixcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGJvZHkgPSBkb3dubG9hZGVkPy5Cb2R5O1xyXG4gICAgaWYgKCFib2R5KSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFbXB0eSBkb3dubG9hZCBmb3IgXCIke3NvdXJjZUtleX1cIiwgY2Fubm90IGR1cGxpY2F0ZSBpdGApO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJlc3VsdDogYW55ID0gYXdhaXQgU3RvcmFnZS5wdXQoZGVzdEtleSwgYm9keSwge1xyXG4gICAgICAgIGxldmVsOiBcInB1YmxpY1wiLFxyXG4gICAgICAgIGNvbnRlbnRUeXBlOiBkb3dubG9hZGVkLkNvbnRlbnRUeXBlIHx8IHVuZGVmaW5lZCxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlc3VsdC5rZXk7XHJcbn07XHJcblxyXG4iXX0=
|
|
@@ -26,14 +26,40 @@ export function applyRigidTransformToPoint(p, t) {
|
|
|
26
26
|
z: t.refTarget.z + (dx * sin + dz * cos)
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* Applies the Y rotation (in degrees) to an orientation angle (a pose's yRotation).
|
|
31
|
+
* A null/undefined/non-numeric angle is returned untouched: "no orientation stored"
|
|
32
|
+
* must stay "no orientation stored", not become the raw rotation delta.
|
|
33
|
+
*/
|
|
30
34
|
export function applyRigidTransformToYRotationDeg(yRotationDeg, t) {
|
|
35
|
+
if (yRotationDeg === null || yRotationDeg === undefined || Number.isNaN(Number(yRotationDeg))) {
|
|
36
|
+
return yRotationDeg;
|
|
37
|
+
}
|
|
31
38
|
const deltaDeg = t.rotationYRad * (180 / Math.PI);
|
|
32
|
-
return yRotationDeg + deltaDeg;
|
|
39
|
+
return Number(yRotationDeg) + deltaDeg;
|
|
33
40
|
}
|
|
34
41
|
/** Euclidean distance between two points, useful to validate landmark quality. */
|
|
35
42
|
export function distance(a, b) {
|
|
36
43
|
const dx = a.x - b.x, dy = a.y - b.y, dz = a.z - b.z;
|
|
37
44
|
return Math.sqrt(dx * dx + dy * dy + dz * dz);
|
|
38
45
|
}
|
|
39
|
-
|
|
46
|
+
/**
|
|
47
|
+
* Applies ONLY the rotation part of the transform to a direction vector
|
|
48
|
+
* (a normal, a stem vector, ...).
|
|
49
|
+
*
|
|
50
|
+
* A direction has no origin, so the translation must NOT be applied to it —
|
|
51
|
+
* doing so would turn a unit normal into a point somewhere in the target model.
|
|
52
|
+
* Used for a POI's `metadata.normal`, which drives the orientation of the tag's
|
|
53
|
+
* stem: without this rotation, a pastille copied into a space whose model is
|
|
54
|
+
* rotated relative to the source ends up pointing into the wall it is stuck on.
|
|
55
|
+
*/
|
|
56
|
+
export function applyRigidTransformToDirection(v, t) {
|
|
57
|
+
const cos = Math.cos(t.rotationYRad);
|
|
58
|
+
const sin = Math.sin(t.rotationYRad);
|
|
59
|
+
return {
|
|
60
|
+
x: v.x * cos - v.z * sin,
|
|
61
|
+
y: v.y, // vertical axis is not rotated
|
|
62
|
+
z: v.x * sin + v.z * cos
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0dGVycG9ydC10cmFuc2Zvcm0udXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvdXRpbHMvbWF0dGVycG9ydC10cmFuc2Zvcm0udXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFVL0I7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUNqQyxPQUFhLEVBQUUsT0FBYSxFQUM1QixPQUFhLEVBQUUsT0FBYTtJQUU1QixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3ZFLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFdkUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXJELE9BQU87UUFDSCxZQUFZLEVBQUUsV0FBVyxHQUFHLFdBQVc7UUFDdkMsU0FBUyxFQUFFLE9BQU87UUFDbEIsU0FBUyxFQUFFLE9BQU87S0FDckIsQ0FBQztBQUNOLENBQUM7QUFFRCw4REFBOEQ7QUFDOUQsTUFBTSxVQUFVLDBCQUEwQixDQUFDLENBQU8sRUFBRSxDQUFpQjtJQUNqRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQy9CLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDckMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFckMsT0FBTztRQUNILENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUN4QyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsK0JBQStCO1FBQ3pFLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQztLQUMzQyxDQUFDO0FBQ04sQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsaUNBQWlDLENBQUMsWUFBb0IsRUFBRSxDQUFpQjtJQUNyRixJQUFJLFlBQVksS0FBSyxJQUFJLElBQUksWUFBWSxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDNUYsT0FBTyxZQUFZLENBQUM7SUFDeEIsQ0FBQztJQUNELE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUMzQyxDQUFDO0FBRUQsa0ZBQWtGO0FBQ2xGLE1BQU0sVUFBVSxRQUFRLENBQUMsQ0FBTyxFQUFFLENBQU87SUFDckMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBQ0Q7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLDhCQUE4QixDQUFDLENBQU8sRUFBRSxDQUFpQjtJQUNyRSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUVyQyxPQUFPO1FBQ0gsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRztRQUN4QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSwrQkFBK0I7UUFDdkMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRztLQUMzQixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIG1hdHRlcnBvcnQtdHJhbnNmb3JtLnV0aWwudHNcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVmVjMyB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXI7IH1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmlnaWRUcmFuc2Zvcm0ge1xyXG4gICAgcm90YXRpb25ZUmFkOiBudW1iZXI7ICAgLy8gcm90YXRpb24gYXJvdW5kIHRoZSB2ZXJ0aWNhbCAoWSkgYXhpcywgaW4gcmFkaWFuc1xyXG4gICAgcmVmU291cmNlOiBWZWMzOyAgICAgICAgLy8gbGFuZG1hcmsgQSBwb3NpdGlvbiwgaW4gU09VUkNFIG1vZGVsIGNvb3JkaW5hdGVzXHJcbiAgICByZWZUYXJnZXQ6IFZlYzM7ICAgICAgICAvLyBsYW5kbWFyayBBIHBvc2l0aW9uLCBpbiBUQVJHRVQgbW9kZWwgY29vcmRpbmF0ZXNcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbXB1dGVzIHRoZSByaWdpZCB0cmFuc2Zvcm0gKFktYXhpcyByb3RhdGlvbiArIHRyYW5zbGF0aW9uKSBiZXR3ZWVuIHR3b1xyXG4gKiBjb29yZGluYXRlIGZyYW1lcywgZnJvbSAyIHBhaXJzIG9mIHBvaW50cyByZXByZXNlbnRpbmcgdGhlIHNhbWUgcGh5c2ljYWwgc3BvdC5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlUmlnaWRUcmFuc2Zvcm0oXHJcbiAgICBzb3VyY2VBOiBWZWMzLCB0YXJnZXRBOiBWZWMzLFxyXG4gICAgc291cmNlQjogVmVjMywgdGFyZ2V0QjogVmVjM1xyXG4pOiBSaWdpZFRyYW5zZm9ybSB7XHJcbiAgICBjb25zdCB2U291cmNlID0geyB4OiBzb3VyY2VCLnggLSBzb3VyY2VBLngsIHo6IHNvdXJjZUIueiAtIHNvdXJjZUEueiB9O1xyXG4gICAgY29uc3QgdlRhcmdldCA9IHsgeDogdGFyZ2V0Qi54IC0gdGFyZ2V0QS54LCB6OiB0YXJnZXRCLnogLSB0YXJnZXRBLnogfTtcclxuXHJcbiAgICBjb25zdCBhbmdsZVNvdXJjZSA9IE1hdGguYXRhbjIodlNvdXJjZS56LCB2U291cmNlLngpO1xyXG4gICAgY29uc3QgYW5nbGVUYXJnZXQgPSBNYXRoLmF0YW4yKHZUYXJnZXQueiwgdlRhcmdldC54KTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHJvdGF0aW9uWVJhZDogYW5nbGVUYXJnZXQgLSBhbmdsZVNvdXJjZSxcclxuICAgICAgICByZWZTb3VyY2U6IHNvdXJjZUEsXHJcbiAgICAgICAgcmVmVGFyZ2V0OiB0YXJnZXRBXHJcbiAgICB9O1xyXG59XHJcblxyXG4vKiogQXBwbGllcyB0aGUgcmlnaWQgdHJhbnNmb3JtIHRvIGEgM0QgcG9zaXRpb24gKHgsIHksIHopLiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlSaWdpZFRyYW5zZm9ybVRvUG9pbnQocDogVmVjMywgdDogUmlnaWRUcmFuc2Zvcm0pOiBWZWMzIHtcclxuICAgIGNvbnN0IGR4ID0gcC54IC0gdC5yZWZTb3VyY2UueDtcclxuICAgIGNvbnN0IGR6ID0gcC56IC0gdC5yZWZTb3VyY2UuejtcclxuICAgIGNvbnN0IGNvcyA9IE1hdGguY29zKHQucm90YXRpb25ZUmFkKTtcclxuICAgIGNvbnN0IHNpbiA9IE1hdGguc2luKHQucm90YXRpb25ZUmFkKTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHg6IHQucmVmVGFyZ2V0LnggKyAoZHggKiBjb3MgLSBkeiAqIHNpbiksXHJcbiAgICAgICAgeTogdC5yZWZUYXJnZXQueSArIChwLnkgLSB0LnJlZlNvdXJjZS55KSwgLy8gdmVydGljYWwgYXhpcyBpcyBub3Qgcm90YXRlZFxyXG4gICAgICAgIHo6IHQucmVmVGFyZ2V0LnogKyAoZHggKiBzaW4gKyBkeiAqIGNvcylcclxuICAgIH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBcHBsaWVzIHRoZSBZIHJvdGF0aW9uIChpbiBkZWdyZWVzKSB0byBhbiBvcmllbnRhdGlvbiBhbmdsZSAoYSBwb3NlJ3MgeVJvdGF0aW9uKS5cclxuICogQSBudWxsL3VuZGVmaW5lZC9ub24tbnVtZXJpYyBhbmdsZSBpcyByZXR1cm5lZCB1bnRvdWNoZWQ6IFwibm8gb3JpZW50YXRpb24gc3RvcmVkXCJcclxuICogbXVzdCBzdGF5IFwibm8gb3JpZW50YXRpb24gc3RvcmVkXCIsIG5vdCBiZWNvbWUgdGhlIHJhdyByb3RhdGlvbiBkZWx0YS5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBhcHBseVJpZ2lkVHJhbnNmb3JtVG9ZUm90YXRpb25EZWcoeVJvdGF0aW9uRGVnOiBudW1iZXIsIHQ6IFJpZ2lkVHJhbnNmb3JtKTogbnVtYmVyIHtcclxuICAgIGlmICh5Um90YXRpb25EZWcgPT09IG51bGwgfHwgeVJvdGF0aW9uRGVnID09PSB1bmRlZmluZWQgfHwgTnVtYmVyLmlzTmFOKE51bWJlcih5Um90YXRpb25EZWcpKSkge1xyXG4gICAgICAgIHJldHVybiB5Um90YXRpb25EZWc7XHJcbiAgICB9XHJcbiAgICBjb25zdCBkZWx0YURlZyA9IHQucm90YXRpb25ZUmFkICogKDE4MCAvIE1hdGguUEkpO1xyXG4gICAgcmV0dXJuIE51bWJlcih5Um90YXRpb25EZWcpICsgZGVsdGFEZWc7XHJcbn1cclxuXHJcbi8qKiBFdWNsaWRlYW4gZGlzdGFuY2UgYmV0d2VlbiB0d28gcG9pbnRzLCB1c2VmdWwgdG8gdmFsaWRhdGUgbGFuZG1hcmsgcXVhbGl0eS4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGRpc3RhbmNlKGE6IFZlYzMsIGI6IFZlYzMpOiBudW1iZXIge1xyXG4gICAgY29uc3QgZHggPSBhLnggLSBiLngsIGR5ID0gYS55IC0gYi55LCBkeiA9IGEueiAtIGIuejtcclxuICAgIHJldHVybiBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkgKyBkeiAqIGR6KTtcclxufVxyXG4vKipcclxuICogQXBwbGllcyBPTkxZIHRoZSByb3RhdGlvbiBwYXJ0IG9mIHRoZSB0cmFuc2Zvcm0gdG8gYSBkaXJlY3Rpb24gdmVjdG9yXHJcbiAqIChhIG5vcm1hbCwgYSBzdGVtIHZlY3RvciwgLi4uKS5cclxuICpcclxuICogQSBkaXJlY3Rpb24gaGFzIG5vIG9yaWdpbiwgc28gdGhlIHRyYW5zbGF0aW9uIG11c3QgTk9UIGJlIGFwcGxpZWQgdG8gaXQg4oCUXHJcbiAqIGRvaW5nIHNvIHdvdWxkIHR1cm4gYSB1bml0IG5vcm1hbCBpbnRvIGEgcG9pbnQgc29tZXdoZXJlIGluIHRoZSB0YXJnZXQgbW9kZWwuXHJcbiAqIFVzZWQgZm9yIGEgUE9JJ3MgYG1ldGFkYXRhLm5vcm1hbGAsIHdoaWNoIGRyaXZlcyB0aGUgb3JpZW50YXRpb24gb2YgdGhlIHRhZydzXHJcbiAqIHN0ZW06IHdpdGhvdXQgdGhpcyByb3RhdGlvbiwgYSBwYXN0aWxsZSBjb3BpZWQgaW50byBhIHNwYWNlIHdob3NlIG1vZGVsIGlzXHJcbiAqIHJvdGF0ZWQgcmVsYXRpdmUgdG8gdGhlIHNvdXJjZSBlbmRzIHVwIHBvaW50aW5nIGludG8gdGhlIHdhbGwgaXQgaXMgc3R1Y2sgb24uXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlSaWdpZFRyYW5zZm9ybVRvRGlyZWN0aW9uKHY6IFZlYzMsIHQ6IFJpZ2lkVHJhbnNmb3JtKTogVmVjMyB7XHJcbiAgICBjb25zdCBjb3MgPSBNYXRoLmNvcyh0LnJvdGF0aW9uWVJhZCk7XHJcbiAgICBjb25zdCBzaW4gPSBNYXRoLnNpbih0LnJvdGF0aW9uWVJhZCk7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB4OiB2LnggKiBjb3MgLSB2LnogKiBzaW4sXHJcbiAgICAgICAgeTogdi55LCAvLyB2ZXJ0aWNhbCBheGlzIGlzIG5vdCByb3RhdGVkXHJcbiAgICAgICAgejogdi54ICogc2luICsgdi56ICogY29zXHJcbiAgICB9O1xyXG59XHJcbiJdfQ==
|