@smarterplan/ngx-smarterplan-core 1.4.13 → 1.4.15
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 +1230 -201
- package/esm2022/lib/services/models/comment.service.mjs +35 -1
- package/esm2022/lib/services/models/domain.service.mjs +20 -1
- package/esm2022/lib/services/models/equipment.service.mjs +7 -3
- package/esm2022/lib/services/models/feature.service.mjs +20 -1
- package/esm2022/lib/services/models/hashtag.service.mjs +29 -2
- package/esm2022/lib/services/models/mission.service.mjs +17 -1
- 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 +1503 -287
- 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 +320 -19
- package/lib/services/models/comment.service.d.ts +16 -0
- package/lib/services/models/domain.service.d.ts +8 -0
- package/lib/services/models/equipment.service.d.ts +4 -1
- package/lib/services/models/feature.service.d.ts +5 -0
- package/lib/services/models/hashtag.service.d.ts +6 -0
- package/lib/services/models/mission.service.d.ts +5 -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,25 @@ 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
|
+
async getAllFeaturesBySpaceRaw(spaceID) {
|
|
182
|
+
if (!spaceID) {
|
|
183
|
+
return [];
|
|
184
|
+
}
|
|
185
|
+
const all = [];
|
|
186
|
+
let nextToken = null;
|
|
187
|
+
do {
|
|
188
|
+
const page = await this.API.__proto__.FeaturesBySpace(spaceID, undefined, undefined, 1000, nextToken);
|
|
189
|
+
if (page?.items?.length > 0) {
|
|
190
|
+
all.push(...page.items.filter((item) => !!item));
|
|
191
|
+
}
|
|
192
|
+
nextToken = page?.nextToken ?? null;
|
|
193
|
+
} while (nextToken);
|
|
194
|
+
return all;
|
|
195
|
+
}
|
|
177
196
|
isBookingPlace(feature) {
|
|
178
197
|
feature.isBookingPlace = feature.type === FeatureType.DESK;
|
|
179
198
|
}
|
|
@@ -386,4 +405,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
386
405
|
type: Inject,
|
|
387
406
|
args: ['currentAPIService']
|
|
388
407
|
}] }, { 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==
|
|
408
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvZmVhdHVyZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFDQUFxQztBQUNyQywyQ0FBMkM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEQsT0FBTyxFQUFvQixXQUFXLEVBQUUsV0FBVyxFQUFPLE9BQU8sRUFBc0IsTUFBTSxxQkFBcUIsQ0FBQztBQUluSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7OztBQVUxRCxNQUFNLE9BQU8sY0FBZSxTQUFRLGlCQUFpQjtJQXlDckM7SUFDQTtJQUVBO0lBQ0E7SUFFQTtJQUNBO0lBL0NaLEdBQUcsQ0FBTSxDQUFDLEtBQUs7SUFFZixjQUFjLEdBR1QsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUVuQixlQUFlLEdBQTJDO1FBQ3RELEtBQUssRUFBRSxFQUFFO1FBQ1QsSUFBSSxFQUFFLEVBQUU7S0FDWCxDQUFDO0lBRUYsV0FBVyxHQUErQixJQUFJLGVBQWUsQ0FBWSxJQUFJLENBQUMsQ0FBQztJQUUvRSxlQUFlLEdBQWMsRUFBRSxDQUFDO0lBRWhDLFVBQVUsR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUU3QyxZQUFZLENBQVM7SUFFckIsY0FBYyxDQUFTO0lBRXZCLFFBQVEsR0FBcUIsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUUzQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBRW5CLG1CQUFtQixHQUFhLElBQUksQ0FBQztJQUVyQyxnQkFBZ0IsR0FBYSxJQUFJLENBQUM7SUFFbEMsbUJBQW1CLEdB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QyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUM5QyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxjQUFjLENBQUMsRUFBRSxDQUNsRCxDQUFDO1FBQ0YsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNkLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM3RCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztZQUNyQixLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLO1lBQ2pDLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUk7U0FDbEMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CO0lBQzNCLENBQUM7d0dBdmZRLGNBQWMsa0JBd0NYLG1CQUFtQjs0R0F4Q3RCLGNBQWMsY0FGWCxNQUFNOzs0RkFFVCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBeUNRLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IE1hdHRlcnRhZ0RhdGEgfSBmcm9tIFwiLi4vLi4vbWF0dGVydGFnRGF0YVwiO1xyXG5pbXBvcnQgeyBGZWF0dXJlLCBIYXNodGFnLCBGZWF0dXJlVHlwZSwgQ29tbWVudFR5cGUsIFBPSSwgUG9pVHlwZSwgRXZlbnQsIExldmVsU3RhdHVzIH0gZnJvbSBcIi4uLy4uL3R5cGVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRmlsdGVyU2VydmljZSB9IGZyb20gXCIuLi9maWx0ZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBOYXZpZ2F0b3JTZXJ2aWNlIH0gZnJvbSBcIi4uL25hdmlnYXRvci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEJhc2VVc2VyU2VydmljZSB9IGZyb20gXCIuLi91c2VyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQmFzZU9iamVjdFNlcnZpY2UgfSBmcm9tIFwiLi9iYXNlLW9iamVjdC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENvbW1lbnRTZXJ2aWNlIH0gZnJvbSBcIi4vY29tbWVudC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEhhc2h0YWdTZXJ2aWNlIH0gZnJvbSBcIi4vaGFzaHRhZy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4vbmF2aWdhdGlvbi5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFBvaVNlcnZpY2UgfSBmcm9tIFwiLi9wb2kuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBab25lQ2hhbmdlU2VydmljZSB9IGZyb20gXCIuLi96b25lQ2hhbmdlLnNlcnZpY2VcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmVhdHVyZVNlcnZpY2UgZXh0ZW5kcyBCYXNlT2JqZWN0U2VydmljZSB7XHJcbiAgICBBUEk6IGFueTsgLy9BV1NcclxuXHJcbiAgICBmZWF0dXJlVXBkYXRlZDogU3ViamVjdDx7XHJcbiAgICAgICAgc3BhY2U6IEZlYXR1cmVbXTtcclxuICAgICAgICB6b25lOiBGZWF0dXJlW107XHJcbiAgICB9PiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gICAgY3VycmVudEZlYXR1cmVzOiB7IHNwYWNlOiBGZWF0dXJlW107IHpvbmU6IEZlYXR1cmVbXTsgfSA9IHtcclxuICAgICAgICBzcGFjZTogW10sXHJcbiAgICAgICAgem9uZTogW10sXHJcbiAgICB9O1xyXG5cclxuICAgIGZlYXR1cmVUYWdzOiBCZWhhdmlvclN1YmplY3Q8RmVhdHVyZVtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmVhdHVyZVtdPihudWxsKTtcclxuXHJcbiAgICBmZWF0dXJlRmlsdGVyZWQ6IEZlYXR1cmVbXSA9IFtdO1xyXG5cclxuICAgIHVwZGF0ZURvbmU6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIHpvbmVJREZpbHRlcjogc3RyaW5nO1xyXG5cclxuICAgIGN1cnJlbnRTcGFjZUlEOiBzdHJpbmc7XHJcblxyXG4gICAgdXBkYXRpbmc6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIGlzVXBkYXRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICBmZWF0dXJlRG9tYWluRmlsdGVyOiBzdHJpbmdbXSA9IG51bGw7XHJcblxyXG4gICAgZGVza0RvbWFpbkZpbHRlcjogc3RyaW5nW10gPSBudWxsO1xyXG5cclxuICAgIGRlc2tCb29raW5nc1VwZGF0ZWQ6IFN1YmplY3Q8RXZlbnRbXT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIHB1YmxpYyBjdXJyZW50SGFzaHRhZ3M6IEhhc2h0YWdbXSA9IFtdO1xyXG5cclxuICAgIGNyZWF0ZU9ic2VydmFibGU6IFN1YmplY3Q8RmVhdHVyZT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIGRlbGV0ZU9ic2VydmFibGU6IFN1YmplY3Q8RmVhdHVyZT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIEBJbmplY3QoJ2N1cnJlbnRBUElTZXJ2aWNlJykgYXBpSW5qZWN0ZWQ6IGFueSxcclxuICAgICAgICBwcml2YXRlIG5hdmlnYXRvclNlcnZpY2U6IE5hdmlnYXRvclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlLFxyXG4gICAgICAgIHBvaVNlcnZpY2U6IFBvaVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBjb21tZW50U2VydmljZTogQ29tbWVudFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxyXG4gICAgICAgIG5hdmlnYXRpb25TZXJ2aWNlOiBOYXZpZ2F0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGhhc2h0YWdTZXJ2aWNlOiBIYXNodGFnU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHpvbmVDaGFuZ2VTZXJ2aWNlOiBab25lQ2hhbmdlU2VydmljZSxcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKHBvaVNlcnZpY2UsIG5hdmlnYXRpb25TZXJ2aWNlKTtcclxuICAgICAgICB0aGlzLkFQSSA9IGFwaUluamVjdGVkO1xyXG4gICAgICAgIHRoaXMuZmVhdHVyZVVwZGF0ZWQuc3Vic2NyaWJlKChsaXN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZlYXR1cmVzID0gbGlzdDtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLnpvbmVDaGFuZ2Uuc3Vic2NyaWJlKCh6b25lKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNwYWNlSUQgPSB0aGlzLm5hdmlnYXRvclNlcnZpY2UuY3VycmVudFNwYWNlSUQ7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5jdXJyZW50U3BhY2VJRCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mZWF0dXJlVGFncy5uZXh0KG51bGwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mZWF0dXJlVXBkYXRlZC5uZXh0KHsgc3BhY2U6IFtdLCB6b25lOiBudWxsIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIgPSBudWxsO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHpvbmUuaWQgIT09IHRoaXMuem9uZUlERmlsdGVyICYmICF0aGlzLnVzZXJTZXJ2aWNlLmlzTXVzZXVtVXNlcih0aGlzLmN1cnJlbnRTcGFjZUlEKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIgPSB6b25lLmlkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0RmVhdHVyZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRG9uZS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50U3BhY2VJRCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0RmVhdHVyZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmRlbGV0ZU9ic2VydmFibGUuc3Vic2NyaWJlKChmZWF0dXJlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRTcGFjZUlEKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUR1ZVRvRGVsZXRlKGZlYXR1cmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuY3JlYXRlT2JzZXJ2YWJsZS5zdWJzY3JpYmUoKGZlYXR1cmUpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRHVlVG9DcmVhdGUoZmVhdHVyZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKlxyXG4gICAgKiBDUlVEXHJcbiAgICAqL1xyXG4gICAgYXN5bmMgY3JlYXRlRmVhdHVyZShmZWF0dXJlOiBGZWF0dXJlKTogUHJvbWlzZTxGZWF0dXJlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVGZWF0dXJlKGZlYXR1cmUpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGRlbGV0ZUZlYXR1cmUoZmVhdHVyZTogRmVhdHVyZSk6IFByb21pc2U8RmVhdHVyZT4ge1xyXG4gICAgICAgIGNvbnN0IGRlbGV0ZWQgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlRmVhdHVyZSh7IGlkOiBmZWF0dXJlLmlkIH0pO1xyXG4gICAgICAgIGlmIChkZWxldGVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBvaSA9IGF3YWl0IHRoaXMucG9pU2VydmljZS5nZXRQb2lCeUVsZW1lbnRJZChmZWF0dXJlLmlkKTtcclxuICAgICAgICAgICAgaWYgKHBvaSkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wb2lTZXJ2aWNlLmRlbGV0ZVBvaShwb2kuaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGRlbGV0ZSBjb21tZW50c1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbW1lbnQgb2YgZGVsZXRlZC5jb21tZW50cy5pdGVtcykge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U2VydmljZS5kZWxldGVDb21tZW50KGNvbW1lbnQuaWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBkZWxldGVkO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZUZlYXR1cmUoZmVhdHVyZTogYW55KTogUHJvbWlzZTxGZWF0dXJlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5VcGRhdGVGZWF0dXJlKGZlYXR1cmUpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldEZlYXR1cmUoaWQ6IHN0cmluZyk6IFByb21pc2U8RmVhdHVyZT4ge1xyXG4gICAgICAgIGNvbnN0IGZlYXR1cmUgPSAoYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkdldEZlYXR1cmUoaWQpKSBhcyBGZWF0dXJlO1xyXG4gICAgICAgIGZlYXR1cmUuZXZlbnRzPy5pdGVtcy5zb3J0KChhLCBiKSA9PiBiLnJlYWxTdGFydERhdGUgLSBhLnJlYWxTdGFydERhdGUpO1xyXG4gICAgICAgIHRoaXMuc2V0Q292ZXJJbWFnZShmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldEltYWdlcyhmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldFZpZGVvcyhmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldERvY3VtZW50cyhmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldEF1ZGlvKGZlYXR1cmUpO1xyXG4gICAgICAgIHRoaXMuc2V0RXh0ZXJuYWxMaW5rcyhmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldEVtYmVkcyhmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLnNldElmcmFtZXMoZmVhdHVyZSk7XHJcbiAgICAgICAgdGhpcy5pc0Jvb2tpbmdQbGFjZShmZWF0dXJlKTtcclxuICAgICAgICByZXR1cm4gZmVhdHVyZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgYXN5bmMgaW5pdEZlYXR1cmVzKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50U3BhY2VJRCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudXBkYXRpbmcubmV4dCh0cnVlKTtcclxuICAgICAgICB0aGlzLmlzVXBkYXRpbmcgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IGZlYXR1cmVMaXN0ID0gYXdhaXQgdGhpcy5nZXRGZWF0dXJlc0ZvclNwYWNlKHRoaXMuY3VycmVudFNwYWNlSUQpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudEhhc2h0YWdzID0gYXdhaXQgdGhpcy5oYXNodGFnU2VydmljZS5nZXRIYXNodGFnc0ZvclNwYWNlKFxyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTcGFjZUlELFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5jdXJyZW50SGFzaHRhZ3MpO1xyXG4gICAgICAgIGlmIChmZWF0dXJlTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGxldCBmaWx0ZXJlZEZlYXR1cmVzID0gWy4uLmZlYXR1cmVMaXN0XTtcclxuICAgICAgICAgICAgbGV0IGZpbHRlcmVkUG9pbnRJbnRlcmVzdCA9IGZpbHRlcmVkRmVhdHVyZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgKGZlYXR1cmUpID0+IGZlYXR1cmUudHlwZSAhPT0gRmVhdHVyZVR5cGUuREVTSyxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgbGV0IGZpbHRlcmVkRGVza3MgPSBmaWx0ZXJlZEZlYXR1cmVzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIChmZWF0dXJlKSA9PiBmZWF0dXJlLnR5cGUgPT09IEZlYXR1cmVUeXBlLkRFU0ssXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmZlYXR1cmVEb21haW5GaWx0ZXIpIHtcclxuICAgICAgICAgICAgICAgIGZpbHRlcmVkUG9pbnRJbnRlcmVzdCA9IGZpbHRlcmVkUG9pbnRJbnRlcmVzdC5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAgICAgKGZlYXR1cmUpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmVhdHVyZURvbWFpbkZpbHRlci5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvbWFpbikgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlLmRvbWFpbiAmJiBkb21haW4gPT09IGZlYXR1cmUuZG9tYWluLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5kZXNrRG9tYWluRmlsdGVyKSB7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXJlZERlc2tzID0gZmlsdGVyZWREZXNrcy5maWx0ZXIoKGZlYXR1cmUpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXNrRG9tYWluRmlsdGVyLmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChkb21haW4pID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlLmRvbWFpbiAmJiBkb21haW4gPT09IGZlYXR1cmUuZG9tYWluLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZpbHRlcmVkRmVhdHVyZXMgPSBbLi4uZmlsdGVyZWRQb2ludEludGVyZXN0LCAuLi5maWx0ZXJlZERlc2tzXTtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmVhdHVyZXMuc3BhY2UgPSBmaWx0ZXJlZEZlYXR1cmVzLnNvcnQoXHJcbiAgICAgICAgICAgICAgICAoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIC8vIGVtaXQgb24gdGFncyBzaG91bGQgYmUgYWZ0ZXIgc2V0dGluZyBjdXJyZW50LnNwYWNlICEhXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnpvbmVJREZpbHRlcikge1xyXG4gICAgICAgICAgICAgICAgZmlsdGVyZWRGZWF0dXJlcyA9XHJcbiAgICAgICAgICAgICAgICAgICAgKGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJPYmplY3RzRm9yWm9uZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRGZWF0dXJlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy56b25lSURGaWx0ZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgKSkgYXMgRmVhdHVyZVtdO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmZlYXR1cmVUYWdzLm5leHQoZmlsdGVyZWRGZWF0dXJlcyk7IC8vIGZvciB0aGlzIHpvbmVcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZlYXR1cmVzLnpvbmUgPSBmaWx0ZXJlZEZlYXR1cmVzLnNvcnQoXHJcbiAgICAgICAgICAgICAgICAoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgsXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuY3VycmVudEZlYXR1cmVzKTtcclxuICAgICAgICAgICAgdGhpcy5mZWF0dXJlVXBkYXRlZC5uZXh0KHRoaXMuY3VycmVudEZlYXR1cmVzKTsgLy8gZm9yIGxhdGVyYWwgbWVudVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmVhdHVyZVVwZGF0ZWQubmV4dCh7IHNwYWNlOiBbXSwgem9uZTogW10gfSk7IC8vIGZvciBsYXRlcmFsIG1lbnVcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51cGRhdGluZy5uZXh0KGZhbHNlKTtcclxuICAgICAgICB0aGlzLmlzVXBkYXRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRGZWF0dXJlc0ZvclNwYWNlKFxyXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAgICAgICBrZWVwQXJjaGl2ZWQ6IGJvb2xlYW4gPSBmYWxzZSxcclxuICAgICk6IFByb21pc2U8RmVhdHVyZVtdPiB7XHJcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uRmVhdHVyZXNCeVNwYWNlKHNwYWNlSUQpLnRoZW4oXHJcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4gcmVzcG9uc2UuaXRlbXMsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBsZXQgZmVhdHVyZXNGb3JVc2VyID1cclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckZlYXR1cmVzRm9yQ3VycmVudFVzZXJJblNwYWNlKFxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZXMsXHJcbiAgICAgICAgICAgICAgICBzcGFjZUlELFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIGlmICgha2VlcEFyY2hpdmVkKSB7XHJcbiAgICAgICAgICAgIGZlYXR1cmVzRm9yVXNlciA9IGZlYXR1cmVzRm9yVXNlci5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgICAoZmVhdHVyZSkgPT4gIXRoaXMuaXNBcmNoaXZlZChmZWF0dXJlKSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChjb25zdCBmZWF0dXJlIG9mIGZlYXR1cmVzRm9yVXNlcikge1xyXG4gICAgICAgICAgICB0aGlzLnNldENvdmVySW1hZ2UoZmVhdHVyZSk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNCb29raW5nUGxhY2UoZmVhdHVyZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmZWF0dXJlc0ZvclVzZXI7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0RmVhdHVyZXNCeVNwYWNlV2l0aG91dEZpbHRlcmluZyhzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPEZlYXR1cmVbXT4ge1xyXG4gICAgICAgIGxldCBmZWF0dXJlcyA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5GZWF0dXJlc0J5U3BhY2Uoc3BhY2VJRCkudGhlbihcclxuICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiByZXNwb25zZS5pdGVtcyxcclxuICAgICAgICApO1xyXG4gICAgICAgIGZlYXR1cmVzID0gZmVhdHVyZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoZmVhdHVyZSkgPT4gIXRoaXMuaXNBcmNoaXZlZChmZWF0dXJlKSxcclxuICAgICAgICApO1xyXG4gICAgICAgIGZvciAoY29uc3QgZmVhdHVyZSBvZiBmZWF0dXJlcykge1xyXG4gICAgICAgICAgICB0aGlzLnNldENvdmVySW1hZ2UoZmVhdHVyZSk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNCb29raW5nUGxhY2UoZmVhdHVyZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmZWF0dXJlcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgRVZFUlkgZmVhdHVyZSBvZiBhIHNwYWNlLCBmb2xsb3dpbmcgYG5leHRUb2tlbmAgdW50aWwgdGhlIGluZGV4IGlzXHJcbiAgICAgKiBleGhhdXN0ZWQsIHdpdGggbm8gdXNlci9hcmNoaXZlIGZpbHRlcmluZyBhdCBhbGwuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGdldEFsbEZlYXR1cmVzQnlTcGFjZVJhdyhzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPEZlYXR1cmVbXT4ge1xyXG4gICAgICAgIGlmICghc3BhY2VJRCkge1xyXG4gICAgICAgICAgICByZXR1cm4gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGFsbDogRmVhdHVyZVtdID0gW107XHJcbiAgICAgICAgbGV0IG5leHRUb2tlbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgICAgIGRvIHtcclxuICAgICAgICAgICAgY29uc3QgcGFnZSA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5GZWF0dXJlc0J5U3BhY2UoXHJcbiAgICAgICAgICAgICAgICBzcGFjZUlELFxyXG4gICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgMTAwMCxcclxuICAgICAgICAgICAgICAgIG5leHRUb2tlbixcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKHBhZ2U/Lml0ZW1zPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBhbGwucHVzaCguLi5wYWdlLml0ZW1zLmZpbHRlcigoaXRlbTogRmVhdHVyZSB8IG51bGwpID0+ICEhaXRlbSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG5leHRUb2tlbiA9IHBhZ2U/Lm5leHRUb2tlbiA/PyBudWxsO1xyXG4gICAgICAgIH0gd2hpbGUgKG5leHRUb2tlbik7XHJcblxyXG4gICAgICAgIHJldHVybiBhbGw7XHJcbiAgICB9XHJcblxyXG4gICAgaXNCb29raW5nUGxhY2UoZmVhdHVyZTogRmVhdHVyZSkge1xyXG4gICAgICAgIGZlYXR1cmUuaXNCb29raW5nUGxhY2UgPSBmZWF0dXJlLnR5cGUgPT09IEZlYXR1cmVUeXBlLkRFU0s7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHNldENvdmVySW1hZ2UoZmVhdHVyZTogRmVhdHVyZSkge1xyXG4gICAgICAgIGNvbnN0IGNvdmVySW1hZ2UgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zLmZpbmQoXHJcbiAgICAgICAgICAgIChjb20pID0+IGNvbS5pc0NvdmVySW1hZ2UsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoY292ZXJJbWFnZSkge1xyXG4gICAgICAgICAgICBmZWF0dXJlLmNvdmVySW1hZ2VVcmwgPSBjb3ZlckltYWdlLmFubmV4ZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZmVhdHVyZS5jb21tZW50cy5pdGVtcy5zb21lKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5ZT1VUVUJFKSkge1xyXG4gICAgICAgICAgICBjb25zdCB5b3V0dWJlQ29tbWVudCA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXMuZmluZCgoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuWU9VVFVCRSk7XHJcbiAgICAgICAgICAgIC8vIHdlIGNhbiB1c2UgdGhlIHByZXZpZXcgaW1hZ2Ugb2YgeW91dHViZVxyXG4gICAgICAgICAgICBmZWF0dXJlLmNvdmVySW1hZ2VVcmwgPSBgaHR0cHM6Ly9pbWcueW91dHViZS5jb20vdmkvJHt5b3V0dWJlQ29tbWVudC5leHRlcm5hbExpbmt9LzAuanBnYDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGZlYXR1cmUuY29tbWVudHMuaXRlbXMuc29tZSgoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuSU1BR0UpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGltYWdlQ29tbWVudCA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXMuZmluZChcclxuICAgICAgICAgICAgICAgIChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5JTUFHRSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgZmVhdHVyZS5jb3ZlckltYWdlVXJsID0gaW1hZ2VDb21tZW50LmFubmV4ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZUZlYXR1cmVMb2NhdGlvbihcclxuICAgICAgICBmZWF0dXJlOiBGZWF0dXJlLFxyXG4gICAgICAgIHRhZ0RhdGE6IE1hdHRlcnRhZ0RhdGEsXHJcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nLFxyXG4gICAgKTogUHJvbWlzZTxQT0k+IHtcclxuICAgICAgICBjb25zdCBwb2lJbnB1dCA9IHtcclxuICAgICAgICAgICAgY29vcmRpbmF0ZTogdGFnRGF0YS5nZXRDb29yZGluYXRlU3RyaW5nKCksXHJcbiAgICAgICAgICAgIHR5cGU6IGZlYXR1cmUuaXNCb29raW5nUGxhY2UgPyBQb2lUeXBlLkRFU0sgOiBQb2lUeXBlLkRBVEEsXHJcbiAgICAgICAgICAgIGVsZW1lbnRJRDogZmVhdHVyZS5pZCxcclxuICAgICAgICAgICAgbWV0YWRhdGE6IHRhZ0RhdGEuZ2V0TWV0YWRhdGFTdHJpbmcoKSxcclxuICAgICAgICAgICAgbWF0dGVycG9ydFN3ZWVwSUQ6IHRhZ0RhdGEuZ2V0U3dlZXBJRCgpLFxyXG4gICAgICAgIH0gYXMgUE9JO1xyXG4gICAgICAgIGNvbnN0IHBvaSA9IGF3YWl0IHRoaXMucG9pU2VydmljZS5jcmVhdGVQT0lGb3JTcGFjZUlEKHBvaUlucHV0KTtcclxuICAgICAgICByZXR1cm4gcG9pO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEltYWdlcyhmZWF0dXJlOiBGZWF0dXJlKSB7XHJcbiAgICAgICAgY29uc3QgaW1hZ2VzQ29tbWVudHMgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLklNQUdFKVxyXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgpO1xyXG4gICAgICAgIGNvbnN0IGltYWdlcyA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgaW1hZ2Ugb2YgaW1hZ2VzQ29tbWVudHMpIHtcclxuICAgICAgICAgICAgaW1hZ2VzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgcGF0aDogaW1hZ2UuYW5uZXhlLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGltYWdlLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGltYWdlLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgc2hvd0luVGFnOiBpbWFnZS5zaG93bkluVGFnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmVhdHVyZS5pbWFnZXMgPSBpbWFnZXM7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VmlkZW9zKGZlYXR1cmU6IEZlYXR1cmUpIHtcclxuICAgICAgICBjb25zdCB2aWRlb3NDb21tZW50cyA9IGZlYXR1cmUuY29tbWVudHMuaXRlbXNcclxuICAgICAgICAgICAgLmZpbHRlcigoY29tKSA9PiBjb20udHlwZSA9PT0gQ29tbWVudFR5cGUuVklERU8gfHwgY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLllPVVRVQkUpXHJcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XHJcbiAgICAgICAgY29uc3QgdmlkZW9zID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCB2aWRlbyBvZiB2aWRlb3NDb21tZW50cykge1xyXG4gICAgICAgICAgICB2aWRlb3MucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiB2aWRlby50eXBlID09PSBDb21tZW50VHlwZS5ZT1VUVUJFID8gJ2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLycgKyB2aWRlby5leHRlcm5hbExpbmsgOiB2aWRlby5hbm5leGUsXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogdmlkZW8udGl0bGUsXHJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogdmlkZW8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICB0eXBlOiB2aWRlby50eXBlLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmVhdHVyZS52aWRlb3MgPSB2aWRlb3M7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RG9jdW1lbnRzKGZlYXR1cmU6IEZlYXR1cmUpIHtcclxuICAgICAgICBjb25zdCBkb2N1bWVudENvbW1lbnRzID0gZmVhdHVyZS5jb21tZW50cy5pdGVtc1xyXG4gICAgICAgICAgICAuZmlsdGVyKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5ET0NVTUVOVClcclxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4KTtcclxuICAgICAgICBjb25zdCBkb2NzID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCBkb2N1bWVudCBvZiBkb2N1bWVudENvbW1lbnRzKSB7XHJcbiAgICAgICAgICAgIGRvY3MucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiBkb2N1bWVudC5hbm5leGUsXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogZG9jdW1lbnQudGl0bGUsXHJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZG9jdW1lbnQuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmZWF0dXJlLmRvY3VtZW50cyA9IGRvY3M7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0QXVkaW8oZmVhdHVyZTogRmVhdHVyZSkge1xyXG4gICAgICAgIGNvbnN0IGF1ZGlvQ29tbWVudHMgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLkFVRElPKVxyXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgpO1xyXG4gICAgICAgIGNvbnN0IGF1ZGlvcyA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgYXVkaW8gb2YgYXVkaW9Db21tZW50cykge1xyXG4gICAgICAgICAgICBhdWRpb3MucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiBhdWRpby5hbm5leGUsXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogYXVkaW8udGl0bGUsXHJcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogYXVkaW8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmZWF0dXJlLmF1ZGlvcyA9IGF1ZGlvcztcclxuICAgIH1cclxuXHJcbiAgICBzZXRFeHRlcm5hbExpbmtzKGZlYXR1cmU6IEZlYXR1cmUpIHtcclxuICAgICAgICBjb25zdCBsaW5rc0NvbW1lbnRzID0gZmVhdHVyZS5jb21tZW50cy5pdGVtc1xyXG4gICAgICAgICAgICAuZmlsdGVyKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5VUkwpXHJcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XHJcbiAgICAgICAgY29uc3QgZXh0ZXJuYWxMaW5rcyA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3QgbGluayBvZiBsaW5rc0NvbW1lbnRzKSB7XHJcbiAgICAgICAgICAgIGV4dGVybmFsTGlua3MucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBwYXRoOiBsaW5rLmV4dGVybmFsTGluayxcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBsaW5rLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGxpbmsuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICBzaG93SW5UYWc6IGxpbmsuc2hvd25JblRhZyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZlYXR1cmUuZXh0ZXJuYWxMaW5rcyA9IGV4dGVybmFsTGlua3M7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RW1iZWRzKGZlYXR1cmU6IEZlYXR1cmUpIHtcclxuICAgICAgICBjb25zdCBlbWJlZENvbW1lbnRzID0gZmVhdHVyZS5jb21tZW50cy5pdGVtc1xyXG4gICAgICAgICAgICAuZmlsdGVyKChjb20pID0+IGNvbS50eXBlID09PSBDb21tZW50VHlwZS5FTUJFRClcclxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4KTtcclxuICAgICAgICBjb25zdCBlbWJlZHMgPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGVtYmVkIG9mIGVtYmVkQ29tbWVudHMpIHtcclxuICAgICAgICAgICAgZW1iZWRzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgcGF0aDogZW1iZWQuZXh0ZXJuYWxMaW5rLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IGVtYmVkLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGVtYmVkLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgc2hvd0luVGFnOiBlbWJlZC5zaG93bkluVGFnLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmVhdHVyZS5lbWJlZHMgPSBlbWJlZHM7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SWZyYW1lcyhmZWF0dXJlOiBGZWF0dXJlKSB7XHJcbiAgICAgICAgY29uc3QgaWZyYW1lQ29tbWVudHMgPSBmZWF0dXJlLmNvbW1lbnRzLml0ZW1zXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGNvbSkgPT4gY29tLnR5cGUgPT09IENvbW1lbnRUeXBlLklGUkFNRSlcclxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4KTtcclxuICAgICAgICBjb25zdCBpZnJhbWVzID0gW107XHJcbiAgICAgICAgZm9yIChjb25zdCBpZnJhbWUgb2YgaWZyYW1lQ29tbWVudHMpIHtcclxuICAgICAgICAgICAgaWZyYW1lcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHBhdGg6IGlmcmFtZS5leHRlcm5hbExpbmssXHJcbiAgICAgICAgICAgICAgICB0aXRsZTogaWZyYW1lLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IGlmcmFtZS5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICAgIHNob3dJblRhZzogaWZyYW1lLnNob3duSW5UYWcsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmZWF0dXJlLmlmcmFtZXMgPSBpZnJhbWVzO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBhc3luYyBnZXRGaXJzdEZlYXR1cmVGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPEZlYXR1cmU+IHtcclxuICAgICAgICBjb25zdCBmZWF0dXJlcyA9IGF3YWl0IHRoaXMuZ2V0RmVhdHVyZXNGb3JTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICBjb25zdCBmaXJzdCA9IGZlYXR1cmVzLmZpbmQoKGZlYXQpID0+IGZlYXQuaW5kZXggPT09IDEpO1xyXG4gICAgICAgIHJldHVybiBmaXJzdDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyB1cGRhdGVJY29uRm9yQWxsRmVhdHVyZXNJblNwYWNlKFxyXG4gICAgICAgIHRhZ0ljb246IHN0cmluZyxcclxuICAgICAgICBzcGFjZUlEOiBzdHJpbmcsXHJcbiAgICAgICAgY2F0ZWdvcnlJRDogc3RyaW5nID0gbnVsbCxcclxuICAgICk6IFByb21pc2U8eyBmZWF0dXJlczogRmVhdHVyZVtdOyBwb2lzOiBQT0lbXTsgfT4ge1xyXG4gICAgICAgIGxldCBmZWF0dXJlcyA9IGF3YWl0IHRoaXMuZ2V0RmVhdHVyZXNGb3JTcGFjZShzcGFjZUlEKTtcclxuICAgICAgICBpZiAoY2F0ZWdvcnlJRCkge1xyXG4gICAgICAgICAgICBmZWF0dXJlcyA9IGZlYXR1cmVzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIChmZWF0dXJlKSA9PiBmZWF0dXJlLmRvbWFpbklEID09PSBjYXRlZ29yeUlELFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBwb2lzID0gYXdhaXQgdGhpcy51cGRhdGVJY29uRm9yQWxsT2JqZWN0cyhmZWF0dXJlcywgdGFnSWNvbik7XHJcbiAgICAgICAgcmV0dXJuIHsgZmVhdHVyZXMsIHBvaXMgfTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRDcmVhdGVkSW5kaWNlc0ZvckZlYXR1cmVzSW5TcGFjZShcclxuICAgICAgICBzcGFjZUlEOiBzdHJpbmcsXHJcbiAgICApOiBQcm9taXNlPG51bWJlcltdPiB7XHJcbiAgICAgICAgbGV0IGZlYXR1cmVzID0gKGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5GZWF0dXJlc0J5U3BhY2Uoc3BhY2VJRCkpLml0ZW1zO1xyXG4gICAgICAgIGZlYXR1cmVzID0gZmVhdHVyZXMuZmlsdGVyKChmZWF0KSA9PiBmZWF0LmluZGV4KTtcclxuICAgICAgICByZXR1cm4gZmVhdHVyZXMubWFwKChmZWF0KSA9PiBmZWF0LmluZGV4KTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXREZXNrc0ZvclNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8RmVhdHVyZVtdPiB7XHJcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBhd2FpdCB0aGlzLmdldEZlYXR1cmVzRm9yU3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgICAgcmV0dXJuIGZlYXR1cmVzLmZpbHRlcigoZmVhdCkgPT4gZmVhdC5pc0Jvb2tpbmdQbGFjZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFJldHVybiB0cnVlIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIGFyY2hpdmVkIHRoaXMgZmVhdHVyZSAqL1xyXG4gICAgaXNBcmNoaXZlZChmZWF0dXJlOiBGZWF0dXJlKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIGZlYXR1cmUuYXJjaGl2ZWRGb3JNaXNzaW9uSURcclxuICAgICAgICAgICAgPyBmZWF0dXJlLmFyY2hpdmVkRm9yTWlzc2lvbklELmluY2x1ZGVzKFxyXG4gICAgICAgICAgICAgICAgdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbihmZWF0dXJlLnNwYWNlSUQpLmlkLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIDogZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0QXJjaGl2ZWQoZmVhdHVyZTogRmVhdHVyZSwgYXJjaGl2ZWQ6IGJvb2xlYW4pIHtcclxuICAgICAgICBsZXQgYXJjaGl2ZWRMaXN0ID0gZmVhdHVyZS5hcmNoaXZlZEZvck1pc3Npb25JRFxyXG4gICAgICAgICAgICA/IGZlYXR1cmUuYXJjaGl2ZWRGb3JNaXNzaW9uSURcclxuICAgICAgICAgICAgOiBbXTtcclxuICAgICAgICBjb25zdCBtaXNzaW9uSUQgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRNaXNzaW9uKGZlYXR1cmUuc3BhY2VJRCkuaWQ7XHJcblxyXG4gICAgICAgIGFyY2hpdmVkTGlzdCA9IGFyY2hpdmVkTGlzdC5maWx0ZXIoKG0pID0+IG0gIT09IG1pc3Npb25JRCk7XHJcblxyXG4gICAgICAgIGlmIChhcmNoaXZlZCkge1xyXG4gICAgICAgICAgICBhcmNoaXZlZExpc3QucHVzaChtaXNzaW9uSUQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlRmVhdHVyZSh7XHJcbiAgICAgICAgICAgIGlkOiBmZWF0dXJlLmlkLFxyXG4gICAgICAgICAgICBhcmNoaXZlZEZvck1pc3Npb25JRDogYXJjaGl2ZWRMaXN0LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBhc3luYyB1cGRhdGVEdWVUb0NyZWF0ZShmZWF0dXJlOiBGZWF0dXJlKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50RmVhdHVyZXMuc3BhY2UudW5zaGlmdChmZWF0dXJlKTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRGZWF0dXJlcy56b25lLnVuc2hpZnQoZmVhdHVyZSk7XHJcbiAgICAgICAgdGhpcy5mZWF0dXJlVXBkYXRlZC5uZXh0KHtcclxuICAgICAgICAgICAgc3BhY2U6IHRoaXMuY3VycmVudEZlYXR1cmVzLnNwYWNlLFxyXG4gICAgICAgICAgICB6b25lOiB0aGlzLmN1cnJlbnRGZWF0dXJlcy56b25lLFxyXG4gICAgICAgIH0pOyAvLyBmb3IgbGF0ZXJhbCBtZW51XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgdXBkYXRlRHVlVG9EZWxldGUoZGVsZXRlZEZlYXR1cmU6IEZlYXR1cmUpIHtcclxuICAgICAgICBjb25zdCBmZWF0dXJlID0gdGhpcy5jdXJyZW50RmVhdHVyZXMuc3BhY2UuZmluZChcclxuICAgICAgICAgICAgKF9mZWF0dXJlKSA9PiBfZmVhdHVyZS5pZCA9PT0gZGVsZXRlZEZlYXR1cmUuaWQsXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoZmVhdHVyZSkge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuY3VycmVudEZlYXR1cmVzLnNwYWNlLmluZGV4T2YoZmVhdHVyZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZlYXR1cmVzLnNwYWNlLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHpvbmVGZWF0dXJlID0gdGhpcy5jdXJyZW50RmVhdHVyZXMuem9uZS5maW5kKFxyXG4gICAgICAgICAgICAoX2ZlYXR1cmUpID0+IF9mZWF0dXJlLmlkID09PSBkZWxldGVkRmVhdHVyZS5pZCxcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmICh6b25lRmVhdHVyZSkge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuY3VycmVudEZlYXR1cmVzLnpvbmUuaW5kZXhPZih6b25lRmVhdHVyZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZlYXR1cmVzLnpvbmUuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5mZWF0dXJlVXBkYXRlZC5uZXh0KHtcclxuICAgICAgICAgICAgc3BhY2U6IHRoaXMuY3VycmVudEZlYXR1cmVzLnNwYWNlLFxyXG4gICAgICAgICAgICB6b25lOiB0aGlzLmN1cnJlbnRGZWF0dXJlcy56b25lLFxyXG4gICAgICAgIH0pOyAvLyBmb3IgbGF0ZXJhbCBtZW51XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -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=
|
|
@@ -113,6 +113,22 @@ export class MissionService {
|
|
|
113
113
|
async getMissionsForSpace(spaceID) {
|
|
114
114
|
return this.API.__proto__.MissionsBySpace(spaceID).then((missions) => missions.items);
|
|
115
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Same as getMissionsForSpace(), but follows `nextToken` until the connection is
|
|
118
|
+
* exhausted instead of returning only the first page.
|
|
119
|
+
*/
|
|
120
|
+
async getAllMissionsForSpace(spaceID) {
|
|
121
|
+
const all = [];
|
|
122
|
+
let nextToken = null;
|
|
123
|
+
do {
|
|
124
|
+
const page = await this.API.__proto__.MissionsBySpace(spaceID, undefined, undefined, 1000, nextToken);
|
|
125
|
+
if (page?.items?.length > 0) {
|
|
126
|
+
all.push(...page.items.filter((mis) => !!mis && !mis.deletedAt));
|
|
127
|
+
}
|
|
128
|
+
nextToken = page?.nextToken ?? null;
|
|
129
|
+
} while (nextToken);
|
|
130
|
+
return all;
|
|
131
|
+
}
|
|
116
132
|
activateMission(mis) {
|
|
117
133
|
if (mis &&
|
|
118
134
|
(!mis.groups || !mis.groups.includes(ProfileStatus.ACTIVE))) {
|
|
@@ -207,4 +223,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
207
223
|
type: Inject,
|
|
208
224
|
args: ['currentAPIService']
|
|
209
225
|
}] }] });
|
|
210
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvbWlzc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQWtDLGFBQWEsRUFBRSxVQUFVLEVBQWlCLE1BQU0scUJBQXFCLENBQUM7QUFDL0csT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUFLakMsTUFBTSxPQUFPLGNBQWM7SUFDdkIsc0JBQXNCLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQUVoRCxrQkFBa0IsQ0FBVTtJQUU1QixrQkFBa0IsQ0FBVTtJQUU1QixhQUFhLENBQVM7SUFFdEIsR0FBRyxDQUFNLENBQUMsS0FBSztJQUVmO0lBQ0ksa0RBQWtEO0lBQ3JCLFdBQWdCO1FBRTdDLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLLENBQUMscUJBQXFCLENBQUMsTUFBYztRQUN0QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMvRCxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFF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WyIvKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBkYXRlSGFzRXhwaXJlZCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTWlzc2lvbiwgT3JnYW5pc2F0aW9uLCBQcm9maWxlLCBQcm9maWxlU3RhdHVzLCBSb2xlU3RhdHVzLCBWaXNpdFRlbXBsYXRlIH0gZnJvbSBcIi4uLy4uL3R5cGVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tIFwibHV4b25cIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWlzc2lvblNlcnZpY2Uge1xyXG4gICAgY3VycmVudE1pc3Npb25zVXBkYXRlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcblxyXG4gICAgbGFzdEV4cGlyZWRNaXNzaW9uOiBNaXNzaW9uO1xyXG5cclxuICAgIG5leHRNaXNzaW9uVG9TdGFydDogTWlzc2lvbjtcclxuXHJcbiAgICBjdXJyZW50VXNlcklEOiBzdHJpbmc7XHJcblxyXG4gICAgQVBJOiBhbnk7IC8vQVdTXHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgLy8gcHJpdmF0ZSBhZmZlY3RhdGlvblNlcnZpY2U6IEFmZmVjdGF0aW9uU2VydmljZSxcclxuICAgICAgICBASW5qZWN0KCdjdXJyZW50QVBJU2VydmljZScpIGFwaUluamVjdGVkOiBhbnlcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuQVBJID0gYXBpSW5qZWN0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TWlzc2lvbnNGcm9tVXNlcklEKHVzZXJJRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLk1pc3Npb25zQnlVc2VyKHVzZXJJRCkudGhlbigobWlzc2lvbnMpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG1pc3Npb25zLml0ZW1zLmZpbHRlcigobWlzKSA9PiAhbWlzLmRlbGV0ZWRBdCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TWlzc2lvbnNCeU9yZGVyZWRPcmdhbmlzYXRpb24oXHJcbiAgICAgICAgb3JkZXJlZE9yZ0lEOiBzdHJpbmcsXHJcbiAgICApOiBQcm9taXNlPE1pc3Npb25bXT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uTWlzc2lvbnNCeU9yZGVyZWRPcmdhbmlzYXRpb24ob3JkZXJlZE9yZ0lEKS50aGVuKFxyXG4gICAgICAgICAgICAocmVzcG9uc2UpID0+IHJlc3BvbnNlLml0ZW1zLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TWlzc2lvbnNCeU9yZ2FuaXNhdGlvbihvcmdJRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLk1pc3Npb25zQnlPcmdhbmlzYXRpb24ob3JnSUQpLnRoZW4oXHJcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4gcmVzcG9uc2UuaXRlbXMsXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjcmVhdGUobWlzc2lvbjogTWlzc2lvbik6IFByb21pc2U8TWlzc2lvbj4ge1xyXG4gICAgICAgIGNvbnN0IHVwZE1pc3Npb24gPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uQ3JlYXRlTWlzc2lvbihtaXNzaW9uKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIk1pc3Npb24gY3JlYXRlZFwiLCB1cGRNaXNzaW9uKTtcclxuICAgICAgICBhd2FpdCB0aGlzLmNoZWNrSWZDdXJyZW50VXNlck1pc3Npb25DaGFuZ2VkKHVwZE1pc3Npb24pO1xyXG4gICAgICAgIHJldHVybiB1cGRNaXNzaW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZShtaXNzaW9uOiBhbnkpOiBQcm9taXNlPE1pc3Npb24+IHtcclxuICAgICAgICBjb25zdCB1cGRNaXNzaW9uID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLlVwZGF0ZU1pc3Npb24obWlzc2lvbik7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJNaXNzaW9uIHVwZGF0ZWRcIiwgdXBkTWlzc2lvbik7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5jaGVja0lmQ3VycmVudFVzZXJNaXNzaW9uQ2hhbmdlZCh1cGRNaXNzaW9uKTtcclxuICAgICAgICByZXR1cm4gdXBkTWlzc2lvbjtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBhc3NlcnRSb2xlRm9yVXNlckluT3JnKFxyXG4gICAgICAgIHVzZXI6IFByb2ZpbGUsXHJcbiAgICAgICAgb3JnOiBPcmdhbmlzYXRpb24sXHJcbiAgICAgICAgcm9sZTogUm9sZVN0YXR1cyxcclxuICAgICk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldE1pc3Npb25zRnJvbVVzZXJJRCh1c2VyLmlkKS50aGVuKChtaXNzaW9ucykgPT4ge1xyXG4gICAgICAgICAgICBpZiAobWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1pc09yZyA9IG1pc3Npb25zLmZpbHRlcigobWlzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1pcy5vcmdhbmlzYXRpb25JRCA9PT0gb3JnLmlkICYmIG1pcy5yb2xlID09PSByb2xlO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbWlzT3JnLmxlbmd0aCA+IDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldE1pc3Npb25zQnlPcmRlcmVkT3JnYW5pc2F0aW9uQnlTcGFjZShcclxuICAgICAgICBvcmRPcmdJRDogc3RyaW5nLFxyXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAgICk6IFByb21pc2U8TWlzc2lvbltdPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5NaXNzaW9uc0J5T3JkZXJlZE9yZ2FuaXNhdGlvbkJ5U3BhY2Uob3JkT3JnSUQsIHtcclxuICAgICAgICAgICAgZXE6IHNwYWNlSUQsXHJcbiAgICAgICAgfSkudGhlbigobWlzKSA9PiBtaXMuaXRlbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNvZnREZWxldGVNaXNzaW9uKG1pc3Npb25JRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uPiB7XHJcbiAgICAgICAgLy8gY29uc3QgaGFyZERlbGV0ZSA9IGF3YWl0IHRoaXMuY2FuSGFyZERldGVsZU1pc3Npb24obWlzc2lvbi5pZCk7XHJcbiAgICAgICAgLy8gaWYgKGhhcmREZWxldGUpIHtcclxuICAgICAgICAvLyAgICAgcmV0dXJuIHRoaXMuaGFyZERlbGV0ZU1pc3Npb24obWlzc2lvbi5pZCk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiU29mdCBEZWxldGluZyBtaXNzaW9uXCIpO1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb25VcGQgPSBhd2FpdCB0aGlzLnVwZGF0ZSh7XHJcbiAgICAgICAgICAgIGlkOiBtaXNzaW9uSUQsXHJcbiAgICAgICAgICAgIGRlbGV0ZWRBdDogRGF0ZS5ub3coKSxcclxuICAgICAgICB9KTtcclxuICAgICAgICBhd2FpdCB0aGlzLmNoZWNrSWZDdXJyZW50VXNlck1pc3Npb25DaGFuZ2VkKG1pc3Npb25VcGQpO1xyXG4gICAgICAgIHJldHVybiBtaXNzaW9uVXBkO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGxpc3QoKTogUHJvbWlzZTxNaXNzaW9uW10+IHtcclxuICAgICAgICBjb25zdCBtaXMgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uTGlzdE1pc3Npb25zKCk7XHJcbiAgICAgICAgcmV0dXJuIG1pcy5pdGVtcy5maWx0ZXIoKG0pID0+ICFtLmRlbGV0ZWRBdCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYXN5bmMgY2FuSGFyZERldGVsZU1pc3Npb24obWlzc2lvbklEOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIC8vICAgICBjb25zdCBldmVudHMgPSAoXHJcbiAgICAvLyAgICAgICAgIGF3YWl0IHRoaXMuQVBJLkxpc3RFdmVudHMoeyBvd25lcklEOiB7IGVxOiBtaXNzaW9uSUQgfSB9KVxyXG4gICAgLy8gICAgICkuaXRlbXM7XHJcbiAgICAvLyAgICAgaWYgKGV2ZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgY29uc3QgY29tbWVudHMgPSAoXHJcbiAgICAvLyAgICAgICAgIGF3YWl0IHRoaXMuQVBJLkxpc3RDb21tZW50cyh7IG93bmVySUQ6IHsgZXE6IG1pc3Npb25JRCB9IH0pXHJcbiAgICAvLyAgICAgKS5pdGVtcztcclxuICAgIC8vICAgICBpZiAoY29tbWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIGNvbnN0IGFmZmVjdGF0aW9ucyA9XHJcbiAgICAvLyAgICAgICAgIGF3YWl0IHRoaXMuYWZmZWN0YXRpb25TZXJ2aWNlLmdldEFmZmVjdGF0aW9uc0Zyb21NaXNzaW9uSUQoXHJcbiAgICAvLyAgICAgICAgICAgICBtaXNzaW9uSUQsXHJcbiAgICAvLyAgICAgICAgICk7XHJcbiAgICAvLyAgICAgaWYgKGFmZmVjdGF0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgYXN5bmMgaGFyZERlbGV0ZU1pc3Npb24obWlzc2lvbklEOiBzdHJpbmcpOiBQcm9taXNlPE1pc3Npb24+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkRlbGV0ZU1pc3Npb24oeyBpZDogbWlzc2lvbklEIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFjdGl2YXRlZE1pc3Npb25zKG1pc3Npb25zOiBNaXNzaW9uW10pOiBNaXNzaW9uW10ge1xyXG4gICAgICAgIGNvbnN0IGFjdGl2YXRlZCA9IFtdO1xyXG4gICAgICAgIG1pc3Npb25zLm1hcChhc3luYyAobWlzc2lvbikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpc0FjdGl2YXRlZCA9XHJcbiAgICAgICAgICAgICAgICBtaXNzaW9uLmdyb3VwcyAmJiBtaXNzaW9uLmdyb3Vwcy5pbmNsdWRlcyhQcm9maWxlU3RhdHVzLkFDVElWRSk7XHJcbiAgICAgICAgICAgIGlmIChpc0FjdGl2YXRlZCkge1xyXG4gICAgICAgICAgICAgICAgYWN0aXZhdGVkLnB1c2gobWlzc2lvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gYWN0aXZhdGVkO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldE1pc3Npb25zRm9yWm9uZSh6b25lSUQ6IHN0cmluZyk6IFByb21pc2U8TWlzc2lvbltdPiB7XHJcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uTWlzc2lvbnNCeVpvbmUoem9uZUlEKSkuaXRlbXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAobWlzKSA9PiAhbWlzLmRlbGV0ZWRBdCxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldE1pc3Npb25zRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLk1pc3Npb25zQnlTcGFjZShzcGFjZUlEKS50aGVuKChtaXNzaW9ucykgPT4gbWlzc2lvbnMuaXRlbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGFjdGl2YXRlTWlzc2lvbihtaXM6IE1pc3Npb24pIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIG1pcyAmJlxyXG4gICAgICAgICAgICAoIW1pcy5ncm91cHMgfHwgIW1pcy5ncm91cHMuaW5jbHVkZXMoUHJvZmlsZVN0YXR1cy5BQ1RJVkUpKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICBjb25zdCBncm91cHMgPSBtaXMuZ3JvdXBzID8gbWlzLmdyb3VwcyA6IFtdO1xyXG4gICAgICAgICAgICBncm91cHMucHVzaChQcm9maWxlU3RhdHVzLkFDVElWRSk7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlKHsgaWQ6IG1pcy5pZCwgZ3JvdXBzIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRNaXNzaW9uc0J5VGVtcGxhdGUodGVtcGxhdGVJRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uW10+IHtcclxuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5NaXNzaW9uc0J5VGVtcGxhdGUodGVtcGxhdGVJRCkpLml0ZW1zLmZpbHRlcihcclxuICAgICAgICAgICAgKG1pcykgPT4gIW1pcy5kZWxldGVkQXQsXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBnZXRNaXNzaW9uKG1pc3Npb25JRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5HZXRNaXNzaW9uKG1pc3Npb25JRCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TWlzc2lvbnNCeVpvbmVCeVJvbGUoXHJcbiAgICAgICAgem9uZUlEOiBzdHJpbmcsXHJcbiAgICAgICAgcm9sZTogUm9sZVN0YXR1cyxcclxuICAgICk6IFByb21pc2U8TWlzc2lvbltdPiB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLk1pc3Npb25zQnlab25lQnlSb2xlKFxyXG4gICAgICAgICAgICAgICAgem9uZUlELFxyXG4gICAgICAgICAgICAgICAgeyBlcTogcm9sZSB9LFxyXG4gICAgICAgICAgICAgICAgbnVsbCxcclxuICAgICAgICAgICAgICAgIHsgZGVsZXRlZEF0OiB7IGF0dHJpYnV0ZUV4aXN0czogZmFsc2UgfSB9LFxyXG4gICAgICAgICAgICAgICAgMjAwLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgKS5pdGVtcztcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjaGVja0lmQ3VycmVudFVzZXJNaXNzaW9uQ2hhbmdlZChjaGFuZ2VkTWlzc2lvbjogTWlzc2lvbikge1xyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRVc2VySUQgPT09IGNoYW5nZWRNaXNzaW9uLnVzZXJJRCkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRNaXNzaW9uc1VwZGF0ZWQubmV4dCh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgaW5zdGFudE1pc3Npb25zT2ZDdXJyZW50KFxyXG4gICAgICAgIGN1cnJlbnRVc2VySUQ6IHN0cmluZyxcclxuICAgICk6IFByb21pc2U8TWlzc2lvbltdIHwgbnVsbD4ge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFVzZXJJRCA9IGN1cnJlbnRVc2VySUQ7XHJcbiAgICAgICAgbGV0IG1pc3Npb25zID0gYXdhaXQgdGhpcy5nZXRNaXNzaW9uc0Zyb21Vc2VySUQoY3VycmVudFVzZXJJRCk7XHJcblxyXG4gICAgICAgIC8qKiBGaWx0ZXIgdG8ga2VlcCBvbmx5IGF2YWlsYWJsZSBtaXNzaW9ucyAqL1xyXG4gICAgICAgIG1pc3Npb25zID0gbWlzc2lvbnMuZmlsdGVyKChtaXNzaW9uKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGhhc0V4cGlyZWQgPSBkYXRlSGFzRXhwaXJlZChtaXNzaW9uLmVuZERhdGVUaW1lKTtcclxuXHJcbiAgICAgICAgICAgIC8qKiBVcGRhdGUgdGhpcy5sYXN0RXhwaXJlZE1pc3Npb24gKi9cclxuICAgICAgICAgICAgaWYgKGhhc0V4cGlyZWQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RFeHBpcmVkRGF0ZSA9IHRoaXMubGFzdEV4cGlyZWRNaXNzaW9uXHJcbiAgICAgICAgICAgICAgICAgICAgPyBuZXcgRGF0ZSh0aGlzLmxhc3RFeHBpcmVkTWlzc2lvbi5lbmREYXRlVGltZSlcclxuICAgICAgICAgICAgICAgICAgICA6IG51bGw7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlRXhwaXJlZCA9IG5ldyBEYXRlKG1pc3Npb24uZW5kRGF0ZVRpbWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFsYXN0RXhwaXJlZERhdGUgfHwgZGF0ZUV4cGlyZWQgPiBsYXN0RXhwaXJlZERhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RFeHBpcmVkTWlzc2lvbiA9IG1pc3Npb247XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuICFoYXNFeHBpcmVkO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAobWlzc2lvbnMuc29tZSgobWlzKSA9PiBtaXMucm9sZSA9PT0gUm9sZVN0YXR1cy5WSVNJVE9SX01VU0VVTSkgJiYgbWlzc2lvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAvLyB3b3JrZmxvdyBmb3IgVklTSVRPUl9NVVNFVU1cclxuICAgICAgICAgICAgcmV0dXJuIG1pc3Npb25zO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvKiogS2VlcCBvbmx5IHN0YXJ0ZWQgbWlzc2lvbnMgKi9cclxuICAgICAgICBsZXQgbmV4dE1pc3Npb25EYXRlID0gbnVsbDtcclxuICAgICAgICBtaXNzaW9ucyA9IG1pc3Npb25zLmZpbHRlcigobWlzc2lvbikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzdGFydGVkID0gbWlzc2lvbi5zdGFydERhdGVUaW1lXHJcbiAgICAgICAgICAgICAgICA/IGRhdGVIYXNFeHBpcmVkKG1pc3Npb24uc3RhcnREYXRlVGltZSlcclxuICAgICAgICAgICAgICAgIDogdHJ1ZTtcclxuICAgICAgICAgICAgLyoqIFVwZGF0ZSBuZXh0IG1pc3Npb24gdG8gc3RhcnQgKi9cclxuICAgICAgICAgICAgaWYgKCFzdGFydGVkKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtaXNzaW9uRGF0ZSA9IG5ldyBEYXRlKG1pc3Npb24uc3RhcnREYXRlVGltZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIW5leHRNaXNzaW9uRGF0ZSB8fCBtaXNzaW9uRGF0ZSA8IG5leHRNaXNzaW9uRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmV4dE1pc3Npb25Ub1N0YXJ0ID0gbWlzc2lvbjtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0TWlzc2lvbkRhdGUgPSBtaXNzaW9uRGF0ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gc3RhcnRlZDtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gbWlzc2lvbnMubGVuZ3RoID4gMCA/IG1pc3Npb25zIDogbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpbHRlcnMgdGhlIG1pc3Npb25zIHRoYXQgYXNzaXN0ZWQgdG8gbGl2ZSBvZiB0aGUgdmlzaXQgKGJ5IGNvbXBhcmluZyB0aGUgcmVhbFN0YXJ0VGltZSBvZiBWaXNpdFRlbXBsYXRlIGFuZCBjb25uZWN0ZWRBdCB0aW1lKVxyXG4gICAgICogQHBhcmFtIHRlbXBsYXRlIFZpc2l0VGVtcGxhdGUgXHJcbiAgICAgKiBAcGFyYW0gbWlzc2lvbnMgTWlzc2lvbltdIG1pc3Npb25zIGZvciB0aGlzIHZpc2l0XHJcbiAgICAgKiBAcmV0dXJucyBNaXNzaW9uW10gZmlsdGVyZWQgbWlzc2lvbnNcclxuICAgICAqL1xyXG4gICAgZmlsdGVyTWlzc2lvbnNBc3NpdGVkVG9MaXZlRm9yVGVtcGxhdGUodGVtcGxhdGU6IFZpc2l0VGVtcGxhdGUsIG1pc3Npb25zOiBNaXNzaW9uW10pOiBNaXNzaW9uW10ge1xyXG4gICAgICAgIGNvbnN0IHZpc2l0U3RhcnRUaW1lc3RhbXAgPSB0ZW1wbGF0ZS5yZWFsU3RhcnRlZEF0O1xyXG4gICAgICAgIHJldHVybiBtaXNzaW9ucy5maWx0ZXIoKG1pcykgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIW1pcy5jb25uZWN0ZWRUb0xpdmVBdCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChtaXMuY29ubmVjdGVkVG9MaXZlQXQubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgbGFzdENvbm5lY3RlZEF0ID0gbWlzLmNvbm5lY3RlZFRvTGl2ZUF0W21pcy5jb25uZWN0ZWRUb0xpdmVBdC5sZW5ndGggLSAxXTtcclxuICAgICAgICAgICAgY29uc3QgbGFzdENvbm5lY3RlZEF0VGltZXN0YW1wID0gRGF0ZVRpbWUuZnJvbUlTTyhsYXN0Q29ubmVjdGVkQXQpLnRvTWlsbGlzKCk7XHJcbiAgICAgICAgICAgIHJldHVybiBsYXN0Q29ubmVjdGVkQXRUaW1lc3RhbXAgPiB2aXNpdFN0YXJ0VGltZXN0YW1wO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
226
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvbWlzc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQWtDLGFBQWEsRUFBRSxVQUFVLEVBQWlCLE1BQU0scUJBQXFCLENBQUM7QUFDL0csT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQzs7QUFLakMsTUFBTSxPQUFPLGNBQWM7SUFDdkIsc0JBQXNCLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztJQUVoRCxrQkFBa0IsQ0FBVTtJQUU1QixrQkFBa0IsQ0FBVTtJQUU1QixhQUFhLENBQVM7SUFFdEIsR0FBRyxDQUFNLENBQUMsS0FBSztJQUVmO0lBQ0ksa0RBQWtEO0lBQ3JCLFdBQWdCO1FBRTdDLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLLENBQUMscUJBQXFCLENBQUMsTUFBYztRQUN0QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMvRCxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFF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QUcsRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztZQUNELElBQUksR0FBRyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDckMsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztZQUNELE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2hGLE1BQU0sd0JBQXdCLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM5RSxPQUFPLHdCQUF3QixHQUFHLG1CQUFtQixDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzt3R0EvUVEsY0FBYyxrQkFhWCxtQkFBbUI7NEdBYnRCLGNBQWMsY0FGWCxNQUFNOzs0RkFFVCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBY1EsTUFBTTsyQkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzICovXHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBkYXRlSGFzRXhwaXJlZCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTWlzc2lvbiwgT3JnYW5pc2F0aW9uLCBQcm9maWxlLCBQcm9maWxlU3RhdHVzLCBSb2xlU3RhdHVzLCBWaXNpdFRlbXBsYXRlIH0gZnJvbSBcIi4uLy4uL3R5cGVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tIFwibHV4b25cIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWlzc2lvblNlcnZpY2Uge1xyXG4gICAgY3VycmVudE1pc3Npb25zVXBkYXRlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcblxyXG4gICAgbGFzdEV4cGlyZWRNaXNzaW9uOiBNaXNzaW9uO1xyXG5cclxuICAgIG5leHRNaXNzaW9uVG9TdGFydDogTWlzc2lvbjtcclxuXHJcbiAgICBjdXJyZW50VXNlcklEOiBzdHJpbmc7XHJcblxyXG4gICAgQVBJOiBhbnk7IC8vQVdTXHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgLy8gcHJpdmF0ZSBhZmZlY3RhdGlvblNlcnZpY2U6IEFmZmVjdGF0aW9uU2VydmljZSxcclxuICAgICAgICBASW5qZWN0KCdjdXJyZW50QVBJU2VydmljZScpIGFwaUluamVjdGVkOiBhbnlcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuQVBJID0gYXBpSW5qZWN0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TWlzc2lvbnNGcm9tVXNlcklEKHVzZXJJRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLk1pc3Npb25zQnlVc2VyKHVzZXJJRCkudGhlbigobWlzc2lvbnMpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG1pc3Npb25zLml0ZW1zLmZpbHRlcigobWlzKSA9PiAhbWlzLmRlbGV0ZWRBdCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TWlzc2lvbnNCeU9yZGVyZWRPcmdhbmlzYXRpb24oXHJcbiAgICAgICAgb3JkZXJlZE9yZ0lEOiBzdHJpbmcsXHJcbiAgICApOiBQcm9taXNlPE1pc3Npb25bXT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uTWlzc2lvbnNCeU9yZGVyZWRPcmdhbmlzYXRpb24ob3JkZXJlZE9yZ0lEKS50aGVuKFxyXG4gICAgICAgICAgICAocmVzcG9uc2UpID0+IHJlc3BvbnNlLml0ZW1zLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TWlzc2lvbnNCeU9yZ2FuaXNhdGlvbihvcmdJRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLk1pc3Npb25zQnlPcmdhbmlzYXRpb24ob3JnSUQpLnRoZW4oXHJcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4gcmVzcG9uc2UuaXRlbXMsXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjcmVhdGUobWlzc2lvbjogTWlzc2lvbik6IFByb21pc2U8TWlzc2lvbj4ge1xyXG4gICAgICAgIGNvbnN0IHVwZE1pc3Npb24gPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uQ3JlYXRlTWlzc2lvbihtaXNzaW9uKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIk1pc3Npb24gY3JlYXRlZFwiLCB1cGRNaXNzaW9uKTtcclxuICAgICAgICBhd2FpdCB0aGlzLmNoZWNrSWZDdXJyZW50VXNlck1pc3Npb25DaGFuZ2VkKHVwZE1pc3Npb24pO1xyXG4gICAgICAgIHJldHVybiB1cGRNaXNzaW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHVwZGF0ZShtaXNzaW9uOiBhbnkpOiBQcm9taXNlPE1pc3Npb24+IHtcclxuICAgICAgICBjb25zdCB1cGRNaXNzaW9uID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLlVwZGF0ZU1pc3Npb24obWlzc2lvbik7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJNaXNzaW9uIHVwZGF0ZWRcIiwgdXBkTWlzc2lvbik7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5jaGVja0lmQ3VycmVudFVzZXJNaXNzaW9uQ2hhbmdlZCh1cGRNaXNzaW9uKTtcclxuICAgICAgICByZXR1cm4gdXBkTWlzc2lvbjtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBhc3NlcnRSb2xlRm9yVXNlckluT3JnKFxyXG4gICAgICAgIHVzZXI6IFByb2ZpbGUsXHJcbiAgICAgICAgb3JnOiBPcmdhbmlzYXRpb24sXHJcbiAgICAgICAgcm9sZTogUm9sZVN0YXR1cyxcclxuICAgICk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldE1pc3Npb25zRnJvbVVzZXJJRCh1c2VyLmlkKS50aGVuKChtaXNzaW9ucykgPT4ge1xyXG4gICAgICAgICAgICBpZiAobWlzc2lvbnMpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1pc09yZyA9IG1pc3Npb25zLmZpbHRlcigobWlzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1pcy5vcmdhbmlzYXRpb25JRCA9PT0gb3JnLmlkICYmIG1pcy5yb2xlID09PSByb2xlO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbWlzT3JnLmxlbmd0aCA+IDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldE1pc3Npb25zQnlPcmRlcmVkT3JnYW5pc2F0aW9uQnlTcGFjZShcclxuICAgICAgICBvcmRPcmdJRDogc3RyaW5nLFxyXG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAgICk6IFByb21pc2U8TWlzc2lvbltdPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5NaXNzaW9uc0J5T3JkZXJlZE9yZ2FuaXNhdGlvbkJ5U3BhY2Uob3JkT3JnSUQsIHtcclxuICAgICAgICAgICAgZXE6IHNwYWNlSUQsXHJcbiAgICAgICAgfSkudGhlbigobWlzKSA9PiBtaXMuaXRlbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNvZnREZWxldGVNaXNzaW9uKG1pc3Npb25JRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uPiB7XHJcbiAgICAgICAgLy8gY29uc3QgaGFyZERlbGV0ZSA9IGF3YWl0IHRoaXMuY2FuSGFyZERldGVsZU1pc3Npb24obWlzc2lvbi5pZCk7XHJcbiAgICAgICAgLy8gaWYgKGhhcmREZWxldGUpIHtcclxuICAgICAgICAvLyAgICAgcmV0dXJuIHRoaXMuaGFyZERlbGV0ZU1pc3Npb24obWlzc2lvbi5pZCk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiU29mdCBEZWxldGluZyBtaXNzaW9uXCIpO1xyXG4gICAgICAgIGNvbnN0IG1pc3Npb25VcGQgPSBhd2FpdCB0aGlzLnVwZGF0ZSh7XHJcbiAgICAgICAgICAgIGlkOiBtaXNzaW9uSUQsXHJcbiAgICAgICAgICAgIGRlbGV0ZWRBdDogRGF0ZS5ub3coKSxcclxuICAgICAgICB9KTtcclxuICAgICAgICBhd2FpdCB0aGlzLmNoZWNrSWZDdXJyZW50VXNlck1pc3Npb25DaGFuZ2VkKG1pc3Npb25VcGQpO1xyXG4gICAgICAgIHJldHVybiBtaXNzaW9uVXBkO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGxpc3QoKTogUHJvbWlzZTxNaXNzaW9uW10+IHtcclxuICAgICAgICBjb25zdCBtaXMgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uTGlzdE1pc3Npb25zKCk7XHJcbiAgICAgICAgcmV0dXJuIG1pcy5pdGVtcy5maWx0ZXIoKG0pID0+ICFtLmRlbGV0ZWRBdCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYXN5bmMgY2FuSGFyZERldGVsZU1pc3Npb24obWlzc2lvbklEOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIC8vICAgICBjb25zdCBldmVudHMgPSAoXHJcbiAgICAvLyAgICAgICAgIGF3YWl0IHRoaXMuQVBJLkxpc3RFdmVudHMoeyBvd25lcklEOiB7IGVxOiBtaXNzaW9uSUQgfSB9KVxyXG4gICAgLy8gICAgICkuaXRlbXM7XHJcbiAgICAvLyAgICAgaWYgKGV2ZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgY29uc3QgY29tbWVudHMgPSAoXHJcbiAgICAvLyAgICAgICAgIGF3YWl0IHRoaXMuQVBJLkxpc3RDb21tZW50cyh7IG93bmVySUQ6IHsgZXE6IG1pc3Npb25JRCB9IH0pXHJcbiAgICAvLyAgICAgKS5pdGVtcztcclxuICAgIC8vICAgICBpZiAoY29tbWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgLy8gICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIGNvbnN0IGFmZmVjdGF0aW9ucyA9XHJcbiAgICAvLyAgICAgICAgIGF3YWl0IHRoaXMuYWZmZWN0YXRpb25TZXJ2aWNlLmdldEFmZmVjdGF0aW9uc0Zyb21NaXNzaW9uSUQoXHJcbiAgICAvLyAgICAgICAgICAgICBtaXNzaW9uSUQsXHJcbiAgICAvLyAgICAgICAgICk7XHJcbiAgICAvLyAgICAgaWYgKGFmZmVjdGF0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAvLyAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgYXN5bmMgaGFyZERlbGV0ZU1pc3Npb24obWlzc2lvbklEOiBzdHJpbmcpOiBQcm9taXNlPE1pc3Npb24+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkRlbGV0ZU1pc3Npb24oeyBpZDogbWlzc2lvbklEIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFjdGl2YXRlZE1pc3Npb25zKG1pc3Npb25zOiBNaXNzaW9uW10pOiBNaXNzaW9uW10ge1xyXG4gICAgICAgIGNvbnN0IGFjdGl2YXRlZCA9IFtdO1xyXG4gICAgICAgIG1pc3Npb25zLm1hcChhc3luYyAobWlzc2lvbikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpc0FjdGl2YXRlZCA9XHJcbiAgICAgICAgICAgICAgICBtaXNzaW9uLmdyb3VwcyAmJiBtaXNzaW9uLmdyb3Vwcy5pbmNsdWRlcyhQcm9maWxlU3RhdHVzLkFDVElWRSk7XHJcbiAgICAgICAgICAgIGlmIChpc0FjdGl2YXRlZCkge1xyXG4gICAgICAgICAgICAgICAgYWN0aXZhdGVkLnB1c2gobWlzc2lvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gYWN0aXZhdGVkO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldE1pc3Npb25zRm9yWm9uZSh6b25lSUQ6IHN0cmluZyk6IFByb21pc2U8TWlzc2lvbltdPiB7XHJcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uTWlzc2lvbnNCeVpvbmUoem9uZUlEKSkuaXRlbXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAobWlzKSA9PiAhbWlzLmRlbGV0ZWRBdCxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldE1pc3Npb25zRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxNaXNzaW9uW10+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLk1pc3Npb25zQnlTcGFjZShzcGFjZUlEKS50aGVuKChtaXNzaW9ucykgPT4gbWlzc2lvbnMuaXRlbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2FtZSBhcyBnZXRNaXNzaW9uc0ZvclNwYWNlKCksIGJ1dCBmb2xsb3dzIGBuZXh0VG9rZW5gIHVudGlsIHRoZSBjb25uZWN0aW9uIGlzXHJcbiAgICAgKiBleGhhdXN0ZWQgaW5zdGVhZCBvZiByZXR1cm5pbmcgb25seSB0aGUgZmlyc3QgcGFnZS5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZ2V0QWxsTWlzc2lvbnNGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPE1pc3Npb25bXT4ge1xyXG4gICAgICAgIGNvbnN0IGFsbDogTWlzc2lvbltdID0gW107XHJcbiAgICAgICAgbGV0IG5leHRUb2tlbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgICAgIGRvIHtcclxuICAgICAgICAgICAgY29uc3QgcGFnZSA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5NaXNzaW9uc0J5U3BhY2Uoc3BhY2VJRCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIDEwMDAsIG5leHRUb2tlbik7XHJcbiAgICAgICAgICAgIGlmIChwYWdlPy5pdGVtcz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgYWxsLnB1c2goLi4ucGFnZS5pdGVtcy5maWx0ZXIoKG1pczogTWlzc2lvbiB8IG51bGwpID0+ICEhbWlzICYmICFtaXMuZGVsZXRlZEF0KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbmV4dFRva2VuID0gcGFnZT8ubmV4dFRva2VuID8/IG51bGw7XHJcbiAgICAgICAgfSB3aGlsZSAobmV4dFRva2VuKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGFsbDtcclxuICAgIH1cclxuXHJcbiAgICBhY3RpdmF0ZU1pc3Npb24obWlzOiBNaXNzaW9uKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBtaXMgJiZcclxuICAgICAgICAgICAgKCFtaXMuZ3JvdXBzIHx8ICFtaXMuZ3JvdXBzLmluY2x1ZGVzKFByb2ZpbGVTdGF0dXMuQUNUSVZFKSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgY29uc3QgZ3JvdXBzID0gbWlzLmdyb3VwcyA/IG1pcy5ncm91cHMgOiBbXTtcclxuICAgICAgICAgICAgZ3JvdXBzLnB1c2goUHJvZmlsZVN0YXR1cy5BQ1RJVkUpO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZSh7IGlkOiBtaXMuaWQsIGdyb3VwcyB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TWlzc2lvbnNCeVRlbXBsYXRlKHRlbXBsYXRlSUQ6IHN0cmluZyk6IFByb21pc2U8TWlzc2lvbltdPiB7XHJcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uTWlzc2lvbnNCeVRlbXBsYXRlKHRlbXBsYXRlSUQpKS5pdGVtcy5maWx0ZXIoXHJcbiAgICAgICAgICAgIChtaXMpID0+ICFtaXMuZGVsZXRlZEF0LFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0TWlzc2lvbihtaXNzaW9uSUQ6IHN0cmluZyk6IFByb21pc2U8TWlzc2lvbj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uR2V0TWlzc2lvbihtaXNzaW9uSUQpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGdldE1pc3Npb25zQnlab25lQnlSb2xlKFxyXG4gICAgICAgIHpvbmVJRDogc3RyaW5nLFxyXG4gICAgICAgIHJvbGU6IFJvbGVTdGF0dXMsXHJcbiAgICApOiBQcm9taXNlPE1pc3Npb25bXT4ge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5NaXNzaW9uc0J5Wm9uZUJ5Um9sZShcclxuICAgICAgICAgICAgICAgIHpvbmVJRCxcclxuICAgICAgICAgICAgICAgIHsgZXE6IHJvbGUgfSxcclxuICAgICAgICAgICAgICAgIG51bGwsXHJcbiAgICAgICAgICAgICAgICB7IGRlbGV0ZWRBdDogeyBhdHRyaWJ1dGVFeGlzdHM6IGZhbHNlIH0gfSxcclxuICAgICAgICAgICAgICAgIDIwMCxcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICkuaXRlbXM7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgY2hlY2tJZkN1cnJlbnRVc2VyTWlzc2lvbkNoYW5nZWQoY2hhbmdlZE1pc3Npb246IE1pc3Npb24pIHtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50VXNlcklEID09PSBjaGFuZ2VkTWlzc2lvbi51c2VySUQpIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50TWlzc2lvbnNVcGRhdGVkLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGluc3RhbnRNaXNzaW9uc09mQ3VycmVudChcclxuICAgICAgICBjdXJyZW50VXNlcklEOiBzdHJpbmcsXHJcbiAgICApOiBQcm9taXNlPE1pc3Npb25bXSB8IG51bGw+IHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRVc2VySUQgPSBjdXJyZW50VXNlcklEO1xyXG4gICAgICAgIGxldCBtaXNzaW9ucyA9IGF3YWl0IHRoaXMuZ2V0TWlzc2lvbnNGcm9tVXNlcklEKGN1cnJlbnRVc2VySUQpO1xyXG5cclxuICAgICAgICAvKiogRmlsdGVyIHRvIGtlZXAgb25seSBhdmFpbGFibGUgbWlzc2lvbnMgKi9cclxuICAgICAgICBtaXNzaW9ucyA9IG1pc3Npb25zLmZpbHRlcigobWlzc2lvbikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBoYXNFeHBpcmVkID0gZGF0ZUhhc0V4cGlyZWQobWlzc2lvbi5lbmREYXRlVGltZSk7XHJcblxyXG4gICAgICAgICAgICAvKiogVXBkYXRlIHRoaXMubGFzdEV4cGlyZWRNaXNzaW9uICovXHJcbiAgICAgICAgICAgIGlmIChoYXNFeHBpcmVkKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0RXhwaXJlZERhdGUgPSB0aGlzLmxhc3RFeHBpcmVkTWlzc2lvblxyXG4gICAgICAgICAgICAgICAgICAgID8gbmV3IERhdGUodGhpcy5sYXN0RXhwaXJlZE1pc3Npb24uZW5kRGF0ZVRpbWUpXHJcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZUV4cGlyZWQgPSBuZXcgRGF0ZShtaXNzaW9uLmVuZERhdGVUaW1lKTtcclxuICAgICAgICAgICAgICAgIGlmICghbGFzdEV4cGlyZWREYXRlIHx8IGRhdGVFeHBpcmVkID4gbGFzdEV4cGlyZWREYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXN0RXhwaXJlZE1pc3Npb24gPSBtaXNzaW9uO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiAhaGFzRXhwaXJlZDtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKG1pc3Npb25zLnNvbWUoKG1pcykgPT4gbWlzLnJvbGUgPT09IFJvbGVTdGF0dXMuVklTSVRPUl9NVVNFVU0pICYmIG1pc3Npb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgLy8gd29ya2Zsb3cgZm9yIFZJU0lUT1JfTVVTRVVNXHJcbiAgICAgICAgICAgIHJldHVybiBtaXNzaW9ucztcclxuICAgICAgICB9XHJcbiAgICAgICAgLyoqIEtlZXAgb25seSBzdGFydGVkIG1pc3Npb25zICovXHJcbiAgICAgICAgbGV0IG5leHRNaXNzaW9uRGF0ZSA9IG51bGw7XHJcbiAgICAgICAgbWlzc2lvbnMgPSBtaXNzaW9ucy5maWx0ZXIoKG1pc3Npb24pID0+IHtcclxuICAgICAgICAgICAgY29uc3Qgc3RhcnRlZCA9IG1pc3Npb24uc3RhcnREYXRlVGltZVxyXG4gICAgICAgICAgICAgICAgPyBkYXRlSGFzRXhwaXJlZChtaXNzaW9uLnN0YXJ0RGF0ZVRpbWUpXHJcbiAgICAgICAgICAgICAgICA6IHRydWU7XHJcbiAgICAgICAgICAgIC8qKiBVcGRhdGUgbmV4dCBtaXNzaW9uIHRvIHN0YXJ0ICovXHJcbiAgICAgICAgICAgIGlmICghc3RhcnRlZCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbWlzc2lvbkRhdGUgPSBuZXcgRGF0ZShtaXNzaW9uLnN0YXJ0RGF0ZVRpbWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFuZXh0TWlzc2lvbkRhdGUgfHwgbWlzc2lvbkRhdGUgPCBuZXh0TWlzc2lvbkRhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5leHRNaXNzaW9uVG9TdGFydCA9IG1pc3Npb247XHJcbiAgICAgICAgICAgICAgICAgICAgbmV4dE1pc3Npb25EYXRlID0gbWlzc2lvbkRhdGU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHN0YXJ0ZWQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIG1pc3Npb25zLmxlbmd0aCA+IDAgPyBtaXNzaW9ucyA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaWx0ZXJzIHRoZSBtaXNzaW9ucyB0aGF0IGFzc2lzdGVkIHRvIGxpdmUgb2YgdGhlIHZpc2l0IChieSBjb21wYXJpbmcgdGhlIHJlYWxTdGFydFRpbWUgb2YgVmlzaXRUZW1wbGF0ZSBhbmQgY29ubmVjdGVkQXQgdGltZSlcclxuICAgICAqIEBwYXJhbSB0ZW1wbGF0ZSBWaXNpdFRlbXBsYXRlIFxyXG4gICAgICogQHBhcmFtIG1pc3Npb25zIE1pc3Npb25bXSBtaXNzaW9ucyBmb3IgdGhpcyB2aXNpdFxyXG4gICAgICogQHJldHVybnMgTWlzc2lvbltdIGZpbHRlcmVkIG1pc3Npb25zXHJcbiAgICAgKi9cclxuICAgIGZpbHRlck1pc3Npb25zQXNzaXRlZFRvTGl2ZUZvclRlbXBsYXRlKHRlbXBsYXRlOiBWaXNpdFRlbXBsYXRlLCBtaXNzaW9uczogTWlzc2lvbltdKTogTWlzc2lvbltdIHtcclxuICAgICAgICBjb25zdCB2aXNpdFN0YXJ0VGltZXN0YW1wID0gdGVtcGxhdGUucmVhbFN0YXJ0ZWRBdDtcclxuICAgICAgICByZXR1cm4gbWlzc2lvbnMuZmlsdGVyKChtaXMpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFtaXMuY29ubmVjdGVkVG9MaXZlQXQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAobWlzLmNvbm5lY3RlZFRvTGl2ZUF0Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGxhc3RDb25uZWN0ZWRBdCA9IG1pcy5jb25uZWN0ZWRUb0xpdmVBdFttaXMuY29ubmVjdGVkVG9MaXZlQXQubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgICAgIGNvbnN0IGxhc3RDb25uZWN0ZWRBdFRpbWVzdGFtcCA9IERhdGVUaW1lLmZyb21JU08obGFzdENvbm5lY3RlZEF0KS50b01pbGxpcygpO1xyXG4gICAgICAgICAgICByZXR1cm4gbGFzdENvbm5lY3RlZEF0VGltZXN0YW1wID4gdmlzaXRTdGFydFRpbWVzdGFtcDtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -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=
|