@gloww/gloww 0.9.0-beta.5 → 0.9.0-beta.8

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.
@@ -73,14 +73,26 @@ export class DisplayObjectsComponent {
73
73
  }
74
74
  }
75
75
  ngAfterContentInit() {
76
+ console.log(`INIT : fromLayout:${this.formLayout}-displayform:${this.displayform}`);
76
77
  if (!this.formLayout && this.resultLayout) {
77
78
  this.displayform = false;
78
79
  this.displayresult = true;
79
80
  }
81
+ this.glowwService.basePathChange.subscribe(newUrl => {
82
+ console.log(`basePathChange : fromLayout:${this.formLayout}-displayform:${this.displayform}`);
83
+ if (!this.formLayout && this.resultLayout) {
84
+ this.displayform = false;
85
+ this.displayresult = true;
86
+ }
87
+ if (!this.displayform) {
88
+ this.Search();
89
+ }
90
+ });
80
91
  }
81
92
  ngOnInit() {
82
93
  }
83
94
  Search(data) {
95
+ this.data = data;
84
96
  this.displayresult = true;
85
97
  this.displayform = false;
86
98
  this.resultException = null;
@@ -344,6 +356,22 @@ export class DisplayObjectsComponent {
344
356
  });
345
357
  }
346
358
  }
359
+ _updateObj(current, newData) {
360
+ let args = this.getPrimaryKey(current);
361
+ args.push(newData);
362
+ var subject = new Subject();
363
+ this.putRequest.apply(this.glowwService, args).subscribe(data => {
364
+ const i = this.dataSource.data.indexOf(current);
365
+ const tmp = this.dataSource.data;
366
+ tmp[i] = data;
367
+ this.dataSource.data = tmp;
368
+ subject.next(data);
369
+ }, error => {
370
+ alert(`Unable to update Object ${error.status} ${error.statusText}\n${error.Message}\n${error.error}`);
371
+ subject.error(error);
372
+ });
373
+ return subject;
374
+ }
347
375
  EditObj(obj) {
348
376
  const dialogConfig = new MatDialogConfig();
349
377
  dialogConfig.disableClose = true;
@@ -355,19 +383,45 @@ export class DisplayObjectsComponent {
355
383
  });
356
384
  }
357
385
  dialogConfig.data = obj;
358
- this.dialog.open(this.Editor, dialogConfig).afterClosed().subscribe(data => {
359
- if (data) {
360
- let args = this.getPrimaryKey(obj);
361
- args.push(data);
362
- this.putRequest.apply(this.glowwService, args).subscribe(p => {
363
- const i = this.dataSource.data.indexOf(obj);
364
- const tmp = this.dataSource.data;
365
- tmp[i] = p;
366
- this.dataSource.data = tmp;
386
+ const dlg = this.dialog.open(this.Editor, dialogConfig);
387
+ dlg.componentInstance.callback = (data => {
388
+ let datacopy = { ...data };
389
+ const fileFields = this.Editor.fileFields;
390
+ if (fileFields?.length == 1) {
391
+ // Un seul champ, il peut être multiple
392
+ const fileField = fileFields[0];
393
+ const files = datacopy[fileField];
394
+ delete datacopy[fileField];
395
+ const allobs = {};
396
+ files.forEach(file => {
397
+ if (file.statut !== 'Done' && file.statut !== 'Error') {
398
+ const obs = this._updateObj(obj, datacopy).pipe(switchMap(newdata => this._saveFile(fileField, newdata, file)));
399
+ allobs[file.name] = obs;
400
+ }
367
401
  });
402
+ return combineLatest(allobs).pipe(take(1));
403
+ }
404
+ else if (fileFields?.length > 1) {
405
+ // Plusieurs champs file, il ne peut y avoir qu'une seul fichier par champ.
406
+ const fields = {};
407
+ fileFields.forEach(ff => {
408
+ fields[ff] = datacopy[ff];
409
+ delete datacopy[ff];
410
+ return this._updateObj(obj, datacopy).pipe(mergeMap(newdata => {
411
+ var allobs = [];
412
+ Object.entries(fields).forEach(([fileField, files]) => {
413
+ if (files.length > 0) {
414
+ allobs.push(this._saveFile(fileField, newdata, files[0]));
415
+ }
416
+ });
417
+ return forkJoin(allobs); // TODO : PAS TERMINE... JAMAIS UTILISE...
418
+ }));
419
+ });
420
+ }
421
+ else {
422
+ // Form sans fichier
423
+ return this._updateObj(obj, data);
368
424
  }
369
- }, error => {
370
- alert(`Unable to update Object ${error.status} ${error.statusText}\n${error.Message}\n${error.error}`);
371
425
  });
372
426
  }
373
427
  }
@@ -437,4 +491,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
437
491
  }], fileFields: [{
438
492
  type: Input
439
493
  }] } });
440
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGxheS1vYmplY3RzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvQ29tcG9uZW50cy9kaXNwbGF5LW9iamVjdHMvZGlzcGxheS1vYmplY3RzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvQ29tcG9uZW50cy9kaXNwbGF5LW9iamVjdHMvZGlzcGxheS1vYmplY3RzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFVLFNBQVMsRUFBc0ssS0FBSyxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQ25RLE9BQU8sRUFBRSxXQUFXLEVBQTBCLE1BQU0sZ0JBQWdCLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQWdCLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUEwQixFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUU5RSxPQUFPLEVBQWdDLGFBQWEsRUFBRSxVQUFVLEVBQWdCLE1BQU0sc0JBQXNCLENBQUM7QUFHN0csT0FBTyxFQUFhLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSXRFLE9BQU8sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLFFB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QUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpc3BsYXlPYmplY3RzQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vLi4vZGlzcGxheS1vYmplY3RzLWNvbmZpZ3VyYXRpb24nO1xyXG5pbXBvcnQgeyBTZWFyY2hGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoLWZvcm0vc2VhcmNoLWZvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgUmVmZXJlbmNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXIvc3JjL3JlbmRlcjMvcjNfYXN0JztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIE9uSW5pdCwgVmlld0NoaWxkLCBBZnRlclZpZXdJbml0LCBFbGVtZW50UmVmLCBEaXJlY3RpdmUsIENoYW5nZURldGVjdG9yUmVmLCBJbmplY3RvciwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIEFmdGVyQ29udGVudEluaXQsIFF1ZXJ5TGlzdCwgQ29udGVudENoaWxkcmVuLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIElucHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0U29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBNYXRDb2x1bW5EZWYsIE1hdFRhYmxlLCBNYXRUYWJsZURhdGFTb3VyY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIGZvcmtKb2luLCBvYnNlcnZhYmxlLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlc3VsdFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vcmVzdWx0LXRhYmxlL3Jlc3VsdC10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEV2ZW50LCBIdHRwRXZlbnRUeXBlLCBIdHRwUGFyYW1zLCBIdHRwUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIERhdGEsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nQ29uZmlnIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgR2xvd3dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vU2VydmljZXMvZ2xvd3cuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2dsb3d3LXNlY3VyaXR5L1NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQgeyBtYXAsIGNhdGNoRXJyb3IsIG1lcmdlTWFwLCB0YXAsIGZpbHRlciwgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb24ge1xyXG4gIGljb246IGFueTtcclxuICBuYW1lPzogc3RyaW5nO1xyXG4gIHJvdXRlckxpbmtGY3Q/OiAob2JqKSA9PiBzdHJpbmdbXTtcclxuICBkaXNwbGF5PzogKG9iaikgPT4gYm9vbGVhbjtcclxufTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZ2x3LWRpc3BsYXktb2JqZWN0cycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Rpc3BsYXktb2JqZWN0cy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGlzcGxheS1vYmplY3RzLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIERpc3BsYXlPYmplY3RzQ29tcG9uZW50PFRPYmo+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xyXG5cclxuICBAQ29udGVudENoaWxkKEhlYWRlckNvbXBvbmVudCkgaGVhZGVyOiBIZWFkZXJDb21wb25lbnQ7XHJcbiAgQENvbnRlbnRDaGlsZChTZWFyY2hGb3JtQ29tcG9uZW50KSBmb3JtTGF5b3V0OiBTZWFyY2hGb3JtQ29tcG9uZW50O1xyXG4gIEBDb250ZW50Q2hpbGQoUmVzdWx0VGFibGVDb21wb25lbnQpIHJlc3VsdExheW91dDogUmVzdWx0VGFibGVDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZChNYXRUYWJsZSwgeyBzdGF0aWM6IGZhbHNlIH0pIHRhYmxlOiBNYXRUYWJsZTxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoTWF0UGFnaW5hdG9yLCB7IHN0YXRpYzogZmFsc2UgfSkgcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XHJcbiAgQFZpZXdDaGlsZChNYXRTb3J0LCB7IHN0YXRpYzogZmFsc2UgfSkgc29ydDogTWF0U29ydDtcclxuXHJcbiAgLy8gYWZ0ZXIgdGhlIDxuZy1jb250ZW50PiBoYXMgYmVlbiBpbml0aWFsaXplZCwgdGhlIGNvbHVtbiBkZWZpbml0aW9ucyBhcmUgYXZhaWxhYmxlLlxyXG4gIC8vIEFsbCB0aGF0J3MgbGVmdCBpcyB0byBhZGQgdGhlbSB0byB0aGUgdGFibGUgb3Vyc2VsdmVzOlxyXG4gIEBJbnB1dCgpIGNvbmZpZ3VyYXRpb246IERpc3BsYXlPYmplY3RzQ29uZmlndXJhdGlvbjxUT2JqPjtcclxuICBASW5wdXQoKSBkaXNwbGF5T2JqTGluazogKG9iajogVE9iaiwgYWN0aW9uPzogc3RyaW5nKSA9PiAoc3RyaW5nIHwgc3RyaW5nW10pO1xyXG4gIEBJbnB1dCgpIGNhbkRpc3BsYXlPYmo6ICgodXNlcjogYW55LCBvYmo6IFRPYmosIGFjdGlvbj86IHN0cmluZykgPT4gYm9vbGVhbikgfCBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgY2FuRWRpdDogKCh1c2VyOiBhbnksIG9iajogVE9iaikgPT4gYm9vbGVhbikgfCBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjYW5EZWxldGU6ICgodXNlcjogYW55LCBvYmo6IFRPYmopID0+IGJvb2xlYW4pIHwgYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgY2FuQWRkOiAoKHVzZXI6IGFueSkgPT4gYm9vbGVhbikgfCBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgRWRpdG9yOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBJbnB1dCgpIHNlYXJjaFJlcXVlc3Q6IChvYmo/OiBUT2JqIHwgYW55KSA9PiBPYnNlcnZhYmxlPFRPYmpbXT47XHJcbiAgQElucHV0KCkgcG9zdFJlcXVlc3Q6IChvYmo/OiBUT2JqIHwgYW55KSA9PiBPYnNlcnZhYmxlPFRPYmo+O1xyXG4gIEBJbnB1dCgpIGRlbGV0ZVJlcXVlc3Q6IChvYmo/OiBUT2JqIHwgYW55KSA9PiBPYnNlcnZhYmxlPFRPYmpbXT47XHJcbiAgQElucHV0KCkgcHV0UmVxdWVzdDogKG9iaj86IFRPYmogfCBhbnkpID0+IE9ic2VydmFibGU8VE9ialtdPjtcclxuICBASW5wdXQoKSBjb2x1bW5zOiAoKSA9PiBzdHJpbmdbXTtcclxuICBASW5wdXQoKSBnbG93d1NlcnZpY2U6IEdsb3d3U2VydmljZTtcclxuICBASW5wdXQoKSBvYmplY3ROYW1lOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHJpbWFyeUtleTogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgQElucHV0KCkgbWF4cm93czogc3RyaW5nW107XHJcbiAgQElucHV0KCkgbWFuZGF0b3J5UGFyYW1zOiBvYmplY3QgPSB7fTtcclxuICBASW5wdXQoKSBhY3Rpb25zID0gW107XHJcbiAgQElucHV0KCkgZGlhbG9nQ29uZmlnOiBvYmplY3QgPSB7fTtcclxuICBASW5wdXQoKSBmaWxlRmllbGRzOiBzdHJpbmdbXTtcclxuXHJcbiAgY29sdW1uc1RvRGlzcGxheSA9IFtdO1xyXG4gIGRhdGFTb3VyY2U6IE1hdFRhYmxlRGF0YVNvdXJjZTxUT2JqPjtcclxuICBkaXNwbGF5Zm9ybSA9IHRydWU7XHJcbiAgZGlzcGxheXJlc3VsdCA9IGZhbHNlO1xyXG4gIHF1ZXJ5UGFyYW1zOiBhbnkgPSB7fTtcclxuICByZXN1bHRFeGNlcHRpb246IHN0cmluZztcclxuICBjdXJyZW50VXNlcjogYW55O1xyXG4gIGZvcm0yOiBGb3JtR3JvdXA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbiwgcHJpdmF0ZSBhdXRoZW50aWNhdGlvblNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSwgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlKSB7XHJcbiAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzO1xyXG4gICAgdGhpcy5jdXJyZW50VXNlciA9ICh0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5jdXJyZW50VXNlclZhbHVlIGFzIGFueSkuVXNlckluZm87XHJcbiAgICB0aGlzLmZvcm0yID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIF9NYXhSb3dfOiBbbnVsbF1cclxuICAgIH0pO1xyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnNlYXJjaFJlcXVlc3QpIHtcclxuICAgICAgdGhpcy5zZWFyY2hSZXF1ZXN0ID0gdGhpcy5nbG93d1NlcnZpY2VbYHNlYXJjaCR7dGhpcy5vYmplY3ROYW1lfWBdO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLnBvc3RSZXF1ZXN0KSB7XHJcbiAgICAgIHRoaXMucG9zdFJlcXVlc3QgPSB0aGlzLmdsb3d3U2VydmljZVtgcG9zdCR7dGhpcy5vYmplY3ROYW1lfWBdO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmRlbGV0ZVJlcXVlc3QpIHtcclxuICAgICAgdGhpcy5kZWxldGVSZXF1ZXN0ID0gdGhpcy5nbG93d1NlcnZpY2VbYGRlbGV0ZSR7dGhpcy5vYmplY3ROYW1lfWBdO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLnB1dFJlcXVlc3QpIHtcclxuICAgICAgdGhpcy5wdXRSZXF1ZXN0ID0gdGhpcy5nbG93d1NlcnZpY2VbYHB1dCR7dGhpcy5vYmplY3ROYW1lfWBdO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubWF4cm93cz8ubGVuZ3RoID4gMCkgeyB0aGlzLmZvcm0uYWRkQ29udHJvbChcIl9NYXhSb3dfXCIsIG5ldyBGb3JtQ29udHJvbChudWxsKSk7IH1cclxuICB9XHJcbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmZvcm1MYXlvdXQgJiYgdGhpcy5yZXN1bHRMYXlvdXQpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5Zm9ybSA9IGZhbHNlOyB0aGlzLmRpc3BsYXlyZXN1bHQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBTZWFyY2goZGF0YT86IERhdGEpIHtcclxuICAgIHRoaXMuZGlzcGxheXJlc3VsdCA9IHRydWU7XHJcbiAgICB0aGlzLmRpc3BsYXlmb3JtID0gZmFsc2U7XHJcbiAgICB0aGlzLnJlc3VsdEV4Y2VwdGlvbiA9IG51bGw7XHJcblxyXG4gICAgaWYgKGRhdGEpIHtcclxuICAgICAgT2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaChuYW1lID0+IHtcclxuICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zW25hbWVdID0gZGF0YVtuYW1lXTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgT2JqZWN0LmtleXModGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMpLmZvckVhY2gobmFtZSA9PiB7XHJcbiAgICAgIHRoaXMucXVlcnlQYXJhbXNbbmFtZV0gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1tuYW1lXTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICh0aGlzLm1hbmRhdG9yeVBhcmFtcykge1xyXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLm1hbmRhdG9yeVBhcmFtcykuZm9yRWFjaChuYW1lID0+IHtcclxuICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zW25hbWVdID0gdGhpcy5xdWVyeVBhcmFtc1tuYW1lXTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWFyY2hSZXF1ZXN0LmNhbGwodGhpcy5nbG93d1NlcnZpY2UsIHRoaXMucXVlcnlQYXJhbXMpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgdGhpcy5kYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZTxUT2JqPihyKTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuVXBkYXRlVGFibGUoKTtcclxuICAgIH0sXHJcbiAgICAgIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLmRpc3BsYXlyZXN1bHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmRpc3BsYXlmb3JtID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlc3VsdEV4Y2VwdGlvbiA9IGVycm9yO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsZWFuKG9iaikge1xyXG4gICAgZm9yIChjb25zdCBwcm9wTmFtZSBpbiBvYmopIHtcclxuICAgICAgaWYgKG9ialtwcm9wTmFtZV0gPT09IG51bGwgfHwgb2JqW3Byb3BOYW1lXSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgZGVsZXRlIG9ialtwcm9wTmFtZV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VhcmNoKCkge1xyXG4gICAgdGhpcy5xdWVyeVBhcmFtcyA9IHt9O1xyXG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtLnZhbHVlKS5mb3JFYWNoKG5hbWUgPT4ge1xyXG4gICAgICBjb25zdCB2YWwgPSB0aGlzLmZvcm0udmFsdWVbbmFtZV07XHJcbiAgICAgIGlmICh2YWwpIHtcclxuICAgICAgICBpZiAodmFsLmNvbnN0cnVjdG9yLm5hbWUgPT09ICdNb21lbnQnKSB7XHJcbiAgICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zW25hbWVdID0gKHZhbCBhcyBNb21lbnQpLnRvSVNPU3RyaW5nKClcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5xdWVyeVBhcmFtc1tuYW1lXSA9IHZhbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKHRoaXMuZm9ybTIudmFsdWUuX01heFJvd18pIHsgdGhpcy5xdWVyeVBhcmFtcy5fTWF4Um93XyA9IHRoaXMuZm9ybTIudmFsdWUuX01heFJvd187IH1cclxuICAgIHRoaXMuY2xlYW4odGhpcy5xdWVyeVBhcmFtcyk7XHJcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcyh7IGZyb21PYmplY3Q6IHRoaXMucXVlcnlQYXJhbXMgfSk7XHJcbiAgICBjb25zdCBjdXJyZW50c3RhdGUgPSB0aGlzLmxvY2F0aW9uLmdldFN0YXRlKCk7XHJcbiAgICB0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh0aGlzLnJvdXRlci51cmwsIHBhcmFtcy50b1N0cmluZygpKTtcclxuICAgIHRoaXMuU2VhcmNoKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgVXBkYXRlRGF0YVNvdXJjZShyOiBUT2JqW10pIHtcclxuICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8VE9iaj4ocik7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICB0aGlzLlVwZGF0ZVRhYmxlKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgVXBkYXRlVGFibGUoKSB7XHJcbiAgICBpZiAodGhpcy5kYXRhU291cmNlKSB7XHJcbiAgICAgIGlmICghdGhpcy50YWJsZSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCchdGhpcy50YWJsZScpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlc3VsdExheW91dC5jb2x1bW5EZWZzLmZvckVhY2goY29sdW1uRGVmID0+IHRoaXMudGFibGUuYWRkQ29sdW1uRGVmKGNvbHVtbkRlZikpO1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5wYWdpbmF0b3I7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xyXG4gICAgICB0aGlzLmNvbHVtbnNUb0Rpc3BsYXkgPSB0aGlzLmNvbHVtbnMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbkRpc3BsYXlPYmpUaGlzKG9iaiwgYWN0aW9uPykge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmRpc3BsYXlPYmpMaW5rKSB7IHJldHVybiBmYWxzZTsgfVxyXG4gICAgICBpZiAodHlwZW9mIHRoaXMuY2FuRGlzcGxheU9iaiA9PT0gJ2Jvb2xlYW4nKSB7IHJldHVybiB0aGlzLmNhbkRpc3BsYXlPYmo7IH1cclxuICAgICAgcmV0dXJuIHRoaXMuY2FuRGlzcGxheU9iaih0aGlzLmN1cnJlbnRVc2VyLCBvYmosIGFjdGlvbik7XHJcbiAgICB9IGNhdGNoIChleCkge1xyXG4gICAgICBjb25zb2xlLmxvZyhleCk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuICBjYW5BZGRUaGlzKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNhbkFkZCkgeyByZXR1cm4gZmFsc2U7IH1cclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmNhbkFkZCA9PT0gJ2Jvb2xlYW4nKSB7IHJldHVybiB0aGlzLmNhbkFkZDsgfVxyXG4gICAgICByZXR1cm4gdGhpcy5jYW5BZGQodGhpcy5jdXJyZW50VXNlcik7XHJcbiAgICB9IGNhdGNoIChleCkge1xyXG4gICAgICBjb25zb2xlLmxvZyhleCk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FuRWRpdFRoaXMob2JqKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY2FuRWRpdCkgeyByZXR1cm4gZmFsc2U7IH1cclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmNhbkVkaXQgPT09ICdib29sZWFuJykgeyByZXR1cm4gdGhpcy5jYW5FZGl0OyB9XHJcbiAgICAgIHJldHVybiB0aGlzLmNhbkVkaXQodGhpcy5jdXJyZW50VXNlciwgb2JqKTtcclxuICAgIH0gY2F0Y2ggKGV4KSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGV4KTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYW5EZWxldGVUaGlzKG9iaikge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNhbkRlbGV0ZSkgeyByZXR1cm4gZmFsc2U7IH1cclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmNhbkRlbGV0ZSA9PT0gJ2Jvb2xlYW4nKSB7IHJldHVybiB0aGlzLmNhbkRlbGV0ZTsgfVxyXG4gICAgICByZXR1cm4gdGhpcy5jYW5EZWxldGUodGhpcy5jdXJyZW50VXNlciwgb2JqKTtcclxuICAgIH0gY2F0Y2ggKGV4KSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGV4KTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGlzcGxheU9iakxpbmtUaGlzKG9iaiwgYWN0aW9uPykge1xyXG4gICAgaWYgKCF0aGlzLmRpc3BsYXlPYmpMaW5rKSB7IHJldHVybiBudWxsOyB9XHJcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5T2JqTGluayhvYmosIGFjdGlvbik7XHJcbiAgfVxyXG5cclxuXHJcbiAgaXNTdHJpbmcodmFsdWUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHZhbHVlIGluc3RhbmNlb2YgU3RyaW5nO1xyXG4gIH1cclxuICBnZXRQcmltYXJ5S2V5KG9iajogb2JqZWN0IHwgVE9iaik6IG9iamVjdFtdIHtcclxuICAgIGxldCByZXMgPSBbXTtcclxuICAgIGlmICh0aGlzLmlzU3RyaW5nKHRoaXMucHJpbWFyeUtleSkpIHtcclxuICAgICAgY29uc29sZS5sb2coXCJzdHJpbmdcIik7XHJcbiAgICAgIHJlcy5wdXNoKG9ialt0aGlzLnByaW1hcnlLZXkgYXMgc3RyaW5nXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmxvZyhcInN0cmluZ1tdXCIpO1xyXG4gICAgICAodGhpcy5wcmltYXJ5S2V5IGFzIHN0cmluZ1tdKS5mb3JFYWNoKGtleSA9PiByZXMucHVzaChvYmpba2V5XSkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxuICB9XHJcblxyXG4gIF9zYXZlT2JqKG9iajogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHZhciBzdWJqZWN0ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG4gICAgdGhpcy5wb3N0UmVxdWVzdC5jYWxsKHRoaXMuZ2xvd3dTZXJ2aWNlLCBvYmopLnN1YnNjcmliZShcclxuICAgICAgZGF0YSA9PiB7XHJcbiAgICAgICAgY29uc3QgdG1wID0gdGhpcy5kYXRhU291cmNlLmRhdGE7XHJcbiAgICAgICAgdG1wLnB1c2goZGF0YSk7XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0bXA7XHJcbiAgICAgICAgc3ViamVjdC5uZXh0KGRhdGEpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgYWxlcnQoYFVuYWJsZSB0byBhZGQgT2JqZWN0ICR7ZXJyb3Iuc3RhdHVzfSAke2Vycm9yLnN0YXR1c1RleHR9XFxuJHtlcnJvci5NZXNzYWdlfVxcbiR7ZXJyb3IuZXJyb3J9YCk7XHJcbiAgICAgICAgc3ViamVjdC5lcnJvcihlcnJvcik7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICByZXR1cm4gc3ViamVjdDtcclxuICB9XHJcbiAgX3NhdmVGaWxlKGZpbGVGaWVsZDogc3RyaW5nLCBvYmo6IGFueSwgZmlsZTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlLmRhdGEpO1xyXG4gICAgcmV0dXJuIHRoaXMuZ2xvd3dTZXJ2aWNlW2Bwb3N0JHt0aGlzLm9iamVjdE5hbWV9JHtmaWxlRmllbGR9YF0uY2FsbCh0aGlzLmdsb3d3U2VydmljZSwgdGhpcy5nZXRQcmltYXJ5S2V5KG9iaiksIGZvcm1EYXRhKS5waXBlKFxyXG4gICAgICB0YXAoKGV2ZW50OiBIdHRwRXZlbnQ8YW55PikgPT4ge1xyXG4gICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xyXG4gICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzOlxyXG4gICAgICAgICAgICBmaWxlLnByb2dyZXNzID0gTWF0aC5yb3VuZChldmVudC5sb2FkZWQgKiAxMDAgLyAoZXZlbnQudG90YWwgPz8gMSkpO1xyXG4gICAgICAgICAgICBmaWxlLmluUHJvZ3Jlc3MgPSBmaWxlLnByb2dyZXNzICE9PSAxMDA7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlOlxyXG4gICAgICAgICAgICBmaWxlLnByb2dyZXNzID0gMTAwO1xyXG4gICAgICAgICAgICBmaWxlLnN0YXR1cyA9IFwiRG9uZVwiO1xyXG4gICAgICAgICAgICBmaWxlLmluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgZmlsdGVyKChldmVudDogSHR0cEV2ZW50PGFueT4pID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhgZmlsdGVyICR7ZXZlbnQudHlwZX1gKTtcclxuICAgICAgICByZXR1cm4gZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5SZXNwb25zZVxyXG4gICAgICB9KSxcclxuICAgICAgbWFwKChldmVudDogSHR0cFJlc3BvbnNlPGFueT4pID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhgbWFwICR7ZXZlbnQudHlwZX1gKTtcclxuICAgICAgICByZXR1cm4gZXZlbnQuYm9keTtcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGZpbGUuaW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgIGZpbGUuc3RhdHVzID0gXCJFcnJvclwiO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGAke2ZpbGUuZGF0YS5uYW1lfSB1cGxvYWQgZmFpbGVkLmApO1xyXG4gICAgICAgIC8vc3ViamVjdC5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgcmV0dXJuIG9mKGAke2ZpbGUuZGF0YS5uYW1lfSB1cGxvYWQgZmFpbGVkLmApO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIEFkZE9iaigpIHtcclxuICAgIGNvbnN0IGRpYWxvZ0NvbmZpZyA9IG5ldyBNYXREaWFsb2dDb25maWcoKTtcclxuICAgIGRpYWxvZ0NvbmZpZy5kaXNhYmxlQ2xvc2UgPSB0cnVlO1xyXG4gICAgZGlhbG9nQ29uZmlnLmF1dG9Gb2N1cyA9IHRydWU7XHJcbiAgICBkaWFsb2dDb25maWcuY2xvc2VPbk5hdmlnYXRpb24gPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0NvbmZpZykge1xyXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmRpYWxvZ0NvbmZpZykuZm9yRWFjaChcclxuICAgICAgICBuYW1lID0+IHtcclxuICAgICAgICAgIGRpYWxvZ0NvbmZpZ1tuYW1lXSA9IHRoaXMuZGlhbG9nQ29uZmlnW25hbWVdO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGxldCBhcmdzID0ge307XHJcbiAgICBPYmplY3Qua2V5cyh0aGlzLnJvdXRlLnNuYXBzaG90Py5wYXJhbXMpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgYXJnc1trZXldID0gdGhpcy5yb3V0ZS5zbmFwc2hvdD8ucGFyYW1zW2tleV07XHJcbiAgICAgIGRpYWxvZ0NvbmZpZy5kYXRhID0gYXJncztcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgICBjb25zdCBkbGcgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuRWRpdG9yLCBkaWFsb2dDb25maWcpO1xyXG4gICAgZGxnLmNvbXBvbmVudEluc3RhbmNlLmNhbGxiYWNrID0gKFxyXG4gICAgICBkYXRhID0+IHtcclxuICAgICAgICBsZXQgZGF0YWNvcHkgPSB7IC4uLmRhdGEgfTtcclxuICAgICAgICBjb25zdCBmaWxlRmllbGRzID0gKHRoaXMuRWRpdG9yIGFzIGFueSkuZmlsZUZpZWxkcztcclxuICAgICAgICBpZiAoZmlsZUZpZWxkcz8ubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgIC8vIFVuIHNldWwgY2hhbXAsIGlsIHBldXQgw6p0cmUgbXVsdGlwbGVcclxuICAgICAgICAgIGNvbnN0IGZpbGVGaWVsZCA9IGZpbGVGaWVsZHNbMF07XHJcbiAgICAgICAgICBjb25zdCBmaWxlcyA9IGRhdGFjb3B5W2ZpbGVGaWVsZF07XHJcbiAgICAgICAgICBkZWxldGUgZGF0YWNvcHlbZmlsZUZpZWxkXTtcclxuICAgICAgICAgIGNvbnN0IGFsbG9iczogeyBba2V5OiBzdHJpbmddOiBPYnNlcnZhYmxlPGFueT47IH0gPSB7fVxyXG4gICAgICAgICAgZmlsZXMuZm9yRWFjaChmaWxlID0+IHtcclxuICAgICAgICAgICAgaWYgKGZpbGUuc3RhdHV0ICE9PSAnRG9uZScgJiYgZmlsZS5zdGF0dXQgIT09ICdFcnJvcicpIHtcclxuICAgICAgICAgICAgICBjb25zdCBvYnMgPSB0aGlzLl9zYXZlT2JqKGRhdGFjb3B5KS5waXBlKFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKG5ld2RhdGEgPT4gdGhpcy5fc2F2ZUZpbGUoZmlsZUZpZWxkLCBuZXdkYXRhLCBmaWxlKVxyXG4gICAgICAgICAgICAgICAgKSk7XHJcbiAgICAgICAgICAgICAgYWxsb2JzW2ZpbGUubmFtZV0gPSBvYnM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoYWxsb2JzKS5waXBlKHRha2UoMSkpO1xyXG5cclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGVGaWVsZHM/Lmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIC8vIFBsdXNpZXVycyBjaGFtcHMgZmlsZSwgaWwgbmUgcGV1dCB5IGF2b2lyIHF1J3VuZSBzZXVsIGZpY2hpZXIgcGFyIGNoYW1wLlxyXG4gICAgICAgICAgY29uc3QgZmllbGRzID0ge307XHJcbiAgICAgICAgICBmaWxlRmllbGRzLmZvckVhY2goZmYgPT4ge1xyXG4gICAgICAgICAgICBmaWVsZHNbZmZdID0gZGF0YWNvcHlbZmZdO1xyXG4gICAgICAgICAgICBkZWxldGUgZGF0YWNvcHlbZmZdO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fc2F2ZU9iaihkYXRhY29weSkucGlwZShcclxuICAgICAgICAgICAgICBtZXJnZU1hcChuZXdkYXRhID0+IHtcclxuICAgICAgICAgICAgICAgIHZhciBhbGxvYnM6IE9ic2VydmFibGU8YW55PltdID0gW107XHJcbiAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyhmaWVsZHMpLmZvckVhY2goKFtmaWxlRmllbGQsIGZpbGVzXTogW3N0cmluZywgYW55W11dKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChmaWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxsb2JzLnB1c2godGhpcy5fc2F2ZUZpbGUoZmlsZUZpZWxkLCBuZXdkYXRhLCBmaWxlc1swXSkpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvcmtKb2luKGFsbG9icyk7IC8vIFRPRE8gOiBQQVMgVEVSTUlORS4uLiBKQU1BSVMgVVRJTElTRS4uLlxyXG4gICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIEZvcm0gc2FucyBmaWNoaWVyXHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5fc2F2ZU9iaihkYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBEZWxldGVPYmoob2JqKSB7XHJcbiAgICBpZiAoY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIG9iamV0ID8gJykpIHtcclxuICAgICAgdGhpcy5kZWxldGVSZXF1ZXN0LmFwcGx5KHRoaXMuZ2xvd3dTZXJ2aWNlLCB0aGlzLmdldFByaW1hcnlLZXkob2JqKSkuc3Vic2NyaWJlKFxyXG4gICAgICAgIHAgPT4ge1xyXG4gICAgICAgICAgY29uc3QgaSA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmluZGV4T2Yob2JqKTtcclxuICAgICAgICAgIGNvbnN0IHRtcCA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhO1xyXG4gICAgICAgICAgdG1wLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdG1wO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgYWxlcnQoYFVuYWJsZSB0byBkZWxldGUgT2JqZWN0ICR7ZXJyb3Iuc3RhdHVzfSAke2Vycm9yLnN0YXR1c1RleHR9XFxuJHtlcnJvci5NZXNzYWdlfVxcbiR7ZXJyb3IuZXJyb3J9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgRWRpdE9iaihvYmo6IFRPYmopIHtcclxuICAgIGNvbnN0IGRpYWxvZ0NvbmZpZyA9IG5ldyBNYXREaWFsb2dDb25maWcoKTtcclxuICAgIGRpYWxvZ0NvbmZpZy5kaXNhYmxlQ2xvc2UgPSB0cnVlO1xyXG4gICAgZGlhbG9nQ29uZmlnLmF1dG9Gb2N1cyA9IHRydWU7XHJcbiAgICBkaWFsb2dDb25maWcuY2xvc2VPbk5hdmlnYXRpb24gPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0NvbmZpZykge1xyXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmRpYWxvZ0NvbmZpZykuZm9yRWFjaChcclxuICAgICAgICBuYW1lID0+IHtcclxuICAgICAgICAgIGRpYWxvZ0NvbmZpZ1tuYW1lXSA9IHRoaXMuZGlhbG9nQ29uZmlnW25hbWVdO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGRpYWxvZ0NvbmZpZy5kYXRhID0gb2JqO1xyXG4gICAgdGhpcy5kaWFsb2cub3Blbih0aGlzLkVkaXRvciwgZGlhbG9nQ29uZmlnKS5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShcclxuICAgICAgZGF0YSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgIGxldCBhcmdzOiBvYmplY3RbXSA9IHRoaXMuZ2V0UHJpbWFyeUtleShvYmopOyBhcmdzLnB1c2goZGF0YSlcclxuICAgICAgICAgIHRoaXMucHV0UmVxdWVzdC5hcHBseSh0aGlzLmdsb3d3U2VydmljZSwgYXJncykuc3Vic2NyaWJlKHAgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpID0gdGhpcy5kYXRhU291cmNlLmRhdGEuaW5kZXhPZihvYmopO1xyXG4gICAgICAgICAgICBjb25zdCB0bXAgPSB0aGlzLmRhdGFTb3VyY2UuZGF0YTtcclxuICAgICAgICAgICAgdG1wW2ldID0gcDtcclxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0bXA7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yID0+IHtcclxuICAgICAgICBhbGVydChgVW5hYmxlIHRvIHVwZGF0ZSBPYmplY3QgJHtlcnJvci5zdGF0dXN9ICR7ZXJyb3Iuc3RhdHVzVGV4dH1cXG4ke2Vycm9yLk1lc3NhZ2V9XFxuJHtlcnJvci5lcnJvcn1gKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXY+XHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJnbHctaGVhZGVyXCI+PC9uZy1jb250ZW50PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgKm5nSWY9XCJkaXNwbGF5Zm9ybVwiPlxyXG4gICAgPG1hdC1jYXJkPlxyXG4gICAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicmVzdWx0RXhjZXB0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICBVbmFibGUgdG8gcXVlcnkgOiB7e3Jlc3VsdEV4Y2VwdGlvbn19XHJcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJnbHctc2VhcmNoLWZvcm1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJtYXhyb3dzXCIgW2Zvcm1Hcm91cF09XCJmb3JtMlwiPlxyXG4gICAgICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJNYXhSb3dcIiBmb3JtQ29udHJvbE5hbWU9XCJfTWF4Um93X1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbWF4cm93IG9mIG1heHJvd3NcIiBbdmFsdWVdPVwibWF4cm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1heHJvd1wiPnt7bWF4cm93fX0gb2JqZWN0czwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIW1heHJvd1wiPiBEZWZhdWx0PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgIDxtYXQtY2FyZC1hY3Rpb25zPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiIChjbGljayk9XCJvblNlYXJjaCgpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uPnNlYXJjaDwvbWF0LWljb24+XHJcbiAgICAgICAgU2VhcmNoXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cclxuICAgIDwvbWF0LWNhcmQ+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiAqbmdJZj1cImRpc3BsYXlyZXN1bHRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXo4XCIgKm5nSWY9XCJkYXRhU291cmNlOyBlbHNlIFNwaW5uZXJcIj5cclxuICAgICAgICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBtYXRTb3J0PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImFjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhbCBmYS1wbHVzXCIgKGNsaWNrKT1cIkFkZE9iaigpXCIgKm5nSWY9XCJjYW5BZGRUaGlzKClcIj5cclxuICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgb2JqXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYWwgZmEtZXllXCIgW3JvdXRlckxpbmtdPVwiZGlzcGxheU9iakxpbmtUaGlzKG9iailcIiAqbmdJZj1cImNhbkRpc3BsYXlPYmpUaGlzKG9iailcIj5cclxuICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJhY3Rpb24uaWNvblwiIFtyb3V0ZXJMaW5rXT1cImFjdGlvbi5yb3V0ZXJMaW5rRmN0KG9iailcIiAqbmdJZj1cImFjdGlvbi5pY29uLmljb24gJiYgKCFhY3Rpb24uZGlzcGxheSB8fCBhY3Rpb24uZGlzcGxheShvYmosIGFjdGlvbi5uYW1lKSlcIj5cclxuICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJhY3Rpb24uaWNvblwiIFtyb3V0ZXJMaW5rXT1cImFjdGlvbi5yb3V0ZXJMaW5rRmN0KG9iailcIiAqbmdJZj1cIiFhY3Rpb24uaWNvbi5pY29uICYmICghYWN0aW9uLmRpc3BsYXkgfHwgYWN0aW9uLmRpc3BsYXkob2JqLCBhY3Rpb24ubmFtZSkpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFsIGZhLXRyYXNoLWFsdFwiIChjbGljayk9XCJEZWxldGVPYmoob2JqKVwiICpuZ0lmPVwiY2FuRGVsZXRlVGhpcyhvYmopXCI+XHJcbiAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYWwgZmEtcGVuY2lsXCIgKGNsaWNrKT1cIkVkaXRPYmoob2JqKVwiICpuZ0lmPVwiY2FuRWRpdFRoaXMob2JqKVwiPlxyXG4gICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImdsdy1yZXN1bHQtdGFibGVcIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiY29sdW1uc1RvRGlzcGxheVwiPjwvdHI+XHJcbiAgICAgICAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgbXlSb3dEYXRhOyBjb2x1bW5zOiBjb2x1bW5zVG9EaXNwbGF5XCI+PC90cj5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgIDxtYXQtcGFnaW5hdG9yIHBhZ2VTaXplPVwiMTBcIj48L21hdC1wYWdpbmF0b3I+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjU3Bpbm5lcj5cclxuICAgICAgICA8bWF0LXNwaW5uZXI+PC9tYXQtc3Bpbm5lcj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvZGl2PlxyXG4iXX0=
494
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzcGxheS1vYmplY3RzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvQ29tcG9uZW50cy9kaXNwbGF5LW9iamVjdHMvZGlzcGxheS1vYmplY3RzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvQ29tcG9uZW50cy9kaXNwbGF5LW9iamVjdHMvZGlzcGxheS1vYmplY3RzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFVLFNBQVMsRUFBc0ssS0FBSyxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQ25RLE9BQU8sRUFBRSxXQUFXLEVBQTBCLE1BQU0sZ0JBQWdCLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQWdCLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUEwQixFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUU5RSxPQUFPLEVBQWdDLGFBQWEsRUFBRSxVQUFVLEVBQWdCLE1BQU0sc0JBQXNCLENBQUM7QUFHN0csT0FBTyxFQUFhLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSXRFLE9BQU8sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLFFB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c0JBQXJCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXNwbGF5T2JqZWN0c0NvbmZpZ3VyYXRpb24gfSBmcm9tICcuLy4uL2Rpc3BsYXktb2JqZWN0cy1jb25maWd1cmF0aW9uJztcclxuaW1wb3J0IHsgU2VhcmNoRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL3NlYXJjaC1mb3JtL3NlYXJjaC1mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJlZmVyZW5jZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyL3NyYy9yZW5kZXIzL3IzX2FzdCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBPbkluaXQsIFZpZXdDaGlsZCwgQWZ0ZXJWaWV3SW5pdCwgRWxlbWVudFJlZiwgRGlyZWN0aXZlLCBDaGFuZ2VEZXRlY3RvclJlZiwgSW5qZWN0b3IsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBBZnRlckNvbnRlbnRJbml0LCBRdWVyeUxpc3QsIENvbnRlbnRDaGlsZHJlbiwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBJbnB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgTWF0Q29sdW1uRGVmLCBNYXRUYWJsZSwgTWF0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBmb3JrSm9pbiwgb2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vaGVhZGVyL2hlYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSZXN1bHRUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL3Jlc3VsdC10YWJsZS9yZXN1bHQtdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBFdmVudCwgSHR0cEV2ZW50VHlwZSwgSHR0cFBhcmFtcywgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBEYXRhLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ0NvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEdsb3d3U2VydmljZSB9IGZyb20gJy4uLy4uL1NlcnZpY2VzL2dsb3d3LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9nbG93dy1zZWN1cml0eS9TZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgbWFwLCBjYXRjaEVycm9yLCBtZXJnZU1hcCwgdGFwLCBmaWx0ZXIsIHN3aXRjaE1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uIHtcclxuICBpY29uOiBhbnk7XHJcbiAgbmFtZT86IHN0cmluZztcclxuICByb3V0ZXJMaW5rRmN0PzogKG9iaikgPT4gc3RyaW5nW107XHJcbiAgZGlzcGxheT86IChvYmopID0+IGJvb2xlYW47XHJcbn07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2dsdy1kaXNwbGF5LW9iamVjdHMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kaXNwbGF5LW9iamVjdHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Rpc3BsYXktb2JqZWN0cy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaXNwbGF5T2JqZWN0c0NvbXBvbmVudDxUT2JqPiBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcclxuXHJcbiAgQENvbnRlbnRDaGlsZChIZWFkZXJDb21wb25lbnQpIGhlYWRlcjogSGVhZGVyQ29tcG9uZW50O1xyXG4gIEBDb250ZW50Q2hpbGQoU2VhcmNoRm9ybUNvbXBvbmVudCkgZm9ybUxheW91dDogU2VhcmNoRm9ybUNvbXBvbmVudDtcclxuICBAQ29udGVudENoaWxkKFJlc3VsdFRhYmxlQ29tcG9uZW50KSByZXN1bHRMYXlvdXQ6IFJlc3VsdFRhYmxlQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoTWF0VGFibGUsIHsgc3RhdGljOiBmYWxzZSB9KSB0YWJsZTogTWF0VGFibGU8YW55PjtcclxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvciwgeyBzdGF0aWM6IGZhbHNlIH0pIHBhZ2luYXRvcjogTWF0UGFnaW5hdG9yO1xyXG4gIEBWaWV3Q2hpbGQoTWF0U29ydCwgeyBzdGF0aWM6IGZhbHNlIH0pIHNvcnQ6IE1hdFNvcnQ7XHJcblxyXG4gIC8vIGFmdGVyIHRoZSA8bmctY29udGVudD4gaGFzIGJlZW4gaW5pdGlhbGl6ZWQsIHRoZSBjb2x1bW4gZGVmaW5pdGlvbnMgYXJlIGF2YWlsYWJsZS5cclxuICAvLyBBbGwgdGhhdCdzIGxlZnQgaXMgdG8gYWRkIHRoZW0gdG8gdGhlIHRhYmxlIG91cnNlbHZlczpcclxuICBASW5wdXQoKSBjb25maWd1cmF0aW9uOiBEaXNwbGF5T2JqZWN0c0NvbmZpZ3VyYXRpb248VE9iaj47XHJcbiAgQElucHV0KCkgZGlzcGxheU9iakxpbms6IChvYmo6IFRPYmosIGFjdGlvbj86IHN0cmluZykgPT4gKHN0cmluZyB8IHN0cmluZ1tdKTtcclxuICBASW5wdXQoKSBjYW5EaXNwbGF5T2JqOiAoKHVzZXI6IGFueSwgb2JqOiBUT2JqLCBhY3Rpb24/OiBzdHJpbmcpID0+IGJvb2xlYW4pIHwgYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGNhbkVkaXQ6ICgodXNlcjogYW55LCBvYmo6IFRPYmopID0+IGJvb2xlYW4pIHwgYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgY2FuRGVsZXRlOiAoKHVzZXI6IGFueSwgb2JqOiBUT2JqKSA9PiBib29sZWFuKSB8IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGNhbkFkZDogKCh1c2VyOiBhbnkpID0+IGJvb2xlYW4pIHwgYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgZm9ybTogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIEVkaXRvcjogVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoKSBzZWFyY2hSZXF1ZXN0OiAob2JqPzogVE9iaiB8IGFueSkgPT4gT2JzZXJ2YWJsZTxUT2JqW10+O1xyXG4gIEBJbnB1dCgpIHBvc3RSZXF1ZXN0OiAob2JqPzogVE9iaiB8IGFueSkgPT4gT2JzZXJ2YWJsZTxUT2JqPjtcclxuICBASW5wdXQoKSBkZWxldGVSZXF1ZXN0OiAob2JqPzogVE9iaiB8IGFueSkgPT4gT2JzZXJ2YWJsZTxUT2JqW10+O1xyXG4gIEBJbnB1dCgpIHB1dFJlcXVlc3Q6IChvYmo/OiBUT2JqIHwgYW55KSA9PiBPYnNlcnZhYmxlPFRPYmpbXT47XHJcbiAgQElucHV0KCkgY29sdW1uczogKCkgPT4gc3RyaW5nW107XHJcbiAgQElucHV0KCkgZ2xvd3dTZXJ2aWNlOiBHbG93d1NlcnZpY2U7XHJcbiAgQElucHV0KCkgb2JqZWN0TmFtZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHByaW1hcnlLZXk6IHN0cmluZyB8IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpIG1heHJvd3M6IHN0cmluZ1tdO1xyXG4gIEBJbnB1dCgpIG1hbmRhdG9yeVBhcmFtczogb2JqZWN0ID0ge307XHJcbiAgQElucHV0KCkgYWN0aW9ucyA9IFtdO1xyXG4gIEBJbnB1dCgpIGRpYWxvZ0NvbmZpZzogb2JqZWN0ID0ge307XHJcbiAgQElucHV0KCkgZmlsZUZpZWxkczogc3RyaW5nW107XHJcblxyXG4gIGNvbHVtbnNUb0Rpc3BsYXkgPSBbXTtcclxuICBkYXRhU291cmNlOiBNYXRUYWJsZURhdGFTb3VyY2U8VE9iaj47XHJcbiAgZGlzcGxheWZvcm0gPSB0cnVlO1xyXG4gIGRpc3BsYXlyZXN1bHQgPSBmYWxzZTtcclxuICBxdWVyeVBhcmFtczogYW55ID0ge307XHJcbiAgcmVzdWx0RXhjZXB0aW9uOiBzdHJpbmc7XHJcbiAgY3VycmVudFVzZXI6IGFueTtcclxuICBmb3JtMjogRm9ybUdyb3VwO1xyXG4gIGRhdGE6IG9iamVjdDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uLCBwcml2YXRlIGF1dGhlbnRpY2F0aW9uU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLCBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUpIHtcclxuICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXM7XHJcbiAgICB0aGlzLmN1cnJlbnRVc2VyID0gKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUgYXMgYW55KS5Vc2VySW5mbztcclxuICAgIHRoaXMuZm9ybTIgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgX01heFJvd186IFtudWxsXVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuc2VhcmNoUmVxdWVzdCkge1xyXG4gICAgICB0aGlzLnNlYXJjaFJlcXVlc3QgPSB0aGlzLmdsb3d3U2VydmljZVtgc2VhcmNoJHt0aGlzLm9iamVjdE5hbWV9YF07XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMucG9zdFJlcXVlc3QpIHtcclxuICAgICAgdGhpcy5wb3N0UmVxdWVzdCA9IHRoaXMuZ2xvd3dTZXJ2aWNlW2Bwb3N0JHt0aGlzLm9iamVjdE5hbWV9YF07XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuZGVsZXRlUmVxdWVzdCkge1xyXG4gICAgICB0aGlzLmRlbGV0ZVJlcXVlc3QgPSB0aGlzLmdsb3d3U2VydmljZVtgZGVsZXRlJHt0aGlzLm9iamVjdE5hbWV9YF07XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMucHV0UmVxdWVzdCkge1xyXG4gICAgICB0aGlzLnB1dFJlcXVlc3QgPSB0aGlzLmdsb3d3U2VydmljZVtgcHV0JHt0aGlzLm9iamVjdE5hbWV9YF07XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tYXhyb3dzPy5sZW5ndGggPiAwKSB7IHRoaXMuZm9ybS5hZGRDb250cm9sKFwiX01heFJvd19cIiwgbmV3IEZvcm1Db250cm9sKG51bGwpKTsgfVxyXG4gIH1cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZyhgSU5JVCA6IGZyb21MYXlvdXQ6JHt0aGlzLmZvcm1MYXlvdXR9LWRpc3BsYXlmb3JtOiR7dGhpcy5kaXNwbGF5Zm9ybX1gKVxyXG4gICAgaWYgKCF0aGlzLmZvcm1MYXlvdXQgJiYgdGhpcy5yZXN1bHRMYXlvdXQpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5Zm9ybSA9IGZhbHNlOyB0aGlzLmRpc3BsYXlyZXN1bHQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nbG93d1NlcnZpY2UuYmFzZVBhdGhDaGFuZ2Uuc3Vic2NyaWJlKG5ld1VybCA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGBiYXNlUGF0aENoYW5nZSA6IGZyb21MYXlvdXQ6JHt0aGlzLmZvcm1MYXlvdXR9LWRpc3BsYXlmb3JtOiR7dGhpcy5kaXNwbGF5Zm9ybX1gKVxyXG4gICAgICBpZiAoIXRoaXMuZm9ybUxheW91dCAmJiB0aGlzLnJlc3VsdExheW91dCkge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheWZvcm0gPSBmYWxzZTsgdGhpcy5kaXNwbGF5cmVzdWx0ID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMuZGlzcGxheWZvcm0pIHsgdGhpcy5TZWFyY2goKTsgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIFNlYXJjaChkYXRhPzogRGF0YSkge1xyXG4gICAgdGhpcy5kYXRhID0gZGF0YTtcclxuICAgIHRoaXMuZGlzcGxheXJlc3VsdCA9IHRydWU7XHJcbiAgICB0aGlzLmRpc3BsYXlmb3JtID0gZmFsc2U7XHJcbiAgICB0aGlzLnJlc3VsdEV4Y2VwdGlvbiA9IG51bGw7XHJcblxyXG4gICAgaWYgKGRhdGEpIHtcclxuICAgICAgT2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaChuYW1lID0+IHtcclxuICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zW25hbWVdID0gZGF0YVtuYW1lXTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgT2JqZWN0LmtleXModGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXMpLmZvckVhY2gobmFtZSA9PiB7XHJcbiAgICAgIHRoaXMucXVlcnlQYXJhbXNbbmFtZV0gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1tuYW1lXTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmICh0aGlzLm1hbmRhdG9yeVBhcmFtcykge1xyXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLm1hbmRhdG9yeVBhcmFtcykuZm9yRWFjaChuYW1lID0+IHtcclxuICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zW25hbWVdID0gdGhpcy5xdWVyeVBhcmFtc1tuYW1lXTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWFyY2hSZXF1ZXN0LmNhbGwodGhpcy5nbG93d1NlcnZpY2UsIHRoaXMucXVlcnlQYXJhbXMpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgdGhpcy5kYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZTxUT2JqPihyKTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuVXBkYXRlVGFibGUoKTtcclxuICAgIH0sXHJcbiAgICAgIGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLmRpc3BsYXlyZXN1bHQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmRpc3BsYXlmb3JtID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlc3VsdEV4Y2VwdGlvbiA9IGVycm9yO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsZWFuKG9iaikge1xyXG4gICAgZm9yIChjb25zdCBwcm9wTmFtZSBpbiBvYmopIHtcclxuICAgICAgaWYgKG9ialtwcm9wTmFtZV0gPT09IG51bGwgfHwgb2JqW3Byb3BOYW1lXSA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgZGVsZXRlIG9ialtwcm9wTmFtZV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VhcmNoKCkge1xyXG4gICAgdGhpcy5xdWVyeVBhcmFtcyA9IHt9O1xyXG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtLnZhbHVlKS5mb3JFYWNoKG5hbWUgPT4ge1xyXG4gICAgICBjb25zdCB2YWwgPSB0aGlzLmZvcm0udmFsdWVbbmFtZV07XHJcbiAgICAgIGlmICh2YWwpIHtcclxuICAgICAgICBpZiAodmFsLmNvbnN0cnVjdG9yLm5hbWUgPT09ICdNb21lbnQnKSB7XHJcbiAgICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zW25hbWVdID0gKHZhbCBhcyBNb21lbnQpLnRvSVNPU3RyaW5nKClcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5xdWVyeVBhcmFtc1tuYW1lXSA9IHZhbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKHRoaXMuZm9ybTIudmFsdWUuX01heFJvd18pIHsgdGhpcy5xdWVyeVBhcmFtcy5fTWF4Um93XyA9IHRoaXMuZm9ybTIudmFsdWUuX01heFJvd187IH1cclxuICAgIHRoaXMuY2xlYW4odGhpcy5xdWVyeVBhcmFtcyk7XHJcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcyh7IGZyb21PYmplY3Q6IHRoaXMucXVlcnlQYXJhbXMgfSk7XHJcbiAgICBjb25zdCBjdXJyZW50c3RhdGUgPSB0aGlzLmxvY2F0aW9uLmdldFN0YXRlKCk7XHJcbiAgICB0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh0aGlzLnJvdXRlci51cmwsIHBhcmFtcy50b1N0cmluZygpKTtcclxuICAgIHRoaXMuU2VhcmNoKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgVXBkYXRlRGF0YVNvdXJjZShyOiBUT2JqW10pIHtcclxuICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8VE9iaj4ocik7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICB0aGlzLlVwZGF0ZVRhYmxlKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgVXBkYXRlVGFibGUoKSB7XHJcbiAgICBpZiAodGhpcy5kYXRhU291cmNlKSB7XHJcbiAgICAgIGlmICghdGhpcy50YWJsZSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCchdGhpcy50YWJsZScpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlc3VsdExheW91dC5jb2x1bW5EZWZzLmZvckVhY2goY29sdW1uRGVmID0+IHRoaXMudGFibGUuYWRkQ29sdW1uRGVmKGNvbHVtbkRlZikpO1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5wYWdpbmF0b3I7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xyXG4gICAgICB0aGlzLmNvbHVtbnNUb0Rpc3BsYXkgPSB0aGlzLmNvbHVtbnMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbkRpc3BsYXlPYmpUaGlzKG9iaiwgYWN0aW9uPykge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmRpc3BsYXlPYmpMaW5rKSB7IHJldHVybiBmYWxzZTsgfVxyXG4gICAgICBpZiAodHlwZW9mIHRoaXMuY2FuRGlzcGxheU9iaiA9PT0gJ2Jvb2xlYW4nKSB7IHJldHVybiB0aGlzLmNhbkRpc3BsYXlPYmo7IH1cclxuICAgICAgcmV0dXJuIHRoaXMuY2FuRGlzcGxheU9iaih0aGlzLmN1cnJlbnRVc2VyLCBvYmosIGFjdGlvbik7XHJcbiAgICB9IGNhdGNoIChleCkge1xyXG4gICAgICBjb25zb2xlLmxvZyhleCk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuICBjYW5BZGRUaGlzKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNhbkFkZCkgeyByZXR1cm4gZmFsc2U7IH1cclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmNhbkFkZCA9PT0gJ2Jvb2xlYW4nKSB7IHJldHVybiB0aGlzLmNhbkFkZDsgfVxyXG4gICAgICByZXR1cm4gdGhpcy5jYW5BZGQodGhpcy5jdXJyZW50VXNlcik7XHJcbiAgICB9IGNhdGNoIChleCkge1xyXG4gICAgICBjb25zb2xlLmxvZyhleCk7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FuRWRpdFRoaXMob2JqKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMuY2FuRWRpdCkgeyByZXR1cm4gZmFsc2U7IH1cclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmNhbkVkaXQgPT09ICdib29sZWFuJykgeyByZXR1cm4gdGhpcy5jYW5FZGl0OyB9XHJcbiAgICAgIHJldHVybiB0aGlzLmNhbkVkaXQodGhpcy5jdXJyZW50VXNlciwgb2JqKTtcclxuICAgIH0gY2F0Y2ggKGV4KSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGV4KTtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYW5EZWxldGVUaGlzKG9iaikge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCF0aGlzLmNhbkRlbGV0ZSkgeyByZXR1cm4gZmFsc2U7IH1cclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLmNhbkRlbGV0ZSA9PT0gJ2Jvb2xlYW4nKSB7IHJldHVybiB0aGlzLmNhbkRlbGV0ZTsgfVxyXG4gICAgICByZXR1cm4gdGhpcy5jYW5EZWxldGUodGhpcy5jdXJyZW50VXNlciwgb2JqKTtcclxuICAgIH0gY2F0Y2ggKGV4KSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGV4KTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGlzcGxheU9iakxpbmtUaGlzKG9iaiwgYWN0aW9uPykge1xyXG4gICAgaWYgKCF0aGlzLmRpc3BsYXlPYmpMaW5rKSB7IHJldHVybiBudWxsOyB9XHJcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5T2JqTGluayhvYmosIGFjdGlvbik7XHJcbiAgfVxyXG5cclxuXHJcbiAgaXNTdHJpbmcodmFsdWUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHZhbHVlIGluc3RhbmNlb2YgU3RyaW5nO1xyXG4gIH1cclxuICBnZXRQcmltYXJ5S2V5KG9iajogb2JqZWN0IHwgVE9iaik6IG9iamVjdFtdIHtcclxuICAgIGxldCByZXMgPSBbXTtcclxuICAgIGlmICh0aGlzLmlzU3RyaW5nKHRoaXMucHJpbWFyeUtleSkpIHtcclxuICAgICAgY29uc29sZS5sb2coXCJzdHJpbmdcIik7XHJcbiAgICAgIHJlcy5wdXNoKG9ialt0aGlzLnByaW1hcnlLZXkgYXMgc3RyaW5nXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zb2xlLmxvZyhcInN0cmluZ1tdXCIpO1xyXG4gICAgICAodGhpcy5wcmltYXJ5S2V5IGFzIHN0cmluZ1tdKS5mb3JFYWNoKGtleSA9PiByZXMucHVzaChvYmpba2V5XSkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxuICB9XHJcblxyXG4gIF9zYXZlT2JqKG9iajogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHZhciBzdWJqZWN0ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG4gICAgdGhpcy5wb3N0UmVxdWVzdC5jYWxsKHRoaXMuZ2xvd3dTZXJ2aWNlLCBvYmopLnN1YnNjcmliZShcclxuICAgICAgZGF0YSA9PiB7XHJcbiAgICAgICAgY29uc3QgdG1wID0gdGhpcy5kYXRhU291cmNlLmRhdGE7XHJcbiAgICAgICAgdG1wLnB1c2goZGF0YSk7XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0bXA7XHJcbiAgICAgICAgc3ViamVjdC5uZXh0KGRhdGEpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgYWxlcnQoYFVuYWJsZSB0byBhZGQgT2JqZWN0ICR7ZXJyb3Iuc3RhdHVzfSAke2Vycm9yLnN0YXR1c1RleHR9XFxuJHtlcnJvci5NZXNzYWdlfVxcbiR7ZXJyb3IuZXJyb3J9YCk7XHJcbiAgICAgICAgc3ViamVjdC5lcnJvcihlcnJvcik7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICByZXR1cm4gc3ViamVjdDtcclxuICB9XHJcbiAgX3NhdmVGaWxlKGZpbGVGaWVsZDogc3RyaW5nLCBvYmo6IGFueSwgZmlsZTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlLmRhdGEpO1xyXG4gICAgcmV0dXJuIHRoaXMuZ2xvd3dTZXJ2aWNlW2Bwb3N0JHt0aGlzLm9iamVjdE5hbWV9JHtmaWxlRmllbGR9YF0uY2FsbCh0aGlzLmdsb3d3U2VydmljZSwgdGhpcy5nZXRQcmltYXJ5S2V5KG9iaiksIGZvcm1EYXRhKS5waXBlKFxyXG4gICAgICB0YXAoKGV2ZW50OiBIdHRwRXZlbnQ8YW55PikgPT4ge1xyXG4gICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xyXG4gICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzOlxyXG4gICAgICAgICAgICBmaWxlLnByb2dyZXNzID0gTWF0aC5yb3VuZChldmVudC5sb2FkZWQgKiAxMDAgLyAoZXZlbnQudG90YWwgPz8gMSkpO1xyXG4gICAgICAgICAgICBmaWxlLmluUHJvZ3Jlc3MgPSBmaWxlLnByb2dyZXNzICE9PSAxMDA7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlOlxyXG4gICAgICAgICAgICBmaWxlLnByb2dyZXNzID0gMTAwO1xyXG4gICAgICAgICAgICBmaWxlLnN0YXR1cyA9IFwiRG9uZVwiO1xyXG4gICAgICAgICAgICBmaWxlLmluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgZmlsdGVyKChldmVudDogSHR0cEV2ZW50PGFueT4pID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhgZmlsdGVyICR7ZXZlbnQudHlwZX1gKTtcclxuICAgICAgICByZXR1cm4gZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5SZXNwb25zZVxyXG4gICAgICB9KSxcclxuICAgICAgbWFwKChldmVudDogSHR0cFJlc3BvbnNlPGFueT4pID0+IHtcclxuICAgICAgICBjb25zb2xlLmxvZyhgbWFwICR7ZXZlbnQudHlwZX1gKTtcclxuICAgICAgICByZXR1cm4gZXZlbnQuYm9keTtcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGZpbGUuaW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgIGZpbGUuc3RhdHVzID0gXCJFcnJvclwiO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGAke2ZpbGUuZGF0YS5uYW1lfSB1cGxvYWQgZmFpbGVkLmApO1xyXG4gICAgICAgIC8vc3ViamVjdC5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgcmV0dXJuIG9mKGAke2ZpbGUuZGF0YS5uYW1lfSB1cGxvYWQgZmFpbGVkLmApO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIEFkZE9iaigpIHtcclxuICAgIGNvbnN0IGRpYWxvZ0NvbmZpZyA9IG5ldyBNYXREaWFsb2dDb25maWcoKTtcclxuICAgIGRpYWxvZ0NvbmZpZy5kaXNhYmxlQ2xvc2UgPSB0cnVlO1xyXG4gICAgZGlhbG9nQ29uZmlnLmF1dG9Gb2N1cyA9IHRydWU7XHJcbiAgICBkaWFsb2dDb25maWcuY2xvc2VPbk5hdmlnYXRpb24gPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLmRpYWxvZ0NvbmZpZykge1xyXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmRpYWxvZ0NvbmZpZykuZm9yRWFjaChcclxuICAgICAgICBuYW1lID0+IHtcclxuICAgICAgICAgIGRpYWxvZ0NvbmZpZ1tuYW1lXSA9IHRoaXMuZGlhbG9nQ29uZmlnW25hbWVdO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGxldCBhcmdzID0ge307XHJcbiAgICBPYmplY3Qua2V5cyh0aGlzLnJvdXRlLnNuYXBzaG90Py5wYXJhbXMpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgYXJnc1trZXldID0gdGhpcy5yb3V0ZS5zbmFwc2hvdD8ucGFyYW1zW2tleV07XHJcbiAgICAgIGRpYWxvZ0NvbmZpZy5kYXRhID0gYXJncztcclxuICAgIH0pO1xyXG5cclxuXHJcbiAgICBjb25zdCBkbGcgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuRWRpdG9yLCBkaWFsb2dDb25maWcpO1xyXG4gICAgZGxnLmNvbXBvbmVudEluc3RhbmNlLmNhbGxiYWNrID0gKFxyXG4gICAgICBkYXRhID0+IHtcclxuICAgICAgICBsZXQgZGF0YWNvcHkgPSB7IC4uLmRhdGEgfTtcclxuICAgICAgICBjb25zdCBmaWxlRmllbGRzID0gKHRoaXMuRWRpdG9yIGFzIGFueSkuZmlsZUZpZWxkcztcclxuICAgICAgICBpZiAoZmlsZUZpZWxkcz8ubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgIC8vIFVuIHNldWwgY2hhbXAsIGlsIHBldXQgw6p0cmUgbXVsdGlwbGVcclxuICAgICAgICAgIGNvbnN0IGZpbGVGaWVsZCA9IGZpbGVGaWVsZHNbMF07XHJcbiAgICAgICAgICBjb25zdCBmaWxlcyA9IGRhdGFjb3B5W2ZpbGVGaWVsZF07XHJcbiAgICAgICAgICBkZWxldGUgZGF0YWNvcHlbZmlsZUZpZWxkXTtcclxuICAgICAgICAgIGNvbnN0IGFsbG9iczogeyBba2V5OiBzdHJpbmddOiBPYnNlcnZhYmxlPGFueT47IH0gPSB7fVxyXG4gICAgICAgICAgZmlsZXMuZm9yRWFjaChmaWxlID0+IHtcclxuICAgICAgICAgICAgaWYgKGZpbGUuc3RhdHV0ICE9PSAnRG9uZScgJiYgZmlsZS5zdGF0dXQgIT09ICdFcnJvcicpIHtcclxuICAgICAgICAgICAgICBjb25zdCBvYnMgPSB0aGlzLl9zYXZlT2JqKGRhdGFjb3B5KS5waXBlKFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKG5ld2RhdGEgPT4gdGhpcy5fc2F2ZUZpbGUoZmlsZUZpZWxkLCBuZXdkYXRhLCBmaWxlKVxyXG4gICAgICAgICAgICAgICAgKSk7XHJcbiAgICAgICAgICAgICAgYWxsb2JzW2ZpbGUubmFtZV0gPSBvYnM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoYWxsb2JzKS5waXBlKHRha2UoMSkpO1xyXG5cclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGVGaWVsZHM/Lmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIC8vIFBsdXNpZXVycyBjaGFtcHMgZmlsZSwgaWwgbmUgcGV1dCB5IGF2b2lyIHF1J3VuZSBzZXVsIGZpY2hpZXIgcGFyIGNoYW1wLlxyXG4gICAgICAgICAgY29uc3QgZmllbGRzID0ge307XHJcbiAgICAgICAgICBmaWxlRmllbGRzLmZvckVhY2goZmYgPT4ge1xyXG4gICAgICAgICAgICBmaWVsZHNbZmZdID0gZGF0YWNvcHlbZmZdO1xyXG4gICAgICAgICAgICBkZWxldGUgZGF0YWNvcHlbZmZdO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fc2F2ZU9iaihkYXRhY29weSkucGlwZShcclxuICAgICAgICAgICAgICBtZXJnZU1hcChuZXdkYXRhID0+IHtcclxuICAgICAgICAgICAgICAgIHZhciBhbGxvYnM6IE9ic2VydmFibGU8YW55PltdID0gW107XHJcbiAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyhmaWVsZHMpLmZvckVhY2goKFtmaWxlRmllbGQsIGZpbGVzXTogW3N0cmluZywgYW55W11dKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChmaWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxsb2JzLnB1c2godGhpcy5fc2F2ZUZpbGUoZmlsZUZpZWxkLCBuZXdkYXRhLCBmaWxlc1swXSkpO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvcmtKb2luKGFsbG9icyk7IC8vIFRPRE8gOiBQQVMgVEVSTUlORS4uLiBKQU1BSVMgVVRJTElTRS4uLlxyXG4gICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIEZvcm0gc2FucyBmaWNoaWVyXHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5fc2F2ZU9iaihkYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBEZWxldGVPYmoob2JqKSB7XHJcbiAgICBpZiAoY29uZmlybSgnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIG9iamV0ID8gJykpIHtcclxuICAgICAgdGhpcy5kZWxldGVSZXF1ZXN0LmFwcGx5KHRoaXMuZ2xvd3dTZXJ2aWNlLCB0aGlzLmdldFByaW1hcnlLZXkob2JqKSkuc3Vic2NyaWJlKFxyXG4gICAgICAgIHAgPT4ge1xyXG4gICAgICAgICAgY29uc3QgaSA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmluZGV4T2Yob2JqKTtcclxuICAgICAgICAgIGNvbnN0IHRtcCA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhO1xyXG4gICAgICAgICAgdG1wLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdG1wO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgYWxlcnQoYFVuYWJsZSB0byBkZWxldGUgT2JqZWN0ICR7ZXJyb3Iuc3RhdHVzfSAke2Vycm9yLnN0YXR1c1RleHR9XFxuJHtlcnJvci5NZXNzYWdlfVxcbiR7ZXJyb3IuZXJyb3J9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgX3VwZGF0ZU9iaihjdXJyZW50OiBhbnksIG5ld0RhdGE6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBsZXQgYXJnczogb2JqZWN0W10gPSB0aGlzLmdldFByaW1hcnlLZXkoY3VycmVudCk7IGFyZ3MucHVzaChuZXdEYXRhKVxyXG4gICAgdmFyIHN1YmplY3QgPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcbiAgICB0aGlzLnB1dFJlcXVlc3QuYXBwbHkodGhpcy5nbG93d1NlcnZpY2UsIGFyZ3MpLnN1YnNjcmliZShcclxuICAgICAgZGF0YSA9PiB7XHJcbiAgICAgICAgY29uc3QgaSA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmluZGV4T2YoY3VycmVudCk7XHJcbiAgICAgICAgY29uc3QgdG1wID0gdGhpcy5kYXRhU291cmNlLmRhdGE7XHJcbiAgICAgICAgdG1wW2ldID0gZGF0YTtcclxuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRtcDtcclxuICAgICAgICBzdWJqZWN0Lm5leHQoZGF0YSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yID0+IHtcclxuICAgICAgICBhbGVydChgVW5hYmxlIHRvIHVwZGF0ZSBPYmplY3QgJHtlcnJvci5zdGF0dXN9ICR7ZXJyb3Iuc3RhdHVzVGV4dH1cXG4ke2Vycm9yLk1lc3NhZ2V9XFxuJHtlcnJvci5lcnJvcn1gKTtcclxuICAgICAgICBzdWJqZWN0LmVycm9yKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICAgIHJldHVybiBzdWJqZWN0O1xyXG4gIH1cclxuXHJcblxyXG4gIEVkaXRPYmoob2JqOiBUT2JqKSB7XHJcbiAgICBjb25zdCBkaWFsb2dDb25maWcgPSBuZXcgTWF0RGlhbG9nQ29uZmlnKCk7XHJcbiAgICBkaWFsb2dDb25maWcuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcclxuICAgIGRpYWxvZ0NvbmZpZy5hdXRvRm9jdXMgPSB0cnVlO1xyXG4gICAgZGlhbG9nQ29uZmlnLmNsb3NlT25OYXZpZ2F0aW9uID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5kaWFsb2dDb25maWcpIHtcclxuICAgICAgT2JqZWN0LmtleXModGhpcy5kaWFsb2dDb25maWcpLmZvckVhY2goXHJcbiAgICAgICAgbmFtZSA9PiB7XHJcbiAgICAgICAgICBkaWFsb2dDb25maWdbbmFtZV0gPSB0aGlzLmRpYWxvZ0NvbmZpZ1tuYW1lXTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBkaWFsb2dDb25maWcuZGF0YSA9IG9iajtcclxuICAgIGNvbnN0IGRsZyA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5FZGl0b3IsIGRpYWxvZ0NvbmZpZyk7XHJcbiAgICBkbGcuY29tcG9uZW50SW5zdGFuY2UuY2FsbGJhY2sgPSAoXHJcbiAgICAgIGRhdGEgPT4ge1xyXG4gICAgICAgIGxldCBkYXRhY29weSA9IHsgLi4uZGF0YSB9O1xyXG4gICAgICAgIGNvbnN0IGZpbGVGaWVsZHMgPSAodGhpcy5FZGl0b3IgYXMgYW55KS5maWxlRmllbGRzO1xyXG4gICAgICAgIGlmIChmaWxlRmllbGRzPy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgLy8gVW4gc2V1bCBjaGFtcCwgaWwgcGV1dCDDqnRyZSBtdWx0aXBsZVxyXG4gICAgICAgICAgY29uc3QgZmlsZUZpZWxkID0gZmlsZUZpZWxkc1swXTtcclxuICAgICAgICAgIGNvbnN0IGZpbGVzID0gZGF0YWNvcHlbZmlsZUZpZWxkXTtcclxuICAgICAgICAgIGRlbGV0ZSBkYXRhY29weVtmaWxlRmllbGRdO1xyXG4gICAgICAgICAgY29uc3QgYWxsb2JzOiB7IFtrZXk6IHN0cmluZ106IE9ic2VydmFibGU8YW55PjsgfSA9IHt9XHJcbiAgICAgICAgICBmaWxlcy5mb3JFYWNoKGZpbGUgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZmlsZS5zdGF0dXQgIT09ICdEb25lJyAmJiBmaWxlLnN0YXR1dCAhPT0gJ0Vycm9yJykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IG9icyA9IHRoaXMuX3VwZGF0ZU9iaihvYmosIGRhdGFjb3B5KS5waXBlKFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKG5ld2RhdGEgPT4gdGhpcy5fc2F2ZUZpbGUoZmlsZUZpZWxkLCBuZXdkYXRhLCBmaWxlKVxyXG4gICAgICAgICAgICAgICAgKSk7XHJcbiAgICAgICAgICAgICAgYWxsb2JzW2ZpbGUubmFtZV0gPSBvYnM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoYWxsb2JzKS5waXBlKHRha2UoMSkpO1xyXG5cclxuICAgICAgICB9IGVsc2UgaWYgKGZpbGVGaWVsZHM/Lmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIC8vIFBsdXNpZXVycyBjaGFtcHMgZmlsZSwgaWwgbmUgcGV1dCB5IGF2b2lyIHF1J3VuZSBzZXVsIGZpY2hpZXIgcGFyIGNoYW1wLlxyXG4gICAgICAgICAgY29uc3QgZmllbGRzID0ge307XHJcbiAgICAgICAgICBmaWxlRmllbGRzLmZvckVhY2goZmYgPT4ge1xyXG4gICAgICAgICAgICBmaWVsZHNbZmZdID0gZGF0YWNvcHlbZmZdO1xyXG4gICAgICAgICAgICBkZWxldGUgZGF0YWNvcHlbZmZdO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdXBkYXRlT2JqKG9iaiwgZGF0YWNvcHkpLnBpcGUoXHJcbiAgICAgICAgICAgICAgbWVyZ2VNYXAobmV3ZGF0YSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2YXIgYWxsb2JzOiBPYnNlcnZhYmxlPGFueT5bXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoZmllbGRzKS5mb3JFYWNoKChbZmlsZUZpZWxkLCBmaWxlc106IFtzdHJpbmcsIGFueVtdXSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBpZiAoZmlsZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGFsbG9icy5wdXNoKHRoaXMuX3NhdmVGaWxlKGZpbGVGaWVsZCwgbmV3ZGF0YSwgZmlsZXNbMF0pKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIHJldHVybiBmb3JrSm9pbihhbGxvYnMpOyAvLyBUT0RPIDogUEFTIFRFUk1JTkUuLi4gSkFNQUlTIFVUSUxJU0UuLi5cclxuICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyBGb3JtIHNhbnMgZmljaGllclxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZU9iaihvYmosIGRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxkaXY+XHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJnbHctaGVhZGVyXCI+PC9uZy1jb250ZW50PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgKm5nSWY9XCJkaXNwbGF5Zm9ybVwiPlxyXG4gICAgPG1hdC1jYXJkPlxyXG4gICAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicmVzdWx0RXhjZXB0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICBVbmFibGUgdG8gcXVlcnkgOiB7e3Jlc3VsdEV4Y2VwdGlvbn19XHJcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJnbHctc2VhcmNoLWZvcm1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJtYXhyb3dzXCIgW2Zvcm1Hcm91cF09XCJmb3JtMlwiPlxyXG4gICAgICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJNYXhSb3dcIiBmb3JtQ29udHJvbE5hbWU9XCJfTWF4Um93X1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbWF4cm93IG9mIG1heHJvd3NcIiBbdmFsdWVdPVwibWF4cm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1heHJvd1wiPnt7bWF4cm93fX0gb2JqZWN0czwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIW1heHJvd1wiPiBEZWZhdWx0PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgIDxtYXQtY2FyZC1hY3Rpb25zPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjb2xvcj1cImFjY2VudFwiIChjbGljayk9XCJvblNlYXJjaCgpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uPnNlYXJjaDwvbWF0LWljb24+XHJcbiAgICAgICAgU2VhcmNoXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cclxuICAgIDwvbWF0LWNhcmQ+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiAqbmdJZj1cImRpc3BsYXlyZXN1bHRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXo4XCIgKm5nSWY9XCJkYXRhU291cmNlOyBlbHNlIFNwaW5uZXJcIj5cclxuICAgICAgICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBtYXRTb3J0PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImFjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhbCBmYS1wbHVzXCIgKGNsaWNrKT1cIkFkZE9iaigpXCIgKm5nSWY9XCJjYW5BZGRUaGlzKClcIj5cclxuICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgb2JqXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYWwgZmEtZXllXCIgW3JvdXRlckxpbmtdPVwiZGlzcGxheU9iakxpbmtUaGlzKG9iailcIiAqbmdJZj1cImNhbkRpc3BsYXlPYmpUaGlzKG9iailcIj5cclxuICAgICAgICAgIDwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJhY3Rpb24uaWNvblwiIFtyb3V0ZXJMaW5rXT1cImFjdGlvbi5yb3V0ZXJMaW5rRmN0KG9iailcIiAqbmdJZj1cImFjdGlvbi5pY29uLmljb24gJiYgKCFhY3Rpb24uZGlzcGxheSB8fCBhY3Rpb24uZGlzcGxheShvYmosIGFjdGlvbi5uYW1lKSlcIj5cclxuICAgICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJhY3Rpb24uaWNvblwiIFtyb3V0ZXJMaW5rXT1cImFjdGlvbi5yb3V0ZXJMaW5rRmN0KG9iailcIiAqbmdJZj1cIiFhY3Rpb24uaWNvbi5pY29uICYmICghYWN0aW9uLmRpc3BsYXkgfHwgYWN0aW9uLmRpc3BsYXkob2JqLCBhY3Rpb24ubmFtZSkpXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFsIGZhLXRyYXNoLWFsdFwiIChjbGljayk9XCJEZWxldGVPYmoob2JqKVwiICpuZ0lmPVwiY2FuRGVsZXRlVGhpcyhvYmopXCI+XHJcbiAgICAgICAgICA8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYWwgZmEtcGVuY2lsXCIgKGNsaWNrKT1cIkVkaXRPYmoob2JqKVwiICpuZ0lmPVwiY2FuRWRpdFRoaXMob2JqKVwiPlxyXG4gICAgICAgICAgPC9pPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImdsdy1yZXN1bHQtdGFibGVcIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiY29sdW1uc1RvRGlzcGxheVwiPjwvdHI+XHJcbiAgICAgICAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgbXlSb3dEYXRhOyBjb2x1bW5zOiBjb2x1bW5zVG9EaXNwbGF5XCI+PC90cj5cclxuICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgIDxtYXQtcGFnaW5hdG9yIHBhZ2VTaXplPVwiMTBcIj48L21hdC1wYWdpbmF0b3I+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjU3Bpbm5lcj5cclxuICAgICAgICA8bWF0LXNwaW5uZXI+PC9tYXQtc3Bpbm5lcj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -23,19 +23,23 @@ export class MenuListItemComponent {
23
23
  this._expanded = value;
24
24
  }
25
25
  ngOnInit() {
26
- this.navService.currentUrl.subscribe((url) => {
27
- let route = this.item.route;
28
- if (typeof this.item.route === 'function') {
29
- const routefct = this.item.route;
30
- route = routefct.call(this);
31
- }
32
- if (this.item.route && url) {
33
- // console.log(`Checking '/${this.item.route}' against '${url}'`);
34
- //this.expanded = url.indexOf(`/${route}`) === 0;
35
- //this.ariaExpanded = this.expanded;
36
- // console.log(`${this.item.route} is expanded: ${this.expanded}`);
37
- }
26
+ /*
27
+ this.navService.currentUrl.subscribe((url: string) => {
28
+ let route = this.item.route as string;
29
+ if (typeof this.item.route === 'function') {
30
+ const routefct: () => (string | string[]) = this.item.route;
31
+ route = routefct.call(this);
32
+ }
33
+
34
+
35
+ if (this.item.route && url) {
36
+ // console.log(`Checking '/${this.item.route}' against '${url}'`);
37
+ //this.expanded = url.indexOf(`/${route}`) === 0;
38
+ //this.ariaExpanded = this.expanded;
39
+ // console.log(`${this.item.route} is expanded: ${this.expanded}`);
40
+ }
38
41
  });
42
+ */
39
43
  }
40
44
  onItemSelected(item) {
41
45
  /*if (!item.children || !item.children.length) {
@@ -94,4 +98,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
94
98
  }], depth: [{
95
99
  type: Input
96
100
  }] } });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1saXN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2xvd3cvc3JjL2xpYi9Db21wb25lbnRzL21lbnUtbGlzdC1pdGVtL21lbnUtbGlzdC1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvQ29tcG9uZW50cy9tZW51LWxpc3QtaXRlbS9tZW51LWxpc3QtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFJdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0FBZ0JqRixNQUFNLE9BQU8scUJBQXFCO0lBZ0JoQyxZQUFtQixVQUFzQixFQUNoQyxNQUFjO1FBREosZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNoQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBZmYsY0FBUyxHQUFZLEtBQUssQ0FBQztRQVNBLGlCQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQU85RCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQztJQWxCRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQWM7UUFDekIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFjRCxRQUFRO1FBQ04sSUFBSSxDQUFD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YWtDLFlBQVk7c0JBQTlDLFdBQVc7dUJBQUMsb0JBQW9CO2dCQUN4QixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOYXZJdGVtIH0gZnJvbSAnLi4vLi4vTW9kZWxzL25hdi1pdGVtJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTmF2U2VydmljZSB9IGZyb20gJy4uLy4uL1NlcnZpY2VzL25hdi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgYW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2dsb3d3LW1lbnUtbGlzdC1pdGVtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbWVudS1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21lbnUtbGlzdC1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcignaW5kaWNhdG9yUm90YXRlJywgW1xyXG4gICAgICBzdGF0ZSgnY29sbGFwc2VkJywgc3R5bGUoeyB0cmFuc2Zvcm06ICdyb3RhdGUoMGRlZyknIH0pKSxcclxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyB0cmFuc2Zvcm06ICdyb3RhdGUoMTgwZGVnKScgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCdleHBhbmRlZCA8PT4gY29sbGFwc2VkJyxcclxuICAgICAgICBhbmltYXRlKCcyMjVtcyBjdWJpYy1iZXppZXIoMC40LDAuMCwwLjIsMSknKVxyXG4gICAgICApLFxyXG4gICAgXSlcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZW51TGlzdEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBwcml2YXRlIF9leHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGdldCBleHBhbmRlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9leHBhbmRlZDtcclxuICB9XHJcbiAgc2V0IGV4cGFuZGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICBjb25zb2xlLmxvZyhcImNoYW5nZSBleHBhbmRlZFwiKTtcclxuICAgIHRoaXMuX2V4cGFuZGVkID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1leHBhbmRlZCcpIGFyaWFFeHBhbmRlZCA9IHRoaXMuZXhwYW5kZWQ7XHJcbiAgQElucHV0KCkgaXRlbTogTmF2SXRlbTtcclxuICBASW5wdXQoKSBkZXB0aDogbnVtYmVyO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIG5hdlNlcnZpY2U6IE5hdlNlcnZpY2UsXHJcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIpIHtcclxuICAgIGlmICh0aGlzLmRlcHRoID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5kZXB0aCA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMubmF2U2VydmljZS5jdXJyZW50VXJsLnN1YnNjcmliZSgodXJsOiBzdHJpbmcpID0+IHtcclxuICAgICAgbGV0IHJvdXRlID0gdGhpcy5pdGVtLnJvdXRlIGFzIHN0cmluZztcclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLml0ZW0ucm91dGUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICBjb25zdCByb3V0ZWZjdDogKCkgPT4gKHN0cmluZyB8IHN0cmluZ1tdKSA9IHRoaXMuaXRlbS5yb3V0ZTtcclxuICAgICAgICByb3V0ZSA9IHJvdXRlZmN0LmNhbGwodGhpcyk7XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICBpZiAodGhpcy5pdGVtLnJvdXRlICYmIHVybCkge1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBDaGVja2luZyAnLyR7dGhpcy5pdGVtLnJvdXRlfScgYWdhaW5zdCAnJHt1cmx9J2ApO1xyXG4gICAgICAgIC8vdGhpcy5leHBhbmRlZCA9IHVybC5pbmRleE9mKGAvJHtyb3V0ZX1gKSA9PT0gMDtcclxuICAgICAgICAvL3RoaXMuYXJpYUV4cGFuZGVkID0gdGhpcy5leHBhbmRlZDtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhgJHt0aGlzLml0ZW0ucm91dGV9IGlzIGV4cGFuZGVkOiAke3RoaXMuZXhwYW5kZWR9YCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25JdGVtU2VsZWN0ZWQoaXRlbTogTmF2SXRlbSkge1xyXG4gICAgLyppZiAoIWl0ZW0uY2hpbGRyZW4gfHwgIWl0ZW0uY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgaXRlbS5yb3V0ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIGNvbnN0IHJvdXRlZmN0OiAoKSA9PiBzdHJpbmcgPSBpdGVtLnJvdXRlO1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtyb3V0ZWZjdC5jYWxsKHRoaXMpXSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgcm91dGU6IHN0cmluZyA9IGl0ZW0ucm91dGU7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3JvdXRlXSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5uYXZTZXJ2aWNlLmNsb3NlTmF2KCk7XHJcbiAgICB9Ki9cclxuICAgIGlmIChpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZXhwYW5kZWQgPSAhdGhpcy5leHBhbmRlZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzQWN0aXZlKGl0ZW06IE5hdkl0ZW0pIHtcclxuICAgIGxldCByb3V0ZSA9IHRoaXMuaXRlbS5yb3V0ZSBhcyBzdHJpbmc7XHJcbiAgICBpZiAodHlwZW9mIHRoaXMuaXRlbS5yb3V0ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICBjb25zdCByb3V0ZWZjdDogKCkgPT4gc3RyaW5nIHwgc3RyaW5nW10gPSB0aGlzLml0ZW0ucm91dGU7XHJcbiAgICAgIHJvdXRlID0gcm91dGVmY3QuY2FsbCh0aGlzKTtcclxuICAgICAgcmV0dXJuIHJvdXRlID8gdGhpcy5yb3V0ZXIuaXNBY3RpdmUocm91dGUsIHRydWUpIDogZmFsc2VcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJvdXRlckxpbmsoaXRlbTogTmF2SXRlbSkge1xyXG4gICAgbGV0IHJvdXRlID0gdGhpcy5pdGVtLnJvdXRlIGFzIHN0cmluZztcclxuICAgIGlmICh0eXBlb2YgdGhpcy5pdGVtLnJvdXRlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIGNvbnN0IHJvdXRlZmN0OiAoKSA9PiBzdHJpbmcgfCBzdHJpbmdbXSA9IHRoaXMuaXRlbS5yb3V0ZTtcclxuICAgICAgcm91dGUgPSByb3V0ZWZjdC5jYWxsKHRoaXMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJvdXRlO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInRoaXNNZW51XCIgKGNsaWNrKT1cIm9uSXRlbVNlbGVjdGVkKGl0ZW0pXCI+XHJcbiAgICA8YSBtYXQtbGlzdC1pdGVtIFtuZ1N0eWxlXT1cInsncGFkZGluZy1sZWZ0JzogKGRlcHRoICogMTIpICsgJ3B4J31cIiBbcm91dGVyTGlua109XCJyb3V0ZXJMaW5rKGl0ZW0pXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBpc0FjdGl2ZShpdGVtKSwgJ2V4cGFuZGVkJzogZXhwYW5kZWR9XCIgY2xhc3M9XCJtZW51LWxpc3QtaXRlbVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInJvdXRlSWNvblwiPjxpIFtuZ0NsYXNzXT1cIml0ZW0uaWNvblwiIFtuZ1N0eWxlXT1cIml0ZW0uaWNvblN0eWxlXCI+PC9pPjwvbWF0LWljb24+IHt7aXRlbS5kaXNwbGF5TmFtZX19XHJcbiAgICA8L2E+XHJcbiAgICA8c3BhbiBmeEZsZXggKm5nSWY9XCJpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoXCI+XHJcbiAgICA8c3BhbiBmeEZsZXg+PC9zcGFuPlxyXG4gICAgPG1hdC1pY29uIFtAaW5kaWNhdG9yUm90YXRlXT1cImV4cGFuZGVkID8gJ2V4cGFuZGVkJzogJ2NvbGxhcHNlZCdcIiBjbGFzcz1cImV4cGFuZEljb25cIj5cclxuICAgICAgICBleHBhbmRfbW9yZVxyXG4gICAgPC9tYXQtaWNvbj5cclxuICAgIDwvc3Bhbj5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJleHBhbmRlZFwiPlxyXG4gICAgPGdsb3d3LW1lbnUtbGlzdC1pdGVtICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBpdGVtLmNoaWxkcmVuXCIgW2l0ZW1dPVwiY2hpbGRcIiBbZGVwdGhdPVwiZGVwdGgrMVwiPlxyXG4gICAgPC9nbG93dy1tZW51LWxpc3QtaXRlbT5cclxuPC9kaXY+XHJcbiJdfQ==
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1saXN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2xvd3cvc3JjL2xpYi9Db21wb25lbnRzL21lbnUtbGlzdC1pdGVtL21lbnUtbGlzdC1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvQ29tcG9uZW50cy9tZW51LWxpc3QtaXRlbS9tZW51LWxpc3QtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFJdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0FBZ0JqRixNQUFNLE9BQU8scUJBQXFCO0lBZ0JoQyxZQUFtQixVQUFzQixFQUNoQyxNQUFjO1FBREosZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUNoQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBZmYsY0FBUyxHQUFZLEtBQUssQ0FBQztRQVNBLGlCQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQU85RCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQztJQWxCRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQWM7UUFDekIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFjRCxRQUFRO1FBQ047Ozs7Ozs7Ozs7Ozs7Ozs7VUFnQkU7SUFDSixDQUFDO0lBRUQsY0FBYyxDQUFDLElBQWE7UUFDMUI7Ozs7Ozs7OztXQVNHO1FBQ0gsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFhO1FBQ3BCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBZSxDQUFDO1FBQ3RDLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxVQUFVLEVBQUU7WUFDekMsTUFBTSxRQUFRLEdBQTRCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQzFELEtBQUssR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVCLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtTQUN6RDtJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsSUFBYTtRQUN0QixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQWUsQ0FBQztRQUN0QyxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssVUFBVSxFQUFFO1lBQ3pDLE1BQU0sUUFBUSxHQUE0QixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUMxRCxLQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM3QjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7a0hBM0VVLHFCQUFxQjtzR0FBckIscUJBQXFCLDJLQ3BCbEMsMjBCQWVBLHNvQkRLYSxxQkFBcUIsb3BCQVZwQjtRQUNWLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTtZQUN6QixLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztZQUN6RCxVQUFVLENBQUMsd0JBQXdCLEVBQ2pDLE9BQU8sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUM3QztTQUNGLENBQUM7S0FDSDsyRkFFVSxxQkFBcUI7a0JBZGpDLFNBQVM7K0JBQ0Usc0JBQXNCLGNBR3BCO3dCQUNWLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRTs0QkFDekIsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQzs0QkFDeEQsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDOzRCQUN6RCxVQUFVLENBQUMsd0JBQXdCLEVBQ2pDLE9BQU8sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUM3Qzt5QkFDRixDQUFDO3FCQUNIO3NIQWFrQyxZQUFZO3NCQUE5QyxXQUFXO3VCQUFDLG9CQUFvQjtnQkFDeEIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmF2SXRlbSB9IGZyb20gJy4uLy4uL01vZGVscy9uYXYtaXRlbSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE5hdlNlcnZpY2UgfSBmcm9tICcuLi8uLi9TZXJ2aWNlcy9uYXYuc2VydmljZSc7XHJcbmltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdnbG93dy1tZW51LWxpc3QtaXRlbScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21lbnUtbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9tZW51LWxpc3QtaXRlbS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ2luZGljYXRvclJvdGF0ZScsIFtcclxuICAgICAgc3RhdGUoJ2NvbGxhcHNlZCcsIHN0eWxlKHsgdHJhbnNmb3JtOiAncm90YXRlKDBkZWcpJyB9KSksXHJcbiAgICAgIHN0YXRlKCdleHBhbmRlZCcsIHN0eWxlKHsgdHJhbnNmb3JtOiAncm90YXRlKDE4MGRlZyknIH0pKSxcclxuICAgICAgdHJhbnNpdGlvbignZXhwYW5kZWQgPD0+IGNvbGxhcHNlZCcsXHJcbiAgICAgICAgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwwLjAsMC4yLDEpJylcclxuICAgICAgKSxcclxuICAgIF0pXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWVudUxpc3RJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgcHJpdmF0ZSBfZXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBnZXQgZXhwYW5kZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZXhwYW5kZWQ7XHJcbiAgfVxyXG4gIHNldCBleHBhbmRlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgY29uc29sZS5sb2coXCJjaGFuZ2UgZXhwYW5kZWRcIik7XHJcbiAgICB0aGlzLl9leHBhbmRlZCA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZXhwYW5kZWQnKSBhcmlhRXhwYW5kZWQgPSB0aGlzLmV4cGFuZGVkO1xyXG4gIEBJbnB1dCgpIGl0ZW06IE5hdkl0ZW07XHJcbiAgQElucHV0KCkgZGVwdGg6IG51bWJlcjtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuYXZTZXJ2aWNlOiBOYXZTZXJ2aWNlLFxyXG4gICAgcHVibGljIHJvdXRlcjogUm91dGVyKSB7XHJcbiAgICBpZiAodGhpcy5kZXB0aCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuZGVwdGggPSAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvKlxyXG4gICAgdGhpcy5uYXZTZXJ2aWNlLmN1cnJlbnRVcmwuc3Vic2NyaWJlKCh1cmw6IHN0cmluZykgPT4ge1xyXG4gICAgICBsZXQgcm91dGUgPSB0aGlzLml0ZW0ucm91dGUgYXMgc3RyaW5nO1xyXG4gICAgICBpZiAodHlwZW9mIHRoaXMuaXRlbS5yb3V0ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIGNvbnN0IHJvdXRlZmN0OiAoKSA9PiAoc3RyaW5nIHwgc3RyaW5nW10pID0gdGhpcy5pdGVtLnJvdXRlO1xyXG4gICAgICAgIHJvdXRlID0gcm91dGVmY3QuY2FsbCh0aGlzKTtcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIGlmICh0aGlzLml0ZW0ucm91dGUgJiYgdXJsKSB7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coYENoZWNraW5nICcvJHt0aGlzLml0ZW0ucm91dGV9JyBhZ2FpbnN0ICcke3VybH0nYCk7XHJcbiAgICAgICAgLy90aGlzLmV4cGFuZGVkID0gdXJsLmluZGV4T2YoYC8ke3JvdXRlfWApID09PSAwO1xyXG4gICAgICAgIC8vdGhpcy5hcmlhRXhwYW5kZWQgPSB0aGlzLmV4cGFuZGVkO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGAke3RoaXMuaXRlbS5yb3V0ZX0gaXMgZXhwYW5kZWQ6ICR7dGhpcy5leHBhbmRlZH1gKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAqL1xyXG4gIH1cclxuXHJcbiAgb25JdGVtU2VsZWN0ZWQoaXRlbTogTmF2SXRlbSkge1xyXG4gICAgLyppZiAoIWl0ZW0uY2hpbGRyZW4gfHwgIWl0ZW0uY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgaXRlbS5yb3V0ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIGNvbnN0IHJvdXRlZmN0OiAoKSA9PiBzdHJpbmcgPSBpdGVtLnJvdXRlO1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtyb3V0ZWZjdC5jYWxsKHRoaXMpXSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgcm91dGU6IHN0cmluZyA9IGl0ZW0ucm91dGU7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3JvdXRlXSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5uYXZTZXJ2aWNlLmNsb3NlTmF2KCk7XHJcbiAgICB9Ki9cclxuICAgIGlmIChpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZXhwYW5kZWQgPSAhdGhpcy5leHBhbmRlZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzQWN0aXZlKGl0ZW06IE5hdkl0ZW0pIHtcclxuICAgIGxldCByb3V0ZSA9IHRoaXMuaXRlbS5yb3V0ZSBhcyBzdHJpbmc7XHJcbiAgICBpZiAodHlwZW9mIHRoaXMuaXRlbS5yb3V0ZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICBjb25zdCByb3V0ZWZjdDogKCkgPT4gc3RyaW5nIHwgc3RyaW5nW10gPSB0aGlzLml0ZW0ucm91dGU7XHJcbiAgICAgIHJvdXRlID0gcm91dGVmY3QuY2FsbCh0aGlzKTtcclxuICAgICAgcmV0dXJuIHJvdXRlID8gdGhpcy5yb3V0ZXIuaXNBY3RpdmUocm91dGUsIHRydWUpIDogZmFsc2VcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJvdXRlckxpbmsoaXRlbTogTmF2SXRlbSkge1xyXG4gICAgbGV0IHJvdXRlID0gdGhpcy5pdGVtLnJvdXRlIGFzIHN0cmluZztcclxuICAgIGlmICh0eXBlb2YgdGhpcy5pdGVtLnJvdXRlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIGNvbnN0IHJvdXRlZmN0OiAoKSA9PiBzdHJpbmcgfCBzdHJpbmdbXSA9IHRoaXMuaXRlbS5yb3V0ZTtcclxuICAgICAgcm91dGUgPSByb3V0ZWZjdC5jYWxsKHRoaXMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJvdXRlO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInRoaXNNZW51XCIgKGNsaWNrKT1cIm9uSXRlbVNlbGVjdGVkKGl0ZW0pXCI+XHJcbiAgICA8YSBtYXQtbGlzdC1pdGVtIFtuZ1N0eWxlXT1cInsncGFkZGluZy1sZWZ0JzogKGRlcHRoICogMTIpICsgJ3B4J31cIiBbcm91dGVyTGlua109XCJyb3V0ZXJMaW5rKGl0ZW0pXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBpc0FjdGl2ZShpdGVtKSwgJ2V4cGFuZGVkJzogZXhwYW5kZWR9XCIgY2xhc3M9XCJtZW51LWxpc3QtaXRlbVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInJvdXRlSWNvblwiPjxpIFtuZ0NsYXNzXT1cIml0ZW0uaWNvblwiIFtuZ1N0eWxlXT1cIml0ZW0uaWNvblN0eWxlXCI+PC9pPjwvbWF0LWljb24+IHt7aXRlbS5kaXNwbGF5TmFtZX19XHJcbiAgICA8L2E+XHJcbiAgICA8c3BhbiBmeEZsZXggKm5nSWY9XCJpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoXCI+XHJcbiAgICA8c3BhbiBmeEZsZXg+PC9zcGFuPlxyXG4gICAgPG1hdC1pY29uIFtAaW5kaWNhdG9yUm90YXRlXT1cImV4cGFuZGVkID8gJ2V4cGFuZGVkJzogJ2NvbGxhcHNlZCdcIiBjbGFzcz1cImV4cGFuZEljb25cIj5cclxuICAgICAgICBleHBhbmRfbW9yZVxyXG4gICAgPC9tYXQtaWNvbj5cclxuICAgIDwvc3Bhbj5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJleHBhbmRlZFwiPlxyXG4gICAgPGdsb3d3LW1lbnUtbGlzdC1pdGVtICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBpdGVtLmNoaWxkcmVuXCIgW2l0ZW1dPVwiY2hpbGRcIiBbZGVwdGhdPVwiZGVwdGgrMVwiPlxyXG4gICAgPC9nbG93dy1tZW51LWxpc3QtaXRlbT5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -1,21 +1,36 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  import { Subject } from 'rxjs';
3
- import { HttpParams } from '@angular/common/http';
3
+ import { HttpClient, HttpParams } from '@angular/common/http';
4
+ import { PlatformLocation } from '@angular/common';
5
+ import { Location } from '@angular/common';
4
6
  export const API_SERVER_URL = new InjectionToken('ApiServerUrl.config');
5
7
  export const GLOWW_APPLI = new InjectionToken('GlowwAppli.config');
6
8
  // @Injectable({
7
9
  // providedIn: 'root'
8
10
  // })
9
11
  export class GlowwService {
10
- constructor(http, BasePath, ApiServerUrl, platformLocation) {
11
- this.platformLocation = platformLocation;
12
+ constructor(_injector) {
13
+ this._injector = _injector;
12
14
  this.InternalBasePath = '???';
13
15
  this.basePathChange = new Subject();
14
16
  this.baseUrl = '/';
15
- this.baseHref = platformLocation.getBaseHrefFromDOM();
16
- this.InternalBasePath = BasePath;
17
- if (ApiServerUrl) {
18
- this.baseUrl = ApiServerUrl;
17
+ this.location = _injector.get(Location);
18
+ this.http = _injector.get(HttpClient);
19
+ this.platformLocation = _injector.get(PlatformLocation);
20
+ try {
21
+ this.ApiServerUrl = _injector.get(API_SERVER_URL);
22
+ }
23
+ catch { }
24
+ try {
25
+ this.BasePath = _injector.get(GLOWW_APPLI);
26
+ }
27
+ catch { }
28
+ this.BasePath = this.BasePath ?? 'GlowwApi';
29
+ //@Optional() @Inject(API_SERVER_URL) apiServerUrl: string, @Optional() @Inject(GLOWW_APPLI) glowwAppli: string
30
+ this.baseHref = this.platformLocation.getBaseHrefFromDOM();
31
+ this.InternalBasePath = this.BasePath;
32
+ if (this.ApiServerUrl) {
33
+ this.baseUrl = this.ApiServerUrl;
19
34
  if (!this.baseUrl.endsWith('/')) {
20
35
  this.baseUrl += '/';
21
36
  }
@@ -25,8 +40,15 @@ export class GlowwService {
25
40
  return this.InternalBasePath;
26
41
  }
27
42
  set basePath(value) {
43
+ //alert(`setBasePath ${value}`)
44
+ var oldUrl = this.location.path();
45
+ var newUrl = oldUrl.replace(`/${this.InternalBasePath}/`, `/${value}/`);
46
+ //alert(`GlowwService setBasePath (${this.InternalBasePath},${value}) ${oldUrl} -> ${newUrl}`);
47
+ if (oldUrl !== newUrl) {
48
+ this.location.go(newUrl);
49
+ this.basePathChange.next(newUrl);
50
+ }
28
51
  this.InternalBasePath = value;
29
- this.basePathChange.next(value);
30
52
  }
31
53
  getParams(obj) {
32
54
  let params = new HttpParams();
@@ -41,4 +63,4 @@ export class GlowwService {
41
63
  return params;
42
64
  }
43
65
  }
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvd3cuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvU2VydmljZXMvZ2xvd3cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSTlELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBUyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ2hGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxJQUFJLGNBQWMsQ0FBUyxtQkFBbUIsQ0FBQyxDQUFDO0FBQzNFLGdCQUFnQjtBQUNoQix1QkFBdUI7QUFDdkIsS0FBSztBQUNMLE1BQU0sT0FBTyxZQUFZO0lBWXZCLFlBQVksSUFBZ0IsRUFBRSxRQUFnQixFQUFFLFlBQW9CLEVBQVUsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFWekcscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLG1CQUFjLEdBQW9CLElBQUksT0FBTyxFQUFVLENBQUM7UUFRakQsWUFBTyxHQUFHLEdBQUcsQ0FBQztRQUVuQixJQUFJLENBQUMsUUFBUSxHQUFHLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDdEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQztRQUNqQyxJQUFJLFlBQVksRUFBRTtZQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDO1lBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUFFLElBQUksQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDO2FBQUU7U0FBRTtJQUM5RyxDQUFDO0lBWkQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFDRCxJQUFXLFFBQVEsQ0FBQyxLQUFhO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQU9NLFNBQVMsQ0FBQyxHQUFRO1FBQ3ZCLElBQUksTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUFFLE9BQU8sTUFBTSxDQUFDO1NBQUU7UUFDNUIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDM0IsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ1YsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2FBQ3pEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IFBsYXRmb3JtTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuXHJcbmV4cG9ydCBjb25zdCBBUElfU0VSVkVSX1VSTCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdBcGlTZXJ2ZXJVcmwuY29uZmlnJyk7XHJcbmV4cG9ydCBjb25zdCBHTE9XV19BUFBMSSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdHbG93d0FwcGxpLmNvbmZpZycpO1xyXG4vLyBASW5qZWN0YWJsZSh7XHJcbi8vICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbi8vIH0pXHJcbmV4cG9ydCBjbGFzcyBHbG93d1NlcnZpY2Uge1xyXG4gIHB1YmxpYyBiYXNlSHJlZjogc3RyaW5nO1xyXG4gIHB1YmxpYyBJbnRlcm5hbEJhc2VQYXRoID0gJz8/Pyc7XHJcbiAgYmFzZVBhdGhDaGFuZ2U6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuICBwdWJsaWMgZ2V0IGJhc2VQYXRoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuSW50ZXJuYWxCYXNlUGF0aDtcclxuICB9XHJcbiAgcHVibGljIHNldCBiYXNlUGF0aCh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLkludGVybmFsQmFzZVBhdGggPSB2YWx1ZTtcclxuICAgIHRoaXMuYmFzZVBhdGhDaGFuZ2UubmV4dCh2YWx1ZSk7XHJcbiAgfVxyXG4gIHB1YmxpYyBiYXNlVXJsID0gJy8nO1xyXG4gIGNvbnN0cnVjdG9yKGh0dHA6IEh0dHBDbGllbnQsIEJhc2VQYXRoOiBzdHJpbmcsIEFwaVNlcnZlclVybDogc3RyaW5nLCBwcml2YXRlIHBsYXRmb3JtTG9jYXRpb246IFBsYXRmb3JtTG9jYXRpb24pIHtcclxuICAgIHRoaXMuYmFzZUhyZWYgPSBwbGF0Zm9ybUxvY2F0aW9uLmdldEJhc2VIcmVmRnJvbURPTSgpO1xyXG4gICAgdGhpcy5JbnRlcm5hbEJhc2VQYXRoID0gQmFzZVBhdGg7XHJcbiAgICBpZiAoQXBpU2VydmVyVXJsKSB7IHRoaXMuYmFzZVVybCA9IEFwaVNlcnZlclVybDsgaWYgKCF0aGlzLmJhc2VVcmwuZW5kc1dpdGgoJy8nKSkgeyB0aGlzLmJhc2VVcmwgKz0gJy8nOyB9IH1cclxuICB9XHJcbiAgcHVibGljIGdldFBhcmFtcyhvYmo6IGFueSkge1xyXG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICBpZiAoIW9iaikgeyByZXR1cm4gcGFyYW1zOyB9XHJcbiAgICBPYmplY3Qua2V5cyhvYmopLmZvckVhY2gocCA9PiB7XHJcbiAgICAgIGlmIChvYmpbcF0pIHtcclxuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKHAudG9TdHJpbmcoKSwgb2JqW3BdLnRvU3RyaW5nKCkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBwYXJhbXM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvd3cuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dsb3d3L3NyYy9saWIvU2VydmljZXMvZ2xvd3cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsY0FBYyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0MsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksY0FBYyxDQUFTLHFCQUFxQixDQUFDLENBQUM7QUFDaEYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFTLG1CQUFtQixDQUFDLENBQUM7QUFDM0UsZ0JBQWdCO0FBQ2hCLHVCQUF1QjtBQUN2QixLQUFLO0FBQ0wsTUFBTSxPQUFPLFlBQVk7SUF3QnZCLFlBQW9CLFNBQW1CO1FBQW5CLGNBQVMsR0FBVCxTQUFTLENBQVU7UUF0QmhDLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUNoQyxtQkFBYyxHQUFvQixJQUFJLE9BQU8sRUFBVSxDQUFDO1FBZWpELFlBQU8sR0FBRyxHQUFHLENBQUM7UUFPbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3hELElBQUk7WUFBRSxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7U0FBRTtRQUFDLE1BQU0sR0FBRztRQUNwRSxJQUFJO1lBQUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1NBQUU7UUFBQyxNQUFNLEdBQUc7UUFBQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksVUFBVSxDQUFDO1FBRXpHLCtHQUErRztRQUMvRyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3RDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFBRSxJQUFJLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQzthQUFFO1NBQUU7SUFDeEgsQ0FBQztJQS9CRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQUNELElBQVcsUUFBUSxDQUFDLEtBQWE7UUFDL0IsK0JBQStCO1FBQy9CLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEMsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUN4RSwrRkFBK0Y7UUFDL0YsSUFBSSxNQUFNLEtBQUssTUFBTSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBbUJNLFNBQVMsQ0FBQyxHQUFRO1FBQ3ZCLElBQUksTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUFFLE9BQU8sTUFBTSxDQUFDO1NBQUU7UUFDNUIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDM0IsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ1YsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2FBQ3pEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBQbGF0Zm9ybUxvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuZXhwb3J0IGNvbnN0IEFQSV9TRVJWRVJfVVJMID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0FwaVNlcnZlclVybC5jb25maWcnKTtcclxuZXhwb3J0IGNvbnN0IEdMT1dXX0FQUExJID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0dsb3d3QXBwbGkuY29uZmlnJyk7XHJcbi8vIEBJbmplY3RhYmxlKHtcclxuLy8gICBwcm92aWRlZEluOiAncm9vdCdcclxuLy8gfSlcclxuZXhwb3J0IGNsYXNzIEdsb3d3U2VydmljZSB7XHJcbiAgcHVibGljIGJhc2VIcmVmOiBzdHJpbmc7XHJcbiAgcHVibGljIEludGVybmFsQmFzZVBhdGggPSAnPz8/JztcclxuICBiYXNlUGF0aENoYW5nZTogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xyXG4gIHB1YmxpYyBnZXQgYmFzZVBhdGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5JbnRlcm5hbEJhc2VQYXRoO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGJhc2VQYXRoKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIC8vYWxlcnQoYHNldEJhc2VQYXRoICR7dmFsdWV9YClcclxuICAgIHZhciBvbGRVcmwgPSB0aGlzLmxvY2F0aW9uLnBhdGgoKTtcclxuICAgIHZhciBuZXdVcmwgPSBvbGRVcmwucmVwbGFjZShgLyR7dGhpcy5JbnRlcm5hbEJhc2VQYXRofS9gLCBgLyR7dmFsdWV9L2ApO1xyXG4gICAgLy9hbGVydChgR2xvd3dTZXJ2aWNlIHNldEJhc2VQYXRoICgke3RoaXMuSW50ZXJuYWxCYXNlUGF0aH0sJHt2YWx1ZX0pICR7b2xkVXJsfSAtPiAke25ld1VybH1gKTtcclxuICAgIGlmIChvbGRVcmwgIT09IG5ld1VybCkge1xyXG4gICAgICB0aGlzLmxvY2F0aW9uLmdvKG5ld1VybCk7XHJcbiAgICAgIHRoaXMuYmFzZVBhdGhDaGFuZ2UubmV4dChuZXdVcmwpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5JbnRlcm5hbEJhc2VQYXRoID0gdmFsdWU7XHJcbiAgfVxyXG4gIHB1YmxpYyBiYXNlVXJsID0gJy8nO1xyXG4gIHByb3RlY3RlZCBodHRwOiBIdHRwQ2xpZW50O1xyXG4gIHByb3RlY3RlZCBCYXNlUGF0aDogc3RyaW5nO1xyXG4gIHByb3RlY3RlZCBBcGlTZXJ2ZXJVcmw6IHN0cmluZztcclxuICBwcm90ZWN0ZWQgcGxhdGZvcm1Mb2NhdGlvbjogUGxhdGZvcm1Mb2NhdGlvbjtcclxuICBwcm90ZWN0ZWQgbG9jYXRpb246IExvY2F0aW9uXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICB0aGlzLmxvY2F0aW9uID0gX2luamVjdG9yLmdldChMb2NhdGlvbik7XHJcbiAgICB0aGlzLmh0dHAgPSBfaW5qZWN0b3IuZ2V0KEh0dHBDbGllbnQpO1xyXG4gICAgdGhpcy5wbGF0Zm9ybUxvY2F0aW9uID0gX2luamVjdG9yLmdldChQbGF0Zm9ybUxvY2F0aW9uKTtcclxuICAgIHRyeSB7IHRoaXMuQXBpU2VydmVyVXJsID0gX2luamVjdG9yLmdldChBUElfU0VSVkVSX1VSTCk7IH0gY2F0Y2ggeyB9XHJcbiAgICB0cnkgeyB0aGlzLkJhc2VQYXRoID0gX2luamVjdG9yLmdldChHTE9XV19BUFBMSSkgfSBjYXRjaCB7IH0gdGhpcy5CYXNlUGF0aCA9IHRoaXMuQmFzZVBhdGggPz8gJ0dsb3d3QXBpJztcclxuXHJcbiAgICAvL0BPcHRpb25hbCgpIEBJbmplY3QoQVBJX1NFUlZFUl9VUkwpIGFwaVNlcnZlclVybDogc3RyaW5nLCBAT3B0aW9uYWwoKSBASW5qZWN0KEdMT1dXX0FQUExJKSBnbG93d0FwcGxpOiBzdHJpbmdcclxuICAgIHRoaXMuYmFzZUhyZWYgPSB0aGlzLnBsYXRmb3JtTG9jYXRpb24uZ2V0QmFzZUhyZWZGcm9tRE9NKCk7XHJcbiAgICB0aGlzLkludGVybmFsQmFzZVBhdGggPSB0aGlzLkJhc2VQYXRoO1xyXG4gICAgaWYgKHRoaXMuQXBpU2VydmVyVXJsKSB7IHRoaXMuYmFzZVVybCA9IHRoaXMuQXBpU2VydmVyVXJsOyBpZiAoIXRoaXMuYmFzZVVybC5lbmRzV2l0aCgnLycpKSB7IHRoaXMuYmFzZVVybCArPSAnLyc7IH0gfVxyXG4gIH1cclxuICBwdWJsaWMgZ2V0UGFyYW1zKG9iajogYW55KSB7XHJcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgIGlmICghb2JqKSB7IHJldHVybiBwYXJhbXM7IH1cclxuICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChwID0+IHtcclxuICAgICAgaWYgKG9ialtwXSkge1xyXG4gICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQocC50b1N0cmluZygpLCBvYmpbcF0udG9TdHJpbmcoKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHBhcmFtcztcclxuICB9XHJcbn1cclxuIl19