barsa-sap-ui 2.0.126 → 2.0.128

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,13 +30,14 @@ export class UiTableViewComponent extends ReportViewBaseComponent {
30
30
  }
31
31
  ngOnInit() {
32
32
  super.ngOnInit();
33
- const x = this._el.nativeElement.parentNode.getBoundingClientRect().width;
33
+ const x = Math.floor(this._el.nativeElement.parentNode.getBoundingClientRect().width);
34
34
  if (x) {
35
- this._renderer2.setStyle(this._el.nativeElement, 'width', `${x}px`);
35
+ this._renderer2.setStyle(this._el.nativeElement, 'width', `${x - 10}px`);
36
36
  }
37
37
  this._portalService.windowResize$.pipe(takeUntil(this._onDestroy$)).subscribe(() => {
38
- this._renderer2.setStyle(this._tableRef.nativeElement, 'width', this._el.nativeElement.parentNode.getBoundingClientRect().width + 'px');
39
- this._renderer2.setStyle(this._tableRef.nativeElement, 'max-width', this._el.nativeElement.parentNode.getBoundingClientRect().width + 'px');
38
+ const x = Math.floor(this._el.nativeElement.parentNode.getBoundingClientRect().width);
39
+ this._renderer2.setStyle(this._tableRef.nativeElement, 'width', x + 'px');
40
+ this._renderer2.setStyle(this._tableRef.nativeElement, 'max-width', x + 'px');
40
41
  this._refreshThWidth();
41
42
  });
42
43
  this.hasRowOlgo = this.viewSetting?.RowOlgo?.Selector;
@@ -154,19 +155,23 @@ export class UiTableViewComponent extends ReportViewBaseComponent {
154
155
  this._renderer2.setStyle(this._tableRef.nativeElement, 'width', `100%`);
155
156
  }
156
157
  _setParentWidthFitToOffsetWidth() {
157
- this._renderer2.setStyle(this._el.nativeElement.parentNode, 'width', `${this._el.nativeElement.parentNode.getBoundingClientRect().width}px`);
158
- this._renderer2.setStyle(this._tableRef.nativeElement, 'min-width', `${this._el.nativeElement.offsetWidth}px`);
159
- this._renderer2.setStyle(this._tableRef.nativeElement, 'width', `${this._el.nativeElement.offsetWidth}px`);
158
+ const x1 = Math.floor(this._el.nativeElement.parentNode.getBoundingClientRect().width);
159
+ this._renderer2.setStyle(this._el.nativeElement.parentNode, 'width', `${x1}px`);
160
+ const x = Math.floor(this._el.nativeElement.offsetWidth);
161
+ this._renderer2.setStyle(this._tableRef.nativeElement, 'min-width', `${x}px`);
162
+ this._renderer2.setStyle(this._tableRef.nativeElement, 'width', `${x}px`);
160
163
  }
161
164
  _setParentWidth() {
162
- this._renderer2.setStyle(this._el.nativeElement.parentNode, 'width', `${this._el.nativeElement.parentNode.getBoundingClientRect().width}px`);
165
+ const x = Math.floor(this._el.nativeElement.parentNode.getBoundingClientRect().width);
166
+ this._renderer2.setStyle(this._el.nativeElement.parentNode, 'width', `${x}px`);
163
167
  }
164
168
  _refreshThWidth() {
165
169
  this._calculateColumnsWidth(this.moDataList, this.columns);
166
170
  this._tableHeaderComponent?.RefreshTableThWidth();
167
171
  }
168
172
  _setWidth(setWidth) {
169
- const widthOfDom = this._el.nativeElement.parentNode.getBoundingClientRect().width;
173
+ const widthOfDom = Math.floor(this._el.nativeElement.parentNode.getBoundingClientRect().width);
174
+ console.log(widthOfDom);
170
175
  if (widthOfDom === 0) {
171
176
  return;
172
177
  }
@@ -174,8 +179,9 @@ export class UiTableViewComponent extends ReportViewBaseComponent {
174
179
  this._refreshThWidth();
175
180
  }
176
181
  this.oldWidth = widthOfDom;
177
- this._renderer2.setStyle(this._tableRef.nativeElement, 'max-width', this._el.nativeElement.parentNode.getBoundingClientRect().width + 'px');
178
- this._renderer2.setStyle(this._tableRef.nativeElement, 'width', widthOfDom + 'px');
182
+ const widthOfDom2 = Math.floor(this._el.nativeElement.parentNode.getBoundingClientRect().width);
183
+ this._renderer2.setStyle(this._tableRef.nativeElement, 'max-width', widthOfDom2 - 10 + 'px');
184
+ this._renderer2.setStyle(this._tableRef.nativeElement, 'width', widthOfDom2 - 10 + 'px');
179
185
  }
180
186
  _calculateHeaderStickyTop(dom) {
181
187
  if (this.stickyEnable() && this.tableHeaderDom) {
@@ -279,4 +285,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
279
285
  type: HostBinding,
280
286
  args: ['style.max-height']
281
287
  }] } });
282
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktdGFibGUtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi91aS10YWJsZS12aWV3L3VpLXRhYmxlLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktdGFibGUtdmlldy91aS10YWJsZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUVILHVCQUF1QixFQUV2QixvQkFBb0IsRUFFcEIsb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUNwQixrQ0FBa0MsRUFDbEMsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixpQ0FBaUMsRUFDcEMsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7Ozs7QUFRL0YsTUFBTSxPQUFPLG9CQUNULFNBQVEsdUJBQTJDO0lBUHZEOztRQW9Cb0MsV0FBTSxHQUFrQixJQUFJLENBQUM7UUFDNUIsY0FBUyxHQUFrQixJQUFJLENBQUM7UUFDakUsV0FBTSxHQUFHLE1BQU0sQ0FBQztRQUdoQixxQkFBZ0IsR0FBbUUsRUFBRSxDQUFDO1FBRXRGLG9CQUFlLEdBQUcsb0JBQW9CLENBQUMsY0FBYyxDQUFDO1FBQ3RELGlCQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVu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bUZBQzVDLHlCQUF5Qiw0RkN6Q3hDLG1pZEF3VkE7OzJGRHBUYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0ksbUJBQW1CLG1CQUdaLHVCQUF1QixDQUFDLE1BQU07OEJBTVksU0FBUztzQkFBbkUsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ25CLHFCQUFxQjtzQkFBMUQsU0FBUzt1QkFBQyx5QkFBeUI7Z0JBQzNCLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQzBCLE1BQU07c0JBQXJDLFdBQVc7dUJBQUMsaUJBQWlCO2dCQUNHLFNBQVM7c0JBQXpDLFdBQVc7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgc2lnbmFsLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIE1ldGFvYmplY3REYXRhTW9kZWwsXG4gICAgUmVwb3J0Vmlld0Jhc2VDb21wb25lbnQsXG4gICAgUmVwb3J0Vmlld0NvbHVtbixcbiAgICBUYWJsZUhlYWRlcldpZHRoTW9kZSxcbiAgICBDb2x1bW5SZXNpemVkQXJncyxcbiAgICBjYWxjQ29udGV4dE1lbnVXaWR0aCxcbiAgICBjYWxjdWxhdGVDb2x1bW5XaWR0aCxcbiAgICBjYWxjdWxhdGVDb2x1bW5XaWR0aEZpdFRvQ29udGFpbmVyLFxuICAgIGNhbGN1bGF0ZUZyZWVDb2x1bW5TaXplLFxuICAgIGNhbGN1bGF0ZUNvbHVtbkNvbnRlbnQsXG4gICAgc2V0Q29sdW1uV2lkdGhCeU1heE1vQ29udGVudFdpZHRoXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcbmltcG9ydCB7IFVpVGFibGVWaWV3U2V0dGluZyB9IGZyb20gJy4uL21vZGVscy9ncmlkLXZpZXcnO1xuaW1wb3J0IHsgQmFyc2FUYWJsZUhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2JhcnNhLXRhYmxlLWhlYWRlci9iYXJzYS10YWJsZS1oZWFkZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdic3UtdWktdGFibGUtdmlldycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3VpLXRhYmxlLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3VpLXRhYmxlLXZpZXcuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBVaVRhYmxlVmlld0NvbXBvbmVudFxuICAgIGV4dGVuZHMgUmVwb3J0Vmlld0Jhc2VDb21wb25lbnQ8VWlUYWJsZVZpZXdTZXR0aW5nPlxuICAgIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXNcbntcbiAgICBAVmlld0NoaWxkKCd0YWJsZVRwbCcsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pIF90YWJsZVJlZjogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKEJhcnNhVGFibGVIZWFkZXJDb21wb25lbnQpIF90YWJsZUhlYWRlckNvbXBvbmVudDogQmFyc2FUYWJsZUhlYWRlckNvbXBvbmVudDtcbiAgICBASW5wdXQoKSBjb2x1bW5XaWR0aDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIG1pbldpZHRoO1xuICAgIEBJbnB1dCgpIG1pbkhlaWdodDtcbiAgICBASW5wdXQoKSBkaXNhYmxlUmVzaXplO1xuICAgIEBJbnB1dCgpIGRpc2FibGVIZWFkZXJDb250ZXh0TWVudTtcbiAgICBASW5wdXQoKSByb3dSZXNpemVyO1xuICAgIEBJbnB1dCgpIGVuYWJsZVJlc2l6aW5nO1xuICAgIEBJbnB1dCgpIGRpc2FibGVGaXhlZFRhYmxlTGF5b3V0O1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUuaGVpZ2h0LnB4JykgaGVpZ2h0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLm1heC1oZWlnaHQnKSBtYXhIZWlnaHQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIF93aWR0aCA9ICcxMDAlJztcbiAgICBzaG93RGV0YWlsc0luUm93OiBib29sZWFuO1xuICAgIGhhc1Jvd09sZ286IGJvb2xlYW47XG4gICAgY29sdW1uQ29tcG9uZW50czogeyBjb2x1bW46IFJlcG9ydFZpZXdDb2x1bW47IGNvbXBvbmVudDogTWV0YW9iamVjdERhdGFNb2RlbCB9W10gPSBbXTtcbiAgICByb3dJbmRpY2F0b3I6IGJvb2xlYW47XG4gICAgdGFibGVIZWFkZXJNb2RlID0gVGFibGVIZWFkZXJXaWR0aE1vZGUuRml0VG9Db250YWluZXI7XG4gICAgc3RpY2t5RW5hYmxlID0gc2lnbmFsKGZhbHNlKTtcbiAgICByb3dWaXNpYmlsdHlDaGFuZ2UgPSBzaWduYWwoZmFsc2UpO1xuICAgIHRhYmxlSGVhZGVyRG9tOiBIVE1MRWxlbWVudDtcbiAgICBfaGVhZGVyVG9wJCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgICByb3dWaXNpYmxlJCA9IG5ldyBTdWJqZWN0PHsgaW5kZXg7IGRvbSB9PigpO1xuICAgIF9pc1BhcmVudFdpZHRoU2V0ID0gZmFsc2U7XG4gICAgdGFibGVIZWFkZXJUb3AgPSAwO1xuICAgIHRhYmxlSGVhZGVySGVpZ2h0ID0gMDtcbiAgICBoZWFkZXJPYnNlcnZlckRvbTogSFRNTEVsZW1lbnQ7XG4gICAgbm90VmlzaWJsZUl0ZW1zOiBudW1iZXJbXSA9IFtdO1xuICAgIHZpc2libGVJdGVtczogbnVtYmVyW10gPSBbXTtcbiAgICBvbGRXaWR0aCA9IDA7XG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgICAgY29uc3QgeCA9IHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgICAgaWYgKHgpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl9lbC5uYXRpdmVFbGVtZW50LCAnd2lkdGgnLCBgJHt4fXB4YCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcG9ydGFsU2VydmljZS53aW5kb3dSZXNpemUkLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKFxuICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgJ3dpZHRoJyxcbiAgICAgICAgICAgICAgICB0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggKyAncHgnXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKFxuICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgJ21heC13aWR0aCcsXG4gICAgICAgICAgICAgICAgdGhpcy5fZWwubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoICsgJ3B4J1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hUaFdpZHRoKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmhhc1Jvd09sZ28gPSB0aGlzLnZpZXdTZXR0aW5nPy5Sb3dPbGdvPy5TZWxlY3RvcjtcbiAgICAgICAgdGhpcy5tYXhIZWlnaHQgPSB0aGlzLnZpZXdTZXR0aW5nPy5Cb2R5SGVpZ2h0O1xuICAgICAgICB0aGlzLl9zZXRIYXNTdW1tZXJ5KHRoaXMuY2FydGFibGVDaGlsZHNNbyk7XG4gICAgICAgIHRoaXMuX3NldEhlaWdodCh0aGlzLnBhcmVudEhlaWdodCk7XG4gICAgICAgIHRoaXMuX3NldFdpZHRoKCk7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUNvbHVtbnNXaWR0aCh0aGlzLm1vRGF0YUxpc3QsIHRoaXMuY29sdW1ucyk7XG4gICAgICAgIHRoaXMudGFibGVIZWFkZXJNb2RlID0gdGhpcy5ncmlkRnJlZUNvbHVtblNpemluZ1xuICAgICAgICAgICAgPyBUYWJsZUhlYWRlcldpZHRoTW9kZS5GcmVlQ29sdW1uU2l6ZVxuICAgICAgICAgICAgOiBUYWJsZUhlYWRlcldpZHRoTW9kZS5GaXRUb0NvbnRhaW5lcjtcbiAgICAgICAgdGhpcy5fY2FsY0NvbnRleHRNZW51V2lkdGgodGhpcy5jb250ZXh0TWVudUl0ZW1zKTtcbiAgICB9XG5cbiAgICBfY2FsY0NvbnRleHRNZW51V2lkdGgoY29udGV4dE1lbnVJdGVtcyk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbnRleHRNZW51V2lkdGggPSBjYWxjQ29udGV4dE1lbnVXaWR0aChjb250ZXh0TWVudUl0ZW1zLCB0aGlzLmRpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51KTtcbiAgICB9XG4gICAgb25UYWJsZVZpc2liaWxpdHlDaGFuZ2UoZSwgZG9tKTogdm9pZCB7XG4gICAgICAgIGlmIChlID09PSAnVmlzaWJsZScpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFdpZHRoKHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IGNhcnRhYmxlVGVtcGxhdGVzLCBwYXJlbnRIZWlnaHQsIGNvbnRleHRNZW51SXRlbXMsIGNvbHVtbnNDb3VudCwgY29sdW1ucywgc2Vjb25kYXJ5Q29sdW1ucyB9ID0gY2hhbmdlcztcbiAgICAgICAgaWYgKGNvbnRleHRNZW51SXRlbXMgJiYgIWNvbnRleHRNZW51SXRlbXMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGNDb250ZXh0TWVudVdpZHRoKGNvbnRleHRNZW51SXRlbXMuY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhcnRhYmxlVGVtcGxhdGVzICYmICFjYXJ0YWJsZVRlbXBsYXRlcy5maXJzdENoYW5nZSAmJiAhdGhpcy5oYXNTdW1tYXJ5KSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRIYXNTdW1tZXJ5KGNhcnRhYmxlVGVtcGxhdGVzLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChjb2x1bW5zQ291bnQgJiYgIWNvbHVtbnNDb3VudC5maXJzdENoYW5nZSkgfHwgKHNlY29uZGFyeUNvbHVtbnMgJiYgIXNlY29uZGFyeUNvbHVtbnMuZmlyc3RDaGFuZ2UpKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVDb2x1bW5zV2lkdGgodGhpcy5tb0RhdGFMaXN0LCBjb2x1bW5zLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcmVudEhlaWdodCAmJiAhcGFyZW50SGVpZ2h0LmZpcnN0Q2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRIZWlnaHQocGFyZW50SGVpZ2h0LmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XG4gICAgfVxuICAgIG9uQ29sdW1uUmVzaXppbmcoZTogeyBjb2x1bW46IFJlcG9ydFZpZXdDb2x1bW47IHdpZHRoOiBudW1iZXIgfSk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJsZUhlYWRlckNvbXBvbmVudC5TZXRDb2x1bW5XaWR0aFRvVGhXaWR0aCgpO1xuICAgICAgICB0aGlzLl9zZXRQYXJlbnRXaWR0aCgpO1xuICAgIH1cbiAgICBvbkNvbHVtblJlc2l6ZWQoYXJyOiBBcnJheTxDb2x1bW5SZXNpemVkQXJncz4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2Vjb25kYXJ5Q29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnRhYmxlSGVhZGVyTW9kZSA9PT0gVGFibGVIZWFkZXJXaWR0aE1vZGUuRnJlZUNvbHVtblNpemUpIHtcbiAgICAgICAgICAgIHRoaXMuX3RhYmxlSGVhZGVyQ29tcG9uZW50LlNldENvbHVtbldpZHRoVG9UaFdpZHRoKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl90YWJsZUhlYWRlckNvbXBvbmVudC5TZXRDb2x1bW5XaWR0aFRvUGVyY2VudCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3RhYmxlSGVhZGVyQ29tcG9uZW50LlJlZnJlc2hUYWJsZVRoV2lkdGgoKTtcbiAgICAgICAgdGhpcy5yZXNpemVkQnlVc2VyID0gdHJ1ZTtcblxuICAgICAgICAvLyB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUobGFzdFRoLCAnd2lkdGgnLCBgMTAwJWApO1xuICAgICAgICB0aGlzLmNvbHVtblJlc2l6ZWQuZW1pdCh7IGNvbHVtbnM6IHRoaXMuY29sdW1ucywgcmVzaXplZDogYXJyIH0pO1xuICAgIH1cbiAgICBvbkZpdFRvQ29udGFpbmVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRhYmxlSGVhZGVyTW9kZSA9IFRhYmxlSGVhZGVyV2lkdGhNb2RlLkZpdFRvQ29udGFpbmVyO1xuICAgICAgICB0aGlzLl9zZXRQYXJlbnRXaWR0aEZpdCgpO1xuICAgICAgICB0aGlzLl90YWJsZUhlYWRlckNvbXBvbmVudC5TZXRDb2x1bW5XaWR0aFRvUGVyY2VudCgpO1xuICAgICAgICAvLyB0aGlzLl9yZWZyZXNoVGhXaWR0aCgpO1xuICAgICAgICAvLyB0aGlzLl9maXJlUmVzaXplQ2hhbmdlZCgpO1xuICAgIH1cbiAgICBvbkZyZWVDb2x1bW5TaXppbmcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFibGVIZWFkZXJNb2RlID0gVGFibGVIZWFkZXJXaWR0aE1vZGUuRnJlZUNvbHVtblNpemU7XG4gICAgICAgIHRoaXMuX3RhYmxlSGVhZGVyQ29tcG9uZW50LlNldENvbHVtbldpZHRoVG9UaFdpZHRoKCk7XG4gICAgICAgIHRoaXMuX3NldFBhcmVudFdpZHRoRml0VG9PZmZzZXRXaWR0aCgpO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVDb2x1bW5zV2lkdGgodGhpcy5tb0RhdGFMaXN0LCB0aGlzLmNvbHVtbnMpO1xuICAgIH1cbiAgICBvbkZpdFRvQ29udGVudChlOiB7IGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbjsgdGhEb206IEhUTUxUYWJsZUNlbGxFbGVtZW50IH0pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBjb2x1bW4sIHRoRG9tIH0gPSBlO1xuICAgICAgICB0aGlzLnRhYmxlSGVhZGVyTW9kZSA9IFRhYmxlSGVhZGVyV2lkdGhNb2RlLkZyZWVDb2x1bW5TaXplO1xuICAgICAgICBzZXRDb2x1bW5XaWR0aEJ5TWF4TW9Db250ZW50V2lkdGgodGhpcy5tb0RhdGFMaXN0LCBjb2x1bW4pO1xuICAgICAgICBjb2x1bW4uJFdpZHRoID0gY29sdW1uLiRDb250ZW50V2lkdGg7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aERvbSwgJ3dpZHRoJywgY29sdW1uLiRXaWR0aCk7XG4gICAgICAgIHRoaXMuX2ZpcmVSZXNpemVDaGFuZ2VkKCk7XG4gICAgfVxuXG4gICAgb25TZXRUYWJsZUhlYWRlckRvbShkb20pOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YWJsZUhlYWRlckRvbSA9IGRvbTtcbiAgICAgICAgY29uc3QgcmVjdCA9IGRvbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgdGhpcy50YWJsZUhlYWRlclRvcCA9IHJlY3QudG9wO1xuICAgICAgICB0aGlzLnRhYmxlSGVhZGVySGVpZ2h0ID0gcmVjdC5oZWlnaHQ7XG4gICAgfVxuICAgIG9uSGVhZGVyVmlzaWJpbGl0eUNoYW5nZShlLCBkb20pOiB2b2lkIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLmhlYWRlck9ic2VydmVyRG9tID0gZG9tO1xuICAgICAgICBpZiAoZSA9PT0gJ05vdFZpc2libGUnKSB7XG4gICAgICAgICAgICB0aGlzLnN0aWNreUVuYWJsZS5zZXQodHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0aWNreUVuYWJsZS5zZXQoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Sb3dWaXNpYmlsaXR5Q2hhbmdlKGUsIGluZGV4LCBkb20pOiB2b2lkIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoZSAhPT0gJ1BlbmRpbmcnKSB7XG4gICAgICAgICAgICBpZiAoZSA9PT0gJ05vdFZpc2libGUnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmlzaWJsZUl0ZW1zLmluZGV4T2YoaW5kZXgpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvd1Zpc2libGUkLm5leHQoeyBpbmRleCwgZG9tIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMudmlzaWJsZUl0ZW1zLmZpbHRlcigoYykgPT4gYyAhPT0gaW5kZXgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLm5vdFZpc2libGVJdGVtcy5wdXNoKGluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlID09PSAnVmlzaWJsZScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5vdFZpc2libGVJdGVtcyA9IHRoaXMubm90VmlzaWJsZUl0ZW1zLmZpbHRlcigoYykgPT4gYyAhPT0gaW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlSXRlbXMucHVzaChpbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyB0aGlzLnJvd1Zpc2libGUkLm5leHQoeyBpbmRleCwgZG9tIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHByaXZhdGUgX3NldFBhcmVudFdpZHRoRml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5fZWwubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlLCAnd2lkdGgnLCBgMTAwJWApO1xuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5fdGFibGVSZWYubmF0aXZlRWxlbWVudCwgJ21pbi13aWR0aCcsIGAxMDAlYCk7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl90YWJsZVJlZi5uYXRpdmVFbGVtZW50LCAnd2lkdGgnLCBgMTAwJWApO1xuICAgIH1cbiAgICBwcml2YXRlIF9zZXRQYXJlbnRXaWR0aEZpdFRvT2Zmc2V0V2lkdGgoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZShcbiAgICAgICAgICAgIHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZSxcbiAgICAgICAgICAgICd3aWR0aCcsXG4gICAgICAgICAgICBgJHt0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGh9cHhgXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl90YWJsZVJlZi5uYXRpdmVFbGVtZW50LCAnbWluLXdpZHRoJywgYCR7dGhpcy5fZWwubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aH1weGApO1xuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5fdGFibGVSZWYubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgYCR7dGhpcy5fZWwubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aH1weGApO1xuICAgIH1cbiAgICBwcml2YXRlIF9zZXRQYXJlbnRXaWR0aCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKFxuICAgICAgICAgICAgdGhpcy5fZWwubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlLFxuICAgICAgICAgICAgJ3dpZHRoJyxcbiAgICAgICAgICAgIGAke3RoaXMuX2VsLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aH1weGBcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfcmVmcmVzaFRoV2lkdGgoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUNvbHVtbnNXaWR0aCh0aGlzLm1vRGF0YUxpc3QsIHRoaXMuY29sdW1ucyk7XG4gICAgICAgIHRoaXMuX3RhYmxlSGVhZGVyQ29tcG9uZW50Py5SZWZyZXNoVGFibGVUaFdpZHRoKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX3NldFdpZHRoKHNldFdpZHRoPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCB3aWR0aE9mRG9tID0gdGhpcy5fZWwubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgICAgICBpZiAod2lkdGhPZkRvbSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh3aWR0aE9mRG9tICE9PSB0aGlzLm9sZFdpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLl9yZWZyZXNoVGhXaWR0aCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub2xkV2lkdGggPSB3aWR0aE9mRG9tO1xuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUoXG4gICAgICAgICAgICB0aGlzLl90YWJsZVJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgJ21heC13aWR0aCcsXG4gICAgICAgICAgICB0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggKyAncHgnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl90YWJsZVJlZi5uYXRpdmVFbGVtZW50LCAnd2lkdGgnLCB3aWR0aE9mRG9tICsgJ3B4Jyk7XG4gICAgfVxuICAgIHByaXZhdGUgX2NhbGN1bGF0ZUhlYWRlclN0aWNreVRvcChkb206IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnN0aWNreUVuYWJsZSgpICYmIHRoaXMudGFibGVIZWFkZXJEb20pIHtcbiAgICAgICAgICAgIC8vIGNvbnN0IHJlYyA9IHRoaXMuaGVhZGVyT2JzZXJ2ZXJEb20uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICAvLyBjb25zdCB0b3AgPSByZWMudG9wO1xuICAgICAgICAgICAgLy8gY29uc3QgY2FsYyA9IHRoaXMudGFibGVIZWFkZXJUb3AgLSB0b3AgLSB0aGlzLnRhYmxlSGVhZGVySGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgICAgIGNvbnN0IHJlYyA9IGRvbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICAgICAgdGhpcy5faGVhZGVyVG9wJC5uZXh0KHJlYy50b3AgLSAxMiArIHRoaXMudGFibGVIZWFkZXJIZWlnaHQgKyAncHgnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBfZmlyZVJlc2l6ZUNoYW5nZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29sdW1uUmVzaXplZC5lbWl0KHtcbiAgICAgICAgICAgIGNvbHVtbnM6IHRoaXMuY29sdW1ucyxcbiAgICAgICAgICAgIHJlc2l6ZWQ6IHRoaXMuY29sdW1ucy5tYXAoKGMpID0+ICh7IG5hbWU6IGMuTmFtZSwgd2lkdGg6IGMuV2lkdGggfSkpXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2NhbGN1bGF0ZUNvbHVtbnNXaWR0aChtb0RhdGFMaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10sIGNvbHVtbnM6IFJlcG9ydFZpZXdDb2x1bW5bXSk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKHRoaXMudGFibGVIZWFkZXJNb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFRhYmxlSGVhZGVyV2lkdGhNb2RlLkZyZWVDb2x1bW5TaXplOlxuICAgICAgICAgICAgICAgIHRoaXMuX2ZyZWVDb2x1bW5TaXplKG1vRGF0YUxpc3QsIGNvbHVtbnMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBUYWJsZUhlYWRlcldpZHRoTW9kZS5GaXRUb1Jvd0NvbnRlbnQ6XG4gICAgICAgICAgICAgICAgdGhpcy5fZml0VG9Sb3dDb250ZW50Q29sdW1uKG1vRGF0YUxpc3QsIGNvbHVtbnMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBUYWJsZUhlYWRlcldpZHRoTW9kZS5GaXRUb0NvbnRhaW5lcjpcbiAgICAgICAgICAgICAgICB0aGlzLl9maXRUb0NvbnRhaW5lcihtb0RhdGFMaXN0LCBjb2x1bW5zKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2ZpdFRvQ29sdW1uKG1vRGF0YUxpc3QsIGNvbHVtbnMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxEb20gPSB0aGlzLl9lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjYWxjdWxhdGVDb2x1bW5XaWR0aChlbERvbSwgY29sdW1ucywgbW9EYXRhTGlzdCwgdGhpcy5kaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudSwgdGhpcy5jb250ZXh0TWVudUl0ZW1zKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9maXRUb1Jvd0NvbnRlbnRDb2x1bW4obW9EYXRhTGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdLCBjb2x1bW5zOiBSZXBvcnRWaWV3Q29sdW1uW10pOiB2b2lkIHtcbiAgICAgICAgY2FsY3VsYXRlQ29sdW1uQ29udGVudChjb2x1bW5zLCBtb0RhdGFMaXN0KTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9maXRUb0NvbnRhaW5lcihtb0RhdGFMaXN0LCBjb2x1bW5zKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsRG9tID0gdGhpcy5fZWwubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjYWxjdWxhdGVDb2x1bW5XaWR0aEZpdFRvQ29udGFpbmVyKFxuICAgICAgICAgICAgZWxEb20sXG4gICAgICAgICAgICB0aGlzLmNhblZpZXcsXG4gICAgICAgICAgICB0aGlzLmRpc2FibGVIZWFkZXJDb250ZXh0TWVudSxcbiAgICAgICAgICAgIHRoaXMuY29udGV4dE1lbnVJdGVtcyxcbiAgICAgICAgICAgIHRoaXMuY29sdW1uc1xuICAgICAgICApO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2ZyZWVDb2x1bW5TaXplKG1vRGF0YUxpc3QsIGNvbHVtbnMpOiB2b2lkIHtcbiAgICAgICAgY2FsY3VsYXRlRnJlZUNvbHVtblNpemUodGhpcy5jb2x1bW5zKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9zZXRIZWlnaHQocGFyZW50SGVpZ2h0OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaW5EaWFsb2cpIHtcbiAgICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gcGFyZW50SGVpZ2h0O1xuICAgICAgICB9XG4gICAgfVxuICAgIHByb3RlY3RlZCBfc2V0SGFzU3VtbWVyeShjYXJ0YWJsZVRlbXBsYXRlcyk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmRldGFpbHNDb2x1bW5zPy5sZW5ndGggPiAwIHx8XG4gICAgICAgICAgICB0aGlzLmRldGFpbHNDb21wb25lbnQ/LlNlbGVjdG9yIHx8XG4gICAgICAgICAgICAoY2FydGFibGVUZW1wbGF0ZXMgJiYgT2JqZWN0LmtleXMoY2FydGFibGVUZW1wbGF0ZXMpLmxlbmd0aCA+IDApXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5zaG93RGV0YWlsc0luUm93ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaGFzRGV0YWlsc0luUm93LmVtaXQodHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhhc0RldGFpbHNJblJvdy5lbWl0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2NvbnRhaW5lcldpZHRoQ2hhbmdlZCh2YWw6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodmFsID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLl93aWR0aCA9ICcxMDAlJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3dpZHRoID0gdmFsID8gdmFsICsgJ3B4JyA6ICcxMDAlJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5fZWwubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgdGhpcy5fd2lkdGgpO1xuICAgIH1cbn1cbiIsIjx0YWJsZVxuICAgIGZkLXRhYmxlXG4gICAgI3RhYmxlVHBsXG4gICAgI2hlYWRlckJvdHRvbU9ic2VydmVyXG4gICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJcbiAgICBbaW50ZXJzZWN0aW9uVGhyZXNob2xkXT1cIjAuMVwiXG4gICAgKHZpc2liaWxpdHlDaGFuZ2UpPVwib25UYWJsZVZpc2liaWxpdHlDaGFuZ2UoJGV2ZW50LCBoZWFkZXJCb3R0b21PYnNlcnZlcilcIlxuICAgIFtwb3BJbl09XCJwb3BpblwiXG4gICAgW2NsYXNzLnRhYmxlLWZpeGVkXT1cIlxuICAgICAgICAhY29udGV4dFZpZXc/LkdyaWRfSGlkZUhlYWRlciAmJiAoIXBvcGluIHx8IHNlY29uZGFyeUNvbHVtbnMubGVuZ3RoID09PSAwKSAmJiAhZGlzYWJsZUZpeGVkVGFibGVMYXlvdXRcbiAgICBcIlxuICAgIFtub0JvcmRlclhdPVwidmlld1NldHRpbmc/Lk5vSG9yaXp0b25hbEJvcmRlcnMgPT09IHRydWVcIlxuICAgIFtub0JvcmRlclldPVwidmlld1NldHRpbmc/Lk5vVmVydGljYWxCb3JkZXJzID09PSB0cnVlIHx8IChwb3BpbiAmJiBzZWNvbmRhcnlDb2x1bW5zLmxlbmd0aCA+IDApXCJcbj5cbiAgICBAaWYgKGNvbHVtbnMgfCBtZXJnZUZpZWxkc1RvQ29sdW1uczogdmlld1NldHRpbmc/Lk1lcmdlRmllbGRzVG9Db2x1bW5zPy5Nb0RhdGFMaXN0OyBhcyBtZXJnZUZpZWxkc1RvQ29sdW1ucykge1xuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIGhlYWRlclRlbXBsYXRlO1xuICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IG1lcmdlRmllbGRzVG9Db2x1bW5zLCBtb0RhdGFMaXN0Q291bnQ6IG1vRGF0YUxpc3Q/Lmxlbmd0aCB9XG4gICAgICAgIFwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICAgIEBpZiAobW9EYXRhTGlzdD8ubGVuZ3RoKSB7XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgYm9keVRlbXBsYXRlO1xuICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IG1lcmdlRmllbGRzVG9Db2x1bW5zLCBwcmV2aWV3Q29sdW1uOiBhbGxDb2x1bW5zIHwgZmluZFByZXZpZXdDb2x1bW4gfVxuICAgICAgICBcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBtZXJnZUZpZWxkc1RvQ29sdW1ucyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgfSB9XG48L3RhYmxlPlxuPCEtLXJlbmRlckNvbHVtbi0tPlxuXG5AaWYgKCFtb0RhdGFMaXN0Py5sZW5ndGgpIHtcbjxic3Utbm8tZGF0YVxuICAgIFtjbGFzcy5uby10b3Bib3JkZXJdPVwiIWhpZGVUb29sYmFyXCJcbiAgICBbY2xhc3Mubm9ib3JkZXJdPVwiY29udGV4dFZpZXcuR3JpZF9IaWRlSGVhZGVyICYmIGhpZGVUb29sYmFyXCJcbiAgICBbc2ltcGxlXT1cInRydWVcIlxuPlxuPC9ic3Utbm8tZGF0YT5cbn1cblxuPG5nLXRlbXBsYXRlICNoZWFkZXJUZW1wbGF0ZSBsZXQtY29sdW1ucyBsZXQtbW9EYXRhTGlzdENvdW50PlxuICAgIDxic3UtYmFyc2EtdGFibGUtaGVhZGVyXG4gICAgICAgIFtzdGlja3ldPVwic3RpY2t5RW5hYmxlKClcIlxuICAgICAgICBbaGFzU2Vjb25kYXJ5Q29sdW1uc109XCJzZWNvbmRhcnlDb2x1bW5zLmxlbmd0aCA+IDBcIlxuICAgICAgICBbY2xhc3MuaGFzLXRvb2xiYXJdPVwiIWhpZGVUb29sYmFyXCJcbiAgICAgICAgW3N0eWxlLnBvaW50ZXItZXZlbnRzXT1cIm1vRGF0YUxpc3RDb3VudCA/ICdhdXRvJyA6ICdub25lJ1wiXG4gICAgICAgIFt0YWJsZVdpZHRoXT1cImVsV2lkdGhcIlxuICAgICAgICBbc2hvd0RldGFpbHNJblJvd109XCJzaG93RGV0YWlsc0luUm93XCJcbiAgICAgICAgW2hpZGVPcGVuSWNvbl09XCJoaWRlT3Blbkljb25cIlxuICAgICAgICBbcmVzaXplZEJ5VXNlcl09XCJyZXNpemVkQnlVc2VyXCJcbiAgICAgICAgW3RhYmxlSGVhZGVyTW9kZV09XCJ0YWJsZUhlYWRlck1vZGVcIlxuICAgICAgICBbc2hvd1Jvd051bWJlcl09XCJjb250ZXh0Vmlldz8uR3JpZF9TaG93Um93TnVtYmVyXCJcbiAgICAgICAgW2FsbENoZWNrZWRdPVwiYWxsQ2hlY2tlZFwiXG4gICAgICAgIFtydGxdPVwicnRsXCJcbiAgICAgICAgW2FjdGlvbkxpc3RdPVwiYWN0aW9uTGlzdFwiXG4gICAgICAgIFtkaXNhYmxlUmVzcG9uc2l2ZV09XCJkaXNhYmxlUmVzcG9uc2l2ZVwiXG4gICAgICAgIFtpc0NoZWNrTGlzdF09XCJpc0NoZWNrTGlzdFwiXG4gICAgICAgIFtjb2x1bW5zXT1cIlxuICAgICAgICAgICAgY29sdW1uc1xuICAgICAgICAgICAgICAgIHwgZmlsdGVyQ29sdW1uc0J5RGV0YWlsczogZGV0YWlsc0NvbHVtbnM6cm93SW5kaWNhdG9yXG4gICAgICAgICAgICAgICAgfCBmaWx0ZXI6IHsgSXNQcmV2aWV3OiBmYWxzZSB9XG4gICAgICAgICAgICAgICAgfCBoaWRlQ29sdW1uc0lubW9iaWxlOiB2aWV3U2V0dGluZz8uSGlkZUNvbHVtbnNJbk1vYmlsZVxuICAgICAgICBcIlxuICAgICAgICBbZml0V2lkdGhdPVwiZml0V2lkdGhcIlxuICAgICAgICBbZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVdPVwiZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVcIlxuICAgICAgICBbaW5saW5lRWRpdE1vZGVdPVwiaW5saW5lRWRpdE1vZGVcIlxuICAgICAgICBbY29udGV4dE1lbnVJdGVtc109XCJjb250ZXh0TWVudUl0ZW1zXCJcbiAgICAgICAgW2NvbnRleHRNZW51V2lkdGhdPVwiY29udGV4dE1lbnVXaWR0aFwiXG4gICAgICAgIFtzaG93Vmlld0J1dHRvbl09XCJzaG93Vmlld0J1dHRvblwiXG4gICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxuICAgICAgICBbdmlld1NldHRpbmddPVwidmlld1NldHRpbmdcIlxuICAgICAgICBbaGlkZUhlYWRlcl09XCJjb250ZXh0Vmlldy5HcmlkX0hpZGVIZWFkZXJcIlxuICAgICAgICBbcm93SW5kaWNhdG9yXT1cInJvd0luZGljYXRvclwiXG4gICAgICAgIFtkaXNhYmxlUmVzaXplXT1cImRpc2FibGVSZXNpemVcIlxuICAgICAgICBbZGlzYWJsZUhlYWRlckNvbnRleHRNZW51XT1cImRpc2FibGVIZWFkZXJDb250ZXh0TWVudVwiXG4gICAgICAgIChoZWFkZXJSZW5kZXIpPVwib25TZXRUYWJsZUhlYWRlckRvbSgkZXZlbnQpXCJcbiAgICAgICAgKGNvbHVtblJlc2l6ZSk9XCJvbkNvbHVtblJlc2l6ZWQoJGV2ZW50KVwiXG4gICAgICAgIChjb2x1bW5SZXNpemluZyk9XCJvbkNvbHVtblJlc2l6aW5nKCRldmVudClcIlxuICAgICAgICAoZml0VG9Db250ZW50KT1cIm9uRml0VG9Db250ZW50KCRldmVudClcIlxuICAgICAgICAoZml0VG9Db250YWluZXIpPVwib25GaXRUb0NvbnRhaW5lcigpXCJcbiAgICAgICAgKGZyZWVDb2x1bW5TaXplKT1cIm9uRnJlZUNvbHVtblNpemluZygpXCJcbiAgICAgICAgKGFsbENoZWNrYm94KT1cIm9uQWxsQ2hlY2tib3goJGV2ZW50KVwiXG4gICAgICAgIChzb3J0QXNjZW5kaW5nKT1cIm9uU29ydEFzY2VuZGluZygkZXZlbnQpXCJcbiAgICAgICAgKHNvcnREZXNjZW5kaW5nKT1cIm9uU29ydERlc2NlbmRpbmcoJGV2ZW50KVwiXG4gICAgICAgIChmaWx0ZXIpPVwib25GaWx0ZXIoJGV2ZW50KVwiXG4gICAgICAgIChyZXNldEdyaWRTZXR0aW5ncyk9XCJyZXNldEdyaWRTZXR0aW5ncy5lbWl0KClcIlxuICAgID48L2JzdS1iYXJzYS10YWJsZS1oZWFkZXI+XG4gICAgPCEtLSA8ZGl2XG4gICAgICAgICNoZWFkZXJCb3R0b21PYnNlcnZlclxuICAgICAgICBpbnRlcnNlY3Rpb25PYnNlcnZlclxuICAgICAgICBbaW50ZXJzZWN0aW9uVGhyZXNob2xkXT1cIjAuMVwiXG4gICAgICAgICh2aXNpYmlsaXR5Q2hhbmdlKT1cIm9uSGVhZGVyVmlzaWJpbGl0eUNoYW5nZSgkZXZlbnQsIGhlYWRlckJvdHRvbU9ic2VydmVyKVwiXG4gICAgPjwvZGl2PiAtLT5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2JvZHlUZW1wbGF0ZSBsZXQtY29sdW1ucyBsZXQtcHJldmlld0NvbHVtbj1cInByZXZpZXdDb2x1bW5cIj5cbiAgICA8dGJvZHlcbiAgICAgICAgI2JvZHlcbiAgICAgICAgZmQtdGFibGUtYm9keVxuICAgICAgICBbY2xhc3Mubm9ib3JkZXJdPVwidmlld1NldHRpbmc/Lk5vQm9keUJvcmRlcnMgPT09IHRydWVcIlxuICAgICAgICBbbm9Cb3JkZXJYXT1cInZpZXdTZXR0aW5nPy5Ob0hvcml6dG9uYWxCb3JkZXJzID09PSB0cnVlIHx8IHByZXZpZXdDb2x1bW5cIlxuICAgICAgICBbbm9Cb3JkZXJZXT1cIihwb3BpbiAmJiBzZWNvbmRhcnlDb2x1bW5zLmxlbmd0aCA+IDApIHx8IHByZXZpZXdDb2x1bW5cIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIEBmb3IgKG1vIG9mIG1vRGF0YUxpc3QgfCBtdWx0aXBsZUdyb3VwQnk6IGdyb3VwYnk7IHRyYWNrIF90cmFja0J5Um93KGluZGV4LCBtbyk7IGxldCBpbmRleCA9ICRpbmRleCkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgIGhhc1Jvd09sZ28gPyByb3dPbGdvVGVtcGxhdGUgOiByb3dUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBtbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd051bWJlcjogbW8uSWQgfCByb3dOdW1iZXI6IHBhZ2luZ1NldHRpbmc6bW9EYXRhTGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd0luZGljYXRvckNvbG9yOiAhY29sdW1ucy5sZW5ndGggPyAnJyA6IChjb2x1bW5zWzBdLkNhcHRpb24gfCBydmFsOiBtbzpjb2x1bW5zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IGNvbHVtbnMgfCBjb2x1bW5DdXN0b21Db21wb25lbnQ6IHZpZXdTZXR0aW5nPy5Db2x1bW5Db21wb25lbnRzPy5Nb0RhdGFMaXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kYXJ5Q29sdW1uczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRhcnlDb2x1bW5zIHwgY29sdW1uQ3VzdG9tQ29tcG9uZW50OiB2aWV3U2V0dGluZz8uQ29sdW1uQ29tcG9uZW50cz8uTW9EYXRhTGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vRGF0YUxpc3Q6IG1vRGF0YUxpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBtb0RhdGFMaXN0Q291bnQ6IG1vRGF0YUxpc3QubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FydGFibGVUZW1wbGF0ZTogY2FydGFibGVUZW1wbGF0ZXNbbW8uUmVsYXRlZE1vPy4kVHlwZURlZklkICsgJ0AnICsgbW8uQ2FydGFibGVTZXR0aW5ncz8uSWRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlld0NvbHVtbjogcHJldmlld0NvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHNDb2xsYXBzZWQ6IHZpZXdTZXR0aW5nPy5EZXRhaWxzU2V0dGluZz8uRGV0YWlsc0NvbGxhcHNlZCA9PT0gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVEZXRhaWxzVGV4dDogdmlld1NldHRpbmc/LkRldGFpbHNTZXR0aW5nPy5IaWRlRGV0YWlsc1RleHQgPT09IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGJvZHk+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNmb290ZXJUZW1wbGF0ZSBsZXQtY29sdW1ucz5cbiAgICBAaWYgKGhhc1N1bW1hcnkpIHtcbiAgICA8dGZvb3QgZmQtdGFibGUtZm9vdGVyPlxuICAgICAgICA8dHIgZmQtdGFibGUtcm93IGNsYXNzPVwicm93LXN1bW1hcnlcIj5cbiAgICAgICAgICAgIEBpZiAoaXNDaGVja0xpc3QpIHtcbiAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsIGNvbHVtblJlc2l6ZXI+XG4gICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cImNvbC10b3RhbC10ZXh0XCI+e3sgJ1RvdGFsJyB8IGJiYlRyYW5zbGF0ZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIH0gQGlmICghaXNDaGVja0xpc3QpIHtcbiAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsIGNsYXNzPVwic2luZ2xlLXNlbGVjdFwiPlxuICAgICAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJjb2wtdG90YWwtdGV4dFwiPnt7ICdUb3RhbCcgfCBiYmJUcmFuc2xhdGUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICB9IEBmb3IgKGNvbHVtbiBvZiBjb2x1bW5zOyB0cmFjayBjb2x1bW47IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgQGlmIChjb2x1bW4uSGFzU3VtbWFyeSkge1xuICAgICAgICAgICAgICAgIDxzdHJvbmcgc3R5bGU9XCJkaXJlY3Rpb246IGx0cjsgZGlzcGxheTogYmxvY2tcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgbW9EYXRhTGlzdCB8IHRvdGFsU3VtbWFyeTogY29sdW1uLk5hbWUgfCBudW1iZXIgfX08L3N0cm9uZ1xuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgfSBAaWYgKGNvbnRleHRNZW51SXRlbXMgJiYgY29udGV4dE1lbnVJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICA8dGQgZmQtdGFibGUtY2VsbCBzdHlsZT1cIndpZHRoOiAxMDBweFwiPjwvdGQ+XG4gICAgICAgICAgICB9IEBpZiAoIWhpZGVPcGVuSWNvbiAmJiBjYW5WaWV3ICYmICghaW5saW5lRWRpdE1vZGUgfHwgIWFsbG93SW5saW5lRWRpdCkpIHtcbiAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsPjwvdGQ+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvdHI+XG4gICAgPC90Zm9vdD5cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlXG4gICAgI3Jvd09sZ29UZW1wbGF0ZVxuICAgIGxldC1tb1xuICAgIGxldC1pbmRleD1cImluZGV4XCJcbiAgICBsZXQtY29sdW1ucz1cImNvbHVtbnNcIlxuICAgIGxldC1tb0RhdGFMaXN0Q291bnQ9XCJtb0RhdGFMaXN0Q291bnRcIlxuICAgIGxldC1tb0RhdGFMaXN0PVwibW9EYXRhTGlzdFwiXG4gICAgbGV0LWNhcnRhYmxlVGVtcGxhdGU9XCJjYXJ0YWJsZVRlbXBsYXRlXCJcbiAgICBsZXQtc2Vjb25kYXJ5Q29sdW1ucz1cInNlY29uZGFyeUNvbHVtbnNcIlxuICAgIGxldC1yb3dJbmRpY2F0b3JDb2xvcj1cInJvd0luZGljYXRvckNvbG9yXCJcbiAgICBsZXQtcm93TnVtYmVyPVwicm93TnVtYmVyXCJcbiAgICBsZXQtcHJldmlld0NvbHVtbj1cInByZXZpZXdDb2x1bW5cIlxuICAgIGxldC1kZXRhaWxzQ29sbGFwc2VkPVwiZGV0YWlsc0NvbGxhcHNlZFwiXG4gICAgbGV0LWhpZGVEZXRhaWxzVGV4dD1cImhpZGVEZXRhaWxzVGV4dFwiXG4+XG4gICAgPGJucmMtZHluYW1pYy1pdGVtLWNvbXBvbmVudFxuICAgICAgICBbY29tcG9uZW50XT1cInZpZXdTZXR0aW5nLlJvd09sZ29cIlxuICAgICAgICBbbW9dPVwibW9cIlxuICAgICAgICBbZGV0YWlsc0NvbGxhcHNlZF09XCJkZXRhaWxzQ29sbGFwc2VkXCJcbiAgICAgICAgW2hpZGVEZXRhaWxzVGV4dF09XCJoaWRlRGV0YWlsc1RleHRcIlxuICAgICAgICBbaXNMYXN0Q2hpbGRHcm91cF09XCJtby4kSXNMYXN0Q2hpbGRHcm91cFwiXG4gICAgICAgIFtncm91cFN1bW1hcnldPVwiZ3JvdXBTdW1tYXJ5XCJcbiAgICAgICAgW3Nob3dWaWV3QnV0dG9uXT1cInNob3dWaWV3QnV0dG9uXCJcbiAgICAgICAgW1Vsdk1haW5DdHJscl09XCJVbHZNYWluQ3RybHJcIlxuICAgICAgICBbbW9EYXRhTGlzdF09XCJtb0RhdGFMaXN0XCJcbiAgICAgICAgW3Nob3dEZXRhaWxzSW5Sb3ddPVwic2hvd0RldGFpbHNJblJvd1wiXG4gICAgICAgIFtoaWRlT3Blbkljb25dPVwiaGlkZU9wZW5JY29uXCJcbiAgICAgICAgW2RldGFpbHNDb2x1bW5zXT1cImRldGFpbHNDb2x1bW5zXCJcbiAgICAgICAgW3Nob3dSb3dOdW1iZXJdPVwiY29udGV4dFZpZXc/LkdyaWRfU2hvd1Jvd051bWJlclwiXG4gICAgICAgIFtyb3dOdW1iZXJdPVwicm93TnVtYmVyXCJcbiAgICAgICAgW2NvbHVtbkNvbXBvbmVudHNdPVwidmlld1NldHRpbmc/LkNvbHVtbkNvbXBvbmVudHMgfHwgbnVsbFwiXG4gICAgICAgIFtjYXJ0YWJsZVRlbXBsYXRlXT1cImNhcnRhYmxlVGVtcGxhdGVcIlxuICAgICAgICBbY2FydGFibGVNb109XCJtby5SZWxhdGVkTW9cIlxuICAgICAgICBbZGlydHlDb2x1bW5zXT1cIm1vLiREaXJ0eUNvbHVtbnNcIlxuICAgICAgICBbY2FydGFibGVXb3JrZmxvd0RhdGFdPVwibW8uU2VyaWFsaXplZFdvcmtmbG93RGF0YVwiXG4gICAgICAgIFtzZXJpYWxpemVkUmVsYXRlZE1vXT1cIm1vLlNlcmlhbGl6ZWRSZWxhdGVkTW9cIlxuICAgICAgICBbZGV0YWlsc1RleHRdPVwidmlld1NldHRpbmc/LkRldGFpbHNTZXR0aW5nPy5CdXR0b25UZXh0XCJcbiAgICAgICAgW2RldGFpbHNUZXh0RnVuY3Rpb25dPVwidmlld1NldHRpbmc/LkRldGFpbHNTZXR0aW5nPy5CdXR0b25UZXh0RnVuY3Rpb25cIlxuICAgICAgICBbZGV0YWlsc0NvbXBvbmVudF09XCJkZXRhaWxzQ29tcG9uZW50XCJcbiAgICAgICAgW2NvbG9yaW5nUm93XT1cInZpZXdTZXR0aW5nPy5Db2xvcmluZ1Jvd1wiXG4gICAgICAgIFtpc0NoZWNrZWRdPVwibW8uJElzQ2hlY2tlZFwiXG4gICAgICAgIFt2aXNpYmlsaXR5XT1cIm1vLiRWaXNpYmlsaXR5XCJcbiAgICAgICAgW2V4cGFuZGVkXT1cIm1vLiRFeHBhbmRlZFwiXG4gICAgICAgIFtzdHlsZUluZGV4XT1cIm1vLiRTdHlsZUluZGV4XCJcbiAgICAgICAgW2xldmVsXT1cIm1vLiRMZXZlbFwiXG4gICAgICAgIFtwYXJlbnRFeHBhbmRlZF09XCJtby4kUGFyZW50Py4kRXhwYW5kZWRcIlxuICAgICAgICBbbW9EYXRhTGlzdENvdW50XT1cIm1vRGF0YUxpc3RDb3VudFwiXG4gICAgICAgIFtjb2x1bW5zQ291bnRdPVwiY29sdW1uc0NvdW50IC0gZGV0YWlsc0NvbHVtbnMubGVuZ3RoXCJcbiAgICAgICAgW3R5cGVEZWZJZF09XCJ0eXBlRGVmSWRcIlxuICAgICAgICBbZXh0cmFSZWxhdGlvbl09XCJleHRyYVJlbGF0aW9uXCJcbiAgICAgICAgW2Zvcm1TZXR0aW5nXT1cImZvcm1TZXR0aW5nXCJcbiAgICAgICAgW2luZGV4XT1cImluZGV4XCJcbiAgICAgICAgW3NldHRpbmddPVwidmlld1NldHRpbmdcIlxuICAgICAgICBbc2Vjb25kYXJ5Q29sdW1uc109XCJzZWNvbmRhcnlDb2x1bW5zIHwgZmlsdGVyQ29sdW1uc0J5RGV0YWlsczogZGV0YWlsc0NvbHVtbnM6cm93SW5kaWNhdG9yXCJcbiAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1ucyB8IGZpbHRlckNvbHVtbnNCeURldGFpbHM6IGRldGFpbHNDb2x1bW5zOnJvd0luZGljYXRvclwiXG4gICAgICAgIFtpc05ld0lubGluZU1vXT1cIm1vLiROZXdJbmxpbmVNb1wiXG4gICAgICAgIFthY2Nlc3NdPVwiYWNjZXNzXCJcbiAgICAgICAgW2lubGluZUVkaXRNb2RlXT1cImlubGluZUVkaXRNb2RlXCJcbiAgICAgICAgW2FsbG93SW5saW5lRWRpdF09XCJhbGxvd0lubGluZUVkaXRcIlxuICAgICAgICBbcnRsXT1cInJ0bFwiXG4gICAgICAgIFtkZXZpY2VOYW1lXT1cImRldmljZU5hbWVcIlxuICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcbiAgICAgICAgW2FsbENvbHVtbnNdPVwiYWxsQ29sdW1uc1wiXG4gICAgICAgIFtjb250ZXh0TWVudUl0ZW1zXT1cImNvbnRleHRNZW51SXRlbXNcIlxuICAgICAgICBbY2FuVmlld109XCJjYW5WaWV3XCJcbiAgICAgICAgW2NvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxuICAgICAgICBbZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVdPVwiZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVcIlxuICAgICAgICBbbmF2aWdhdGlvbkFycm93XT1cIm5hdmlnYXRpb25BcnJvd1wiXG4gICAgICAgIFtpc0NoZWNrTGlzdF09XCJpc0NoZWNrTGlzdFwiXG4gICAgICAgIFtyb3dJbmRpY2F0b3JdPVwicm93SW5kaWNhdG9yXCJcbiAgICAgICAgW3Jvd0luZGljYXRvckNvbG9yXT1cInJvd0luZGljYXRvckNvbG9yXCJcbiAgICAgICAgKGV2ZW50cyk9XCJvbk9sZ29FdmVudHMoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvYm5yYy1keW5hbWljLWl0ZW0tY29tcG9uZW50PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZVxuICAgICNyb3dUZW1wbGF0ZVxuICAgIGxldC1tb1xuICAgIGxldC1pbmRleD1cImluZGV4XCJcbiAgICBsZXQtcm93TnVtYmVyPVwicm93TnVtYmVyXCJcbiAgICBsZXQtY29sdW1ucz1cImNvbHVtbnNcIlxuICAgIGxldC1tb0RhdGFMaXN0Q291bnQ9XCJtb0RhdGFMaXN0Q291bnRcIlxuICAgIGxldC1tb0RhdGFMaXN0PVwibW9EYXRhTGlzdFwiXG4gICAgbGV0LWNhcnRhYmxlVGVtcGxhdGU9XCJjYXJ0YWJsZVRlbXBsYXRlXCJcbiAgICBsZXQtc2Vjb25kYXJ5Q29sdW1ucz1cInNlY29uZGFyeUNvbHVtbnNcIlxuICAgIGxldC1yb3dJbmRpY2F0b3JDb2xvcj1cInJvd0luZGljYXRvckNvbG9yXCJcbiAgICBsZXQtcHJldmlld0NvbHVtbj1cInByZXZpZXdDb2x1bW5cIlxuICAgIGxldC1kZXRhaWxzQ29sbGFwc2VkPVwiZGV0YWlsc0NvbGxhcHNlZFwiXG4gICAgbGV0LWhpZGVEZXRhaWxzVGV4dD1cImhpZGVEZXRhaWxzVGV4dFwiXG4+XG4gICAgPGJzdS1iYXJzYS10YWJsZS1yb3dcbiAgICAgICAgW21vXT1cIm1vXCJcbiAgICAgICAgW2RpcnR5Q29sdW1uc109XCJtby4kRGlydHlDb2x1bW5zXCJcbiAgICAgICAgW2lzTGFzdENoaWxkR3JvdXBdPVwibW8uJElzTGFzdENoaWxkR3JvdXBcIlxuICAgICAgICBbbW9EYXRhTGlzdF09XCJtb0RhdGFMaXN0XCJcbiAgICAgICAgW2hpZGVEZXRhaWxzVGV4dF09XCJoaWRlRGV0YWlsc1RleHRcIlxuICAgICAgICBbZGV0YWlsc0NvbGxhcHNlZF09XCJkZXRhaWxzQ29sbGFwc2VkXCJcbiAgICAgICAgW2dyb3VwU3VtbWFyeV09XCJncm91cFN1bW1hcnlcIlxuICAgICAgICBbVWx2TWFpbkN0cmxyXT1cIlVsdk1haW5DdHJsclwiXG4gICAgICAgIFtzaG93RGV0YWlsc0luUm93XT1cInNob3dEZXRhaWxzSW5Sb3dcIlxuICAgICAgICBbaGlkZU9wZW5JY29uXT1cImhpZGVPcGVuSWNvblwiXG4gICAgICAgIFtzaG93Um93TnVtYmVyXT1cImNvbnRleHRWaWV3Py5HcmlkX1Nob3dSb3dOdW1iZXJcIlxuICAgICAgICBbcm93TnVtYmVyXT1cInJvd051bWJlclwiXG4gICAgICAgIFtjb2xvcmluZ1Jvd109XCJ2aWV3U2V0dGluZz8uQ29sb3JpbmdSb3dcIlxuICAgICAgICBbZGlzYWJsZUVsbGFwc2lzXT1cInZpZXdTZXR0aW5nPy5EaXNhYmxlRWxsYXBzaXNcIlxuICAgICAgICBbc2hvd1ZpZXdCdXR0b25dPVwic2hvd1ZpZXdCdXR0b25cIlxuICAgICAgICBbZGV0YWlsc0NvbHVtbnNdPVwiZGV0YWlsc0NvbHVtbnNcIlxuICAgICAgICBbY29sdW1uQ29tcG9uZW50c109XCJ2aWV3U2V0dGluZz8uQ29sdW1uQ29tcG9uZW50cyB8fCBudWxsXCJcbiAgICAgICAgW2NhcnRhYmxlVGVtcGxhdGVdPVwiY2FydGFibGVUZW1wbGF0ZVwiXG4gICAgICAgIFtjYXJ0YWJsZU1vXT1cIm1vLlJlbGF0ZWRNb1wiXG4gICAgICAgIFtjYXJ0YWJsZVdvcmtmbG93RGF0YV09XCJtby5TZXJpYWxpemVkV29ya2Zsb3dEYXRhXCJcbiAgICAgICAgW3NlcmlhbGl6ZWRSZWxhdGVkTW9dPVwibW8uU2VyaWFsaXplZFJlbGF0ZWRNb1wiXG4gICAgICAgIFtkZXRhaWxzVGV4dF09XCJ2aWV3U2V0dGluZz8uRGV0YWlsc1NldHRpbmc/LkJ1dHRvblRleHRcIlxuICAgICAgICBbZGV0YWlsc0NvbXBvbmVudF09XCJkZXRhaWxzQ29tcG9uZW50XCJcbiAgICAgICAgW2lzQ2hlY2tlZF09XCJtby4kSXNDaGVja2VkXCJcbiAgICAgICAgW3Zpc2liaWxpdHldPVwibW8uJFZpc2liaWxpdHlcIlxuICAgICAgICBbZXhwYW5kZWRdPVwibW8uJEV4cGFuZGVkXCJcbiAgICAgICAgW3N0eWxlSW5kZXhdPVwibW8uJFN0eWxlSW5kZXhcIlxuICAgICAgICBbbGV2ZWxdPVwibW8uJExldmVsXCJcbiAgICAgICAgW3BhcmVudEV4cGFuZGVkXT1cIm1vLiRQYXJlbnQ/LiRFeHBhbmRlZFwiXG4gICAgICAgIFttb0RhdGFMaXN0Q291bnRdPVwibW9EYXRhTGlzdENvdW50XCJcbiAgICAgICAgW2NvbHVtbnNDb3VudF09XCJjb2x1bW5zQ291bnQgLSBkZXRhaWxzQ29sdW1ucy5sZW5ndGhcIlxuICAgICAgICBbdHlwZURlZklkXT1cInR5cGVEZWZJZFwiXG4gICAgICAgIFtleHRyYVJlbGF0aW9uXT1cImV4dHJhUmVsYXRpb25cIlxuICAgICAgICBbZm9ybVNldHRpbmddPVwiZm9ybVNldHRpbmdcIlxuICAgICAgICBbaW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICBbc2V0dGluZ109XCJ2aWV3U2V0dGluZ1wiXG4gICAgICAgIFtjaGVja2JveENvbXBvbmVudF09XCJ2aWV3U2V0dGluZz8uQ2hlY2tib3hDb21wb25lbnRcIlxuICAgICAgICBbc2Vjb25kYXJ5Q29sdW1uc109XCJcbiAgICAgICAgICAgIHNlY29uZGFyeUNvbHVtbnNcbiAgICAgICAgICAgICAgICB8IGZpbHRlckNvbHVtbnNCeURldGFpbHM6IGRldGFpbHNDb2x1bW5zOmZhbHNlXG4gICAgICAgICAgICAgICAgfCBmaWx0ZXI6IHsgSXNQcmV2aWV3OiBmYWxzZSB9XG4gICAgICAgICAgICAgICAgfCBoaWRlQ29sdW1uc0lubW9iaWxlOiB2aWV3U2V0dGluZz8uSGlkZUNvbHVtbnNJbk1vYmlsZVxuICAgICAgICBcIlxuICAgICAgICBbY29sdW1uc109XCJcbiAgICAgICAgICAgIGNvbHVtbnNcbiAgICAgICAgICAgICAgICB8IGZpbHRlckNvbHVtbnNCeURldGFpbHM6IGRldGFpbHNDb2x1bW5zOnJvd0luZGljYXRvclxuICAgICAgICAgICAgICAgIHwgZmlsdGVyOiB7IElzUHJldmlldzogZmFsc2UgfVxuICAgICAgICAgICAgICAgIHwgaGlkZUNvbHVtbnNJbm1vYmlsZTogdmlld1NldHRpbmc/LkhpZGVDb2x1bW5zSW5Nb2JpbGVcbiAgICAgICAgXCJcbiAgICAgICAgW2lzTmV3SW5saW5lTW9dPVwibW8uJE5ld0lubGluZU1vXCJcbiAgICAgICAgW2FjY2Vzc109XCJhY2Nlc3NcIlxuICAgICAgICBbc2ltcGxlSW5saW5lRWRpdF09XCJzaW1wbGVJbmxpbmVFZGl0XCJcbiAgICAgICAgW25vU2F2ZUlubGluZUVkaXRJblNlcnZlcl09XCJzaW1wbGVJbmxpbmVFZGl0XCJcbiAgICAgICAgW2FjdGlvbkxpc3RdPVwiYWN0aW9uTGlzdFwiXG4gICAgICAgIFtpbmxpbmVFZGl0TW9kZV09XCJpbmxpbmVFZGl0TW9kZVwiXG4gICAgICAgIFthbGxvd0lubGluZUVkaXRdPVwiYWxsb3dJbmxpbmVFZGl0XCJcbiAgICAgICAgW3J0bF09XCJydGxcIlxuICAgICAgICBbZGV2aWNlTmFtZV09XCJkZXZpY2VOYW1lXCJcbiAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXG4gICAgICAgIFthbGxDb2x1bW5zXT1cImFsbENvbHVtbnNcIlxuICAgICAgICBbY29udGV4dE1lbnVJdGVtc109XCJjb250ZXh0TWVudUl0ZW1zXCJcbiAgICAgICAgW2NhblZpZXddPVwiY2FuVmlld1wiXG4gICAgICAgIFtjb25kaXRpb25hbEZvcm1hdHNdPVwiY29uZGl0aW9uYWxGb3JtYXRzXCJcbiAgICAgICAgW2Rpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51XT1cImRpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51XCJcbiAgICAgICAgW25hdmlnYXRpb25BcnJvd109XCJuYXZpZ2F0aW9uQXJyb3dcIlxuICAgICAgICBbaXNDaGVja0xpc3RdPVwiaXNDaGVja0xpc3RcIlxuICAgICAgICBbcm93SW5kaWNhdG9yXT1cInJvd0luZGljYXRvclwiXG4gICAgICAgIFtyb3dJbmRpY2F0b3JDb2xvcl09XCJyb3dJbmRpY2F0b3JDb2xvclwiXG4gICAgICAgIFtwcmV2aWV3Q29sdW1uXT1cInByZXZpZXdDb2x1bW5cIlxuICAgICAgICAoY29sdW1uU3VtbWFyeSk9XCJjb2x1bW5TdW1tYXJ5LmVtaXQoJGV2ZW50KVwiXG4gICAgICAgIChyZXNldFdvcmtmbG93U3RhdGUpPVwicmVzZXRXb3JrZmxvd1N0YXRlLmVtaXQobW8pXCJcbiAgICAgICAgKGVzY2FwZUtleSk9XCJvbkVzY2FwZUtleSgkZXZlbnQpXCJcbiAgICAgICAgKGV4cGFuZENsaWNrKT1cIm9uRXhwYW5kQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgIChyb3dDaGVjayk9XCJvblJvd0NoZWNrKCRldmVudClcIlxuICAgICAgICAod29ya2Zsb3dTaGFyZUJ1dHRvbnMpPVwib25Xb3JrZmxvd1NoYXJlQnV0dG9ucygkZXZlbnQpXCJcbiAgICAgICAgKGRlc2VsZWN0QWxsKT1cIm9uRGVzZWxlY3RBbGwoKVwiXG4gICAgICAgIChyb3dDbGljayk9XCJvblJvd0NsaWNrKCRldmVudClcIlxuICAgICAgICAodWx2Q29tbWFuZCk9XCJvblVsdkNvbW1hbmQoJGV2ZW50KVwiXG4gICAgICAgIChhY3Rpb25MaXN0Q2xpY2spPVwib25BY3Rpb25MaXN0Q2xpY2sobW8sIGluZGV4LCAkZXZlbnQpXCJcbiAgICAgICAgKHNlbGVjdE5leHRJbmxpbmVSZWNvcmQpPVwib25TZWxlY3ROZXh0SW5saW5lUmVjb3JkKCRldmVudClcIlxuICAgICAgICAoZWRpdEZvcm1QYW5lbFNhdmUpPVwib25FZGl0Rm9ybVBhbmVsU2F2ZSgkZXZlbnQpXCJcbiAgICAgICAgKGVkaXRGb3JtUGFuZWxDYW5jZWwpPVwib25FZGl0Rm9ybVBhbmVsQ2FuY2VsKCRldmVudClcIlxuICAgICAgICAoZWRpdEZvcm1QYW5lbFZhbHVlQ2hhbmdlKT1cIm9uRWRpdEZvcm1QYW5lbFZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAoY2FydGFibGVGb3JtQ2xvc2VkKT1cIm9uQ2FydGFibGVGb3JtQ2xvc2VkKCRldmVudClcIlxuICAgID5cbiAgICA8L2JzdS1iYXJzYS10YWJsZS1yb3c+XG4gICAgPCEtLSA8ZGl2XG4gICAgICAgICNyb3dCb3R0b21cbiAgICAgICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJcbiAgICAgICAgW2ludGVyc2VjdGlvblRocmVzaG9sZF09XCIwLjFcIlxuICAgICAgICAodmlzaWJpbGl0eUNoYW5nZSk9XCJvblJvd1Zpc2liaWxpdHlDaGFuZ2UoJGV2ZW50LCBpbmRleCwgcm93Qm90dG9tKVwiXG4gICAgPjwvZGl2PiAtLT5cbjwvbmctdGVtcGxhdGU+XG48ZGl2ICN0YWJsZUJvdHRvbU9ic2VydmU+PC9kaXY+XG4iXX0=
288
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktdGFibGUtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi91aS10YWJsZS12aWV3L3VpLXRhYmxlLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktdGFibGUtdmlldy91aS10YWJsZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUVILHVCQUF1QixFQUV2QixvQkFBb0IsRUFFcEIsb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUNwQixrQ0FBa0MsRUFDbEMsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixpQ0FBaUMsRUFDcEMsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7Ozs7Ozs7QUFRL0YsTUFBTSxPQUFPLG9CQUNULFNBQVEsdUJBQTJDO0lBUHZEOztRQW9Cb0MsV0FBTSxHQUFrQixJQUFJLENBQUM7UUFDNUIsY0FBUyxHQUFrQixJQUFJLENBQUM7UUFDakUsV0FBTSxHQUFHLE1BQU0sQ0FBQztRQUdoQixxQkFBZ0IsR0FBbUUsRUFBRSxDQUFDO1FBRXRGLG9CQUFlLEdBQUcsb0JBQW9CLENBQUMsY0FBYyxDQUFDO1FBQ3RELGlCQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVu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WUFDWixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUN6QixDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDNUMsQ0FBQztRQUNELElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0UsQ0FBQzs4R0E1UVEsb0JBQW9CO2tHQUFwQixvQkFBb0IseWdCQUlnQixVQUFVLG1GQUM1Qyx5QkFBeUIsNEZDekN4QyxtaWRBd1ZBOzsyRkRwVGEsb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNJLG1CQUFtQixtQkFHWix1QkFBdUIsQ0FBQyxNQUFNOzhCQU1ZLFNBQVM7c0JBQW5FLFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNuQixxQkFBcUI7c0JBQTFELFNBQVM7dUJBQUMseUJBQXlCO2dCQUMzQixXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUMwQixNQUFNO3NCQUFyQyxXQUFXO3VCQUFDLGlCQUFpQjtnQkFDRyxTQUFTO3NCQUF6QyxXQUFXO3VCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIHNpZ25hbCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgIFJlcG9ydFZpZXdCYXNlQ29tcG9uZW50LFxuICAgIFJlcG9ydFZpZXdDb2x1bW4sXG4gICAgVGFibGVIZWFkZXJXaWR0aE1vZGUsXG4gICAgQ29sdW1uUmVzaXplZEFyZ3MsXG4gICAgY2FsY0NvbnRleHRNZW51V2lkdGgsXG4gICAgY2FsY3VsYXRlQ29sdW1uV2lkdGgsXG4gICAgY2FsY3VsYXRlQ29sdW1uV2lkdGhGaXRUb0NvbnRhaW5lcixcbiAgICBjYWxjdWxhdGVGcmVlQ29sdW1uU2l6ZSxcbiAgICBjYWxjdWxhdGVDb2x1bW5Db250ZW50LFxuICAgIHNldENvbHVtbldpZHRoQnlNYXhNb0NvbnRlbnRXaWR0aFxufSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBVaVRhYmxlVmlld1NldHRpbmcgfSBmcm9tICcuLi9tb2RlbHMvZ3JpZC12aWV3JztcbmltcG9ydCB7IEJhcnNhVGFibGVIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9iYXJzYS10YWJsZS1oZWFkZXIvYmFyc2EtdGFibGUtaGVhZGVyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYnN1LXVpLXRhYmxlLXZpZXcnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi91aS10YWJsZS12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi91aS10YWJsZS12aWV3LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVWlUYWJsZVZpZXdDb21wb25lbnRcbiAgICBleHRlbmRzIFJlcG9ydFZpZXdCYXNlQ29tcG9uZW50PFVpVGFibGVWaWV3U2V0dGluZz5cbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzXG57XG4gICAgQFZpZXdDaGlsZCgndGFibGVUcGwnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KSBfdGFibGVSZWY6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZChCYXJzYVRhYmxlSGVhZGVyQ29tcG9uZW50KSBfdGFibGVIZWFkZXJDb21wb25lbnQ6IEJhcnNhVGFibGVIZWFkZXJDb21wb25lbnQ7XG4gICAgQElucHV0KCkgY29sdW1uV2lkdGg6IG51bWJlcjtcbiAgICBASW5wdXQoKSBtaW5XaWR0aDtcbiAgICBASW5wdXQoKSBtaW5IZWlnaHQ7XG4gICAgQElucHV0KCkgZGlzYWJsZVJlc2l6ZTtcbiAgICBASW5wdXQoKSBkaXNhYmxlSGVhZGVyQ29udGV4dE1lbnU7XG4gICAgQElucHV0KCkgcm93UmVzaXplcjtcbiAgICBASW5wdXQoKSBlbmFibGVSZXNpemluZztcbiAgICBASW5wdXQoKSBkaXNhYmxlRml4ZWRUYWJsZUxheW91dDtcbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmhlaWdodC5weCcpIGhlaWdodDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5tYXgtaGVpZ2h0JykgbWF4SGVpZ2h0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBfd2lkdGggPSAnMTAwJSc7XG4gICAgc2hvd0RldGFpbHNJblJvdzogYm9vbGVhbjtcbiAgICBoYXNSb3dPbGdvOiBib29sZWFuO1xuICAgIGNvbHVtbkNvbXBvbmVudHM6IHsgY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uOyBjb21wb25lbnQ6IE1ldGFvYmplY3REYXRhTW9kZWwgfVtdID0gW107XG4gICAgcm93SW5kaWNhdG9yOiBib29sZWFuO1xuICAgIHRhYmxlSGVhZGVyTW9kZSA9IFRhYmxlSGVhZGVyV2lkdGhNb2RlLkZpdFRvQ29udGFpbmVyO1xuICAgIHN0aWNreUVuYWJsZSA9IHNpZ25hbChmYWxzZSk7XG4gICAgcm93VmlzaWJpbHR5Q2hhbmdlID0gc2lnbmFsKGZhbHNlKTtcbiAgICB0YWJsZUhlYWRlckRvbTogSFRNTEVsZW1lbnQ7XG4gICAgX2hlYWRlclRvcCQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gICAgcm93VmlzaWJsZSQgPSBuZXcgU3ViamVjdDx7IGluZGV4OyBkb20gfT4oKTtcbiAgICBfaXNQYXJlbnRXaWR0aFNldCA9IGZhbHNlO1xuICAgIHRhYmxlSGVhZGVyVG9wID0gMDtcbiAgICB0YWJsZUhlYWRlckhlaWdodCA9IDA7XG4gICAgaGVhZGVyT2JzZXJ2ZXJEb206IEhUTUxFbGVtZW50O1xuICAgIG5vdFZpc2libGVJdGVtczogbnVtYmVyW10gPSBbXTtcbiAgICB2aXNpYmxlSXRlbXM6IG51bWJlcltdID0gW107XG4gICAgb2xkV2lkdGggPSAwO1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICBjb25zdCB4ID0gTWF0aC5mbG9vcih0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpO1xuICAgICAgICBpZiAoeCkge1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIGAke3ggLSAxMH1weGApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3BvcnRhbFNlcnZpY2Uud2luZG93UmVzaXplJC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHggPSBNYXRoLmZsb29yKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCk7XG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5fdGFibGVSZWYubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgeCArICdweCcpO1xuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuX3RhYmxlUmVmLm5hdGl2ZUVsZW1lbnQsICdtYXgtd2lkdGgnLCB4ICsgJ3B4Jyk7XG4gICAgICAgICAgICB0aGlzLl9yZWZyZXNoVGhXaWR0aCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5oYXNSb3dPbGdvID0gdGhpcy52aWV3U2V0dGluZz8uUm93T2xnbz8uU2VsZWN0b3I7XG4gICAgICAgIHRoaXMubWF4SGVpZ2h0ID0gdGhpcy52aWV3U2V0dGluZz8uQm9keUhlaWdodDtcbiAgICAgICAgdGhpcy5fc2V0SGFzU3VtbWVyeSh0aGlzLmNhcnRhYmxlQ2hpbGRzTW8pO1xuICAgICAgICB0aGlzLl9zZXRIZWlnaHQodGhpcy5wYXJlbnRIZWlnaHQpO1xuICAgICAgICB0aGlzLl9zZXRXaWR0aCgpO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVDb2x1bW5zV2lkdGgodGhpcy5tb0RhdGFMaXN0LCB0aGlzLmNvbHVtbnMpO1xuICAgICAgICB0aGlzLnRhYmxlSGVhZGVyTW9kZSA9IHRoaXMuZ3JpZEZyZWVDb2x1bW5TaXppbmdcbiAgICAgICAgICAgID8gVGFibGVIZWFkZXJXaWR0aE1vZGUuRnJlZUNvbHVtblNpemVcbiAgICAgICAgICAgIDogVGFibGVIZWFkZXJXaWR0aE1vZGUuRml0VG9Db250YWluZXI7XG4gICAgICAgIHRoaXMuX2NhbGNDb250ZXh0TWVudVdpZHRoKHRoaXMuY29udGV4dE1lbnVJdGVtcyk7XG4gICAgfVxuICAgIF9jYWxjQ29udGV4dE1lbnVXaWR0aChjb250ZXh0TWVudUl0ZW1zKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29udGV4dE1lbnVXaWR0aCA9IGNhbGNDb250ZXh0TWVudVdpZHRoKGNvbnRleHRNZW51SXRlbXMsIHRoaXMuZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnUpO1xuICAgIH1cbiAgICBvblRhYmxlVmlzaWJpbGl0eUNoYW5nZShlLCBkb20pOiB2b2lkIHtcbiAgICAgICAgaWYgKGUgPT09ICdWaXNpYmxlJykge1xuICAgICAgICAgICAgdGhpcy5fc2V0V2lkdGgodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgY2FydGFibGVUZW1wbGF0ZXMsIHBhcmVudEhlaWdodCwgY29udGV4dE1lbnVJdGVtcywgY29sdW1uc0NvdW50LCBjb2x1bW5zLCBzZWNvbmRhcnlDb2x1bW5zIH0gPSBjaGFuZ2VzO1xuICAgICAgICBpZiAoY29udGV4dE1lbnVJdGVtcyAmJiAhY29udGV4dE1lbnVJdGVtcy5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5fY2FsY0NvbnRleHRNZW51V2lkdGgoY29udGV4dE1lbnVJdGVtcy5jdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FydGFibGVUZW1wbGF0ZXMgJiYgIWNhcnRhYmxlVGVtcGxhdGVzLmZpcnN0Q2hhbmdlICYmICF0aGlzLmhhc1N1bW1hcnkpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldEhhc1N1bW1lcnkoY2FydGFibGVUZW1wbGF0ZXMuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKGNvbHVtbnNDb3VudCAmJiAhY29sdW1uc0NvdW50LmZpcnN0Q2hhbmdlKSB8fCAoc2Vjb25kYXJ5Q29sdW1ucyAmJiAhc2Vjb25kYXJ5Q29sdW1ucy5maXJzdENoYW5nZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZUNvbHVtbnNXaWR0aCh0aGlzLm1vRGF0YUxpc3QsIGNvbHVtbnMuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFyZW50SGVpZ2h0ICYmICFwYXJlbnRIZWlnaHQuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldEhlaWdodChwYXJlbnRIZWlnaHQuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgICB9XG4gICAgb25Db2x1bW5SZXNpemluZyhlOiB7IGNvbHVtbjogUmVwb3J0Vmlld0NvbHVtbjsgd2lkdGg6IG51bWJlciB9KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYmxlSGVhZGVyQ29tcG9uZW50LlNldENvbHVtbldpZHRoVG9UaFdpZHRoKCk7XG4gICAgICAgIHRoaXMuX3NldFBhcmVudFdpZHRoKCk7XG4gICAgfVxuICAgIG9uQ29sdW1uUmVzaXplZChhcnI6IEFycmF5PENvbHVtblJlc2l6ZWRBcmdzPik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zZWNvbmRhcnlDb2x1bW5zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudGFibGVIZWFkZXJNb2RlID09PSBUYWJsZUhlYWRlcldpZHRoTW9kZS5GcmVlQ29sdW1uU2l6ZSkge1xuICAgICAgICAgICAgdGhpcy5fdGFibGVIZWFkZXJDb21wb25lbnQuU2V0Q29sdW1uV2lkdGhUb1RoV2lkdGgoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3RhYmxlSGVhZGVyQ29tcG9uZW50LlNldENvbHVtbldpZHRoVG9QZXJjZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdGFibGVIZWFkZXJDb21wb25lbnQuUmVmcmVzaFRhYmxlVGhXaWR0aCgpO1xuICAgICAgICB0aGlzLnJlc2l6ZWRCeVVzZXIgPSB0cnVlO1xuXG4gICAgICAgIC8vIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZShsYXN0VGgsICd3aWR0aCcsIGAxMDAlYCk7XG4gICAgICAgIHRoaXMuY29sdW1uUmVzaXplZC5lbWl0KHsgY29sdW1uczogdGhpcy5jb2x1bW5zLCByZXNpemVkOiBhcnIgfSk7XG4gICAgfVxuICAgIG9uRml0VG9Db250YWluZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFibGVIZWFkZXJNb2RlID0gVGFibGVIZWFkZXJXaWR0aE1vZGUuRml0VG9Db250YWluZXI7XG4gICAgICAgIHRoaXMuX3NldFBhcmVudFdpZHRoRml0KCk7XG4gICAgICAgIHRoaXMuX3RhYmxlSGVhZGVyQ29tcG9uZW50LlNldENvbHVtbldpZHRoVG9QZXJjZW50KCk7XG4gICAgICAgIC8vIHRoaXMuX3JlZnJlc2hUaFdpZHRoKCk7XG4gICAgICAgIC8vIHRoaXMuX2ZpcmVSZXNpemVDaGFuZ2VkKCk7XG4gICAgfVxuICAgIG9uRnJlZUNvbHVtblNpemluZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YWJsZUhlYWRlck1vZGUgPSBUYWJsZUhlYWRlcldpZHRoTW9kZS5GcmVlQ29sdW1uU2l6ZTtcbiAgICAgICAgdGhpcy5fdGFibGVIZWFkZXJDb21wb25lbnQuU2V0Q29sdW1uV2lkdGhUb1RoV2lkdGgoKTtcbiAgICAgICAgdGhpcy5fc2V0UGFyZW50V2lkdGhGaXRUb09mZnNldFdpZHRoKCk7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUNvbHVtbnNXaWR0aCh0aGlzLm1vRGF0YUxpc3QsIHRoaXMuY29sdW1ucyk7XG4gICAgfVxuICAgIG9uRml0VG9Db250ZW50KGU6IHsgY29sdW1uOiBSZXBvcnRWaWV3Q29sdW1uOyB0aERvbTogSFRNTFRhYmxlQ2VsbEVsZW1lbnQgfSk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IGNvbHVtbiwgdGhEb20gfSA9IGU7XG4gICAgICAgIHRoaXMudGFibGVIZWFkZXJNb2RlID0gVGFibGVIZWFkZXJXaWR0aE1vZGUuRnJlZUNvbHVtblNpemU7XG4gICAgICAgIHNldENvbHVtbldpZHRoQnlNYXhNb0NvbnRlbnRXaWR0aCh0aGlzLm1vRGF0YUxpc3QsIGNvbHVtbik7XG4gICAgICAgIGNvbHVtbi4kV2lkdGggPSBjb2x1bW4uJENvbnRlbnRXaWR0aDtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoRG9tLCAnd2lkdGgnLCBjb2x1bW4uJFdpZHRoKTtcbiAgICAgICAgdGhpcy5fZmlyZVJlc2l6ZUNoYW5nZWQoKTtcbiAgICB9XG5cbiAgICBvblNldFRhYmxlSGVhZGVyRG9tKGRvbSk6IHZvaWQge1xuICAgICAgICB0aGlzLnRhYmxlSGVhZGVyRG9tID0gZG9tO1xuICAgICAgICBjb25zdCByZWN0ID0gZG9tLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB0aGlzLnRhYmxlSGVhZGVyVG9wID0gcmVjdC50b3A7XG4gICAgICAgIHRoaXMudGFibGVIZWFkZXJIZWlnaHQgPSByZWN0LmhlaWdodDtcbiAgICB9XG4gICAgb25IZWFkZXJWaXNpYmlsaXR5Q2hhbmdlKGUsIGRvbSk6IHZvaWQge1xuICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMuaGVhZGVyT2JzZXJ2ZXJEb20gPSBkb207XG4gICAgICAgIGlmIChlID09PSAnTm90VmlzaWJsZScpIHtcbiAgICAgICAgICAgIHRoaXMuc3RpY2t5RW5hYmxlLnNldCh0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RpY2t5RW5hYmxlLnNldChmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblJvd1Zpc2liaWxpdHlDaGFuZ2UoZSwgaW5kZXgsIGRvbSk6IHZvaWQge1xuICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChlICE9PSAnUGVuZGluZycpIHtcbiAgICAgICAgICAgIGlmIChlID09PSAnTm90VmlzaWJsZScpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52aXNpYmxlSXRlbXMuaW5kZXhPZihpbmRleCkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm93VmlzaWJsZSQubmV4dCh7IGluZGV4LCBkb20gfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZUl0ZW1zID0gdGhpcy52aXNpYmxlSXRlbXMuZmlsdGVyKChjKSA9PiBjICE9PSBpbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMubm90VmlzaWJsZUl0ZW1zLnB1c2goaW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGUgPT09ICdWaXNpYmxlJykge1xuICAgICAgICAgICAgICAgIHRoaXMubm90VmlzaWJsZUl0ZW1zID0gdGhpcy5ub3RWaXNpYmxlSXRlbXMuZmlsdGVyKChjKSA9PiBjICE9PSBpbmRleCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnZpc2libGVJdGVtcy5wdXNoKGluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHRoaXMucm93VmlzaWJsZSQubmV4dCh7IGluZGV4LCBkb20gfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJpdmF0ZSBfc2V0UGFyZW50V2lkdGhGaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUsICd3aWR0aCcsIGAxMDAlYCk7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl90YWJsZVJlZi5uYXRpdmVFbGVtZW50LCAnbWluLXdpZHRoJywgYDEwMCVgKTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuX3RhYmxlUmVmLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIGAxMDAlYCk7XG4gICAgfVxuICAgIHByaXZhdGUgX3NldFBhcmVudFdpZHRoRml0VG9PZmZzZXRXaWR0aCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeDEgPSBNYXRoLmZsb29yKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCk7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUsICd3aWR0aCcsIGAke3gxfXB4YCk7XG4gICAgICAgIGNvbnN0IHggPSBNYXRoLmZsb29yKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpO1xuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5fdGFibGVSZWYubmF0aXZlRWxlbWVudCwgJ21pbi13aWR0aCcsIGAke3h9cHhgKTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuX3RhYmxlUmVmLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIGAke3h9cHhgKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfc2V0UGFyZW50V2lkdGgoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHggPSBNYXRoLmZsb29yKHRoaXMuX2VsLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCk7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUsICd3aWR0aCcsIGAke3h9cHhgKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfcmVmcmVzaFRoV2lkdGgoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZUNvbHVtbnNXaWR0aCh0aGlzLm1vRGF0YUxpc3QsIHRoaXMuY29sdW1ucyk7XG4gICAgICAgIHRoaXMuX3RhYmxlSGVhZGVyQ29tcG9uZW50Py5SZWZyZXNoVGFibGVUaFdpZHRoKCk7XG4gICAgfVxuICAgIHByaXZhdGUgX3NldFdpZHRoKHNldFdpZHRoPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCB3aWR0aE9mRG9tID0gTWF0aC5mbG9vcih0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpO1xuICAgICAgICBjb25zb2xlLmxvZyh3aWR0aE9mRG9tKTtcblxuICAgICAgICBpZiAod2lkdGhPZkRvbSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh3aWR0aE9mRG9tICE9PSB0aGlzLm9sZFdpZHRoKSB7XG4gICAgICAgICAgICB0aGlzLl9yZWZyZXNoVGhXaWR0aCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub2xkV2lkdGggPSB3aWR0aE9mRG9tO1xuICAgICAgICBjb25zdCB3aWR0aE9mRG9tMiA9IE1hdGguZmxvb3IodGhpcy5fZWwubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoKTtcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuX3RhYmxlUmVmLm5hdGl2ZUVsZW1lbnQsICdtYXgtd2lkdGgnLCB3aWR0aE9mRG9tMiAtIDEwICsgJ3B4Jyk7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl90YWJsZVJlZi5uYXRpdmVFbGVtZW50LCAnd2lkdGgnLCB3aWR0aE9mRG9tMiAtIDEwICsgJ3B4Jyk7XG4gICAgfVxuICAgIHByaXZhdGUgX2NhbGN1bGF0ZUhlYWRlclN0aWNreVRvcChkb206IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnN0aWNreUVuYWJsZSgpICYmIHRoaXMudGFibGVIZWFkZXJEb20pIHtcbiAgICAgICAgICAgIC8vIGNvbnN0IHJlYyA9IHRoaXMuaGVhZGVyT2JzZXJ2ZXJEb20uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICAvLyBjb25zdCB0b3AgPSByZWMudG9wO1xuICAgICAgICAgICAgLy8gY29uc3QgY2FsYyA9IHRoaXMudGFibGVIZWFkZXJUb3AgLSB0b3AgLSB0aGlzLnRhYmxlSGVhZGVySGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgICAgIGNvbnN0IHJlYyA9IGRvbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICAgICAgdGhpcy5faGVhZGVyVG9wJC5uZXh0KHJlYy50b3AgLSAxMiArIHRoaXMudGFibGVIZWFkZXJIZWlnaHQgKyAncHgnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBfZmlyZVJlc2l6ZUNoYW5nZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29sdW1uUmVzaXplZC5lbWl0KHtcbiAgICAgICAgICAgIGNvbHVtbnM6IHRoaXMuY29sdW1ucyxcbiAgICAgICAgICAgIHJlc2l6ZWQ6IHRoaXMuY29sdW1ucy5tYXAoKGMpID0+ICh7IG5hbWU6IGMuTmFtZSwgd2lkdGg6IGMuV2lkdGggfSkpXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2NhbGN1bGF0ZUNvbHVtbnNXaWR0aChtb0RhdGFMaXN0OiBNZXRhb2JqZWN0RGF0YU1vZGVsW10sIGNvbHVtbnM6IFJlcG9ydFZpZXdDb2x1bW5bXSk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKHRoaXMudGFibGVIZWFkZXJNb2RlKSB7XG4gICAgICAgICAgICBjYXNlIFRhYmxlSGVhZGVyV2lkdGhNb2RlLkZyZWVDb2x1bW5TaXplOlxuICAgICAgICAgICAgICAgIHRoaXMuX2ZyZWVDb2x1bW5TaXplKG1vRGF0YUxpc3QsIGNvbHVtbnMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBUYWJsZUhlYWRlcldpZHRoTW9kZS5GaXRUb1Jvd0NvbnRlbnQ6XG4gICAgICAgICAgICAgICAgdGhpcy5fZml0VG9Sb3dDb250ZW50Q29sdW1uKG1vRGF0YUxpc3QsIGNvbHVtbnMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBUYWJsZUhlYWRlcldpZHRoTW9kZS5GaXRUb0NvbnRhaW5lcjpcbiAgICAgICAgICAgICAgICB0aGlzLl9maXRUb0NvbnRhaW5lcihtb0RhdGFMaXN0LCBjb2x1bW5zKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2ZpdFRvQ29sdW1uKG1vRGF0YUxpc3QsIGNvbHVtbnMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxEb20gPSB0aGlzLl9lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjYWxjdWxhdGVDb2x1bW5XaWR0aChlbERvbSwgY29sdW1ucywgbW9EYXRhTGlzdCwgdGhpcy5kaXNhYmxlT3ZlcmZsb3dDb250ZXh0TWVudSwgdGhpcy5jb250ZXh0TWVudUl0ZW1zKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9maXRUb1Jvd0NvbnRlbnRDb2x1bW4obW9EYXRhTGlzdDogTWV0YW9iamVjdERhdGFNb2RlbFtdLCBjb2x1bW5zOiBSZXBvcnRWaWV3Q29sdW1uW10pOiB2b2lkIHtcbiAgICAgICAgY2FsY3VsYXRlQ29sdW1uQ29udGVudChjb2x1bW5zLCBtb0RhdGFMaXN0KTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9maXRUb0NvbnRhaW5lcihtb0RhdGFMaXN0LCBjb2x1bW5zKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGVsRG9tID0gdGhpcy5fZWwubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjYWxjdWxhdGVDb2x1bW5XaWR0aEZpdFRvQ29udGFpbmVyKFxuICAgICAgICAgICAgZWxEb20sXG4gICAgICAgICAgICB0aGlzLmNhblZpZXcsXG4gICAgICAgICAgICB0aGlzLmRpc2FibGVIZWFkZXJDb250ZXh0TWVudSxcbiAgICAgICAgICAgIHRoaXMuY29udGV4dE1lbnVJdGVtcyxcbiAgICAgICAgICAgIHRoaXMuY29sdW1uc1xuICAgICAgICApO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2ZyZWVDb2x1bW5TaXplKG1vRGF0YUxpc3QsIGNvbHVtbnMpOiB2b2lkIHtcbiAgICAgICAgY2FsY3VsYXRlRnJlZUNvbHVtblNpemUodGhpcy5jb2x1bW5zKTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9zZXRIZWlnaHQocGFyZW50SGVpZ2h0OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaW5EaWFsb2cpIHtcbiAgICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gcGFyZW50SGVpZ2h0O1xuICAgICAgICB9XG4gICAgfVxuICAgIHByb3RlY3RlZCBfc2V0SGFzU3VtbWVyeShjYXJ0YWJsZVRlbXBsYXRlcyk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmRldGFpbHNDb2x1bW5zPy5sZW5ndGggPiAwIHx8XG4gICAgICAgICAgICB0aGlzLmRldGFpbHNDb21wb25lbnQ/LlNlbGVjdG9yIHx8XG4gICAgICAgICAgICAoY2FydGFibGVUZW1wbGF0ZXMgJiYgT2JqZWN0LmtleXMoY2FydGFibGVUZW1wbGF0ZXMpLmxlbmd0aCA+IDApXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5zaG93RGV0YWlsc0luUm93ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuaGFzRGV0YWlsc0luUm93LmVtaXQodHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhhc0RldGFpbHNJblJvdy5lbWl0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2NvbnRhaW5lcldpZHRoQ2hhbmdlZCh2YWw6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodmFsID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLl93aWR0aCA9ICcxMDAlJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3dpZHRoID0gdmFsID8gdmFsICsgJ3B4JyA6ICcxMDAlJztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5fZWwubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgdGhpcy5fd2lkdGgpO1xuICAgIH1cbn1cbiIsIjx0YWJsZVxuICAgIGZkLXRhYmxlXG4gICAgI3RhYmxlVHBsXG4gICAgI2hlYWRlckJvdHRvbU9ic2VydmVyXG4gICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJcbiAgICBbaW50ZXJzZWN0aW9uVGhyZXNob2xkXT1cIjAuMVwiXG4gICAgKHZpc2liaWxpdHlDaGFuZ2UpPVwib25UYWJsZVZpc2liaWxpdHlDaGFuZ2UoJGV2ZW50LCBoZWFkZXJCb3R0b21PYnNlcnZlcilcIlxuICAgIFtwb3BJbl09XCJwb3BpblwiXG4gICAgW2NsYXNzLnRhYmxlLWZpeGVkXT1cIlxuICAgICAgICAhY29udGV4dFZpZXc/LkdyaWRfSGlkZUhlYWRlciAmJiAoIXBvcGluIHx8IHNlY29uZGFyeUNvbHVtbnMubGVuZ3RoID09PSAwKSAmJiAhZGlzYWJsZUZpeGVkVGFibGVMYXlvdXRcbiAgICBcIlxuICAgIFtub0JvcmRlclhdPVwidmlld1NldHRpbmc/Lk5vSG9yaXp0b25hbEJvcmRlcnMgPT09IHRydWVcIlxuICAgIFtub0JvcmRlclldPVwidmlld1NldHRpbmc/Lk5vVmVydGljYWxCb3JkZXJzID09PSB0cnVlIHx8IChwb3BpbiAmJiBzZWNvbmRhcnlDb2x1bW5zLmxlbmd0aCA+IDApXCJcbj5cbiAgICBAaWYgKGNvbHVtbnMgfCBtZXJnZUZpZWxkc1RvQ29sdW1uczogdmlld1NldHRpbmc/Lk1lcmdlRmllbGRzVG9Db2x1bW5zPy5Nb0RhdGFMaXN0OyBhcyBtZXJnZUZpZWxkc1RvQ29sdW1ucykge1xuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIGhlYWRlclRlbXBsYXRlO1xuICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IG1lcmdlRmllbGRzVG9Db2x1bW5zLCBtb0RhdGFMaXN0Q291bnQ6IG1vRGF0YUxpc3Q/Lmxlbmd0aCB9XG4gICAgICAgIFwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICAgIEBpZiAobW9EYXRhTGlzdD8ubGVuZ3RoKSB7XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgYm9keVRlbXBsYXRlO1xuICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IG1lcmdlRmllbGRzVG9Db2x1bW5zLCBwcmV2aWV3Q29sdW1uOiBhbGxDb2x1bW5zIHwgZmluZFByZXZpZXdDb2x1bW4gfVxuICAgICAgICBcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBtZXJnZUZpZWxkc1RvQ29sdW1ucyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgfSB9XG48L3RhYmxlPlxuPCEtLXJlbmRlckNvbHVtbi0tPlxuXG5AaWYgKCFtb0RhdGFMaXN0Py5sZW5ndGgpIHtcbjxic3Utbm8tZGF0YVxuICAgIFtjbGFzcy5uby10b3Bib3JkZXJdPVwiIWhpZGVUb29sYmFyXCJcbiAgICBbY2xhc3Mubm9ib3JkZXJdPVwiY29udGV4dFZpZXcuR3JpZF9IaWRlSGVhZGVyICYmIGhpZGVUb29sYmFyXCJcbiAgICBbc2ltcGxlXT1cInRydWVcIlxuPlxuPC9ic3Utbm8tZGF0YT5cbn1cblxuPG5nLXRlbXBsYXRlICNoZWFkZXJUZW1wbGF0ZSBsZXQtY29sdW1ucyBsZXQtbW9EYXRhTGlzdENvdW50PlxuICAgIDxic3UtYmFyc2EtdGFibGUtaGVhZGVyXG4gICAgICAgIFtzdGlja3ldPVwic3RpY2t5RW5hYmxlKClcIlxuICAgICAgICBbaGFzU2Vjb25kYXJ5Q29sdW1uc109XCJzZWNvbmRhcnlDb2x1bW5zLmxlbmd0aCA+IDBcIlxuICAgICAgICBbY2xhc3MuaGFzLXRvb2xiYXJdPVwiIWhpZGVUb29sYmFyXCJcbiAgICAgICAgW3N0eWxlLnBvaW50ZXItZXZlbnRzXT1cIm1vRGF0YUxpc3RDb3VudCA/ICdhdXRvJyA6ICdub25lJ1wiXG4gICAgICAgIFt0YWJsZVdpZHRoXT1cImVsV2lkdGhcIlxuICAgICAgICBbc2hvd0RldGFpbHNJblJvd109XCJzaG93RGV0YWlsc0luUm93XCJcbiAgICAgICAgW2hpZGVPcGVuSWNvbl09XCJoaWRlT3Blbkljb25cIlxuICAgICAgICBbcmVzaXplZEJ5VXNlcl09XCJyZXNpemVkQnlVc2VyXCJcbiAgICAgICAgW3RhYmxlSGVhZGVyTW9kZV09XCJ0YWJsZUhlYWRlck1vZGVcIlxuICAgICAgICBbc2hvd1Jvd051bWJlcl09XCJjb250ZXh0Vmlldz8uR3JpZF9TaG93Um93TnVtYmVyXCJcbiAgICAgICAgW2FsbENoZWNrZWRdPVwiYWxsQ2hlY2tlZFwiXG4gICAgICAgIFtydGxdPVwicnRsXCJcbiAgICAgICAgW2FjdGlvbkxpc3RdPVwiYWN0aW9uTGlzdFwiXG4gICAgICAgIFtkaXNhYmxlUmVzcG9uc2l2ZV09XCJkaXNhYmxlUmVzcG9uc2l2ZVwiXG4gICAgICAgIFtpc0NoZWNrTGlzdF09XCJpc0NoZWNrTGlzdFwiXG4gICAgICAgIFtjb2x1bW5zXT1cIlxuICAgICAgICAgICAgY29sdW1uc1xuICAgICAgICAgICAgICAgIHwgZmlsdGVyQ29sdW1uc0J5RGV0YWlsczogZGV0YWlsc0NvbHVtbnM6cm93SW5kaWNhdG9yXG4gICAgICAgICAgICAgICAgfCBmaWx0ZXI6IHsgSXNQcmV2aWV3OiBmYWxzZSB9XG4gICAgICAgICAgICAgICAgfCBoaWRlQ29sdW1uc0lubW9iaWxlOiB2aWV3U2V0dGluZz8uSGlkZUNvbHVtbnNJbk1vYmlsZVxuICAgICAgICBcIlxuICAgICAgICBbZml0V2lkdGhdPVwiZml0V2lkdGhcIlxuICAgICAgICBbZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVdPVwiZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVcIlxuICAgICAgICBbaW5saW5lRWRpdE1vZGVdPVwiaW5saW5lRWRpdE1vZGVcIlxuICAgICAgICBbY29udGV4dE1lbnVJdGVtc109XCJjb250ZXh0TWVudUl0ZW1zXCJcbiAgICAgICAgW2NvbnRleHRNZW51V2lkdGhdPVwiY29udGV4dE1lbnVXaWR0aFwiXG4gICAgICAgIFtzaG93Vmlld0J1dHRvbl09XCJzaG93Vmlld0J1dHRvblwiXG4gICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxuICAgICAgICBbdmlld1NldHRpbmddPVwidmlld1NldHRpbmdcIlxuICAgICAgICBbaGlkZUhlYWRlcl09XCJjb250ZXh0Vmlldy5HcmlkX0hpZGVIZWFkZXJcIlxuICAgICAgICBbcm93SW5kaWNhdG9yXT1cInJvd0luZGljYXRvclwiXG4gICAgICAgIFtkaXNhYmxlUmVzaXplXT1cImRpc2FibGVSZXNpemVcIlxuICAgICAgICBbZGlzYWJsZUhlYWRlckNvbnRleHRNZW51XT1cImRpc2FibGVIZWFkZXJDb250ZXh0TWVudVwiXG4gICAgICAgIChoZWFkZXJSZW5kZXIpPVwib25TZXRUYWJsZUhlYWRlckRvbSgkZXZlbnQpXCJcbiAgICAgICAgKGNvbHVtblJlc2l6ZSk9XCJvbkNvbHVtblJlc2l6ZWQoJGV2ZW50KVwiXG4gICAgICAgIChjb2x1bW5SZXNpemluZyk9XCJvbkNvbHVtblJlc2l6aW5nKCRldmVudClcIlxuICAgICAgICAoZml0VG9Db250ZW50KT1cIm9uRml0VG9Db250ZW50KCRldmVudClcIlxuICAgICAgICAoZml0VG9Db250YWluZXIpPVwib25GaXRUb0NvbnRhaW5lcigpXCJcbiAgICAgICAgKGZyZWVDb2x1bW5TaXplKT1cIm9uRnJlZUNvbHVtblNpemluZygpXCJcbiAgICAgICAgKGFsbENoZWNrYm94KT1cIm9uQWxsQ2hlY2tib3goJGV2ZW50KVwiXG4gICAgICAgIChzb3J0QXNjZW5kaW5nKT1cIm9uU29ydEFzY2VuZGluZygkZXZlbnQpXCJcbiAgICAgICAgKHNvcnREZXNjZW5kaW5nKT1cIm9uU29ydERlc2NlbmRpbmcoJGV2ZW50KVwiXG4gICAgICAgIChmaWx0ZXIpPVwib25GaWx0ZXIoJGV2ZW50KVwiXG4gICAgICAgIChyZXNldEdyaWRTZXR0aW5ncyk9XCJyZXNldEdyaWRTZXR0aW5ncy5lbWl0KClcIlxuICAgID48L2JzdS1iYXJzYS10YWJsZS1oZWFkZXI+XG4gICAgPCEtLSA8ZGl2XG4gICAgICAgICNoZWFkZXJCb3R0b21PYnNlcnZlclxuICAgICAgICBpbnRlcnNlY3Rpb25PYnNlcnZlclxuICAgICAgICBbaW50ZXJzZWN0aW9uVGhyZXNob2xkXT1cIjAuMVwiXG4gICAgICAgICh2aXNpYmlsaXR5Q2hhbmdlKT1cIm9uSGVhZGVyVmlzaWJpbGl0eUNoYW5nZSgkZXZlbnQsIGhlYWRlckJvdHRvbU9ic2VydmVyKVwiXG4gICAgPjwvZGl2PiAtLT5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2JvZHlUZW1wbGF0ZSBsZXQtY29sdW1ucyBsZXQtcHJldmlld0NvbHVtbj1cInByZXZpZXdDb2x1bW5cIj5cbiAgICA8dGJvZHlcbiAgICAgICAgI2JvZHlcbiAgICAgICAgZmQtdGFibGUtYm9keVxuICAgICAgICBbY2xhc3Mubm9ib3JkZXJdPVwidmlld1NldHRpbmc/Lk5vQm9keUJvcmRlcnMgPT09IHRydWVcIlxuICAgICAgICBbbm9Cb3JkZXJYXT1cInZpZXdTZXR0aW5nPy5Ob0hvcml6dG9uYWxCb3JkZXJzID09PSB0cnVlIHx8IHByZXZpZXdDb2x1bW5cIlxuICAgICAgICBbbm9Cb3JkZXJZXT1cIihwb3BpbiAmJiBzZWNvbmRhcnlDb2x1bW5zLmxlbmd0aCA+IDApIHx8IHByZXZpZXdDb2x1bW5cIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIEBmb3IgKG1vIG9mIG1vRGF0YUxpc3QgfCBtdWx0aXBsZUdyb3VwQnk6IGdyb3VwYnk7IHRyYWNrIF90cmFja0J5Um93KGluZGV4LCBtbyk7IGxldCBpbmRleCA9ICRpbmRleCkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgIGhhc1Jvd09sZ28gPyByb3dPbGdvVGVtcGxhdGUgOiByb3dUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBtbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd051bWJlcjogbW8uSWQgfCByb3dOdW1iZXI6IHBhZ2luZ1NldHRpbmc6bW9EYXRhTGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd0luZGljYXRvckNvbG9yOiAhY29sdW1ucy5sZW5ndGggPyAnJyA6IChjb2x1bW5zWzBdLkNhcHRpb24gfCBydmFsOiBtbzpjb2x1bW5zKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IGNvbHVtbnMgfCBjb2x1bW5DdXN0b21Db21wb25lbnQ6IHZpZXdTZXR0aW5nPy5Db2x1bW5Db21wb25lbnRzPy5Nb0RhdGFMaXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kYXJ5Q29sdW1uczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRhcnlDb2x1bW5zIHwgY29sdW1uQ3VzdG9tQ29tcG9uZW50OiB2aWV3U2V0dGluZz8uQ29sdW1uQ29tcG9uZW50cz8uTW9EYXRhTGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vRGF0YUxpc3Q6IG1vRGF0YUxpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBtb0RhdGFMaXN0Q291bnQ6IG1vRGF0YUxpc3QubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FydGFibGVUZW1wbGF0ZTogY2FydGFibGVUZW1wbGF0ZXNbbW8uUmVsYXRlZE1vPy4kVHlwZURlZklkICsgJ0AnICsgbW8uQ2FydGFibGVTZXR0aW5ncz8uSWRdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlld0NvbHVtbjogcHJldmlld0NvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHNDb2xsYXBzZWQ6IHZpZXdTZXR0aW5nPy5EZXRhaWxzU2V0dGluZz8uRGV0YWlsc0NvbGxhcHNlZCA9PT0gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVEZXRhaWxzVGV4dDogdmlld1NldHRpbmc/LkRldGFpbHNTZXR0aW5nPy5IaWRlRGV0YWlsc1RleHQgPT09IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGJvZHk+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNmb290ZXJUZW1wbGF0ZSBsZXQtY29sdW1ucz5cbiAgICBAaWYgKGhhc1N1bW1hcnkpIHtcbiAgICA8dGZvb3QgZmQtdGFibGUtZm9vdGVyPlxuICAgICAgICA8dHIgZmQtdGFibGUtcm93IGNsYXNzPVwicm93LXN1bW1hcnlcIj5cbiAgICAgICAgICAgIEBpZiAoaXNDaGVja0xpc3QpIHtcbiAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsIGNvbHVtblJlc2l6ZXI+XG4gICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cImNvbC10b3RhbC10ZXh0XCI+e3sgJ1RvdGFsJyB8IGJiYlRyYW5zbGF0ZSB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIH0gQGlmICghaXNDaGVja0xpc3QpIHtcbiAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsIGNsYXNzPVwic2luZ2xlLXNlbGVjdFwiPlxuICAgICAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJjb2wtdG90YWwtdGV4dFwiPnt7ICdUb3RhbCcgfCBiYmJUcmFuc2xhdGUgfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICB9IEBmb3IgKGNvbHVtbiBvZiBjb2x1bW5zOyB0cmFjayBjb2x1bW47IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgQGlmIChjb2x1bW4uSGFzU3VtbWFyeSkge1xuICAgICAgICAgICAgICAgIDxzdHJvbmcgc3R5bGU9XCJkaXJlY3Rpb246IGx0cjsgZGlzcGxheTogYmxvY2tcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgbW9EYXRhTGlzdCB8IHRvdGFsU3VtbWFyeTogY29sdW1uLk5hbWUgfCBudW1iZXIgfX08L3N0cm9uZ1xuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgfSBAaWYgKGNvbnRleHRNZW51SXRlbXMgJiYgY29udGV4dE1lbnVJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICA8dGQgZmQtdGFibGUtY2VsbCBzdHlsZT1cIndpZHRoOiAxMDBweFwiPjwvdGQ+XG4gICAgICAgICAgICB9IEBpZiAoIWhpZGVPcGVuSWNvbiAmJiBjYW5WaWV3ICYmICghaW5saW5lRWRpdE1vZGUgfHwgIWFsbG93SW5saW5lRWRpdCkpIHtcbiAgICAgICAgICAgIDx0ZCBmZC10YWJsZS1jZWxsPjwvdGQ+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvdHI+XG4gICAgPC90Zm9vdD5cbiAgICB9XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlXG4gICAgI3Jvd09sZ29UZW1wbGF0ZVxuICAgIGxldC1tb1xuICAgIGxldC1pbmRleD1cImluZGV4XCJcbiAgICBsZXQtY29sdW1ucz1cImNvbHVtbnNcIlxuICAgIGxldC1tb0RhdGFMaXN0Q291bnQ9XCJtb0RhdGFMaXN0Q291bnRcIlxuICAgIGxldC1tb0RhdGFMaXN0PVwibW9EYXRhTGlzdFwiXG4gICAgbGV0LWNhcnRhYmxlVGVtcGxhdGU9XCJjYXJ0YWJsZVRlbXBsYXRlXCJcbiAgICBsZXQtc2Vjb25kYXJ5Q29sdW1ucz1cInNlY29uZGFyeUNvbHVtbnNcIlxuICAgIGxldC1yb3dJbmRpY2F0b3JDb2xvcj1cInJvd0luZGljYXRvckNvbG9yXCJcbiAgICBsZXQtcm93TnVtYmVyPVwicm93TnVtYmVyXCJcbiAgICBsZXQtcHJldmlld0NvbHVtbj1cInByZXZpZXdDb2x1bW5cIlxuICAgIGxldC1kZXRhaWxzQ29sbGFwc2VkPVwiZGV0YWlsc0NvbGxhcHNlZFwiXG4gICAgbGV0LWhpZGVEZXRhaWxzVGV4dD1cImhpZGVEZXRhaWxzVGV4dFwiXG4+XG4gICAgPGJucmMtZHluYW1pYy1pdGVtLWNvbXBvbmVudFxuICAgICAgICBbY29tcG9uZW50XT1cInZpZXdTZXR0aW5nLlJvd09sZ29cIlxuICAgICAgICBbbW9dPVwibW9cIlxuICAgICAgICBbZGV0YWlsc0NvbGxhcHNlZF09XCJkZXRhaWxzQ29sbGFwc2VkXCJcbiAgICAgICAgW2hpZGVEZXRhaWxzVGV4dF09XCJoaWRlRGV0YWlsc1RleHRcIlxuICAgICAgICBbaXNMYXN0Q2hpbGRHcm91cF09XCJtby4kSXNMYXN0Q2hpbGRHcm91cFwiXG4gICAgICAgIFtncm91cFN1bW1hcnldPVwiZ3JvdXBTdW1tYXJ5XCJcbiAgICAgICAgW3Nob3dWaWV3QnV0dG9uXT1cInNob3dWaWV3QnV0dG9uXCJcbiAgICAgICAgW1Vsdk1haW5DdHJscl09XCJVbHZNYWluQ3RybHJcIlxuICAgICAgICBbbW9EYXRhTGlzdF09XCJtb0RhdGFMaXN0XCJcbiAgICAgICAgW3Nob3dEZXRhaWxzSW5Sb3ddPVwic2hvd0RldGFpbHNJblJvd1wiXG4gICAgICAgIFtoaWRlT3Blbkljb25dPVwiaGlkZU9wZW5JY29uXCJcbiAgICAgICAgW2RldGFpbHNDb2x1bW5zXT1cImRldGFpbHNDb2x1bW5zXCJcbiAgICAgICAgW3Nob3dSb3dOdW1iZXJdPVwiY29udGV4dFZpZXc/LkdyaWRfU2hvd1Jvd051bWJlclwiXG4gICAgICAgIFtyb3dOdW1iZXJdPVwicm93TnVtYmVyXCJcbiAgICAgICAgW2NvbHVtbkNvbXBvbmVudHNdPVwidmlld1NldHRpbmc/LkNvbHVtbkNvbXBvbmVudHMgfHwgbnVsbFwiXG4gICAgICAgIFtjYXJ0YWJsZVRlbXBsYXRlXT1cImNhcnRhYmxlVGVtcGxhdGVcIlxuICAgICAgICBbY2FydGFibGVNb109XCJtby5SZWxhdGVkTW9cIlxuICAgICAgICBbZGlydHlDb2x1bW5zXT1cIm1vLiREaXJ0eUNvbHVtbnNcIlxuICAgICAgICBbY2FydGFibGVXb3JrZmxvd0RhdGFdPVwibW8uU2VyaWFsaXplZFdvcmtmbG93RGF0YVwiXG4gICAgICAgIFtzZXJpYWxpemVkUmVsYXRlZE1vXT1cIm1vLlNlcmlhbGl6ZWRSZWxhdGVkTW9cIlxuICAgICAgICBbZGV0YWlsc1RleHRdPVwidmlld1NldHRpbmc/LkRldGFpbHNTZXR0aW5nPy5CdXR0b25UZXh0XCJcbiAgICAgICAgW2RldGFpbHNUZXh0RnVuY3Rpb25dPVwidmlld1NldHRpbmc/LkRldGFpbHNTZXR0aW5nPy5CdXR0b25UZXh0RnVuY3Rpb25cIlxuICAgICAgICBbZGV0YWlsc0NvbXBvbmVudF09XCJkZXRhaWxzQ29tcG9uZW50XCJcbiAgICAgICAgW2NvbG9yaW5nUm93XT1cInZpZXdTZXR0aW5nPy5Db2xvcmluZ1Jvd1wiXG4gICAgICAgIFtpc0NoZWNrZWRdPVwibW8uJElzQ2hlY2tlZFwiXG4gICAgICAgIFt2aXNpYmlsaXR5XT1cIm1vLiRWaXNpYmlsaXR5XCJcbiAgICAgICAgW2V4cGFuZGVkXT1cIm1vLiRFeHBhbmRlZFwiXG4gICAgICAgIFtzdHlsZUluZGV4XT1cIm1vLiRTdHlsZUluZGV4XCJcbiAgICAgICAgW2xldmVsXT1cIm1vLiRMZXZlbFwiXG4gICAgICAgIFtwYXJlbnRFeHBhbmRlZF09XCJtby4kUGFyZW50Py4kRXhwYW5kZWRcIlxuICAgICAgICBbbW9EYXRhTGlzdENvdW50XT1cIm1vRGF0YUxpc3RDb3VudFwiXG4gICAgICAgIFtjb2x1bW5zQ291bnRdPVwiY29sdW1uc0NvdW50IC0gZGV0YWlsc0NvbHVtbnMubGVuZ3RoXCJcbiAgICAgICAgW3R5cGVEZWZJZF09XCJ0eXBlRGVmSWRcIlxuICAgICAgICBbZXh0cmFSZWxhdGlvbl09XCJleHRyYVJlbGF0aW9uXCJcbiAgICAgICAgW2Zvcm1TZXR0aW5nXT1cImZvcm1TZXR0aW5nXCJcbiAgICAgICAgW2luZGV4XT1cImluZGV4XCJcbiAgICAgICAgW3NldHRpbmddPVwidmlld1NldHRpbmdcIlxuICAgICAgICBbc2Vjb25kYXJ5Q29sdW1uc109XCJzZWNvbmRhcnlDb2x1bW5zIHwgZmlsdGVyQ29sdW1uc0J5RGV0YWlsczogZGV0YWlsc0NvbHVtbnM6cm93SW5kaWNhdG9yXCJcbiAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1ucyB8IGZpbHRlckNvbHVtbnNCeURldGFpbHM6IGRldGFpbHNDb2x1bW5zOnJvd0luZGljYXRvclwiXG4gICAgICAgIFtpc05ld0lubGluZU1vXT1cIm1vLiROZXdJbmxpbmVNb1wiXG4gICAgICAgIFthY2Nlc3NdPVwiYWNjZXNzXCJcbiAgICAgICAgW2lubGluZUVkaXRNb2RlXT1cImlubGluZUVkaXRNb2RlXCJcbiAgICAgICAgW2FsbG93SW5saW5lRWRpdF09XCJhbGxvd0lubGluZUVkaXRcIlxuICAgICAgICBbcnRsXT1cInJ0bFwiXG4gICAgICAgIFtkZXZpY2VOYW1lXT1cImRldmljZU5hbWVcIlxuICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcbiAgICAgICAgW2FsbENvbHVtbnNdPVwiYWxsQ29sdW1uc1wiXG4gICAgICAgIFtjb250ZXh0TWVudUl0ZW1zXT1cImNvbnRleHRNZW51SXRlbXNcIlxuICAgICAgICBbY2FuVmlld109XCJjYW5WaWV3XCJcbiAgICAgICAgW2NvbmRpdGlvbmFsRm9ybWF0c109XCJjb25kaXRpb25hbEZvcm1hdHNcIlxuICAgICAgICBbZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVdPVwiZGlzYWJsZU92ZXJmbG93Q29udGV4dE1lbnVcIlxuICAgICAgICBbbmF2aWdhdGlvbkFycm93XT1cIm5hdmlnYXRpb25BcnJvd1wiXG4gICAgICAgIFtpc0NoZWNrTGlzdF09XCJpc0NoZWNrTGlzdFwiXG4gICAgICAgIFtyb3dJbmRpY2F0b3JdPVwicm93SW5kaWNhdG9yXCJcbiAgICAgICAgW3Jvd0luZGljYXRvckNvbG9yXT1cInJvd0luZGljYXRvckNvbG9yXCJcbiAgICAgICAgKGV2ZW50cyk9XCJvbk9sZ29FdmVudHMoJGV2ZW50KVwiXG4gICAgPlxuICAgIDwvYm5yYy1keW5hbWljLWl0ZW0tY29tcG9uZW50PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZVxuICAgICNyb3dUZW1wbGF0ZVxuICAgIGxldC1tb1xuICAgIGxldC1pbmRleD1cImluZGV4XCJcbiAgICBsZXQtcm93TnVtYmVyPVwicm93TnVtYmVyXCJcbiAgICBsZXQtY29sdW1ucz1cImNvbHVtbnNcIlxuICAgIGxldC1tb0RhdGFMaXN0Q291bnQ9XCJtb0RhdGFMaXN0Q291bnRcIlxuICAgIGxldC1tb0RhdGFMaXN0PVwibW9EYXRhTGlzdFwiXG4gICAgbGV0LWNhcnRhYmxlVGVtcGxhdGU9XCJjYXJ0YWJsZVRlbXBsYXRlXCJcbiAgICBsZXQtc2Vjb25kYXJ5Q29sdW1ucz1cInNlY29uZGFyeUNvbHVtbnNcIlxuICAgIGxldC1yb3dJbmRpY2F0b3JDb2xvcj1cInJvd0luZGljYXRvckNvbG9yXCJcbiAgICBsZXQtcHJldmlld0NvbHVtbj1cInByZXZpZXdDb2x1bW5cIlxuICAgIGxldC1kZXRhaWxzQ29sbGFwc2VkPVwiZGV0YWlsc0NvbGxhcHNlZFwiXG4gICAgbGV0LWhpZGVEZXRhaWxzVGV4dD1cImhpZGVEZXRhaWxzVGV4dFwiXG4+XG4gICAgPGJzdS1iYXJzYS10YWJsZS1yb3dcbiAgICAgICAgW21vXT1cIm1vXCJcbiAgICAgICAgW2RpcnR5Q29sdW1uc109XCJtby4kRGlydHlDb2x1bW5zXCJcbiAgICAgICAgW2lzTGFzdENoaWxkR3JvdXBdPVwibW8uJElzTGFzdENoaWxkR3JvdXBcIlxuICAgICAgICBbbW9EYXRhTGlzdF09XCJtb0RhdGFMaXN0XCJcbiAgICAgICAgW2hpZGVEZXRhaWxzVGV4dF09XCJoaWRlRGV0YWlsc1RleHRcIlxuICAgICAgICBbZGV0YWlsc0NvbGxhcHNlZF09XCJkZXRhaWxzQ29sbGFwc2VkXCJcbiAgICAgICAgW2dyb3VwU3VtbWFyeV09XCJncm91cFN1bW1hcnlcIlxuICAgICAgICBbVWx2TWFpbkN0cmxyXT1cIlVsdk1haW5DdHJsclwiXG4gICAgICAgIFtzaG93RGV0YWlsc0luUm93XT1cInNob3dEZXRhaWxzSW5Sb3dcIlxuICAgICAgICBbaGlkZU9wZW5JY29uXT1cImhpZGVPcGVuSWNvblwiXG4gICAgICAgIFtzaG93Um93TnVtYmVyXT1cImNvbnRleHRWaWV3Py5HcmlkX1Nob3dSb3dOdW1iZXJcIlxuICAgICAgICBbcm93TnVtYmVyXT1cInJvd051bWJlclwiXG4gICAgICAgIFtjb2xvcmluZ1Jvd109XCJ2aWV3U2V0dGluZz8uQ29sb3JpbmdSb3dcIlxuICAgICAgICBbZGlzYWJsZUVsbGFwc2lzXT1cInZpZXdTZXR0aW5nPy5EaXNhYmxlRWxsYXBzaXNcIlxuICAgICAgICBbc2hvd1ZpZXdCdXR0b25dPVwic2hvd1ZpZXdCdXR0b25cIlxuICAgICAgICBbZGV0YWlsc0NvbHVtbnNdPVwiZGV0YWlsc0NvbHVtbnNcIlxuICAgICAgICBbY29sdW1uQ29tcG9uZW50c109XCJ2aWV3U2V0dGluZz8uQ29sdW1uQ29tcG9uZW50cyB8fCBudWxsXCJcbiAgICAgICAgW2NhcnRhYmxlVGVtcGxhdGVdPVwiY2FydGFibGVUZW1wbGF0ZVwiXG4gICAgICAgIFtjYXJ0YWJsZU1vXT1cIm1vLlJlbGF0ZWRNb1wiXG4gICAgICAgIFtjYXJ0YWJsZVdvcmtmbG93RGF0YV09XCJtby5TZXJpYWxpemVkV29ya2Zsb3dEYXRhXCJcbiAgICAgICAgW3NlcmlhbGl6ZWRSZWxhdGVkTW9dPVwibW8uU2VyaWFsaXplZFJlbGF0ZWRNb1wiXG4gICAgICAgIFtkZXRhaWxzVGV4dF09XCJ2aWV3U2V0dGluZz8uRGV0YWlsc1NldHRpbmc/LkJ1dHRvblRleHRcIlxuICAgICAgICBbZGV0YWlsc0NvbXBvbmVudF09XCJkZXRhaWxzQ29tcG9uZW50XCJcbiAgICAgICAgW2lzQ2hlY2tlZF09XCJtby4kSXNDaGVja2VkXCJcbiAgICAgICAgW3Zpc2liaWxpdHldPVwibW8uJFZpc2liaWxpdHlcIlxuICAgICAgICBbZXhwYW5kZWRdPVwibW8uJEV4cGFuZGVkXCJcbiAgICAgICAgW3N0eWxlSW5kZXhdPVwibW8uJFN0eWxlSW5kZXhcIlxuICAgICAgICBbbGV2ZWxdPVwibW8uJExldmVsXCJcbiAgICAgICAgW3BhcmVudEV4cGFuZGVkXT1cIm1vLiRQYXJlbnQ/LiRFeHBhbmRlZFwiXG4gICAgICAgIFttb0RhdGFMaXN0Q291bnRdPVwibW9EYXRhTGlzdENvdW50XCJcbiAgICAgICAgW2NvbHVtbnNDb3VudF09XCJjb2x1bW5zQ291bnQgLSBkZXRhaWxzQ29sdW1ucy5sZW5ndGhcIlxuICAgICAgICBbdHlwZURlZklkXT1cInR5cGVEZWZJZFwiXG4gICAgICAgIFtleHRyYVJlbGF0aW9uXT1cImV4dHJhUmVsYXRpb25cIlxuICAgICAgICBbZm9ybVNldHRpbmddPVwiZm9ybVNldHRpbmdcIlxuICAgICAgICBbaW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICBbc2V0dGluZ109XCJ2aWV3U2V0dGluZ1wiXG4gICAgICAgIFtjaGVja2JveENvbXBvbmVudF09XCJ2aWV3U2V0dGluZz8uQ2hlY2tib3hDb21wb25lbnRcIlxuICAgICAgICBbc2Vjb25kYXJ5Q29sdW1uc109XCJcbiAgICAgICAgICAgIHNlY29uZGFyeUNvbHVtbnNcbiAgICAgICAgICAgICAgICB8IGZpbHRlckNvbHVtbnNCeURldGFpbHM6IGRldGFpbHNDb2x1bW5zOmZhbHNlXG4gICAgICAgICAgICAgICAgfCBmaWx0ZXI6IHsgSXNQcmV2aWV3OiBmYWxzZSB9XG4gICAgICAgICAgICAgICAgfCBoaWRlQ29sdW1uc0lubW9iaWxlOiB2aWV3U2V0dGluZz8uSGlkZUNvbHVtbnNJbk1vYmlsZVxuICAgICAgICBcIlxuICAgICAgICBbY29sdW1uc109XCJcbiAgICAgICAgICAgIGNvbHVtbnNcbiAgICAgICAgICAgICAgICB8IGZpbHRlckNvbHVtbnNCeURldGFpbHM6IGRldGFpbHNDb2x1bW5zOnJvd0luZGljYXRvclxuICAgICAgICAgICAgICAgIHwgZmlsdGVyOiB7IElzUHJldmlldzogZmFsc2UgfVxuICAgICAgICAgICAgICAgIHwgaGlkZUNvbHVtbnNJbm1vYmlsZTogdmlld1NldHRpbmc/LkhpZGVDb2x1bW5zSW5Nb2JpbGVcbiAgICAgICAgXCJcbiAgICAgICAgW2lzTmV3SW5saW5lTW9dPVwibW8uJE5ld0lubGluZU1vXCJcbiAgICAgICAgW2FjY2Vzc109XCJhY2Nlc3NcIlxuICAgICAgICBbc2ltcGxlSW5saW5lRWRpdF09XCJzaW1wbGVJbmxpbmVFZGl0XCJcbiAgICAgICAgW25vU2F2ZUlubGluZUVkaXRJblNlcnZlcl09XCJzaW1wbGVJbmxpbmVFZGl0XCJcbiAgICAgICAgW2FjdGlvbkxpc3RdPVwiYWN0aW9uTGlzdFwiXG4gICAgICAgIFtpbmxpbmVFZGl0TW9kZV09XCJpbmxpbmVFZGl0TW9kZVwiXG4gICAgICAgIFthbGxvd0lubGluZUVkaXRdPVwiYWxsb3dJbmxpbmVFZGl0XCJcbiAgICAgICAgW3J0bF09XCJydGxcIlxuICAgICAgICBbZGV2aWNlTmFtZV09XCJkZXZpY2VOYW1lXCJcbiAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXG4gICAgICAgIFthbGxDb2x1bW5zXT1cImFsbENvbHVtbnNcIlxuICAgICAgICBbY29udGV4dE1lbnVJdGVtc109XCJjb250ZXh0TWVudUl0ZW1zXCJcbiAgICAgICAgW2NhblZpZXddPVwiY2FuVmlld1wiXG4gICAgICAgIFtjb25kaXRpb25hbEZvcm1hdHNdPVwiY29uZGl0aW9uYWxGb3JtYXRzXCJcbiAgICAgICAgW2Rpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51XT1cImRpc2FibGVPdmVyZmxvd0NvbnRleHRNZW51XCJcbiAgICAgICAgW25hdmlnYXRpb25BcnJvd109XCJuYXZpZ2F0aW9uQXJyb3dcIlxuICAgICAgICBbaXNDaGVja0xpc3RdPVwiaXNDaGVja0xpc3RcIlxuICAgICAgICBbcm93SW5kaWNhdG9yXT1cInJvd0luZGljYXRvclwiXG4gICAgICAgIFtyb3dJbmRpY2F0b3JDb2xvcl09XCJyb3dJbmRpY2F0b3JDb2xvclwiXG4gICAgICAgIFtwcmV2aWV3Q29sdW1uXT1cInByZXZpZXdDb2x1bW5cIlxuICAgICAgICAoY29sdW1uU3VtbWFyeSk9XCJjb2x1bW5TdW1tYXJ5LmVtaXQoJGV2ZW50KVwiXG4gICAgICAgIChyZXNldFdvcmtmbG93U3RhdGUpPVwicmVzZXRXb3JrZmxvd1N0YXRlLmVtaXQobW8pXCJcbiAgICAgICAgKGVzY2FwZUtleSk9XCJvbkVzY2FwZUtleSgkZXZlbnQpXCJcbiAgICAgICAgKGV4cGFuZENsaWNrKT1cIm9uRXhwYW5kQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgIChyb3dDaGVjayk9XCJvblJvd0NoZWNrKCRldmVudClcIlxuICAgICAgICAod29ya2Zsb3dTaGFyZUJ1dHRvbnMpPVwib25Xb3JrZmxvd1NoYXJlQnV0dG9ucygkZXZlbnQpXCJcbiAgICAgICAgKGRlc2VsZWN0QWxsKT1cIm9uRGVzZWxlY3RBbGwoKVwiXG4gICAgICAgIChyb3dDbGljayk9XCJvblJvd0NsaWNrKCRldmVudClcIlxuICAgICAgICAodWx2Q29tbWFuZCk9XCJvblVsdkNvbW1hbmQoJGV2ZW50KVwiXG4gICAgICAgIChhY3Rpb25MaXN0Q2xpY2spPVwib25BY3Rpb25MaXN0Q2xpY2sobW8sIGluZGV4LCAkZXZlbnQpXCJcbiAgICAgICAgKHNlbGVjdE5leHRJbmxpbmVSZWNvcmQpPVwib25TZWxlY3ROZXh0SW5saW5lUmVjb3JkKCRldmVudClcIlxuICAgICAgICAoZWRpdEZvcm1QYW5lbFNhdmUpPVwib25FZGl0Rm9ybVBhbmVsU2F2ZSgkZXZlbnQpXCJcbiAgICAgICAgKGVkaXRGb3JtUGFuZWxDYW5jZWwpPVwib25FZGl0Rm9ybVBhbmVsQ2FuY2VsKCRldmVudClcIlxuICAgICAgICAoZWRpdEZvcm1QYW5lbFZhbHVlQ2hhbmdlKT1cIm9uRWRpdEZvcm1QYW5lbFZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAoY2FydGFibGVGb3JtQ2xvc2VkKT1cIm9uQ2FydGFibGVGb3JtQ2xvc2VkKCRldmVudClcIlxuICAgID5cbiAgICA8L2JzdS1iYXJzYS10YWJsZS1yb3c+XG4gICAgPCEtLSA8ZGl2XG4gICAgICAgICNyb3dCb3R0b21cbiAgICAgICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJcbiAgICAgICAgW2ludGVyc2VjdGlvblRocmVzaG9sZF09XCIwLjFcIlxuICAgICAgICAodmlzaWJpbGl0eUNoYW5nZSk9XCJvblJvd1Zpc2liaWxpdHlDaGFuZ2UoJGV2ZW50LCBpbmRleCwgcm93Qm90dG9tKVwiXG4gICAgPjwvZGl2PiAtLT5cbjwvbmctdGVtcGxhdGU+XG48ZGl2ICN0YWJsZUJvdHRvbU9ic2VydmU+PC9kaXY+XG4iXX0=
@@ -39,14 +39,14 @@ export class UiTextFieldComponent extends FieldBaseComponent {
39
39
  return false;
40
40
  }
41
41
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UiTextFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
42
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: UiTextFieldComponent, selector: "bsu-ui-text-field", inputs: { value: "value", MinSize: "MinSize" }, usesInheritance: true, ngImport: i0, template: "@if (!isEmbedHtml) {\n<input\n fd-form-control\n [placeholder]=\"Setting.NullText || ''\"\n [attr.readonly]=\"(readonly$ | async) === true ? true : null\"\n [disabled]=\"(disable$ | async) === true ? true : null\"\n [type]=\"Setting.IsPassword ? 'password' : 'text'\"\n [value]=\"!value ? '' : value\"\n [attr.maxLength]=\"Setting.MaxLength !== undefined ? Setting.MaxLength : null\"\n [id]=\"id\"\n [style.direction]=\"Setting.IsLtr === true ? 'ltr' : null\"\n (input)=\"onValueChange($event)\"\n (keydown)=\"onKeyDown($event)\"\n/>\n} @else {\n<div [innerHTML]=\"safeHtml\"></div>\n}\n", styles: [":host{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "component", type: i1.FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
42
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: UiTextFieldComponent, selector: "bsu-ui-text-field", inputs: { value: "value", MinSize: "MinSize" }, usesInheritance: true, ngImport: i0, template: "@if (!isEmbedHtml) {\n<input\n fd-form-control\n [placeholder]=\"Setting.NullText || ''\"\n [attr.readonly]=\"(readonly$ | async) === true ? true : null\"\n [disabled]=\"(disable$ | async) === true ? true : null\"\n [type]=\"Setting.IsPassword ? 'password' : 'text'\"\n [value]=\"!value ? '' : value\"\n [attr.maxLength]=\"Setting.MaxLength !== undefined ? Setting.MaxLength : null\"\n [id]=\"id\"\n [style.direction]=\"Setting.IsLtr === true ? 'ltr' : null\"\n [style.text-align]=\"Setting.IsLtr === true ? 'left' : null\"\n (input)=\"onValueChange($event)\"\n (keydown)=\"onKeyDown($event)\"\n/>\n} @else {\n<div [innerHTML]=\"safeHtml\"></div>\n}\n", styles: [":host{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "component", type: i1.FormControlComponent, selector: "input[fd-form-control], textarea[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
43
43
  }
44
44
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UiTextFieldComponent, decorators: [{
45
45
  type: Component,
46
- args: [{ selector: 'bsu-ui-text-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!isEmbedHtml) {\n<input\n fd-form-control\n [placeholder]=\"Setting.NullText || ''\"\n [attr.readonly]=\"(readonly$ | async) === true ? true : null\"\n [disabled]=\"(disable$ | async) === true ? true : null\"\n [type]=\"Setting.IsPassword ? 'password' : 'text'\"\n [value]=\"!value ? '' : value\"\n [attr.maxLength]=\"Setting.MaxLength !== undefined ? Setting.MaxLength : null\"\n [id]=\"id\"\n [style.direction]=\"Setting.IsLtr === true ? 'ltr' : null\"\n (input)=\"onValueChange($event)\"\n (keydown)=\"onKeyDown($event)\"\n/>\n} @else {\n<div [innerHTML]=\"safeHtml\"></div>\n}\n", styles: [":host{display:block;width:100%;height:100%}\n"] }]
46
+ args: [{ selector: 'bsu-ui-text-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!isEmbedHtml) {\n<input\n fd-form-control\n [placeholder]=\"Setting.NullText || ''\"\n [attr.readonly]=\"(readonly$ | async) === true ? true : null\"\n [disabled]=\"(disable$ | async) === true ? true : null\"\n [type]=\"Setting.IsPassword ? 'password' : 'text'\"\n [value]=\"!value ? '' : value\"\n [attr.maxLength]=\"Setting.MaxLength !== undefined ? Setting.MaxLength : null\"\n [id]=\"id\"\n [style.direction]=\"Setting.IsLtr === true ? 'ltr' : null\"\n [style.text-align]=\"Setting.IsLtr === true ? 'left' : null\"\n (input)=\"onValueChange($event)\"\n (keydown)=\"onKeyDown($event)\"\n/>\n} @else {\n<div [innerHTML]=\"safeHtml\"></div>\n}\n", styles: [":host{display:block;width:100%;height:100%}\n"] }]
47
47
  }], propDecorators: { value: [{
48
48
  type: Input
49
49
  }], MinSize: [{
50
50
  type: Input
51
51
  }] } });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktdGV4dC1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi91aS10ZXh0LWZpZWxkL3VpLXRleHQtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktdGV4dC1maWVsZC91aS10ZXh0LWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxGLE9BQU8sRUFBRSxrQkFBa0IsRUFBdUIsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQVEvRSxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsa0JBQWtCO0lBR3hELElBQWEsT0FBTztRQUNoQixPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUdELFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQztRQUNoRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFDRCxhQUFhLENBQUMsQ0FBQztRQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxTQUFTLENBQUMsQ0FBQztRQUNQLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDZixPQUFPO1lBQ1gsQ0FBQztZQUNELE1BQU0sT0FBTyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25HLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDWCxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ25CLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN4QixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFDTyxZQUFZLENBQUMsR0FBRztRQUNwQixJQUFJLE9BQU8sR0FBRyxDQUFDLEtBQUssS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNuQyxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO2FBQU0sSUFBSSxPQUFPLEdBQUcsQ0FBQyxLQUFLLEtBQUssUUFBUSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDeEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7UUFDbEcsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7OEdBckNRLG9CQUFvQjtrR0FBcEIsb0JBQW9CLGdJQ1ZqQyw4bUJBaUJBOzsyRkRQYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0ksbUJBQW1CLG1CQUdaLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLEtBQUs7c0JBQWIsS0FBSztnQkFFTyxPQUFPO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBGaWVsZEJhc2VDb21wb25lbnQsIE1ldGFvYmplY3REYXRhTW9kZWwgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYnN1LXVpLXRleHQtZmllbGQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi91aS10ZXh0LWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi91aS10ZXh0LWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVWlUZXh0RmllbGRDb21wb25lbnQgZXh0ZW5kcyBGaWVsZEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmc7XG4gICAgc2FmZUh0bWw6IGFueTtcbiAgICBASW5wdXQoKSBnZXQgTWluU2l6ZSgpOiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0ge1xuICAgICAgICByZXR1cm4geyB3aWR0aDogMCwgaGVpZ2h0OiAzMCB9O1xuICAgIH1cbiAgICBwYXJhbWV0ZXJzOiBUZXh0U2V0dGluZztcbiAgICBpc0VtYmVkSHRtbDogYm9vbGVhbjtcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5pc0VtYmVkSHRtbCA9IHRoaXMucGFyYW1ldGVycz8uSXNFbWJlZEh0bWw7XG4gICAgICAgIHRoaXMuc2FmZUh0bWwgPSB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodGhpcy52YWx1ZSk7XG4gICAgfVxuICAgIG9uVmFsdWVDaGFuZ2UoZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gZS50YXJnZXQudmFsdWU7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICB9XG4gICAgb25LZXlEb3duKGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGV4dC5tYXNrUmUpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzQ2hhcmFjdGVyID0gdGhpcy5faXNDaGFyYWN0ZXIoZSk7XG4gICAgICAgICAgICBpZiAoIWlzQ2hhcmFjdGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgaXNWYWxpZCA9IG5ldyBSZWdFeHAoJ15bJyArIHRoaXMuY29udGV4dC5tYXNrUmUgKyAnXSokJykudGVzdChlLmN1cnJlbnRUYXJnZXQudmFsdWUgKyBlLmtleSk7XG4gICAgICAgICAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBwcml2YXRlIF9pc0NoYXJhY3RlcihldnQpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHR5cGVvZiBldnQud2hpY2ggPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZXZ0LndoaWNoID09PSAnbnVtYmVyJyAmJiBldnQud2hpY2ggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gIWV2dC5jdHJsS2V5ICYmICFldnQubWV0YUtleSAmJiAhZXZ0LmFsdEtleSAmJiBldnQud2hpY2ggIT09IDggJiYgZXZ0LmtleS5sZW5ndGggPT09IDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbmludGVyZmFjZSBUZXh0U2V0dGluZyBleHRlbmRzIE1ldGFvYmplY3REYXRhTW9kZWwge1xuICAgIElzRW1iZWRIdG1sOiBib29sZWFuO1xufVxuIiwiQGlmICghaXNFbWJlZEh0bWwpIHtcbjxpbnB1dFxuICAgIGZkLWZvcm0tY29udHJvbFxuICAgIFtwbGFjZWhvbGRlcl09XCJTZXR0aW5nLk51bGxUZXh0IHx8ICcnXCJcbiAgICBbYXR0ci5yZWFkb25seV09XCIocmVhZG9ubHkkIHwgYXN5bmMpID09PSB0cnVlID8gdHJ1ZSA6IG51bGxcIlxuICAgIFtkaXNhYmxlZF09XCIoZGlzYWJsZSQgfCBhc3luYykgPT09IHRydWUgPyB0cnVlIDogbnVsbFwiXG4gICAgW3R5cGVdPVwiU2V0dGluZy5Jc1Bhc3N3b3JkID8gJ3Bhc3N3b3JkJyA6ICd0ZXh0J1wiXG4gICAgW3ZhbHVlXT1cIiF2YWx1ZSA/ICcnIDogdmFsdWVcIlxuICAgIFthdHRyLm1heExlbmd0aF09XCJTZXR0aW5nLk1heExlbmd0aCAhPT0gdW5kZWZpbmVkID8gU2V0dGluZy5NYXhMZW5ndGggOiBudWxsXCJcbiAgICBbaWRdPVwiaWRcIlxuICAgIFtzdHlsZS5kaXJlY3Rpb25dPVwiU2V0dGluZy5Jc0x0ciA9PT0gdHJ1ZSA/ICdsdHInIDogbnVsbFwiXG4gICAgKGlucHV0KT1cIm9uVmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuLz5cbn0gQGVsc2Uge1xuPGRpdiBbaW5uZXJIVE1MXT1cInNhZmVIdG1sXCI+PC9kaXY+XG59XG4iXX0=
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktdGV4dC1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS1zYXAtdWkvc3JjL2xpYi91aS10ZXh0LWZpZWxkL3VpLXRleHQtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktdGV4dC1maWVsZC91aS10ZXh0LWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxGLE9BQU8sRUFBRSxrQkFBa0IsRUFBdUIsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQVEvRSxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsa0JBQWtCO0lBR3hELElBQWEsT0FBTztRQUNoQixPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUdELFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQztRQUNoRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFDRCxhQUFhLENBQUMsQ0FBQztRQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxTQUFTLENBQUMsQ0FBQztRQUNQLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDZixPQUFPO1lBQ1gsQ0FBQztZQUNELE1BQU0sT0FBTyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25HLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDWCxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ25CLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN4QixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFDTyxZQUFZLENBQUMsR0FBRztRQUNwQixJQUFJLE9BQU8sR0FBRyxDQUFDLEtBQUssS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNuQyxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO2FBQU0sSUFBSSxPQUFPLEdBQUcsQ0FBQyxLQUFLLEtBQUssUUFBUSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDeEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7UUFDbEcsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7OEdBckNRLG9CQUFvQjtrR0FBcEIsb0JBQW9CLGdJQ1ZqQyxpckJBa0JBOzsyRkRSYSxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0ksbUJBQW1CLG1CQUdaLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLEtBQUs7c0JBQWIsS0FBSztnQkFFTyxPQUFPO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBGaWVsZEJhc2VDb21wb25lbnQsIE1ldGFvYmplY3REYXRhTW9kZWwgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYnN1LXVpLXRleHQtZmllbGQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi91aS10ZXh0LWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi91aS10ZXh0LWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVWlUZXh0RmllbGRDb21wb25lbnQgZXh0ZW5kcyBGaWVsZEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmc7XG4gICAgc2FmZUh0bWw6IGFueTtcbiAgICBASW5wdXQoKSBnZXQgTWluU2l6ZSgpOiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0ge1xuICAgICAgICByZXR1cm4geyB3aWR0aDogMCwgaGVpZ2h0OiAzMCB9O1xuICAgIH1cbiAgICBwYXJhbWV0ZXJzOiBUZXh0U2V0dGluZztcbiAgICBpc0VtYmVkSHRtbDogYm9vbGVhbjtcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5pc0VtYmVkSHRtbCA9IHRoaXMucGFyYW1ldGVycz8uSXNFbWJlZEh0bWw7XG4gICAgICAgIHRoaXMuc2FmZUh0bWwgPSB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodGhpcy52YWx1ZSk7XG4gICAgfVxuICAgIG9uVmFsdWVDaGFuZ2UoZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gZS50YXJnZXQudmFsdWU7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICB9XG4gICAgb25LZXlEb3duKGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGV4dC5tYXNrUmUpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzQ2hhcmFjdGVyID0gdGhpcy5faXNDaGFyYWN0ZXIoZSk7XG4gICAgICAgICAgICBpZiAoIWlzQ2hhcmFjdGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgaXNWYWxpZCA9IG5ldyBSZWdFeHAoJ15bJyArIHRoaXMuY29udGV4dC5tYXNrUmUgKyAnXSokJykudGVzdChlLmN1cnJlbnRUYXJnZXQudmFsdWUgKyBlLmtleSk7XG4gICAgICAgICAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBwcml2YXRlIF9pc0NoYXJhY3RlcihldnQpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHR5cGVvZiBldnQud2hpY2ggPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZXZ0LndoaWNoID09PSAnbnVtYmVyJyAmJiBldnQud2hpY2ggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gIWV2dC5jdHJsS2V5ICYmICFldnQubWV0YUtleSAmJiAhZXZ0LmFsdEtleSAmJiBldnQud2hpY2ggIT09IDggJiYgZXZ0LmtleS5sZW5ndGggPT09IDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbmludGVyZmFjZSBUZXh0U2V0dGluZyBleHRlbmRzIE1ldGFvYmplY3REYXRhTW9kZWwge1xuICAgIElzRW1iZWRIdG1sOiBib29sZWFuO1xufVxuIiwiQGlmICghaXNFbWJlZEh0bWwpIHtcbjxpbnB1dFxuICAgIGZkLWZvcm0tY29udHJvbFxuICAgIFtwbGFjZWhvbGRlcl09XCJTZXR0aW5nLk51bGxUZXh0IHx8ICcnXCJcbiAgICBbYXR0ci5yZWFkb25seV09XCIocmVhZG9ubHkkIHwgYXN5bmMpID09PSB0cnVlID8gdHJ1ZSA6IG51bGxcIlxuICAgIFtkaXNhYmxlZF09XCIoZGlzYWJsZSQgfCBhc3luYykgPT09IHRydWUgPyB0cnVlIDogbnVsbFwiXG4gICAgW3R5cGVdPVwiU2V0dGluZy5Jc1Bhc3N3b3JkID8gJ3Bhc3N3b3JkJyA6ICd0ZXh0J1wiXG4gICAgW3ZhbHVlXT1cIiF2YWx1ZSA/ICcnIDogdmFsdWVcIlxuICAgIFthdHRyLm1heExlbmd0aF09XCJTZXR0aW5nLk1heExlbmd0aCAhPT0gdW5kZWZpbmVkID8gU2V0dGluZy5NYXhMZW5ndGggOiBudWxsXCJcbiAgICBbaWRdPVwiaWRcIlxuICAgIFtzdHlsZS5kaXJlY3Rpb25dPVwiU2V0dGluZy5Jc0x0ciA9PT0gdHJ1ZSA/ICdsdHInIDogbnVsbFwiXG4gICAgW3N0eWxlLnRleHQtYWxpZ25dPVwiU2V0dGluZy5Jc0x0ciA9PT0gdHJ1ZSA/ICdsZWZ0JyA6IG51bGxcIlxuICAgIChpbnB1dCk9XCJvblZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbi8+XG59IEBlbHNlIHtcbjxkaXYgW2lubmVySFRNTF09XCJzYWZlSHRtbFwiPjwvZGl2PlxufVxuIl19