@smarterplan/ngx-smarterplan-locations 0.0.22 → 0.1.1

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.
@@ -118,20 +118,28 @@ export class FormLocationComponent {
118
118
  }
119
119
  else {
120
120
  this.changeCommaToDot();
121
+ const spaceInput = this.form.value;
122
+ const currentOrgID = this.userService.currentOrganisation().id;
123
+ spaceInput.organisationID = currentOrgID;
121
124
  let layer = await this.getLayerByName("BUILDING");
122
125
  if (!layer) {
123
- layer = await this.layerService.createLayerForOrganisation("BUILDING", this.userService.currentOrganisation().id);
126
+ layer = await this.layerService.createLayerForOrganisation("BUILDING", currentOrgID);
124
127
  }
125
- space = await this.spaceService.createSpace(this.form.value, layer);
128
+ space = await this.spaceService.createSpace(spaceInput, layer);
126
129
  const missions = this.userService.getManagerMissions();
127
130
  if (space && missions.length > 0) {
128
131
  const exampleMission = missions[0];
129
132
  await this.uploadImage(space.id);
130
- await this.propertyService.createProperty({
131
- type: PropertyType.PROPERTY,
132
- spaceID: space.id,
133
- organisationID: exampleMission.organisationID,
134
- });
133
+ try {
134
+ await this.propertyService.createProperty({
135
+ type: PropertyType.PROPERTY,
136
+ spaceID: space.id,
137
+ organisationID: currentOrgID,
138
+ });
139
+ }
140
+ catch (e) {
141
+ console.log("API Service does not have Property requests");
142
+ }
135
143
  // add directly a mission for this space
136
144
  if (this.addMissionForNewSpace) {
137
145
  await this.missionService.create({
@@ -212,4 +220,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
212
220
  }], onChange: [{
213
221
  type: Output
214
222
  }] } });
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1sb2NhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tbG9jYXRpb25zL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWxvY2F0aW9uL2Zvcm0tbG9jYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS1sb2NhdGlvbi9mb3JtLWxvY2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBMEIsVUFBVSxFQUFtQixNQUFNLGdCQUFnQixDQUFDO0FBQ3JGLE9BQU8sRUFBUyxXQUFXLEVBQWtFLFdBQVcsRUFBRSxjQUFjLEVBQVMsWUFBWSxFQUFFLHlCQUF5QixFQUFnQixZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7O0FBT2hQLE1BQU0sT0FBTyxxQkFBcUI7SUFnQzlCLFlBQ1ksWUFBMEIsRUFDMUIsZUFBZ0MsRUFDaEMsV0FBNEIsRUFDNUIsRUFBZSxFQUNmLGNBQThCLEVBQzlCLFlBQTBCO1FBTDFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDNUIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQXBCdEMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFJcEIsMEJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBTTdCLHFCQUFnQixHQUFZLEtBQUss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QUFHLENBQUM7aUJBQzNCO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDTjthQUFNO1lBQ0gsSUFBSSxDQUFDLGNBQWMsR0FBRyxhQUFhLENBQUM7U0FDdkM7SUFDTCxDQUFDOztrSEE1T1EscUJBQXFCO3NHQUFyQixxQkFBcUIsNGJDVGxDLGt6SUErRkE7MkZEdEZhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxtQkFBbUI7aVBBUzNCLG1CQUFtQjtzQkFEbEIsU0FBUzt1QkFBQyxxQkFBcUI7Z0JBSWhDLFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxZQUFZO2dCQUl2QixnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBSTdCLFFBQVE7c0JBRFAsS0FBSztnQkFpQkksUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycywgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3BhY2UsIExldmVsU3RhdHVzLCBTcGFjZVNlcnZpY2UsIFByb3BlcnR5U2VydmljZSwgQmFzZVVzZXJTZXJ2aWNlLCBNaXNzaW9uU2VydmljZSwgZW51bVRvQXJyYXksIHVwbG9hZEZpbGVUb1MzLCBMYXllciwgUHJvcGVydHlUeXBlLCBnZXRTaWduZWRJbWFnZVVybEZvclNwYWNlLCBMYXllclNlcnZpY2UsIGRlbGV0ZUZyb21TMyB9IGZyb20gJ0BzbWFydGVycGxhbi9uZ3gtc21hcnRlcnBsYW4tY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1mb3JtLWxvY2F0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tbG9jYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWxvY2F0aW9uLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRm9ybUxvY2F0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIGZvcm06IEZvcm1Hcm91cDtcblxuICAgIEBWaWV3Q2hpbGQoXCJpbWFnZUlucHV0Q29udGFpbmVyXCIpXG4gICAgaW1hZ2VJbnB1dENvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoXCJpbWFnZUlucHV0XCIpXG4gICAgaW1hZ2VJbnB1dDogRWxlbWVudFJlZjtcblxuICAgIEBWaWV3Q2hpbGQoXCJpbWFnZUJhc2VQcmV2aWV3XCIpXG4gICAgaW1hZ2VCYXNlUHJldmlldzogRWxlbWVudFJlZjtcblxuICAgIEBJbnB1dCgpXG4gICAgbG9jYXRpb246IFNwYWNlO1xuXG4gICAgaW1hZ2VUb1VwbG9hZDogYW55O1xuXG4gICAgaXNTdWJtaXR0ZWQgPSBmYWxzZTtcblxuICAgIGxldmVsczogQXJyYXk8TGV2ZWxTdGF0dXM+O1xuXG4gICAgYWRkTWlzc2lvbkZvck5ld1NwYWNlID0gdHJ1ZTtcblxuICAgIGltYWdlSW5wdXRUZXh0OiBzdHJpbmc7XG5cbiAgICBjdXJyZW50SW1hZ2U6IHN0cmluZztcblxuICAgIGltYWdlVG9CZURlbGV0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBPdXRwdXQoKSBvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U3BhY2UgfCBudWxsPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgc3BhY2VTZXJ2aWNlOiBTcGFjZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcHJvcGVydHlTZXJ2aWNlOiBQcm9wZXJ0eVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgICAgIHByaXZhdGUgbWlzc2lvblNlcnZpY2U6IE1pc3Npb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGxheWVyU2VydmljZTogTGF5ZXJTZXJ2aWNlLFxuICAgICkge1xuICAgICAgICB0aGlzLmxldmVscyA9IGVudW1Ub0FycmF5KExldmVsU3RhdHVzKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubG9jYXRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdEVkaXRGb3JtKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmluaXRGb3JtKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVJbnB1dEltYWdlVGV4dCgpO1xuICAgIH1cblxuICAgIGluaXRGb3JtKCkge1xuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICAgIG5hbWU6IFtudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgICAgYWRkcmVzc2VzOiBbXCJcIl0sXG4gICAgICAgICAgICBsYXRpdHVkZTogW251bGxdLFxuICAgICAgICAgICAgbG9uZ2l0dWRlOiBbbnVsbF0sXG4gICAgICAgICAgICBsZXZlbDogTGV2ZWxTdGF0dXMuTE9XLFxuICAgICAgICAgICAgY2xhc3NHZXM6IFtudWxsXSxcbiAgICAgICAgICAgIGNsYXNzRW5lcmd5Q29uc3VtcHRpb246IFtudWxsXSxcbiAgICAgICAgICAgIGNvbnN0cnVjdGlvblllYXI6IFtudWxsXSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaW5pdEVkaXRGb3JtKCkge1xuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICAgIGlkOiB0aGlzLmxvY2F0aW9uLmlkLFxuICAgICAgICAgICAgbmFtZTogW3RoaXMubG9jYXRpb24ubmFtZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgIGFkZHJlc3NlczogdGhpcy5sb2NhdGlvbi5hZGRyZXNzZXMsXG4gICAgICAgICAgICBsYXRpdHVkZTogdGhpcy5sb2NhdGlvbi5sYXRpdHVkZSxcbiAgICAgICAgICAgIGxvbmdpdHVkZTogdGhpcy5sb2NhdGlvbi5sb25naXR1ZGUsXG4gICAgICAgICAgICBsZXZlbDogdGhpcy5sb2NhdGlvbi5sZXZlbCxcbiAgICAgICAgICAgIGNsYXNzR2VzOiB0aGlzLmxvY2F0aW9uLmNsYXNzR2VzLFxuICAgICAgICAgICAgY2xhc3NFbmVyZ3lDb25zdW1wdGlvbjogdGhpcy5sb2NhdGlvbi5jbGFzc0VuZXJneUNvbnN1bXB0aW9uLFxuICAgICAgICAgICAgY29uc3RydWN0aW9uWWVhcjogdGhpcy5sb2NhdGlvbi5jb25zdHJ1Y3Rpb25ZZWFyLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBoYW5kbGVJbWFnZUlucHV0KHRhcmdldDogRXZlbnRUYXJnZXQpIHtcbiAgICAgICAgdGhpcy5pbWFnZVRvVXBsb2FkID0gKHRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5maWxlc1swXTtcbiAgICAgICAgaWYgKHRoaXMuaW1hZ2VUb1VwbG9hZCkge1xuICAgICAgICAgICAgdGhpcy5pbWFnZUlucHV0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgICAgIHJlYWRlci5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50SW1hZ2UgPSByZWFkZXIucmVzdWx0IGFzIHN0cmluZztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwodGhpcy5pbWFnZVRvVXBsb2FkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIHVwbG9hZEltYWdlKHNwYWNlSUQ6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5pbWFnZVRvVXBsb2FkKSB7XG4gICAgICAgICAgICB1cGxvYWRGaWxlVG9TMyhcImxvY2F0aW9ucy9cIiwgdGhpcy5pbWFnZVRvVXBsb2FkLCBzcGFjZUlEKS50aGVuKFxuICAgICAgICAgICAgICAgIGFzeW5jICh1cmwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVybCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zcGFjZVNlcnZpY2UudXBkYXRlU3BhY2Uoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBzcGFjZUlELFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFubmV4ZXM6IHVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pbWFnZVRvQmVEZWxldGVkKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNwYWNlU2VydmljZS51cGRhdGVTcGFjZSh7XG4gICAgICAgICAgICAgICAgaWQ6IHNwYWNlSUQsXG4gICAgICAgICAgICAgICAgYW5uZXhlczogbnVsbCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYXdhaXQgZGVsZXRlRnJvbVMzKHRoaXMubG9jYXRpb24uYW5uZXhlcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhckltYWdlRmlsZSgpIHtcbiAgICAgICAgdGhpcy5pbWFnZVRvVXBsb2FkID0gbnVsbDtcbiAgICAgICAgdGhpcy5jdXJyZW50SW1hZ2UgPSBudWxsO1xuICAgICAgICB0aGlzLmltYWdlSW5wdXRDb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gXCJmbGV4XCI7XG4gICAgICAgIHRoaXMuaW1hZ2VJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gXCJcIjtcbiAgICAgICAgdGhpcy5pbWFnZUlucHV0VGV4dCA9IFwiQWRkIHBpY3R1cmVcIjtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRMYXllckJ5TmFtZShuYW1lOiBzdHJpbmcpOiBQcm9taXNlPExheWVyPiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRPcmdJZCA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE9yZ2FuaXNhdGlvbigpLmlkO1xuICAgICAgICBjb25zdCBsYXllcnMgPSBhd2FpdCB0aGlzLmxheWVyU2VydmljZS5nZXRMYXllckJ5TmFtZUZvck9yZ2FuaXNhdGlvbihcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBjdXJyZW50T3JnSWQsXG4gICAgICAgICk7XG4gICAgICAgIGlmIChsYXllcnMpIHtcbiAgICAgICAgICAgIHJldHVybiBsYXllcnNbMF07XG4gICAgICAgIH1cbiAgICAgICAgLy8gY3JlYXRlIHRoZW5cbiAgICAgICAgcmV0dXJuIHRoaXMubGF5ZXJTZXJ2aWNlLmNyZWF0ZUxheWVyRm9yT3JnYW5pc2F0aW9uKG5hbWUsIGN1cnJlbnRPcmdJZCk7XG4gICAgfVxuXG4gICAgYXN5bmMgb25TdWJtaXQoKSB7XG4gICAgICAgIHRoaXMuaXNTdWJtaXR0ZWQgPSB0cnVlO1xuICAgICAgICBpZiAoIXRoaXMuZm9ybS52YWxpZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgc3BhY2U7XG4gICAgICAgICAgICBpZiAodGhpcy5sb2NhdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlQ29tbWFUb0RvdCgpO1xuICAgICAgICAgICAgICAgIHNwYWNlID0gYXdhaXQgdGhpcy5zcGFjZVNlcnZpY2UudXBkYXRlU3BhY2UodGhpcy5mb3JtLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAoc3BhY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy51cGxvYWRJbWFnZShzcGFjZS5pZCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9jYXRpb24gPSBzcGFjZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHNwYWNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlQ29tbWFUb0RvdCgpO1xuICAgICAgICAgICAgICAgIGxldCBsYXllciA9IGF3YWl0IHRoaXMuZ2V0TGF5ZXJCeU5hbWUoXCJCVUlMRElOR1wiKTtcbiAgICAgICAgICAgICAgICBpZiAoIWxheWVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGxheWVyID0gYXdhaXQgdGhpcy5sYXllclNlcnZpY2UuY3JlYXRlTGF5ZXJGb3JPcmdhbmlzYXRpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICBcIkJVSUxESU5HXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRPcmdhbmlzYXRpb24oKS5pZCxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3BhY2UgPSBhd2FpdCB0aGlzLnNwYWNlU2VydmljZS5jcmVhdGVTcGFjZShcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBsYXllcixcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgbWlzc2lvbnMgPSB0aGlzLnVzZXJTZXJ2aWNlLmdldE1hbmFnZXJNaXNzaW9ucygpO1xuICAgICAgICAgICAgICAgIGlmIChzcGFjZSAmJiBtaXNzaW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4YW1wbGVNaXNzaW9uID0gbWlzc2lvbnNbMF07XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMudXBsb2FkSW1hZ2Uoc3BhY2UuaWQpO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnByb3BlcnR5U2VydmljZS5jcmVhdGVQcm9wZXJ0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBQcm9wZXJ0eVR5cGUuUFJPUEVSVFksXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGFjZUlEOiBzcGFjZS5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbklEOiBleGFtcGxlTWlzc2lvbi5vcmdhbmlzYXRpb25JRCxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFkZCBkaXJlY3RseSBhIG1pc3Npb24gZm9yIHRoaXMgc3BhY2VcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYWRkTWlzc2lvbkZvck5ld1NwYWNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm1pc3Npb25TZXJ2aWNlLmNyZWF0ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2VJRDogc3BhY2UuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcklEOiBleGFtcGxlTWlzc2lvbi51c2VySUQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZTogZXhhbXBsZU1pc3Npb24ucm9sZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDogZXhhbXBsZU1pc3Npb24ubGV2ZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uSUQ6IGV4YW1wbGVNaXNzaW9uLm9yZ2FuaXNhdGlvbklELFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyZWRPcmdhbmlzYXRpb25JRDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhbXBsZU1pc3Npb24ub3JnYW5pc2F0aW9uSUQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoc3BhY2UpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdChudWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdChudWxsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQ2FuY2VsKCkge1xuICAgICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KG51bGwpO1xuICAgIH1cblxuICAgIGdldCBuYW1lKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KFwibmFtZVwiKTtcbiAgICB9XG5cbiAgICBjaGFuZ2VDb21tYVRvRG90KCkge1xuICAgICAgICBjb25zdCB1cGRhdGVkU3BhY2UgPSB0aGlzLmZvcm0udmFsdWU7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHVwZGF0ZWRTcGFjZS5sYXRpdHVkZSAmJlxuICAgICAgICAgICAgdXBkYXRlZFNwYWNlLmxhdGl0dWRlLnRvU3RyaW5nKCkuaW5jbHVkZXMoXCIsXCIpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdXBkYXRlZFNwYWNlLmxhdGl0dWRlID0gdXBkYXRlZFNwYWNlLmxhdGl0dWRlXG4gICAgICAgICAgICAgICAgLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAucmVwbGFjZShcIixcIiwgXCIuXCIpO1xuICAgICAgICAgICAgTnVtYmVyLnBhcnNlRmxvYXQodXBkYXRlZFNwYWNlLmxhdGl0dWRlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB1cGRhdGVkU3BhY2UubG9uZ2l0dWRlICYmXG4gICAgICAgICAgICB1cGRhdGVkU3BhY2UubG9uZ2l0dWRlLnRvU3RyaW5nKCkuaW5jbHVkZXMoXCIsXCIpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdXBkYXRlZFNwYWNlLmxvbmdpdHVkZSA9IHVwZGF0ZWRTcGFjZS5sb25naXR1ZGVcbiAgICAgICAgICAgICAgICAudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKFwiLFwiLCBcIi5cIik7XG4gICAgICAgICAgICBOdW1iZXIucGFyc2VGbG9hdCh1cGRhdGVkU3BhY2UubG9uZ2l0dWRlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZUlucHV0SW1hZ2VUZXh0KCkge1xuICAgICAgICBpZiAodGhpcy5sb2NhdGlvbiAmJiB0aGlzLmxvY2F0aW9uLmFubmV4ZXMpIHtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VJbnB1dFRleHQgPSBcIkNoYW5nZSBwaWN0dXJlXCI7XG4gICAgICAgICAgICBnZXRTaWduZWRJbWFnZVVybEZvclNwYWNlKHRoaXMubG9jYXRpb24pLnRoZW4oKHVybCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50SW1hZ2UgPSB1cmw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmltYWdlSW5wdXRUZXh0ID0gXCJBZGQgcGljdHVyZVwiO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNvbC1tZC02IGZvcm0tbmV3LWxvY1wiICpuZ0lmPVwiZm9ybVwiPlxuICAgIDxmb3JtIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdCgpXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWItMyByb3dcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLXNtLTMgY29sLWZvcm0tbGFiZWxcIj57eydOYW1lJyB8IHRyYW5zbGF0ZX19ICo8L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTlcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtjbGFzcy5pcy1pbnZhbGlkXT1cIm5hbWUuaW52YWxpZCAmJiBpc1N1Ym1pdHRlZFwiIHJlcXVpcmVkXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj5cbiAgICAgICAgICAgIHt7J05hbWUgaXMgbWFuZGF0b3J5JyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gIFxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTMgcm93XCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1zbS0zIGNvbC1mb3JtLWxhYmVsXCI+e3snQWRkcmVzcycgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tOVwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiYWRkcmVzc2VzXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gIFxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTMgcm93XCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1zbS0zIGNvbC1mb3JtLWxhYmVsXCI+e3snQ29uc3RydWN0aW9uIHllYXInIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTlcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImNvbnN0cnVjdGlvblllYXJcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgXG4gICAgICA8ZGl2IGNsYXNzPVwibWItMyByb3dcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLXNtLTMgY29sLWZvcm0tbGFiZWxcIj57eydMYXRpdHVkZScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tOVwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwibGF0aXR1ZGVcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgXG4gICAgICA8ZGl2IGNsYXNzPVwibWItMyByb3dcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLXNtLTMgY29sLWZvcm0tbGFiZWxcIj57eydMb25naXR1ZGUnIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTlcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImxvbmdpdHVkZVwiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICBcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0zIHJvd1wiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtc20tMyBjb2wtZm9ybS1sYWJlbFwiPnt7J0FjY2VzcyBsZXZlbCcgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tOVwiPlxuICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJkLWlubGluZS1ibG9jayBjdXN0b20tc2VsZWN0IHJvdW5kZWQtcGlsbFwiIGZvcm1Db250cm9sTmFtZT1cImxldmVsXCI+XG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBsZXZlbCBvZiBsZXZlbHNcIiBbdmFsdWVdPVwibGV2ZWxcIj57e2xldmVsIHwgdHJhbnNsYXRlfX08L29wdGlvbj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgXG4gICAgICA8ZGl2IGNsYXNzPVwibWItMyByb3dcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLXNtLTMgY29sLWZvcm0tbGFiZWxcIj57eydFbmVyZ3kgQ2xhc3MnIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTlcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImNsYXNzRW5lcmd5Q29uc3VtcHRpb25cIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgXG4gICAgICA8ZGl2IGNsYXNzPVwibWItMyByb3dcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLXNtLTMgY29sLWZvcm0tbGFiZWxcIj57eydHcmVlbmhvdXNlIGdhcyBlbWlzc2lvbiBDbGFzcycgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tOVwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgZm9ybUNvbnRyb2xOYW1lPVwiY2xhc3NHZXNcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgXG4gICAgICA8ZGl2IGNsYXNzPVwibWItMyByb3dcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLXNtLTMgY29sLWZvcm0tbGFiZWxcIj57eydDb3ZlciBwaWN0dXJlJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS05XCI+XG4gICAgICAgICAgPGltZyAjaW1hZ2VCYXNlUHJldmlldyAqbmdJZj1cImN1cnJlbnRJbWFnZVwiIGNsYXNzPVwiaW1hZ2UtcHJldmlld1wiIFtzcmNdPVwiY3VycmVudEltYWdlXCI+XG4gICAgICAgICAgPGxhYmVsICNpbWFnZUlucHV0Q29udGFpbmVyIGZvcj1cImltYWdlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1sYWJlbC1maWxlIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsIGltYWdlSW5wdXRDb250YWluZXJcIj5cbiAgICAgICAgICAgIDxpbnB1dCAjaW1hZ2VJbnB1dCB0eXBlPVwiZmlsZVwiIGlkPVwiaW1hZ2VcIiAoY2hhbmdlKT1cImhhbmRsZUltYWdlSW5wdXQoJGV2ZW50LnRhcmdldClcIiAvPlxuICAgICAgICAgICAge3sgaW1hZ2VJbnB1dFRleHQgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImN1cnJlbnRJbWFnZSAmJiAhaW1hZ2VUb1VwbG9hZFwiIFxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsXCIgKGNsaWNrKT1cImltYWdlVG9CZURlbGV0ZWQ9dHJ1ZTtjbGVhckltYWdlRmlsZSgpXCI+e3snRGVsZXRlIHBpY3R1cmUnIHwgdHJhbnNsYXRlIH19PC9idXR0b24+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlLW5hbWVcIiAqbmdJZj1cImltYWdlVG9VcGxvYWRcIj5cbiAgICAgICAgICAgIDxwID57eyBpbWFnZVRvVXBsb2FkLm5hbWV9fTwvcD5cbiAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cImNsZWFySW1hZ2VGaWxlKClcIiAgW3N0eWxlLmN1cnNvcl09XCIncG9pbnRlcidcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uaWZ5XCIgZGF0YS1pY29uPVwibWRpOnRyYXNoLWNhbi1vdXRsaW5lXCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWItMyByb3dcIiAqbmdJZj1cIiFsb2NhdGlvblwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtc20tMyBjb2wtZm9ybS1sYWJlbFwiPnt7J0NyZWF0ZSBtaXNzaW9uIGZvciB0aGlzIHNwYWNlJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0zXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFsobmdNb2RlbCldPVwiYWRkTWlzc2lvbkZvck5ld1NwYWNlXCIgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICBcbiAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsIG1lLTNcIj57eydTYXZlJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25DYW5jZWwoKVwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgcm91bmRlZC1waWxsXCI+e3snQ2FuY2VsJyB8XG4gICAgICAgIHRyYW5zbGF0ZX19PC9idXR0b24+XG4gICAgPC9mb3JtPlxuPC9kaXY+XG4iXX0=
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1sb2NhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tbG9jYXRpb25zL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWxvY2F0aW9uL2Zvcm0tbG9jYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWxvY2F0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS1sb2NhdGlvbi9mb3JtLWxvY2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBMEIsVUFBVSxFQUFtQixNQUFNLGdCQUFnQixDQUFDO0FBQ3JGLE9BQU8sRUFBUyxXQUFXLEVBQWtFLFdBQVcsRUFBRSxjQUFjLEVBQVMsWUFBWSxFQUFFLHlCQUF5QixFQUFnQixZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7O0FBT2hQLE1BQU0sT0FBTyxxQkFBcUI7SUFnQzlCLFlBQ1ksWUFBMEIsRUFDMUIsZUFBZ0MsRUFDaEMsV0FBNEIsRUFDNUIsRUFBZSxFQUNmLGNBQThCLEVBQzlCLFlBQTBCO1FBTDFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDNUIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQXBCdEMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFJcEIsMEJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBTTdCLHFCQUFnQixHQUFZLEtBQUss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QVEsQ0FBQyxPQUFPLEVBQUU7WUFDeEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQztZQUN2Qyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2xELElBQUksR0FBRyxFQUFFO29CQUNMLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO2lCQUMzQjtZQUNMLENBQUMsQ0FBQyxDQUFDO1NBQ047YUFBTTtZQUNILElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDO1NBQ3ZDO0lBQ0wsQ0FBQzs7a0hBcFBRLHFCQUFxQjtzR0FBckIscUJBQXFCLDRiQ1RsQyxreklBK0ZBOzJGRHRGYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0ksbUJBQW1CO2lQQVM3QixtQkFBbUI7c0JBRGxCLFNBQVM7dUJBQUMscUJBQXFCO2dCQUloQyxVQUFVO3NCQURULFNBQVM7dUJBQUMsWUFBWTtnQkFJdkIsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUk3QixRQUFRO3NCQURQLEtBQUs7Z0JBaUJJLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMsIEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNwYWNlLCBMZXZlbFN0YXR1cywgU3BhY2VTZXJ2aWNlLCBQcm9wZXJ0eVNlcnZpY2UsIEJhc2VVc2VyU2VydmljZSwgTWlzc2lvblNlcnZpY2UsIGVudW1Ub0FycmF5LCB1cGxvYWRGaWxlVG9TMywgTGF5ZXIsIFByb3BlcnR5VHlwZSwgZ2V0U2lnbmVkSW1hZ2VVcmxGb3JTcGFjZSwgTGF5ZXJTZXJ2aWNlLCBkZWxldGVGcm9tUzMgfSBmcm9tICdAc21hcnRlcnBsYW4vbmd4LXNtYXJ0ZXJwbGFuLWNvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpYi1mb3JtLWxvY2F0aW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1sb2NhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9ybS1sb2NhdGlvbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1Mb2NhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBmb3JtOiBGb3JtR3JvdXA7XG5cbiAgICBAVmlld0NoaWxkKFwiaW1hZ2VJbnB1dENvbnRhaW5lclwiKVxuICAgIGltYWdlSW5wdXRDb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKFwiaW1hZ2VJbnB1dFwiKVxuICAgIGltYWdlSW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgICBAVmlld0NoaWxkKFwiaW1hZ2VCYXNlUHJldmlld1wiKVxuICAgIGltYWdlQmFzZVByZXZpZXc6IEVsZW1lbnRSZWY7XG5cbiAgICBASW5wdXQoKVxuICAgIGxvY2F0aW9uOiBTcGFjZTtcblxuICAgIGltYWdlVG9VcGxvYWQ6IGFueTtcblxuICAgIGlzU3VibWl0dGVkID0gZmFsc2U7XG5cbiAgICBsZXZlbHM6IEFycmF5PExldmVsU3RhdHVzPjtcblxuICAgIGFkZE1pc3Npb25Gb3JOZXdTcGFjZSA9IHRydWU7XG5cbiAgICBpbWFnZUlucHV0VGV4dDogc3RyaW5nO1xuXG4gICAgY3VycmVudEltYWdlOiBzdHJpbmc7XG5cbiAgICBpbWFnZVRvQmVEZWxldGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KCkgb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNwYWNlIHwgbnVsbD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHNwYWNlU2VydmljZTogU3BhY2VTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHByb3BlcnR5U2VydmljZTogUHJvcGVydHlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBCYXNlVXNlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgICAgICBwcml2YXRlIG1pc3Npb25TZXJ2aWNlOiBNaXNzaW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBsYXllclNlcnZpY2U6IExheWVyU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgdGhpcy5sZXZlbHMgPSBlbnVtVG9BcnJheShMZXZlbFN0YXR1cyk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmxvY2F0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRFZGl0Rm9ybSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbml0Rm9ybSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaGFuZGxlSW5wdXRJbWFnZVRleHQoKTtcbiAgICB9XG5cbiAgICBpbml0Rm9ybSgpIHtcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgICBuYW1lOiBbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgICAgIGFkZHJlc3NlczogW1wiXCJdLFxuICAgICAgICAgICAgbGF0aXR1ZGU6IFtudWxsXSxcbiAgICAgICAgICAgIGxvbmdpdHVkZTogW251bGxdLFxuICAgICAgICAgICAgbGV2ZWw6IExldmVsU3RhdHVzLkxPVyxcbiAgICAgICAgICAgIGNsYXNzR2VzOiBbbnVsbF0sXG4gICAgICAgICAgICBjbGFzc0VuZXJneUNvbnN1bXB0aW9uOiBbbnVsbF0sXG4gICAgICAgICAgICBjb25zdHJ1Y3Rpb25ZZWFyOiBbbnVsbF0sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGluaXRFZGl0Rm9ybSgpIHtcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgICBpZDogdGhpcy5sb2NhdGlvbi5pZCxcbiAgICAgICAgICAgIG5hbWU6IFt0aGlzLmxvY2F0aW9uLm5hbWUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICAgICAgICBhZGRyZXNzZXM6IHRoaXMubG9jYXRpb24uYWRkcmVzc2VzLFxuICAgICAgICAgICAgbGF0aXR1ZGU6IHRoaXMubG9jYXRpb24ubGF0aXR1ZGUsXG4gICAgICAgICAgICBsb25naXR1ZGU6IHRoaXMubG9jYXRpb24ubG9uZ2l0dWRlLFxuICAgICAgICAgICAgbGV2ZWw6IHRoaXMubG9jYXRpb24ubGV2ZWwsXG4gICAgICAgICAgICBjbGFzc0dlczogdGhpcy5sb2NhdGlvbi5jbGFzc0dlcyxcbiAgICAgICAgICAgIGNsYXNzRW5lcmd5Q29uc3VtcHRpb246IHRoaXMubG9jYXRpb24uY2xhc3NFbmVyZ3lDb25zdW1wdGlvbixcbiAgICAgICAgICAgIGNvbnN0cnVjdGlvblllYXI6IHRoaXMubG9jYXRpb24uY29uc3RydWN0aW9uWWVhcixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaGFuZGxlSW1hZ2VJbnB1dCh0YXJnZXQ6IEV2ZW50VGFyZ2V0KSB7XG4gICAgICAgIHRoaXMuaW1hZ2VUb1VwbG9hZCA9ICh0YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuZmlsZXNbMF07XG4gICAgICAgIGlmICh0aGlzLmltYWdlVG9VcGxvYWQpIHtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VJbnB1dENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIiwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEltYWdlID0gcmVhZGVyLnJlc3VsdCBhcyBzdHJpbmc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKHRoaXMuaW1hZ2VUb1VwbG9hZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyB1cGxvYWRJbWFnZShzcGFjZUlEOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuaW1hZ2VUb1VwbG9hZCkge1xuICAgICAgICAgICAgdXBsb2FkRmlsZVRvUzMoXCJsb2NhdGlvbnMvXCIsIHRoaXMuaW1hZ2VUb1VwbG9hZCwgc3BhY2VJRCkudGhlbihcbiAgICAgICAgICAgICAgICBhc3luYyAodXJsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc3BhY2VTZXJ2aWNlLnVwZGF0ZVNwYWNlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogc3BhY2VJRCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbm5leGVzOiB1cmwsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaW1hZ2VUb0JlRGVsZXRlZCkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zcGFjZVNlcnZpY2UudXBkYXRlU3BhY2Uoe1xuICAgICAgICAgICAgICAgIGlkOiBzcGFjZUlELFxuICAgICAgICAgICAgICAgIGFubmV4ZXM6IG51bGwsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGF3YWl0IGRlbGV0ZUZyb21TMyh0aGlzLmxvY2F0aW9uLmFubmV4ZXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xlYXJJbWFnZUZpbGUoKSB7XG4gICAgICAgIHRoaXMuaW1hZ2VUb1VwbG9hZCA9IG51bGw7XG4gICAgICAgIHRoaXMuY3VycmVudEltYWdlID0gbnVsbDtcbiAgICAgICAgdGhpcy5pbWFnZUlucHV0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9IFwiZmxleFwiO1xuICAgICAgICB0aGlzLmltYWdlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IFwiXCI7XG4gICAgICAgIHRoaXMuaW1hZ2VJbnB1dFRleHQgPSBcIkFkZCBwaWN0dXJlXCI7XG4gICAgfVxuXG4gICAgYXN5bmMgZ2V0TGF5ZXJCeU5hbWUobmFtZTogc3RyaW5nKTogUHJvbWlzZTxMYXllcj4ge1xuICAgICAgICBjb25zdCBjdXJyZW50T3JnSWQgPSB0aGlzLnVzZXJTZXJ2aWNlLmN1cnJlbnRPcmdhbmlzYXRpb24oKS5pZDtcbiAgICAgICAgY29uc3QgbGF5ZXJzID0gYXdhaXQgdGhpcy5sYXllclNlcnZpY2UuZ2V0TGF5ZXJCeU5hbWVGb3JPcmdhbmlzYXRpb24oXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgY3VycmVudE9yZ0lkLFxuICAgICAgICApO1xuICAgICAgICBpZiAobGF5ZXJzKSB7XG4gICAgICAgICAgICByZXR1cm4gbGF5ZXJzWzBdO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNyZWF0ZSB0aGVuXG4gICAgICAgIHJldHVybiB0aGlzLmxheWVyU2VydmljZS5jcmVhdGVMYXllckZvck9yZ2FuaXNhdGlvbihuYW1lLCBjdXJyZW50T3JnSWQpO1xuICAgIH1cblxuICAgIGFzeW5jIG9uU3VibWl0KCkge1xuICAgICAgICB0aGlzLmlzU3VibWl0dGVkID0gdHJ1ZTtcbiAgICAgICAgaWYgKCF0aGlzLmZvcm0udmFsaWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IHNwYWNlO1xuICAgICAgICAgICAgaWYgKHRoaXMubG9jYXRpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZUNvbW1hVG9Eb3QoKTtcbiAgICAgICAgICAgICAgICBzcGFjZSA9IGF3YWl0IHRoaXMuc3BhY2VTZXJ2aWNlLnVwZGF0ZVNwYWNlKHRoaXMuZm9ybS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKHNwYWNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMudXBsb2FkSW1hZ2Uoc3BhY2UuaWQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvY2F0aW9uID0gc3BhY2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdChzcGFjZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZUNvbW1hVG9Eb3QoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzcGFjZUlucHV0ID0gdGhpcy5mb3JtLnZhbHVlIGFzIFNwYWNlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRPcmdJRCA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE9yZ2FuaXNhdGlvbigpLmlkO1xuICAgICAgICAgICAgICAgIHNwYWNlSW5wdXQub3JnYW5pc2F0aW9uSUQgPSBjdXJyZW50T3JnSUQ7XG4gICAgICAgICAgICAgICAgbGV0IGxheWVyID0gYXdhaXQgdGhpcy5nZXRMYXllckJ5TmFtZShcIkJVSUxESU5HXCIpO1xuICAgICAgICAgICAgICAgIGlmICghbGF5ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgbGF5ZXIgPSBhd2FpdCB0aGlzLmxheWVyU2VydmljZS5jcmVhdGVMYXllckZvck9yZ2FuaXNhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiQlVJTERJTkdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRPcmdJRCxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3BhY2UgPSBhd2FpdCB0aGlzLnNwYWNlU2VydmljZS5jcmVhdGVTcGFjZShcbiAgICAgICAgICAgICAgICAgICAgc3BhY2VJbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgbGF5ZXIsXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG1pc3Npb25zID0gdGhpcy51c2VyU2VydmljZS5nZXRNYW5hZ2VyTWlzc2lvbnMoKTtcbiAgICAgICAgICAgICAgICBpZiAoc3BhY2UgJiYgbWlzc2lvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleGFtcGxlTWlzc2lvbiA9IG1pc3Npb25zWzBdO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnVwbG9hZEltYWdlKHNwYWNlLmlkKTtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvcGVydHlTZXJ2aWNlLmNyZWF0ZVByb3BlcnR5KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBQcm9wZXJ0eVR5cGUuUFJPUEVSVFksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2VJRDogc3BhY2UuaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uSUQ6IGN1cnJlbnRPcmdJRCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkFQSSBTZXJ2aWNlIGRvZXMgbm90IGhhdmUgUHJvcGVydHkgcmVxdWVzdHNcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBhZGQgZGlyZWN0bHkgYSBtaXNzaW9uIGZvciB0aGlzIHNwYWNlXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmFkZE1pc3Npb25Gb3JOZXdTcGFjZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5taXNzaW9uU2VydmljZS5jcmVhdGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlSUQ6IHNwYWNlLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJJRDogZXhhbXBsZU1pc3Npb24udXNlcklELFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU6IGV4YW1wbGVNaXNzaW9uLnJvbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGV4YW1wbGVNaXNzaW9uLmxldmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbklEOiBleGFtcGxlTWlzc2lvbi5vcmdhbmlzYXRpb25JRCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcmVkT3JnYW5pc2F0aW9uSUQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YW1wbGVNaXNzaW9uLm9yZ2FuaXNhdGlvbklELFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZS5lbWl0KHNwYWNlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQobnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNhbmNlbCgpIHtcbiAgICAgICAgdGhpcy5mb3JtLnJlc2V0KCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UuZW1pdChudWxsKTtcbiAgICB9XG5cbiAgICBnZXQgbmFtZSgpOiBBYnN0cmFjdENvbnRyb2wge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmdldChcIm5hbWVcIik7XG4gICAgfVxuXG4gICAgY2hhbmdlQ29tbWFUb0RvdCgpIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZFNwYWNlID0gdGhpcy5mb3JtLnZhbHVlO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB1cGRhdGVkU3BhY2UubGF0aXR1ZGUgJiZcbiAgICAgICAgICAgIHVwZGF0ZWRTcGFjZS5sYXRpdHVkZS50b1N0cmluZygpLmluY2x1ZGVzKFwiLFwiKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHVwZGF0ZWRTcGFjZS5sYXRpdHVkZSA9IHVwZGF0ZWRTcGFjZS5sYXRpdHVkZVxuICAgICAgICAgICAgICAgIC50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoXCIsXCIsIFwiLlwiKTtcbiAgICAgICAgICAgIE51bWJlci5wYXJzZUZsb2F0KHVwZGF0ZWRTcGFjZS5sYXRpdHVkZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdXBkYXRlZFNwYWNlLmxvbmdpdHVkZSAmJlxuICAgICAgICAgICAgdXBkYXRlZFNwYWNlLmxvbmdpdHVkZS50b1N0cmluZygpLmluY2x1ZGVzKFwiLFwiKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHVwZGF0ZWRTcGFjZS5sb25naXR1ZGUgPSB1cGRhdGVkU3BhY2UubG9uZ2l0dWRlXG4gICAgICAgICAgICAgICAgLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAucmVwbGFjZShcIixcIiwgXCIuXCIpO1xuICAgICAgICAgICAgTnVtYmVyLnBhcnNlRmxvYXQodXBkYXRlZFNwYWNlLmxvbmdpdHVkZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVJbnB1dEltYWdlVGV4dCgpIHtcbiAgICAgICAgaWYgKHRoaXMubG9jYXRpb24gJiYgdGhpcy5sb2NhdGlvbi5hbm5leGVzKSB7XG4gICAgICAgICAgICB0aGlzLmltYWdlSW5wdXRUZXh0ID0gXCJDaGFuZ2UgcGljdHVyZVwiO1xuICAgICAgICAgICAgZ2V0U2lnbmVkSW1hZ2VVcmxGb3JTcGFjZSh0aGlzLmxvY2F0aW9uKS50aGVuKCh1cmwpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodXJsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEltYWdlID0gdXJsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbWFnZUlucHV0VGV4dCA9IFwiQWRkIHBpY3R1cmVcIjtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb2wtbWQtNiBmb3JtLW5ldy1sb2NcIiAqbmdJZj1cImZvcm1cIj5cbiAgICA8Zm9ybSAobmdTdWJtaXQpPVwib25TdWJtaXQoKVwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTMgcm93XCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1zbS0zIGNvbC1mb3JtLWxhYmVsXCI+e3snTmFtZScgfCB0cmFuc2xhdGV9fSAqPC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS05XCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbY2xhc3MuaXMtaW52YWxpZF09XCJuYW1lLmludmFsaWQgJiYgaXNTdWJtaXR0ZWRcIiByZXF1aXJlZFxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+XG4gICAgICAgICAgICB7eydOYW1lIGlzIG1hbmRhdG9yeScgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICBcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0zIHJvd1wiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtc20tMyBjb2wtZm9ybS1sYWJlbFwiPnt7J0FkZHJlc3MnIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTlcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImFkZHJlc3Nlc1wiPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICBcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0zIHJvd1wiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtc20tMyBjb2wtZm9ybS1sYWJlbFwiPnt7J0NvbnN0cnVjdGlvbiB5ZWFyJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS05XCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJjb25zdHJ1Y3Rpb25ZZWFyXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gIFxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTMgcm93XCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1zbS0zIGNvbC1mb3JtLWxhYmVsXCI+e3snTGF0aXR1ZGUnIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTlcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImxhdGl0dWRlXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gIFxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTMgcm93XCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1zbS0zIGNvbC1mb3JtLWxhYmVsXCI+e3snTG9uZ2l0dWRlJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS05XCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJsb25naXR1ZGVcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgXG4gICAgICA8ZGl2IGNsYXNzPVwibWItMyByb3dcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLXNtLTMgY29sLWZvcm0tbGFiZWxcIj57eydBY2Nlc3MgbGV2ZWwnIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTlcIj5cbiAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgY3VzdG9tLXNlbGVjdCByb3VuZGVkLXBpbGxcIiBmb3JtQ29udHJvbE5hbWU9XCJsZXZlbFwiPlxuICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgbGV2ZWwgb2YgbGV2ZWxzXCIgW3ZhbHVlXT1cImxldmVsXCI+e3tsZXZlbCB8IHRyYW5zbGF0ZX19PC9vcHRpb24+XG4gICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gIFxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTMgcm93XCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1zbS0zIGNvbC1mb3JtLWxhYmVsXCI+e3snRW5lcmd5IENsYXNzJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS05XCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJjbGFzc0VuZXJneUNvbnN1bXB0aW9uXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gIFxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTMgcm93XCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1zbS0zIGNvbC1mb3JtLWxhYmVsXCI+e3snR3JlZW5ob3VzZSBnYXMgZW1pc3Npb24gQ2xhc3MnIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTlcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImNsYXNzR2VzXCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gIFxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTMgcm93XCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1zbS0zIGNvbC1mb3JtLWxhYmVsXCI+e3snQ292ZXIgcGljdHVyZScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tOVwiPlxuICAgICAgICAgIDxpbWcgI2ltYWdlQmFzZVByZXZpZXcgKm5nSWY9XCJjdXJyZW50SW1hZ2VcIiBjbGFzcz1cImltYWdlLXByZXZpZXdcIiBbc3JjXT1cImN1cnJlbnRJbWFnZVwiPlxuICAgICAgICAgIDxsYWJlbCAjaW1hZ2VJbnB1dENvbnRhaW5lciBmb3I9XCJpbWFnZVwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGFiZWwtZmlsZSBidG4tb3V0bGluZS1wcmltYXJ5IHJvdW5kZWQtcGlsbCBpbWFnZUlucHV0Q29udGFpbmVyXCI+XG4gICAgICAgICAgICA8aW5wdXQgI2ltYWdlSW5wdXQgdHlwZT1cImZpbGVcIiBpZD1cImltYWdlXCIgKGNoYW5nZSk9XCJoYW5kbGVJbWFnZUlucHV0KCRldmVudC50YXJnZXQpXCIgLz5cbiAgICAgICAgICAgIHt7IGltYWdlSW5wdXRUZXh0IHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjdXJyZW50SW1hZ2UgJiYgIWltYWdlVG9VcGxvYWRcIiBcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IHJvdW5kZWQtcGlsbFwiIChjbGljayk9XCJpbWFnZVRvQmVEZWxldGVkPXRydWU7Y2xlYXJJbWFnZUZpbGUoKVwiPnt7J0RlbGV0ZSBwaWN0dXJlJyB8IHRyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1uYW1lXCIgKm5nSWY9XCJpbWFnZVRvVXBsb2FkXCI+XG4gICAgICAgICAgICA8cCA+e3sgaW1hZ2VUb1VwbG9hZC5uYW1lfX08L3A+XG4gICAgICAgICAgICA8ZGl2IChjbGljayk9XCJjbGVhckltYWdlRmlsZSgpXCIgIFtzdHlsZS5jdXJzb3JdPVwiJ3BvaW50ZXInXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbmlmeVwiIGRhdGEtaWNvbj1cIm1kaTp0cmFzaC1jYW4tb3V0bGluZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIFxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTMgcm93XCIgKm5nSWY9XCIhbG9jYXRpb25cIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLXNtLTMgY29sLWZvcm0tbGFiZWxcIj57eydDcmVhdGUgbWlzc2lvbiBmb3IgdGhpcyBzcGFjZScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tM1wiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbKG5nTW9kZWwpXT1cImFkZE1pc3Npb25Gb3JOZXdTcGFjZVwiIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgXG4gICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IHJvdW5kZWQtcGlsbCBtZS0zXCI+e3snU2F2ZScgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IHJvdW5kZWQtcGlsbFwiPnt7J0NhbmNlbCcgfFxuICAgICAgICB0cmFuc2xhdGV9fTwvYnV0dG9uPlxuICAgIDwvZm9ybT5cbjwvZGl2PlxuIl19