@smartbit4all/ng-client 3.3.178 → 3.3.180

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.
@@ -30,6 +30,20 @@ export class SmartformComponent {
30
30
  }
31
31
  this.onBlurSubject = new SmartSubject(this._destroy$);
32
32
  }
33
+ // ngAfterViewInit(): void {
34
+ // if (this.smartWidgetsQL) {
35
+ // this.handleQueryList(this.smartWidgetsQL, (widget) => {
36
+ // // ???
37
+ // });
38
+ // }
39
+ // }
40
+ // // TODO this is a duplicate from SmartFormApiClient -> move it to a utility
41
+ // protected handleQueryList<T>(ql: QueryList<T>, handler: (el: T) => void) {
42
+ // ql.forEach((el) => handler(el));
43
+ // ql.changes
44
+ // .pipe(takeUntil(this._destroy$))
45
+ // .subscribe((list) => (list as QueryList<T>).forEach((el) => handler(el)));
46
+ // }
33
47
  refresh() {
34
48
  this.service.setValuesFromModel();
35
49
  }
@@ -50,9 +64,33 @@ export class SmartformComponent {
50
64
  this.form = this.service.toFormGroup();
51
65
  if (this.smartForm.translateService) {
52
66
  this.smartForm.translateService.onLangChange.pipe(takeUntil(this._destroy$)).subscribe(() => {
53
- this.service.translateWidgets(this.smartForm.widgets);
67
+ this.translateWidgets(this.smartForm.widgets);
54
68
  });
55
- this.service.translateWidgets(this.smartForm.widgets);
69
+ this.translateWidgets(this.smartForm.widgets);
70
+ }
71
+ }
72
+ async translateWidgets(widgets) {
73
+ await this.service.translateWidgets(this.smartForm.widgets);
74
+ this.markAllWidgetsForChangeDetection();
75
+ }
76
+ markAllWidgetsForChangeDetection() {
77
+ this.getAllSmartWidgets().forEach((widget) => widget.changeDetector.markForCheck());
78
+ }
79
+ getAllSmartWidgets() {
80
+ const result = [];
81
+ this.smartWidgetsQL?.forEach((widget) => {
82
+ result.push(...this.getChildWidgets(widget));
83
+ });
84
+ return result;
85
+ }
86
+ getChildWidgets(widget) {
87
+ if (widget.widgetInstance.type == SmartFormWidgetType.CONTAINER) {
88
+ const result = [];
89
+ widget.childrenWidgetsQL?.forEach((child) => result.push(...this.getChildWidgets(child)));
90
+ return result;
91
+ }
92
+ else {
93
+ return [widget];
56
94
  }
57
95
  }
58
96
  ngOnDestroy() {
@@ -137,4 +175,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
137
175
  type: ViewChildren,
138
176
  args: [SmartformwidgetComponent]
139
177
  }] } });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWZvcm0vc21hcnRmb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWZvcm0vc21hcnRmb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQU1MLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR3pELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDOzs7Ozs7QUFTL0YsTUFBTSxPQUFPLGtCQUFrQjtJQWlCN0IsWUFBb0IsT0FBeUI7UUFBekIsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFoQnJDLGNBQVMsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUtqRCxvQkFBZSxHQUEyQixFQUFFLENBQUM7UUFFN0MsNkJBQXdCLEdBQXNDLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUkvRixjQUFTLEdBQUcsd0JBQXdCLENBQUM7SUFLVyxDQUFDO0lBQ2pELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDbkQsSUFBSSxDQUFD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QVEsRUFBRTtnQkFDWixPQUFPLFFBQVEsQ0FBQzthQUNqQjtTQUNGO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDOzsrR0E3SVUsa0JBQWtCO21HQUFsQixrQkFBa0Isd0VBRmxCLENBQUMsZ0JBQWdCLENBQUMsNkRBZ0JmLHdCQUF3QixxRUN6Q3hDLDgwQkFvQkE7MkZET2Esa0JBQWtCO2tCQU45QixTQUFTOytCQUNFLFdBQVcsYUFHVixDQUFDLGdCQUFnQixDQUFDO3VHQUtwQixTQUFTO3NCQUFqQixLQUFLO2dCQVlOLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBRdWVyeUxpc3QsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbiwgU21hcnRGb3JtV2lkZ2V0VHlwZSB9IGZyb20gJy4vYXBpJztcclxuaW1wb3J0IHsgU21hcnRGb3JtU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvc21hcnRmb3JtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTbWFydEZvcm0sIFNtYXJ0Rm9ybUludmFsaWRGaWVsZHMsIFNvcGhpc3RpY2F0ZWRWYWx1ZUNoYW5nZSB9IGZyb20gJy4vc21hcnRmb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgU21hcnRTdWJqZWN0IH0gZnJvbSAnLi4vc21hcnQtc3ViamVjdC9wcm9qZWN0cyc7XHJcbi8vIGltcG9ydCB7IFVpQWN0aW9uVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4uL3ZpZXctY29udGV4dC9zbWFydC11aS1hY3Rpb24vdWktYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU21hcnRGb3JtV2lkZ2V0IH0gZnJvbSAnLi9zbWFydGZvcm0uZm9ybS1tb2RlbCc7XHJcbmltcG9ydCB7IFNtYXJ0Zm9ybXdpZGdldENvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0cy9zbWFydGZvcm13aWRnZXQvc21hcnRmb3Jtd2lkZ2V0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVpQWN0aW9uVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4uL3ZpZXctY29udGV4dC9zbWFydC11aS1hY3Rpb24vdWktYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc21hcnRmb3JtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc21hcnRmb3JtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zbWFydGZvcm0uY29tcG9uZW50LmNzcyddLFxyXG4gIHByb3ZpZGVyczogW1NtYXJ0Rm9ybVNlcnZpY2VdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnRmb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XHJcbiAgcHJpdmF0ZSBfZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICBASW5wdXQoKSBzbWFydEZvcm0/OiBTbWFydEZvcm07XHJcbiAgb25CbHVyU3ViamVjdD86IFN1YmplY3Q8YW55PjtcclxuICBvblZhbHVlQ2hhbmdlU3ViamVjdD86IFN1YmplY3Q8YW55PjtcclxuICBvcmlnaW5hbFdpZGdldHM6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W10gPSBbXTtcclxuXHJcbiAgc29waGlzdGljYXRlZFZhbHVlQ2hhbmdlOiBTdWJqZWN0PFNvcGhpc3RpY2F0ZWRWYWx1ZUNoYW5nZT4gPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcclxuXHJcbiAgZm9ybSE6IEZvcm1Hcm91cDtcclxuXHJcbiAgZGlyZWN0aW9uID0gU21hcnRGb3JtV2lkZ2V0RGlyZWN0aW9uO1xyXG5cclxuICBAVmlld0NoaWxkcmVuKFNtYXJ0Zm9ybXdpZGdldENvbXBvbmVudClcclxuICBzbWFydFdpZGdldHNRTD86IFF1ZXJ5TGlzdDxTbWFydGZvcm13aWRnZXRDb21wb25lbnQ+O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlcnZpY2U6IFNtYXJ0Rm9ybVNlcnZpY2UpIHt9XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgdGhpcy5zbWFydEZvcm0gPSBjaGFuZ2VzWydzbWFydEZvcm0nXS5jdXJyZW50VmFsdWU7XHJcbiAgICB0aGlzLm9yaWdpbmFsV2lkZ2V0cyA9IFtdO1xyXG4gICAgaWYgKHRoaXMuc21hcnRGb3JtKSB7XHJcbiAgICAgIHRoaXMuY29uc3RydWN0Rm9ybSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNtYXJ0Rm9ybSkge1xyXG4gICAgICB0aGlzLmNvbnN0cnVjdEZvcm0oKTtcclxuICAgIH1cclxuICAgIHRoaXMub25CbHVyU3ViamVjdCA9IG5ldyBTbWFydFN1YmplY3QodGhpcy5fZGVzdHJveSQpO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VydmljZS5zZXRWYWx1ZXNGcm9tTW9kZWwoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdEZvcm0oKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuc21hcnRGb3JtKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignU21hcnRmb3JtIGhhcyBub3QgYmVlbiBkZWZpbmVkIScpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNtYXJ0Rm9ybS51c2VPblZhbHVlQ2hhbmdlRXZlbnQgJiYgIXRoaXMub25WYWx1ZUNoYW5nZVN1YmplY3QpIHtcclxuICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlU3ViamVjdCA9IG5ldyBTbWFydFN1YmplY3QodGhpcy5fZGVzdHJveSQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VydmljZS5zbWFydEZvcm0gPSB0aGlzLnNtYXJ0Rm9ybTtcclxuICAgIGlmICghdGhpcy5vcmlnaW5hbFdpZGdldHMgfHwgdGhpcy5vcmlnaW5hbFdpZGdldHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMub3JpZ2luYWxXaWRnZXRzID0gdGhpcy5zbWFydEZvcm0ud2lkZ2V0cztcclxuICAgIH1cclxuICAgIHRoaXMuc2VydmljZS5zZXRWYWx1ZXNGcm9tTW9kZWwodGhpcy5vcmlnaW5hbFdpZGdldHMpO1xyXG4gICAgdGhpcy5zZXJ2aWNlLmFwcGx5Q29uc3RyYWludHModGhpcy5vcmlnaW5hbFdpZGdldHMpO1xyXG4gICAgdGhpcy5zbWFydEZvcm0ud2lkZ2V0cyA9IHRoaXMuc2VydmljZS5maWx0ZXJXaWRnZXRzQnlWaXNpYmlsaXR5KHRoaXMub3JpZ2luYWxXaWRnZXRzKTtcclxuICAgIHRoaXMuZm9ybSA9IHRoaXMuc2VydmljZS50b0Zvcm1Hcm91cCgpO1xyXG5cclxuICAgIGlmICh0aGlzLnNtYXJ0Rm9ybS50cmFuc2xhdGVTZXJ2aWNlKSB7XHJcbiAgICAgIHRoaXMuc21hcnRGb3JtLnRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLnNlcnZpY2UudHJhbnNsYXRlV2lkZ2V0cyh0aGlzLnNtYXJ0Rm9ybSEud2lkZ2V0cyk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNlcnZpY2UudHJhbnNsYXRlV2lkZ2V0cyh0aGlzLnNtYXJ0Rm9ybS53aWRnZXRzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIGdldEZvcm0oKTogRm9ybUdyb3VwIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm07XHJcbiAgfVxyXG5cclxuICBnZXRJbnZhbGlkRmllbGRzKCk6IFNtYXJ0Rm9ybUludmFsaWRGaWVsZHMge1xyXG4gICAgbGV0IGludmFsaWRGaWVsZHM6IFNtYXJ0Rm9ybUludmFsaWRGaWVsZHMgPSB7XHJcbiAgICAgIGludmFsaWRGaWVsZEtleXM6IFtdLFxyXG4gICAgICBpbnZhbGlkRmllbGROYW1lczogW10sXHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMuZm9ybSkge1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgT2JqZWN0LmtleXModGhpcy5mb3JtLmNvbnRyb2xzKSkge1xyXG4gICAgICAgIGlmICghdGhpcy5mb3JtLmNvbnRyb2xzW2NvbnRyb2xdLnZhbGlkKSB7XHJcbiAgICAgICAgICBsZXQgd2lkZ2V0ID0gdGhpcy5zZXJ2aWNlLmdldFNtYXJ0Rm9ybVdpZGdldEJ5S2V5KGNvbnRyb2wpO1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB3aWRnZXQgJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09OVEFJTkVSICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLklORElDQVRPUiAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5MQUJFTCAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5GSUxFX1VQTE9BREVSICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLklNQUdFICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLlNWRyAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5ESVZJREVSICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkJVVFRPTiAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT01QT05FTlQgJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuWU9VVFVCRV9QTEFZRVIgJiZcclxuICAgICAgICAgICAgIXdpZGdldC5pc0Rpc2FibGVkXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgaW52YWxpZEZpZWxkcy5pbnZhbGlkRmllbGROYW1lcy5wdXNoKHdpZGdldC5sYWJlbCk7XHJcbiAgICAgICAgICAgIGludmFsaWRGaWVsZHMuaW52YWxpZEZpZWxkS2V5cy5wdXNoKHdpZGdldC5rZXkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGludmFsaWRGaWVsZHM7XHJcbiAgfVxyXG5cclxuICBzdWJtaXRGb3JtKHZhbGlkYXRlID0gdHJ1ZSk6IFNtYXJ0Rm9ybSB7XHJcbiAgICBpZiAodmFsaWRhdGUpIHtcclxuICAgICAgdGhpcy5zbWFydEZvcm0hLmludmFsaWRGaWVsZHMgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgICBpZiAodGhpcy5mb3JtICYmIHRoaXMuZm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBjb250cm9sIG9mIE9iamVjdC5rZXlzKHRoaXMuZm9ybS5jb250cm9scykpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1tjb250cm9sXS5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbY29udHJvbF0ubWFya0FzRGlydHkoKTtcclxuICAgICAgICAgIC8vIHRoaXMuZm9ybS5jb250cm9sc1tjb250cm9sXS5zZXRWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNtYXJ0Rm9ybSEuaW52YWxpZEZpZWxkcyA9IHRoaXMuZ2V0SW52YWxpZEZpZWxkcygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNtYXJ0Rm9ybSE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnNlcnZpY2UudG9TbWFydEZvcm0odGhpcy5mb3JtKTtcclxuICB9XHJcblxyXG4gIGtleURvd25GdW5jdGlvbihldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gMTMgJiYgdGhpcy5zbWFydEZvcm0hLnN1Ym1pdE9uRW50ZXIpIHtcclxuICAgICAgdGhpcy5zbWFydEZvcm0hLnN1Ym1pdE9uRW50ZXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldE1vZGVsKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmdldE1vZGVsKHRoaXMuZm9ybSk7XHJcbiAgfVxyXG5cclxuICBnZXRUb29sYmFycygpOiBVaUFjdGlvblRvb2xiYXJDb21wb25lbnRbXSB7XHJcbiAgICBpZiAodGhpcy5zbWFydFdpZGdldHNRTCkge1xyXG4gICAgICBsZXQgdG9vbGJhcnMgPSB0aGlzLnNtYXJ0V2lkZ2V0c1FMXHJcbiAgICAgICAgLmZpbHRlcigod2lkZ2V0KSA9PiB3aWRnZXQudG9vbGJhciAhPT0gdW5kZWZpbmVkICYmIHdpZGdldC50b29sYmFyICE9PSBudWxsKVxyXG4gICAgICAgIC5tYXAoKHdpZGdldCkgPT4gd2lkZ2V0LnRvb2xiYXIhKTtcclxuICAgICAgaWYgKHRvb2xiYXJzKSB7XHJcbiAgICAgICAgcmV0dXJuIHRvb2xiYXJzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtICpuZ0lmPVwic21hcnRGb3JtXCIgKGtleWRvd24pPVwia2V5RG93bkZ1bmN0aW9uKCRldmVudClcIiBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cImZsZXggZm9ybVwiPlxyXG4gIDxoMiAqbmdJZj1cInNtYXJ0Rm9ybS5uYW1lXCI+XHJcbiAgICB7eyBzbWFydEZvcm0ubmFtZSB9fVxyXG4gIDwvaDI+XHJcbiAgPGRpdiBbbmdDbGFzc109XCJzbWFydEZvcm0uZGlyZWN0aW9uID09PSBkaXJlY3Rpb24uUk9XID8gJ3JvdycgOiAnY29sJ1wiPlxyXG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgd2lkZ2V0IG9mIHNtYXJ0Rm9ybS53aWRnZXRzXCIgY2xhc3M9XCJpdGVtXCI+XHJcbiAgICAgIDxzbWFydGZvcm13aWRnZXRcclxuICAgICAgICAqbmdJZj1cIndpZGdldC5pc1Zpc2libGUgPT09IHVuZGVmaW5lZCA/IHRydWUgOiB3aWRnZXQuaXNWaXNpYmxlXCJcclxuICAgICAgICBbd2lkZ2V0SW5zdGFuY2VdPVwid2lkZ2V0XCJcclxuICAgICAgICBbZm9ybV09XCJmb3JtXCJcclxuICAgICAgICBjbGFzcz1cImdyaWQtaXRlbVwiXHJcbiAgICAgICAgW29uQmx1cl09XCJvbkJsdXJTdWJqZWN0XCJcclxuICAgICAgICBbb25WYWx1ZUNoYW5nZV09XCJvblZhbHVlQ2hhbmdlU3ViamVjdFwiXHJcbiAgICAgICAgW3NvcGhpc3RpY2F0ZWRWYWx1ZUNoYW5nZV09XCJzb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2VcIlxyXG4gICAgICAgIGNsYXNzPVwie3sgd2lkZ2V0LmtleSB9fVwiXHJcbiAgICAgICAgW2xhYmVsQ29sb3JdPVwic21hcnRGb3JtLmxhYmVsVGhlbWVcIlxyXG4gICAgICA+PC9zbWFydGZvcm13aWRnZXQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9mb3JtPlxyXG4iXX0=
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWZvcm0vc21hcnRmb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWZvcm0vc21hcnRmb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQU1MLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR3pELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDOzs7Ozs7QUFTL0YsTUFBTSxPQUFPLGtCQUFrQjtJQWlCN0IsWUFBb0IsT0FBeUI7UUFBekIsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFoQnJDLGNBQVMsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUtqRCxvQkFBZSxHQUEyQixFQUFFLENBQUM7UUFFN0MsNkJBQXdCLEdBQXNDLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUkvRixjQUFTLEdBQUcsd0JBQXdCLENBQUM7SUFLVyxDQUFDO0lBQ2pELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDbkQsSUFBSSxDQUFD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QkFDM0UsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBUSxDQUFDLENBQUM7WUFDcEMsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osT0FBTyxRQUFRLENBQUM7YUFDakI7U0FDRjtRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs7K0dBdkxVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHdFQUZsQixDQUFDLGdCQUFnQixDQUFDLDZEQWdCZix3QkFBd0IscUVDekN4Qyw4MEJBb0JBOzJGRE9hLGtCQUFrQjtrQkFOOUIsU0FBUzsrQkFDRSxXQUFXLGFBR1YsQ0FBQyxnQkFBZ0IsQ0FBQzt1R0FLcEIsU0FBUztzQkFBakIsS0FBSztnQkFZTixjQUFjO3NCQURiLFlBQVk7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkcmVuLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTbWFydEZvcm1XaWRnZXREaXJlY3Rpb24sIFNtYXJ0Rm9ybVdpZGdldFR5cGUgfSBmcm9tICcuL2FwaSc7XHJcbmltcG9ydCB7IFNtYXJ0Rm9ybVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3NtYXJ0Zm9ybS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU21hcnRGb3JtLCBTbWFydEZvcm1JbnZhbGlkRmllbGRzLCBTb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2UgfSBmcm9tICcuL3NtYXJ0Zm9ybS5tb2RlbCc7XHJcbmltcG9ydCB7IFNtYXJ0U3ViamVjdCB9IGZyb20gJy4uL3NtYXJ0LXN1YmplY3QvcHJvamVjdHMnO1xyXG4vLyBpbXBvcnQgeyBVaUFjdGlvblRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuLi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL3VpLWFjdGlvbi10b29sYmFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNtYXJ0Rm9ybVdpZGdldCB9IGZyb20gJy4vc21hcnRmb3JtLmZvcm0tbW9kZWwnO1xyXG5pbXBvcnQgeyBTbWFydGZvcm13aWRnZXRDb21wb25lbnQgfSBmcm9tICcuL3dpZGdldHMvc21hcnRmb3Jtd2lkZ2V0L3NtYXJ0Zm9ybXdpZGdldC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVaUFjdGlvblRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuLi92aWV3LWNvbnRleHQvc21hcnQtdWktYWN0aW9uL3VpLWFjdGlvbi10b29sYmFyLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NtYXJ0Zm9ybScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NtYXJ0Zm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc21hcnRmb3JtLmNvbXBvbmVudC5jc3MnXSxcclxuICBwcm92aWRlcnM6IFtTbWFydEZvcm1TZXJ2aWNlXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0Zm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xyXG4gIHByaXZhdGUgX2Rlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgQElucHV0KCkgc21hcnRGb3JtPzogU21hcnRGb3JtO1xyXG4gIG9uQmx1clN1YmplY3Q/OiBTdWJqZWN0PGFueT47XHJcbiAgb25WYWx1ZUNoYW5nZVN1YmplY3Q/OiBTdWJqZWN0PGFueT47XHJcbiAgb3JpZ2luYWxXaWRnZXRzOiBTbWFydEZvcm1XaWRnZXQ8YW55PltdID0gW107XHJcblxyXG4gIHNvcGhpc3RpY2F0ZWRWYWx1ZUNoYW5nZTogU3ViamVjdDxTb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2U+ID0gbmV3IFNtYXJ0U3ViamVjdCh0aGlzLl9kZXN0cm95JCk7XHJcblxyXG4gIGZvcm0hOiBGb3JtR3JvdXA7XHJcblxyXG4gIGRpcmVjdGlvbiA9IFNtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbjtcclxuXHJcbiAgQFZpZXdDaGlsZHJlbihTbWFydGZvcm13aWRnZXRDb21wb25lbnQpXHJcbiAgc21hcnRXaWRnZXRzUUw/OiBRdWVyeUxpc3Q8U21hcnRmb3Jtd2lkZ2V0Q29tcG9uZW50PjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXJ2aWNlOiBTbWFydEZvcm1TZXJ2aWNlKSB7fVxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHRoaXMuc21hcnRGb3JtID0gY2hhbmdlc1snc21hcnRGb3JtJ10uY3VycmVudFZhbHVlO1xyXG4gICAgdGhpcy5vcmlnaW5hbFdpZGdldHMgPSBbXTtcclxuICAgIGlmICh0aGlzLnNtYXJ0Rm9ybSkge1xyXG4gICAgICB0aGlzLmNvbnN0cnVjdEZvcm0oKTtcclxuICAgIH1cclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zbWFydEZvcm0pIHtcclxuICAgICAgdGhpcy5jb25zdHJ1Y3RGb3JtKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uQmx1clN1YmplY3QgPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcclxuICB9XHJcblxyXG4gIC8vIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAvLyAgIGlmICh0aGlzLnNtYXJ0V2lkZ2V0c1FMKSB7XHJcbiAgLy8gICAgIHRoaXMuaGFuZGxlUXVlcnlMaXN0KHRoaXMuc21hcnRXaWRnZXRzUUwsICh3aWRnZXQpID0+IHtcclxuICAvLyAgICAgICAvLyA/Pz9cclxuICAvLyAgICAgfSk7XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICAvLyAvLyBUT0RPIHRoaXMgaXMgYSBkdXBsaWNhdGUgZnJvbSBTbWFydEZvcm1BcGlDbGllbnQgLT4gbW92ZSBpdCB0byBhIHV0aWxpdHlcclxuICAvLyBwcm90ZWN0ZWQgaGFuZGxlUXVlcnlMaXN0PFQ+KHFsOiBRdWVyeUxpc3Q8VD4sIGhhbmRsZXI6IChlbDogVCkgPT4gdm9pZCkge1xyXG4gIC8vICAgcWwuZm9yRWFjaCgoZWwpID0+IGhhbmRsZXIoZWwpKTtcclxuICAvLyAgIHFsLmNoYW5nZXNcclxuICAvLyAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcclxuICAvLyAgICAgLnN1YnNjcmliZSgobGlzdCkgPT4gKGxpc3QgYXMgUXVlcnlMaXN0PFQ+KS5mb3JFYWNoKChlbCkgPT4gaGFuZGxlcihlbCkpKTtcclxuICAvLyB9XHJcblxyXG4gIHJlZnJlc2goKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlcnZpY2Uuc2V0VmFsdWVzRnJvbU1vZGVsKCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RGb3JtKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnNtYXJ0Rm9ybSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NtYXJ0Zm9ybSBoYXMgbm90IGJlZW4gZGVmaW5lZCEnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zbWFydEZvcm0udXNlT25WYWx1ZUNoYW5nZUV2ZW50ICYmICF0aGlzLm9uVmFsdWVDaGFuZ2VTdWJqZWN0KSB7XHJcbiAgICAgIHRoaXMub25WYWx1ZUNoYW5nZVN1YmplY3QgPSBuZXcgU21hcnRTdWJqZWN0KHRoaXMuX2Rlc3Ryb3kkKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlcnZpY2Uuc21hcnRGb3JtID0gdGhpcy5zbWFydEZvcm07XHJcbiAgICBpZiAoIXRoaXMub3JpZ2luYWxXaWRnZXRzIHx8IHRoaXMub3JpZ2luYWxXaWRnZXRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLm9yaWdpbmFsV2lkZ2V0cyA9IHRoaXMuc21hcnRGb3JtLndpZGdldHM7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlcnZpY2Uuc2V0VmFsdWVzRnJvbU1vZGVsKHRoaXMub3JpZ2luYWxXaWRnZXRzKTtcclxuICAgIHRoaXMuc2VydmljZS5hcHBseUNvbnN0cmFpbnRzKHRoaXMub3JpZ2luYWxXaWRnZXRzKTtcclxuICAgIHRoaXMuc21hcnRGb3JtLndpZGdldHMgPSB0aGlzLnNlcnZpY2UuZmlsdGVyV2lkZ2V0c0J5VmlzaWJpbGl0eSh0aGlzLm9yaWdpbmFsV2lkZ2V0cyk7XHJcbiAgICB0aGlzLmZvcm0gPSB0aGlzLnNlcnZpY2UudG9Gb3JtR3JvdXAoKTtcclxuXHJcbiAgICBpZiAodGhpcy5zbWFydEZvcm0udHJhbnNsYXRlU2VydmljZSkge1xyXG4gICAgICB0aGlzLnNtYXJ0Rm9ybS50cmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGVXaWRnZXRzKHRoaXMuc21hcnRGb3JtIS53aWRnZXRzKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMudHJhbnNsYXRlV2lkZ2V0cyh0aGlzLnNtYXJ0Rm9ybS53aWRnZXRzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgdHJhbnNsYXRlV2lkZ2V0cyh3aWRnZXRzOiBTbWFydEZvcm1XaWRnZXQ8YW55PltdKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBhd2FpdCB0aGlzLnNlcnZpY2UudHJhbnNsYXRlV2lkZ2V0cyh0aGlzLnNtYXJ0Rm9ybSEud2lkZ2V0cyk7XHJcbiAgICB0aGlzLm1hcmtBbGxXaWRnZXRzRm9yQ2hhbmdlRGV0ZWN0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbWFya0FsbFdpZGdldHNGb3JDaGFuZ2VEZXRlY3Rpb24oKSB7XHJcbiAgICB0aGlzLmdldEFsbFNtYXJ0V2lkZ2V0cygpLmZvckVhY2goKHdpZGdldCkgPT4gd2lkZ2V0LmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBnZXRBbGxTbWFydFdpZGdldHMoKTogU21hcnRmb3Jtd2lkZ2V0Q29tcG9uZW50W10ge1xyXG4gICAgY29uc3QgcmVzdWx0OiBTbWFydGZvcm13aWRnZXRDb21wb25lbnRbXSA9IFtdO1xyXG4gICAgdGhpcy5zbWFydFdpZGdldHNRTD8uZm9yRWFjaCgod2lkZ2V0KSA9PiB7XHJcbiAgICAgIHJlc3VsdC5wdXNoKC4uLnRoaXMuZ2V0Q2hpbGRXaWRnZXRzKHdpZGdldCkpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDaGlsZFdpZGdldHMod2lkZ2V0OiBTbWFydGZvcm13aWRnZXRDb21wb25lbnQpOiBTbWFydGZvcm13aWRnZXRDb21wb25lbnRbXSB7XHJcbiAgICBpZiAod2lkZ2V0LndpZGdldEluc3RhbmNlLnR5cGUgPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT05UQUlORVIpIHtcclxuICAgICAgY29uc3QgcmVzdWx0OiBTbWFydGZvcm13aWRnZXRDb21wb25lbnRbXSA9IFtdO1xyXG4gICAgICB3aWRnZXQuY2hpbGRyZW5XaWRnZXRzUUw/LmZvckVhY2goKGNoaWxkKSA9PiByZXN1bHQucHVzaCguLi50aGlzLmdldENoaWxkV2lkZ2V0cyhjaGlsZCkpKTtcclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBbd2lkZ2V0XTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIGdldEZvcm0oKTogRm9ybUdyb3VwIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm07XHJcbiAgfVxyXG5cclxuICBnZXRJbnZhbGlkRmllbGRzKCk6IFNtYXJ0Rm9ybUludmFsaWRGaWVsZHMge1xyXG4gICAgbGV0IGludmFsaWRGaWVsZHM6IFNtYXJ0Rm9ybUludmFsaWRGaWVsZHMgPSB7XHJcbiAgICAgIGludmFsaWRGaWVsZEtleXM6IFtdLFxyXG4gICAgICBpbnZhbGlkRmllbGROYW1lczogW10sXHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMuZm9ybSkge1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbnRyb2wgb2YgT2JqZWN0LmtleXModGhpcy5mb3JtLmNvbnRyb2xzKSkge1xyXG4gICAgICAgIGlmICghdGhpcy5mb3JtLmNvbnRyb2xzW2NvbnRyb2xdLnZhbGlkKSB7XHJcbiAgICAgICAgICBsZXQgd2lkZ2V0ID0gdGhpcy5zZXJ2aWNlLmdldFNtYXJ0Rm9ybVdpZGdldEJ5S2V5KGNvbnRyb2wpO1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB3aWRnZXQgJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09OVEFJTkVSICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLklORElDQVRPUiAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5MQUJFTCAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5GSUxFX1VQTE9BREVSICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLklNQUdFICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLlNWRyAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5ESVZJREVSICYmXHJcbiAgICAgICAgICAgIHdpZGdldC50eXBlICE9PSBTbWFydEZvcm1XaWRnZXRUeXBlLkJVVFRPTiAmJlxyXG4gICAgICAgICAgICB3aWRnZXQudHlwZSAhPT0gU21hcnRGb3JtV2lkZ2V0VHlwZS5DT01QT05FTlQgJiZcclxuICAgICAgICAgICAgd2lkZ2V0LnR5cGUgIT09IFNtYXJ0Rm9ybVdpZGdldFR5cGUuWU9VVFVCRV9QTEFZRVIgJiZcclxuICAgICAgICAgICAgIXdpZGdldC5pc0Rpc2FibGVkXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgaW52YWxpZEZpZWxkcy5pbnZhbGlkRmllbGROYW1lcy5wdXNoKHdpZGdldC5sYWJlbCk7XHJcbiAgICAgICAgICAgIGludmFsaWRGaWVsZHMuaW52YWxpZEZpZWxkS2V5cy5wdXNoKHdpZGdldC5rZXkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGludmFsaWRGaWVsZHM7XHJcbiAgfVxyXG5cclxuICBzdWJtaXRGb3JtKHZhbGlkYXRlID0gdHJ1ZSk6IFNtYXJ0Rm9ybSB7XHJcbiAgICBpZiAodmFsaWRhdGUpIHtcclxuICAgICAgdGhpcy5zbWFydEZvcm0hLmludmFsaWRGaWVsZHMgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgICBpZiAodGhpcy5mb3JtICYmIHRoaXMuZm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBjb250cm9sIG9mIE9iamVjdC5rZXlzKHRoaXMuZm9ybS5jb250cm9scykpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1tjb250cm9sXS5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbY29udHJvbF0ubWFya0FzRGlydHkoKTtcclxuICAgICAgICAgIC8vIHRoaXMuZm9ybS5jb250cm9sc1tjb250cm9sXS5zZXRWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNtYXJ0Rm9ybSEuaW52YWxpZEZpZWxkcyA9IHRoaXMuZ2V0SW52YWxpZEZpZWxkcygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNtYXJ0Rm9ybSE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnNlcnZpY2UudG9TbWFydEZvcm0odGhpcy5mb3JtKTtcclxuICB9XHJcblxyXG4gIGtleURvd25GdW5jdGlvbihldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gMTMgJiYgdGhpcy5zbWFydEZvcm0hLnN1Ym1pdE9uRW50ZXIpIHtcclxuICAgICAgdGhpcy5zbWFydEZvcm0hLnN1Ym1pdE9uRW50ZXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldE1vZGVsKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmdldE1vZGVsKHRoaXMuZm9ybSk7XHJcbiAgfVxyXG5cclxuICBnZXRUb29sYmFycygpOiBVaUFjdGlvblRvb2xiYXJDb21wb25lbnRbXSB7XHJcbiAgICBpZiAodGhpcy5zbWFydFdpZGdldHNRTCkge1xyXG4gICAgICBsZXQgdG9vbGJhcnMgPSB0aGlzLnNtYXJ0V2lkZ2V0c1FMXHJcbiAgICAgICAgLmZpbHRlcigod2lkZ2V0KSA9PiB3aWRnZXQudG9vbGJhciAhPT0gdW5kZWZpbmVkICYmIHdpZGdldC50b29sYmFyICE9PSBudWxsKVxyXG4gICAgICAgIC5tYXAoKHdpZGdldCkgPT4gd2lkZ2V0LnRvb2xiYXIhKTtcclxuICAgICAgaWYgKHRvb2xiYXJzKSB7XHJcbiAgICAgICAgcmV0dXJuIHRvb2xiYXJzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtICpuZ0lmPVwic21hcnRGb3JtXCIgKGtleWRvd24pPVwia2V5RG93bkZ1bmN0aW9uKCRldmVudClcIiBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cImZsZXggZm9ybVwiPlxyXG4gIDxoMiAqbmdJZj1cInNtYXJ0Rm9ybS5uYW1lXCI+XHJcbiAgICB7eyBzbWFydEZvcm0ubmFtZSB9fVxyXG4gIDwvaDI+XHJcbiAgPGRpdiBbbmdDbGFzc109XCJzbWFydEZvcm0uZGlyZWN0aW9uID09PSBkaXJlY3Rpb24uUk9XID8gJ3JvdycgOiAnY29sJ1wiPlxyXG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgd2lkZ2V0IG9mIHNtYXJ0Rm9ybS53aWRnZXRzXCIgY2xhc3M9XCJpdGVtXCI+XHJcbiAgICAgIDxzbWFydGZvcm13aWRnZXRcclxuICAgICAgICAqbmdJZj1cIndpZGdldC5pc1Zpc2libGUgPT09IHVuZGVmaW5lZCA/IHRydWUgOiB3aWRnZXQuaXNWaXNpYmxlXCJcclxuICAgICAgICBbd2lkZ2V0SW5zdGFuY2VdPVwid2lkZ2V0XCJcclxuICAgICAgICBbZm9ybV09XCJmb3JtXCJcclxuICAgICAgICBjbGFzcz1cImdyaWQtaXRlbVwiXHJcbiAgICAgICAgW29uQmx1cl09XCJvbkJsdXJTdWJqZWN0XCJcclxuICAgICAgICBbb25WYWx1ZUNoYW5nZV09XCJvblZhbHVlQ2hhbmdlU3ViamVjdFwiXHJcbiAgICAgICAgW3NvcGhpc3RpY2F0ZWRWYWx1ZUNoYW5nZV09XCJzb3BoaXN0aWNhdGVkVmFsdWVDaGFuZ2VcIlxyXG4gICAgICAgIGNsYXNzPVwie3sgd2lkZ2V0LmtleSB9fVwiXHJcbiAgICAgICAgW2xhYmVsQ29sb3JdPVwic21hcnRGb3JtLmxhYmVsVGhlbWVcIlxyXG4gICAgICA+PC9zbWFydGZvcm13aWRnZXQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9mb3JtPlxyXG4iXX0=