@ng-matero/extensions 14.8.2 → 14.8.4

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.
@@ -190,18 +190,19 @@ export class MtxGridComponent {
190
190
  _getColData(data, colDef) {
191
191
  return this._gridSrv.getColData(data, colDef);
192
192
  }
193
+ _isColumnHide(item) {
194
+ return item.hide !== undefined ? item.hide : item.show !== undefined ? !item.show : false;
195
+ }
193
196
  // Waiting for async data
194
197
  ngOnChanges(changes) {
195
198
  this._countPinnedPosition();
196
- this.displayedColumns = this.columns.filter(item => !item.hide).map(item => item.field);
199
+ this.displayedColumns = this.columns
200
+ .filter(item => !this._isColumnHide(item))
201
+ .map(item => item.field);
197
202
  if (this.showColumnMenuButton) {
198
203
  this.columns.forEach(item => {
199
- if (this.columnHideableChecked === 'show') {
200
- item.show = !item.hide;
201
- }
202
- else {
203
- item.hide = !!item.hide;
204
- }
204
+ item.hide = this._isColumnHide(item);
205
+ item.show = !item.hide;
205
206
  });
206
207
  }
207
208
  if (this.rowSelectable && !this.hideRowSelectionCheckbox) {
@@ -257,7 +258,7 @@ export class MtxGridComponent {
257
258
  });
258
259
  }
259
260
  _getIndex(index, dataIndex) {
260
- return typeof index === 'undefined' ? dataIndex : index;
261
+ return index === undefined ? dataIndex : index;
261
262
  }
262
263
  _onSortChange(sort) {
263
264
  this.sortChange.emit(sort);
@@ -625,4 +626,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
625
626
  type: HostListener,
626
627
  args: ['click', ['$event']]
627
628
  }] } });
628
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL2dyaWQvZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL2dyaWQvZ3JpZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBS04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsWUFBWSxFQUFhLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLE9BQU8sRUFBdUIsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsWUFBWSxFQUVaLGVBQWUsRUFDZixTQUFTLEVBQ1QsUUFBUSxFQUNSLGtCQUFrQixHQUNuQixNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQWVqQyx3RUFBd0U7QUFDeEUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQ3hELDBCQUEwQixDQUMzQixDQUFDO0FBcUJGLE1BQU0sT0FBTyxnQkFBZ0I7SUFnUDNCLFlBQ1UsUUFBd0IsRUFDeEIsa0JBQXFDLEVBR3JDLGVBQXVDO1FBSnZDLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FB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LENBQUM7UUFFdEMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRTtZQUM3QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDZjtJQUNILENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNqQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7OzZJQTlDVSw2QkFBNkIsa0JBcUJiLGdCQUFnQjtpSUFyQmhDLDZCQUE2QjsyRkFBN0IsNkJBQTZCO2tCQUh6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw0QkFBNEI7aUJBQ3ZDOzBEQXNCNEIsZ0JBQWdCLDBCQWJ2QyxRQUFRO3NCQURYLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQU16QixvQkFBb0I7c0JBRHZCLEtBQUs7Z0JBT0ksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUtQLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IFNlbGVjdGlvbk1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3QsXG4gIEluamVjdGlvblRva2VuLFxuICBJbnB1dCxcbiAgS2V5VmFsdWVDaGFuZ2VSZWNvcmQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBUcmFja0J5RnVuY3Rpb24sXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGhlbWVQYWxldHRlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IsIFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBNYXRTb3J0LCBTb3J0LCBTb3J0RGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQge1xuICBNYXRGb290ZXJSb3csXG4gIE1hdEZvb3RlclJvd0RlZixcbiAgTWF0SGVhZGVyUm93RGVmLFxuICBNYXRSb3dEZWYsXG4gIE1hdFRhYmxlLFxuICBNYXRUYWJsZURhdGFTb3VyY2UsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcblxuaW1wb3J0IHsgTXR4R3JpZENvbHVtbk1lbnVDb21wb25lbnQgfSBmcm9tICcuL2NvbHVtbi1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNdHhHcmlkRXhwYW5zaW9uVG9nZ2xlRGlyZWN0aXZlIH0gZnJvbSAnLi9leHBhbnNpb24tdG9nZ2xlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1xuICBNdHhHcmlkQnV0dG9uVHlwZSxcbiAgTXR4R3JpZENlbGxUZW1wbGF0ZSxcbiAgTXR4R3JpZENvbHVtbixcbiAgTXR4R3JpZENvbHVtblBpbk9wdGlvbixcbiAgTXR4R3JpZERlZmF1bHRPcHRpb25zLFxuICBNdHhHcmlkUm93Q2xhc3NGb3JtYXR0ZXIsXG4gIE10eEdyaWRSb3dTZWxlY3Rpb25Gb3JtYXR0ZXIsXG59IGZyb20gJy4vZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTXR4R3JpZFNlcnZpY2UgfSBmcm9tICcuL2dyaWQuc2VydmljZSc7XG5cbi8qKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGRlZmF1bHQgZ3JpZCBvcHRpb25zLiAqL1xuZXhwb3J0IGNvbnN0IE1UWF9HUklEX0RFRkFVTFRfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxNdHhHcmlkRGVmYXVsdE9wdGlvbnM+KFxuICAnbXR4LWdyaWQtZGVmYXVsdC1vcHRpb25zJ1xuKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXR4LWdyaWQnLFxuICBleHBvcnRBczogJ210eEdyaWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dyaWQuY29tcG9uZW50LnNjc3MnXSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnbXR4LWdyaWQnLFxuICB9LFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ2V4cGFuc2lvbicsIFtcbiAgICAgIHN0YXRlKCdjb2xsYXBzZWQsIHZvaWQnLCBzdHlsZSh7IGhlaWdodDogJzAnLCBtaW5IZWlnaHQ6ICcwJywgdmlzaWJpbGl0eTogJ2hpZGRlbicgfSkpLFxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBoZWlnaHQ6ICcqJywgdmlzaWJpbGl0eTogJ3Zpc2libGUnIH0pKSxcbiAgICAgIHRyYW5zaXRpb24oJ2V4cGFuZGVkIDw9PiBjb2xsYXBzZWQnLCBhbmltYXRlKCcyMjVtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSknKSksXG4gICAgICB0cmFuc2l0aW9uKCdleHBhbmRlZCA8PT4gdm9pZCcsIGFuaW1hdGUoJzIyNW1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKScpKSxcbiAgICBdKSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTXR4R3JpZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZChNYXRUYWJsZSkgdGFibGUhOiBNYXRUYWJsZTxhbnk+O1xuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvcikgcGFnaW5hdG9yITogTWF0UGFnaW5hdG9yO1xuICBAVmlld0NoaWxkKE1hdFNvcnQpIHNvcnQhOiBNYXRTb3J0O1xuICBAQ29udGVudENoaWxkcmVuKE1hdFJvd0RlZikgcm93RGVmcyE6IFF1ZXJ5TGlzdDxNYXRSb3dEZWY8YW55Pj47XG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0SGVhZGVyUm93RGVmKSBoZWFkZXJSb3dEZWZzITogUXVlcnlMaXN0PE1hdEhlYWRlclJvd0RlZj47XG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0Rm9vdGVyUm93KSBmb290ZXJSb3dEZWZzITogUXVlcnlMaXN0PE1hdEZvb3RlclJvd0RlZj47XG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbk1lbnUnKSBjb2x1bW5NZW51ITogTXR4R3JpZENvbHVtbk1lbnVDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ3RhYmxlQ29udGFpbmVyJykgdGFibGVDb250YWluZXIhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICBkYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZSgpO1xuXG4gIC8qKiBUaGUgZ3JpZCdzIGRpc3BsYXllZCBjb2x1bW5zLiAqL1xuICBASW5wdXQoKSBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xuICAvKiogVGhlIGdyaWQncyBjb2x1bW5zLiAqL1xuICBASW5wdXQoKSBjb2x1bW5zOiBNdHhHcmlkQ29sdW1uW10gPSBbXTtcbiAgLyoqIFRoZSBncmlkJ3MgZGF0YS4gKi9cbiAgQElucHV0KCkgZGF0YTogYW55W10gPSBbXTtcbiAgLyoqIFRoZSB0b3RhbCBudW1iZXIgb2YgdGhlIGRhdGEuICovXG4gIEBJbnB1dCgpIGxlbmd0aCA9IDA7XG4gIC8qKiBXaGV0aGVyIHRoZSBncmlkIGlzIGxvYWRpbmcuICovXG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcbiAgLyoqIFRyYWNraW5nIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGNoZWNrIHRoZSBkaWZmZXJlbmNlcyBpbiBkYXRhIGNoYW5nZXMuICovXG4gIEBJbnB1dCgpIHRyYWNrQnkhOiBUcmFja0J5RnVuY3Rpb248YW55PjtcbiAgLyoqIFdoZXRoZXIgdGhlIGNvbHVtbiBpcyByZXNpemFibGUuICovXG4gIEBJbnB1dCgpIGNvbHVtblJlc2l6YWJsZSA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5jb2x1bW5SZXNpemFibGUgPz8gZmFsc2U7XG4gIC8qKiBQbGFjZWhvbGRlciBmb3IgdGhlIGVtcHR5IHZhbHVlIChgbnVsbGAsIGAnJ2AsIGBbXWApLiAqL1xuICBASW5wdXQoKSBlbXB0eVZhbHVlUGxhY2Vob2xkZXIgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uZW1wdHlWYWx1ZVBsYWNlaG9sZGVyID8/ICctLSc7XG5cbiAgLy8gPT09PT0gUGFnZSA9PT09PVxuXG4gIC8qKiBXaGV0aGVyIHRvIHBhZ2luYXRlIHRoZSBkYXRhIG9uIGZyb250IGVuZC4gKi9cbiAgQElucHV0KCkgcGFnZU9uRnJvbnQgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8ucGFnZU9uRnJvbnQgPz8gdHJ1ZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgcGFnaW5hdG9yLiAqL1xuICBASW5wdXQoKSBzaG93UGFnaW5hdG9yID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnNob3dQYWdpbmF0b3IgPz8gdHJ1ZTtcbiAgLyoqIFdoZXRoZXIgdGhlIHBhZ2luYXRvciBpcyBkaXNhYmxlZC4gKi9cbiAgQElucHV0KCkgcGFnZURpc2FibGVkID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnBhZ2VEaXNhYmxlZCA/PyBmYWxzZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgZmlyc3QvbGFzdCBidXR0b25zIFVJIHRvIHRoZSB1c2VyLiAqL1xuICBASW5wdXQoKSBzaG93Rmlyc3RMYXN0QnV0dG9ucyA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5zaG93Rmlyc3RMYXN0QnV0dG9ucyA/PyB0cnVlO1xuICAvKiogVGhlIHplcm8tYmFzZWQgcGFnZSBpbmRleCBvZiB0aGUgZGlzcGxheWVkIGxpc3Qgb2YgaXRlbXMuICovXG4gIEBJbnB1dCgpIHBhZ2VJbmRleCA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5wYWdlSW5kZXggPz8gMDtcbiAgLyoqIE51bWJlciBvZiBpdGVtcyB0byBkaXNwbGF5IG9uIGEgcGFnZS4gKi9cbiAgQElucHV0KCkgcGFnZVNpemUgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8ucGFnZVNpemUgPz8gMTA7XG4gIC8qKiBUaGUgc2V0IG9mIHByb3ZpZGVkIHBhZ2Ugc2l6ZSBvcHRpb25zIHRvIGRpc3BsYXkgdG8gdGhlIHVzZXIuICovXG4gIEBJbnB1dCgpIHBhZ2VTaXplT3B0aW9ucyA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5wYWdlU2l6ZU9wdGlvbnMgPz8gWzEwLCA1MCwgMTAwXTtcbiAgLyoqIFdoZXRoZXIgdG8gaGlkZSB0aGUgcGFnZSBzaXplIHNlbGVjdGlvbiBVSSBmcm9tIHRoZSB1c2VyLiAqL1xuICBASW5wdXQoKSBoaWRlUGFnZVNpemUgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uaGlkZVBhZ2VTaXplID8/IGZhbHNlO1xuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBwYWdpbmF0b3IgY2hhbmdlcyB0aGUgcGFnZSBzaXplIG9yIHBhZ2UgaW5kZXguICovXG4gIEBPdXRwdXQoKSBwYWdlID0gbmV3IEV2ZW50RW1pdHRlcjxQYWdlRXZlbnQ+KCk7XG4gIC8qKiBUaGUgdGVtcGxhdGUgZm9yIHRoZSBwYWdpbmF0aW9uLiAqL1xuICBASW5wdXQoKSBwYWdpbmF0aW9uVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8vID09PT09IFNvcnQgPT09PT1cblxuICAvKiogV2hldGhlciB0byBzb3J0IHRoZSBkYXRhIG9uIGZyb250IGVuZC4gKi9cbiAgQElucHV0KCkgc29ydE9uRnJvbnQgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uc29ydE9uRnJvbnQgPz8gdHJ1ZTtcbiAgLyoqIFRoZSBpZCBvZiB0aGUgbW9zdCByZWNlbnRseSBzb3J0ZWQgTWF0U29ydGFibGUuICovXG4gIEBJbnB1dCgpIHNvcnRBY3RpdmUgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uc29ydEFjdGl2ZSA/PyAnJztcbiAgLyoqIFRoZSBzb3J0IGRpcmVjdGlvbiBvZiB0aGUgY3VycmVudGx5IGFjdGl2ZSBNYXRTb3J0YWJsZS4gKi9cbiAgQElucHV0KCkgc29ydERpcmVjdGlvbjogU29ydERpcmVjdGlvbiA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5zb3J0RGlyZWN0aW9uID8/ICcnO1xuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSB1c2VyIGZyb20gY2xlYXJpbmcgdGhlIHNvcnQgYnkgZmluaXNoaW5nIHRoZSBzb3J0IGRpcmVjdGlvbiBjeWNsZS5cbiAgICogTWF5IGJlIG92ZXJyaWRlbiBieSB0aGUgY29sdW1uJ3MgYGRpc2FibGVDbGVhcmAgaW4gYHNvcnRQcm9wYC5cbiAgICovXG4gIEBJbnB1dCgpIHNvcnREaXNhYmxlQ2xlYXIgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uc29ydERpc2FibGVDbGVhciA/PyBmYWxzZTtcbiAgLyoqIFdoZXRoZXIgdGhlIHNvcnQgaXMgZGlzYWJsZWQuICovXG4gIEBJbnB1dCgpIHNvcnREaXNhYmxlZCA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5zb3J0RGlzYWJsZWQgPz8gZmFsc2U7XG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0aW9uIHRvIHNldCB3aGVuIGFuIE1hdFNvcnRhYmxlIGlzIGluaXRpYWxseSBzb3J0ZWQuXG4gICAqIE1heSBiZSBvdmVycmlkZW4gYnkgdGhlIGNvbHVtbidzIGBzdGFydGAgaW4gYHNvcnRQcm9wYC5cbiAgICovXG4gIEBJbnB1dCgpIHNvcnRTdGFydDogJ2FzYycgfCAnZGVzYycgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uc29ydFN0YXJ0ID8/ICdhc2MnO1xuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSB1c2VyIGNoYW5nZXMgZWl0aGVyIHRoZSBhY3RpdmUgc29ydCBvciBzb3J0IGRpcmVjdGlvbi4gKi9cbiAgQE91dHB1dCgpIHNvcnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNvcnQ+KCk7XG5cbiAgLy8gPT09PT0gUm93ID09PT09XG5cbiAgLyoqIFdoZXRoZXIgdG8gdXNlIHRoZSByb3cgaG92ZXIgc3R5bGUuICovXG4gIEBJbnB1dCgpIHJvd0hvdmVyID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnJvd0hvdmVyID8/IGZhbHNlO1xuICAvKiogV2hldGhlciB0byB1c2UgdGhlIHJvdyBzdHJpcGVkIHN0eWxlLiAqL1xuICBASW5wdXQoKSByb3dTdHJpcGVkID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnJvd1N0cmlwZWQgPz8gZmFsc2U7XG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHVzZXIgY2xpY2tzIHRoZSByb3cuICovXG4gIEBPdXRwdXQoKSByb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8vID09PT09IEV4cGFuZGFibGUgUm93ID09PT09XG5cbiAgZXhwYW5zaW9uUm93U3RhdGVzOiBhbnlbXSA9IFtdO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSByb3cgaXMgZXhwYW5kYWJsZS4gKi9cbiAgQElucHV0KCkgZXhwYW5kYWJsZSA9IGZhbHNlO1xuICAvKiogVGhlIHRlbXBsYXRlIGZvciB0aGUgZXhwYW5kYWJsZSByb3cuICovXG4gIEBJbnB1dCgpIGV4cGFuc2lvblRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgdXNlciB0b2dnbGVzIHRoZSBleHBhbmRhYmxlIHJvdy4gKi9cbiAgQE91dHB1dCgpIGV4cGFuc2lvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIC8vID09PT09IFJvdyBTZWxlY3Rpb24gPT09PT1cblxuICByb3dTZWxlY3Rpb246IFNlbGVjdGlvbk1vZGVsPGFueT4gPSBuZXcgU2VsZWN0aW9uTW9kZWw8YW55Pih0cnVlLCBbXSk7XG5cbiAgLyoqIFdoZXRoZXIgdG8gc3VwcG9ydCBtdWx0aXBsZSByb3cvY2VsbCBzZWxlY3Rpb24uICovXG4gIEBJbnB1dCgpIG11bHRpU2VsZWN0YWJsZSA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5tdWx0aVNlbGVjdGFibGUgPz8gdHJ1ZTtcbiAgLyoqIFdoZXRoZXIgdGhlIHVzZXIgY2FuIHNlbGVjdCBtdWx0aXBsZSByb3dzIHdpdGggY2xpY2suICovXG4gIEBJbnB1dCgpIG11bHRpU2VsZWN0aW9uV2l0aENsaWNrID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/Lm11bHRpU2VsZWN0aW9uV2l0aENsaWNrID8/IGZhbHNlO1xuICAvKiogVGhlIHNlbGVjdGVkIHJvdyBpdGVtcy4gKi9cbiAgQElucHV0KCkgcm93U2VsZWN0ZWQ6IGFueVtdID0gW107XG4gIC8qKiBXaGV0aGVyIHRoZSByb3cgaXMgc2VsZWN0YWJsZS4gKi9cbiAgQElucHV0KCkgcm93U2VsZWN0YWJsZSA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5yb3dTZWxlY3RhYmxlID8/IGZhbHNlO1xuICAvKiogV2hldGhlciB0byBoaWRlIHRoZSByb3cgc2VsZWN0aW9uIGNoZWNrYm94LiAqL1xuICBASW5wdXQoKSBoaWRlUm93U2VsZWN0aW9uQ2hlY2tib3ggPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uaGlkZVJvd1NlbGVjdGlvbkNoZWNrYm94ID8/IGZhbHNlO1xuICAvKiogV2hldGhlciBkaXNhYmxlIHJvd3MgdG8gYmUgc2VsZWN0ZWQgd2hlbiBjbGlja2VkLiAqL1xuICBASW5wdXQoKSBkaXNhYmxlUm93Q2xpY2tTZWxlY3Rpb24gPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uZGlzYWJsZVJvd0NsaWNrU2VsZWN0aW9uID8/IGZhbHNlO1xuICAvKiogVGhlIGZvcm1hdHRlciB0byBkaXNhYmxlIHRoZSByb3cgc2VsZWN0aW9uIG9yIGhpZGUgdGhlIHJvdydzIGNoZWNrYm94LiAqL1xuICBASW5wdXQoKSByb3dTZWxlY3Rpb25Gb3JtYXR0ZXI6IE10eEdyaWRSb3dTZWxlY3Rpb25Gb3JtYXR0ZXIgPSB7fTtcbiAgLyoqIFRoZSBmb3JtYXR0ZXIgdG8gc2V0IHRoZSByb3cncyBjbGFzcy4gKi9cbiAgQElucHV0KCkgcm93Q2xhc3NGb3JtYXR0ZXI/OiBNdHhHcmlkUm93Q2xhc3NGb3JtYXR0ZXI7XG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHJvdyBpcyBzZWxlY3RlZC4gKi9cbiAgQE91dHB1dCgpIHJvd1NlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG5cbiAgLy8gPT09PT0gQ2VsbCBTZWxlY3Rpb24gPT09PT1cblxuICBjZWxsU2VsZWN0aW9uOiBhbnlbXSA9IFtdO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBjZWxsIGlzIHNlbGVjdGFibGUuICovXG4gIEBJbnB1dCgpIGNlbGxTZWxlY3RhYmxlID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LmNlbGxTZWxlY3RhYmxlID8/IHRydWU7XG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGNlbGwgaXMgc2VsZWN0ZWQuICovXG4gIEBPdXRwdXQoKSBjZWxsU2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcblxuICBwcml2YXRlIF9zZWxlY3RlZENlbGw/OiBNdHhHcmlkQ2VsbFNlbGVjdGlvbkRpcmVjdGl2ZTtcblxuICAvLyA9PT09PSBUb29sYmFyID09PT09XG5cbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgdG9vbGJhci4gKi9cbiAgQElucHV0KCkgc2hvd1Rvb2xiYXIgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uc2hvd1Rvb2xiYXIgPz8gZmFsc2U7XG4gIC8qKiBUaGUgdGV4dCBvZiB0aGUgdG9vbGJhcidzIHRpdGxlLiAqL1xuICBASW5wdXQoKSB0b29sYmFyVGl0bGUgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8udG9vbGJhclRpdGxlID8/ICcnO1xuICAvKiogVGhlIHRlbXBsYXRlIGZvciB0aGUgdG9vbGJhci4gKi9cbiAgQElucHV0KCkgdG9vbGJhclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvLyA9PT09PSBDb2x1bW4gTWVudSA9PT09PVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBjb2x1bW4gaXMgaGlkZWFibGUuICovXG4gIEBJbnB1dCgpIGNvbHVtbkhpZGVhYmxlID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LmNvbHVtbkhpZGVhYmxlID8/IHRydWU7XG4gIC8qKiBIaWRlIG9yIHNob3cgd2hlbiB0aGUgY29sdW1uJ3MgY2hlY2tib3ggaXMgY2hlY2tlZC4gKi9cbiAgQElucHV0KCkgY29sdW1uSGlkZWFibGVDaGVja2VkOiAnc2hvdycgfCAnaGlkZScgPVxuICAgIHRoaXMuX2RlZmF1bHRPcHRpb25zPy5jb2x1bW5IaWRlYWJsZUNoZWNrZWQgPz8gJ3Nob3cnO1xuICAvKiogV2hldGhlciB0aGUgY29sdW1uIGlzIHNvcnRhYmxlLiAqL1xuICBASW5wdXQoKSBjb2x1bW5Tb3J0YWJsZSA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5jb2x1bW5Tb3J0YWJsZSA/PyB0cnVlO1xuICAvKiogV2hldGhlciB0aGUgY29sdW1uIGlzIHBpbm5hYmxlLiAqL1xuICBASW5wdXQoKSBjb2x1bW5QaW5uYWJsZSA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5jb2x1bW5QaW5uYWJsZSA/PyB0cnVlO1xuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBjb2x1bW4gaXMgaGlkZWQgb3IgaXMgc29ydGVkLiAqL1xuICBAT3V0cHV0KCkgY29sdW1uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNdHhHcmlkQ29sdW1uW10+KCk7XG4gIC8qKiBUaGUgb3B0aW9ucyBmb3IgdGhlIGNvbHVtbiBwaW4gbGlzdC4gKi9cbiAgQElucHV0KCkgY29sdW1uUGluT3B0aW9uczogTXR4R3JpZENvbHVtblBpbk9wdGlvbltdID1cbiAgICB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uY29sdW1uUGluT3B0aW9ucyA/PyBbXTtcblxuICAvKiogV2hldGhlciB0byBzaG93IHRoZSBjb2x1bW4gbWVudSBidXR0b24uICovXG4gIEBJbnB1dCgpIHNob3dDb2x1bW5NZW51QnV0dG9uID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnNob3dDb2x1bW5NZW51QnV0dG9uID8/IHRydWU7XG4gIC8qKiBUaGUgdGV4dCBmb3IgdGhlIGNvbHVtbiBtZW51IGJ1dHRvbi4gKi9cbiAgQElucHV0KCkgY29sdW1uTWVudUJ1dHRvblRleHQgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uY29sdW1uTWVudUJ1dHRvblRleHQgPz8gJyc7XG4gIC8qKiBUaGUgdHlwZSBmb3IgdGhlIGNvbHVtbiBtZW51IGJ1dHRvbi4gKi9cbiAgQElucHV0KCkgY29sdW1uTWVudUJ1dHRvblR5cGU6IE10eEdyaWRCdXR0b25UeXBlID1cbiAgICB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uY29sdW1uTWVudUJ1dHRvblR5cGUgPz8gJ3N0cm9rZWQnO1xuICAvKiogVGhlIGNvbG9yIGZvciB0aGUgY29sdW1uIG1lbnUgYnV0dG9uLiAqL1xuICBASW5wdXQoKSBjb2x1bW5NZW51QnV0dG9uQ29sb3I6IFRoZW1lUGFsZXR0ZSA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5jb2x1bW5NZW51QnV0dG9uQ29sb3I7XG4gIC8qKiBUaGUgY2xhc3MgZm9yIHRoZSBjb2x1bW4gbWVudSBidXR0b24uICovXG4gIEBJbnB1dCgpIGNvbHVtbk1lbnVCdXR0b25DbGFzcyA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5jb2x1bW5NZW51QnV0dG9uQ2xhc3MgPz8gJyc7XG4gIC8qKiBUaGUgaWNvbiBmb3IgdGhlIGNvbHVtbiBtZW51IGJ1dHRvbi4gKi9cbiAgQElucHV0KCkgY29sdW1uTWVudUJ1dHRvbkljb24gPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uY29sdW1uTWVudUJ1dHRvbkljb24gPz8gJyc7XG5cbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY29sdW1uLW1lbnUncyBoZWFkZXIuICovXG4gIEBJbnB1dCgpIHNob3dDb2x1bW5NZW51SGVhZGVyID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnNob3dDb2x1bW5NZW51SGVhZGVyID8/IGZhbHNlO1xuICAvKiogVGhlIHRleHQgZm9yIHRoZSBjb2x1bW4tbWVudSdzIGhlYWRlci4gKi9cbiAgQElucHV0KCkgY29sdW1uTWVudUhlYWRlclRleHQgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uY29sdW1uTWVudUhlYWRlclRleHQgPz8gJ0NvbHVtbnMgSGVhZGVyJztcbiAgLyoqIFRoZSB0ZW1wbGF0ZSBmb3IgdGhlIGNvbHVtbi1tZW51J3MgaGVhZGVyLiAqL1xuICBASW5wdXQoKSBjb2x1bW5NZW51SGVhZGVyVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAvKiogV2hldGhlciB0byBzaG93IHRoZSB0aGUgY29sdW1uLW1lbnUncyBmb290ZXIuICovXG4gIEBJbnB1dCgpIHNob3dDb2x1bW5NZW51Rm9vdGVyID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnNob3dDb2x1bW5NZW51Rm9vdGVyID8/IGZhbHNlO1xuICAvKiogVGhlIHRleHQgZm9yIHRoZSBjb2x1bW4tbWVudSdzIGZvb3Rlci4gKi9cbiAgQElucHV0KCkgY29sdW1uTWVudUZvb3RlclRleHQgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uY29sdW1uTWVudUZvb3RlclRleHQgPz8gJ0NvbHVtbnMgRm9vdGVyJztcbiAgLyoqIFRoZSB0ZW1wbGF0ZSBmb3IgdGhlIGNvbHVtbi1tZW51J3MgZm9vdGVyLiAqL1xuICBASW5wdXQoKSBjb2x1bW5NZW51Rm9vdGVyVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8vID09PT09IE5vIFJlc3VsdCA9PT09PVxuXG4gIC8qKiBUaGUgZGlzcGxheWVkIHRleHQgZm9yIHRoZSBlbXB0eSBkYXRhLiAqL1xuICBASW5wdXQoKSBub1Jlc3VsdFRleHQgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8ubm9SZXN1bHRUZXh0ID8/ICdObyByZWNvcmRzIGZvdW5kJztcbiAgLyoqIFRoZSB0ZW1wbGF0ZSBmb3IgdGhlIGVtcHR5IGRhdGEuICovXG4gIEBJbnB1dCgpIG5vUmVzdWx0VGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGdldCBfaGFzTm9SZXN1bHQoKSB7XG4gICAgcmV0dXJuICghdGhpcy5kYXRhIHx8IHRoaXMuZGF0YS5sZW5ndGggPT09IDApICYmICF0aGlzLmxvYWRpbmc7XG4gIH1cblxuICAvLyA9PT09PSBDZWxsIFRlbXBsYXRlcyA9PT09PVxuXG4gIC8qKiBUaGUgaGVhZGVyJ3MgY2VsbCB0ZW1wbGF0ZSBmb3IgdGhlIGdyaWQuICovXG4gIEBJbnB1dCgpIGhlYWRlclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PiB8IE10eEdyaWRDZWxsVGVtcGxhdGU7XG4gIC8qKiBUaGUgaGVhZGVyJ3MgY2VsbCB0ZW1wbGF0ZSBmb3IgdGhlIGdyaWQgZXhjbHVkZSBzb3J0LiAqL1xuICBASW5wdXQoKSBoZWFkZXJFeHRyYVRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PiB8IE10eEdyaWRDZWxsVGVtcGxhdGU7XG4gIC8qKiBUaGUgY2VsbCB0ZW1wbGF0ZSBmb3IgdGhlIGdyaWQuICovXG4gIEBJbnB1dCgpIGNlbGxUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT4gfCBNdHhHcmlkQ2VsbFRlbXBsYXRlO1xuXG4gIC8vID09PT09IFJvdyBUZW1wbGF0ZXMgPT09PT1cblxuICAvKiogV2hldGhlciB0byB1c2UgY3VzdG9tIHJvdyB0ZW1wbGF0ZS4gSWYgdHJ1ZSwgeW91IHNob3VsZCBkZWZpbmUgYSBtYXRSb3dEZWYuICovXG4gIEBJbnB1dCgpIHVzZUNvbnRlbnRSb3dUZW1wbGF0ZSA9IGZhbHNlO1xuICAvLyBUT0RPOiBJdCBjYW4ndCB1c2UgdG9nZXRoZXIgd2l0aCBgdXNlQ29udGVudFJvd1RlbXBsYXRlYFxuICBASW5wdXQoKSB1c2VDb250ZW50SGVhZGVyUm93VGVtcGxhdGUgPSBmYWxzZTtcbiAgLy8gVE9ETzogSXQncyBub3Qgd29ya2luZ1xuICBASW5wdXQoKSB1c2VDb250ZW50Rm9vdGVyUm93VGVtcGxhdGUgPSBmYWxzZTtcblxuICAvLyA9PT09PSBTdW1tYXJ5ID09PT09XG5cbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgc3VtbWFyeS4gKi9cbiAgQElucHV0KCkgc2hvd1N1bW1hcnkgPSBmYWxzZTtcbiAgLyoqIFRoZSB0ZW1wbGF0ZSBmb3IgdGhlIHN1bW1hcnkuICovXG4gIEBJbnB1dCgpIHN1bW1hcnlUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT4gfCBNdHhHcmlkQ2VsbFRlbXBsYXRlO1xuXG4gIC8vIFRPRE86IFN1bW1hcnkgZGlzcGxheSBjb25kaXRpb25zXG4gIGdldCBfd2hldGhlclNob3dTdW1tYXJ5KCkge1xuICAgIHJldHVybiB0aGlzLnNob3dTdW1tYXJ5O1xuICB9XG5cbiAgLy8gPT09PT0gU2lkZSBCYXIgPT09PT1cblxuICAvKiogV2hldGhlciB0byBzaG93IHRoZSBzaWRlYmFyLiAqL1xuICBASW5wdXQoKSBzaG93U2lkZWJhciA9IGZhbHNlO1xuICAvKiogVGhlIHRlbXBsYXRlIGZvciB0aGUgc2lkZWJhci4gKi9cbiAgQElucHV0KCkgc2lkZWJhclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvLyA9PT09PSBTdGF0dXMgQmFyID09PT09XG5cbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgc3RhdHVzIGJhci4gKi9cbiAgQElucHV0KCkgc2hvd1N0YXR1c2JhciA9IGZhbHNlO1xuICAvKiogVGhlIHRlbXBsYXRlIGZvciB0aGUgc3RhdHVzIGJhci4gKi9cbiAgQElucHV0KCkgc3RhdHVzYmFyVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKiBUaGUgY2hhbmdlZCByZWNvcmQgb2Ygcm93IGRhdGEuICovXG4gIHJvd0NoYW5nZVJlY29yZD86IEtleVZhbHVlQ2hhbmdlUmVjb3JkPHN0cmluZywgYW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9ncmlkU3J2OiBNdHhHcmlkU2VydmljZSxcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KE1UWF9HUklEX0RFRkFVTFRfT1BUSU9OUylcbiAgICBwcml2YXRlIF9kZWZhdWx0T3B0aW9ucz86IE10eEdyaWREZWZhdWx0T3B0aW9uc1xuICApIHt9XG5cbiAgZGV0ZWN0Q2hhbmdlcygpIHtcbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBfZ2V0Q29sRGF0YShkYXRhOiBhbnlbXSwgY29sRGVmOiBNdHhHcmlkQ29sdW1uKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dyaWRTcnYuZ2V0Q29sRGF0YShkYXRhLCBjb2xEZWYpO1xuICB9XG5cbiAgLy8gV2FpdGluZyBmb3IgYXN5bmMgZGF0YVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgdGhpcy5fY291bnRQaW5uZWRQb3NpdGlvbigpO1xuXG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5zLmZpbHRlcihpdGVtID0+ICFpdGVtLmhpZGUpLm1hcChpdGVtID0+IGl0ZW0uZmllbGQpO1xuXG4gICAgaWYgKHRoaXMuc2hvd0NvbHVtbk1lbnVCdXR0b24pIHtcbiAgICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBpZiAodGhpcy5jb2x1bW5IaWRlYWJsZUNoZWNrZWQgPT09ICdzaG93Jykge1xuICAgICAgICAgIGl0ZW0uc2hvdyA9ICFpdGVtLmhpZGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbS5oaWRlID0gISFpdGVtLmhpZGU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJvd1NlbGVjdGFibGUgJiYgIXRoaXMuaGlkZVJvd1NlbGVjdGlvbkNoZWNrYm94KSB7XG4gICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMudW5zaGlmdCgnTXR4R3JpZENoZWNrYm94Q29sdW1uRGVmJyk7XG4gICAgfVxuXG4gICAgLy8gV2Ugc2hvdWxkIGNvcHkgZWFjaCBpdGVtIG9mIGRhdGEgZm9yIGV4cGFuc2lvbiBkYXRhXG4gICAgaWYgKHRoaXMuZXhwYW5kYWJsZSkge1xuICAgICAgdGhpcy5leHBhbnNpb25Sb3dTdGF0ZXMgPSBbXTsgLy8gcmVzZXRcblxuICAgICAgdGhpcy5kYXRhPy5mb3JFYWNoKF8gPT4ge1xuICAgICAgICB0aGlzLmV4cGFuc2lvblJvd1N0YXRlcy5wdXNoKHsgZXhwYW5kZWQ6IGZhbHNlIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucm93U2VsZWN0YWJsZSkge1xuICAgICAgdGhpcy5yb3dTZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uTW9kZWw8YW55Pih0aGlzLm11bHRpU2VsZWN0YWJsZSwgdGhpcy5yb3dTZWxlY3RlZCk7XG4gICAgfVxuXG4gICAgdGhpcy5kYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZSh0aGlzLmRhdGEpO1xuXG4gICAgdGhpcy5kYXRhU291cmNlLnBhZ2luYXRvciA9IHRoaXMucGFnZU9uRnJvbnQgPyB0aGlzLnBhZ2luYXRvciA6IG51bGw7XG4gICAgdGhpcy5kYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnRPbkZyb250ID8gdGhpcy5zb3J0IDogbnVsbDtcblxuICAgIC8vIE9ubHkgc2Nyb2xsIHRvcCB3aXRoIGRhdGEgY2hhbmdlXG4gICAgaWYgKGNoYW5nZXMuZGF0YSkge1xuICAgICAgdGhpcy5zY3JvbGxUb3AoMCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLnBhZ2VPbkZyb250KSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5wYWdpbmF0b3I7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc29ydE9uRnJvbnQpIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5zb3J0ID0gdGhpcy5zb3J0O1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJvd0RlZnM/Lmxlbmd0aCA+IDAgJiYgdGhpcy51c2VDb250ZW50Um93VGVtcGxhdGUpIHtcbiAgICAgIHRoaXMucm93RGVmcy5mb3JFYWNoKHJvd0RlZiA9PiB0aGlzLnRhYmxlLmFkZFJvd0RlZihyb3dEZWYpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaGVhZGVyUm93RGVmcz8ubGVuZ3RoID4gMCAmJiB0aGlzLnVzZUNvbnRlbnRIZWFkZXJSb3dUZW1wbGF0ZSkge1xuICAgICAgdGhpcy5oZWFkZXJSb3dEZWZzLmZvckVhY2goaGVhZGVyUm93RGVmID0+IHRoaXMudGFibGUuYWRkSGVhZGVyUm93RGVmKGhlYWRlclJvd0RlZikpO1xuICAgIH1cbiAgICBpZiAodGhpcy5mb290ZXJSb3dEZWZzPy5sZW5ndGggPiAwICYmIHRoaXMudXNlQ29udGVudEZvb3RlclJvd1RlbXBsYXRlKSB7XG4gICAgICB0aGlzLmZvb3RlclJvd0RlZnMuZm9yRWFjaChmb290ZXJSb3dEZWYgPT4gdGhpcy50YWJsZS5hZGRGb290ZXJSb3dEZWYoZm9vdGVyUm93RGVmKSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7fVxuXG4gIF9jb3VudFBpbm5lZFBvc2l0aW9uKCkge1xuICAgIGNvbnN0IGNvdW50ID0gKGFjYzogbnVtYmVyLCBjdXI6IE10eEdyaWRDb2x1bW4pID0+IGFjYyArIHBhcnNlRmxvYXQoY3VyLndpZHRoIHx8ICc4MHB4Jyk7XG5cbiAgICBjb25zdCBwaW5uZWRMZWZ0Q29scyA9IHRoaXMuY29sdW1ucy5maWx0ZXIoY29sID0+IGNvbC5waW5uZWQgJiYgY29sLnBpbm5lZCA9PT0gJ2xlZnQnKTtcbiAgICBwaW5uZWRMZWZ0Q29scy5mb3JFYWNoKChpdGVtLCBpZHgpID0+IHtcbiAgICAgIGl0ZW0ubGVmdCA9IHBpbm5lZExlZnRDb2xzLnNsaWNlKDAsIGlkeCkucmVkdWNlKGNvdW50LCAwKSArICdweCc7XG4gICAgfSk7XG5cbiAgICBjb25zdCBwaW5uZWRSaWdodENvbHMgPSB0aGlzLmNvbHVtbnNcbiAgICAgIC5maWx0ZXIoY29sID0+IGNvbC5waW5uZWQgJiYgY29sLnBpbm5lZCA9PT0gJ3JpZ2h0JylcbiAgICAgIC5yZXZlcnNlKCk7XG4gICAgcGlubmVkUmlnaHRDb2xzLmZvckVhY2goKGl0ZW0sIGlkeCkgPT4ge1xuICAgICAgaXRlbS5yaWdodCA9IHBpbm5lZFJpZ2h0Q29scy5zbGljZSgwLCBpZHgpLnJlZHVjZShjb3VudCwgMCkgKyAncHgnO1xuICAgIH0pO1xuICB9XG5cbiAgX2dldEluZGV4KGluZGV4OiBudW1iZXIsIGRhdGFJbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBpbmRleCA9PT0gJ3VuZGVmaW5lZCcgPyBkYXRhSW5kZXggOiBpbmRleDtcbiAgfVxuXG4gIF9vblNvcnRDaGFuZ2Uoc29ydDogU29ydCkge1xuICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHNvcnQpO1xuICB9XG5cbiAgX29uUm93RGF0YUNoYW5nZShyZWNvcmQ6IEtleVZhbHVlQ2hhbmdlUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIHRoaXMucm93Q2hhbmdlUmVjb3JkID0gcmVjb3JkO1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqIEV4cGFuc2lvbiBjaGFuZ2UgZXZlbnQgKi9cbiAgX29uRXhwYW5zaW9uQ2hhbmdlKFxuICAgIGV4cGFuc2lvblJlZjogTXR4R3JpZEV4cGFuc2lvblRvZ2dsZURpcmVjdGl2ZSxcbiAgICByb3dEYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIGNvbHVtbjogTXR4R3JpZENvbHVtbixcbiAgICBpbmRleDogbnVtYmVyXG4gICkge1xuICAgIHRoaXMuZXhwYW5zaW9uQ2hhbmdlLmVtaXQoeyBleHBhbmRlZDogZXhwYW5zaW9uUmVmLmV4cGFuZGVkLCBkYXRhOiByb3dEYXRhLCBpbmRleCwgY29sdW1uIH0pO1xuICB9XG5cbiAgLyoqIENlbGwgc2VsZWN0IGV2ZW50ICovXG4gIF9zZWxlY3RDZWxsKFxuICAgIGNlbGxSZWY6IE10eEdyaWRDZWxsU2VsZWN0aW9uRGlyZWN0aXZlLFxuICAgIHJvd0RhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgY29sRGVmOiBNdHhHcmlkQ29sdW1uXG4gICk6IHZvaWQge1xuICAgIC8vIElmIG5vdCB0aGUgc2FtZSBjZWxsXG4gICAgaWYgKHRoaXMuX3NlbGVjdGVkQ2VsbCAhPT0gY2VsbFJlZikge1xuICAgICAgY29uc3QgY29sVmFsdWUgPSB0aGlzLl9ncmlkU3J2LmdldENlbGxWYWx1ZShyb3dEYXRhLCBjb2xEZWYpO1xuICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uID0gW107IC8vIHJlc2V0XG4gICAgICB0aGlzLmNlbGxTZWxlY3Rpb24ucHVzaCh7IGNlbGxEYXRhOiBjb2xWYWx1ZSwgcm93RGF0YSwgY29sRGVmIH0pO1xuXG4gICAgICB0aGlzLmNlbGxTZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLmNlbGxTZWxlY3Rpb24pO1xuXG4gICAgICBpZiAodGhpcy5fc2VsZWN0ZWRDZWxsKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkQ2VsbC5kZXNlbGVjdCgpOyAvLyB0aGUgc2VsZWN0ZWRDZWxsIHdpbGwgYmUgdW5kZWZpbmVkXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fc2VsZWN0ZWRDZWxsID0gY2VsbFJlZi5zZWxlY3RlZCA/IGNlbGxSZWYgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKiogUm93IHNlbGVjdCBldmVudCAqL1xuICBfc2VsZWN0Um93KGV2ZW50OiBNb3VzZUV2ZW50LCByb3dEYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5yb3dTZWxlY3RhYmxlICYmXG4gICAgICAhdGhpcy5yb3dTZWxlY3Rpb25Gb3JtYXR0ZXIuZGlzYWJsZWQ/Lihyb3dEYXRhLCBpbmRleCkgJiZcbiAgICAgICF0aGlzLnJvd1NlbGVjdGlvbkZvcm1hdHRlci5oaWRlQ2hlY2tib3g/Lihyb3dEYXRhLCBpbmRleCkgJiZcbiAgICAgICF0aGlzLmRpc2FibGVSb3dDbGlja1NlbGVjdGlvblxuICAgICkge1xuICAgICAgLy8gbWV0YUtleSAtPiBjb21tYW5kIGtleVxuICAgICAgaWYgKCF0aGlzLm11bHRpU2VsZWN0aW9uV2l0aENsaWNrICYmICFldmVudC5jdHJsS2V5ICYmICFldmVudC5tZXRhS2V5KSB7XG4gICAgICAgIHRoaXMucm93U2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3RvZ2dsZU5vcm1hbENoZWNrYm94KHJvd0RhdGEpO1xuICAgIH1cblxuICAgIHRoaXMucm93Q2xpY2suZW1pdCh7IHJvd0RhdGEsIGluZGV4IH0pO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIG51bWJlciBvZiBzZWxlY3RlZCBlbGVtZW50cyBtYXRjaGVzIHRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cy4gKi9cbiAgX2lzQWxsU2VsZWN0ZWQoKSB7XG4gICAgY29uc3QgbnVtU2VsZWN0ZWQgPSB0aGlzLnJvd1NlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGg7XG4gICAgY29uc3QgbnVtUm93cyA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmZpbHRlcihcbiAgICAgIChyb3csIGluZGV4KSA9PiAhdGhpcy5yb3dTZWxlY3Rpb25Gb3JtYXR0ZXIuZGlzYWJsZWQ/Lihyb3csIGluZGV4KVxuICAgICkubGVuZ3RoO1xuICAgIHJldHVybiBudW1TZWxlY3RlZCA9PT0gbnVtUm93cztcbiAgfVxuXG4gIC8qKiBTZWxlY3QgYWxsIHJvd3MgaWYgdGhleSBhcmUgbm90IGFsbCBzZWxlY3RlZDsgb3RoZXJ3aXNlIGNsZWFyIHNlbGVjdGlvbi4gKi9cbiAgX3RvZ2dsZU1hc3RlckNoZWNrYm94KCkge1xuICAgIHRoaXMuX2lzQWxsU2VsZWN0ZWQoKVxuICAgICAgPyB0aGlzLnJvd1NlbGVjdGlvbi5jbGVhcigpXG4gICAgICA6IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmZvckVhY2goKHJvdywgaW5kZXgpID0+IHtcbiAgICAgICAgICBpZiAoIXRoaXMucm93U2VsZWN0aW9uRm9ybWF0dGVyLmRpc2FibGVkPy4ocm93LCBpbmRleCkpIHtcbiAgICAgICAgICAgIHRoaXMucm93U2VsZWN0aW9uLnNlbGVjdChyb3cpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgdGhpcy5yb3dTZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnJvd1NlbGVjdGlvbi5zZWxlY3RlZCk7XG4gIH1cblxuICAvKiogU2VsZWN0IG5vcm1hbCByb3cgKi9cbiAgX3RvZ2dsZU5vcm1hbENoZWNrYm94KHJvdzogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIHRoaXMucm93U2VsZWN0aW9uLnRvZ2dsZShyb3cpO1xuICAgIHRoaXMucm93U2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5yb3dTZWxlY3Rpb24uc2VsZWN0ZWQpO1xuICB9XG5cbiAgLyoqIENvbHVtbiBjaGFuZ2UgZXZlbnQgKi9cbiAgX29uQ29sdW1uQ2hhbmdlKGNvbHVtbnM6IE10eEdyaWRDb2x1bW5bXSkge1xuICAgIHRoaXMuY29sdW1uQ2hhbmdlLmVtaXQoY29sdW1ucyk7XG5cbiAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBPYmplY3QuYXNzaWduKFtdLCB0aGlzLmdldERpc3BsYXllZENvbHVtbkZpZWxkcyhjb2x1bW5zKSk7XG5cbiAgICBpZiAodGhpcy5yb3dTZWxlY3RhYmxlICYmICF0aGlzLmhpZGVSb3dTZWxlY3Rpb25DaGVja2JveCkge1xuICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLnVuc2hpZnQoJ010eEdyaWRDaGVja2JveENvbHVtbkRlZicpO1xuICAgIH1cbiAgfVxuXG4gIGdldERpc3BsYXllZENvbHVtbkZpZWxkcyhjb2x1bW5zOiBNdHhHcmlkQ29sdW1uW10pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgZmllbGRzID0gY29sdW1uc1xuICAgICAgLmZpbHRlcihpdGVtID0+ICh0aGlzLmNvbHVtbkhpZGVhYmxlQ2hlY2tlZCA9PT0gJ3Nob3cnID8gaXRlbS5zaG93IDogIWl0ZW0uaGlkZSkpXG4gICAgICAubWFwKGl0ZW0gPT4gaXRlbS5maWVsZCk7XG4gICAgcmV0dXJuIGZpZWxkcztcbiAgfVxuXG4gIC8qKiBDdXN0b21pemUgZXhwYW5zaW9uIGV2ZW50ICovXG4gIHRvZ2dsZUV4cGFuc2lvbihpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmV4cGFuZGFibGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGBleHBhbmRhYmxlYCBzaG91bGQgYmUgc2V0IHRydWUuJyk7XG4gICAgfVxuICAgIHRoaXMuZXhwYW5zaW9uUm93U3RhdGVzW2luZGV4XS5leHBhbmRlZCA9ICF0aGlzLmV4cGFuc2lvblJvd1N0YXRlc1tpbmRleF0uZXhwYW5kZWQ7XG4gICAgcmV0dXJuIHRoaXMuZXhwYW5zaW9uUm93U3RhdGVzW2luZGV4XS5leHBhbmRlZDtcbiAgfVxuXG4gIC8qKiBTY3JvbGwgdG8gdG9wIHdoZW4gdHVybiB0byB0aGUgbmV4dCBwYWdlLiAqL1xuICBfb25QYWdlKGU6IFBhZ2VFdmVudCkge1xuICAgIGlmICh0aGlzLnBhZ2VPbkZyb250KSB7XG4gICAgICB0aGlzLnNjcm9sbFRvcCgwKTtcbiAgICB9XG4gICAgdGhpcy5wYWdlLmVtaXQoZSk7XG4gIH1cblxuICBzY3JvbGxUb3AodmFsdWU/OiBudW1iZXIpOiBudW1iZXIgfCB2b2lkIHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMudGFibGVDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wO1xuICAgIH1cbiAgICBpZiAodGhpcy50YWJsZUNvbnRhaW5lciAmJiAhdGhpcy5sb2FkaW5nKSB7XG4gICAgICB0aGlzLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgc2Nyb2xsTGVmdCh2YWx1ZT86IG51bWJlcik6IG51bWJlciB8IHZvaWQge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy50YWJsZUNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0O1xuICAgIH1cbiAgICBpZiAodGhpcy50YWJsZUNvbnRhaW5lciAmJiAhdGhpcy5sb2FkaW5nKSB7XG4gICAgICB0aGlzLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHZhbHVlO1xuICAgIH1cbiAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbXR4LWdyaWQtc2VsZWN0YWJsZS1jZWxsXScsXG59KVxuZXhwb3J0IGNsYXNzIE10eEdyaWRDZWxsU2VsZWN0aW9uRGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSBfc2VsZWN0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcm93RGF0YSE6IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgY3RybEtleVByZXNzZWQgPSBmYWxzZTtcbiAgc2hpZnRLZXlQcmVzc2VkID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zZWxlY3RlZCcpXG4gIGdldCBzZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgbXR4U2VsZWN0YWJsZVJvd0RhdGEodmFsdWU6IGFueSkge1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5fcm93RGF0YSkge1xuICAgICAgdGhpcy5fcm93RGF0YSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIEBPdXRwdXQoKSBjZWxsU2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNdHhHcmlkQ2VsbFNlbGVjdGlvbkRpcmVjdGl2ZT4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9ncmlkOiBNdHhHcmlkQ29tcG9uZW50KSB7fVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgb25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuY3RybEtleVByZXNzZWQgPSBldmVudC5jdHJsS2V5O1xuICAgIHRoaXMuc2hpZnRLZXlQcmVzc2VkID0gZXZlbnQuc2hpZnRLZXk7XG5cbiAgICBpZiAodGhpcy5fZ3JpZC5jZWxsU2VsZWN0YWJsZSkge1xuICAgICAgdGhpcy5zZWxlY3QoKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3QoKTogdm9pZCB7XG4gICAgdGhpcy5fc2VsZWN0ZWQgPSB0cnVlO1xuICAgIHRoaXMuY2VsbFNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMpO1xuICB9XG5cbiAgZGVzZWxlY3QoKTogdm9pZCB7XG4gICAgdGhpcy5fc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmNlbGxTZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzKTtcbiAgfVxuXG4gIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zZWxlY3RlZCA9ICF0aGlzLl9zZWxlY3RlZDtcbiAgICB0aGlzLmNlbGxTZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzKTtcbiAgfVxufVxuIiwiPCEtLSBQcm9ncmVzcyBiYXItLT5cclxuPGRpdiBjbGFzcz1cIm10eC1ncmlkLXByb2dyZXNzXCIgKm5nSWY9XCJsb2FkaW5nXCI+XHJcbiAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSBUb29sYmFyIC0tPlxyXG48ZGl2IGNsYXNzPVwibXR4LWdyaWQtdG9vbGJhclwiICpuZ0lmPVwic2hvd1Rvb2xiYXJcIj5cclxuICA8ZGl2IGNsYXNzPVwibXR4LWdyaWQtdG9vbGJhci1jb250ZW50XCI+XHJcbiAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwidG9vbGJhclRlbXBsYXRlXCIgW25nSWZFbHNlXT1cImRlZmF1bHRUb29sYmFyVGVtcGxhdGVcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRvb2xiYXJUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VG9vbGJhclRlbXBsYXRlPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXR4LWdyaWQtdG9vbGJhci10aXRsZVwiICpuZ0lmPVwidG9vbGJhclRpdGxlXCI+e3t0b29sYmFyVGl0bGV9fTwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibXR4LWdyaWQtdG9vbGJhci1hY3Rpb25zXCI+XHJcbiAgICA8bXR4LWdyaWQtY29sdW1uLW1lbnUgKm5nSWY9XCJzaG93Q29sdW1uTWVudUJ1dHRvblwiICNjb2x1bW5NZW51XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1dHRvblRleHRdPVwiY29sdW1uTWVudUJ1dHRvblRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25UeXBlXT1cImNvbHVtbk1lbnVCdXR0b25UeXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYnV0dG9uQ29sb3JdPVwiY29sdW1uTWVudUJ1dHRvbkNvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYnV0dG9uQ2xhc3NdPVwiY29sdW1uTWVudUJ1dHRvbkNsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYnV0dG9uSWNvbl09XCJjb2x1bW5NZW51QnV0dG9uSWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGFibGVdPVwiY29sdW1uSGlkZWFibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RhYmxlQ2hlY2tlZF09XCJjb2x1bW5IaWRlYWJsZUNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzb3J0YWJsZV09XCJjb2x1bW5Tb3J0YWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3Bpbm5hYmxlXT1cImNvbHVtblBpbm5hYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0hlYWRlcl09XCJzaG93Q29sdW1uTWVudUhlYWRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2hlYWRlclRleHRdPVwiY29sdW1uTWVudUhlYWRlclRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWFkZXJUZW1wbGF0ZV09XCJjb2x1bW5NZW51SGVhZGVyVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Rm9vdGVyXT1cInNob3dDb2x1bW5NZW51Rm9vdGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9vdGVyVGV4dF09XCJjb2x1bW5NZW51Rm9vdGVyVGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvb3RlclRlbXBsYXRlXT1cImNvbHVtbk1lbnVGb290ZXJUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3Bpbk9wdGlvbnNdPVwiY29sdW1uUGluT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbHVtbkNoYW5nZSk9XCJfb25Db2x1bW5DaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgPC9tdHgtZ3JpZC1jb2x1bW4tbWVudT5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwibXR4LWdyaWQtbWFpbiBtdHgtZ3JpZC1sYXlvdXRcIj5cclxuICA8IS0tIFRhYmxlIGNvbnRlbnQgLS0+XHJcbiAgPGRpdiBjbGFzcz1cIm10eC1ncmlkLWNvbnRlbnQgbXR4LWdyaWQtbGF5b3V0XCI+XHJcbiAgICA8ZGl2ICN0YWJsZUNvbnRhaW5lciBjbGFzcz1cIm1hdC10YWJsZS1jb250YWluZXJcIlxyXG4gICAgICAgICBbbmdDbGFzc109XCJ7J21hdC10YWJsZS13aXRoLWRhdGEnOiAhX2hhc05vUmVzdWx0fVwiPlxyXG4gICAgICA8dGFibGUgbWF0LXRhYmxlICpuZ0lmPVwiIWNvbHVtblJlc2l6YWJsZVwiXHJcbiAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J21hdC10YWJsZS1ob3Zlcic6IHJvd0hvdmVyLCAnbWF0LXRhYmxlLXN0cmlwZWQnOiByb3dTdHJpcGVkLCAnbWF0LXRhYmxlLWV4cGFuZGFibGUnOiBleHBhbmRhYmxlfVwiXHJcbiAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCIgW211bHRpVGVtcGxhdGVEYXRhUm93c109XCJleHBhbmRhYmxlXCJcclxuICAgICAgICAgICAgIG1hdFNvcnRcclxuICAgICAgICAgICAgIFttYXRTb3J0QWN0aXZlXT1cInNvcnRBY3RpdmVcIlxyXG4gICAgICAgICAgICAgW21hdFNvcnREaXJlY3Rpb25dPVwic29ydERpcmVjdGlvblwiXHJcbiAgICAgICAgICAgICBbbWF0U29ydERpc2FibGVDbGVhcl09XCJzb3J0RGlzYWJsZUNsZWFyXCJcclxuICAgICAgICAgICAgIFttYXRTb3J0RGlzYWJsZWRdPVwic29ydERpc2FibGVkXCJcclxuICAgICAgICAgICAgIFttYXRTb3J0U3RhcnRdPVwic29ydFN0YXJ0XCJcclxuICAgICAgICAgICAgIChtYXRTb3J0Q2hhbmdlKT1cIl9vblNvcnRDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICBbdHJhY2tCeV09XCJ0cmFja0J5XCI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3dTZWxlY3RhYmxlICYmICFoaWRlUm93U2VsZWN0aW9uQ2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbWF0Q29sdW1uRGVmPVwiTXR4R3JpZENoZWNrYm94Q29sdW1uRGVmXCI+XHJcbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGNsYXNzPVwibXR4LWdyaWQtY2hlY2tib3gtY2VsbFwiPlxyXG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94ICpuZ0lmPVwibXVsdGlTZWxlY3RhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJyb3dTZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiBfaXNBbGxTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJyb3dTZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiAhX2lzQWxsU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBfdG9nZ2xlTWFzdGVyQ2hlY2tib3goKSA6IG51bGxcIj5cclxuICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvdzsgbGV0IGluZGV4ID0gaW5kZXg7IGxldCBkYXRhSW5kZXggPSBkYXRhSW5kZXg7XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cIm10eC1ncmlkLWNoZWNrYm94LWNlbGxcIj5cclxuICAgICAgICAgICAgPG1hdC1jaGVja2JveCAqbmdJZj1cIiEocm93U2VsZWN0aW9uRm9ybWF0dGVyLmhpZGVDaGVja2JveCAmJiByb3dTZWxlY3Rpb25Gb3JtYXR0ZXIuaGlkZUNoZWNrYm94KHJvdywgX2dldEluZGV4KGluZGV4LCBkYXRhSW5kZXgpKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyb3dTZWxlY3Rpb25Gb3JtYXR0ZXIuZGlzYWJsZWQgJiYgcm93U2VsZWN0aW9uRm9ybWF0dGVyLmRpc2FibGVkKHJvdywgX2dldEluZGV4KGluZGV4LCBkYXRhSW5kZXgpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwicm93U2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBfdG9nZ2xlTm9ybWFsQ2hlY2tib3gocm93KSA6IG51bGxcIj5cclxuICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZiBjbGFzcz1cIm10eC1ncmlkLWNoZWNrYm94LWNlbGxcIj48L3RkPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1ucztcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RpY2t5XT1cImNvbC5waW5uZWQ9PT0nbGVmdCdcIiBbc3RpY2t5RW5kXT1cImNvbC5waW5uZWQ9PT0ncmlnaHQnXCI+XHJcbiAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWZcclxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJjb2wgfCBjb2xDbGFzc1wiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J21hdC10YWJsZS1zdGlja3ktbGVmdCc6IGNvbC5waW5uZWQgPT09ICdsZWZ0JywgJ21hdC10YWJsZS1zdGlja3ktcmlnaHQnOiBjb2wucGlubmVkID09PSAncmlnaHQnfVwiXHJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J3dpZHRoJzogY29sLndpZHRoLCAnbWluLXdpZHRoJzogY29sLndpZHRoLCAnbGVmdCc6IGNvbC5sZWZ0LCAncmlnaHQnOiBjb2wucmlnaHR9XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hdC1oZWFkZXItY2VsbC1pbm5lclwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImhlYWRlclRlbXBsYXRlIHwgaXNUZW1wbGF0ZVJlZlwiIFtuZ0lmRWxzZV09XCJoZWFkZXJUcGxcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIiRhbnkoaGVhZGVyVGVtcGxhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29sLCBjb2xEZWY6IGNvbCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNoZWFkZXJUcGw+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCIkYW55KGhlYWRlclRlbXBsYXRlKT8uW2NvbC5maWVsZF0gfCBpc1RlbXBsYXRlUmVmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0lmRWxzZV09XCJkZWZhdWx0SGVhZGVyVHBsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIiRhbnkoaGVhZGVyVGVtcGxhdGUpW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbCwgY29sRGVmOiBjb2wgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SGVhZGVyVHBsPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IFttYXQtc29ydC1oZWFkZXJdPVwiY29sLnNvcnRQcm9wPy5pZCB8fCBjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY29sLnNvcnRhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZUNsZWFyXT1cImNvbC5zb3J0UHJvcD8uZGlzYWJsZUNsZWFyID8/IHNvcnREaXNhYmxlQ2xlYXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFthcnJvd1Bvc2l0aW9uXT1cImNvbC5zb3J0UHJvcD8uYXJyb3dQb3NpdGlvbiFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtzdGFydF09XCJjb2wuc29ydFByb3A/LnN0YXJ0IVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXR4LWdyaWQtZXhwYW5zaW9uLXBsYWNlaG9sZGVyXCIgKm5nSWY9XCJjb2wuc2hvd0V4cGFuZFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2NvbC5oZWFkZXIgfCB0b09ic2VydmFibGUgfCBhc3luY319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJtdHgtZ3JpZC1pY29uIG1hdC1zb3J0LWhlYWRlci1pY29uXCIgKm5nSWY9XCJjb2wuc29ydGFibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRweFwiIGhlaWdodD1cIjI0cHhcIiBmaWxsPVwiY3VycmVudENvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMsMTNIMTVWMTFIM00zLDZWOEgyMVY2TTMsMThIOVYxNkgzVjE4WlwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkZXJFeHRyYVRwbEJhc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBoZWFkZXJFeHRyYVRlbXBsYXRlLCBjb2xEZWY6IGNvbCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RoPlxyXG5cclxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvdzsgbGV0IGluZGV4ID0gaW5kZXg7IGxldCBkYXRhSW5kZXggPSBkYXRhSW5kZXg7XCJcclxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJjb2wgfCBjb2xDbGFzczogcm93OiByb3dDaGFuZ2VSZWNvcmQ6IHJvd0NoYW5nZVJlY29yZD8uY3VycmVudFZhbHVlXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbWF0LXRhYmxlLXN0aWNreS1sZWZ0JzogY29sLnBpbm5lZCA9PT0gJ2xlZnQnLCAnbWF0LXRhYmxlLXN0aWNreS1yaWdodCc6IGNvbC5waW5uZWQgPT09ICdyaWdodCd9XCJcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnd2lkdGgnOiBjb2wud2lkdGgsICdtaW4td2lkdGgnOiBjb2wud2lkdGgsICdsZWZ0JzogY29sLmxlZnQsICdyaWdodCc6IGNvbC5yaWdodH1cIlxyXG4gICAgICAgICAgICAgICAgbXR4LWdyaWQtc2VsZWN0YWJsZS1jZWxsIChjZWxsU2VsZWN0aW9uQ2hhbmdlKT1cIl9zZWxlY3RDZWxsKCRldmVudCwgcm93LCBjb2wpXCI+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImNlbGxUZW1wbGF0ZSB8IGlzVGVtcGxhdGVSZWZcIiBbbmdJZkVsc2VdPVwiY2VsbFRwbFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIiRhbnkoY2VsbFRlbXBsYXRlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIHJvd0RhdGE6IHJvdywgaW5kZXg6IF9nZXRJbmRleChpbmRleCwgZGF0YUluZGV4KSwgY29sRGVmOiBjb2wgfVwiPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY2VsbFRwbD5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCIkYW55KGNlbGxUZW1wbGF0ZSk/Lltjb2wuZmllbGRdIHwgaXNUZW1wbGF0ZVJlZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nSWZFbHNlXT1cImNvbERlZkNlbGxUcGxcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIiRhbnkoY2VsbFRlbXBsYXRlKVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LCByb3dEYXRhOiByb3csIGluZGV4OiBfZ2V0SW5kZXgoaW5kZXgsIGRhdGFJbmRleCksIGNvbERlZjogY29sIH1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NvbERlZkNlbGxUcGw+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiY29sLmNlbGxUZW1wbGF0ZVwiIFtuZ0lmRWxzZV09XCJkZWZhdWx0Q2VsbFRwbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29sLmNlbGxUZW1wbGF0ZSFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LCByb3dEYXRhOiByb3csIGluZGV4OiBfZ2V0SW5kZXgoaW5kZXgsIGRhdGFJbmRleCksIGNvbERlZjogY29sIH1cIj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDZWxsVHBsPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm10eC1ncmlkLXJvdy1leHBhbmQtYnV0dG9uXCIgKm5nSWY9XCJjb2wuc2hvd0V4cGFuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvbiBtdHgtZ3JpZC1leHBhbnNpb24tdG9nZ2xlIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG9wZW5lZCldPVwiZXhwYW5zaW9uUm93U3RhdGVzW2RhdGFJbmRleF0uZXhwYW5kZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAodG9nZ2xlQ2hhbmdlKT1cIl9vbkV4cGFuc2lvbkNoYW5nZSgkZXZlbnQsIHJvdywgY29sLCBkYXRhSW5kZXgpO1wiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwibXR4LWdyaWQtaWNvbiBtdHgtZ3JpZC1yb3ctZXhwYW5kLWljb25cIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjI0cHhcIiBoZWlnaHQ9XCIyNHB4XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGZvY3VzYWJsZT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMCA2TDguNTkgNy40MSAxMy4xNyAxMmwtNC41OCA0LjU5TDEwIDE4bDYtNnpcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgPG10eC1ncmlkLWNlbGwgW3Jvd0RhdGFdPVwicm93XCIgW2NvbERlZl09XCJjb2xcIiBbcGxhY2Vob2xkZXJdPVwiZW1wdHlWYWx1ZVBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyb3dEYXRhQ2hhbmdlKT1cIl9vblJvd0RhdGFDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgPC9tdHgtZ3JpZC1jZWxsPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J21hdC10YWJsZS1zdGlja3ktbGVmdCc6IGNvbC5waW5uZWQgPT09ICdsZWZ0JywgJ21hdC10YWJsZS1zdGlja3ktcmlnaHQnOiBjb2wucGlubmVkID09PSAncmlnaHQnfVwiXHJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J3dpZHRoJzogY29sLndpZHRoLCAnbWluLXdpZHRoJzogY29sLndpZHRoLCAnbGVmdCc6IGNvbC5sZWZ0LCAncmlnaHQnOiBjb2wucmlnaHR9XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdHgtZ3JpZC1leHBhbnNpb24tcGxhY2Vob2xkZXJcIiAqbmdJZj1cImNvbC5zaG93RXhwYW5kXCI+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwic3VtbWFyeVRlbXBsYXRlIHwgaXNUZW1wbGF0ZVJlZlwiIFtuZ0lmRWxzZV09XCJzdW1tYXJ5VHBsXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiJGFueShzdW1tYXJ5VGVtcGxhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbCwgY29sRGVmOiBjb2wsIGRhdGE6IGRhdGEgfVwiPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc3VtbWFyeVRwbD5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCIkYW55KHN1bW1hcnlUZW1wbGF0ZSk/Lltjb2wuZmllbGRdIHwgaXNUZW1wbGF0ZVJlZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nSWZFbHNlXT1cImRlZmF1bHRTdW1tYXJ5VHBsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KHN1bW1hcnlUZW1wbGF0ZSlbY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IF9nZXRDb2xEYXRhKGRhdGEsIGNvbCksIGNvbERhdGE6IF9nZXRDb2xEYXRhKGRhdGEsIGNvbCksIGNvbERlZjogY29sIH1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRTdW1tYXJ5VHBsPlxyXG4gICAgICAgICAgICAgICAgPG10eC1ncmlkLWNlbGwgW3N1bW1hcnldPVwidHJ1ZVwiIFtkYXRhXT1cImRhdGFcIiBbY29sRGVmXT1cImNvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZW1wdHlWYWx1ZVBsYWNlaG9sZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8L210eC1ncmlkLWNlbGw+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwidXNlQ29udGVudEhlYWRlclJvd1RlbXBsYXRlXCIgW25nSWZFbHNlXT1cImRlZmF1bHRIZWFkZXJSb3dUcGxcIj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEhlYWRlclJvd1RwbD5cclxuICAgICAgICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uczsgc3RpY2t5OiB0cnVlXCI+PC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwidXNlQ29udGVudFJvd1RlbXBsYXRlXCIgW25nSWZFbHNlXT1cImRlZmF1bHRSb3dUcGxcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFJvd1RwbD5cclxuICAgICAgICAgIDx0ciBtYXQtcm93XHJcbiAgICAgICAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGxldCBpbmRleCA9IGluZGV4OyBsZXQgZGF0YUluZGV4ID0gZGF0YUluZGV4OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zO1wiXHJcbiAgICAgICAgICAgICAgW2NsYXNzXT1cInJvdyB8IHJvd0NsYXNzOiBpbmRleDogZGF0YUluZGV4OiByb3dDbGFzc0Zvcm1hdHRlclwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydzZWxlY3RlZCc6IHJvd1NlbGVjdGlvbi5pc1NlbGVjdGVkKHJvdyl9XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiX3NlbGVjdFJvdygkZXZlbnQsIHJvdywgX2dldEluZGV4KGluZGV4LCBkYXRhSW5kZXgpKVwiPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiX3doZXRoZXJTaG93U3VtbWFyeVwiPlxyXG4gICAgICAgICAgPHRyIG1hdC1mb290ZXItcm93ICptYXRGb290ZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zOyBzdGlja3k6IHRydWVcIj48L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cInVzZUNvbnRlbnRGb290ZXJSb3dUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJleHBhbmRhYmxlXCI+XHJcbiAgICAgICAgICA8IS0tIEV4cGFuZGVkIENvbnRlbnQgQ29sdW1uIC0gVGhlIGV4cGFuZGFibGUgcm93IGlzIG1hZGUgdXAgb2YgdGhpcyBvbmUgY29sdW1uIHRoYXQgc3BhbnMgYWNyb3NzIGFsbCBjb2x1bW5zIC0tPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJNdHhHcmlkRXhwYW5zaW9uQ29sdW1uRGVmXCI+XHJcbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3c7IGxldCBkYXRhSW5kZXggPSBkYXRhSW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgW2F0dHIuY29sc3Bhbl09XCJkaXNwbGF5ZWRDb2x1bW5zLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdHgtZ3JpZC1leHBhbnNpb24tZGV0YWlsXCJcclxuICAgICAgICAgICAgICAgICAgIFtAZXhwYW5zaW9uXT1cImV4cGFuc2lvblJvd1N0YXRlc1tkYXRhSW5kZXhdLmV4cGFuZGVkID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZXhwYW5zaW9uVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LCByb3dEYXRhOiByb3csIGluZGV4OiBkYXRhSW5kZXgsIGV4cGFuZGVkOiBleHBhbnNpb25Sb3dTdGF0ZXNbZGF0YUluZGV4XS5leHBhbmRlZCB9XCI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPHRyIG1hdC1yb3dcclxuICAgICAgICAgICAgICAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogWydNdHhHcmlkRXhwYW5zaW9uQ29sdW1uRGVmJ107IGxldCBkYXRhSW5kZXggPSBkYXRhSW5kZXhcIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIlsnbXR4LWdyaWQtZXhwYW5zaW9uJywgZXhwYW5zaW9uUm93U3RhdGVzW2RhdGFJbmRleF0uZXhwYW5kZWQgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCddXCI+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3RhYmxlPlxyXG5cclxuICAgICAgPCEtLSBUT0RPOiBVc2UgZmxleGJveC1iYXNlZCBtYXQtdGFibGUgLS0+XHJcbiAgICAgIDx0YWJsZSBtYXQtdGFibGUgKm5nSWY9XCJjb2x1bW5SZXNpemFibGVcIlxyXG4gICAgICAgICAgICAgY29sdW1uUmVzaXplXHJcbiAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J21hdC10YWJsZS1ob3Zlcic6IHJvd0hvdmVyLCAnbWF0LXRhYmxlLXN0cmlwZWQnOiByb3dTdHJpcGVkLCAnbWF0LXRhYmxlLWV4cGFuZGFibGUnOiBleHBhbmRhYmxlfVwiXHJcbiAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCIgW211bHRpVGVtcGxhdGVEYXRhUm93c109XCJleHBhbmRhYmxlXCJcclxuICAgICAgICAgICAgIG1hdFNvcnRcclxuICAgICAgICAgICAgIFttYXRTb3J0QWN0aXZlXT1cInNvcnRBY3RpdmVcIlxyXG4gICAgICAgICAgICAgW21hdFNvcnREaXJlY3Rpb25dPVwic29ydERpcmVjdGlvblwiXHJcbiAgICAgICAgICAgICBbbWF0U29ydERpc2FibGVDbGVhcl09XCJzb3J0RGlzYWJsZUNsZWFyXCJcclxuICAgICAgICAgICAgIFttYXRTb3J0RGlzYWJsZWRdPVwic29ydERpc2FibGVkXCJcclxuICAgICAgICAgICAgIFttYXRTb3J0U3RhcnRdPVwic29ydFN0YXJ0XCJcclxuICAgICAgICAgICAgIChtYXRTb3J0Q2hhbmdlKT1cIl9vblNvcnRDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICBbdHJhY2tCeV09XCJ0cmFja0J5XCI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyb3dTZWxlY3RhYmxlICYmICFoaWRlUm93U2VsZWN0aW9uQ2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgbWF0Q29sdW1uRGVmPVwiTXR4R3JpZENoZWNrYm94Q29sdW1uRGVmXCI+XHJcbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGNsYXNzPVwibXR4LWdyaWQtY2hlY2tib3gtY2VsbFwiPlxyXG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94ICpuZ0lmPVwibXVsdGlTZWxlY3RhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJyb3dTZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiBfaXNBbGxTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJyb3dTZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiAhX2lzQWxsU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBfdG9nZ2xlTWFzdGVyQ2hlY2tib3goKSA6IG51bGxcIj5cclxuICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvdzsgbGV0IGluZGV4ID0gaW5kZXg7IGxldCBkYXRhSW5kZXggPSBkYXRhSW5kZXg7XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cIm10eC1ncmlkLWNoZWNrYm94LWNlbGxcIj5cclxuICAgICAgICAgICAgPG1hdC1jaGVja2JveCAqbmdJZj1cIiEocm93U2VsZWN0aW9uRm9ybWF0dGVyLmhpZGVDaGVja2JveCAmJiByb3dTZWxlY3Rpb25Gb3JtYXR0ZXIuaGlkZUNoZWNrYm94KHJvdywgX2dldEluZGV4KGluZGV4LCBkYXRhSW5kZXgpKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyb3dTZWxlY3Rpb25Gb3JtYXR0ZXIuZGlzYWJsZWQgJiYgcm93U2VsZWN0aW9uRm9ybWF0dGVyLmRpc2FibGVkKHJvdywgX2dldEluZGV4KGluZGV4LCBkYXRhSW5kZXgpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwicm93U2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBfdG9nZ2xlTm9ybWFsQ2hlY2tib3gocm93KSA6IG51bGxcIj5cclxuICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZiBjbGFzcz1cIm10eC1ncmlkLWNoZWNrYm94LWNlbGxcIj48L3RkPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1ucztcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RpY2t5XT1cImNvbC5waW5uZWQ9PT0nbGVmdCdcIiBbc3RpY2t5RW5kXT1cImNvbC5waW5uZWQ9PT0ncmlnaHQnXCI+XHJcbiAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWZcclxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJjb2wgfCBjb2xDbGFzc1wiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J21hdC10YWJsZS1zdGlja3ktbGVmdCc6IGNvbC5waW5uZWQgPT09ICdsZWZ0JywgJ21hdC10YWJsZS1zdGlja3ktcmlnaHQnOiBjb2wucGlubmVkID09PSAncmlnaHQnfVwiXHJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J3dpZHRoJzogY29sLndpZHRoLCAnbGVmdCc6IGNvbC5sZWZ0LCAncmlnaHQnOiBjb2wucmlnaHR9XCJcclxuICAgICAgICAgICAgICAgIFtyZXNpemFibGVdPVwiY29sLnJlc2l6YWJsZVwiXHJcbiAgICAgICAgICAgICAgICBbbWF0UmVzaXphYmxlTWluV2lkdGhQeF09XCJjb2wubWluV2lkdGhcIiBbbWF0UmVzaXphYmxlTWF4V2lkdGhQeF09XCJjb2wubWF4V2lkdGhcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWF0LWhlYWRlci1jZWxsLWlubmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiaGVhZGVyVGVtcGxhdGUgfCBpc1RlbXBsYXRlUmVmXCIgW25nSWZFbHNlXT1cImhlYWRlclRwbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiJGFueShoZWFkZXJUZW1wbGF0ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb2wsIGNvbERlZjogY29sIH1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2hlYWRlclRwbD5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIiRhbnkoaGVhZGVyVGVtcGxhdGUpPy5bY29sLmZpZWxkXSB8IGlzVGVtcGxhdGVSZWZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nSWZFbHNlXT1cImRlZmF1bHRIZWFkZXJUcGxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiJGFueShoZWFkZXJUZW1wbGF0ZSlbY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29sLCBjb2xEZWY6IGNvbCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRIZWFkZXJUcGw+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgW21hdC1zb3J0LWhlYWRlcl09XCJjb2wuc29ydFByb3A/LmlkIHx8IGNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjb2wuc29ydGFibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlQ2xlYXJdPVwiY29sLnNvcnRQcm9wPy5kaXNhYmxlQ2xlYXIgPz8gc29ydERpc2FibGVDbGVhclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2Fycm93UG9zaXRpb25dPVwiY29sLnNvcnRQcm9wPy5hcnJvd1Bvc2l0aW9uIVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3N0YXJ0XT1cImNvbC5zb3J0UHJvcD8uc3RhcnQhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdHgtZ3JpZC1leHBhbnNpb24tcGxhY2Vob2xkZXJcIiAqbmdJZj1cImNvbC5zaG93RXhwYW5kXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7Y29sLmhlYWRlciB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cIm10eC1ncmlkLWljb24gbWF0LXNvcnQtaGVhZGVyLWljb25cIiAqbmdJZj1cImNvbC5zb3J0YWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNHB4XCIgaGVpZ2h0PVwiMjRweFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMywxM0gxNVYxMUgzTTMsNlY4SDIxVjZNMywxOEg5VjE2SDNWMThaXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRlckV4dHJhVHBsQmFzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGhlYWRlckV4dHJhVGVtcGxhdGUsIGNvbERlZjogY29sIH1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93OyBsZXQgaW5kZXggPSBpbmRleDsgbGV0IGRhdGFJbmRleCA9IGRhdGFJbmRleDtcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbCB8IGNvbENsYXNzOiByb3c6IHJvd0NoYW5nZVJlY29yZCA6cm93Q2hhbmdlUmVjb3JkPy5jdXJyZW50VmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydtYXQtdGFibGUtc3RpY2t5LWxlZnQnOiBjb2wucGlubmVkID09PSAnbGVmdCcsICdtYXQtdGFibGUtc3RpY2t5LXJpZ2h0JzogY29sLnBpbm5lZCA9PT0gJ3JpZ2h0J31cIlxyXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyd3aWR0aCc6IGNvbC53aWR0aCwgJ2xlZnQnOiBjb2wubGVmdCwgJ3JpZ2h0JzogY29sLnJpZ2h0fVwiXHJcbiAgICAgICAgICAgICAgICBtdHgtZ3JpZC1zZWxlY3RhYmxlLWNlbGwgKGNlbGxTZWxlY3Rpb25DaGFuZ2UpPVwiX3NlbGVjdENlbGwoJGV2ZW50LCByb3csIGNvbClcIj5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiY2VsbFRlbXBsYXRlIHwgaXNUZW1wbGF0ZVJlZlwiIFtuZ0lmRWxzZV09XCJjZWxsVHBsXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiJGFueShjZWxsVGVtcGxhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvdywgcm93RGF0YTogcm93LCBpbmRleDogX2dldEluZGV4KGluZGV4LCBkYXRhSW5kZXgpLCBjb2xEZWY6IGNvbCB9XCI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjZWxsVHBsPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIiRhbnkoY2VsbFRlbXBsYXRlKT8uW2NvbC5maWVsZF0gfCBpc1RlbXBsYXRlUmVmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdJZkVsc2VdPVwiY29sRGVmQ2VsbFRwbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiJGFueShjZWxsVGVtcGxhdGUpW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIHJvd0RhdGE6IHJvdywgaW5kZXg6IF9nZXRJbmRleChpbmRleCwgZGF0YUluZGV4KSwgY29sRGVmOiBjb2wgfVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29sRGVmQ2VsbFRwbD5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJjb2wuY2VsbFRlbXBsYXRlXCIgW25nSWZFbHNlXT1cImRlZmF1bHRDZWxsVHBsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2wuY2VsbFRlbXBsYXRlIVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIHJvd0RhdGE6IHJvdywgaW5kZXg6IF9nZXRJbmRleChpbmRleCwgZGF0YUluZGV4KSwgY29sRGVmOiBjb2wgfVwiPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdENlbGxUcGw+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibXR4LWdyaWQtcm93LWV4cGFuZC1idXR0b25cIiAqbmdJZj1cImNvbC5zaG93RXhwYW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uIG10eC1ncmlkLWV4cGFuc2lvbi10b2dnbGUgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsob3BlbmVkKV09XCJleHBhbnNpb25Sb3dTdGF0ZXNbZGF0YUluZGV4XS5leHBhbmRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICh0b2dnbGVDaGFuZ2UpPVwiX29uRXhwYW5zaW9uQ2hhbmdlKCRldmVudCwgcm93LCBjb2wsIGRhdGFJbmRleCk7XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJtdHgtZ3JpZC1pY29uIG10eC1ncmlkLXJvdy1leHBhbmQtaWNvblwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjRweFwiIGhlaWdodD1cIjI0cHhcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgZm9jdXNhYmxlPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwIDZMOC41OSA3LjQxIDEzLjE3IDEybC00LjU4IDQuNTlMMTAgMThsNi02elwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bXR4LWdyaWQtY2VsbCBbcm93RGF0YV09XCJyb3dcIiBbY29sRGVmXT1cImNvbFwiIFtwbGFjZWhvbGRlcl09XCJlbXB0eVZhbHVlUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJvd0RhdGFDaGFuZ2UpPVwiX29uUm93RGF0YUNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICA8L210eC1ncmlkLWNlbGw+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWZcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbWF0LXRhYmxlLXN0aWNreS1sZWZ0JzogY29sLnBpbm5lZCA9PT0gJ2xlZnQnLCAnbWF0LXRhYmxlLXN0aWNreS1yaWdodCc6IGNvbC5waW5uZWQgPT09ICdyaWdodCd9XCJcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnd2lkdGgnOiBjb2wud2lkdGgsICdsZWZ0JzogY29sLmxlZnQsICdyaWdodCc6IGNvbC5yaWdodH1cIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10eC1ncmlkLWV4cGFuc2lvbi1wbGFjZWhvbGRlclwiICpuZ0lmPVwiY29sLnNob3dFeHBhbmRcIj48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJzdW1tYXJ5VGVtcGxhdGUgfCBpc1RlbXBsYXRlUmVmXCIgW25nSWZFbHNlXT1cInN1bW1hcnlUcGxcIj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KHN1bW1hcnlUZW1wbGF0ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29sLCBjb2xEZWY6IGNvbCwgZGF0YTogZGF0YSB9XCI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzdW1tYXJ5VHBsPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIiRhbnkoc3VtbWFyeVRlbXBsYXRlKT8uW2NvbC5maWVsZF0gfCBpc1RlbXBsYXRlUmVmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdJZkVsc2VdPVwiZGVmYXVsdFN1bW1hcnlUcGxcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIiRhbnkoc3VtbWFyeVRlbXBsYXRlKVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogX2dldENvbERhdGEoZGF0YSwgY29sKSwgY29sRGF0YTogX2dldENvbERhdGEoZGF0YSwgY29sKSwgY29sRGVmOiBjb2wgfVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFN1bW1hcnlUcGw+XHJcbiAgICAgICAgICAgICAgICA8bXR4LWdyaWQtY2VsbCBbc3VtbWFyeV09XCJ0cnVlXCIgW2RhdGFdPVwiZGF0YVwiIFtjb2xEZWZdPVwiY29sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJlbXB0eVZhbHVlUGxhY2Vob2xkZXJcIj5cclxuICAgICAgICAgICAgICAgIDwvbXR4LWdyaWQtY2VsbD5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJ1c2VDb250ZW50SGVhZGVyUm93VGVtcGxhdGVcIiBbbmdJZkVsc2VdPVwiZGVmYXVsdEhlYWRlclJvd1RwbFwiPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SGVhZGVyUm93VHBsPlxyXG4gICAgICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zOyBzdGlja3k6IHRydWVcIj48L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJ1c2VDb250ZW50Um93VGVtcGxhdGVcIiBbbmdJZkVsc2VdPVwiZGVmYXVsdFJvd1RwbFwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Um93VHBsPlxyXG4gICAgICAgICAgPHRyIG1hdC1yb3dcclxuICAgICAgICAgICAgICAqbWF0Um93RGVmPVwibGV0IHJvdzsgbGV0IGluZGV4ID0gaW5kZXg7IGxldCBkYXRhSW5kZXggPSBkYXRhSW5kZXg7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCJcclxuICAgICAgICAgICAgICBbY2xhc3NdPVwicm93IHwgcm93Q2xhc3M6IGluZGV4OiBkYXRhSW5kZXg6IHJvd0NsYXNzRm9ybWF0dGVyXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3NlbGVjdGVkJzogcm93U2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KX1cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJfc2VsZWN0Um93KCRldmVudCwgcm93LCBfZ2V0SW5kZXgoaW5kZXgsIGRhdGFJbmRleCkpXCI+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJfd2hldGhlclNob3dTdW1tYXJ5XCI+XHJcbiAgICAgICAgICA8dHIgbWF0LWZvb3Rlci1yb3cgKm1hdEZvb3RlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnM7IHN0aWNreTogdHJ1ZVwiPjwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwidXNlQ29udGVudEZvb3RlclJvd1RlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4cGFuZGFibGVcIj5cclxuICAgICAgICAgIDwhLS0gRXhwYW5kZWQgQ29udGVudCBDb2x1bW4gLSBUaGUgZXhwYW5kYWJsZSByb3cgaXMgbWFkZSB1cCBvZiB0aGlzIG9uZSBjb2x1bW4gdGhhdCBzcGFucyBhY3Jvc3MgYWxsIGNvbHVtbnMgLS0+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIk10eEdyaWRFeHBhbnNpb25Db2x1bW5EZWZcIj5cclxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvdzsgbGV0IGRhdGFJbmRleCA9IGRhdGFJbmRleFwiXHJcbiAgICAgICAgICAgICAgICBbYXR0ci5jb2xzcGFuXT1cImRpc3BsYXllZENvbHVtbnMubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10eC1ncmlkLWV4cGFuc2lvbi1kZXRhaWxcIlxyXG4gICAgICAgICAgICAgICAgICAgW0BleHBhbnNpb25dPVwiZXhwYW5zaW9uUm93U3RhdGVzW2RhdGFJbmRleF0uZXhwYW5kZWQgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCdcIj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJleHBhbnNpb25UZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIHJvd0RhdGE6IHJvdywgaW5kZXg6IGRhdGFJbmRleCwgZXhwYW5kZWQ6IGV4cGFuc2lvblJvd1N0YXRlc1tkYXRhSW5kZXhdLmV4cGFuZGVkIH1cIj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8dHIgbWF0LXJvd1xyXG4gICAgICAgICAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBbJ010eEdyaWRFeHBhbnNpb25Db2x1bW5EZWYnXTsgbGV0IGRhdGFJbmRleCA9IGRhdGFJbmRleFwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiWydtdHgtZ3JpZC1leHBhbnNpb24nLCBleHBhbnNpb25Sb3dTdGF0ZXNbZGF0YUluZGV4XS5leHBhbmRlZCA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJ11cIj5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvdGFibGU+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIE5vIHJlc3VsdCAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJtdHgtZ3JpZC1uby1yZXN1bHRcIiAqbmdJZj1cIl9oYXNOb1Jlc3VsdFwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwibm9SZXN1bHRUZW1wbGF0ZVwiIFtuZ0lmRWxzZV09XCJkZWZhdWx0Tm9SZXN1bHRUcGxcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9SZXN1bHRUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdE5vUmVzdWx0VHBsPnt7bm9SZXN1bHRUZXh0fX08L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gVG9vbCBzaWRlYmFyIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJtdHgtZ3JpZC1zaWRlYmFyXCIgKm5nSWY9XCJzaG93U2lkZWJhclwiPlxyXG4gICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cInNpZGViYXJUZW1wbGF0ZVwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwic2lkZWJhclRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cIm10eC1ncmlkLWZvb3RlclwiPlxyXG4gIDwhLS0gU3RhdHVzIEJhciAtLT5cclxuICA8ZGl2IGNsYXNzPVwibXR4LWdyaWQtc3RhdHVzYmFyXCIgKm5nSWY9XCJzaG93U3RhdHVzYmFyXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwic3RhdHVzYmFyVGVtcGxhdGVcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0YXR1c2JhclRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gUGFnaW5hdGlvbiAtLT5cclxuICA8ZGl2IGNsYXNzPVwibXR4LWdyaWQtcGFnaW5hdGlvblwiPlxyXG4gICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cInBhZ2luYXRpb25UZW1wbGF0ZVwiIFtuZ0lmRWxzZV09XCJkZWZhdWx0UGFnaW5hdGlvblRlbXBsYXRlXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJwYWdpbmF0aW9uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFBhZ2luYXRpb25UZW1wbGF0ZT5cclxuICAgICAgPG1hdC1wYWdpbmF0b3IgW2NsYXNzLm1hdC1wYWdpbmF0b3ItaGlkZGVuXT1cIiFzaG93UGFnaW5hdG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgW3Nob3dGaXJzdExhc3RCdXR0b25zXT1cInNob3dGaXJzdExhc3RCdXR0b25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2xlbmd0aF09XCJsZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbcGFnZUluZGV4XT1cInBhZ2VJbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2hpZGVQYWdlU2l6ZV09XCJoaWRlUGFnZVNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAocGFnZSk9XCJfb25QYWdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicGFnZURpc2FibGVkXCI+XHJcbiAgICAgIDwvbWF0LXBhZ2luYXRvcj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSBIZWFkZXIgdGVtcGxhdGUgZm9yIGV4dHJhIGNvbnRlbnQgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjaGVhZGVyRXh0cmFUcGxCYXNlIGxldC1oZWFkZXJFeHRyYVRlbXBsYXRlIGxldC1jb2w9XCJjb2xEZWZcIj5cclxuICA8bmctdGVtcGxhdGUgW25nSWZdPVwiaGVhZGVyRXh0cmFUZW1wbGF0ZSB8IGlzVGVtcGxhdGVSZWZcIiBbbmdJZkVsc2VdPVwiaGVhZGVyRXh0cmFUcGxcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkZXJFeHRyYVRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbCwgY29sRGVmOiBjb2wgfVwiPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDxuZy10ZW1wbGF0ZSAjaGVhZGVyRXh0cmFUcGw+XHJcbiAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiJGFueShoZWFkZXJFeHRyYVRlbXBsYXRlKT8uW2NvbC5maWVsZF0gfCBpc1RlbXBsYXRlUmVmXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkZXJFeHRyYVRlbXBsYXRlW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb2wsIGNvbERlZjogY29sIH1cIj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
629
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL2dyaWQvZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL2dyaWQvZ3JpZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxFQUlMLFFBQVEsRUFDUixNQUFNLEVBS04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsWUFBWSxFQUFhLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLE9BQU8sRUFBdUIsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsWUFBWSxFQUVaLGVBQWUsRUFDZixTQUFTLEVBQ1QsUUFBUSxFQUNSLGtCQUFrQixHQUNuQixNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztBQWVqQyx3RUFBd0U7QUFDeEUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQ3hELDBCQUEwQixDQUMzQixDQUFDO0FBcUJGLE1BQU0sT0FBTyxnQkFBZ0I7SUFnUDNCLFlBQ1UsUUFBd0IsRUFDeEIsa0JBQXFDLEVBR3JDLGVBQXVDO1FBSnZDLGFBQVEsR0FBUixRQUFRLENBQWdCO1FBQ3hCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FB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LCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5wdXQsXG4gIEtleVZhbHVlQ2hhbmdlUmVjb3JkLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVHJhY2tCeUZ1bmN0aW9uLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoZW1lUGFsZXR0ZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yLCBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHsgTWF0U29ydCwgU29ydCwgU29ydERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHtcbiAgTWF0Rm9vdGVyUm93LFxuICBNYXRGb290ZXJSb3dEZWYsXG4gIE1hdEhlYWRlclJvd0RlZixcbiAgTWF0Um93RGVmLFxuICBNYXRUYWJsZSxcbiAgTWF0VGFibGVEYXRhU291cmNlLFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5cbmltcG9ydCB7IE10eEdyaWRDb2x1bW5NZW51Q29tcG9uZW50IH0gZnJvbSAnLi9jb2x1bW4tbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTXR4R3JpZEV4cGFuc2lvblRvZ2dsZURpcmVjdGl2ZSB9IGZyb20gJy4vZXhwYW5zaW9uLXRvZ2dsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtcbiAgTXR4R3JpZEJ1dHRvblR5cGUsXG4gIE10eEdyaWRDZWxsVGVtcGxhdGUsXG4gIE10eEdyaWRDb2x1bW4sXG4gIE10eEdyaWRDb2x1bW5QaW5PcHRpb24sXG4gIE10eEdyaWREZWZhdWx0T3B0aW9ucyxcbiAgTXR4R3JpZFJvd0NsYXNzRm9ybWF0dGVyLFxuICBNdHhHcmlkUm93U2VsZWN0aW9uRm9ybWF0dGVyLFxufSBmcm9tICcuL2dyaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IE10eEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi9ncmlkLnNlcnZpY2UnO1xuXG4vKiogSW5qZWN0aW9uIHRva2VuIHRoYXQgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBkZWZhdWx0IGdyaWQgb3B0aW9ucy4gKi9cbmV4cG9ydCBjb25zdCBNVFhfR1JJRF9ERUZBVUxUX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48TXR4R3JpZERlZmF1bHRPcHRpb25zPihcbiAgJ210eC1ncmlkLWRlZmF1bHQtb3B0aW9ucydcbik7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ210eC1ncmlkJyxcbiAgZXhwb3J0QXM6ICdtdHhHcmlkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dyaWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ncmlkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ210eC1ncmlkJyxcbiAgfSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdleHBhbnNpb24nLCBbXG4gICAgICBzdGF0ZSgnY29sbGFwc2VkLCB2b2lkJywgc3R5bGUoeyBoZWlnaHQ6ICcwJywgbWluSGVpZ2h0OiAnMCcsIHZpc2liaWxpdHk6ICdoaWRkZW4nIH0pKSxcbiAgICAgIHN0YXRlKCdleHBhbmRlZCcsIHN0eWxlKHsgaGVpZ2h0OiAnKicsIHZpc2liaWxpdHk6ICd2aXNpYmxlJyB9KSksXG4gICAgICB0cmFuc2l0aW9uKCdleHBhbmRlZCA8PT4gY29sbGFwc2VkJywgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpLFxuICAgICAgdHJhbnNpdGlvbignZXhwYW5kZWQgPD0+IHZvaWQnLCBhbmltYXRlKCcyMjVtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSknKSksXG4gICAgXSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE10eEdyaWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoTWF0VGFibGUpIHRhYmxlITogTWF0VGFibGU8YW55PjtcbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IpIHBhZ2luYXRvciE6IE1hdFBhZ2luYXRvcjtcbiAgQFZpZXdDaGlsZChNYXRTb3J0KSBzb3J0ITogTWF0U29ydDtcbiAgQENvbnRlbnRDaGlsZHJlbihNYXRSb3dEZWYpIHJvd0RlZnMhOiBRdWVyeUxpc3Q8TWF0Um93RGVmPGFueT4+O1xuICBAQ29udGVudENoaWxkcmVuKE1hdEhlYWRlclJvd0RlZikgaGVhZGVyUm93RGVmcyE6IFF1ZXJ5TGlzdDxNYXRIZWFkZXJSb3dEZWY+O1xuICBAQ29udGVudENoaWxkcmVuKE1hdEZvb3RlclJvdykgZm9vdGVyUm93RGVmcyE6IFF1ZXJ5TGlzdDxNYXRGb290ZXJSb3dEZWY+O1xuICBAVmlld0NoaWxkKCdjb2x1bW5NZW51JykgY29sdW1uTWVudSE6IE10eEdyaWRDb2x1bW5NZW51Q29tcG9uZW50O1xuICBAVmlld0NoaWxkKCd0YWJsZUNvbnRhaW5lcicpIHRhYmxlQ29udGFpbmVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG5cbiAgZGF0YVNvdXJjZSA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2UoKTtcblxuICAvKiogVGhlIGdyaWQncyBkaXNwbGF5ZWQgY29sdW1ucy4gKi9cbiAgQElucHV0KCkgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW10gPSBbXTtcbiAgLyoqIFRoZSBncmlkJ3MgY29sdW1ucy4gKi9cbiAgQElucHV0KCkgY29sdW1uczogTXR4R3JpZENvbHVtbltdID0gW107XG4gIC8qKiBUaGUgZ3JpZCdzIGRhdGEuICovXG4gIEBJbnB1dCgpIGRhdGE6IGFueVtdID0gW107XG4gIC8qKiBUaGUgdG90YWwgbnVtYmVyIG9mIHRoZSBkYXRhLiAqL1xuICBASW5wdXQoKSBsZW5ndGggPSAwO1xuICAvKiogV2hldGhlciB0aGUgZ3JpZCBpcyBsb2FkaW5nLiAqL1xuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XG4gIC8qKiBUcmFja2luZyBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgdXNlZCB0byBjaGVjayB0aGUgZGlmZmVyZW5jZXMgaW4gZGF0YSBjaGFuZ2VzLiAqL1xuICBASW5wdXQoKSB0cmFja0J5ITogVHJhY2tCeUZ1bmN0aW9uPGFueT47XG4gIC8qKiBXaGV0aGVyIHRoZSBjb2x1bW4gaXMgcmVzaXphYmxlLiAqL1xuICBASW5wdXQoKSBjb2x1bW5SZXNpemFibGUgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uY29sdW1uUmVzaXphYmxlID8/IGZhbHNlO1xuICAvKiogUGxhY2Vob2xkZXIgZm9yIHRoZSBlbXB0eSB2YWx1ZSAoYG51bGxgLCBgJydgLCBgW11gKS4gKi9cbiAgQElucHV0KCkgZW1wdHlWYWx1ZVBsYWNlaG9sZGVyID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LmVtcHR5VmFsdWVQbGFjZWhvbGRlciA/PyAnLS0nO1xuXG4gIC8vID09PT09IFBhZ2UgPT09PT1cblxuICAvKiogV2hldGhlciB0byBwYWdpbmF0ZSB0aGUgZGF0YSBvbiBmcm9udCBlbmQuICovXG4gIEBJbnB1dCgpIHBhZ2VPbkZyb250ID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnBhZ2VPbkZyb250ID8/IHRydWU7XG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIHBhZ2luYXRvci4gKi9cbiAgQElucHV0KCkgc2hvd1BhZ2luYXRvciA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5zaG93UGFnaW5hdG9yID8/IHRydWU7XG4gIC8qKiBXaGV0aGVyIHRoZSBwYWdpbmF0b3IgaXMgZGlzYWJsZWQuICovXG4gIEBJbnB1dCgpIHBhZ2VEaXNhYmxlZCA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5wYWdlRGlzYWJsZWQgPz8gZmFsc2U7XG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIGZpcnN0L2xhc3QgYnV0dG9ucyBVSSB0byB0aGUgdXNlci4gKi9cbiAgQElucHV0KCkgc2hvd0ZpcnN0TGFzdEJ1dHRvbnMgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uc2hvd0ZpcnN0TGFzdEJ1dHRvbnMgPz8gdHJ1ZTtcbiAgLyoqIFRoZSB6ZXJvLWJhc2VkIHBhZ2UgaW5kZXggb2YgdGhlIGRpc3BsYXllZCBsaXN0IG9mIGl0ZW1zLiAqL1xuICBASW5wdXQoKSBwYWdlSW5kZXggPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8ucGFnZUluZGV4ID8/IDA7XG4gIC8qKiBOdW1iZXIgb2YgaXRlbXMgdG8gZGlzcGxheSBvbiBhIHBhZ2UuICovXG4gIEBJbnB1dCgpIHBhZ2VTaXplID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnBhZ2VTaXplID8/IDEwO1xuICAvKiogVGhlIHNldCBvZiBwcm92aWRlZCBwYWdlIHNpemUgb3B0aW9ucyB0byBkaXNwbGF5IHRvIHRoZSB1c2VyLiAqL1xuICBASW5wdXQoKSBwYWdlU2l6ZU9wdGlvbnMgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8ucGFnZVNpemVPcHRpb25zID8/IFsxMCwgNTAsIDEwMF07XG4gIC8qKiBXaGV0aGVyIHRvIGhpZGUgdGhlIHBhZ2Ugc2l6ZSBzZWxlY3Rpb24gVUkgZnJvbSB0aGUgdXNlci4gKi9cbiAgQElucHV0KCkgaGlkZVBhZ2VTaXplID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LmhpZGVQYWdlU2l6ZSA/PyBmYWxzZTtcbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgcGFnaW5hdG9yIGNoYW5nZXMgdGhlIHBhZ2Ugc2l6ZSBvciBwYWdlIGluZGV4LiAqL1xuICBAT3V0cHV0KCkgcGFnZSA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUV2ZW50PigpO1xuICAvKiogVGhlIHRlbXBsYXRlIGZvciB0aGUgcGFnaW5hdGlvbi4gKi9cbiAgQElucHV0KCkgcGFnaW5hdGlvblRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvLyA9PT09PSBTb3J0ID09PT09XG5cbiAgLyoqIFdoZXRoZXIgdG8gc29ydCB0aGUgZGF0YSBvbiBmcm9udCBlbmQuICovXG4gIEBJbnB1dCgpIHNvcnRPbkZyb250ID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnNvcnRPbkZyb250ID8/IHRydWU7XG4gIC8qKiBUaGUgaWQgb2YgdGhlIG1vc3QgcmVjZW50bHkgc29ydGVkIE1hdFNvcnRhYmxlLiAqL1xuICBASW5wdXQoKSBzb3J0QWN0aXZlID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnNvcnRBY3RpdmUgPz8gJyc7XG4gIC8qKiBUaGUgc29ydCBkaXJlY3Rpb24gb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUgTWF0U29ydGFibGUuICovXG4gIEBJbnB1dCgpIHNvcnREaXJlY3Rpb246IFNvcnREaXJlY3Rpb24gPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uc29ydERpcmVjdGlvbiA/PyAnJztcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgdXNlciBmcm9tIGNsZWFyaW5nIHRoZSBzb3J0IGJ5IGZpbmlzaGluZyB0aGUgc29ydCBkaXJlY3Rpb24gY3ljbGUuXG4gICAqIE1heSBiZSBvdmVycmlkZW4gYnkgdGhlIGNvbHVtbidzIGBkaXNhYmxlQ2xlYXJgIGluIGBzb3J0UHJvcGAuXG4gICAqL1xuICBASW5wdXQoKSBzb3J0RGlzYWJsZUNsZWFyID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnNvcnREaXNhYmxlQ2xlYXIgPz8gZmFsc2U7XG4gIC8qKiBXaGV0aGVyIHRoZSBzb3J0IGlzIGRpc2FibGVkLiAqL1xuICBASW5wdXQoKSBzb3J0RGlzYWJsZWQgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uc29ydERpc2FibGVkID8/IGZhbHNlO1xuICAvKipcbiAgICogVGhlIGRpcmVjdGlvbiB0byBzZXQgd2hlbiBhbiBNYXRTb3J0YWJsZSBpcyBpbml0aWFsbHkgc29ydGVkLlxuICAgKiBNYXkgYmUgb3ZlcnJpZGVuIGJ5IHRoZSBjb2x1bW4ncyBgc3RhcnRgIGluIGBzb3J0UHJvcGAuXG4gICAqL1xuICBASW5wdXQoKSBzb3J0U3RhcnQ6ICdhc2MnIHwgJ2Rlc2MnID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnNvcnRTdGFydCA/PyAnYXNjJztcbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgdXNlciBjaGFuZ2VzIGVpdGhlciB0aGUgYWN0aXZlIHNvcnQgb3Igc29ydCBkaXJlY3Rpb24uICovXG4gIEBPdXRwdXQoKSBzb3J0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTb3J0PigpO1xuXG4gIC8vID09PT09IFJvdyA9PT09PVxuXG4gIC8qKiBXaGV0aGVyIHRvIHVzZSB0aGUgcm93IGhvdmVyIHN0eWxlLiAqL1xuICBASW5wdXQoKSByb3dIb3ZlciA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5yb3dIb3ZlciA/PyBmYWxzZTtcbiAgLyoqIFdoZXRoZXIgdG8gdXNlIHRoZSByb3cgc3RyaXBlZCBzdHlsZS4gKi9cbiAgQElucHV0KCkgcm93U3RyaXBlZCA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5yb3dTdHJpcGVkID8/IGZhbHNlO1xuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyB0aGUgcm93LiAqL1xuICBAT3V0cHV0KCkgcm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvLyA9PT09PSBFeHBhbmRhYmxlIFJvdyA9PT09PVxuXG4gIGV4cGFuc2lvblJvd1N0YXRlczogYW55W10gPSBbXTtcblxuICAvKiogV2hldGhlciB0aGUgcm93IGlzIGV4cGFuZGFibGUuICovXG4gIEBJbnB1dCgpIGV4cGFuZGFibGUgPSBmYWxzZTtcbiAgLyoqIFRoZSB0ZW1wbGF0ZSBmb3IgdGhlIGV4cGFuZGFibGUgcm93LiAqL1xuICBASW5wdXQoKSBleHBhbnNpb25UZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG4gIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHVzZXIgdG9nZ2xlcyB0aGUgZXhwYW5kYWJsZSByb3cuICovXG4gIEBPdXRwdXQoKSBleHBhbnNpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAvLyA9PT09PSBSb3cgU2VsZWN0aW9uID09PT09XG5cbiAgcm93U2VsZWN0aW9uOiBTZWxlY3Rpb25Nb2RlbDxhbnk+ID0gbmV3IFNlbGVjdGlvbk1vZGVsPGFueT4odHJ1ZSwgW10pO1xuXG4gIC8qKiBXaGV0aGVyIHRvIHN1cHBvcnQgbXVsdGlwbGUgcm93L2NlbGwgc2VsZWN0aW9uLiAqL1xuICBASW5wdXQoKSBtdWx0aVNlbGVjdGFibGUgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8ubXVsdGlTZWxlY3RhYmxlID8/IHRydWU7XG4gIC8qKiBXaGV0aGVyIHRoZSB1c2VyIGNhbiBzZWxlY3QgbXVsdGlwbGUgcm93cyB3aXRoIGNsaWNrLiAqL1xuICBASW5wdXQoKSBtdWx0aVNlbGVjdGlvbldpdGhDbGljayA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5tdWx0aVNlbGVjdGlvbldpdGhDbGljayA/PyBmYWxzZTtcbiAgLyoqIFRoZSBzZWxlY3RlZCByb3cgaXRlbXMuICovXG4gIEBJbnB1dCgpIHJvd1NlbGVjdGVkOiBhbnlbXSA9IFtdO1xuICAvKiogV2hldGhlciB0aGUgcm93IGlzIHNlbGVjdGFibGUuICovXG4gIEBJbnB1dCgpIHJvd1NlbGVjdGFibGUgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8ucm93U2VsZWN0YWJsZSA/PyBmYWxzZTtcbiAgLyoqIFdoZXRoZXIgdG8gaGlkZSB0aGUgcm93IHNlbGVjdGlvbiBjaGVja2JveC4gKi9cbiAgQElucHV0KCkgaGlkZVJvd1NlbGVjdGlvbkNoZWNrYm94ID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LmhpZGVSb3dTZWxlY3Rpb25DaGVja2JveCA/PyBmYWxzZTtcbiAgLyoqIFdoZXRoZXIgZGlzYWJsZSByb3dzIHRvIGJlIHNlbGVjdGVkIHdoZW4gY2xpY2tlZC4gKi9cbiAgQElucHV0KCkgZGlzYWJsZVJvd0NsaWNrU2VsZWN0aW9uID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LmRpc2FibGVSb3dDbGlja1NlbGVjdGlvbiA/PyBmYWxzZTtcbiAgLyoqIFRoZSBmb3JtYXR0ZXIgdG8gZGlzYWJsZSB0aGUgcm93IHNlbGVjdGlvbiBvciBoaWRlIHRoZSByb3cncyBjaGVja2JveC4gKi9cbiAgQElucHV0KCkgcm93U2VsZWN0aW9uRm9ybWF0dGVyOiBNdHhHcmlkUm93U2VsZWN0aW9uRm9ybWF0dGVyID0ge307XG4gIC8qKiBUaGUgZm9ybWF0dGVyIHRvIHNldCB0aGUgcm93J3MgY2xhc3MuICovXG4gIEBJbnB1dCgpIHJvd0NsYXNzRm9ybWF0dGVyPzogTXR4R3JpZFJvd0NsYXNzRm9ybWF0dGVyO1xuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSByb3cgaXMgc2VsZWN0ZWQuICovXG4gIEBPdXRwdXQoKSByb3dTZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuXG4gIC8vID09PT09IENlbGwgU2VsZWN0aW9uID09PT09XG5cbiAgY2VsbFNlbGVjdGlvbjogYW55W10gPSBbXTtcblxuICAvKiogV2hldGhlciB0aGUgY2VsbCBpcyBzZWxlY3RhYmxlLiAqL1xuICBASW5wdXQoKSBjZWxsU2VsZWN0YWJsZSA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5jZWxsU2VsZWN0YWJsZSA/PyB0cnVlO1xuICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBjZWxsIGlzIHNlbGVjdGVkLiAqL1xuICBAT3V0cHV0KCkgY2VsbFNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG5cbiAgcHJpdmF0ZSBfc2VsZWN0ZWRDZWxsPzogTXR4R3JpZENlbGxTZWxlY3Rpb25EaXJlY3RpdmU7XG5cbiAgLy8gPT09PT0gVG9vbGJhciA9PT09PVxuXG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIHRvb2xiYXIuICovXG4gIEBJbnB1dCgpIHNob3dUb29sYmFyID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnNob3dUb29sYmFyID8/IGZhbHNlO1xuICAvKiogVGhlIHRleHQgb2YgdGhlIHRvb2xiYXIncyB0aXRsZS4gKi9cbiAgQElucHV0KCkgdG9vbGJhclRpdGxlID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LnRvb2xiYXJUaXRsZSA/PyAnJztcbiAgLyoqIFRoZSB0ZW1wbGF0ZSBmb3IgdGhlIHRvb2xiYXIuICovXG4gIEBJbnB1dCgpIHRvb2xiYXJUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLy8gPT09PT0gQ29sdW1uIE1lbnUgPT09PT1cblxuICAvKiogV2hldGhlciB0aGUgY29sdW1uIGlzIGhpZGVhYmxlLiAqL1xuICBASW5wdXQoKSBjb2x1bW5IaWRlYWJsZSA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5jb2x1bW5IaWRlYWJsZSA/PyB0cnVlO1xuICAvKiogSGlkZSBvciBzaG93IHdoZW4gdGhlIGNvbHVtbidzIGNoZWNrYm94IGlzIGNoZWNrZWQuICovXG4gIEBJbnB1dCgpIGNvbHVtbkhpZGVhYmxlQ2hlY2tlZDogJ3Nob3cnIHwgJ2hpZGUnID1cbiAgICB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uY29sdW1uSGlkZWFibGVDaGVja2VkID8/ICdzaG93JztcbiAgLyoqIFdoZXRoZXIgdGhlIGNvbHVtbiBpcyBzb3J0YWJsZS4gKi9cbiAgQElucHV0KCkgY29sdW1uU29ydGFibGUgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uY29sdW1uU29ydGFibGUgPz8gdHJ1ZTtcbiAgLyoqIFdoZXRoZXIgdGhlIGNvbHVtbiBpcyBwaW5uYWJsZS4gKi9cbiAgQElucHV0KCkgY29sdW1uUGlubmFibGUgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uY29sdW1uUGlubmFibGUgPz8gdHJ1ZTtcbiAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgY29sdW1uIGlzIGhpZGVkIG9yIGlzIHNvcnRlZC4gKi9cbiAgQE91dHB1dCgpIGNvbHVtbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TXR4R3JpZENvbHVtbltdPigpO1xuICAvKiogVGhlIG9wdGlvbnMgZm9yIHRoZSBjb2x1bW4gcGluIGxpc3QuICovXG4gIEBJbnB1dCgpIGNvbHVtblBpbk9wdGlvbnM6IE10eEdyaWRDb2x1bW5QaW5PcHRpb25bXSA9XG4gICAgdGhpcy5fZGVmYXVsdE9wdGlvbnM/LmNvbHVtblBpbk9wdGlvbnMgPz8gW107XG5cbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgY29sdW1uIG1lbnUgYnV0dG9uLiAqL1xuICBASW5wdXQoKSBzaG93Q29sdW1uTWVudUJ1dHRvbiA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5zaG93Q29sdW1uTWVudUJ1dHRvbiA/PyB0cnVlO1xuICAvKiogVGhlIHRleHQgZm9yIHRoZSBjb2x1bW4gbWVudSBidXR0b24uICovXG4gIEBJbnB1dCgpIGNvbHVtbk1lbnVCdXR0b25UZXh0ID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LmNvbHVtbk1lbnVCdXR0b25UZXh0ID8/ICcnO1xuICAvKiogVGhlIHR5cGUgZm9yIHRoZSBjb2x1bW4gbWVudSBidXR0b24uICovXG4gIEBJbnB1dCgpIGNvbHVtbk1lbnVCdXR0b25UeXBlOiBNdHhHcmlkQnV0dG9uVHlwZSA9XG4gICAgdGhpcy5fZGVmYXVsdE9wdGlvbnM/LmNvbHVtbk1lbnVCdXR0b25UeXBlID8/ICdzdHJva2VkJztcbiAgLyoqIFRoZSBjb2xvciBmb3IgdGhlIGNvbHVtbiBtZW51IGJ1dHRvbi4gKi9cbiAgQElucHV0KCkgY29sdW1uTWVudUJ1dHRvbkNvbG9yOiBUaGVtZVBhbGV0dGUgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uY29sdW1uTWVudUJ1dHRvbkNvbG9yO1xuICAvKiogVGhlIGNsYXNzIGZvciB0aGUgY29sdW1uIG1lbnUgYnV0dG9uLiAqL1xuICBASW5wdXQoKSBjb2x1bW5NZW51QnV0dG9uQ2xhc3MgPSB0aGlzLl9kZWZhdWx0T3B0aW9ucz8uY29sdW1uTWVudUJ1dHRvbkNsYXNzID8/ICcnO1xuICAvKiogVGhlIGljb24gZm9yIHRoZSBjb2x1bW4gbWVudSBidXR0b24uICovXG4gIEBJbnB1dCgpIGNvbHVtbk1lbnVCdXR0b25JY29uID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LmNvbHVtbk1lbnVCdXR0b25JY29uID8/ICcnO1xuXG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIGNvbHVtbi1tZW51J3MgaGVhZGVyLiAqL1xuICBASW5wdXQoKSBzaG93Q29sdW1uTWVudUhlYWRlciA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5zaG93Q29sdW1uTWVudUhlYWRlciA/PyBmYWxzZTtcbiAgLyoqIFRoZSB0ZXh0IGZvciB0aGUgY29sdW1uLW1lbnUncyBoZWFkZXIuICovXG4gIEBJbnB1dCgpIGNvbHVtbk1lbnVIZWFkZXJUZXh0ID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LmNvbHVtbk1lbnVIZWFkZXJUZXh0ID8/ICdDb2x1bW5zIEhlYWRlcic7XG4gIC8qKiBUaGUgdGVtcGxhdGUgZm9yIHRoZSBjb2x1bW4tbWVudSdzIGhlYWRlci4gKi9cbiAgQElucHV0KCkgY29sdW1uTWVudUhlYWRlclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgdGhlIGNvbHVtbi1tZW51J3MgZm9vdGVyLiAqL1xuICBASW5wdXQoKSBzaG93Q29sdW1uTWVudUZvb3RlciA9IHRoaXMuX2RlZmF1bHRPcHRpb25zPy5zaG93Q29sdW1uTWVudUZvb3RlciA/PyBmYWxzZTtcbiAgLyoqIFRoZSB0ZXh0IGZvciB0aGUgY29sdW1uLW1lbnUncyBmb290ZXIuICovXG4gIEBJbnB1dCgpIGNvbHVtbk1lbnVGb290ZXJUZXh0ID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/LmNvbHVtbk1lbnVGb290ZXJUZXh0ID8/ICdDb2x1bW5zIEZvb3Rlcic7XG4gIC8qKiBUaGUgdGVtcGxhdGUgZm9yIHRoZSBjb2x1bW4tbWVudSdzIGZvb3Rlci4gKi9cbiAgQElucHV0KCkgY29sdW1uTWVudUZvb3RlclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvLyA9PT09PSBObyBSZXN1bHQgPT09PT1cblxuICAvKiogVGhlIGRpc3BsYXllZCB0ZXh0IGZvciB0aGUgZW1wdHkgZGF0YS4gKi9cbiAgQElucHV0KCkgbm9SZXN1bHRUZXh0ID0gdGhpcy5fZGVmYXVsdE9wdGlvbnM/Lm5vUmVzdWx0VGV4dCA/PyAnTm8gcmVjb3JkcyBmb3VuZCc7XG4gIC8qKiBUaGUgdGVtcGxhdGUgZm9yIHRoZSBlbXB0eSBkYXRhLiAqL1xuICBASW5wdXQoKSBub1Jlc3VsdFRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICBnZXQgX2hhc05vUmVzdWx0KCkge1xuICAgIHJldHVybiAoIXRoaXMuZGF0YSB8fCB0aGlzLmRhdGEubGVuZ3RoID09PSAwKSAmJiAhdGhpcy5sb2FkaW5nO1xuICB9XG5cbiAgLy8gPT09PT0gQ2VsbCBUZW1wbGF0ZXMgPT09PT1cblxuICAvKiogVGhlIGhlYWRlcidzIGNlbGwgdGVtcGxhdGUgZm9yIHRoZSBncmlkLiAqL1xuICBASW5wdXQoKSBoZWFkZXJUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT4gfCBNdHhHcmlkQ2VsbFRlbXBsYXRlO1xuICAvKiogVGhlIGhlYWRlcidzIGNlbGwgdGVtcGxhdGUgZm9yIHRoZSBncmlkIGV4Y2x1ZGUgc29ydC4gKi9cbiAgQElucHV0KCkgaGVhZGVyRXh0cmFUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT4gfCBNdHhHcmlkQ2VsbFRlbXBsYXRlO1xuICAvKiogVGhlIGNlbGwgdGVtcGxhdGUgZm9yIHRoZSBncmlkLiAqL1xuICBASW5wdXQoKSBjZWxsVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+IHwgTXR4R3JpZENlbGxUZW1wbGF0ZTtcblxuICAvLyA9PT09PSBSb3cgVGVtcGxhdGVzID09PT09XG5cbiAgLyoqIFdoZXRoZXIgdG8gdXNlIGN1c3RvbSByb3cgdGVtcGxhdGUuIElmIHRydWUsIHlvdSBzaG91bGQgZGVmaW5lIGEgbWF0Um93RGVmLiAqL1xuICBASW5wdXQoKSB1c2VDb250ZW50Um93VGVtcGxhdGUgPSBmYWxzZTtcbiAgLy8gVE9ETzogSXQgY2FuJ3QgdXNlIHRvZ2V0aGVyIHdpdGggYHVzZUNvbnRlbnRSb3dUZW1wbGF0ZWBcbiAgQElucHV0KCkgdXNlQ29udGVudEhlYWRlclJvd1RlbXBsYXRlID0gZmFsc2U7XG4gIC8vIFRPRE86IEl0J3Mgbm90IHdvcmtpbmdcbiAgQElucHV0KCkgdXNlQ29udGVudEZvb3RlclJvd1RlbXBsYXRlID0gZmFsc2U7XG5cbiAgLy8gPT09PT0gU3VtbWFyeSA9PT09PVxuXG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIHN1bW1hcnkuICovXG4gIEBJbnB1dCgpIHNob3dTdW1tYXJ5ID0gZmFsc2U7XG4gIC8qKiBUaGUgdGVtcGxhdGUgZm9yIHRoZSBzdW1tYXJ5LiAqL1xuICBASW5wdXQoKSBzdW1tYXJ5VGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+IHwgTXR4R3JpZENlbGxUZW1wbGF0ZTtcblxuICAvLyBUT0RPOiBTdW1tYXJ5IGRpc3BsYXkgY29uZGl0aW9uc1xuICBnZXQgX3doZXRoZXJTaG93U3VtbWFyeSgpIHtcbiAgICByZXR1cm4gdGhpcy5zaG93U3VtbWFyeTtcbiAgfVxuXG4gIC8vID09PT09IFNpZGUgQmFyID09PT09XG5cbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyB0aGUgc2lkZWJhci4gKi9cbiAgQElucHV0KCkgc2hvd1NpZGViYXIgPSBmYWxzZTtcbiAgLyoqIFRoZSB0ZW1wbGF0ZSBmb3IgdGhlIHNpZGViYXIuICovXG4gIEBJbnB1dCgpIHNpZGViYXJUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLy8gPT09PT0gU3RhdHVzIEJhciA9PT09PVxuXG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdGhlIHN0YXR1cyBiYXIuICovXG4gIEBJbnB1dCgpIHNob3dTdGF0dXNiYXIgPSBmYWxzZTtcbiAgLyoqIFRoZSB0ZW1wbGF0ZSBmb3IgdGhlIHN0YXR1cyBiYXIuICovXG4gIEBJbnB1dCgpIHN0YXR1c2JhclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKiogVGhlIGNoYW5nZWQgcmVjb3JkIG9mIHJvdyBkYXRhLiAqL1xuICByb3dDaGFuZ2VSZWNvcmQ/OiBLZXlWYWx1ZUNoYW5nZVJlY29yZDxzdHJpbmcsIGFueT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfZ3JpZFNydjogTXR4R3JpZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChNVFhfR1JJRF9ERUZBVUxUX09QVElPTlMpXG4gICAgcHJpdmF0ZSBfZGVmYXVsdE9wdGlvbnM/OiBNdHhHcmlkRGVmYXVsdE9wdGlvbnNcbiAgKSB7fVxuXG4gIGRldGVjdENoYW5nZXMoKSB7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgX2dldENvbERhdGEoZGF0YTogYW55W10sIGNvbERlZjogTXR4R3JpZENvbHVtbikge1xuICAgIHJldHVybiB0aGlzLl9ncmlkU3J2LmdldENvbERhdGEoZGF0YSwgY29sRGVmKTtcbiAgfVxuXG4gIF9pc0NvbHVtbkhpZGUoaXRlbTogTXR4R3JpZENvbHVtbikge1xuICAgIHJldHVybiBpdGVtLmhpZGUgIT09IHVuZGVmaW5lZCA/IGl0ZW0uaGlkZSA6IGl0ZW0uc2hvdyAhPT0gdW5kZWZpbmVkID8gIWl0ZW0uc2hvdyA6IGZhbHNlO1xuICB9XG5cbiAgLy8gV2FpdGluZyBmb3IgYXN5bmMgZGF0YVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgdGhpcy5fY291bnRQaW5uZWRQb3NpdGlvbigpO1xuXG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gdGhpcy5jb2x1bW5zXG4gICAgICAuZmlsdGVyKGl0ZW0gPT4gIXRoaXMuX2lzQ29sdW1uSGlkZShpdGVtKSlcbiAgICAgIC5tYXAoaXRlbSA9PiBpdGVtLmZpZWxkKTtcblxuICAgIGlmICh0aGlzLnNob3dDb2x1bW5NZW51QnV0dG9uKSB7XG4gICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaXRlbS5oaWRlID0gdGhpcy5faXNDb2x1bW5IaWRlKGl0ZW0pO1xuICAgICAgICBpdGVtLnNob3cgPSAhaXRlbS5oaWRlO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucm93U2VsZWN0YWJsZSAmJiAhdGhpcy5oaWRlUm93U2VsZWN0aW9uQ2hlY2tib3gpIHtcbiAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucy51bnNoaWZ0KCdNdHhHcmlkQ2hlY2tib3hDb2x1bW5EZWYnKTtcbiAgICB9XG5cbiAgICAvLyBXZSBzaG91bGQgY29weSBlYWNoIGl0ZW0gb2YgZGF0YSBmb3IgZXhwYW5zaW9uIGRhdGFcbiAgICBpZiAodGhpcy5leHBhbmRhYmxlKSB7XG4gICAgICB0aGlzLmV4cGFuc2lvblJvd1N0YXRlcyA9IFtdOyAvLyByZXNldFxuXG4gICAgICB0aGlzLmRhdGE/LmZvckVhY2goXyA9PiB7XG4gICAgICAgIHRoaXMuZXhwYW5zaW9uUm93U3RhdGVzLnB1c2goeyBleHBhbmRlZDogZmFsc2UgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yb3dTZWxlY3RhYmxlKSB7XG4gICAgICB0aGlzLnJvd1NlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxhbnk+KHRoaXMubXVsdGlTZWxlY3RhYmxlLCB0aGlzLnJvd1NlbGVjdGVkKTtcbiAgICB9XG5cbiAgICB0aGlzLmRhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKHRoaXMuZGF0YSk7XG5cbiAgICB0aGlzLmRhdGFTb3VyY2UucGFnaW5hdG9yID0gdGhpcy5wYWdlT25Gcm9udCA/IHRoaXMucGFnaW5hdG9yIDogbnVsbDtcbiAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydE9uRnJvbnQgPyB0aGlzLnNvcnQgOiBudWxsO1xuXG4gICAgLy8gT25seSBzY3JvbGwgdG9wIHdpdGggZGF0YSBjaGFuZ2VcbiAgICBpZiAoY2hhbmdlcy5kYXRhKSB7XG4gICAgICB0aGlzLnNjcm9sbFRvcCgwKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMucGFnZU9uRnJvbnQpIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLnBhZ2luYXRvcjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zb3J0T25Gcm9udCkge1xuICAgICAgdGhpcy5kYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucm93RGVmcz8ubGVuZ3RoID4gMCAmJiB0aGlzLnVzZUNvbnRlbnRSb3dUZW1wbGF0ZSkge1xuICAgICAgdGhpcy5yb3dEZWZzLmZvckVhY2gocm93RGVmID0+IHRoaXMudGFibGUuYWRkUm93RGVmKHJvd0RlZikpO1xuICAgIH1cbiAgICBpZiAodGhpcy5oZWFkZXJSb3dEZWZzPy5sZW5ndGggPiAwICYmIHRoaXMudXNlQ29udGVudEhlYWRlclJvd1RlbXBsYXRlKSB7XG4gICAgICB0aGlzLmhlYWRlclJvd0RlZnMuZm9yRWFjaChoZWFkZXJSb3dEZWYgPT4gdGhpcy50YWJsZS5hZGRIZWFkZXJSb3dEZWYoaGVhZGVyUm93RGVmKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmZvb3RlclJvd0RlZnM/Lmxlbmd0aCA+IDAgJiYgdGhpcy51c2VDb250ZW50Rm9vdGVyUm93VGVtcGxhdGUpIHtcbiAgICAgIHRoaXMuZm9vdGVyUm93RGVmcy5mb3JFYWNoKGZvb3RlclJvd0RlZiA9PiB0aGlzLnRhYmxlLmFkZEZvb3RlclJvd0RlZihmb290ZXJSb3dEZWYpKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHt9XG5cbiAgX2NvdW50UGlubmVkUG9zaXRpb24oKSB7XG4gICAgY29uc3QgY291bnQgPSAoYWNjOiBudW1iZXIsIGN1cjogTXR4R3JpZENvbHVtbikgPT4gYWNjICsgcGFyc2VGbG9hdChjdXIud2lkdGggfHwgJzgwcHgnKTtcblxuICAgIGNvbnN0IHBpbm5lZExlZnRDb2xzID0gdGhpcy5jb2x1bW5zLmZpbHRlcihjb2wgPT4gY29sLnBpbm5lZCAmJiBjb2wucGlubmVkID09PSAnbGVmdCcpO1xuICAgIHBpbm5lZExlZnRDb2xzLmZvckVhY2goKGl0ZW0sIGlkeCkgPT4ge1xuICAgICAgaXRlbS5sZWZ0ID0gcGlubmVkTGVmdENvbHMuc2xpY2UoMCwgaWR4KS5yZWR1Y2UoY291bnQsIDApICsgJ3B4JztcbiAgICB9KTtcblxuICAgIGNvbnN0IHBpbm5lZFJpZ2h0Q29scyA9IHRoaXMuY29sdW1uc1xuICAgICAgLmZpbHRlcihjb2wgPT4gY29sLnBpbm5lZCAmJiBjb2wucGlubmVkID09PSAncmlnaHQnKVxuICAgICAgLnJldmVyc2UoKTtcbiAgICBwaW5uZWRSaWdodENvbHMuZm9yRWFjaCgoaXRlbSwgaWR4KSA9PiB7XG4gICAgICBpdGVtLnJpZ2h0ID0gcGlubmVkUmlnaHRDb2xzLnNsaWNlKDAsIGlkeCkucmVkdWNlKGNvdW50LCAwKSArICdweCc7XG4gICAgfSk7XG4gIH1cblxuICBfZ2V0SW5kZXgoaW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCwgZGF0YUluZGV4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gaW5kZXggPT09IHVuZGVmaW5lZCA/IGRhdGFJbmRleCA6IGluZGV4O1xuICB9XG5cbiAgX29uU29ydENoYW5nZShzb3J0OiBTb3J0KSB7XG4gICAgdGhpcy5zb3J0Q2hhbmdlLmVtaXQoc29ydCk7XG4gIH1cblxuICBfb25Sb3dEYXRhQ2hhbmdlKHJlY29yZDogS2V5VmFsdWVDaGFuZ2VSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgdGhpcy5yb3dDaGFuZ2VSZWNvcmQgPSByZWNvcmQ7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKiogRXhwYW5zaW9uIGNoYW5nZSBldmVudCAqL1xuICBfb25FeHBhbnNpb25DaGFuZ2UoXG4gICAgZXhwYW5zaW9uUmVmOiBNdHhHcmlkRXhwYW5zaW9uVG9nZ2xlRGlyZWN0aXZlLFxuICAgIHJvd0RhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgY29sdW1uOiBNdHhHcmlkQ29sdW1uLFxuICAgIGluZGV4OiBudW1iZXJcbiAgKSB7XG4gICAgdGhpcy5leHBhbnNpb25DaGFuZ2UuZW1pdCh7IGV4cGFuZGVkOiBleHBhbnNpb25SZWYuZXhwYW5kZWQsIGRhdGE6IHJvd0RhdGEsIGluZGV4LCBjb2x1bW4gfSk7XG4gIH1cblxuICAvKiogQ2VsbCBzZWxlY3QgZXZlbnQgKi9cbiAgX3NlbGVjdENlbGwoXG4gICAgY2VsbFJlZjogTXR4R3JpZENlbGxTZWxlY3Rpb25EaXJlY3RpdmUsXG4gICAgcm93RGF0YTogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICBjb2xEZWY6IE10eEdyaWRDb2x1bW5cbiAgKTogdm9pZCB7XG4gICAgLy8gSWYgbm90IHRoZSBzYW1lIGNlbGxcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRDZWxsICE9PSBjZWxsUmVmKSB7XG4gICAgICBjb25zdCBjb2xWYWx1ZSA9IHRoaXMuX2dyaWRTcnYuZ2V0Q2VsbFZhbHVlKHJvd0RhdGEsIGNvbERlZik7XG4gICAgICB0aGlzLmNlbGxTZWxlY3Rpb24gPSBbXTsgLy8gcmVzZXRcbiAgICAgIHRoaXMuY2VsbFNlbGVjdGlvbi5wdXNoKHsgY2VsbERhdGE6IGNvbFZhbHVlLCByb3dEYXRhLCBjb2xEZWYgfSk7XG5cbiAgICAgIHRoaXMuY2VsbFNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuY2VsbFNlbGVjdGlvbik7XG5cbiAgICAgIGlmICh0aGlzLl9zZWxlY3RlZENlbGwpIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRDZWxsLmRlc2VsZWN0KCk7IC8vIHRoZSBzZWxlY3RlZENlbGwgd2lsbCBiZSB1bmRlZmluZWRcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9zZWxlY3RlZENlbGwgPSBjZWxsUmVmLnNlbGVjdGVkID8gY2VsbFJlZiA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKiBSb3cgc2VsZWN0IGV2ZW50ICovXG4gIF9zZWxlY3RSb3coZXZlbnQ6IE1vdXNlRXZlbnQsIHJvd0RhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sIGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnJvd1NlbGVjdGFibGUgJiZcbiAgICAgICF0aGlzLnJvd1NlbGVjdGlvbkZvcm1hdHRlci5kaXNhYmxlZD8uKHJvd0RhdGEsIGluZGV4KSAmJlxuICAgICAgIXRoaXMucm93U2VsZWN0aW9uRm9ybWF0dGVyLmhpZGVDaGVja2JveD8uKHJvd0RhdGEsIGluZGV4KSAmJlxuICAgICAgIXRoaXMuZGlzYWJsZVJvd0NsaWNrU2VsZWN0aW9uXG4gICAgKSB7XG4gICAgICAvLyBtZXRhS2V5IC0+IGNvbW1hbmQga2V5XG4gICAgICBpZiAoIXRoaXMubXVsdGlTZWxlY3Rpb25XaXRoQ2xpY2sgJiYgIWV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50Lm1ldGFLZXkpIHtcbiAgICAgICAgdGhpcy5yb3dTZWxlY3Rpb24uY2xlYXIoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fdG9nZ2xlTm9ybWFsQ2hlY2tib3gocm93RGF0YSk7XG4gICAgfVxuXG4gICAgdGhpcy5yb3dDbGljay5lbWl0KHsgcm93RGF0YSwgaW5kZXggfSk7XG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgbnVtYmVyIG9mIHNlbGVjdGVkIGVsZW1lbnRzIG1hdGNoZXMgdGhlIHRvdGFsIG51bWJlciBvZiByb3dzLiAqL1xuICBfaXNBbGxTZWxlY3RlZCgpIHtcbiAgICBjb25zdCBudW1TZWxlY3RlZCA9IHRoaXMucm93U2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aDtcbiAgICBjb25zdCBudW1Sb3dzID0gdGhpcy5kYXRhU291cmNlLmRhdGEuZmlsdGVyKFxuICAgICAgKHJvdywgaW5kZXgpID0+ICF0aGlzLnJvd1NlbGVjdGlvbkZvcm1hdHRlci5kaXNhYmxlZD8uKHJvdywgaW5kZXgpXG4gICAgKS5sZW5ndGg7XG4gICAgcmV0dXJuIG51bVNlbGVjdGVkID09PSBudW1Sb3dzO1xuICB9XG5cbiAgLyoqIFNlbGVjdCBhbGwgcm93cyBpZiB0aGV5IGFyZSBub3QgYWxsIHNlbGVjdGVkOyBvdGhlcndpc2UgY2xlYXIgc2VsZWN0aW9uLiAqL1xuICBfdG9nZ2xlTWFzdGVyQ2hlY2tib3goKSB7XG4gICAgdGhpcy5faXNBbGxTZWxlY3RlZCgpXG4gICAgICA/IHRoaXMucm93U2VsZWN0aW9uLmNsZWFyKClcbiAgICAgIDogdGhpcy5kYXRhU291cmNlLmRhdGEuZm9yRWFjaCgocm93LCBpbmRleCkgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5yb3dTZWxlY3Rpb25Gb3JtYXR0ZXIuZGlzYWJsZWQ/Lihyb3csIGluZGV4KSkge1xuICAgICAgICAgICAgdGhpcy5yb3dTZWxlY3Rpb24uc2VsZWN0KHJvdyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB0aGlzLnJvd1NlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMucm93U2VsZWN0aW9uLnNlbGVjdGVkKTtcbiAgfVxuXG4gIC8qKiBTZWxlY3Qgbm9ybWFsIHJvdyAqL1xuICBfdG9nZ2xlTm9ybWFsQ2hlY2tib3gocm93OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gICAgdGhpcy5yb3dTZWxlY3Rpb24udG9nZ2xlKHJvdyk7XG4gICAgdGhpcy5yb3dTZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnJvd1NlbGVjdGlvbi5zZWxlY3RlZCk7XG4gIH1cblxuICAvKiogQ29sdW1uIGNoYW5nZSBldmVudCAqL1xuICBfb25Db2x1bW5DaGFuZ2UoY29sdW1uczogTXR4R3JpZENvbHVtbltdKSB7XG4gICAgdGhpcy5jb2x1bW5DaGFuZ2UuZW1pdChjb2x1bW5zKTtcblxuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IE9iamVjdC5hc3NpZ24oW10sIHRoaXMuZ2V0RGlzcGxheWVkQ29sdW1uRmllbGRzKGNvbHVtbnMpKTtcblxuICAgIGlmICh0aGlzLnJvd1NlbGVjdGFibGUgJiYgIXRoaXMuaGlkZVJvd1NlbGVjdGlvbkNoZWNrYm94KSB7XG4gICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMudW5zaGlmdCgnTXR4R3JpZENoZWNrYm94Q29sdW1uRGVmJyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RGlzcGxheWVkQ29sdW1uRmllbGRzKGNvbHVtbnM6IE10eEdyaWRDb2x1bW5bXSk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBmaWVsZHMgPSBjb2x1bW5zXG4gICAgICAuZmlsdGVyKGl0ZW0gPT4gKHRoaXMuY29sdW1uSGlkZWFibGVDaGVja2VkID09PSAnc2hvdycgPyBpdGVtLnNob3cgOiAhaXRlbS5oaWRlKSlcbiAgICAgIC5tYXAoaXRlbSA9PiBpdGVtLmZpZWxkKTtcbiAgICByZXR1cm4gZmllbGRzO1xuICB9XG5cbiAgLyoqIEN1c3RvbWl6ZSBleHBhbnNpb24gZXZlbnQgKi9cbiAgdG9nZ2xlRXhwYW5zaW9uKGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAoIXRoaXMuZXhwYW5kYWJsZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgYGV4cGFuZGFibGVgIHNob3VsZCBiZSBzZXQgdHJ1ZS4nKTtcbiAgICB9XG4gICAgdGhpcy5leHBhbnNpb25Sb3dTdGF0ZXNbaW5kZXhdLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5zaW9uUm93U3RhdGVzW2luZGV4XS5leHBhbmRlZDtcbiAgICByZXR1cm4gdGhpcy5leHBhbnNpb25Sb3dTdGF0ZXNbaW5kZXhdLmV4cGFuZGVkO1xuICB9XG5cbiAgLyoqIFNjcm9sbCB0byB0b3Agd2hlbiB0dXJuIHRvIHRoZSBuZXh0IHBhZ2UuICovXG4gIF9vblBhZ2UoZTogUGFnZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMucGFnZU9uRnJvbnQpIHtcbiAgICAgIHRoaXMuc2Nyb2xsVG9wKDApO1xuICAgIH1cbiAgICB0aGlzLnBhZ2UuZW1pdChlKTtcbiAgfVxuXG4gIHNjcm9sbFRvcCh2YWx1ZT86IG51bWJlcik6IG51bWJlciB8IHZvaWQge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy50YWJsZUNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5zY3JvbGxUb3A7XG4gICAgfVxuICAgIGlmICh0aGlzLnRhYmxlQ29udGFpbmVyICYmICF0aGlzLmxvYWRpbmcpIHtcbiAgICAgIHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBzY3JvbGxMZWZ0KHZhbHVlPzogbnVtYmVyKTogbnVtYmVyIHwgdm9pZCB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiB0aGlzLnRhYmxlQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgfVxuICAgIGlmICh0aGlzLnRhYmxlQ29udGFpbmVyICYmICF0aGlzLmxvYWRpbmcpIHtcbiAgICAgIHRoaXMudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdmFsdWU7XG4gICAgfVxuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1ttdHgtZ3JpZC1zZWxlY3RhYmxlLWNlbGxdJyxcbn0pXG5leHBvcnQgY2xhc3MgTXR4R3JpZENlbGxTZWxlY3Rpb25EaXJlY3RpdmUge1xuICBwcml2YXRlIF9zZWxlY3RlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9yb3dEYXRhITogUmVjb3JkPHN0cmluZywgYW55PjtcblxuICBjdHJsS2V5UHJlc3NlZCA9IGZhbHNlO1xuICBzaGlmdEtleVByZXNzZWQgPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNlbGVjdGVkJylcbiAgZ2V0IHNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBtdHhTZWxlY3RhYmxlUm93RGF0YSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLl9yb3dEYXRhKSB7XG4gICAgICB0aGlzLl9yb3dEYXRhID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgQE91dHB1dCgpIGNlbGxTZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE10eEdyaWRDZWxsU2VsZWN0aW9uRGlyZWN0aXZlPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2dyaWQ6IE10eEdyaWRDb21wb25lbnQpIHt9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5jdHJsS2V5UHJlc3NlZCA9IGV2ZW50LmN0cmxLZXk7XG4gICAgdGhpcy5zaGlmdEtleVByZXNzZWQgPSBldmVudC5zaGlmdEtleTtcblxuICAgIGlmICh0aGlzLl9ncmlkLmNlbGxTZWxlY3RhYmxlKSB7XG4gICAgICB0aGlzLnNlbGVjdCgpO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zZWxlY3RlZCA9IHRydWU7XG4gICAgdGhpcy5jZWxsU2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcyk7XG4gIH1cblxuICBkZXNlbGVjdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zZWxlY3RlZCA9IGZhbHNlO1xuICAgIHRoaXMuY2VsbFNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMpO1xuICB9XG5cbiAgdG9nZ2xlKCk6IHZvaWQge1xuICAgIHRoaXMuX3NlbGVjdGVkID0gIXRoaXMuX3NlbGVjdGVkO1xuICAgIHRoaXMuY2VsbFNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMpO1xuICB9XG59XG4iLCI8IS0tIFByb2dyZXNzIGJhci0tPlxyXG48ZGl2IGNsYXNzPVwibXR4LWdyaWQtcHJvZ3Jlc3NcIiAqbmdJZj1cImxvYWRpbmdcIj5cclxuICA8bWF0LXByb2dyZXNzLWJhciBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cclxuPC9kaXY+XHJcblxyXG48IS0tIFRvb2xiYXIgLS0+XHJcbjxkaXYgY2xhc3M9XCJtdHgtZ3JpZC10b29sYmFyXCIgKm5nSWY9XCJzaG93VG9vbGJhclwiPlxyXG4gIDxkaXYgY2xhc3M9XCJtdHgtZ3JpZC10b29sYmFyLWNvbnRlbnRcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJ0b29sYmFyVGVtcGxhdGVcIiBbbmdJZkVsc2VdPVwiZGVmYXVsdFRvb2xiYXJUZW1wbGF0ZVwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwidG9vbGJhclRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUb29sYmFyVGVtcGxhdGU+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtdHgtZ3JpZC10b29sYmFyLXRpdGxlXCIgKm5nSWY9XCJ0b29sYmFyVGl0bGVcIj57e3Rvb2xiYXJUaXRsZX19PC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtdHgtZ3JpZC10b29sYmFyLWFjdGlvbnNcIj5cclxuICAgIDxtdHgtZ3JpZC1jb2x1bW4tbWVudSAqbmdJZj1cInNob3dDb2x1bW5NZW51QnV0dG9uXCIgI2NvbHVtbk1lbnVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYnV0dG9uVGV4dF09XCJjb2x1bW5NZW51QnV0dG9uVGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1dHRvblR5cGVdPVwiY29sdW1uTWVudUJ1dHRvblR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25Db2xvcl09XCJjb2x1bW5NZW51QnV0dG9uQ29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25DbGFzc109XCJjb2x1bW5NZW51QnV0dG9uQ2xhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25JY29uXT1cImNvbHVtbk1lbnVCdXR0b25JY29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0YWJsZV09XCJjb2x1bW5IaWRlYWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGFibGVDaGVja2VkXT1cImNvbHVtbkhpZGVhYmxlQ2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3NvcnRhYmxlXT1cImNvbHVtblNvcnRhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbcGlubmFibGVdPVwiY29sdW1uUGlubmFibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93SGVhZGVyXT1cInNob3dDb2x1bW5NZW51SGVhZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVhZGVyVGV4dF09XCJjb2x1bW5NZW51SGVhZGVyVGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2hlYWRlclRlbXBsYXRlXT1cImNvbHVtbk1lbnVIZWFkZXJUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dGb290ZXJdPVwic2hvd0NvbHVtbk1lbnVGb290ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtmb290ZXJUZXh0XT1cImNvbHVtbk1lbnVGb290ZXJUZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9vdGVyVGVtcGxhdGVdPVwiY29sdW1uTWVudUZvb3RlclRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbcGluT3B0aW9uc109XCJjb2x1bW5QaW5PcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY29sdW1uQ2hhbmdlKT1cIl9vbkNvbHVtbkNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICA8L210eC1ncmlkLWNvbHVtbi1tZW51PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJtdHgtZ3JpZC1tYWluIG10eC1ncmlkLWxheW91dFwiPlxyXG4gIDwhLS0gVGFibGUgY29udGVudCAtLT5cclxuICA8ZGl2IGNsYXNzPVwibXR4LWdyaWQtY29udGVudCBtdHgtZ3JpZC1sYXlvdXRcIj5cclxuICAgIDxkaXYgI3RhYmxlQ29udGFpbmVyIGNsYXNzPVwibWF0LXRhYmxlLWNvbnRhaW5lclwiXHJcbiAgICAgICAgIFtuZ0NsYXNzXT1cInsnbWF0LXRhYmxlLXdpdGgtZGF0YSc6ICFfaGFzTm9SZXN1bHR9XCI+XHJcbiAgICAgIDx0YWJsZSBtYXQtdGFibGUgKm5nSWY9XCIhY29sdW1uUmVzaXphYmxlXCJcclxuICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbWF0LXRhYmxlLWhvdmVyJzogcm93SG92ZXIsICdtYXQtdGFibGUtc3RyaXBlZCc6IHJvd1N0cmlwZWQsICdtYXQtdGFibGUtZXhwYW5kYWJsZSc6IGV4cGFuZGFibGV9XCJcclxuICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBbbXVsdGlUZW1wbGF0ZURhdGFSb3dzXT1cImV4cGFuZGFibGVcIlxyXG4gICAgICAgICAgICAgbWF0U29ydFxyXG4gICAgICAgICAgICAgW21hdFNvcnRBY3RpdmVdPVwic29ydEFjdGl2ZVwiXHJcbiAgICAgICAgICAgICBbbWF0U29ydERpcmVjdGlvbl09XCJzb3J0RGlyZWN0aW9uXCJcclxuICAgICAgICAgICAgIFttYXRTb3J0RGlzYWJsZUNsZWFyXT1cInNvcnREaXNhYmxlQ2xlYXJcIlxyXG4gICAgICAgICAgICAgW21hdFNvcnREaXNhYmxlZF09XCJzb3J0RGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgW21hdFNvcnRTdGFydF09XCJzb3J0U3RhcnRcIlxyXG4gICAgICAgICAgICAgKG1hdFNvcnRDaGFuZ2UpPVwiX29uU29ydENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgIFt0cmFja0J5XT1cInRyYWNrQnlcIj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvd1NlbGVjdGFibGUgJiYgIWhpZGVSb3dTZWxlY3Rpb25DaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBtYXRDb2x1bW5EZWY9XCJNdHhHcmlkQ2hlY2tib3hDb2x1bW5EZWZcIj5cclxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgY2xhc3M9XCJtdHgtZ3JpZC1jaGVja2JveC1jZWxsXCI+XHJcbiAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggKm5nSWY9XCJtdWx0aVNlbGVjdGFibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInJvd1NlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIF9pc0FsbFNlbGVjdGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInJvd1NlbGVjdGlvbi5oYXNWYWx1ZSgpICYmICFfaXNBbGxTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IF90b2dnbGVNYXN0ZXJDaGVja2JveCgpIDogbnVsbFwiPlxyXG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93OyBsZXQgaW5kZXggPSBpbmRleDsgbGV0IGRhdGFJbmRleCA9IGRhdGFJbmRleDtcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibXR4LWdyaWQtY2hlY2tib3gtY2VsbFwiPlxyXG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94ICpuZ0lmPVwiIShyb3dTZWxlY3Rpb25Gb3JtYXR0ZXIuaGlkZUNoZWNrYm94ICYmIHJvd1NlbGVjdGlvbkZvcm1hdHRlci5oaWRlQ2hlY2tib3gocm93LCBfZ2V0SW5kZXgoaW5kZXgsIGRhdGFJbmRleCkpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJvd1NlbGVjdGlvbkZvcm1hdHRlci5kaXNhYmxlZCAmJiByb3dTZWxlY3Rpb25Gb3JtYXR0ZXIuZGlzYWJsZWQocm93LCBfZ2V0SW5kZXgoaW5kZXgsIGRhdGFJbmRleCkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJyb3dTZWxlY3Rpb24uaXNTZWxlY3RlZChyb3cpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IF90b2dnbGVOb3JtYWxDaGVja2JveChyb3cpIDogbnVsbFwiPlxyXG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmIGNsYXNzPVwibXR4LWdyaWQtY2hlY2tib3gtY2VsbFwiPjwvdGQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zO1wiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdGlja3ldPVwiY29sLnBpbm5lZD09PSdsZWZ0J1wiIFtzdGlja3lFbmRdPVwiY29sLnBpbm5lZD09PSdyaWdodCdcIj5cclxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbCB8IGNvbENsYXNzXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbWF0LXRhYmxlLXN0aWNreS1sZWZ0JzogY29sLnBpbm5lZCA9PT0gJ2xlZnQnLCAnbWF0LXRhYmxlLXN0aWNreS1yaWdodCc6IGNvbC5waW5uZWQgPT09ICdyaWdodCd9XCJcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnd2lkdGgnOiBjb2wud2lkdGgsICdtaW4td2lkdGgnOiBjb2wud2lkdGgsICdsZWZ0JzogY29sLmxlZnQsICdyaWdodCc6IGNvbC5yaWdodH1cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWF0LWhlYWRlci1jZWxsLWlubmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiaGVhZGVyVGVtcGxhdGUgfCBpc1RlbXBsYXRlUmVmXCIgW25nSWZFbHNlXT1cImhlYWRlclRwbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiJGFueShoZWFkZXJUZW1wbGF0ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb2wsIGNvbERlZjogY29sIH1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2hlYWRlclRwbD5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIiRhbnkoaGVhZGVyVGVtcGxhdGUpPy5bY29sLmZpZWxkXSB8IGlzVGVtcGxhdGVSZWZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nSWZFbHNlXT1cImRlZmF1bHRIZWFkZXJUcGxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiJGFueShoZWFkZXJUZW1wbGF0ZSlbY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29sLCBjb2xEZWY6IGNvbCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRIZWFkZXJUcGw+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgW21hdC1zb3J0LWhlYWRlcl09XCJjb2wuc29ydFByb3A/LmlkIHx8IGNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjb2wuc29ydGFibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlQ2xlYXJdPVwiY29sLnNvcnRQcm9wPy5kaXNhYmxlQ2xlYXIgPz8gc29ydERpc2FibGVDbGVhclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2Fycm93UG9zaXRpb25dPVwiY29sLnNvcnRQcm9wPy5hcnJvd1Bvc2l0aW9uIVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3N0YXJ0XT1cImNvbC5zb3J0UHJvcD8uc3RhcnQhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdHgtZ3JpZC1leHBhbnNpb24tcGxhY2Vob2xkZXJcIiAqbmdJZj1cImNvbC5zaG93RXhwYW5kXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7Y29sLmhlYWRlciB8IHRvT2JzZXJ2YWJsZSB8IGFzeW5jfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cIm10eC1ncmlkLWljb24gbWF0LXNvcnQtaGVhZGVyLWljb25cIiAqbmdJZj1cImNvbC5zb3J0YWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNHB4XCIgaGVpZ2h0PVwiMjRweFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNhYmxlPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMywxM0gxNVYxMUgzTTMsNlY4SDIxVjZNMywxOEg5VjE2SDNWMThaXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRlckV4dHJhVHBsQmFzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGhlYWRlckV4dHJhVGVtcGxhdGUsIGNvbERlZjogY29sIH1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93OyBsZXQgaW5kZXggPSBpbmRleDsgbGV0IGRhdGFJbmRleCA9IGRhdGFJbmRleDtcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbCB8IGNvbENsYXNzOiByb3c6IHJvd0NoYW5nZVJlY29yZDogcm93Q2hhbmdlUmVjb3JkPy5jdXJyZW50VmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydtYXQtdGFibGUtc3RpY2t5LWxlZnQnOiBjb2wucGlubmVkID09PSAnbGVmdCcsICdtYXQtdGFibGUtc3RpY2t5LXJpZ2h0JzogY29sLnBpbm5lZCA9PT0gJ3JpZ2h0J31cIlxyXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyd3aWR0aCc6IGNvbC53aWR0aCwgJ21pbi13aWR0aCc6IGNvbC53aWR0aCwgJ2xlZnQnOiBjb2wubGVmdCwgJ3JpZ2h0JzogY29sLnJpZ2h0fVwiXHJcbiAgICAgICAgICAgICAgICBtdHgtZ3JpZC1zZWxlY3RhYmxlLWNlbGwgKGNlbGxTZWxlY3Rpb25DaGFuZ2UpPVwiX3NlbGVjdENlbGwoJGV2ZW50LCByb3csIGNvbClcIj5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiY2VsbFRlbXBsYXRlIHwgaXNUZW1wbGF0ZVJlZlwiIFtuZ0lmRWxzZV09XCJjZWxsVHBsXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiJGFueShjZWxsVGVtcGxhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvdywgcm93RGF0YTogcm93LCBpbmRleDogX2dldEluZGV4KGluZGV4LCBkYXRhSW5kZXgpLCBjb2xEZWY6IGNvbCB9XCI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjZWxsVHBsPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIiRhbnkoY2VsbFRlbXBsYXRlKT8uW2NvbC5maWVsZF0gfCBpc1RlbXBsYXRlUmVmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdJZkVsc2VdPVwiY29sRGVmQ2VsbFRwbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiJGFueShjZWxsVGVtcGxhdGUpW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIHJvd0RhdGE6IHJvdywgaW5kZXg6IF9nZXRJbmRleChpbmRleCwgZGF0YUluZGV4KSwgY29sRGVmOiBjb2wgfVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjY29sRGVmQ2VsbFRwbD5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJjb2wuY2VsbFRlbXBsYXRlXCIgW25nSWZFbHNlXT1cImRlZmF1bHRDZWxsVHBsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2wuY2VsbFRlbXBsYXRlIVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIHJvd0RhdGE6IHJvdywgaW5kZXg6IF9nZXRJbmRleChpbmRleCwgZGF0YUluZGV4KSwgY29sRGVmOiBjb2wgfVwiPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdENlbGxUcGw+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibXR4LWdyaWQtcm93LWV4cGFuZC1idXR0b25cIiAqbmdJZj1cImNvbC5zaG93RXhwYW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uIG10eC1ncmlkLWV4cGFuc2lvbi10b2dnbGUgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsob3BlbmVkKV09XCJleHBhbnNpb25Sb3dTdGF0ZXNbZGF0YUluZGV4XS5leHBhbmRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICh0b2dnbGVDaGFuZ2UpPVwiX29uRXhwYW5zaW9uQ2hhbmdlKCRldmVudCwgcm93LCBjb2wsIGRhdGFJbmRleCk7XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJtdHgtZ3JpZC1pY29uIG10eC1ncmlkLXJvdy1leHBhbmQtaWNvblwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjRweFwiIGhlaWdodD1cIjI0cHhcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgZm9jdXNhYmxlPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwIDZMOC41OSA3LjQxIDEzLjE3IDEybC00LjU4IDQuNTlMMTAgMThsNi02elwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bXR4LWdyaWQtY2VsbCBbcm93RGF0YV09XCJyb3dcIiBbY29sRGVmXT1cImNvbFwiIFtwbGFjZWhvbGRlcl09XCJlbXB0eVZhbHVlUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJvd0RhdGFDaGFuZ2UpPVwiX29uUm93RGF0YUNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICA8L210eC1ncmlkLWNlbGw+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWZcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbWF0LXRhYmxlLXN0aWNreS1sZWZ0JzogY29sLnBpbm5lZCA9PT0gJ2xlZnQnLCAnbWF0LXRhYmxlLXN0aWNreS1yaWdodCc6IGNvbC5waW5uZWQgPT09ICdyaWdodCd9XCJcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnd2lkdGgnOiBjb2wud2lkdGgsICdtaW4td2lkdGgnOiBjb2wud2lkdGgsICdsZWZ0JzogY29sLmxlZnQsICdyaWdodCc6IGNvbC5yaWdodH1cIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10eC1ncmlkLWV4cGFuc2lvbi1wbGFjZWhvbGRlclwiICpuZ0lmPVwiY29sLnNob3dFeHBhbmRcIj48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJzdW1tYXJ5VGVtcGxhdGUgfCBpc1RlbXBsYXRlUmVmXCIgW25nSWZFbHNlXT1cInN1bW1hcnlUcGxcIj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KHN1bW1hcnlUZW1wbGF0ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29sLCBjb2xEZWY6IGNvbCwgZGF0YTogZGF0YSB9XCI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzdW1tYXJ5VHBsPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIiRhbnkoc3VtbWFyeVRlbXBsYXRlKT8uW2NvbC5maWVsZF0gfCBpc1RlbXBsYXRlUmVmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdJZkVsc2VdPVwiZGVmYXVsdFN1bW1hcnlUcGxcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIiRhbnkoc3VtbWFyeVRlbXBsYXRlKVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogX2dldENvbERhdGEoZGF0YSwgY29sKSwgY29sRGF0YTogX2dldENvbERhdGEoZGF0YSwgY29sKSwgY29sRGVmOiBjb2wgfVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFN1bW1hcnlUcGw+XHJcbiAgICAgICAgICAgICAgICA8bXR4LWdyaWQtY2VsbCBbc3VtbWFyeV09XCJ0cnVlXCIgW2RhdGFdPVwiZGF0YVwiIFtjb2xEZWZdPVwiY29sXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJlbXB0eVZhbHVlUGxhY2Vob2xkZXJcIj5cclxuICAgICAgICAgICAgICAgIDwvbXR4LWdyaWQtY2VsbD5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJ1c2VDb250ZW50SGVhZGVyUm93VGVtcGxhdGVcIiBbbmdJZkVsc2VdPVwiZGVmYXVsdEhlYWRlclJvd1RwbFwiPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SGVhZGVyUm93VHBsPlxyXG4gICAgICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zOyBzdGlja3k6IHRydWVcIj48L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJ1c2VDb250ZW50Um93VGVtcGxhdGVcIiBbbmdJZkVsc2VdPVwiZGVmYXVsdFJvd1RwbFwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Um93VHBsPlxyXG4gICAgICAgICAgPHRyIG1hdC1yb3dcclxuICAgICAgICAgICAgICAqbWF0Um93RGVmPVwibGV0IHJvdzsgbGV0IGluZGV4ID0gaW5kZXg7IGxldCBkYXRhSW5kZXggPSBkYXRhSW5kZXg7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCJcclxuICAgICAgICAgICAgICBbY2xhc3NdPVwicm93IHwgcm93Q2xhc3M6IGluZGV4OiBkYXRhSW5kZXg6IHJvd0NsYXNzRm9ybWF0dGVyXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3NlbGVjdGVkJzogcm93U2VsZWN0aW9uLmlzU2VsZWN0ZWQocm93KX1cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJfc2VsZWN0Um93KCRldmVudCwgcm93LCBfZ2V0SW5kZXgoaW5kZXgsIGRhdGFJbmRleCkpXCI+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJfd2hldGhlclNob3dTdW1tYXJ5XCI+XHJcbiAgICAgICAgICA8dHIgbWF0LWZvb3Rlci1yb3cgKm1hdEZvb3RlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnM7IHN0aWNreTogdHJ1ZVwiPjwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwidXNlQ29udGVudEZvb3RlclJvd1RlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4cGFuZGFibGVcIj5cclxuICAgICAgICAgIDwhLS0gRXhwYW5kZWQgQ29udGVudCBDb2x1bW4gLSBUaGUgZXhwYW5kYWJsZSByb3cgaXMgbWFkZSB1cCBvZiB0aGlzIG9uZSBjb2x1bW4gdGhhdCBzcGFucyBhY3Jvc3MgYWxsIGNvbHVtbnMgLS0+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIk10eEdyaWRFeHBhbnNpb25Db2x1bW5EZWZcIj5cclxuICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvdzsgbGV0IGRhdGFJbmRleCA9IGRhdGFJbmRleFwiXHJcbiAgICAgICAgICAgICAgICBbYXR0ci5jb2xzcGFuXT1cImRpc3BsYXllZENvbHVtbnMubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10eC1ncmlkLWV4cGFuc2lvbi1kZXRhaWxcIlxyXG4gICAgICAgICAgICAgICAgICAgW0BleHBhbnNpb25dPVwiZXhwYW5zaW9uUm93U3RhdGVzW2RhdGFJbmRleF0uZXhwYW5kZWQgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCdcIj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJleHBhbnNpb25UZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3csIHJvd0RhdGE6IHJvdywgaW5kZXg6IGRhdGFJbmRleCwgZXhwYW5kZWQ6IGV4cGFuc2lvblJvd1N0YXRlc1tkYXRhSW5kZXhdLmV4cGFuZGVkIH1cIj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8dHIgbWF0LXJvd1xyXG4gICAgICAgICAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBbJ010eEdyaWRFeHBhbnNpb25Db2x1bW5EZWYnXTsgbGV0IGRhdGFJbmRleCA9IGRhdGFJbmRleFwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiWydtdHgtZ3JpZC1leHBhbnNpb24nLCBleHBhbnNpb25Sb3dTdGF0ZXNbZGF0YUluZGV4XS5leHBhbmRlZCA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJ11cIj5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvdGFibGU+XHJcblxyXG4gICAgICA8IS0tIFRPRE86IFVzZSBmbGV4Ym94LWJhc2VkIG1hdC10YWJsZSAtLT5cclxuICAgICAgPHRhYmxlIG1hdC10YWJsZSAqbmdJZj1cImNvbHVtblJlc2l6YWJsZVwiXHJcbiAgICAgICAgICAgICBjb2x1bW5SZXNpemVcclxuICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbWF0LXRhYmxlLWhvdmVyJzogcm93SG92ZXIsICdtYXQtdGFibGUtc3RyaXBlZCc6IHJvd1N0cmlwZWQsICdtYXQtdGFibGUtZXhwYW5kYWJsZSc6IGV4cGFuZGFibGV9XCJcclxuICAgICAgICAgICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBbbXVsdGlUZW1wbGF0ZURhdGFSb3dzXT1cImV4cGFuZGFibGVcIlxyXG4gICAgICAgICAgICAgbWF0U29ydFxyXG4gICAgICAgICAgICAgW21hdFNvcnRBY3RpdmVdPVwic29ydEFjdGl2ZVwiXHJcbiAgICAgICAgICAgICBbbWF0U29ydERpcmVjdGlvbl09XCJzb3J0RGlyZWN0aW9uXCJcclxuICAgICAgICAgICAgIFttYXRTb3J0RGlzYWJsZUNsZWFyXT1cInNvcnREaXNhYmxlQ2xlYXJcIlxyXG4gICAgICAgICAgICAgW21hdFNvcnREaXNhYmxlZF09XCJzb3J0RGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgW21hdFNvcnRTdGFydF09XCJzb3J0U3RhcnRcIlxyXG4gICAgICAgICAgICAgKG1hdFNvcnRDaGFuZ2UpPVwiX29uU29ydENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgIFt0cmFja0J5XT1cInRyYWNrQnlcIj5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvd1NlbGVjdGFibGUgJiYgIWhpZGVSb3dTZWxlY3Rpb25DaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBtYXRDb2x1bW5EZWY9XCJNdHhHcmlkQ2hlY2tib3hDb2x1bW5EZWZcIj5cclxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgY2xhc3M9XCJtdHgtZ3JpZC1jaGVja2JveC1jZWxsXCI+XHJcbiAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggKm5nSWY9XCJtdWx0aVNlbGVjdGFibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInJvd1NlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIF9pc0FsbFNlbGVjdGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInJvd1NlbGVjdGlvbi5oYXNWYWx1ZSgpICYmICFfaXNBbGxTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IF90b2dnbGVNYXN0ZXJDaGVja2JveCgpIDogbnVsbFwiPlxyXG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93OyBsZXQgaW5kZXggPSBpbmRleDsgbGV0IGRhdGFJbmRleCA9IGRhdGFJbmRleDtcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibXR4LWdyaWQtY2hlY2tib3gtY2VsbFwiPlxyXG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94ICpuZ0lmPVwiIShyb3dTZWxlY3Rpb25Gb3JtYXR0ZXIuaGlkZUNoZWNrYm94ICYmIHJvd1NlbGVjdGlvbkZvcm1hdHRlci5oaWRlQ2hlY2tib3gocm93LCBfZ2V0SW5kZXgoaW5kZXgsIGRhdGFJbmRleCkpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJvd1NlbGVjdGlvbkZvcm1hdHRlci5kaXNhYmxlZCAmJiByb3dTZWxlY3Rpb25Gb3JtYXR0ZXIuZGlzYWJsZWQocm93LCBfZ2V0SW5kZXgoaW5kZXgsIGRhdGFJbmRleCkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJyb3dTZWxlY3Rpb24uaXNTZWxlY3RlZChyb3cpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IF90b2dnbGVOb3JtYWxDaGVja2JveChyb3cpIDogbnVsbFwiPlxyXG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8dGQgbWF0LWZvb3Rlci1jZWxsICptYXRGb290ZXJDZWxsRGVmIGNsYXNzPVwibXR4LWdyaWQtY2hlY2tib3gtY2VsbFwiPjwvdGQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zO1wiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdGlja3ldPVwiY29sLnBpbm5lZD09PSdsZWZ0J1wiIFtzdGlja3lFbmRdPVwiY29sLnBpbm5lZD09PSdyaWdodCdcIj5cclxuICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbCB8IGNvbENsYXNzXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbWF0LXRhYmxlLXN0aWNreS1sZWZ0JzogY29sLnBpbm5lZCA9PT0gJ2xlZnQnLCAnbWF0LXRhYmxlLXN0aWNreS1yaWdodCc6IGNvbC5waW5uZWQgPT09ICdyaWdodCd9XCJcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnd2lkdGgnOiBjb2wud2lkdGgsICdsZWZ0JzogY29sLmxlZnQsICdyaWdodCc6IGNvbC5yaWdodH1cIlxyXG4gICAgICAgICAgICAgICAgW3Jlc2l6YWJsZV09XCJjb2wucmVzaXphYmxlXCJcclxuICAgICAgICAgICAgICAgIFttYXRSZXNpemFibGVNaW5XaWR0aFB4XT1cImNvbC5taW5XaWR0aFwiIFttYXRSZXNpemFibGVNYXhXaWR0aFB4XT1cImNvbC5tYXhXaWR0aFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXQtaGVhZGVyLWNlbGwtaW5uZXJcIj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJoZWFkZXJUZW1wbGF0ZSB8IGlzVGVtcGxhdGVSZWZcIiBbbmdJZkVsc2VdPVwiaGVhZGVyVHBsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KGhlYWRlclRlbXBsYXRlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbCwgY29sRGVmOiBjb2wgfVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyVHBsPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiJGFueShoZWFkZXJUZW1wbGF0ZSk/Lltjb2wuZmllbGRdIHwgaXNUZW1wbGF0ZVJlZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdJZkVsc2VdPVwiZGVmYXVsdEhlYWRlclRwbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KGhlYWRlclRlbXBsYXRlKVtjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb2wsIGNvbERlZjogY29sIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEhlYWRlclRwbD5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBbbWF0LXNvcnQtaGVhZGVyXT1cImNvbC5zb3J0UHJvcD8uaWQgfHwgY29sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNvbC5zb3J0YWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVDbGVhcl09XCJjb2wuc29ydFByb3A/LmRpc2FibGVDbGVhciA/PyBzb3J0RGlzYWJsZUNsZWFyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbYXJyb3dQb3NpdGlvbl09XCJjb2wuc29ydFByb3A/LmFycm93UG9zaXRpb24hXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbc3RhcnRdPVwiY29sLnNvcnRQcm9wPy5zdGFydCFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm10eC1ncmlkLWV4cGFuc2lvbi1wbGFjZWhvbGRlclwiICpuZ0lmPVwiY29sLnNob3dFeHBhbmRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tjb2wuaGVhZGVyIHwgdG9PYnNlcnZhYmxlIHwgYXN5bmN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwibXR4LWdyaWQtaWNvbiBtYXQtc29ydC1oZWFkZXItaWNvblwiICpuZ0lmPVwiY29sLnNvcnRhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0cHhcIiBoZWlnaHQ9XCIyNHB4XCIgZmlsbD1cImN1cnJlbnRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zLDEzSDE1VjExSDNNMyw2VjhIMjFWNk0zLDE4SDlWMTZIM1YxOFpcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGVyRXh0cmFUcGxCYXNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaGVhZGVyRXh0cmFUZW1wbGF0ZSwgY29sRGVmOiBjb2wgfVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3c7IGxldCBpbmRleCA9IGluZGV4OyBsZXQgZGF0YUluZGV4ID0gZGF0YUluZGV4O1wiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29sIHwgY29sQ2xhc3M6IHJvdzogcm93Q2hhbmdlUmVjb3JkIDpyb3dDaGFuZ2VSZWNvcmQ/LmN1cnJlbnRWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J21hdC10YWJsZS1zdGlja3ktbGVmdCc6IGNvbC5waW5uZWQgPT09ICdsZWZ0JywgJ21hdC10YWJsZS1zdGlja3ktcmlnaHQnOiBjb2wucGlubmVkID09PSAncmlnaHQnfVwiXHJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J3dpZHRoJzogY29sLndpZHRoLCAnbGVmdCc6IGNvbC5sZWZ0LCAncmlnaHQnOiBjb2wucmlnaHR9XCJcclxuICAgICAgICAgICAgICAgIG10eC1ncmlkLXNlbGVjdGFibGUtY2VsbCAoY2VsbFNlbGVjdGlvbkNoYW5nZSk9XCJfc2VsZWN0Q2VsbCgkZXZlbnQsIHJvdywgY29sKVwiPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJjZWxsVGVtcGxhdGUgfCBpc1RlbXBsYXRlUmVmXCIgW25nSWZFbHNlXT1cImNlbGxUcGxcIj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KGNlbGxUZW1wbGF0ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LCByb3dEYXRhOiByb3csIGluZGV4OiBfZ2V0SW5kZXgoaW5kZXgsIGRhdGFJbmRleCksIGNvbERlZjogY29sIH1cIj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2NlbGxUcGw+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiJGFueShjZWxsVGVtcGxhdGUpPy5bY29sLmZpZWxkXSB8IGlzVGVtcGxhdGVSZWZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0lmRWxzZV09XCJjb2xEZWZDZWxsVHBsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCIkYW55KGNlbGxUZW1wbGF0ZSlbY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvdywgcm93RGF0YTogcm93LCBpbmRleDogX2dldEluZGV4KGluZGV4LCBkYXRhSW5kZXgpLCBjb2xEZWY6IGNvbCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNjb2xEZWZDZWxsVHBsPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImNvbC5jZWxsVGVtcGxhdGVcIiBbbmdJZkVsc2VdPVwiZGVmYXVsdENlbGxUcGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbC5jZWxsVGVtcGxhdGUhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvdywgcm93RGF0YTogcm93LCBpbmRleDogX2dldEluZGV4KGluZGV4LCBkYXRhSW5kZXgpLCBjb2xEZWY6IGNvbCB9XCI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Q2VsbFRwbD5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtdHgtZ3JpZC1yb3ctZXhwYW5kLWJ1dHRvblwiICpuZ0lmPVwiY29sLnNob3dFeHBhbmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b24gbXR4LWdyaWQtZXhwYW5zaW9uLXRvZ2dsZSB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhvcGVuZWQpXT1cImV4cGFuc2lvblJvd1N0YXRlc1tkYXRhSW5kZXhdLmV4cGFuZGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHRvZ2dsZUNoYW5nZSk9XCJfb25FeHBhbnNpb25DaGFuZ2UoJGV2ZW50LCByb3csIGNvbCwgZGF0YUluZGV4KTtcIj5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cIm10eC1ncmlkLWljb24gbXR4LWdyaWQtcm93LWV4cGFuZC1pY29uXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyNHB4XCIgaGVpZ2h0PVwiMjRweFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBmb2N1c2FibGU9XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAgNkw4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6XCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgIDxtdHgtZ3JpZC1jZWxsIFtyb3dEYXRhXT1cInJvd1wiIFtjb2xEZWZdPVwiY29sXCIgW3BsYWNlaG9sZGVyXT1cImVtcHR5VmFsdWVQbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocm93RGF0YUNoYW5nZSk9XCJfb25Sb3dEYXRhQ2hhbmdlKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDwvbXR4LWdyaWQtY2VsbD5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydtYXQtdGFibGUtc3RpY2t5LWxlZnQnOiBjb2wucGlubmVkID09PSAnbGVmdCcsICdtYXQtdGFibGUtc3RpY2t5LXJpZ2h0JzogY29sLnBpbm5lZCA9PT0gJ3JpZ2h0J31cIlxyXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyd3aWR0aCc6IGNvbC53aWR0aCwgJ2xlZnQnOiBjb2wubGVmdCwgJ3JpZ2h0JzogY29sLnJpZ2h0fVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXR4LWdyaWQtZXhwYW5zaW9uLXBsYWNlaG9sZGVyXCIgKm5nSWY9XCJjb2wuc2hvd0V4cGFuZFwiPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cInN1bW1hcnlUZW1wbGF0ZSB8IGlzVGVtcGxhdGVSZWZcIiBbbmdJZkVsc2VdPVwic3VtbWFyeVRwbFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIiRhbnkoc3VtbWFyeVRlbXBsYXRlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb2wsIGNvbERlZjogY29sLCBkYXRhOiBkYXRhIH1cIj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3N1bW1hcnlUcGw+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiJGFueShzdW1tYXJ5VGVtcGxhdGUpPy5bY29sLmZpZWxkXSB8IGlzVGVtcGxhdGVSZWZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0lmRWxzZV09XCJkZWZhdWx0U3VtbWFyeVRwbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiJGFueShzdW1tYXJ5VGVtcGxhdGUpW2NvbC5maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBfZ2V0Q29sRGF0YShkYXRhLCBjb2wpLCBjb2xEYXRhOiBfZ2V0Q29sRGF0YShkYXRhLCBjb2wpLCBjb2xEZWY6IGNvbCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0U3VtbWFyeVRwbD5cclxuICAgICAgICAgICAgICAgIDxtdHgtZ3JpZC1jZWxsIFtzdW1tYXJ5XT1cInRydWVcIiBbZGF0YV09XCJkYXRhXCIgW2NvbERlZl09XCJjb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImVtcHR5VmFsdWVQbGFjZWhvbGRlclwiPlxyXG4gICAgICAgICAgICAgICAgPC9tdHgtZ3JpZC1jZWxsPlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cInVzZUNvbnRlbnRIZWFkZXJSb3dUZW1wbGF0ZVwiIFtuZ0lmRWxzZV09XCJkZWZhdWx0SGVhZGVyUm93VHBsXCI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRIZWFkZXJSb3dUcGw+XHJcbiAgICAgICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnM7IHN0aWNreTogdHJ1ZVwiPjwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cInVzZUNvbnRlbnRSb3dUZW1wbGF0ZVwiIFtuZ0lmRWxzZV09XCJkZWZhdWx0Um93VHBsXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRSb3dUcGw+XHJcbiAgICAgICAgICA8dHIgbWF0LXJvd1xyXG4gICAgICAgICAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBsZXQgaW5kZXggPSBpbmRleDsgbGV0IGRhdGFJbmRleCA9IGRhdGFJbmRleDsgY29sdW1uczogZGlzcGxheWVkQ29sdW1ucztcIlxyXG4gICAgICAgICAgICAgIFtjbGFzc109XCJyb3cgfCByb3dDbGFzczogaW5kZXg6IGRhdGFJbmRleDogcm93Q2xhc3NGb3JtYXR0ZXJcIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWQnOiByb3dTZWxlY3Rpb24uaXNTZWxlY3RlZChyb3cpfVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIl9zZWxlY3RSb3coJGV2ZW50LCByb3csIF9nZXRJbmRleChpbmRleCwgZGF0YUluZGV4KSlcIj5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIl93aGV0aGVyU2hvd1N1bW1hcnlcIj5cclxuICAgICAgICAgIDx0ciBtYXQtZm9vdGVyLXJvdyAqbWF0Rm9vdGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uczsgc3RpY2t5OiB0cnVlXCI+PC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJ1c2VDb250ZW50Rm9vdGVyUm93VGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXhwYW5kYWJsZVwiPlxyXG4gICAgICAgICAgPCEtLSBFeHBhbmRlZCBDb250ZW50IENvbHVtbiAtIFRoZSBleHBhbmRhYmxlIHJvdyBpcyBtYWRlIHVwIG9mIHRoaXMgb25lIGNvbHVtbiB0aGF0IHNwYW5zIGFjcm9zcyBhbGwgY29sdW1ucyAtLT5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiTXR4R3JpZEV4cGFuc2lvbkNvbHVtbkRlZlwiPlxyXG4gICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93OyBsZXQgZGF0YUluZGV4ID0gZGF0YUluZGV4XCJcclxuICAgICAgICAgICAgICAgIFthdHRyLmNvbHNwYW5dPVwiZGlzcGxheWVkQ29sdW1ucy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXR4LWdyaWQtZXhwYW5zaW9uLWRldGFpbFwiXHJcbiAgICAgICAgICAgICAgICAgICBbQGV4cGFuc2lvbl09XCJleHBhbnNpb25Sb3dTdGF0ZXNbZGF0YUluZGV4XS5leHBhbmRlZCA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImV4cGFuc2lvblRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvdywgcm93RGF0YTogcm93LCBpbmRleDogZGF0YUluZGV4LCBleHBhbmRlZDogZXhwYW5zaW9uUm93U3RhdGVzW2RhdGFJbmRleF0uZXhwYW5kZWQgfVwiPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDx0ciBtYXQtcm93XHJcbiAgICAgICAgICAgICAgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IFsnTXR4R3JpZEV4cGFuc2lvbkNvbHVtbkRlZiddOyBsZXQgZGF0YUluZGV4ID0gZGF0YUluZGV4XCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJbJ210eC1ncmlkLWV4cGFuc2lvbicsIGV4cGFuc2lvblJvd1N0YXRlc1tkYXRhSW5kZXhdLmV4cGFuZGVkID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnXVwiPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC90YWJsZT5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gTm8gcmVzdWx0IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cIm10eC1ncmlkLW5vLXJlc3VsdFwiICpuZ0lmPVwiX2hhc05vUmVzdWx0XCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJub1Jlc3VsdFRlbXBsYXRlXCIgW25nSWZFbHNlXT1cImRlZmF1bHROb1Jlc3VsdFRwbFwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJub1Jlc3VsdFRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Tm9SZXN1bHRUcGw+e3tub1Jlc3VsdFRleHR9fTwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBUb29sIHNpZGViYXIgLS0+XHJcbiAgPGRpdiBjbGFzcz1cIm10eC1ncmlkLXNpZGViYXJcIiAqbmdJZj1cInNob3dTaWRlYmFyXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwic2lkZWJhclRlbXBsYXRlXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJzaWRlYmFyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwibXR4LWdyaWQtZm9vdGVyXCI+XHJcbiAgPCEtLSBTdGF0dXMgQmFyIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJtdHgtZ3JpZC1zdGF0dXNiYXJcIiAqbmdJZj1cInNob3dTdGF0dXNiYXJcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJzdGF0dXNiYXJUZW1wbGF0ZVwiPlxyXG4gICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RhdHVzYmFyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBQYWdpbmF0aW9uIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJtdHgtZ3JpZC1wYWdpbmF0aW9uXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwicGFnaW5hdGlvblRlbXBsYXRlXCIgW25nSWZFbHNlXT1cImRlZmF1bHRQYWdpbmF0aW9uVGVtcGxhdGVcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBhZ2luYXRpb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0UGFnaW5hdGlvblRlbXBsYXRlPlxyXG4gICAgICA8bWF0LXBhZ2luYXRvciBbY2xhc3MubWF0LXBhZ2luYXRvci1oaWRkZW5dPVwiIXNob3dQYWdpbmF0b3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbc2hvd0ZpcnN0TGFzdEJ1dHRvbnNdPVwic2hvd0ZpcnN0TGFzdEJ1dHRvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbbGVuZ3RoXT1cImxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtwYWdlSW5kZXhdPVwicGFnZUluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdlU2l6ZU9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbaGlkZVBhZ2VTaXplXT1cImhpZGVQYWdlU2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIChwYWdlKT1cIl9vblBhZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwYWdlRGlzYWJsZWRcIj5cclxuICAgICAgPC9tYXQtcGFnaW5hdG9yPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48IS0tIEhlYWRlciB0ZW1wbGF0ZSBmb3IgZXh0cmEgY29udGVudCAtLT5cclxuPG5nLXRlbXBsYXRlICNoZWFkZXJFeHRyYVRwbEJhc2UgbGV0LWhlYWRlckV4dHJhVGVtcGxhdGUgbGV0LWNvbD1cImNvbERlZlwiPlxyXG4gIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJoZWFkZXJFeHRyYVRlbXBsYXRlIHwgaXNUZW1wbGF0ZVJlZlwiIFtuZ0lmRWxzZV09XCJoZWFkZXJFeHRyYVRwbFwiPlxyXG4gICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRlckV4dHJhVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29sLCBjb2xEZWY6IGNvbCB9XCI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbiAgPG5nLXRlbXBsYXRlICNoZWFkZXJFeHRyYVRwbD5cclxuICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCIkYW55KGhlYWRlckV4dHJhVGVtcGxhdGUpPy5bY29sLmZpZWxkXSB8IGlzVGVtcGxhdGVSZWZcIj5cclxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRlckV4dHJhVGVtcGxhdGVbY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbCwgY29sRGVmOiBjb2wgfVwiPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
@@ -23,7 +23,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
23
23
  }] });
24
24
  export class MtxGridRowClassPipe {
25
25
  transform(rowData, index, dataIndex, rowClassFormatter) {
26
- const rowIndex = typeof index === 'undefined' ? dataIndex : index;
26
+ const rowIndex = index === undefined ? dataIndex : index;
27
27
  const classList = rowIndex % 2 === 1 ? ['mat-row-odd'] : [];
28
28
  if (rowClassFormatter) {
29
29
  for (const key of Object.keys(rowClassFormatter)) {
@@ -105,4 +105,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
105
105
  name: 'cellSummary',
106
106
  }]
107
107
  }], ctorParameters: function () { return [{ type: i1.MtxGridService }]; } });
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9ncmlkL2dyaWQucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXdCLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBT3BDLE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsU0FBUyxDQUNQLE1BQXFCLEVBQ3JCLE9BQTZCLEVBQzdCLGVBQW1ELEVBQ25ELFlBQWtCO1FBRWxCLElBQUksT0FBTyxNQUFNLENBQUMsS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUNwQyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDckI7YUFBTSxJQUFJLE9BQU8sTUFBTSxDQUFDLEtBQUssS0FBSyxVQUFVLEVBQUU7WUFDN0MsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztTQUN0QztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs7bUlBYlUsbUJBQW1CO2lJQUFuQixtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFIL0IsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsVUFBVTtpQkFDakI7O0FBb0JELE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsU0FBUyxDQUNQLE9BQTRCLEVBQzVCLEtBQWEsRUFDYixTQUFpQixFQUNqQixpQkFBNEM7UUFFNUMsTUFBTSxRQUFRLEdBQUcsT0FBTyxLQUFLLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNsRSxNQUFNLFNBQVMsR0FBYSxRQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3RFLElBQUksaUJBQWlCLEVBQUU7WUFDckIsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUU7Z0JBQ2hELElBQUksaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxFQUFFO29CQUM3QyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNyQjthQUNGO1NBQ0Y7UUFDRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQzs7bUlBakJVLG1CQUFtQjtpSUFBbkIsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBSC9CLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFVBQVU7aUJBQ2pCOztBQXdCRCxNQUFNLE9BQU8sNEJBQTRCO0lBQ3ZDLFNBQVMsQ0FBQyxHQUF3QjtRQUNoQyxJQUFJLE9BQU8sR0FBRyxDQUFDLE9BQU8sS0FBSyxRQUFRLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNoRSxPQUFPO2dCQUNMLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTzthQUNyQixDQUFDO1NBQ0g7YUFBTTtZQUNMLE9BQU8sR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQztTQUN2QztJQUNILENBQUM7OzRJQVRVLDRCQUE0QjswSUFBNUIsNEJBQTRCOzJGQUE1Qiw0QkFBNEI7a0JBSHhDLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLG1CQUFtQjtpQkFDMUI7O0FBZ0JELE1BQU0sT0FBTyw0QkFBNEI7SUFDdkMsU0FBUyxDQUNQLEdBQXdCLEVBQ3hCLE9BQTRCLEVBQzVCLGVBQW1ELEVBQ25ELFlBQWtCO1FBRWxCLElBQUksT0FBTyxHQUFHLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRTtZQUNyQyxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUM7U0FDckI7YUFBTSxJQUFJLE9BQU8sR0FBRyxDQUFDLFFBQVEsS0FBSyxVQUFVLEVBQUU7WUFDN0MsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzlCO2FBQU07WUFDTCxPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQzs7NElBZFUsNEJBQTRCOzBJQUE1Qiw0QkFBNEI7MkZBQTVCLDRCQUE0QjtrQkFIeEMsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsbUJBQW1CO2lCQUMxQjs7QUFxQkQsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxZQUFvQixPQUF1QjtRQUF2QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtJQUFHLENBQUM7SUFDL0MsU0FBUyxDQUFDLElBQVcsRUFBRSxNQUFxQjtRQUMxQyxJQUFJLE9BQU8sTUFBTSxDQUFDLE9BQU8sS0FBSyxRQUFRLEVBQUU7WUFDdEMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO1NBQ3ZCO2FBQU0sSUFBSSxPQUFPLE1BQU0sQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFO1lBQy9DLE9BQVEsTUFBTSxDQUFDLE9BQXdELENBQ3JFLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFDckMsTUFBTSxDQUNQLENBQUM7U0FDSDtJQUNILENBQUM7O3NJQVhVLHNCQUFzQjtvSUFBdEIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBSGxDLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGFBQWE7aUJBQ3BCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS2V5VmFsdWVDaGFuZ2VSZWNvcmQsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTXR4R3JpZFNlcnZpY2UgfSBmcm9tICcuL2dyaWQuc2VydmljZSc7XG5pbXBvcnQgeyBNdHhHcmlkQ29sdW1uLCBNdHhHcmlkQ29sdW1uQnV0dG9uLCBNdHhHcmlkUm93Q2xhc3NGb3JtYXR0ZXIgfSBmcm9tICcuL2dyaWQuaW50ZXJmYWNlJztcblxuQFBpcGUoe1xuICBuYW1lOiAnY29sQ2xhc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBNdHhHcmlkQ29sQ2xhc3NQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybShcbiAgICBjb2xEZWY6IE10eEdyaWRDb2x1bW4sXG4gICAgcm93RGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgcm93Q2hhbmdlUmVjb3JkPzogS2V5VmFsdWVDaGFuZ2VSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIGN1cnJlbnRWYWx1ZT86IGFueVxuICApOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgY29sRGVmLmNsYXNzID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGNvbERlZi5jbGFzcztcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBjb2xEZWYuY2xhc3MgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBjb2xEZWYuY2xhc3Mocm93RGF0YSwgY29sRGVmKTtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3Jvd0NsYXNzJyxcbn0pXG5leHBvcnQgY2xhc3MgTXR4R3JpZFJvd0NsYXNzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oXG4gICAgcm93RGF0YTogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIGRhdGFJbmRleDogbnVtYmVyLFxuICAgIHJvd0NsYXNzRm9ybWF0dGVyPzogTXR4R3JpZFJvd0NsYXNzRm9ybWF0dGVyXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3Qgcm93SW5kZXggPSB0eXBlb2YgaW5kZXggPT09ICd1bmRlZmluZWQnID8gZGF0YUluZGV4IDogaW5kZXg7XG4gICAgY29uc3QgY2xhc3NMaXN0OiBzdHJpbmdbXSA9IHJvd0luZGV4ICUgMiA9PT0gMSA/IFsnbWF0LXJvdy1vZGQnXSA6IFtdO1xuICAgIGlmIChyb3dDbGFzc0Zvcm1hdHRlcikge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocm93Q2xhc3NGb3JtYXR0ZXIpKSB7XG4gICAgICAgIGlmIChyb3dDbGFzc0Zvcm1hdHRlcltrZXldKHJvd0RhdGEsIHJvd0luZGV4KSkge1xuICAgICAgICAgIGNsYXNzTGlzdC5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNsYXNzTGlzdC5qb2luKCcgJyk7XG4gIH1cbn1cblxuQFBpcGUoe1xuICBuYW1lOiAnY2VsbEFjdGlvblRvb2x0aXAnLFxufSlcbmV4cG9ydCBjbGFzcyBNdHhHcmlkQ2VsbEFjdGlvblRvb2x0aXBQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybShidG46IE10eEdyaWRDb2x1bW5CdXR0b24pIHtcbiAgICBpZiAodHlwZW9mIGJ0bi50b29sdGlwID09PSAnc3RyaW5nJyB8fCBpc09ic2VydmFibGUoYnRuLnRvb2x0aXApKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtZXNzYWdlOiBidG4udG9vbHRpcCxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBidG4udG9vbHRpcCB8fCB7IG1lc3NhZ2U6ICcnIH07XG4gICAgfVxuICB9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2NlbGxBY3Rpb25EaXNhYmxlJyxcbn0pXG5leHBvcnQgY2xhc3MgTXR4R3JpZENlbGxBY3Rpb25EaXNhYmxlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oXG4gICAgYnRuOiBNdHhHcmlkQ29sdW1uQnV0dG9uLFxuICAgIHJvd0RhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgcm93Q2hhbmdlUmVjb3JkPzogS2V5VmFsdWVDaGFuZ2VSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIGN1cnJlbnRWYWx1ZT86IGFueVxuICApIHtcbiAgICBpZiAodHlwZW9mIGJ0bi5kaXNhYmxlZCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gYnRuLmRpc2FibGVkO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGJ0bi5kaXNhYmxlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGJ0bi5kaXNhYmxlZChyb3dEYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdjZWxsU3VtbWFyeScsXG59KVxuZXhwb3J0IGNsYXNzIE10eEdyaWRDZWxsU3VtbWFyeVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBncmlkU3J2OiBNdHhHcmlkU2VydmljZSkge31cbiAgdHJhbnNmb3JtKGRhdGE6IGFueVtdLCBjb2xEZWY6IE10eEdyaWRDb2x1bW4pIHtcbiAgICBpZiAodHlwZW9mIGNvbERlZi5zdW1tYXJ5ID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGNvbERlZi5zdW1tYXJ5O1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGNvbERlZi5zdW1tYXJ5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gKGNvbERlZi5zdW1tYXJ5IGFzIChkYXRhOiBhbnlbXSwgY29sRGVmPzogTXR4R3JpZENvbHVtbikgPT4gYW55KShcbiAgICAgICAgdGhpcy5ncmlkU3J2LmdldENvbERhdGEoZGF0YSwgY29sRGVmKSxcbiAgICAgICAgY29sRGVmXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9ncmlkL2dyaWQucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXdCLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBT3BDLE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsU0FBUyxDQUNQLE1BQXFCLEVBQ3JCLE9BQTZCLEVBQzdCLGVBQW1ELEVBQ25ELFlBQWtCO1FBRWxCLElBQUksT0FBTyxNQUFNLENBQUMsS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUNwQyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDckI7YUFBTSxJQUFJLE9BQU8sTUFBTSxDQUFDLEtBQUssS0FBSyxVQUFVLEVBQUU7WUFDN0MsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztTQUN0QztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs7bUlBYlUsbUJBQW1CO2lJQUFuQixtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFIL0IsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsVUFBVTtpQkFDakI7O0FBb0JELE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsU0FBUyxDQUNQLE9BQTRCLEVBQzVCLEtBQXlCLEVBQ3pCLFNBQWlCLEVBQ2pCLGlCQUE0QztRQUU1QyxNQUFNLFFBQVEsR0FBRyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUN6RCxNQUFNLFNBQVMsR0FBYSxRQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3RFLElBQUksaUJBQWlCLEVBQUU7WUFDckIsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUU7Z0JBQ2hELElBQUksaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxFQUFFO29CQUM3QyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNyQjthQUNGO1NBQ0Y7UUFDRCxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQzs7bUlBakJVLG1CQUFtQjtpSUFBbkIsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBSC9CLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFVBQVU7aUJBQ2pCOztBQXdCRCxNQUFNLE9BQU8sNEJBQTRCO0lBQ3ZDLFNBQVMsQ0FBQyxHQUF3QjtRQUNoQyxJQUFJLE9BQU8sR0FBRyxDQUFDLE9BQU8sS0FBSyxRQUFRLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNoRSxPQUFPO2dCQUNMLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTzthQUNyQixDQUFDO1NBQ0g7YUFBTTtZQUNMLE9BQU8sR0FBRyxDQUFDLE9BQU8sSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQztTQUN2QztJQUNILENBQUM7OzRJQVRVLDRCQUE0QjswSUFBNUIsNEJBQTRCOzJGQUE1Qiw0QkFBNEI7a0JBSHhDLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLG1CQUFtQjtpQkFDMUI7O0FBZ0JELE1BQU0sT0FBTyw0QkFBNEI7SUFDdkMsU0FBUyxDQUNQLEdBQXdCLEVBQ3hCLE9BQTRCLEVBQzVCLGVBQW1ELEVBQ25ELFlBQWtCO1FBRWxCLElBQUksT0FBTyxHQUFHLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRTtZQUNyQyxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUM7U0FDckI7YUFBTSxJQUFJLE9BQU8sR0FBRyxDQUFDLFFBQVEsS0FBSyxVQUFVLEVBQUU7WUFDN0MsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzlCO2FBQU07WUFDTCxPQUFPLEtBQUssQ0FBQztTQUNkO0lBQ0gsQ0FBQzs7NElBZFUsNEJBQTRCOzBJQUE1Qiw0QkFBNEI7MkZBQTVCLDRCQUE0QjtrQkFIeEMsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsbUJBQW1CO2lCQUMxQjs7QUFxQkQsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxZQUFvQixPQUF1QjtRQUF2QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtJQUFHLENBQUM7SUFDL0MsU0FBUyxDQUFDLElBQVcsRUFBRSxNQUFxQjtRQUMxQyxJQUFJLE9BQU8sTUFBTSxDQUFDLE9BQU8sS0FBSyxRQUFRLEVBQUU7WUFDdEMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO1NBQ3ZCO2FBQU0sSUFBSSxPQUFPLE1BQU0sQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFO1lBQy9DLE9BQVEsTUFBTSxDQUFDLE9BQXdELENBQ3JFLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFDckMsTUFBTSxDQUNQLENBQUM7U0FDSDtJQUNILENBQUM7O3NJQVhVLHNCQUFzQjtvSUFBdEIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBSGxDLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLGFBQWE7aUJBQ3BCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS2V5VmFsdWVDaGFuZ2VSZWNvcmQsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTXR4R3JpZENvbHVtbiwgTXR4R3JpZENvbHVtbkJ1dHRvbiwgTXR4R3JpZFJvd0NsYXNzRm9ybWF0dGVyIH0gZnJvbSAnLi9ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBNdHhHcmlkU2VydmljZSB9IGZyb20gJy4vZ3JpZC5zZXJ2aWNlJztcblxuQFBpcGUoe1xuICBuYW1lOiAnY29sQ2xhc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBNdHhHcmlkQ29sQ2xhc3NQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybShcbiAgICBjb2xEZWY6IE10eEdyaWRDb2x1bW4sXG4gICAgcm93RGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgcm93Q2hhbmdlUmVjb3JkPzogS2V5VmFsdWVDaGFuZ2VSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIGN1cnJlbnRWYWx1ZT86IGFueVxuICApOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgY29sRGVmLmNsYXNzID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGNvbERlZi5jbGFzcztcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBjb2xEZWYuY2xhc3MgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBjb2xEZWYuY2xhc3Mocm93RGF0YSwgY29sRGVmKTtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3Jvd0NsYXNzJyxcbn0pXG5leHBvcnQgY2xhc3MgTXR4R3JpZFJvd0NsYXNzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oXG4gICAgcm93RGF0YTogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICBpbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICAgIGRhdGFJbmRleDogbnVtYmVyLFxuICAgIHJvd0NsYXNzRm9ybWF0dGVyPzogTXR4R3JpZFJvd0NsYXNzRm9ybWF0dGVyXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3Qgcm93SW5kZXggPSBpbmRleCA9PT0gdW5kZWZpbmVkID8gZGF0YUluZGV4IDogaW5kZXg7XG4gICAgY29uc3QgY2xhc3NMaXN0OiBzdHJpbmdbXSA9IHJvd0luZGV4ICUgMiA9PT0gMSA/IFsnbWF0LXJvdy1vZGQnXSA6IFtdO1xuICAgIGlmIChyb3dDbGFzc0Zvcm1hdHRlcikge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocm93Q2xhc3NGb3JtYXR0ZXIpKSB7XG4gICAgICAgIGlmIChyb3dDbGFzc0Zvcm1hdHRlcltrZXldKHJvd0RhdGEsIHJvd0luZGV4KSkge1xuICAgICAgICAgIGNsYXNzTGlzdC5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNsYXNzTGlzdC5qb2luKCcgJyk7XG4gIH1cbn1cblxuQFBpcGUoe1xuICBuYW1lOiAnY2VsbEFjdGlvblRvb2x0aXAnLFxufSlcbmV4cG9ydCBjbGFzcyBNdHhHcmlkQ2VsbEFjdGlvblRvb2x0aXBQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybShidG46IE10eEdyaWRDb2x1bW5CdXR0b24pIHtcbiAgICBpZiAodHlwZW9mIGJ0bi50b29sdGlwID09PSAnc3RyaW5nJyB8fCBpc09ic2VydmFibGUoYnRuLnRvb2x0aXApKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtZXNzYWdlOiBidG4udG9vbHRpcCxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBidG4udG9vbHRpcCB8fCB7IG1lc3NhZ2U6ICcnIH07XG4gICAgfVxuICB9XG59XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2NlbGxBY3Rpb25EaXNhYmxlJyxcbn0pXG5leHBvcnQgY2xhc3MgTXR4R3JpZENlbGxBY3Rpb25EaXNhYmxlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oXG4gICAgYnRuOiBNdHhHcmlkQ29sdW1uQnV0dG9uLFxuICAgIHJvd0RhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgcm93Q2hhbmdlUmVjb3JkPzogS2V5VmFsdWVDaGFuZ2VSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIGN1cnJlbnRWYWx1ZT86IGFueVxuICApIHtcbiAgICBpZiAodHlwZW9mIGJ0bi5kaXNhYmxlZCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gYnRuLmRpc2FibGVkO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGJ0bi5kaXNhYmxlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIGJ0bi5kaXNhYmxlZChyb3dEYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG5AUGlwZSh7XG4gIG5hbWU6ICdjZWxsU3VtbWFyeScsXG59KVxuZXhwb3J0IGNsYXNzIE10eEdyaWRDZWxsU3VtbWFyeVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBncmlkU3J2OiBNdHhHcmlkU2VydmljZSkge31cbiAgdHJhbnNmb3JtKGRhdGE6IGFueVtdLCBjb2xEZWY6IE10eEdyaWRDb2x1bW4pIHtcbiAgICBpZiAodHlwZW9mIGNvbERlZi5zdW1tYXJ5ID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGNvbERlZi5zdW1tYXJ5O1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGNvbERlZi5zdW1tYXJ5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gKGNvbERlZi5zdW1tYXJ5IGFzIChkYXRhOiBhbnlbXSwgY29sRGVmPzogTXR4R3JpZENvbHVtbikgPT4gYW55KShcbiAgICAgICAgdGhpcy5ncmlkU3J2LmdldENvbERhdGEoZGF0YSwgY29sRGVmKSxcbiAgICAgICAgY29sRGVmXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19