@churchillliving/se-ui-toolkit 6.53.832 → 6.53.833

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.
@@ -353,6 +353,11 @@ export class SeGlobalFilterComponent {
353
353
  }
354
354
  localStorage.setItem('applyFilter', JSON.stringify(true));
355
355
  this.gridService.applyFilterEvent = check;
356
+ const globalFilters = this.globalFilters.filter((x) => x.field);
357
+ const index = globalFilters.findIndex((filter) => filter.field && filter.type === GridFilterControlType.DATE_RANGE);
358
+ if (index > -1) {
359
+ globalFilters.splice(index, 1);
360
+ }
356
361
  this.filtersApplied.emit(this.globalFilters);
357
362
  // let test=nextValue
358
363
  //filter.value=nextValue
@@ -563,4 +568,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImpor
563
568
  }], activeTestMode: [{
564
569
  type: Input
565
570
  }] } });
566
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLWZpbHRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2UtdWktdG9vbGtpdC9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkL2dsb2JhbC1maWx0ZXJzL2dsb2JhbC1maWx0ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlLXVpLXRvb2xraXQvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC9nbG9iYWwtZmlsdGVycy9nbG9iYWwtZmlsdGVycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEgsT0FBTyxFQUVMLHFCQUFxQixFQUNyQixlQUFlLEVBRWYsU0FBUyxFQUNULGdCQUFnQixHQUVqQixNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBU3BDLE1BQU0sT0FBTyx1QkFBdUI7SUFRbEMsSUFBYSxjQUFjLENBQUUsR0FBTyxJQUFJLElBQUcsR0FBRyxLQUFLLElBQUksRUFBRTtRQUFFLFFBQVEsQ0FBQTtLQUFFLENBQUEsQ0FBQztJQWN0RSxZQUNTLFFBQWtCLEVBQ04sR0FBcUIsRUFDckIsTUFBMkIsRUFDdEMsV0FBd0IsRUFDekIsYUFBNEIsRUFDM0IsWUFBMEIsRUFDMUIsRUFBYztRQU5mLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDTixRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUN0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN6QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixPQUFFLEdBQUYsRUFBRSxDQUFZO1FB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QVMsRUFBRTtZQUNiLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNuQjtJQUNILENBQUM7aUlBcmxCVSx1QkFBdUI7cUhBQXZCLHVCQUF1Qiw0Y0NwQnBDLDIxdUJBOGdCQTs7MkZEMWZhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxtQkFBbUI7OzBCQTRCMUIsUUFBUTs7MEJBQ1IsUUFBUTtzSkF4QmlCLFVBQVU7c0JBQXJDLFNBQVM7dUJBQUMsZUFBZTtnQkFDakIsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNNLGNBQWM7c0JBQTFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEeW5hbWljRGlhbG9nUmVmLCBEeW5hbWljRGlhbG9nQ29uZmlnLCBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcbmltcG9ydCB7XG4gIElHbG9iYWxGaWx0ZXIsXG4gIEdyaWRGaWx0ZXJDb250cm9sVHlwZSxcbiAgRUdyaWRDb2x1bW5UeXBlLFxuICBhZGRHbG9iYWxGaWx0ZXIsXG4gIEVEYXlSYW5nZSxcbiAgRUZpbHRlclZhbGlkYXRvcixcbiAgSUdyaWRVcGRhdGUsXG59IGZyb20gJy4uLy4uLy4uL21vZGVscy9ncmlkLm1vZGVsJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FsZXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgR3JpZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9ncmlkLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZS1nbG9iYWwtZmlsdGVycycsXG4gIHRlbXBsYXRlVXJsOiAnLi9nbG9iYWwtZmlsdGVycy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dsb2JhbC1maWx0ZXJzLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFNlR2xvYmFsRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQFZpZXdDaGlsZCgncmFuZ2VDYWxlbmRhcicpIGRhdGVQaWNrZXI6IGFueTtcbiAgQElucHV0KCkgZ2xvYmFsRmlsdGVyczogSUdsb2JhbEZpbHRlcltdID0gW107XG4gIEBJbnB1dCgpIHNlYXJjaEdsb2JhbEZpbHRlckJ0bjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBjbGVhckdsb2JhbEZpbHRlckJ0bjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBncmlkVXBkYXRlOiBib29sZWFuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBmaWx0ZXJzQXBwbGllZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSB1cGRhdGVWYWx1ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIHNldCBhY3RpdmVUZXN0TW9kZSAodmFsOmFueSkgeyBpZih2YWwgPT09IHRydWUpIHsgZGVidWdnZXIgfX1cblxuICBwdWJsaWMgZml0ZXJUeXBlcyA9IEdyaWRGaWx0ZXJDb250cm9sVHlwZTtcbiAgcHVibGljIGNvbHVtblR5cGUgPSBFR3JpZENvbHVtblR5cGU7XG4gIHB1YmxpYyBzaG93RGlhbG9nOiBib29sZWFuID0gZmFsc2U7XG4gIGRhdGVSYW5nZVZhbHVlIDogYW55O1xuICBwdWJsaWMgc3RhcnREYXRlOiBEYXRlO1xuICBwdWJsaWMgZW5kRGF0ZTogRGF0ZTtcblxuICBzaG93SW5wdXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZmlsdGVyOiBhbnkgPSAnJztcbiAgaGlkZUNsZWFyRmlsdGVyQnRuOiBib29sZWFuID0gdHJ1ZTtcbiAgY2FsZW5kYXJGb3JtYXQ6c3RyaW5nID0gJ21tL2RkL3l5JztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGF0ZXBpcGU6IERhdGVQaXBlLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyByZWY6IER5bmFtaWNEaWFsb2dSZWYsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGNvbmZpZzogRHluYW1pY0RpYWxvZ0NvbmZpZyxcbiAgICBwcml2YXRlIGdyaWRTZXJ2aWNlOiBHcmlkU2VydmljZSxcbiAgICBwdWJsaWMgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICkgeyB9XG5cbiAgLyoqXG4gICAqIEFzc2lnbm1lbnQgb2Ygc2VsZWN0ZWQgY29sdW1ucyBvbiBwYWdlIGxvYWRcbiAgICovXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmKHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmRhdGEpe1xuICAgICAgdGhpcy5zaG93RGlhbG9nID0gdGhpcy5jb25maWcuZGF0YS5vcGVuRGlhbG9nO1xuICAgICAgaWYodGhpcy5jb25maWcuZGF0YS5nbG9iYWxGaWx0ZXJzKXtcbiAgICAgICAgdGhpcy5nbG9iYWxGaWx0ZXJzID0gdGhpcy5jb25maWc/LmRhdGEuZ2xvYmFsRmlsdGVycyBhcyBJR2xvYmFsRmlsdGVyW107XG4gICAgICB9XG4gICAgIFxuICAgICAgLy8gc2V0IEJ5IERlZnVhbHQgQ2FsZW5kYXIgUmFuZ2VcbiAgICAgIHRoaXMuc2V0RGVmdWFsdENhbGVuZGFyUmFuZ2UoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIHNldERhdGVSYW5nZUZpbHRlclZhbHVlKGRhdGVSYW5nZSl7XG4gICAgaWYoZGF0ZVJhbmdlPy52YWx1ZT8ubGVuZ3RoID4gMSl7XG4gICAgICBkYXRlUmFuZ2UudmFsdWVbMF0gPSBuZXcgRGF0ZShkYXRlUmFuZ2UudmFsdWVbMF0pO1xuICAgICAgZGF0ZVJhbmdlLnZhbHVlWzFdID0gbmV3IERhdGUoZGF0ZVJhbmdlLnZhbHVlWzFdKTtcbiAgICAgIHRoaXMuc2VsZWN0RGF0ZShkYXRlUmFuZ2UsIGZhbHNlKTtcbiAgICB9ZWxzZSB7XG4gICAgICBpZih0aGlzLmRhdGVSYW5nZVZhbHVlKXtcbiAgICAgICAgbGV0IGRhdGVSYW5nZVZhbHVlID0gdGhpcy5kYXRlUmFuZ2VWYWx1ZT8uaW5jbHVkZXMoJy0nKSA/IHRoaXMuZGF0ZVJhbmdlVmFsdWU/LnNwbGl0KCctJykgOiAnJztcbiAgICAgICAgaWYgKGRhdGVSYW5nZVZhbHVlLmxlbmd0aCA9PSAyICYmIChkYXRlUmFuZ2VWYWx1ZVswXS50cmltKCkgPT0gZGF0ZVJhbmdlVmFsdWVbMV0udHJpbSgpKSl7XG4gICAgICAgICAgZGF0ZVJhbmdlLnZhbHVlID0gW11cbiAgICAgICAgICBkYXRlUmFuZ2UudmFsdWVbMF0gPSBuZXcgRGF0ZShkYXRlUmFuZ2VWYWx1ZVswXSk7XG4gICAgICAgICAgZGF0ZVJhbmdlLnZhbHVlWzFdID0gbmV3IERhdGUoZGF0ZVJhbmdlVmFsdWVbMV0pO1xuICAgICAgICAgIHRoaXMuc2VsZWN0RGF0ZShkYXRlUmFuZ2UsIGZhbHNlKTsgICAgIFxuICAgICAgICB9ICAgIFxuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgXG4gIGNvbnRhaW5zV2hpdGVzcGFjZShzdHIpIHtcbiAgICByZXR1cm4gc3RyLmluY2x1ZGVzKCcgJyk7XG4gIH1cblxuICBhZGRTcGFjZXNhdGZpcnN0KHgpIHtcbiAgICByZXR1cm4gXCIgXCIgKyB4O1xuICB9XG5cbiAgYWRkU3BhY2VzYXRsYXN0KHgpIHtcbiAgICByZXR1cm4geCArIFwiIFwiXG4gIH1cblxuICAvLyBjaGFuZ2UgY2FsZW5kYXIgZm9ybWF0IG9uIHJ1biB0aW1lIGlmIHVzZXIgdHlwZSBkYXRlIG9uIHRoZSBjYWxlbmRhciBmaWVsZC5cbiAgY2FsZW5kYXJGb2N1c0V2ZW50KGdsb2JhbEZpbHRlcjpJR2xvYmFsRmlsdGVyLCBldmVudD86IGFueSl7XG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQpWzBdPy5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIChhOiBhbnkpID0+IHtcbiAgICAgIGxldCB5ZWFyID0gYT8udGFyZ2V0Py52YWx1ZT8udG9TdHJpbmcoKT8uc3BsaXQoJy8nKVsyXTtcbiAgICAgIHllYXIgPSB5ZWFyPy50b1N0cmluZygpLnNwbGl0KFwiIFwiKVswXTtcbiAgICAgIHRoaXMuZGF0ZVJhbmdlVmFsdWUgPSBhPy50YXJnZXQ/LnZhbHVlXG4gICAgICBsZXQgZGF0ZVJhbmdlVmFsdWUgPSBhPy50YXJnZXQ/LnZhbHVlPy5pbmNsdWRlcygnLScpID8gYT8udGFyZ2V0Py52YWx1ZT8uc3BsaXQoJy0nKSA6ICcnO1xuICAgICAgLy8gYWRkaW5nIHNwYWNlIGJldHdlZW4gZnJvbSBhbmQgdG8gZGF0ZSBpbiBkYXRlIHJhbmdlIGZpbHRlclxuICAgICAgaWYgKGRhdGVSYW5nZVZhbHVlLmxlbmd0aCA9PSAyICYmIGRhdGVSYW5nZVZhbHVlWzFdLnNwbGl0KCcvJykubGVuZ3RoID09IDMgJiYgKCF0aGlzLmNvbnRhaW5zV2hpdGVzcGFjZShkYXRlUmFuZ2VWYWx1ZVswXSkgfHwgIXRoaXMuY29udGFpbnNXaGl0ZXNwYWNlKGRhdGVSYW5nZVZhbHVlWzFdKSkpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbnRhaW5zV2hpdGVzcGFjZShkYXRlUmFuZ2VWYWx1ZVswXSkpIHtcbiAgICAgICAgICBsZXQgZnJvbURhdGUgPSB0aGlzLmFkZFNwYWNlc2F0bGFzdChkYXRlUmFuZ2VWYWx1ZVswXSk7XG4gICAgICAgICAgZGF0ZVJhbmdlVmFsdWVbMF0gPSBmcm9tRGF0ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuY29udGFpbnNXaGl0ZXNwYWNlKGRhdGVSYW5nZVZhbHVlWzFdKSkge1xuICAgICAgICAgIGxldCB0b0RhdGUgPSB0aGlzLmFkZFNwYWNlc2F0Zmlyc3QoZGF0ZVJhbmdlVmFsdWVbMV0pO1xuICAgICAgICAgIGRhdGVSYW5nZVZhbHVlWzFdID0gdG9EYXRlO1xuICAgICAgICB9XG4gICAgICAgIGxldCBhbHVlID0gZGF0ZVJhbmdlVmFsdWVbMF0gKyAnLScgKyBkYXRlUmFuZ2VWYWx1ZVsxXVxuICAgICAgICBhLnRhcmdldC52YWx1ZSA9IGFsdWU7XG4gICAgICB9XG4gICAgICBpZih5ZWFyPy5sZW5ndGggPT09IDQpe1xuICAgICAgICB0aGlzLmNhbGVuZGFyRm9ybWF0ID0gJ21tL2RkL3l5JztcbiAgICAgICAgaWYoZ2xvYmFsRmlsdGVyLnR5cGUgPT09IEdyaWRGaWx0ZXJDb250cm9sVHlwZS5DQUxFTkRBUil7XG4gICAgICAgICAgZ2xvYmFsRmlsdGVyLnZhbHVlID0gbmV3IERhdGUoYS50YXJnZXQudmFsdWUpLnRvTG9jYWxlRGF0ZVN0cmluZyhcImVuLVVTXCIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYoeWVhcj8ubGVuZ3RoKXtcbiAgICAgICAgdGhpcy5jYWxlbmRhckZvcm1hdCA9ICdtbS9kZC95JztcbiAgICAgIH1cbiAgICB9KTtcbiAgICBsZXQgeWVhclZhbHVlID0gZXZlbnQ/LnRhcmdldD8udmFsdWU/LnRvU3RyaW5nKCk/LnNwbGl0KCcvJylbNF07XG4gICAgaWYoKCFnbG9iYWxGaWx0ZXIudmFsdWUgfHwgeWVhclZhbHVlID09IHVuZGVmaW5lZCB8fCB5ZWFyVmFsdWU/LnRvU3RyaW5nKCk/Lmxlbmd0aCA9PT0gMSkgJiYgZ2xvYmFsRmlsdGVyLnR5cGUgPT09IEdyaWRGaWx0ZXJDb250cm9sVHlwZS5EQVRFX1JBTkdFKXtcbiAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlVmFsdWUoZ2xvYmFsRmlsdGVyLCB0cnVlKTtcbiAgICB9XG4gIH1cbiAgY2hlY2tJZkZpbHRlclJlcXVpcmVkKGZpbHRlcjpJR2xvYmFsRmlsdGVyKXtcbiAgICBpZihmaWx0ZXIudmFsaWRhdGlvbnM/LmZpbmQodmFsaWRhdGlvbj0+dmFsaWRhdGlvbi50eXBlPT09RUZpbHRlclZhbGlkYXRvci5SRVFVSVJFRCkpe1xuICAgICAgZmlsdGVyLnJlcXVpcmVkRmllbGQ9dHJ1ZTtcbiAgICB9ICAgIFxuICB9XG4gIGNoZWNrRmlsdGVyVmFsaWRhdGlvbihyZW1vdmVFcnJvcjpib29sZWFuID0gZmFsc2UpOmJvb2xlYW57XG4gICAgbGV0IHZhbGlkOmJvb2xlYW4gPSBmYWxzZTtcbiAgICBpZih0aGlzLmdsb2JhbEZpbHRlcnMgJiYgdGhpcy5nbG9iYWxGaWx0ZXJzLmxlbmd0aCA+IDApe1xuICAgICAgdGhpcy5nbG9iYWxGaWx0ZXJzLmZvckVhY2goKGZpbHRlcik9PntcbiAgICAgICAgaWYoZmlsdGVyLnZhbGlkYXRpb25zICYmIGZpbHRlci52YWxpZGF0aW9ucy5sZW5ndGggPiAwICYmIGZpbHRlci52YWxpZGF0aW9uc1swXS50eXBlID09PSBFRmlsdGVyVmFsaWRhdG9yLlJFUVVJUkVEICYmICFmaWx0ZXIudmFsdWUgJiYgIXJlbW92ZUVycm9yKXtcbiAgICAgICAgICB2YWxpZCA9IHRydWU7XG4gICAgICAgICAgZmlsdGVyLmVycm9yTWVzc2FnZSA9IGZpbHRlci5kaXNwbGF5VGV4dCtcIiBpcyByZXF1aXJlZFwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZpbHRlci5lcnJvck1lc3NhZ2UgPSAnJztcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIHZhbGlkO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKXtcbiAgICB0aGlzLmdsb2JhbEZpbHRlcnM/LmZvckVhY2goKGZpbHRlcikgPT4ge1xuICAgICAgdGhpcy5jaGVja0lmRmlsdGVyUmVxdWlyZWQoZmlsdGVyKTtcbiAgICAgIGlmIChmaWx0ZXIudmFsdWUgJiYgKGZpbHRlci5oaWRkZW4gPT09IGZhbHNlIHx8IGZpbHRlci5oaWRkZW4gPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgdGhpcy5hcHBseUZpbHRlcnNFdmVudChmaWx0ZXIpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLy8gc2V0IEJ5IERlZnVhbHQgQ2FsZW5kYXIgUmFuZ2VcbiAgICB0aGlzLnNldERlZnVhbHRDYWxlbmRhclJhbmdlKGZhbHNlKTtcbiAgICBjb25zdCBnaXJkQ2xlYXJGaWx0ZXJCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcbiAgICAgICdjbGVhckdyaWRGaWx0ZXJWYWx1ZXNCdXR0b24nXG4gICAgKTtcbiAgICBpZiAoZ2lyZENsZWFyRmlsdGVyQnRuKSB7XG4gICAgICBpZiAoZ2lyZENsZWFyRmlsdGVyQnRuLmNsYXNzTGlzdC5jb250YWlucygnaGlkZS1jbGVhci1maWx0ZXItYnV0dG9uJykpIHtcbiAgICAgICAgdGhpcy5oaWRlQ2xlYXJGaWx0ZXJCdG4gPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5oaWRlQ2xlYXJGaWx0ZXJCdG4gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oaWRlQ2xlYXJGaWx0ZXJCdG4gPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIHNwbGl0aW5nIGRhdGUgcmFuZ2UgdmFsdWUgYW5kIGFzc2lnbiB0byB2YWx1ZSBhbmQgdmFsdWVUd28gaW4gRGF0ZV9SYW5nZSBDb250cm9sXG4gICAgY29uc3QgZGF0ZVJhbmdlRmlsdGVyID0gdGhpcy5nbG9iYWxGaWx0ZXJzLmZpbHRlcigoZmlsdGVyKSA9PiBmaWx0ZXIudHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLkRBVEVfUkFOR0UpO1xuICAgIGRhdGVSYW5nZUZpbHRlcj8uZm9yRWFjaCgoZGF0ZVJhbmdlKSA9PiB7XG4gICAgICBpZiAoZGF0ZVJhbmdlLnZhbHVlICYmIGRhdGVSYW5nZS52YWx1ZVR3bykge1xuICAgICAgICBpZiAodHlwZW9mIChkYXRlUmFuZ2UudmFsdWUpID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGRhdGVSYW5nZS52YWx1ZSA9IGRhdGVSYW5nZS52YWx1ZS50b0xvY2FsZURhdGVTdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIChkYXRlUmFuZ2UudmFsdWVUd28pID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGRhdGVSYW5nZS52YWx1ZVR3byA9IGRhdGVSYW5nZS52YWx1ZVR3by50b0xvY2FsZURhdGVTdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICBkYXRlUmFuZ2UudmFsdWUgPSAoZGF0ZVJhbmdlLnZhbHVlICsgXCItXCIgKyBkYXRlUmFuZ2UudmFsdWVUd28pPy50b1N0cmluZygpPy5zcGxpdCgnLScpO1xuICAgICAgICB0aGlzLnNldERhdGVSYW5nZUZpbHRlclZhbHVlKGRhdGVSYW5nZSk7XG4gICAgICB9IGVsc2UgaWYgKGRhdGVSYW5nZS52YWx1ZSAmJiAhZGF0ZVJhbmdlLnZhbHVlVHdvKSB7XG4gICAgICAgIHRoaXMubWF0Y2hTYW1lRmllbGRzKGRhdGVSYW5nZS5mcm9tRmllbGQsIGRhdGVSYW5nZS52YWx1ZSwgJ2d0ZScpO1xuICAgICAgfSBlbHNlIGlmICghZGF0ZVJhbmdlLnZhbHVlICYmIGRhdGVSYW5nZS52YWx1ZVR3bykge1xuICAgICAgICB0aGlzLm1hdGNoU2FtZUZpZWxkcyhkYXRlUmFuZ2UuZnJvbUZpZWxkLCBkYXRlUmFuZ2UudmFsdWVUd28sICdndGUnKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC8vIEZpbHRyaW5nIE51bWVyaWMgUmFuZ2UgY29udHJvbHMgb24gZ2xvYmFsIGZpbHRlciBcbiAgICBjb25zdCBudW1lclJhbmdlRmlsdGVyID0gdGhpcy5nbG9iYWxGaWx0ZXJzLmZpbHRlcigoZmlsdGVyKSA9PiBmaWx0ZXIudHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLk5VTUVSSUNfUkFOR0UpO1xuICAgIG51bWVyUmFuZ2VGaWx0ZXIuZm9yRWFjaCgobnVtZXJpY1JhbmdlKSA9PiB7XG4gICAgICBpZiAobnVtZXJpY1JhbmdlKSB7XG4gICAgICAgIHRoaXMuc2V0TnVtZXJpY1JhbmdlVmFsdWVGcm9tKG51bWVyaWNSYW5nZSk7XG4gICAgICAgIHRoaXMuc2V0TnVtZXJpY1JhbmdlVmFsdWVUd28obnVtZXJpY1JhbmdlKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC8vIGlmKCEodGhpcy5nbG9iYWxGaWx0ZXJzLnNvbWUoKGZpbHRlcik9PiBmaWx0ZXIudHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLkNBTEVOREFSX1JBTkdFKSkgJiZcbiAgICAvLyAgKHRoaXMuZ2xvYmFsRmlsdGVycy5zb21lKChmaWx0ZXIpPT4gZmlsdGVyLnZhbHVlKSlcbiAgICAvLyAgKXtcbiAgICAvLyAgIHRoaXMuYXBwbHlGaWx0ZXJzKGZhbHNlKTtcbiAgICAvLyB9XG4gIH1cblxuICBzZXROdW1lcmljUmFuZ2VWYWx1ZVR3byhnbG9iYWxGaWx0ZXI6IElHbG9iYWxGaWx0ZXIsIHNlbmRSZXF1ZXN0OmJvb2xlYW4gPSBmYWxzZSl7XG4gICAgaWYoZ2xvYmFsRmlsdGVyLnRvRmllbGQpe1xuICAgICAgdGhpcy5tYXRjaFNhbWVGaWVsZHMoZ2xvYmFsRmlsdGVyLnRvRmllbGQsIGdsb2JhbEZpbHRlci52YWx1ZVR3bywnbHRlJywgZ2xvYmFsRmlsdGVyKTtcbiAgICB9XG4gICAgaWYoc2VuZFJlcXVlc3Qpe1xuICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICB9XG4gIH1cblxuICBtYXRjaFNhbWVGaWVsZHMoZmllbGQ6IHN0cmluZyx2YWx1ZTphbnksIG9wZXJhdG9yOnN0cmluZywgbnVtZXJSYW5nZUZpbHRlcjogYW55ID0ge30pe1xuICAgICAgaWYoZmllbGQpe1xuICAgICAgICBpZihudW1lclJhbmdlRmlsdGVyICYmIG51bWVyUmFuZ2VGaWx0ZXI/LmZvcm1hdD8udHlwZSA9PT0gJ2RlY2ltYWwnICYmIHZhbHVlKXtcbiAgICAgICAgICBjb25zdCBkaWdpdEluZm8gPSBudW1lclJhbmdlRmlsdGVyPy5mb3JtYXQ/LmZvcm1hdFBhcmFtcz8uZGlnaXRzSW5mbztcbiAgICAgICAgICBpZihkaWdpdEluZm8pe1xuICAgICAgICAgICAgdmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKT8udG9GaXhlZChkaWdpdEluZm8pO1xuICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgdmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKT8udG9GaXhlZCgyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmdsb2JhbEZpbHRlcnMuZmluZEluZGV4KChmaWx0ZXIpPT4gZmllbGQgPT09IGZpbHRlci5maWVsZCk7XG4gICAgICAgIGlmKGluZGV4ID4gLTEpe1xuICAgICAgICAgIHRoaXMuZ2xvYmFsRmlsdGVyc1tpbmRleF0gPSB7ZmllbGQ6IGZpZWxkLCBtYXRjaE1vZGU6J2FuZCcsIG9wZXJhdG9yOiBvcGVyYXRvciwgdmFsdWU6IHZhbHVlfTsgICAgICAgXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5nbG9iYWxGaWx0ZXJzLnB1c2goe2ZpZWxkOiBmaWVsZCwgbWF0Y2hNb2RlOidhbmQnLCBvcGVyYXRvcjogb3BlcmF0b3IsIHZhbHVlOiB2YWx1ZX0pO1xuICAgICAgICB9XG4gICAgICB9XG4gIH1cblxuICBzZXROdW1lcmljUmFuZ2VWYWx1ZUZyb20oZ2xvYmFsRmlsdGVyOiBJR2xvYmFsRmlsdGVyLCBzZW5kUmVxdWVzdDpib29sZWFuID0gZmFsc2UpIHtcbiAgICAgaWYoZ2xvYmFsRmlsdGVyLnR5cGUgPT09IEdyaWRGaWx0ZXJDb250cm9sVHlwZS5OVU1FUklDX1JBTkdFICYmIGdsb2JhbEZpbHRlci5mcm9tRmllbGQpeyBcbiAgICAgIHRoaXMubWF0Y2hTYW1lRmllbGRzKGdsb2JhbEZpbHRlci5mcm9tRmllbGQsZ2xvYmFsRmlsdGVyLnZhbHVlLCdndGUnLCBnbG9iYWxGaWx0ZXIpO1xuICAgICAgaWYoc2VuZFJlcXVlc3Qpe1xuICAgICAgICB0aGlzLmFwcGx5RmlsdGVycygpO1xuICAgICAgfVxuICAgICB9XG4gIFxuICB9XG4gIHJlbW92ZU51bGxMb29rdXAoZXZlbnQ6IGFueSwgZ2xvYmFsRmlsdGVyOiBhbnkpe1xuICAgIGlmKCFldmVudC50YXJnZXQudmFsdWUpe1xuICAgICAgdGhpcy5sb29rdXBDbGVhclZhbHVlKGdsb2JhbEZpbHRlcik7XG4gICAgfVxuICB9XG4gIGxvb2t1cENsZWFyVmFsdWUoZ2xvYmFsRmlsdGVyOiBhbnkpe1xuICAgIGlmIChnbG9iYWxGaWx0ZXIpIHtcblxuICAgICAgZ2xvYmFsRmlsdGVyLnZhbHVlID8gZ2xvYmFsRmlsdGVyLnZhbHVlPScnOicnXG4gICAgICBnbG9iYWxGaWx0ZXIudmFsdWVUd28/Z2xvYmFsRmlsdGVyLnZhbHVlVHdvPScnOicnXG4gICAgIC8vIGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dD9nbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQ9Jyc6JydcbiAgICAgIC8vIGNvbHVtbi5kaXNwbGF5RmllbGQ/cm93W2NvbHVtbi5kaXNwbGF5RmllbGRdID0gJyc6JydcbiAgICAgIC8vIHJvd1tjb2x1bW4uZmllbGQrJ19vYmonXT8udGV4dD8gcm93W2NvbHVtbi5maWVsZCsnX29iaiddLnRleHQ9Jyc6JydcbiAgICAgIC8vIHJvd1tjb2x1bW4uZmllbGRdID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgLy8gY29sdW1uLmZpbHRlclZhbHVlID0gJyc7XG4gICAgICAvL3RoaXMuc2V0RmlsdGVyRm9jdXNPdXQoY29sdW1uKTtcbiAgICB9XG4gICAvLyB0aGlzLmJyb3dzZXJDbG9zZUV2ZW50KHRydWUpO1xuICAgLy8gaWYgKGNvbHVtbi5vbkNoYW5nZSkge1xuICAgIC8vICBjb2x1bW4ub25DaGFuZ2Uocm93KTtcbiAgIC8vIH1cbiAgfVxuXG4gIHNldERhdGVSYW5nZVZhbHVlKGdsb2JhbEZpbHRlcjogYW55LCBjbGVhclZhbHVlOiBib29sZWFuID1mYWxzZSkge1xuICAgIGlmKGdsb2JhbEZpbHRlci52YWx1ZT8ubGVuZ3RoID4gMCl7XG4gICAgICBjb25zdCBmcm9tRGF0ZVZhbHVlID0gdGhpcy5kYXRlcGlwZS50cmFuc2Zvcm0oXG4gICAgICAgIGdsb2JhbEZpbHRlci52YWx1ZVswXSxcbiAgICAgICAgZ2xvYmFsRmlsdGVyLmZvcm1hdCA/IGdsb2JhbEZpbHRlci5mb3JtYXQgOiAnTU0vZGQveXl5eSdcbiAgICAgICk7XG4gICAgICBjb25zdCB0b0RhdGVWYWx1ZSA9IHRoaXMuZGF0ZXBpcGUudHJhbnNmb3JtKFxuICAgICAgICBnbG9iYWxGaWx0ZXIudmFsdWVbMV0sXG4gICAgICAgIGdsb2JhbEZpbHRlci5mb3JtYXQgPyBnbG9iYWxGaWx0ZXIuZm9ybWF0IDogJ01NL2RkL3l5eXknXG4gICAgICApO1xuICAgICAgaWYgKGZyb21EYXRlVmFsdWUgJiYgdG9EYXRlVmFsdWUgJiYgZ2xvYmFsRmlsdGVyLmZyb21GaWVsZCAmJiBnbG9iYWxGaWx0ZXIudG9GaWVsZCkge1xuICAgICAgICB0aGlzLm1hdGNoU2FtZUZpZWxkcyhnbG9iYWxGaWx0ZXIuZnJvbUZpZWxkLGZyb21EYXRlVmFsdWUsJ2d0ZScpO1xuICAgICAgICB0aGlzLm1hdGNoU2FtZUZpZWxkcyhnbG9iYWxGaWx0ZXIudG9GaWVsZCx0b0RhdGVWYWx1ZSwnbHRlJyk7XG4gICAgICB9XG4gICAgfWVsc2UgaWYoY2xlYXJWYWx1ZSl7XG4gICAgICB0aGlzLm1hdGNoU2FtZUZpZWxkcyhnbG9iYWxGaWx0ZXIuZnJvbUZpZWxkLCBudWxsLCAnZ3RlJyk7XG4gICAgICB0aGlzLm1hdGNoU2FtZUZpZWxkcyhnbG9iYWxGaWx0ZXIudG9GaWVsZCwgbnVsbCwgJ2x0ZScpO1xuICAgIH1cbiAgfVxuICBvbkNsaWNrRXZlbnQoZ2xvYmFsRmlsdGVyOiBJR2xvYmFsRmlsdGVyKXtcbiAgICBpZihnbG9iYWxGaWx0ZXIgJiYgZ2xvYmFsRmlsdGVyLm9uQ2xpY2spe1xuICAgICAgZ2xvYmFsRmlsdGVyLm9uQ2xpY2soZ2xvYmFsRmlsdGVyKTtcbiAgICB9XG4gIH1cblxuICBvbkZvY3VzT3V0RXZlbnQoZ2xvYmFsRmlsdGVyOiBJR2xvYmFsRmlsdGVyKXtcbiAgICBpZiAoZ2xvYmFsRmlsdGVyICYmIGdsb2JhbEZpbHRlci5vbkZvY3VzT3V0KSB7XG4gICAgICBnbG9iYWxGaWx0ZXIub25Gb2N1c091dChnbG9iYWxGaWx0ZXIpO1xuICAgIH1cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdhcHBseUZpbHRlcicsIEpTT04uc3RyaW5naWZ5KGZhbHNlKSk7XG4gICAgICB0aGlzLmdyaWRTZXJ2aWNlLmFwcGx5RmlsdGVyRXZlbnQgPSBmYWxzZTtcbiAgICAgIHRoaXMuZmlsdGVyc0FwcGxpZWQuZW1pdCh0aGlzLmdsb2JhbEZpbHRlcnMpO1xuICAgICAgfSxnbG9iYWxGaWx0ZXIudHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLkxPT0tVUF9JTlBVVCA/ICAyNTAgOiAwKTtcbiAgfVxuICB1cGRhdGVWYWx1ZXMoZ2xvYmFsRmlsdGVyOiBJR2xvYmFsRmlsdGVyKXtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdhcHBseUZpbHRlcicsIEpTT04uc3RyaW5naWZ5KGZhbHNlKSk7XG4gICAgICB0aGlzLmdyaWRTZXJ2aWNlLmFwcGx5RmlsdGVyRXZlbnQgPSBmYWxzZTtcbiAgICAgIH0sZ2xvYmFsRmlsdGVyLnR5cGUgPT09IEdyaWRGaWx0ZXJDb250cm9sVHlwZS5MT09LVVBfSU5QVVQgPyAgMjUwIDogMCk7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlLmVtaXQoZ2xvYmFsRmlsdGVyKTtcbiAgfVxuXG4gIGFwcGx5RmlsdGVyc0V2ZW50KGdsb2JhbEZpbHRlcjogSUdsb2JhbEZpbHRlcil7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYXBwbHlGaWx0ZXInLCBKU09OLnN0cmluZ2lmeShmYWxzZSkpO1xuICAgICAgdGhpcy5ncmlkU2VydmljZS5hcHBseUZpbHRlckV2ZW50ID0gZmFsc2U7XG4gICAgICB0aGlzLmZpbHRlcnNBcHBsaWVkLmVtaXQodGhpcy5nbG9iYWxGaWx0ZXJzKTtcbiAgICB9LGdsb2JhbEZpbHRlci50eXBlID09PSBHcmlkRmlsdGVyQ29udHJvbFR5cGUuTE9PS1VQX0lOUFVUID8gIDI1MCA6IDApO1xuICB9XG4gIC8qKlxuICAgKiBBcHBseSBzZWxlY3RlZCBmaWx0ZXJzXG4gICAqL1xuICBhcHBseUZpbHRlcnMoZmlsdGVyRXZlbnQ6IGJvb2xlYW49IHRydWUsIGdsb2JhbEZpbHRlcjphbnkgPSB7fSkge1xuICAgIGlmKGdsb2JhbEZpbHRlci50eXBlID09PSBHcmlkRmlsdGVyQ29udHJvbFR5cGUuREFURV9SQU5HRSl7XG4gICAgICB0aGlzLnNldERhdGVSYW5nZUZpbHRlclZhbHVlKGdsb2JhbEZpbHRlcik7XG4gICAgfSBcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLmFwcGx5RmlsdGVyRXZlbnQgPSBmaWx0ZXJFdmVudDtcbiAgICBjb25zdCBnbG9iYWxGaWx0ZXJzID0gdGhpcy5nbG9iYWxGaWx0ZXJzLmZpbHRlcigoeCkgPT4geC5maWVsZCk7XG4gICAgY29uc3QgaW5kZXggPSBnbG9iYWxGaWx0ZXJzLmZpbmRJbmRleCgoZmlsdGVyKT0+IGZpbHRlci5maWVsZCAmJiBmaWx0ZXIudHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLkRBVEVfUkFOR0UgKVxuICAgIGlmKGluZGV4ID4gLTEpe1xuICAgICAgZ2xvYmFsRmlsdGVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYXBwbHlGaWx0ZXInLCBKU09OLnN0cmluZ2lmeSh0cnVlKSk7XG4gICAgaWYgKHRoaXMuc2hvd0RpYWxvZykge1xuICAgICAgdGhpcy5yZWYuY2xvc2UoZ2xvYmFsRmlsdGVycyk7XG4gICAgfSBlbHNlIFxuICAgIGlmKCF0aGlzLmNoZWNrRmlsdGVyVmFsaWRhdGlvbigpKXtcbiAgICAgIHRoaXMuY2hlY2tGaWx0ZXJWYWxpZGF0aW9uKHRydWUpO1xuICAgICAgdGhpcy5maWx0ZXJzQXBwbGllZC5lbWl0KGdsb2JhbEZpbHRlcnMpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHNldCBCeSBEZWZ1YWx0IENhbGVuZGFyIFJhbmdlIFxuICBzZXREZWZ1YWx0Q2FsZW5kYXJSYW5nZShjaGVjazogYm9vbGVhbiA9IHRydWUpe1xuICAgIGlmKHRoaXMuZ2xvYmFsRmlsdGVycyAmJiB0aGlzLmdsb2JhbEZpbHRlcnMubGVuZ3RoID4gMCl7XG4gICAgICB0aGlzLmdsb2JhbEZpbHRlcnMuZm9yRWFjaCgoZmlsdGVyKT0+e1xuICAgICAgICBpZihmaWx0ZXIudHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLkRBVEVfUkFOR0UgJiYgZmlsdGVyLmRheVJhbmdlICYmICFmaWx0ZXIudmFsdWUgJiYgIWZpbHRlci52YWx1ZVR3byl7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNob3dOZXh0KGZpbHRlciwgY2hlY2spO1xuICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNob3dOZXh0KGZpbHRlcjogSUdsb2JhbEZpbHRlciwgY2hlY2s6IGJvb2xlYW4gPSB0cnVlKTogRGF0ZVtdIHtcbiAgICAvLyBsZXQgbmV4dFZhbHVlOiBzdHJpbmc7XG4gICAgbGV0IG5leHRWYWx1ZTogRGF0ZVtdXG4gICAgbGV0IGRheVJhbmdlOiBFRGF5UmFuZ2UgPSBmaWx0ZXIuZGF5UmFuZ2VcbiAgICAgID8gZmlsdGVyLmRheVJhbmdlXG4gICAgICA6IEVEYXlSYW5nZS5XRUVLO1xuICAgIHN3aXRjaCAoZGF5UmFuZ2UpIHtcbiAgICAgIGNhc2UgRURheVJhbmdlLkRBWTpcbiAgICAgICAvLyBuZXh0VmFsdWUgPSB0aGlzLnNldERheUZpbHRlcihmaWx0ZXIsIHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRURheVJhbmdlLk1PTlRIOlxuICAgICAgLy8gIG5leHRWYWx1ZSA9IHRoaXMuc2V0TW9udGhGaWx0ZXIoZmlsdGVyLCB0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEVEYXlSYW5nZS5ZRUFSOlxuICAgICAgLy8gIG5leHRWYWx1ZSA9IHRoaXMuc2V0WWVhckZpbHRlcihmaWx0ZXIsIHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIHdlZWtcbiAgICAgIG5leHRWYWx1ZSA9IHRoaXMuc2V0V2Vla0ZpbHRlcihmaWx0ZXIsIHRydWUpO1xuICAgICAgICBmaWx0ZXIudmFsdWU9IG5leHRWYWx1ZVxuICAgICAgICB0aGlzLnNldERhdGVSYW5nZUZpbHRlclZhbHVlKGZpbHRlcilcbiAgICAgICAgLy9maWx0ZXIudmFsdWVUd289bmV4dFZhbHVlWzFdXG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYXBwbHlGaWx0ZXInLCBKU09OLnN0cmluZ2lmeSh0cnVlKSk7XG4gICAgdGhpcy5ncmlkU2VydmljZS5hcHBseUZpbHRlckV2ZW50ID0gY2hlY2s7XG4gICAgdGhpcy5maWx0ZXJzQXBwbGllZC5lbWl0KHRoaXMuZ2xvYmFsRmlsdGVycyk7XG4gICAvLyBsZXQgdGVzdD1uZXh0VmFsdWVcbiAgICAvL2ZpbHRlci52YWx1ZT1uZXh0VmFsdWVcbiAgIFxuICAgIHJldHVybiBuZXh0VmFsdWU7XG4gIH1cblxuICBzaG93UHJldmlvdXMoZmlsdGVyOiBJR2xvYmFsRmlsdGVyKTogRGF0ZVtdIHtcbiAgICBsZXQgcHJldmlvdXNWYWx1ZTogRGF0ZVtdO1xuICAgIGxldCBkYXlSYW5nZTogRURheVJhbmdlID0gZmlsdGVyLmRheVJhbmdlXG4gICAgICA/IGZpbHRlci5kYXlSYW5nZVxuICAgICAgOiBFRGF5UmFuZ2UuV0VFSztcbiAgICBzd2l0Y2ggKGRheVJhbmdlKSB7XG4gICAgICBjYXNlIEVEYXlSYW5nZS5EQVk6XG4gICAgICAgLy8gcHJldmlvdXNWYWx1ZSA9IHRoaXMuc2V0RGF5RmlsdGVyKGZpbHRlciwgZmFsc2UpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRURheVJhbmdlLk1PTlRIOlxuICAgICAvLyAgIHByZXZpb3VzVmFsdWUgPSB0aGlzLnNldE1vbnRoRmlsdGVyKGZpbHRlciwgZmFsc2UpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRURheVJhbmdlLllFQVI6XG4gICAgICAvLyAgcHJldmlvdXNWYWx1ZSA9IHRoaXMuc2V0WWVhckZpbHRlcihmaWx0ZXIsIGZhbHNlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyB3ZWVrXG4gICAgICAgIHByZXZpb3VzVmFsdWUgPSB0aGlzLnNldFdlZWtGaWx0ZXIoZmlsdGVyLCBmYWxzZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBmaWx0ZXIudmFsdWU9cHJldmlvdXNWYWx1ZVxuICAgIHRoaXMuc2V0RGF0ZVJhbmdlRmlsdGVyVmFsdWUoZmlsdGVyKVxuICAgIHRoaXMuZ3JpZFNlcnZpY2UuYXBwbHlGaWx0ZXJFdmVudCA9IHRydWU7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2FwcGx5RmlsdGVyJywgSlNPTi5zdHJpbmdpZnkodHJ1ZSkpO1xuICAgIHRoaXMuZmlsdGVyc0FwcGxpZWQuZW1pdCh0aGlzLmdsb2JhbEZpbHRlcnMpO1xuICAgIHJldHVybiBwcmV2aW91c1ZhbHVlO1xuICB9XG5cbiAgc2V0Q2FsZW5kYXJSYW5nZUZpbHRlclZhbHVlKGZpbHRlcjogSUdsb2JhbEZpbHRlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIChmaWx0ZXIudmFsdWUgPVxuICAgICAgdGhpcy5kYXRlcGlwZS50cmFuc2Zvcm0oXG4gICAgICAgIHRoaXMuc3RhcnREYXRlLFxuICAgICAgICBmaWx0ZXIuZm9ybWF0ID8gZmlsdGVyLmZvcm1hdCA6ICdNTS9kZC95eXl5J1xuICAgICAgKSArXG4gICAgICAnfCcgK1xuICAgICAgdGhpcy5kYXRlcGlwZS50cmFuc2Zvcm0oXG4gICAgICAgIHRoaXMuZW5kRGF0ZSxcbiAgICAgICAgZmlsdGVyLmZvcm1hdCA/IGZpbHRlci5mb3JtYXQgOiAnTU0vZGQveXl5eSdcbiAgICAgICkpO1xuICB9XG5cbiAgc2V0RGF0ZVZhbHVlKGZpbHRlcjogYW55KSB7XG4gICAgbGV0IHZhbHVlOiBEYXRlO1xuICAgIGlmIChmaWx0ZXIudmFsdWUpIHtcbiAgICAgIHZhbHVlID0gbmV3IERhdGUoZmlsdGVyLnZhbHVlLnNwbGl0KCd8JylbMF0pO1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlLnNldE1vbnRoKHZhbHVlLmdldE1vbnRoKCkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgc2V0RGF5RmlsdGVyKGZpbHRlcjogSUdsb2JhbEZpbHRlciwgaXNOZXh0OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICB2YXIgY3VycmVudERhdGUgPSB0aGlzLnNldERhdGVWYWx1ZShmaWx0ZXIpO1xuXG4gICAgaWYgKGlzTmV4dCkge1xuICAgICAgdGhpcy5zdGFydERhdGUgPSB0aGlzLnN0YXJ0RGF0ZVxuICAgICAgICA/IG5ldyBEYXRlKFxuICAgICAgICAgICAgdGhpcy5zdGFydERhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlLmdldE1vbnRoKCksXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAxXG4gICAgICAgICAgKVxuICAgICAgICA6IGN1cnJlbnREYXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IHRoaXMuc3RhcnREYXRlXG4gICAgICAgID8gbmV3IERhdGUoXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgICAgdGhpcy5zdGFydERhdGUuZ2V0TW9udGgoKSxcbiAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlLmdldERhdGUoKSAtIDFcbiAgICAgICAgICApXG4gICAgICAgIDogY3VycmVudERhdGU7XG4gICAgfVxuXG4gICAgdGhpcy5lbmREYXRlID0gbmV3IERhdGUoXG4gICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgdGhpcy5zdGFydERhdGUuZ2V0TW9udGgoKSxcbiAgICAgIHRoaXMuc3RhcnREYXRlLmdldERhdGUoKSArIDFcbiAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMuc2V0Q2FsZW5kYXJSYW5nZUZpbHRlclZhbHVlKGZpbHRlcik7XG4gIH1cblxuICBzZXRZZWFyRmlsdGVyKGZpbHRlcjogSUdsb2JhbEZpbHRlciwgaXNOZXh0OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICB2YXIgY3VycmVudERhdGUgPSB0aGlzLnNldERhdGVWYWx1ZShmaWx0ZXIpO1xuICAgIHZhciBmaXJzdERhdGVPZlllYXIgPSBuZXcgRGF0ZShjdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpLCAwLCAxKTtcblxuICAgIGlmIChpc05leHQpIHtcbiAgICAgIHRoaXMuc3RhcnREYXRlID0gdGhpcy5zdGFydERhdGVcbiAgICAgICAgPyBuZXcgRGF0ZSh0aGlzLnN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpICsgMSwgMCwgMSlcbiAgICAgICAgOiBmaXJzdERhdGVPZlllYXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhcnREYXRlID0gdGhpcy5zdGFydERhdGVcbiAgICAgICAgPyBuZXcgRGF0ZSh0aGlzLnN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpIC0gMSwgMCwgMSlcbiAgICAgICAgOiBmaXJzdERhdGVPZlllYXI7XG4gICAgfVxuXG4gICAgdGhpcy5lbmREYXRlID0gbmV3IERhdGUodGhpcy5zdGFydERhdGUuZ2V0RnVsbFllYXIoKSwgMTEsIDMxKTtcblxuICAgIHJldHVybiB0aGlzLnNldENhbGVuZGFyUmFuZ2VGaWx0ZXJWYWx1ZShmaWx0ZXIpO1xuICB9XG5cbiAgc2V0TW9udGhGaWx0ZXIoZmlsdGVyOiBJR2xvYmFsRmlsdGVyLCBpc05leHQ6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgIHZhciBjdXJyZW50RGF0ZSA9IHRoaXMuc2V0RGF0ZVZhbHVlKGZpbHRlcik7XG4gICAgdmFyIGZpcnN0RGF0ZU9mTW9udGggPSBuZXcgRGF0ZShcbiAgICAgIGN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICBjdXJyZW50RGF0ZS5nZXRNb250aCgpLFxuICAgICAgMVxuICAgICk7XG5cbiAgICBpZiAoaXNOZXh0KSB7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IHRoaXMuc3RhcnREYXRlXG4gICAgICAgID8gbmV3IERhdGUoXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgICAgdGhpcy5zdGFydERhdGUuZ2V0TW9udGgoKSArIDEsXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKVxuICAgICAgICA6IGZpcnN0RGF0ZU9mTW9udGg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhcnREYXRlID0gdGhpcy5zdGFydERhdGVcbiAgICAgICAgPyBuZXcgRGF0ZShcbiAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXRNb250aCgpIC0gMSxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApXG4gICAgICAgIDogZmlyc3REYXRlT2ZNb250aDtcbiAgICB9XG5cbiAgICB0aGlzLmVuZERhdGUgPSBuZXcgRGF0ZShcbiAgICAgIHRoaXMuc3RhcnREYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXRNb250aCgpICsgMSxcbiAgICAgIDBcbiAgICApO1xuXG4gICAgcmV0dXJuIHRoaXMuc2V0Q2FsZW5kYXJSYW5nZUZpbHRlclZhbHVlKGZpbHRlcik7XG4gIH1cblxuICBzZXRXZWVrRmlsdGVyKGZpbHRlcjogSUdsb2JhbEZpbHRlciwgaXNOZXh0OiBib29sZWFuKTogRGF0ZVtde1xuICAgIGxldCBmaWx0ZXJWYWx1ZTpEYXRlPSBBcnJheS5pc0FycmF5KGZpbHRlci52YWx1ZSk/IGZpbHRlci52YWx1ZVswXTpmaWx0ZXIudmFsdWVcbiAgICBsZXQgY3VycmVudERhdGUgPSBuZXcgRGF0ZShmaWx0ZXJWYWx1ZT8gZmlsdGVyVmFsdWU6bmV3IERhdGUoKSkvL3RoaXMuc2V0RGF0ZVZhbHVlKGZpbHRlcik7XG4gICAgbGV0IGZpcnN0RGF5ID0gbmV3IERhdGUoY3VycmVudERhdGUuc2V0RGF0ZShmaWx0ZXJWYWx1ZSA/IGN1cnJlbnREYXRlLmdldERhdGUoKSA6IGN1cnJlbnREYXRlLmdldERhdGUoKSAtIGN1cnJlbnREYXRlLmdldERheSgpICsgMSkpO1xuICAgIGxldCB3ZWVrU2Vjb25kcyA9IDcgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuICAgIGxldCB2YWx1ZTpEYXRlXG4gICAgICAgIGlmIChpc05leHQpIHtcbiAgICAgIHZhbHVlID0gZmlsdGVyVmFsdWVcbiAgICAgICBmaWx0ZXIudmFsdWVcbiAgICAgICAgPyAgdmFsdWUuc2V0RGF0ZShmaWx0ZXJWYWx1ZS5nZXREYXRlKCkrNykgICAvL25ldyBEYXRlKG5ldyBEYXRlKGZpbHRlclZhbHVlKS5nZXRUaW1lKCkgKyB3ZWVrU2Vjb25kcylcbiAgICAgICAgOiB2YWx1ZT0gbmV3IERhdGUoZmlyc3REYXkuZ2V0VGltZSgpKVxuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IGZpbHRlci52YWx1ZVxuICAgICAgICA/bmV3IERhdGUoZmlsdGVyVmFsdWUuZ2V0VGltZSgpIC0gd2Vla1NlY29uZHMpXG4gICAgICAgIDogbmV3IERhdGUoZmlyc3REYXkuZ2V0VGltZSgpIC0gd2Vla1NlY29uZHMpXG4gICAgfVxuICAgIC8vdGhpcy5lbmREYXRlID0gbmV3IERhdGUodGhpcy5zdGFydERhdGUuZ2V0VGltZSgpICsgNiAqIDI0ICogNjAgKiA2MCAqIDEwMDApO1xuICAgIC8vIGxldCB2YWx1ZTpEYXRlPWZpbHRlclZhbHVlP1xuICAgIC8vICAgaXNOZXh0P25ldyBEYXRlKGZpbHRlclZhbHVlLmdldFRpbWUoKSArIHdlZWtTZWNvbmRzKTpuZXcgRGF0ZShmaWx0ZXJWYWx1ZS5nZXRUaW1lKCkgLSB3ZWVrU2Vjb25kcyk6XG4gICAgLy8gICBpc05leHQ/bmV3IERhdGUoZmlyc3REYXkuZ2V0VGltZSgpKTpuZXcgRGF0ZShmaXJzdERheS5nZXRUaW1lKCkgLSB3ZWVrU2Vjb25kcylcblxuICAgIGxldCB2YWx1ZVR3bzpEYXRlPW5ldyBEYXRlKHZhbHVlLmdldFRpbWUoKSArIDYgKiAyNCAqIDYwICogNjAgKiAxMDAwKTsgXG4gICAvLyBjb25zb2xlLmxvZygndGVzdCcsdmFsdWUsJ3Rlc3QyJyx2YWx1ZVR3bylcbiAgICByZXR1cm4gW3ZhbHVlLCB2YWx1ZVR3b11cbiAgIC8vcmV0dXJuIHRoaXMuc2V0Q2FsZW5kYXJSYW5nZUZpbHRlclZhbHVlKGZpbHRlcik7XG4gIH1cblxuICAgIC8qKlxuICAgKiBvcGVuIGRpYWxvZyBvbiBsb29rdXBDb250cm9sIGZpZWxkXG4gICAqL1xuICAgICBzZWxlY3RMb29rdXBGaWVsZChnbG9iYWxGaWx0ZXJzOiBJR2xvYmFsRmlsdGVyKSB7ICAgICAgIFxuICAgICAgdGhpcy5ncmlkU2VydmljZS5zZXRMb29rVXBGaWx0ZXIoZ2xvYmFsRmlsdGVycywgdGhpcy5kaWFsb2dTZXJ2aWNlLCB0cnVlKTtcbiAgICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIGFsbCBmaWx0ZXIgdmFsdWVzXG4gICAqL1xuICBjbGVhckZpbHRlcnMoKSB7XG4gICAgdGhpcy5nbG9iYWxGaWx0ZXJzLm1hcCgoaXRlbTogYW55KSA9PiAoaXRlbS52YWx1ZSA9IG51bGwpKTtcbiAgICBjb25zdCBjbGVhckdyaWRGaWx0ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xlYXJHcmlkRmlsdGVyVmFsdWVzQnV0dG9uJylcbiAgICBpZihjbGVhckdyaWRGaWx0ZXIpe1xuICAgICAgY2xlYXJHcmlkRmlsdGVyLmNsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgIC8qKlxuICAgKiBDbGVhciB2YWx1ZXMgb2YgRGF0ZSBSYW5nZSBGaWx0ZXJcbiAgICovXG4gICAgY2xlYXJEYXRlUmFuZ2VWYWx1ZShmaWx0ZXI6IGFueSl7XG4gICAgICB0aGlzLnNldERhdGVSYW5nZVZhbHVlKGZpbHRlciwgdHJ1ZSlcbiAgICB9XG5cbiAgLyoqXG4gICAqIENsb3NlIGRpYWxvZyB3aXRob3V0IGFwcGx5aW5nIGZpbHRlcnNcbiAgICovXG4gIGNhbmNlbCgpIHtcbiAgICB0aGlzLmNsZWFyRmlsdGVycygpO1xuICAgIHRoaXMucmVmLmNsb3NlKCk7XG4gIH1cbiAgcmFuZ2VEYXRlY2xvc2UoZ2xvYmFsRmlsdGVyOiBhbnkpIHtcbiAgICB0aGlzLmRhdGVQaWNrZXIuaGlkZU92ZXJsYXkoKTtcbiAgICB0aGlzLmRhdGVQaWNrZXIub3ZlcmxheVZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLmRhdGVQaWNrZXIuZGF0ZXBpY2tlckNsaWNrID0gdHJ1ZTtcbiAgICBjb25zdCBpZDogYW55ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0KTtcbiAgICBpZC5mb2N1cygpO1xuICAgIHRoaXMuZGF0ZVBpY2tlci5vdmVybGF5VmlzaWJsZSA9IGZhbHNlO1xuICAgIHRoaXMuZGF0ZVBpY2tlci5kYXRlcGlja2VyQ2xpY2sgPSB0cnVlO1xuXG4gIH1cblxuICBmaWx0ZXJJbnB1dCgpIHtcbiAgICB0aGlzLnNob3dJbnB1dCA9ICF0aGlzLnNob3dJbnB1dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb2N1c2VkIHRoZSBjYWxlbmRhciBpbnB1dFxuICAgKi9cbiAgc2VsZWN0RGF0ZShnbG9iYWxGaWx0ZXI6IGFueSwgZm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlKXtcbiAgICBpZihnbG9iYWxGaWx0ZXIudmFsdWU/Lmxlbmd0aCA+IDEgJiYgZ2xvYmFsRmlsdGVyLnZhbHVlWzFdICE9PSBudWxsKXtcbiAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlVmFsdWUoZ2xvYmFsRmlsdGVyKTtcbiAgICAgIGlmKGZvY3VzZWQgPT10cnVlKXtcbiAgICAgIHRoaXMucmFuZ2VEYXRlY2xvc2UoZ2xvYmFsRmlsdGVyKTsgXG4gICAgICB9XG4gICAgfVxuICAgIGlmKGZvY3VzZWQpe1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZ2xvYmFsRmlsdGVyLmZpZWxkKT8uZm9jdXMoKTtcbiAgICB9XG4gIH1cbiAgdGFiRm9jdXNFdmVudChnbG9iYWxGaWx0ZXI6IGFueSkge1xuICAgIGNvbnN0IGNsYXNzTmFtZSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJy4nK2dsb2JhbEZpbHRlci5maWVsZFxuICAgICk7XG4gICAgaWYgKGNsYXNzTmFtZSkge1xuICAgICAgY2xhc3NOYW1lLmNsaWNrKCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtY29tcG9uZW50LXdyYXBwZXItZGl2XCI+XG4gIDxkaXZcbiAgICBbY2xhc3NdPVwiZ2xvYmFsRmlsdGVyLmhpZGRlbiA/ICdnbG9iYWxGaWx0ZXJIaWRkZW4nIDogZ2xvYmFsRmlsdGVyLmNvbHVtbiA/ICdjb2wtJyArIGdsb2JhbEZpbHRlci5jb2x1bW4gOiAnY29sLTMnXCJcbiAgICAqbmdGb3I9XCJsZXQgZ2xvYmFsRmlsdGVyIG9mIGdsb2JhbEZpbHRlcnNcIlxuICA+XG4gICAgPGRpdiBbbmdTd2l0Y2hdPVwiZ2xvYmFsRmlsdGVyLnR5cGVcIj5cbiAgICAgIDwhLS0gQ2FsZW5kYXIgY29udHJvbCAtLT5cbiAgICAgIDxzcGFuIFtoaWRkZW5dPVwiZ2xvYmFsRmlsdGVyLmhpZGRlblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiICpuZ1N3aXRjaENhc2U9XCJmaXRlclR5cGVzLkNBTEVOREFSXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtbGFiZWxcIiBmb3I9XCJiYXNpY1wiPnt7IGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dCB9fVxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIucmVxdWlyZWRGaWVsZFwiIFtjbGFzc109XCIncmVxdWlyZWQtc3RhciAnICsgKGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnIGludmFsaWQgJyA6ICcnKVwiPio8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NzaWJsZS1idWxrLXVwZGF0ZS1pbnB1dC13cmFwcGVyLWRpdlwiPlxuICAgICAgICAgICAgICA8cC1jYWxlbmRhclxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJ25nLWludmFsaWQgbmctZGlydHkgJyArIGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dDogJ2ZsZXgtZ3Jvdy0xIGdyb3ctMSAnICsgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0XCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1NlbGVjdC1EYXRlJ1wiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJnbG9iYWxGaWx0ZXIudmFsdWVcIlxuICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJhcHBseUZpbHRlcnMoKVwiXG4gICAgICAgICAgICAgICAgKG9uU2VsZWN0KT1cInNlbGVjdERhdGUoZ2xvYmFsRmlsdGVyLCB0cnVlKVwiXG4gICAgICAgICAgICAgICAgW2lucHV0SWRdPVwiZ2xvYmFsRmlsdGVyLmZpZWxkXCJcbiAgICAgICAgICAgICAgICBbZGF0ZUZvcm1hdF09XCJjYWxlbmRhckZvcm1hdFwiXG4gICAgICAgICAgICAgICAgKG9uQ2xvc2UpPVwib25Gb2N1c091dEV2ZW50KGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgW3Nob3dCdXR0b25CYXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGtleXVwKT1cImNhbGVuZGFyRm9jdXNFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L3AtY2FsZW5kYXI+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnbG9iYWxGaWx0ZXIuaW50ZXJmYWNlVHlwZT09J2J1bGtVcGRhdGUnXCIgY2xhc3M9XCJwLWlucHV0LWljb24tcmlnaHQgZ2xvYmFsLWZpbHRlciBidWxrLXVwZGF0ZVwiID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVWYWx1ZXMoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgICAgaWNvbj1cImZhLXJlZ3VsYXIgZmEtYXJyb3ctZG93bi10by1kb3R0ZWQtbGluZVwiXG4gICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiAgXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZmlsdGVyaW5nXCI+XG4gICAgICAgICAgICAgICAgPHNlLWZpbHRlci1tZW51IFtnbG9iYWxGaWx0ZXJdPVwiZ2xvYmFsRmlsdGVyXCI+PC9zZS1maWx0ZXItbWVudT5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlICYmIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UubGVuZ3RoID4gMFwiIGNsYXNzPVwiZXJyb3JcIj57e1xuICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZVxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPCEtLSBDYWxlbmRhciBSYW5nZSAtLT5cbiAgICAgIDwhLS0gPHNwYW4gW2hpZGRlbl09XCJnbG9iYWxGaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWZpbHRlci1kaXZcIlxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJmaXRlclR5cGVzLkNBTEVOREFSX1JBTkdFXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIlwiIGZvcj1cImJhc2ljXCI+e3sgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0IH19XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5yZXF1aXJlZEZpZWxkXCIgW2NsYXNzXT1cIidyZXF1aXJlZC1zdGFyICcgKyAoZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICcgaW52YWxpZCAnIDogJycpXCI+Kjwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2xvYmFsRmlsdGVyLmRpc2FibGVkXCIgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICBjbGFzcz1cImN1c3RvbS1idG5cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd1ByZXZpb3VzKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICBsYWJlbD1cIlByZXZpb3VzIHt7XG4gICAgICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmRheVJhbmdlID8gZ2xvYmFsRmlsdGVyLmRheVJhbmdlIDogJ1dlZWsnXG4gICAgICAgICAgICAgIH19IDw8XCIgXG4gICAgICAgICAgICA+IC0tPlxuICAgICAgICAgICAgPCEtLSBbbmdTdHlsZV09XCJ7IGJhY2tncm91bmQ6IGdsb2JhbEZpbHRlci5jb2xvciA/IGdsb2JhbEZpbHRlci5jb2xvciA6ICcnfVwiIC0tPlxuICAgICAgICAgIDwhLS0gPC9idXR0b24+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnbG9iYWwtZmlsdGVycy1sYWJlbFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzXT1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnbmctaW52YWxpZCBuZy1kaXJ0eScgOiAnJ1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIucHJlZml4PT09dHJ1ZSB8fCBnbG9iYWxGaWx0ZXIucHJlZml4PT09dW5kZWZpbmVkXCI+XG4gICAgICAgICAgICAgICAge3sgIGdsb2JhbEZpbHRlci5sYWJlbFRleHQgPyBnbG9iYWxGaWx0ZXIubGFiZWxUZXh0IDogJycgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPiAtLT5cbiAgICAgICAgICAgICAgPCEtLSB7e1xuICAgICAgICAgICAgICAgIHN0YXJ0RGF0ZVxuICAgICAgICAgICAgICAgICAgfCBkYXRlXG4gICAgICAgICAgICAgICAgICAgIDogKGdsb2JhbEZpbHRlci5mb3JtYXQgPyBnbG9iYWxGaWx0ZXIuZm9ybWF0IDogJ01NL2RkL3l5eXknKVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICB0b1xuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIGVuZERhdGVcbiAgICAgICAgICAgICAgICAgIHwgZGF0ZVxuICAgICAgICAgICAgICAgICAgICA6IChnbG9iYWxGaWx0ZXIuZm9ybWF0ID8gZ2xvYmFsRmlsdGVyLmZvcm1hdCA6ICdNTS9kZC95eXl5JylcbiAgICAgICAgICAgICAgfX0gLS0+XG4gICAgICAgICAgICAgIDwhLS0gPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIucHJlZml4PT09ZmFsc2VcIj5cbiAgICAgICAgICAgICAgICB7eyBnbG9iYWxGaWx0ZXIubGFiZWxUZXh0ID8gZ2xvYmFsRmlsdGVyLmxhYmVsVGV4dCA6ICcnfX1cbiAgICAgICAgICAgICAgPC9zcGFuPjwvbGFiZWxcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20tYnRuXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dOZXh0KGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICBsYWJlbD1cIk5leHQge3tcbiAgICAgICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZGF5UmFuZ2UgPyBnbG9iYWxGaWx0ZXIuZGF5UmFuZ2UgOiAnV2VlaydcbiAgICAgICAgICAgICAgfX0gPj5cIlxuICAgICAgICAgICAgPiAtLT5cbiAgICAgICAgICAgIDwhLS0gW25nU3R5bGVdPVwieyBiYWNrZ3JvdW5kOiBnbG9iYWxGaWx0ZXIuY29sb3IgPyBnbG9iYWxGaWx0ZXIuY29sb3IgOiAnJ31cIiAtLT5cbiAgICAgICAgICA8IS0tIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSAmJiBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlLmxlbmd0aCA+IDBcIiBjbGFzcz1cImVycm9yXCI+e3tcbiAgICAgICAgICAgIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2VcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NwYW4+IC0tPlxuXG4gICAgICA8IS0tIENoZWNrYm94IENvbnRyb2wgLS0+XG4gICAgICA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWZpbHRlci1kaXZcIiAqbmdTd2l0Y2hDYXNlPVwiZml0ZXJUeXBlcy5DSEVDS0JPWFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIlwiIGZvcj1cImJhc2ljXCI+e3sgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0IH19XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5yZXF1aXJlZEZpZWxkXCIgW2NsYXNzXT1cIidyZXF1aXJlZC1zdGFyICcgKyAoZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICcgaW52YWxpZCAnIDogJycpXCI+Kjwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NzaWJsZS1idWxrLXVwZGF0ZS1pbnB1dC13cmFwcGVyLWRpdlwiPlxuICAgICAgICAgICAgPHAtY2hlY2tib3hcbiAgICAgICAgICAgIFtjbGFzc109XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJ25nLWludmFsaWQgbmctZGlydHknOiAnZmxleCBhbGlnbi1pdGVtcy1jZW50ZXInXCJcbiAgICAgICAgICAgICAgW2JpbmFyeV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImFwcGx5RmlsdGVycygpXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJnbG9iYWxGaWx0ZXIudmFsdWVcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2xvYmFsRmlsdGVyLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uRm9jdXNPdXRFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgID48L3AtY2hlY2tib3g+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmludGVyZmFjZVR5cGU9PSdidWxrVXBkYXRlJ1wiIGNsYXNzPVwicC1pbnB1dC1pY29uLXJpZ2h0IGdsb2JhbC1maWx0ZXIgYnVsay11cGRhdGVcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVZhbHVlcyhnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgaWNvbj1cImZhLXJlZ3VsYXIgZmEtYXJyb3ctZG93bi10by1kb3R0ZWQtbGluZVwiXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiICBcbiAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlICYmIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UubGVuZ3RoID4gMFwiIGNsYXNzPVwiZXJyb3JcIj57e1xuICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZVxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPCEtLSBTcGFjZXIgQ29udHJvbCAtLT5cbiAgICAgIDxzcGFuICpuZ0lmPVwiIWdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cImZpdGVyVHlwZXMuU1BBQ0VSXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBbY2xhc3NdPVwiXG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXIuY29sdW1uXG4gICAgICAgICAgICAgICAgPyAnY29sLScgKyBnbG9iYWxGaWx0ZXIuY29sdW1uXG4gICAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPCEtLSBEcm9wZG93biBDb250cm9sIC0tPlxuICAgICAgPHNwYW4gW2hpZGRlbl09XCJnbG9iYWxGaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnbG9iYWwtZmlsdGVycy1maWx0ZXItZGl2XCIgKm5nU3dpdGNoQ2FzZT1cImZpdGVyVHlwZXMuRFJPUERPV05cIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnbG9iYWwtZmlsdGVycy1sYWJlbFwiIGZvcj1cImJhc2ljXCI+e3sgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0IH19XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5yZXF1aXJlZEZpZWxkXCIgW2NsYXNzXT1cIidyZXF1aXJlZC1zdGFyICcgKyAoZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICcgaW52YWxpZCAnIDogJycpXCI+Kjwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NzaWJsZS1idWxrLXVwZGF0ZS1pbnB1dC13cmFwcGVyLWRpdlwiPlxuICAgICAgICAgICAgPHAtZHJvcGRvd25cbiAgICAgICAgICAgICAgW2NsYXNzXT1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnbmctaW52YWxpZCBuZy1kaXJ0eScgOiAnJ1wiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICAgICAgW25hbWVdPVwiZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0XCJcbiAgICAgICAgICAgICAgW3Nob3dDbGVhcl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgW3N0eWxlQ2xhc3NdPVwiZ2xvYmFsRmlsdGVyLmZpZWxkXCJcbiAgICAgICAgICAgICAgKGtleXVwLlRhYik9XCJ0YWJGb2N1c0V2ZW50KGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0XCJcbiAgICAgICAgICAgICAgW29wdGlvbnNdPVwiZ2xvYmFsRmlsdGVyLmRhdGEgfHwgW11cIlxuICAgICAgICAgICAgICBbb3B0aW9uTGFiZWxdPVwiZ2xvYmFsRmlsdGVyLm9wdGlvbkxhYmVsXCJcbiAgICAgICAgICAgICAgW29wdGlvblZhbHVlXT1cImdsb2JhbEZpbHRlci5vcHRpb25WYWx1ZVwiXG4gICAgICAgICAgICAgIFtmaWx0ZXJdPVwiZ2xvYmFsRmlsdGVyLmFsbG93U2VhcmNoXCJcbiAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uRm9jdXNPdXRFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImFwcGx5RmlsdGVycygpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiXG4gICAgICAgICAgICA+PC9wLWRyb3Bkb3duPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdsb2JhbEZpbHRlci5pbnRlcmZhY2VUeXBlPT0nYnVsa1VwZGF0ZSdcIiBjbGFzcz1cInAtaW5wdXQtaWNvbi1yaWdodCBnbG9iYWwtZmlsdGVyIGJ1bGstdXBkYXRlXCIgPlxuICAgICAgICAgICAgICA8YnV0dG9uIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlVmFsdWVzKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICBpY29uPVwiZmEtcmVndWxhciBmYS1hcnJvdy1kb3duLXRvLWRvdHRlZC1saW5lXCJcbiAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgIFxuICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgJiYgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCIgY2xhc3M9XCJlcnJvclwiPnt7XG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8IS0tIElucHV0IGNvbnRyb2wgLS0+XG4gICAgICA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWZpbHRlci1kaXZcIiAqbmdTd2l0Y2hDYXNlPVwiZml0ZXJUeXBlcy5JTlBVVFwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIlwiIGZvcj1cImJhc2ljXCI+e3sgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0IH19XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5yZXF1aXJlZEZpZWxkXCIgW2NsYXNzXT1cIidyZXF1aXJlZC1zdGFyICcgKyAoZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICcgaW52YWxpZCAnIDogJycpXCI+Kjwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NzaWJsZS1idWxrLXVwZGF0ZS1pbnB1dC13cmFwcGVyLWRpdlwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgcElucHV0VGV4dFxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImdsb2JhbEZpbHRlci52YWx1ZVwiXG4gICAgICAgICAgICAgIFtjbGFzc109XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJ25nLWludmFsaWQgbmctZGlydHknIDogJydcIlxuICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiYXBwbHlGaWx0ZXJzKClcIlxuICAgICAgICAgICAgICAoYmx1cik9XCJvbkZvY3VzT3V0RXZlbnQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiIFxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnbG9iYWxGaWx0ZXIuaW50ZXJmYWNlVHlwZT09J2J1bGtVcGRhdGUnXCIgY2xhc3M9XCJwLWlucHV0LWljb24tcmlnaHQgZ2xvYmFsLWZpbHRlciBidWxrLXVwZGF0ZVwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlVmFsdWVzKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICBpY29uPVwiZmEtcmVndWxhciBmYS1hcnJvdy1kb3duLXRvLWRvdHRlZC1saW5lXCJcbiAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgIFxuICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmZpbHRlcmluZ1wiPlxuICAgICAgICAgICAgICA8c2UtZmlsdGVyLW1lbnUgW2dsb2JhbEZpbHRlcl09XCJnbG9iYWxGaWx0ZXJcIj48L3NlLWZpbHRlci1tZW51PlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSAmJiBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlLmxlbmd0aCA+IDBcIiBjbGFzcz1cImVycm9yXCI+e3tcbiAgICAgICAgICAgIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2VcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDwhLS0gTnVtZXJpY0lucHV0IGNvbnRyb2wgLS0+XG4gICAgICA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cImZpdGVyVHlwZXMuTlVNRVJJQ0lOUFVUXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWxhYmVsXCIgZm9yPVwiYmFzaWNcIj57eyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQgfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnJlcXVpcmVkRmllbGRcIiBbY2xhc3NdPVwiJ3JlcXVpcmVkLXN0YXIgJyArIChnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJyBpbnZhbGlkICcgOiAnJylcIj4qPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1ub3dyYXAgYWxpZ24taXRlbXMtY2VudGVyIHBvc3NpYmxlLWJ1bGstdXBkYXRlLWlucHV0LXdyYXBwZXItZGl2XCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJnbG9iYWxGaWx0ZXIudmFsdWVcIlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICduZy1pbnZhbGlkIG5nLWRpcnR5JyA6ICcnXCJcbiAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImFwcGx5RmlsdGVycygpXCJcbiAgICAgICAgICAgICAgKGJsdXIpPVwib25Gb2N1c091dEV2ZW50KGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2xvYmFsRmlsdGVyLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnbG9iYWxGaWx0ZXIuaW50ZXJmYWNlVHlwZT09J2J1bGtVcGRhdGUnXCIgY2xhc3M9XCJwLWlucHV0LWljb24tcmlnaHQgZ2xvYmFsLWZpbHRlciBidWxrLXVwZGF0ZVwiID5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVZhbHVlcyhnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgaWNvbj1cImZhLXJlZ3VsYXIgZmEtYXJyb3ctZG93bi10by1kb3R0ZWQtbGluZVwiXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiICBcbiAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5maWx0ZXJpbmdcIj5cbiAgICAgICAgICAgICAgPHNlLWZpbHRlci1tZW51IFtnbG9iYWxGaWx0ZXJdPVwiZ2xvYmFsRmlsdGVyXCI+PC9zZS1maWx0ZXItbWVudT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgJiYgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCIgY2xhc3M9XCJlcnJvclwiPnt7XG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuICAgICAgXG4gICAgICA8IS0tIERhdGUgUmFuZ2UgQ29udHJvbCAtLT5cbiAgICAgIDxzcGFuIFtoaWRkZW5dPVwiZ2xvYmFsRmlsdGVyLmhpZGRlblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiICpuZ1N3aXRjaENhc2U9XCJmaXRlclR5cGVzLkRBVEVfUkFOR0VcIj5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwiYmFzaWNcIj57eyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQgfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnJlcXVpcmVkRmllbGRcIiBbY2xhc3NdPVwiJ3JlcXVpcmVkLXN0YXIgJyArIChnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJyBpbnZhbGlkICcgOiAnJylcIj4qPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmRheVJhbmdlXCJcbiAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgY2xhc3M9XCJjYWxlbmRhci1yYW5nZS1idG4gIGNhbGVuZGFyLXByZXZpb3VzXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dQcmV2aW91cyhnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgbGFiZWw9XCI8PFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8IS0tIFwiUHJldmlvdXMge3tcbiAgICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmRheVJhbmdlID8gZ2xvYmFsRmlsdGVyLmRheVJhbmdlIDogJ1dlZWsnXG4gICAgICAgICAgICB9fSA8PFwiIC0tPlxuICAgICAgICAgICAgPCEtLSBbbmdTdHlsZV09XCJ7IGJhY2tncm91bmQ6IGdsb2JhbEZpbHRlci5jb2xvciA/IGdsb2JhbEZpbHRlci5jb2xvciA6ICcnfVwiIC0tPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPHAtY2FsZW5kYXIgXG4gICAgICAgICAgICAjcmFuZ2VDYWxlbmRhclxuICAgICAgICAgICAgW3Nob3dCdXR0b25CYXJdPVwidHJ1ZVwiXG5cbiAgICAgICAgICAgIFtpbnB1dElkXT1cImdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dFwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICduZy1pbnZhbGlkIG5nLWRpcnR5ICcgKyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQgOiAnZmxleC1ncm93LTEgZ3Jvdy0xICcgKyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHRcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJnbG9iYWxGaWx0ZXIudmFsdWVcIiBcbiAgICAgICAgICAgIHNlbGVjdGlvbk1vZGU9XCJyYW5nZVwiIFxuICAgICAgICAgICAgW3NlbGVjdE90aGVyTW9udGhzXT1cInRydWVcIlxuICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCJcbiAgICAgICAgICAgIChvblNlbGVjdCk9XCJzZWxlY3REYXRlKGdsb2JhbEZpbHRlciwgdHJ1ZSlcIlxuICAgICAgICAgICAgW2RhdGVGb3JtYXRdPVwiY2FsZW5kYXJGb3JtYXRcIlxuICAgICAgICAgICAgKG9uQ2xvc2UpPVwib25Gb2N1c091dEV2ZW50KGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgKG9uQ2xpY2tPdXRzaWRlKT1cInNldERhdGVSYW5nZUZpbHRlclZhbHVlKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgKG9uQmx1cik9XCJzZXREYXRlUmFuZ2VGaWx0ZXJWYWx1ZShnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgIChrZXl1cCk9XCJjYWxlbmRhckZvY3VzRXZlbnQoZ2xvYmFsRmlsdGVyLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIChvbkNsZWFyQ2xpY2spPVwiY2xlYXJEYXRlUmFuZ2VWYWx1ZShnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImFwcGx5RmlsdGVycyh0cnVlLCBnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgPjwvcC1jYWxlbmRhcj5cbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZGF5UmFuZ2VcIlxuICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2xvYmFsRmlsdGVyLmRpc2FibGVkXCIgICAgICAgICAgICAgIFxuICAgICAgICAgICAgY2xhc3M9XCJjYWxlbmRhci1yYW5nZS1idG4gY2FsZW5kYXItbmV4dFwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2hvd05leHQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICBsYWJlbD1cIj4+XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPCEtLSBOZXh0IHt7XG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZGF5UmFuZ2UgPyBnbG9iYWxGaWx0ZXIuZGF5UmFuZ2UgOiAnV2VlaydcbiAgICAgICAgICB9fSA+PlwiIC0tPlxuICAgICAgICAgIDwhLS0gW25nU3R5bGVdPVwieyBiYWNrZ3JvdW5kOiBnbG9iYWxGaWx0ZXIuY29sb3IgPyBnbG9iYWxGaWx0ZXIuY29sb3IgOiAnJ31cIiAtLT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8IS0tIHRvZGF5QnV0dG9uU3R5bGVDbGFzcz1cImhpZGRlblwiXG4gICAgICAgICAgICBjbGVhckJ1dHRvblN0eWxlQ2xhc3M9XCJtbC1hdXRvXCIgLS0+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5maWx0ZXJpbmdcIj5cbiAgICAgICAgICAgICAgPHNlLWZpbHRlci1tZW51IFtnbG9iYWxGaWx0ZXJdPVwiZ2xvYmFsRmlsdGVyXCI+PC9zZS1maWx0ZXItbWVudT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgJiYgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCIgY2xhc3M9XCJlcnJvclwiPnt7XG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8IS0tIE51bWVyaWMgUmFuZ2UgY29udHJvbCAtLT5cbiAgICAgIDxzcGFuIFtoaWRkZW5dPVwiZ2xvYmFsRmlsdGVyLmhpZGRlblwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJnbG9iYWwtZmlsdGVycy1maWx0ZXItZGl2XCJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiZml0ZXJUeXBlcy5OVU1FUklDX1JBTkdFXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJiYXNpY1wiPnt7IGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dCB9fVxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIucmVxdWlyZWRGaWVsZFwiIFtjbGFzc109XCIncmVxdWlyZWQtc3RhciAnICsgKGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnIGludmFsaWQgJyA6ICcnKVwiPio8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtbm93cmFwIGFsaWduLWl0ZW1zLWNlbnRlciBtci0yXCI+XG4gICAgICAgICAgICA8cC1pbnB1dE51bWJlclxuICAgICAgICAgICAgW3Nob3dCdXR0b25zXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJnbG9iYWxGaWx0ZXIudmFsdWVcIlxuICAgICAgICAgICAgICBbbWluRnJhY3Rpb25EaWdpdHNdPVwiZ2xvYmFsRmlsdGVyPy5mb3JtYXQ/LnR5cGUgPT09ICdkZWNpbWFsJyA/IGdsb2JhbEZpbHRlci5mb3JtYXQ/LmZvcm1hdFBhcmFtcz8uZGlnaXRzSW5mbyA/IGdsb2JhbEZpbHRlci5mb3JtYXQ/LmZvcm1hdFBhcmFtcz8uZGlnaXRzSW5mbyA6ICcyJyA6ICcwJ1wiXG4gICAgICAgICAgICAgIFttYXhGcmFjdGlvbkRpZ2l0c109XCJnbG9iYWxGaWx0ZXI/LmZvcm1hdD8udHlwZSA9PT0gJ2RlY2ltYWwnID8gZ2xvYmFsRmlsdGVyLmZvcm1hdD8uZm9ybWF0UGFyYW1zPy5kaWdpdHNJbmZvID8gZ2xvYmFsRmlsdGVyLmZvcm1hdD8uZm9ybWF0UGFyYW1zPy5kaWdpdHNJbmZvIDogJzInIDogJzAnXCJcbiAgICAgICAgICAgICAgKG9uQmx1cik9XCJzZXROdW1lcmljUmFuZ2VWYWx1ZUZyb20oZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJzZXROdW1lcmljUmFuZ2VWYWx1ZUZyb20oZ2xvYmFsRmlsdGVyLHRydWUpXCJcbiAgICAgICAgICAgICAgW2NsYXNzXT1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnbmctaW52YWxpZCBuZy1kaXJ0eScgOiAnZmxleC1ncm93LTEgIGdyb3ctMSBpbnB1dC1udW1iZXInXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3AtaW5wdXROdW1iZXI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgJiYgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCIgY2xhc3M9XCJlcnJvclwiPnt7XG4gICAgICAgICAgICAgIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2VcbiAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG8tbnVtZXJpYyBtci0yXCI+VG88L3NwYW4+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1ub3dyYXAgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8cC1pbnB1dE51bWJlclxuICAgICAgICAgICAgW3Nob3dCdXR0b25zXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJnbG9iYWxGaWx0ZXIudmFsdWVUd29cIlxuICAgICAgICAgICAgICBbbWluRnJhY3Rpb25EaWdpdHNdPVwiZ2xvYmFsRmlsdGVyPy5mb3JtYXQ/LnR5cGUgPT09ICdkZWNpbWFsJyA/IGdsb2JhbEZpbHRlci5mb3JtYXQ/LmZvcm1hdFBhcmFtcz8uZGlnaXRzSW5mbyA/IGdsb2JhbEZpbHRlci5mb3JtYXQ/LmZvcm1hdFBhcmFtcz8uZGlnaXRzSW5mbyA6ICcyJyA6ICcwJ1wiXG4gICAgICAgICAgICAgIFttYXhGcmFjdGlvbkRpZ2l0c109XCJnbG9iYWxGaWx0ZXI/LmZvcm1hdD8udHlwZSA9PT0gJ2RlY2ltYWwnID8gZ2xvYmFsRmlsdGVyLmZvcm1hdD8uZm9ybWF0UGFyYW1zPy5kaWdpdHNJbmZvID8gZ2xvYmFsRmlsdGVyLmZvcm1hdD8uZm9ybWF0UGFyYW1zPy5kaWdpdHNJbmZvIDogJzInIDogJzAnXCJcbiAgICAgICAgICAgICAgW2NsYXNzXT1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnbmctaW52YWxpZCBuZy1kaXJ0eScgOiAnZmxleC1ncm93LTEgbXItMiBncm93LTEgaW5wdXQtbnVtYmVyJ1wiXG4gICAgICAgICAgICAgIChvbkJsdXIpPVwic2V0TnVtZXJpY1JhbmdlVmFsdWVUd28oZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJzZXROdW1lcmljUmFuZ2VWYWx1ZVR3byhnbG9iYWxGaWx0ZXIsdHJ1ZSlcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2xvYmFsRmlsdGVyLmRpc2FibGVkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvcC1pbnB1dE51bWJlcj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmZpbHRlcmluZ1wiPlxuICAgICAgICAgICAgICA8c2UtZmlsdGVyLW1lbnUgW2dsb2JhbEZpbHRlcl09XCJnbG9iYWxGaWx0ZXJcIj48L3NlLWZpbHRlci1tZW51PlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlICYmIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UubGVuZ3RoID4gMFwiIGNsYXNzPVwiZXJyb3JcIj57e1xuICAgICAgICAgIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2VcbiAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8IS0tIE11bHRpU2VsZWN0IGNvbnRyb2wgLS0+XG4gICAgICA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cImZpdGVyVHlwZXMuTVVMVElTRUxFQ1RcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiXCIgZm9yPVwiYmFzaWNcIj57eyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQgfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnJlcXVpcmVkRmllbGRcIiBbY2xhc3NdPVwiJ3JlcXVpcmVkLXN0YXIgJyArIChnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJyBpbnZhbGlkICcgOiAnJylcIj4qPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPHAtbXVsdGlTZWxlY3RcbiAgICAgICAgICAgIFtjbGFzc109XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJ25nLWludmFsaWQgbmctZGlydHknIDogJydcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJnbG9iYWxGaWx0ZXIudmFsdWVcIlxuICAgICAgICAgICAgW29wdGlvbnNdPVwiZ2xvYmFsRmlsdGVyLmRhdGFcIlxuICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiYXBwbHlGaWx0ZXJzKClcIlxuICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uRm9jdXNPdXRFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgIG9wdGlvblZhbHVlPVwidmFsdWVcIlxuICAgICAgICAgICAgW2FwcGVuZFRvXT1cIidib2R5J1wiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2xvYmFsRmlsdGVyLmRpc2FibGVkXCJcbiAgICAgICAgICA+PC9wLW11bHRpU2VsZWN0PlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSAmJiBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlLmxlbmd0aCA+IDBcIiBjbGFzcz1cImVycm9yXCI+e3tcbiAgICAgICAgICAgIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2VcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NwYW4+XG5cblxuICAgICAgICAgPCEtLSBTZWxlY3QgQnV0dG9uIGNvbnRyb2wgLS0+XG4gICAgICA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cImZpdGVyVHlwZXMuU0VMRUNUQlVUVE9OXCJcblxuICAgICAgICA+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cIlwiIGZvcj1cImJhc2ljXCI+e3sgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0IH19XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIucmVxdWlyZWRGaWVsZFwiIFtjbGFzc109XCIncmVxdWlyZWQtc3RhciAnICsgKGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnIGludmFsaWQgJyA6ICcnKVwiPio8L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxwLXNlbGVjdEJ1dHRvblxuICAgICAgICAgIFtjbGFzc109XCInIG1vZGVybml6ZWRSYWRpb0xvb2sgJyArIChnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJyBuZy1pbnZhbGlkIG5nLWRpcnR5ICcgOiAnJylcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICBbb3B0aW9uc109XCJnbG9iYWxGaWx0ZXIuZGF0YVwiXG4gICAgICAgICAgb3B0aW9uTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uRm9jdXNPdXRFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICBvcHRpb25WYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICBbbXVsdGlwbGVdPVwiZ2xvYmFsRmlsdGVyLmRpc3BsYXlTdHlsZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiICBcbiAgICAgICAgPlxuICAgICAgICA8IS0tIDxuZy10ZW1wbGF0ZSBsZXQtaXRlbSBwVGVtcGxhdGU+XG4gICAgICAgICAgPGkgW2NsYXNzXT1cIml0ZW0uaWNvblwiPjwvaT5cbiAgICAgIDwvbmctdGVtcGxhdGU+IC0tPlxuICAgICAgPC9wLXNlbGVjdEJ1dHRvbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlICYmIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UubGVuZ3RoID4gMFwiIGNsYXNzPVwiZXJyb3JcIj57e1xuICAgICAgICAgIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2VcbiAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuXG5cblxuICAgICAgPCEtLSBMb29rdXAgQ29udHJvbCBGaWVsZCAtLT5cbiAgICAgIDxzcGFuIFtoaWRkZW5dPVwiZ2xvYmFsRmlsdGVyLmhpZGRlblwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJnbG9iYWwtZmlsdGVycy1maWx0ZXItZGl2XCJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiZml0ZXJUeXBlcy5MT09LVVBfSU5QVVRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtbGFiZWxcIiBmb3I9XCJiYXNpY1wiPnt7IGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dCB9fVxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIucmVxdWlyZWRGaWVsZFwiIFtjbGFzc109XCIncmVxdWlyZWQtc3RhciAnICsgKGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnIGludmFsaWQgJyA6ICcnKVwiPio8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zc2libGUtYnVsay11cGRhdGUtaW5wdXQtd3JhcHBlci1kaXZcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbG9zZS1pY29uLXdyYXBwZXIgbG9va3VwLWZpbHRlci13cmFwcGVyIGdsb2JhbEZpbHRlcnNcIj4gXG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJ25nLWludmFsaWQgbmctZGlydHknIDogJydcIlxuICAgICAgICAgICAgICAgIFtpZF09XCJnbG9iYWxGaWx0ZXIuZmllbGRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBwSW5wdXRUZXh0XG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJnbG9iYWxGaWx0ZXI/LnZhbHVlVHdvPy50ZXh0ID8gZ2xvYmFsRmlsdGVyLnZhbHVlVHdvLnRleHQgOiBnbG9iYWxGaWx0ZXIudmFsdWVcIlxuICAgICAgICAgICAgICAgIChibHVyKT1cIm9uRm9jdXNPdXRFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJnbG9iYWxGaWx0ZXIuZmllbGRcIlxuICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJhcHBseUZpbHRlcnMoKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdExvb2t1cEZpZWxkKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChrZXl1cC5UYWIpPVwic2VsZWN0TG9va3VwRmllbGQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgICAgKGtleXVwLmJhY2tzcGFjZSk9XCJyZW1vdmVOdWxsTG9va3VwKCRldmVudCwgZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbG9va3VwLWlucHV0XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWlucHV0LWljb24tcmlnaHQgZ2xvYmFsLWZpbHRlclwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktY2hldnJvbi1yaWdodCBsb29rdXAtaW5wdXQtaWNvbiBnbG9iYWwtZmlsdGVyXCI+PC9pPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXJlY3Qtd3JhcHBlci1jbG9zZS1pY29uLWxvb2t1cFwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJnbG9iYWxGaWx0ZXIudmFsdWVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJsb29rdXBDbGVhclZhbHVlKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICAgIGljb249XCJwaSBwaS10aW1lc1wiXG4gICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdsb2JhbEZpbHRlci5pbnRlcmZhY2VUeXBlPT0nYnVsa1VwZGF0ZSdcIiBjbGFzcz1cInAtaW5wdXQtaWNvbi1yaWdodCBnbG9iYWwtZmlsdGVyIGJ1bGstdXBkYXRlXCIgPlxuICAgICAgICAgICAgICA8YnV0dG9uIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlVmFsdWVzKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICBpY29uPVwiZmEtcmVndWxhciBmYS1hcnJvdy1kb3duLXRvLWRvdHRlZC1saW5lXCJcbiAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgIFxuICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgJiYgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCIgY2xhc3M9XCJlcnJvclwiPnt7XG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPCEtLSA8c3Bhbj5cbiAgPGkgIGljb249XCJwaSBwaS10aW1lc1wiPjwvaT5cbjwvc3Bhbj4gLS0+XG5cbjwhLS0gQXBwbHkgYnV0dG9uIC0tPlxuXG48YnV0dG9uXG5wQnV0dG9uXG4qbmdJZj1cIiFncmlkVXBkYXRlXCJcbnR5cGU9XCJidXR0b25cIlxuaWNvbj1cInBpIHBpLXNlYXJjaFwiXG5pZD1cInNlYXJjaEdsb2JhbEZpbHRlckJ0blwiXG4oY2xpY2spPVwiYXBwbHlGaWx0ZXJzKClcIlxuY2xhc3M9XCJnbG9iYWwtc2VhcmNoIGFsaWduLWdsb2JhbEZpbHRlci1idG4gZ2xvYmFsLWJ0biBoaWRlLWZpbHRlci1idXR0b25cIlxuPjwvYnV0dG9uPlxuXG48IS0tIENsb3NlIGJ1dHRvbiAtLT5cbjxidXR0b25cbnBCdXR0b25cbipuZ0lmPVwiIWdyaWRVcGRhdGVcIlxuaWQ9XCJjbGVhckdsb2JhbEZpbHRlckJ0blwiXG50eXBlPVwiYnV0dG9uXCJcbmljb249XCJwaSBwaS1yZXBsYXlcIlxuKGNsaWNrKT1cImNsZWFyRmlsdGVycygpXCJcbmNsYXNzPVwiaGlkZS1maWx0ZXItYnV0dG9uXCJcbj48L2J1dHRvbj5cbiJdfQ==
571
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLWZpbHRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2UtdWktdG9vbGtpdC9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkL2dsb2JhbC1maWx0ZXJzL2dsb2JhbC1maWx0ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlLXVpLXRvb2xraXQvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC9nbG9iYWwtZmlsdGVycy9nbG9iYWwtZmlsdGVycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEgsT0FBTyxFQUVMLHFCQUFxQixFQUNyQixlQUFlLEVBRWYsU0FBUyxFQUNULGdCQUFnQixHQUVqQixNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBU3BDLE1BQU0sT0FBTyx1QkFBdUI7SUFRbEMsSUFBYSxjQUFjLENBQUUsR0FBTyxJQUFJLElBQUcsR0FBRyxLQUFLLElBQUksRUFBRTtRQUFFLFFBQVEsQ0FBQTtLQUFFLENBQUEsQ0FBQztJQWN0RSxZQUNTLFFBQWtCLEVBQ04sR0FBcUIsRUFDckIsTUFBMkIsRUFDdEMsV0FBd0IsRUFDekIsYUFBNEIsRUFDM0IsWUFBMEIsRUFDMUIsRUFBYztRQU5mLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDTixRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUN0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN6QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBM0JmLGtCQUFhLEdBQW9CLEVBQUUsQ0FBQztRQUNwQywwQkFBcUIsR0FBWSxLQUFLLENBQUM7UUFDdkMseUJBQW9CLEdBQVksS0FBSyxDQUFDO1FBQ3RDLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDM0IsbUJBQWMsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN2RCxnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBR3ZELGVBQVUsR0FBRyxxQkFBcUIsQ0FBQztRQUNuQyxlQUFVLEdBQUcsZUFBZSxDQUFDO1FBQzdCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFLbkMsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixXQUFNLEdBQVEsRUFBRSxDQUFDO1FBQ2pCLHVCQUFrQixHQUFZLElBQUksQ0FBQztRQUNuQyxtQkFBYyxHQUFVLFVBQVUsQ0FBQztJQVUvQixDQUFDO0lBRUw7O09BRUc7SUFDSCxRQUFRO1FBQ04sSUFBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFDO1lBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQzlDLElBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFDO2dCQUNoQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWdDLENBQUM7YUFDekU7WUFFRCxnQ0FBZ0M7WUFDaEMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztJQUVELHVCQUF1QixDQUFDLFNBQVM7UUFDL0IsSUFBRyxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUM7WUFDOUIsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEQsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDbkM7YUFBSztZQUNKLElBQUcsSUFBSSxDQUFDLGNBQWMsRUFBQztnQkFDckIsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQy9GLElBQUksY0FBYyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUM7b0JBQ3ZGLFNBQVMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFBO29CQUNwQixTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNqRCxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNqRCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDbkM7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUdELGtCQUFrQixDQUFDLEdBQUc7UUFDcEIsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2hCLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBRUQsZUFBZSxDQUFDLENBQUM7UUFDZixPQUFPLENBQUMsR0FBRyxHQUFHLENBQUE7SUFDaEIsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxrQkFBa0IsQ0FBQyxZQUEwQixFQUFFLEtBQVc7UUFDeEQsUUFBUSxDQUFDLHNCQUFzQixDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFNLEVBQUUsRUFBRTtZQUNqRyxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkQsSUFBSSxHQUFHLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQTtZQUN0QyxJQUFJLGNBQWMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3pGLDZEQUE2RDtZQUM3RCxJQUFJLGNBQWMsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzFLLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQy9DLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3ZELGNBQWMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7aUJBQzlCO2dCQUNELElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQy9DLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDdEQsY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztpQkFDNUI7Z0JBQ0QsSUFBSSxJQUFJLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ3RELENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQzthQUN2QjtZQUNELElBQUcsSUFBSSxFQUFFLE1BQU0sS0FBSyxDQUFDLEVBQUM7Z0JBQ3BCLElBQUksQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDO2dCQUNqQyxJQUFHLFlBQVksQ0FBQyxJQUFJLEtBQUsscUJBQXFCLENBQUMsUUFBUSxFQUFDO29CQUN0RCxZQUFZLENBQUMsS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQzNFO2FBQ0Y7aUJBQU0sSUFBRyxJQUFJLEVBQUUsTUFBTSxFQUFDO2dCQUNyQixJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQzthQUNqQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxTQUFTLEdBQUcsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLElBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksU0FBUyxJQUFJLFNBQVMsSUFBSSxTQUFTLEVBQUUsUUFBUSxFQUFFLEVBQUUsTUFBTSxLQUFLLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxJQUFJLEtBQUsscUJBQXFCLENBQUMsVUFBVSxFQUFDO1lBQ2xKLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDNUM7SUFDSCxDQUFDO0lBQ0QscUJBQXFCLENBQUMsTUFBb0I7UUFDeEMsSUFBRyxNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUEsRUFBRSxDQUFBLFVBQVUsQ0FBQyxJQUFJLEtBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQUM7WUFDbkYsTUFBTSxDQUFDLGFBQWEsR0FBQyxJQUFJLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBQ0QscUJBQXFCLENBQUMsY0FBc0IsS0FBSztRQUMvQyxJQUFJLEtBQUssR0FBVyxLQUFLLENBQUM7UUFDMUIsSUFBRyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztZQUNyRCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBQyxFQUFFO2dCQUNuQyxJQUFHLE1BQU0sQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLGdCQUFnQixDQUFDLFFBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUM7b0JBQ2xKLEtBQUssR0FBRyxJQUFJLENBQUM7b0JBQ2IsTUFBTSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsV0FBVyxHQUFDLGNBQWMsQ0FBQztpQkFDekQ7cUJBQU07b0JBQ0wsTUFBTSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7aUJBQzFCO1lBQ0gsQ0FBQyxDQUFDLENBQUE7U0FDSDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNuQyxJQUFJLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLEtBQUssSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxFQUFFO2dCQUM1RSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDaEM7UUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNGLGdDQUFnQztRQUNoQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEMsTUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUNoRCw2QkFBNkIsQ0FDOUIsQ0FBQztRQUNGLElBQUksa0JBQWtCLEVBQUU7WUFDdEIsSUFBSSxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLDBCQUEwQixDQUFDLEVBQUU7Z0JBQ3JFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7YUFDaEM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQzthQUNqQztTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1NBQ2hDO1FBRUQsbUZBQW1GO1FBQ25GLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hILGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNyQyxJQUFJLFNBQVMsQ0FBQyxLQUFLLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRTtnQkFDekMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLFFBQVEsRUFBRTtvQkFDekMsU0FBUyxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7aUJBQ3hEO2dCQUNELElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxRQUFRLEVBQUU7b0JBQzVDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2lCQUM5RDtnQkFDRCxTQUFTLENBQUMsS0FBSyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxHQUFHLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdkYsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ3pDO2lCQUFNLElBQUksU0FBUyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUU7Z0JBQ2pELElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ25FO2lCQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUU7Z0JBQ2pELElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ3RFO1FBQ0gsQ0FBQyxDQUFDLENBQUE7UUFDRixvREFBb0Q7UUFDcEQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNwSCxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRTtZQUN4QyxJQUFJLFlBQVksRUFBRTtnQkFDaEIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUM1QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDNUM7UUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNGLG9HQUFvRztRQUNwRyxzREFBc0Q7UUFDdEQsTUFBTTtRQUNOLDhCQUE4QjtRQUM5QixJQUFJO0lBQ04sQ0FBQztJQUVELHVCQUF1QixDQUFDLFlBQTJCLEVBQUUsY0FBc0IsS0FBSztRQUM5RSxJQUFHLFlBQVksQ0FBQyxPQUFPLEVBQUM7WUFDdEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxRQUFRLEVBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQ3ZGO1FBQ0QsSUFBRyxXQUFXLEVBQUM7WUFDYixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWEsRUFBQyxLQUFTLEVBQUUsUUFBZSxFQUFFLG1CQUF3QixFQUFFO1FBQ2hGLElBQUcsS0FBSyxFQUFDO1lBQ1AsSUFBRyxnQkFBZ0IsSUFBSSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxLQUFLLFNBQVMsSUFBSSxLQUFLLEVBQUM7Z0JBQzNFLE1BQU0sU0FBUyxHQUFHLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsVUFBVSxDQUFDO2dCQUNyRSxJQUFHLFNBQVMsRUFBQztvQkFDWCxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDL0M7cUJBQUk7b0JBQ0gsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3ZDO2FBQ0Y7WUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBQyxFQUFFLENBQUMsS0FBSyxLQUFLLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5RSxJQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBQztnQkFDWixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBQyxDQUFDO2FBQy9GO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7YUFDNUY7U0FDRjtJQUNMLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxZQUEyQixFQUFFLGNBQXNCLEtBQUs7UUFDOUUsSUFBRyxZQUFZLENBQUMsSUFBSSxLQUFLLHFCQUFxQixDQUFDLGFBQWEsSUFBSSxZQUFZLENBQUMsU0FBUyxFQUFDO1lBQ3RGLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBQyxZQUFZLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztZQUNwRixJQUFHLFdBQVcsRUFBQztnQkFDYixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDckI7U0FDRDtJQUVKLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxLQUFVLEVBQUUsWUFBaUI7UUFDNUMsSUFBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFDO1lBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNyQztJQUNILENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxZQUFpQjtRQUNoQyxJQUFJLFlBQVksRUFBRTtZQUVoQixZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFDLEVBQUUsQ0FBQSxDQUFDLENBQUEsRUFBRSxDQUFBO1lBQzdDLFlBQVksQ0FBQyxRQUFRLENBQUEsQ0FBQyxDQUFBLFlBQVksQ0FBQyxRQUFRLEdBQUMsRUFBRSxDQUFBLENBQUMsQ0FBQSxFQUFFLENBQUE7WUFDbEQsMERBQTBEO1lBQ3pELHVEQUF1RDtZQUN2RCxzRUFBc0U7WUFDdEUsMEJBQTBCO1NBQzNCO2FBQU07WUFDTiwyQkFBMkI7WUFDMUIsaUNBQWlDO1NBQ2xDO1FBQ0YsZ0NBQWdDO1FBQ2hDLHlCQUF5QjtRQUN4Qix5QkFBeUI7UUFDMUIsSUFBSTtJQUNMLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxZQUFpQixFQUFFLGFBQXFCLEtBQUs7UUFDN0QsSUFBRyxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUM7WUFDaEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQzNDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQ3JCLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FDekQsQ0FBQztZQUNGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUN6QyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUNyQixZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQ3pELENBQUM7WUFDRixJQUFJLGFBQWEsSUFBSSxXQUFXLElBQUksWUFBWSxDQUFDLFNBQVMsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFO2dCQUNsRixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUMsYUFBYSxFQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqRSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUMsV0FBVyxFQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzlEO1NBQ0Y7YUFBSyxJQUFHLFVBQVUsRUFBQztZQUNsQixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzFELElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDekQ7SUFDSCxDQUFDO0lBQ0QsWUFBWSxDQUFDLFlBQTJCO1FBQ3RDLElBQUcsWUFBWSxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUM7WUFDdEMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNwQztJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsWUFBMkI7UUFDekMsSUFBSSxZQUFZLElBQUksWUFBWSxDQUFDLFVBQVUsRUFBRTtZQUMzQyxZQUFZLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3ZDO1FBQ0QsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztZQUMxQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0MsQ0FBQyxFQUFDLFlBQVksQ0FBQyxJQUFJLEtBQUsscUJBQXFCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFDRCxZQUFZLENBQUMsWUFBMkI7UUFDdEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUMxQyxDQUFDLEVBQUMsWUFBWSxDQUFDLElBQUksS0FBSyxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELGlCQUFpQixDQUFDLFlBQTJCO1FBQzNDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxZQUFZLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDM0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7WUFDMUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQy9DLENBQUMsRUFBQyxZQUFZLENBQUMsSUFBSSxLQUFLLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxZQUFZLENBQUMsY0FBc0IsSUFBSSxFQUFFLGVBQW1CLEVBQUU7UUFDNUQsSUFBRyxZQUFZLENBQUMsSUFBSSxLQUFLLHFCQUFxQixDQUFDLFVBQVUsRUFBQztZQUN4RCxJQUFJLENBQUMsdUJBQXVCLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDNUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixHQUFHLFdBQVcsQ0FBQztRQUNoRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxxQkFBcUIsQ0FBQyxVQUFVLENBQUUsQ0FBQTtRQUNuSCxJQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBQztZQUNaLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ2hDO1FBQ0QsWUFBWSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzFELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUMvQjthQUNELElBQUcsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsRUFBQztZQUMvQixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDekM7SUFDSCxDQUFDO0lBRUQsaUNBQWlDO0lBQ2pDLHVCQUF1QixDQUFDLFFBQWlCLElBQUk7UUFDM0MsSUFBRyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztZQUNyRCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBQyxFQUFFO2dCQUNuQyxJQUFHLE1BQU0sQ0FBQyxJQUFJLEtBQUsscUJBQXFCLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQyxRQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBQztvQkFDMUcsVUFBVSxDQUFDLEdBQUcsRUFBRTt3QkFDZCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDL0IsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2lCQUNUO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxRQUFRLENBQUMsTUFBcUIsRUFBRSxRQUFpQixJQUFJO1FBQ25ELHlCQUF5QjtRQUN6QixJQUFJLFNBQWlCLENBQUE7UUFDckIsSUFBSSxRQUFRLEdBQWMsTUFBTSxDQUFDLFFBQVE7WUFDdkMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRO1lBQ2pCLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQ25CLFFBQVEsUUFBUSxFQUFFO1lBQ2hCLEtBQUssU0FBUyxDQUFDLEdBQUc7Z0JBQ2pCLCtDQUErQztnQkFDOUMsTUFBTTtZQUNSLEtBQUssU0FBUyxDQUFDLEtBQUs7Z0JBQ3BCLGtEQUFrRDtnQkFDaEQsTUFBTTtZQUNSLEtBQUssU0FBUyxDQUFDLElBQUk7Z0JBQ25CLGlEQUFpRDtnQkFDL0MsTUFBTTtZQUNSO2dCQUNFLE9BQU87Z0JBQ1QsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUMzQyxNQUFNLENBQUMsS0FBSyxHQUFFLFNBQVMsQ0FBQTtnQkFDdkIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFBO2dCQUNwQyw4QkFBOEI7Z0JBQzlCLE1BQU07U0FDVDtRQUNELFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUMxQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxxQkFBcUIsQ0FBQyxVQUFVLENBQUUsQ0FBQTtRQUNuSCxJQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBQztZQUNaLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ2hDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlDLHFCQUFxQjtRQUNwQix3QkFBd0I7UUFFeEIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFxQjtRQUNoQyxJQUFJLGFBQXFCLENBQUM7UUFDMUIsSUFBSSxRQUFRLEdBQWMsTUFBTSxDQUFDLFFBQVE7WUFDdkMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRO1lBQ2pCLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQ25CLFFBQVEsUUFBUSxFQUFFO1lBQ2hCLEtBQUssU0FBUyxDQUFDLEdBQUc7Z0JBQ2pCLG9EQUFvRDtnQkFDbkQsTUFBTTtZQUNSLEtBQUssU0FBUyxDQUFDLEtBQUs7Z0JBQ3JCLHdEQUF3RDtnQkFDckQsTUFBTTtZQUNSLEtBQUssU0FBUyxDQUFDLElBQUk7Z0JBQ25CLHNEQUFzRDtnQkFDcEQsTUFBTTtZQUNSO2dCQUNFLE9BQU87Z0JBQ1AsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNsRCxNQUFNO1NBQ1Q7UUFDRCxNQUFNLENBQUMsS0FBSyxHQUFDLGFBQWEsQ0FBQTtRQUMxQixJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDcEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDekMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM3QyxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQsMkJBQTJCLENBQUMsTUFBcUI7UUFDL0MsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLO1lBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUNyQixJQUFJLENBQUMsU0FBUyxFQUNkLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FDN0M7Z0JBQ0QsR0FBRztnQkFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FDckIsSUFBSSxDQUFDLE9BQU8sRUFDWixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQzdDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxZQUFZLENBQUMsTUFBVztRQUN0QixJQUFJLEtBQVcsQ0FBQztRQUNoQixJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDaEIsS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0MsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDbkQ7YUFBTTtZQUNMLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztTQUNuQjtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsTUFBcUIsRUFBRSxNQUFlO1FBQ2pELElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFNUMsSUFBSSxNQUFNLEVBQUU7WUFDVixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTO2dCQUM3QixDQUFDLENBQUMsSUFBSSxJQUFJLENBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsRUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsRUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQzdCO2dCQUNILENBQUMsQ0FBQyxXQUFXLENBQUM7U0FDakI7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVM7Z0JBQzdCLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FDTixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxFQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FDN0I7Z0JBQ0gsQ0FBQyxDQUFDLFdBQVcsQ0FBQztTQUNqQjtRQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEVBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEVBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUM3QixDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFxQixFQUFFLE1BQWU7UUFDbEQsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QyxJQUFJLGVBQWUsR0FBRyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRWhFLElBQUksTUFBTSxFQUFFO1lBQ1YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUztnQkFDN0IsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2xELENBQUMsQ0FBQyxlQUFlLENBQUM7U0FDckI7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVM7Z0JBQzdCLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNsRCxDQUFDLENBQUMsZUFBZSxDQUFDO1NBQ3JCO1FBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUU5RCxPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQXFCLEVBQUUsTUFBZTtRQUNuRCxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLElBQUksZ0JBQWdCLEdBQUcsSUFBSSxJQUFJLENBQzdCLFdBQVcsQ0FBQyxXQUFXLEVBQUUsRUFDekIsV0FBVyxDQUFDLFFBQVEsRUFBRSxFQUN0QixDQUFDLENBQ0YsQ0FBQztRQUVGLElBQUksTUFBTSxFQUFFO1lBQ1YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUztnQkFDN0IsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEVBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxFQUM3QixDQUFDLENBQ0Y7Z0JBQ0gsQ0FBQyxDQUFDLGdCQUFnQixDQUFDO1NBQ3RCO2FBQU07WUFDTCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTO2dCQUM3QixDQUFDLENBQUMsSUFBSSxJQUFJLENBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsRUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLEVBQzdCLENBQUMsQ0FDRjtnQkFDSCxDQUFDLENBQUMsZ0JBQWdCLENBQUM7U0FDdEI7UUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksSUFBSSxDQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxFQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsRUFDN0IsQ0FBQyxDQUNGLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQXFCLEVBQUUsTUFBZTtRQUNsRCxJQUFJLFdBQVcsR0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUEsTUFBTSxDQUFDLEtBQUssQ0FBQTtRQUMvRSxJQUFJLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUEsQ0FBQyxDQUFDLFdBQVcsQ0FBQSxDQUFDLENBQUEsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFBLENBQUEsNEJBQTRCO1FBQzNGLElBQUksUUFBUSxHQUFHLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNySSxJQUFJLFdBQVcsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQzFDLElBQUksS0FBVSxDQUFBO1FBQ1YsSUFBSSxNQUFNLEVBQUU7WUFDZCxLQUFLLEdBQUcsV0FBVyxDQUFBO1lBQ2xCLE1BQU0sQ0FBQyxLQUFLO2dCQUNYLENBQUMsQ0FBRSxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsR0FBQyxDQUFDLENBQUMsQ0FBRyx5REFBeUQ7Z0JBQ3JHLENBQUMsQ0FBQyxLQUFLLEdBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7U0FDeEM7YUFBTTtZQUNMLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSztnQkFDbEIsQ0FBQyxDQUFBLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxXQUFXLENBQUM7Z0JBQzlDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsV0FBVyxDQUFDLENBQUE7U0FDL0M7UUFDRCw4RUFBOEU7UUFDOUUsOEJBQThCO1FBQzlCLHdHQUF3RztRQUN4RyxtRkFBbUY7UUFFbkYsSUFBSSxRQUFRLEdBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN2RSw2Q0FBNkM7UUFDNUMsT0FBTyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQTtRQUN6QixrREFBa0Q7SUFDbkQsQ0FBQztJQUVDOztLQUVDO0lBQ0EsaUJBQWlCLENBQUMsYUFBNEI7UUFDN0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVIOztPQUVHO0lBQ0gsWUFBWTtRQUNWLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMzRCxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLDZCQUE2QixDQUFDLENBQUE7UUFDOUUsSUFBRyxlQUFlLEVBQUM7WUFDakIsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVBOztNQUVFO0lBQ0QsbUJBQW1CLENBQUMsTUFBVztRQUM3QixJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ3RDLENBQUM7SUFFSDs7T0FFRztJQUNILE1BQU07UUFDSixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBQ0QsY0FBYyxDQUFDLFlBQWlCO1FBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUN2QyxNQUFNLEVBQUUsR0FBUSxRQUFRLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsRSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO0lBRXpDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVSxDQUFDLFlBQWlCLEVBQUUsVUFBbUIsS0FBSztRQUNwRCxJQUFHLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLENBQUMsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBQztZQUNsRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDckMsSUFBRyxPQUFPLElBQUcsSUFBSSxFQUFDO2dCQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ2pDO1NBQ0Y7UUFDRCxJQUFHLE9BQU8sRUFBQztZQUNULFFBQVEsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO1NBQ3REO0lBQ0gsQ0FBQztJQUNELGFBQWEsQ0FBQyxZQUFpQjtRQUM3QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQ25ELEdBQUcsR0FBQyxZQUFZLENBQUMsS0FBSyxDQUN2QixDQUFDO1FBQ0YsSUFBSSxTQUFTLEVBQUU7WUFDYixTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDbkI7SUFDSCxDQUFDO2lJQTFsQlUsdUJBQXVCO3FIQUF2Qix1QkFBdUIsNGNDcEJwQywyMXVCQThnQkE7OzJGRDFmYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0UsbUJBQW1COzswQkE0QjFCLFFBQVE7OzBCQUNSLFFBQVE7c0pBeEJpQixVQUFVO3NCQUFyQyxTQUFTO3VCQUFDLGVBQWU7Z0JBQ2pCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDTSxjQUFjO3NCQUExQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ1JlZiwgRHluYW1pY0RpYWxvZ0NvbmZpZywgRGlhbG9nU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XG5pbXBvcnQge1xuICBJR2xvYmFsRmlsdGVyLFxuICBHcmlkRmlsdGVyQ29udHJvbFR5cGUsXG4gIEVHcmlkQ29sdW1uVHlwZSxcbiAgYWRkR2xvYmFsRmlsdGVyLFxuICBFRGF5UmFuZ2UsXG4gIEVGaWx0ZXJWYWxpZGF0b3IsXG4gIElHcmlkVXBkYXRlLFxufSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ3JpZC5tb2RlbCc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZ3JpZC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2UtZ2xvYmFsLWZpbHRlcnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2xvYmFsLWZpbHRlcnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9nbG9iYWwtZmlsdGVycy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTZUdsb2JhbEZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ3JhbmdlQ2FsZW5kYXInKSBkYXRlUGlja2VyOiBhbnk7XG4gIEBJbnB1dCgpIGdsb2JhbEZpbHRlcnM6IElHbG9iYWxGaWx0ZXJbXSA9IFtdO1xuICBASW5wdXQoKSBzZWFyY2hHbG9iYWxGaWx0ZXJCdG46IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgY2xlYXJHbG9iYWxGaWx0ZXJCdG46IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZ3JpZFVwZGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgZmlsdGVyc0FwcGxpZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgdXBkYXRlVmFsdWU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBzZXQgYWN0aXZlVGVzdE1vZGUgKHZhbDphbnkpIHsgaWYodmFsID09PSB0cnVlKSB7IGRlYnVnZ2VyIH19XG5cbiAgcHVibGljIGZpdGVyVHlwZXMgPSBHcmlkRmlsdGVyQ29udHJvbFR5cGU7XG4gIHB1YmxpYyBjb2x1bW5UeXBlID0gRUdyaWRDb2x1bW5UeXBlO1xuICBwdWJsaWMgc2hvd0RpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xuICBkYXRlUmFuZ2VWYWx1ZSA6IGFueTtcbiAgcHVibGljIHN0YXJ0RGF0ZTogRGF0ZTtcbiAgcHVibGljIGVuZERhdGU6IERhdGU7XG5cbiAgc2hvd0lucHV0OiBib29sZWFuID0gZmFsc2U7XG4gIGZpbHRlcjogYW55ID0gJyc7XG4gIGhpZGVDbGVhckZpbHRlckJ0bjogYm9vbGVhbiA9IHRydWU7XG4gIGNhbGVuZGFyRm9ybWF0OnN0cmluZyA9ICdtbS9kZC95eSc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRhdGVwaXBlOiBEYXRlUGlwZSxcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgcmVmOiBEeW5hbWljRGlhbG9nUmVmLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBjb25maWc6IER5bmFtaWNEaWFsb2dDb25maWcsXG4gICAgcHJpdmF0ZSBncmlkU2VydmljZTogR3JpZFNlcnZpY2UsXG4gICAgcHVibGljIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICApIHsgfVxuXG4gIC8qKlxuICAgKiBBc3NpZ25tZW50IG9mIHNlbGVjdGVkIGNvbHVtbnMgb24gcGFnZSBsb2FkXG4gICAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZih0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5kYXRhKXtcbiAgICAgIHRoaXMuc2hvd0RpYWxvZyA9IHRoaXMuY29uZmlnLmRhdGEub3BlbkRpYWxvZztcbiAgICAgIGlmKHRoaXMuY29uZmlnLmRhdGEuZ2xvYmFsRmlsdGVycyl7XG4gICAgICAgIHRoaXMuZ2xvYmFsRmlsdGVycyA9IHRoaXMuY29uZmlnPy5kYXRhLmdsb2JhbEZpbHRlcnMgYXMgSUdsb2JhbEZpbHRlcltdO1xuICAgICAgfVxuICAgICBcbiAgICAgIC8vIHNldCBCeSBEZWZ1YWx0IENhbGVuZGFyIFJhbmdlXG4gICAgICB0aGlzLnNldERlZnVhbHRDYWxlbmRhclJhbmdlKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBzZXREYXRlUmFuZ2VGaWx0ZXJWYWx1ZShkYXRlUmFuZ2Upe1xuICAgIGlmKGRhdGVSYW5nZT8udmFsdWU/Lmxlbmd0aCA+IDEpe1xuICAgICAgZGF0ZVJhbmdlLnZhbHVlWzBdID0gbmV3IERhdGUoZGF0ZVJhbmdlLnZhbHVlWzBdKTtcbiAgICAgIGRhdGVSYW5nZS52YWx1ZVsxXSA9IG5ldyBEYXRlKGRhdGVSYW5nZS52YWx1ZVsxXSk7XG4gICAgICB0aGlzLnNlbGVjdERhdGUoZGF0ZVJhbmdlLCBmYWxzZSk7XG4gICAgfWVsc2Uge1xuICAgICAgaWYodGhpcy5kYXRlUmFuZ2VWYWx1ZSl7XG4gICAgICAgIGxldCBkYXRlUmFuZ2VWYWx1ZSA9IHRoaXMuZGF0ZVJhbmdlVmFsdWU/LmluY2x1ZGVzKCctJykgPyB0aGlzLmRhdGVSYW5nZVZhbHVlPy5zcGxpdCgnLScpIDogJyc7XG4gICAgICAgIGlmIChkYXRlUmFuZ2VWYWx1ZS5sZW5ndGggPT0gMiAmJiAoZGF0ZVJhbmdlVmFsdWVbMF0udHJpbSgpID09IGRhdGVSYW5nZVZhbHVlWzFdLnRyaW0oKSkpe1xuICAgICAgICAgIGRhdGVSYW5nZS52YWx1ZSA9IFtdXG4gICAgICAgICAgZGF0ZVJhbmdlLnZhbHVlWzBdID0gbmV3IERhdGUoZGF0ZVJhbmdlVmFsdWVbMF0pO1xuICAgICAgICAgIGRhdGVSYW5nZS52YWx1ZVsxXSA9IG5ldyBEYXRlKGRhdGVSYW5nZVZhbHVlWzFdKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdERhdGUoZGF0ZVJhbmdlLCBmYWxzZSk7ICAgICBcbiAgICAgICAgfSAgICBcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgXG4gIFxuICBjb250YWluc1doaXRlc3BhY2Uoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5pbmNsdWRlcygnICcpO1xuICB9XG5cbiAgYWRkU3BhY2VzYXRmaXJzdCh4KSB7XG4gICAgcmV0dXJuIFwiIFwiICsgeDtcbiAgfVxuXG4gIGFkZFNwYWNlc2F0bGFzdCh4KSB7XG4gICAgcmV0dXJuIHggKyBcIiBcIlxuICB9XG5cbiAgLy8gY2hhbmdlIGNhbGVuZGFyIGZvcm1hdCBvbiBydW4gdGltZSBpZiB1c2VyIHR5cGUgZGF0ZSBvbiB0aGUgY2FsZW5kYXIgZmllbGQuXG4gIGNhbGVuZGFyRm9jdXNFdmVudChnbG9iYWxGaWx0ZXI6SUdsb2JhbEZpbHRlciwgZXZlbnQ/OiBhbnkpe1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0KVswXT8uYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCAoYTogYW55KSA9PiB7XG4gICAgICBsZXQgeWVhciA9IGE/LnRhcmdldD8udmFsdWU/LnRvU3RyaW5nKCk/LnNwbGl0KCcvJylbMl07XG4gICAgICB5ZWFyID0geWVhcj8udG9TdHJpbmcoKS5zcGxpdChcIiBcIilbMF07XG4gICAgICB0aGlzLmRhdGVSYW5nZVZhbHVlID0gYT8udGFyZ2V0Py52YWx1ZVxuICAgICAgbGV0IGRhdGVSYW5nZVZhbHVlID0gYT8udGFyZ2V0Py52YWx1ZT8uaW5jbHVkZXMoJy0nKSA/IGE/LnRhcmdldD8udmFsdWU/LnNwbGl0KCctJykgOiAnJztcbiAgICAgIC8vIGFkZGluZyBzcGFjZSBiZXR3ZWVuIGZyb20gYW5kIHRvIGRhdGUgaW4gZGF0ZSByYW5nZSBmaWx0ZXJcbiAgICAgIGlmIChkYXRlUmFuZ2VWYWx1ZS5sZW5ndGggPT0gMiAmJiBkYXRlUmFuZ2VWYWx1ZVsxXS5zcGxpdCgnLycpLmxlbmd0aCA9PSAzICYmICghdGhpcy5jb250YWluc1doaXRlc3BhY2UoZGF0ZVJhbmdlVmFsdWVbMF0pIHx8ICF0aGlzLmNvbnRhaW5zV2hpdGVzcGFjZShkYXRlUmFuZ2VWYWx1ZVsxXSkpKSB7XG4gICAgICAgIGlmICghdGhpcy5jb250YWluc1doaXRlc3BhY2UoZGF0ZVJhbmdlVmFsdWVbMF0pKSB7XG4gICAgICAgICAgbGV0IGZyb21EYXRlID0gdGhpcy5hZGRTcGFjZXNhdGxhc3QoZGF0ZVJhbmdlVmFsdWVbMF0pO1xuICAgICAgICAgIGRhdGVSYW5nZVZhbHVlWzBdID0gZnJvbURhdGU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmNvbnRhaW5zV2hpdGVzcGFjZShkYXRlUmFuZ2VWYWx1ZVsxXSkpIHtcbiAgICAgICAgICBsZXQgdG9EYXRlID0gdGhpcy5hZGRTcGFjZXNhdGZpcnN0KGRhdGVSYW5nZVZhbHVlWzFdKTtcbiAgICAgICAgICBkYXRlUmFuZ2VWYWx1ZVsxXSA9IHRvRGF0ZTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgYWx1ZSA9IGRhdGVSYW5nZVZhbHVlWzBdICsgJy0nICsgZGF0ZVJhbmdlVmFsdWVbMV1cbiAgICAgICAgYS50YXJnZXQudmFsdWUgPSBhbHVlO1xuICAgICAgfVxuICAgICAgaWYoeWVhcj8ubGVuZ3RoID09PSA0KXtcbiAgICAgICAgdGhpcy5jYWxlbmRhckZvcm1hdCA9ICdtbS9kZC95eSc7XG4gICAgICAgIGlmKGdsb2JhbEZpbHRlci50eXBlID09PSBHcmlkRmlsdGVyQ29udHJvbFR5cGUuQ0FMRU5EQVIpe1xuICAgICAgICAgIGdsb2JhbEZpbHRlci52YWx1ZSA9IG5ldyBEYXRlKGEudGFyZ2V0LnZhbHVlKS50b0xvY2FsZURhdGVTdHJpbmcoXCJlbi1VU1wiKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmKHllYXI/Lmxlbmd0aCl7XG4gICAgICAgIHRoaXMuY2FsZW5kYXJGb3JtYXQgPSAnbW0vZGQveSc7XG4gICAgICB9XG4gICAgfSk7XG4gICAgbGV0IHllYXJWYWx1ZSA9IGV2ZW50Py50YXJnZXQ/LnZhbHVlPy50b1N0cmluZygpPy5zcGxpdCgnLycpWzRdO1xuICAgIGlmKCghZ2xvYmFsRmlsdGVyLnZhbHVlIHx8IHllYXJWYWx1ZSA9PSB1bmRlZmluZWQgfHwgeWVhclZhbHVlPy50b1N0cmluZygpPy5sZW5ndGggPT09IDEpICYmIGdsb2JhbEZpbHRlci50eXBlID09PSBHcmlkRmlsdGVyQ29udHJvbFR5cGUuREFURV9SQU5HRSl7XG4gICAgICB0aGlzLnNldERhdGVSYW5nZVZhbHVlKGdsb2JhbEZpbHRlciwgdHJ1ZSk7XG4gICAgfVxuICB9XG4gIGNoZWNrSWZGaWx0ZXJSZXF1aXJlZChmaWx0ZXI6SUdsb2JhbEZpbHRlcil7XG4gICAgaWYoZmlsdGVyLnZhbGlkYXRpb25zPy5maW5kKHZhbGlkYXRpb249PnZhbGlkYXRpb24udHlwZT09PUVGaWx0ZXJWYWxpZGF0b3IuUkVRVUlSRUQpKXtcbiAgICAgIGZpbHRlci5yZXF1aXJlZEZpZWxkPXRydWU7XG4gICAgfSAgICBcbiAgfVxuICBjaGVja0ZpbHRlclZhbGlkYXRpb24ocmVtb3ZlRXJyb3I6Ym9vbGVhbiA9IGZhbHNlKTpib29sZWFue1xuICAgIGxldCB2YWxpZDpib29sZWFuID0gZmFsc2U7XG4gICAgaWYodGhpcy5nbG9iYWxGaWx0ZXJzICYmIHRoaXMuZ2xvYmFsRmlsdGVycy5sZW5ndGggPiAwKXtcbiAgICAgIHRoaXMuZ2xvYmFsRmlsdGVycy5mb3JFYWNoKChmaWx0ZXIpPT57XG4gICAgICAgIGlmKGZpbHRlci52YWxpZGF0aW9ucyAmJiBmaWx0ZXIudmFsaWRhdGlvbnMubGVuZ3RoID4gMCAmJiBmaWx0ZXIudmFsaWRhdGlvbnNbMF0udHlwZSA9PT0gRUZpbHRlclZhbGlkYXRvci5SRVFVSVJFRCAmJiAhZmlsdGVyLnZhbHVlICYmICFyZW1vdmVFcnJvcil7XG4gICAgICAgICAgdmFsaWQgPSB0cnVlO1xuICAgICAgICAgIGZpbHRlci5lcnJvck1lc3NhZ2UgPSBmaWx0ZXIuZGlzcGxheVRleHQrXCIgaXMgcmVxdWlyZWRcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaWx0ZXIuZXJyb3JNZXNzYWdlID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiB2YWxpZDtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCl7XG4gICAgdGhpcy5nbG9iYWxGaWx0ZXJzPy5mb3JFYWNoKChmaWx0ZXIpID0+IHtcbiAgICAgIHRoaXMuY2hlY2tJZkZpbHRlclJlcXVpcmVkKGZpbHRlcik7XG4gICAgICBpZiAoZmlsdGVyLnZhbHVlICYmIChmaWx0ZXIuaGlkZGVuID09PSBmYWxzZSB8fCBmaWx0ZXIuaGlkZGVuID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzRXZlbnQoZmlsdGVyKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC8vIHNldCBCeSBEZWZ1YWx0IENhbGVuZGFyIFJhbmdlXG4gICAgdGhpcy5zZXREZWZ1YWx0Q2FsZW5kYXJSYW5nZShmYWxzZSk7XG4gICAgY29uc3QgZ2lyZENsZWFyRmlsdGVyQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXG4gICAgICAnY2xlYXJHcmlkRmlsdGVyVmFsdWVzQnV0dG9uJ1xuICAgICk7XG4gICAgaWYgKGdpcmRDbGVhckZpbHRlckJ0bikge1xuICAgICAgaWYgKGdpcmRDbGVhckZpbHRlckJ0bi5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGUtY2xlYXItZmlsdGVyLWJ1dHRvbicpKSB7XG4gICAgICAgIHRoaXMuaGlkZUNsZWFyRmlsdGVyQnRuID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaGlkZUNsZWFyRmlsdGVyQnRuID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGlkZUNsZWFyRmlsdGVyQnRuID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBzcGxpdGluZyBkYXRlIHJhbmdlIHZhbHVlIGFuZCBhc3NpZ24gdG8gdmFsdWUgYW5kIHZhbHVlVHdvIGluIERhdGVfUmFuZ2UgQ29udHJvbFxuICAgIGNvbnN0IGRhdGVSYW5nZUZpbHRlciA9IHRoaXMuZ2xvYmFsRmlsdGVycy5maWx0ZXIoKGZpbHRlcikgPT4gZmlsdGVyLnR5cGUgPT09IEdyaWRGaWx0ZXJDb250cm9sVHlwZS5EQVRFX1JBTkdFKTtcbiAgICBkYXRlUmFuZ2VGaWx0ZXI/LmZvckVhY2goKGRhdGVSYW5nZSkgPT4ge1xuICAgICAgaWYgKGRhdGVSYW5nZS52YWx1ZSAmJiBkYXRlUmFuZ2UudmFsdWVUd28pIHtcbiAgICAgICAgaWYgKHR5cGVvZiAoZGF0ZVJhbmdlLnZhbHVlKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBkYXRlUmFuZ2UudmFsdWUgPSBkYXRlUmFuZ2UudmFsdWUudG9Mb2NhbGVEYXRlU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiAoZGF0ZVJhbmdlLnZhbHVlVHdvKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBkYXRlUmFuZ2UudmFsdWVUd28gPSBkYXRlUmFuZ2UudmFsdWVUd28udG9Mb2NhbGVEYXRlU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgZGF0ZVJhbmdlLnZhbHVlID0gKGRhdGVSYW5nZS52YWx1ZSArIFwiLVwiICsgZGF0ZVJhbmdlLnZhbHVlVHdvKT8udG9TdHJpbmcoKT8uc3BsaXQoJy0nKTtcbiAgICAgICAgdGhpcy5zZXREYXRlUmFuZ2VGaWx0ZXJWYWx1ZShkYXRlUmFuZ2UpO1xuICAgICAgfSBlbHNlIGlmIChkYXRlUmFuZ2UudmFsdWUgJiYgIWRhdGVSYW5nZS52YWx1ZVR3bykge1xuICAgICAgICB0aGlzLm1hdGNoU2FtZUZpZWxkcyhkYXRlUmFuZ2UuZnJvbUZpZWxkLCBkYXRlUmFuZ2UudmFsdWUsICdndGUnKTtcbiAgICAgIH0gZWxzZSBpZiAoIWRhdGVSYW5nZS52YWx1ZSAmJiBkYXRlUmFuZ2UudmFsdWVUd28pIHtcbiAgICAgICAgdGhpcy5tYXRjaFNhbWVGaWVsZHMoZGF0ZVJhbmdlLmZyb21GaWVsZCwgZGF0ZVJhbmdlLnZhbHVlVHdvLCAnZ3RlJyk7XG4gICAgICB9XG4gICAgfSlcbiAgICAvLyBGaWx0cmluZyBOdW1lcmljIFJhbmdlIGNvbnRyb2xzIG9uIGdsb2JhbCBmaWx0ZXIgXG4gICAgY29uc3QgbnVtZXJSYW5nZUZpbHRlciA9IHRoaXMuZ2xvYmFsRmlsdGVycy5maWx0ZXIoKGZpbHRlcikgPT4gZmlsdGVyLnR5cGUgPT09IEdyaWRGaWx0ZXJDb250cm9sVHlwZS5OVU1FUklDX1JBTkdFKTtcbiAgICBudW1lclJhbmdlRmlsdGVyLmZvckVhY2goKG51bWVyaWNSYW5nZSkgPT4ge1xuICAgICAgaWYgKG51bWVyaWNSYW5nZSkge1xuICAgICAgICB0aGlzLnNldE51bWVyaWNSYW5nZVZhbHVlRnJvbShudW1lcmljUmFuZ2UpO1xuICAgICAgICB0aGlzLnNldE51bWVyaWNSYW5nZVZhbHVlVHdvKG51bWVyaWNSYW5nZSk7XG4gICAgICB9XG4gICAgfSlcbiAgICAvLyBpZighKHRoaXMuZ2xvYmFsRmlsdGVycy5zb21lKChmaWx0ZXIpPT4gZmlsdGVyLnR5cGUgPT09IEdyaWRGaWx0ZXJDb250cm9sVHlwZS5DQUxFTkRBUl9SQU5HRSkpICYmXG4gICAgLy8gICh0aGlzLmdsb2JhbEZpbHRlcnMuc29tZSgoZmlsdGVyKT0+IGZpbHRlci52YWx1ZSkpXG4gICAgLy8gICl7XG4gICAgLy8gICB0aGlzLmFwcGx5RmlsdGVycyhmYWxzZSk7XG4gICAgLy8gfVxuICB9XG5cbiAgc2V0TnVtZXJpY1JhbmdlVmFsdWVUd28oZ2xvYmFsRmlsdGVyOiBJR2xvYmFsRmlsdGVyLCBzZW5kUmVxdWVzdDpib29sZWFuID0gZmFsc2Upe1xuICAgIGlmKGdsb2JhbEZpbHRlci50b0ZpZWxkKXtcbiAgICAgIHRoaXMubWF0Y2hTYW1lRmllbGRzKGdsb2JhbEZpbHRlci50b0ZpZWxkLCBnbG9iYWxGaWx0ZXIudmFsdWVUd28sJ2x0ZScsIGdsb2JhbEZpbHRlcik7XG4gICAgfVxuICAgIGlmKHNlbmRSZXF1ZXN0KXtcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgbWF0Y2hTYW1lRmllbGRzKGZpZWxkOiBzdHJpbmcsdmFsdWU6YW55LCBvcGVyYXRvcjpzdHJpbmcsIG51bWVyUmFuZ2VGaWx0ZXI6IGFueSA9IHt9KXtcbiAgICAgIGlmKGZpZWxkKXtcbiAgICAgICAgaWYobnVtZXJSYW5nZUZpbHRlciAmJiBudW1lclJhbmdlRmlsdGVyPy5mb3JtYXQ/LnR5cGUgPT09ICdkZWNpbWFsJyAmJiB2YWx1ZSl7XG4gICAgICAgICAgY29uc3QgZGlnaXRJbmZvID0gbnVtZXJSYW5nZUZpbHRlcj8uZm9ybWF0Py5mb3JtYXRQYXJhbXM/LmRpZ2l0c0luZm87XG4gICAgICAgICAgaWYoZGlnaXRJbmZvKXtcbiAgICAgICAgICAgIHZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZSk/LnRvRml4ZWQoZGlnaXRJbmZvKTtcbiAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIHZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZSk/LnRvRml4ZWQoMik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nbG9iYWxGaWx0ZXJzLmZpbmRJbmRleCgoZmlsdGVyKT0+IGZpZWxkID09PSBmaWx0ZXIuZmllbGQpO1xuICAgICAgICBpZihpbmRleCA+IC0xKXtcbiAgICAgICAgICB0aGlzLmdsb2JhbEZpbHRlcnNbaW5kZXhdID0ge2ZpZWxkOiBmaWVsZCwgbWF0Y2hNb2RlOidhbmQnLCBvcGVyYXRvcjogb3BlcmF0b3IsIHZhbHVlOiB2YWx1ZX07ICAgICAgIFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZ2xvYmFsRmlsdGVycy5wdXNoKHtmaWVsZDogZmllbGQsIG1hdGNoTW9kZTonYW5kJywgb3BlcmF0b3I6IG9wZXJhdG9yLCB2YWx1ZTogdmFsdWV9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICB9XG5cbiAgc2V0TnVtZXJpY1JhbmdlVmFsdWVGcm9tKGdsb2JhbEZpbHRlcjogSUdsb2JhbEZpbHRlciwgc2VuZFJlcXVlc3Q6Ym9vbGVhbiA9IGZhbHNlKSB7XG4gICAgIGlmKGdsb2JhbEZpbHRlci50eXBlID09PSBHcmlkRmlsdGVyQ29udHJvbFR5cGUuTlVNRVJJQ19SQU5HRSAmJiBnbG9iYWxGaWx0ZXIuZnJvbUZpZWxkKXsgXG4gICAgICB0aGlzLm1hdGNoU2FtZUZpZWxkcyhnbG9iYWxGaWx0ZXIuZnJvbUZpZWxkLGdsb2JhbEZpbHRlci52YWx1ZSwnZ3RlJywgZ2xvYmFsRmlsdGVyKTtcbiAgICAgIGlmKHNlbmRSZXF1ZXN0KXtcbiAgICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICAgIH1cbiAgICAgfVxuICBcbiAgfVxuICByZW1vdmVOdWxsTG9va3VwKGV2ZW50OiBhbnksIGdsb2JhbEZpbHRlcjogYW55KXtcbiAgICBpZighZXZlbnQudGFyZ2V0LnZhbHVlKXtcbiAgICAgIHRoaXMubG9va3VwQ2xlYXJWYWx1ZShnbG9iYWxGaWx0ZXIpO1xuICAgIH1cbiAgfVxuICBsb29rdXBDbGVhclZhbHVlKGdsb2JhbEZpbHRlcjogYW55KXtcbiAgICBpZiAoZ2xvYmFsRmlsdGVyKSB7XG5cbiAgICAgIGdsb2JhbEZpbHRlci52YWx1ZSA/IGdsb2JhbEZpbHRlci52YWx1ZT0nJzonJ1xuICAgICAgZ2xvYmFsRmlsdGVyLnZhbHVlVHdvP2dsb2JhbEZpbHRlci52YWx1ZVR3bz0nJzonJ1xuICAgICAvLyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQ/Z2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0PScnOicnXG4gICAgICAvLyBjb2x1bW4uZGlzcGxheUZpZWxkP3Jvd1tjb2x1bW4uZGlzcGxheUZpZWxkXSA9ICcnOicnXG4gICAgICAvLyByb3dbY29sdW1uLmZpZWxkKydfb2JqJ10/LnRleHQ/IHJvd1tjb2x1bW4uZmllbGQrJ19vYmonXS50ZXh0PScnOicnXG4gICAgICAvLyByb3dbY29sdW1uLmZpZWxkXSA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgIC8vIGNvbHVtbi5maWx0ZXJWYWx1ZSA9ICcnO1xuICAgICAgLy90aGlzLnNldEZpbHRlckZvY3VzT3V0KGNvbHVtbik7XG4gICAgfVxuICAgLy8gdGhpcy5icm93c2VyQ2xvc2VFdmVudCh0cnVlKTtcbiAgIC8vIGlmIChjb2x1bW4ub25DaGFuZ2UpIHtcbiAgICAvLyAgY29sdW1uLm9uQ2hhbmdlKHJvdyk7XG4gICAvLyB9XG4gIH1cblxuICBzZXREYXRlUmFuZ2VWYWx1ZShnbG9iYWxGaWx0ZXI6IGFueSwgY2xlYXJWYWx1ZTogYm9vbGVhbiA9ZmFsc2UpIHtcbiAgICBpZihnbG9iYWxGaWx0ZXIudmFsdWU/Lmxlbmd0aCA+IDApe1xuICAgICAgY29uc3QgZnJvbURhdGVWYWx1ZSA9IHRoaXMuZGF0ZXBpcGUudHJhbnNmb3JtKFxuICAgICAgICBnbG9iYWxGaWx0ZXIudmFsdWVbMF0sXG4gICAgICAgIGdsb2JhbEZpbHRlci5mb3JtYXQgPyBnbG9iYWxGaWx0ZXIuZm9ybWF0IDogJ01NL2RkL3l5eXknXG4gICAgICApO1xuICAgICAgY29uc3QgdG9EYXRlVmFsdWUgPSB0aGlzLmRhdGVwaXBlLnRyYW5zZm9ybShcbiAgICAgICAgZ2xvYmFsRmlsdGVyLnZhbHVlWzFdLFxuICAgICAgICBnbG9iYWxGaWx0ZXIuZm9ybWF0ID8gZ2xvYmFsRmlsdGVyLmZvcm1hdCA6ICdNTS9kZC95eXl5J1xuICAgICAgKTtcbiAgICAgIGlmIChmcm9tRGF0ZVZhbHVlICYmIHRvRGF0ZVZhbHVlICYmIGdsb2JhbEZpbHRlci5mcm9tRmllbGQgJiYgZ2xvYmFsRmlsdGVyLnRvRmllbGQpIHtcbiAgICAgICAgdGhpcy5tYXRjaFNhbWVGaWVsZHMoZ2xvYmFsRmlsdGVyLmZyb21GaWVsZCxmcm9tRGF0ZVZhbHVlLCdndGUnKTtcbiAgICAgICAgdGhpcy5tYXRjaFNhbWVGaWVsZHMoZ2xvYmFsRmlsdGVyLnRvRmllbGQsdG9EYXRlVmFsdWUsJ2x0ZScpO1xuICAgICAgfVxuICAgIH1lbHNlIGlmKGNsZWFyVmFsdWUpe1xuICAgICAgdGhpcy5tYXRjaFNhbWVGaWVsZHMoZ2xvYmFsRmlsdGVyLmZyb21GaWVsZCwgbnVsbCwgJ2d0ZScpO1xuICAgICAgdGhpcy5tYXRjaFNhbWVGaWVsZHMoZ2xvYmFsRmlsdGVyLnRvRmllbGQsIG51bGwsICdsdGUnKTtcbiAgICB9XG4gIH1cbiAgb25DbGlja0V2ZW50KGdsb2JhbEZpbHRlcjogSUdsb2JhbEZpbHRlcil7XG4gICAgaWYoZ2xvYmFsRmlsdGVyICYmIGdsb2JhbEZpbHRlci5vbkNsaWNrKXtcbiAgICAgIGdsb2JhbEZpbHRlci5vbkNsaWNrKGdsb2JhbEZpbHRlcik7XG4gICAgfVxuICB9XG5cbiAgb25Gb2N1c091dEV2ZW50KGdsb2JhbEZpbHRlcjogSUdsb2JhbEZpbHRlcil7XG4gICAgaWYgKGdsb2JhbEZpbHRlciAmJiBnbG9iYWxGaWx0ZXIub25Gb2N1c091dCkge1xuICAgICAgZ2xvYmFsRmlsdGVyLm9uRm9jdXNPdXQoZ2xvYmFsRmlsdGVyKTtcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYXBwbHlGaWx0ZXInLCBKU09OLnN0cmluZ2lmeShmYWxzZSkpO1xuICAgICAgdGhpcy5ncmlkU2VydmljZS5hcHBseUZpbHRlckV2ZW50ID0gZmFsc2U7XG4gICAgICB0aGlzLmZpbHRlcnNBcHBsaWVkLmVtaXQodGhpcy5nbG9iYWxGaWx0ZXJzKTtcbiAgICAgIH0sZ2xvYmFsRmlsdGVyLnR5cGUgPT09IEdyaWRGaWx0ZXJDb250cm9sVHlwZS5MT09LVVBfSU5QVVQgPyAgMjUwIDogMCk7XG4gIH1cbiAgdXBkYXRlVmFsdWVzKGdsb2JhbEZpbHRlcjogSUdsb2JhbEZpbHRlcil7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYXBwbHlGaWx0ZXInLCBKU09OLnN0cmluZ2lmeShmYWxzZSkpO1xuICAgICAgdGhpcy5ncmlkU2VydmljZS5hcHBseUZpbHRlckV2ZW50ID0gZmFsc2U7XG4gICAgICB9LGdsb2JhbEZpbHRlci50eXBlID09PSBHcmlkRmlsdGVyQ29udHJvbFR5cGUuTE9PS1VQX0lOUFVUID8gIDI1MCA6IDApO1xuICAgICAgdGhpcy51cGRhdGVWYWx1ZS5lbWl0KGdsb2JhbEZpbHRlcik7XG4gIH1cblxuICBhcHBseUZpbHRlcnNFdmVudChnbG9iYWxGaWx0ZXI6IElHbG9iYWxGaWx0ZXIpe1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2FwcGx5RmlsdGVyJywgSlNPTi5zdHJpbmdpZnkoZmFsc2UpKTtcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2UuYXBwbHlGaWx0ZXJFdmVudCA9IGZhbHNlO1xuICAgICAgdGhpcy5maWx0ZXJzQXBwbGllZC5lbWl0KHRoaXMuZ2xvYmFsRmlsdGVycyk7XG4gICAgfSxnbG9iYWxGaWx0ZXIudHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLkxPT0tVUF9JTlBVVCA/ICAyNTAgOiAwKTtcbiAgfVxuICAvKipcbiAgICogQXBwbHkgc2VsZWN0ZWQgZmlsdGVyc1xuICAgKi9cbiAgYXBwbHlGaWx0ZXJzKGZpbHRlckV2ZW50OiBib29sZWFuPSB0cnVlLCBnbG9iYWxGaWx0ZXI6YW55ID0ge30pIHtcbiAgICBpZihnbG9iYWxGaWx0ZXIudHlwZSA9PT0gR3JpZEZpbHRlckNvbnRyb2xUeXBlLkRBVEVfUkFOR0Upe1xuICAgICAgdGhpcy5zZXREYXRlUmFuZ2VGaWx0ZXJWYWx1ZShnbG9iYWxGaWx0ZXIpO1xuICAgIH0gXG4gICAgdGhpcy5ncmlkU2VydmljZS5hcHBseUZpbHRlckV2ZW50ID0gZmlsdGVyRXZlbnQ7XG4gICAgY29uc3QgZ2xvYmFsRmlsdGVycyA9IHRoaXMuZ2xvYmFsRmlsdGVycy5maWx0ZXIoKHgpID0+IHguZmllbGQpO1xuICAgIGNvbnN0IGluZGV4ID0gZ2xvYmFsRmlsdGVycy5maW5kSW5kZXgoKGZpbHRlcik9PiBmaWx0ZXIuZmllbGQgJiYgZmlsdGVyLnR5cGUgPT09IEdyaWRGaWx0ZXJDb250cm9sVHlwZS5EQVRFX1JBTkdFIClcbiAgICBpZihpbmRleCA+IC0xKXtcbiAgICAgIGdsb2JhbEZpbHRlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2FwcGx5RmlsdGVyJywgSlNPTi5zdHJpbmdpZnkodHJ1ZSkpO1xuICAgIGlmICh0aGlzLnNob3dEaWFsb2cpIHtcbiAgICAgIHRoaXMucmVmLmNsb3NlKGdsb2JhbEZpbHRlcnMpO1xuICAgIH0gZWxzZSBcbiAgICBpZighdGhpcy5jaGVja0ZpbHRlclZhbGlkYXRpb24oKSl7XG4gICAgICB0aGlzLmNoZWNrRmlsdGVyVmFsaWRhdGlvbih0cnVlKTtcbiAgICAgIHRoaXMuZmlsdGVyc0FwcGxpZWQuZW1pdChnbG9iYWxGaWx0ZXJzKTtcbiAgICB9XG4gIH1cblxuICAvLyBzZXQgQnkgRGVmdWFsdCBDYWxlbmRhciBSYW5nZSBcbiAgc2V0RGVmdWFsdENhbGVuZGFyUmFuZ2UoY2hlY2s6IGJvb2xlYW4gPSB0cnVlKXtcbiAgICBpZih0aGlzLmdsb2JhbEZpbHRlcnMgJiYgdGhpcy5nbG9iYWxGaWx0ZXJzLmxlbmd0aCA+IDApe1xuICAgICAgdGhpcy5nbG9iYWxGaWx0ZXJzLmZvckVhY2goKGZpbHRlcik9PntcbiAgICAgICAgaWYoZmlsdGVyLnR5cGUgPT09IEdyaWRGaWx0ZXJDb250cm9sVHlwZS5EQVRFX1JBTkdFICYmIGZpbHRlci5kYXlSYW5nZSAmJiAhZmlsdGVyLnZhbHVlICYmICFmaWx0ZXIudmFsdWVUd28pe1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaG93TmV4dChmaWx0ZXIsIGNoZWNrKTtcbiAgICAgICAgICB9LCAxMDApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzaG93TmV4dChmaWx0ZXI6IElHbG9iYWxGaWx0ZXIsIGNoZWNrOiBib29sZWFuID0gdHJ1ZSk6IERhdGVbXSB7XG4gICAgLy8gbGV0IG5leHRWYWx1ZTogc3RyaW5nO1xuICAgIGxldCBuZXh0VmFsdWU6IERhdGVbXVxuICAgIGxldCBkYXlSYW5nZTogRURheVJhbmdlID0gZmlsdGVyLmRheVJhbmdlXG4gICAgICA/IGZpbHRlci5kYXlSYW5nZVxuICAgICAgOiBFRGF5UmFuZ2UuV0VFSztcbiAgICBzd2l0Y2ggKGRheVJhbmdlKSB7XG4gICAgICBjYXNlIEVEYXlSYW5nZS5EQVk6XG4gICAgICAgLy8gbmV4dFZhbHVlID0gdGhpcy5zZXREYXlGaWx0ZXIoZmlsdGVyLCB0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEVEYXlSYW5nZS5NT05USDpcbiAgICAgIC8vICBuZXh0VmFsdWUgPSB0aGlzLnNldE1vbnRoRmlsdGVyKGZpbHRlciwgdHJ1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBFRGF5UmFuZ2UuWUVBUjpcbiAgICAgIC8vICBuZXh0VmFsdWUgPSB0aGlzLnNldFllYXJGaWx0ZXIoZmlsdGVyLCB0cnVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyB3ZWVrXG4gICAgICBuZXh0VmFsdWUgPSB0aGlzLnNldFdlZWtGaWx0ZXIoZmlsdGVyLCB0cnVlKTtcbiAgICAgICAgZmlsdGVyLnZhbHVlPSBuZXh0VmFsdWVcbiAgICAgICAgdGhpcy5zZXREYXRlUmFuZ2VGaWx0ZXJWYWx1ZShmaWx0ZXIpXG4gICAgICAgIC8vZmlsdGVyLnZhbHVlVHdvPW5leHRWYWx1ZVsxXVxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2FwcGx5RmlsdGVyJywgSlNPTi5zdHJpbmdpZnkodHJ1ZSkpO1xuICAgIHRoaXMuZ3JpZFNlcnZpY2UuYXBwbHlGaWx0ZXJFdmVudCA9IGNoZWNrO1xuICAgIGNvbnN0IGdsb2JhbEZpbHRlcnMgPSB0aGlzLmdsb2JhbEZpbHRlcnMuZmlsdGVyKCh4KSA9PiB4LmZpZWxkKTtcbiAgICBjb25zdCBpbmRleCA9IGdsb2JhbEZpbHRlcnMuZmluZEluZGV4KChmaWx0ZXIpPT4gZmlsdGVyLmZpZWxkICYmIGZpbHRlci50eXBlID09PSBHcmlkRmlsdGVyQ29udHJvbFR5cGUuREFURV9SQU5HRSApXG4gICAgaWYoaW5kZXggPiAtMSl7XG4gICAgICBnbG9iYWxGaWx0ZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICAgIHRoaXMuZmlsdGVyc0FwcGxpZWQuZW1pdCh0aGlzLmdsb2JhbEZpbHRlcnMpO1xuICAgLy8gbGV0IHRlc3Q9bmV4dFZhbHVlXG4gICAgLy9maWx0ZXIudmFsdWU9bmV4dFZhbHVlXG4gICBcbiAgICByZXR1cm4gbmV4dFZhbHVlO1xuICB9XG5cbiAgc2hvd1ByZXZpb3VzKGZpbHRlcjogSUdsb2JhbEZpbHRlcik6IERhdGVbXSB7XG4gICAgbGV0IHByZXZpb3VzVmFsdWU6IERhdGVbXTtcbiAgICBsZXQgZGF5UmFuZ2U6IEVEYXlSYW5nZSA9IGZpbHRlci5kYXlSYW5nZVxuICAgICAgPyBmaWx0ZXIuZGF5UmFuZ2VcbiAgICAgIDogRURheVJhbmdlLldFRUs7XG4gICAgc3dpdGNoIChkYXlSYW5nZSkge1xuICAgICAgY2FzZSBFRGF5UmFuZ2UuREFZOlxuICAgICAgIC8vIHByZXZpb3VzVmFsdWUgPSB0aGlzLnNldERheUZpbHRlcihmaWx0ZXIsIGZhbHNlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEVEYXlSYW5nZS5NT05USDpcbiAgICAgLy8gICBwcmV2aW91c1ZhbHVlID0gdGhpcy5zZXRNb250aEZpbHRlcihmaWx0ZXIsIGZhbHNlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEVEYXlSYW5nZS5ZRUFSOlxuICAgICAgLy8gIHByZXZpb3VzVmFsdWUgPSB0aGlzLnNldFllYXJGaWx0ZXIoZmlsdGVyLCBmYWxzZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gd2Vla1xuICAgICAgICBwcmV2aW91c1ZhbHVlID0gdGhpcy5zZXRXZWVrRmlsdGVyKGZpbHRlciwgZmFsc2UpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgZmlsdGVyLnZhbHVlPXByZXZpb3VzVmFsdWVcbiAgICB0aGlzLnNldERhdGVSYW5nZUZpbHRlclZhbHVlKGZpbHRlcilcbiAgICB0aGlzLmdyaWRTZXJ2aWNlLmFwcGx5RmlsdGVyRXZlbnQgPSB0cnVlO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdhcHBseUZpbHRlcicsIEpTT04uc3RyaW5naWZ5KHRydWUpKTtcbiAgICB0aGlzLmZpbHRlcnNBcHBsaWVkLmVtaXQodGhpcy5nbG9iYWxGaWx0ZXJzKTtcbiAgICByZXR1cm4gcHJldmlvdXNWYWx1ZTtcbiAgfVxuXG4gIHNldENhbGVuZGFyUmFuZ2VGaWx0ZXJWYWx1ZShmaWx0ZXI6IElHbG9iYWxGaWx0ZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiAoZmlsdGVyLnZhbHVlID1cbiAgICAgIHRoaXMuZGF0ZXBpcGUudHJhbnNmb3JtKFxuICAgICAgICB0aGlzLnN0YXJ0RGF0ZSxcbiAgICAgICAgZmlsdGVyLmZvcm1hdCA/IGZpbHRlci5mb3JtYXQgOiAnTU0vZGQveXl5eSdcbiAgICAgICkgK1xuICAgICAgJ3wnICtcbiAgICAgIHRoaXMuZGF0ZXBpcGUudHJhbnNmb3JtKFxuICAgICAgICB0aGlzLmVuZERhdGUsXG4gICAgICAgIGZpbHRlci5mb3JtYXQgPyBmaWx0ZXIuZm9ybWF0IDogJ01NL2RkL3l5eXknXG4gICAgICApKTtcbiAgfVxuXG4gIHNldERhdGVWYWx1ZShmaWx0ZXI6IGFueSkge1xuICAgIGxldCB2YWx1ZTogRGF0ZTtcbiAgICBpZiAoZmlsdGVyLnZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IG5ldyBEYXRlKGZpbHRlci52YWx1ZS5zcGxpdCgnfCcpWzBdKTtcbiAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZS5zZXRNb250aCh2YWx1ZS5nZXRNb250aCgpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHNldERheUZpbHRlcihmaWx0ZXI6IElHbG9iYWxGaWx0ZXIsIGlzTmV4dDogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgdmFyIGN1cnJlbnREYXRlID0gdGhpcy5zZXREYXRlVmFsdWUoZmlsdGVyKTtcblxuICAgIGlmIChpc05leHQpIHtcbiAgICAgIHRoaXMuc3RhcnREYXRlID0gdGhpcy5zdGFydERhdGVcbiAgICAgICAgPyBuZXcgRGF0ZShcbiAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXRNb250aCgpLFxuICAgICAgICAgICAgdGhpcy5zdGFydERhdGUuZ2V0RGF0ZSgpICsgMVxuICAgICAgICAgIClcbiAgICAgICAgOiBjdXJyZW50RGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGFydERhdGUgPSB0aGlzLnN0YXJ0RGF0ZVxuICAgICAgICA/IG5ldyBEYXRlKFxuICAgICAgICAgICAgdGhpcy5zdGFydERhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlLmdldE1vbnRoKCksXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXREYXRlKCkgLSAxXG4gICAgICAgICAgKVxuICAgICAgICA6IGN1cnJlbnREYXRlO1xuICAgIH1cblxuICAgIHRoaXMuZW5kRGF0ZSA9IG5ldyBEYXRlKFxuICAgICAgdGhpcy5zdGFydERhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgIHRoaXMuc3RhcnREYXRlLmdldE1vbnRoKCksXG4gICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXREYXRlKCkgKyAxXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLnNldENhbGVuZGFyUmFuZ2VGaWx0ZXJWYWx1ZShmaWx0ZXIpO1xuICB9XG5cbiAgc2V0WWVhckZpbHRlcihmaWx0ZXI6IElHbG9iYWxGaWx0ZXIsIGlzTmV4dDogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgdmFyIGN1cnJlbnREYXRlID0gdGhpcy5zZXREYXRlVmFsdWUoZmlsdGVyKTtcbiAgICB2YXIgZmlyc3REYXRlT2ZZZWFyID0gbmV3IERhdGUoY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XG5cbiAgICBpZiAoaXNOZXh0KSB7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IHRoaXMuc3RhcnREYXRlXG4gICAgICAgID8gbmV3IERhdGUodGhpcy5zdGFydERhdGUuZ2V0RnVsbFllYXIoKSArIDEsIDAsIDEpXG4gICAgICAgIDogZmlyc3REYXRlT2ZZZWFyO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IHRoaXMuc3RhcnREYXRlXG4gICAgICAgID8gbmV3IERhdGUodGhpcy5zdGFydERhdGUuZ2V0RnVsbFllYXIoKSAtIDEsIDAsIDEpXG4gICAgICAgIDogZmlyc3REYXRlT2ZZZWFyO1xuICAgIH1cblxuICAgIHRoaXMuZW5kRGF0ZSA9IG5ldyBEYXRlKHRoaXMuc3RhcnREYXRlLmdldEZ1bGxZZWFyKCksIDExLCAzMSk7XG5cbiAgICByZXR1cm4gdGhpcy5zZXRDYWxlbmRhclJhbmdlRmlsdGVyVmFsdWUoZmlsdGVyKTtcbiAgfVxuXG4gIHNldE1vbnRoRmlsdGVyKGZpbHRlcjogSUdsb2JhbEZpbHRlciwgaXNOZXh0OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICB2YXIgY3VycmVudERhdGUgPSB0aGlzLnNldERhdGVWYWx1ZShmaWx0ZXIpO1xuICAgIHZhciBmaXJzdERhdGVPZk1vbnRoID0gbmV3IERhdGUoXG4gICAgICBjdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgY3VycmVudERhdGUuZ2V0TW9udGgoKSxcbiAgICAgIDFcbiAgICApO1xuXG4gICAgaWYgKGlzTmV4dCkge1xuICAgICAgdGhpcy5zdGFydERhdGUgPSB0aGlzLnN0YXJ0RGF0ZVxuICAgICAgICA/IG5ldyBEYXRlKFxuICAgICAgICAgICAgdGhpcy5zdGFydERhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgICAgIHRoaXMuc3RhcnREYXRlLmdldE1vbnRoKCkgKyAxLFxuICAgICAgICAgICAgMVxuICAgICAgICAgIClcbiAgICAgICAgOiBmaXJzdERhdGVPZk1vbnRoO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZSA9IHRoaXMuc3RhcnREYXRlXG4gICAgICAgID8gbmV3IERhdGUoXG4gICAgICAgICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgICAgdGhpcy5zdGFydERhdGUuZ2V0TW9udGgoKSAtIDEsXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKVxuICAgICAgICA6IGZpcnN0RGF0ZU9mTW9udGg7XG4gICAgfVxuXG4gICAgdGhpcy5lbmREYXRlID0gbmV3IERhdGUoXG4gICAgICB0aGlzLnN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgdGhpcy5zdGFydERhdGUuZ2V0TW9udGgoKSArIDEsXG4gICAgICAwXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLnNldENhbGVuZGFyUmFuZ2VGaWx0ZXJWYWx1ZShmaWx0ZXIpO1xuICB9XG5cbiAgc2V0V2Vla0ZpbHRlcihmaWx0ZXI6IElHbG9iYWxGaWx0ZXIsIGlzTmV4dDogYm9vbGVhbik6IERhdGVbXXtcbiAgICBsZXQgZmlsdGVyVmFsdWU6RGF0ZT0gQXJyYXkuaXNBcnJheShmaWx0ZXIudmFsdWUpPyBmaWx0ZXIudmFsdWVbMF06ZmlsdGVyLnZhbHVlXG4gICAgbGV0IGN1cnJlbnREYXRlID0gbmV3IERhdGUoZmlsdGVyVmFsdWU/IGZpbHRlclZhbHVlOm5ldyBEYXRlKCkpLy90aGlzLnNldERhdGVWYWx1ZShmaWx0ZXIpO1xuICAgIGxldCBmaXJzdERheSA9IG5ldyBEYXRlKGN1cnJlbnREYXRlLnNldERhdGUoZmlsdGVyVmFsdWUgPyBjdXJyZW50RGF0ZS5nZXREYXRlKCkgOiBjdXJyZW50RGF0ZS5nZXREYXRlKCkgLSBjdXJyZW50RGF0ZS5nZXREYXkoKSArIDEpKTtcbiAgICBsZXQgd2Vla1NlY29uZHMgPSA3ICogMjQgKiA2MCAqIDYwICogMTAwMDtcbiAgICBsZXQgdmFsdWU6RGF0ZVxuICAgICAgICBpZiAoaXNOZXh0KSB7XG4gICAgICB2YWx1ZSA9IGZpbHRlclZhbHVlXG4gICAgICAgZmlsdGVyLnZhbHVlXG4gICAgICAgID8gIHZhbHVlLnNldERhdGUoZmlsdGVyVmFsdWUuZ2V0RGF0ZSgpKzcpICAgLy9uZXcgRGF0ZShuZXcgRGF0ZShmaWx0ZXJWYWx1ZSkuZ2V0VGltZSgpICsgd2Vla1NlY29uZHMpXG4gICAgICAgIDogdmFsdWU9IG5ldyBEYXRlKGZpcnN0RGF5LmdldFRpbWUoKSlcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBmaWx0ZXIudmFsdWVcbiAgICAgICAgP25ldyBEYXRlKGZpbHRlclZhbHVlLmdldFRpbWUoKSAtIHdlZWtTZWNvbmRzKVxuICAgICAgICA6IG5ldyBEYXRlKGZpcnN0RGF5LmdldFRpbWUoKSAtIHdlZWtTZWNvbmRzKVxuICAgIH1cbiAgICAvL3RoaXMuZW5kRGF0ZSA9IG5ldyBEYXRlKHRoaXMuc3RhcnREYXRlLmdldFRpbWUoKSArIDYgKiAyNCAqIDYwICogNjAgKiAxMDAwKTtcbiAgICAvLyBsZXQgdmFsdWU6RGF0ZT1maWx0ZXJWYWx1ZT9cbiAgICAvLyAgIGlzTmV4dD9uZXcgRGF0ZShmaWx0ZXJWYWx1ZS5nZXRUaW1lKCkgKyB3ZWVrU2Vjb25kcyk6bmV3IERhdGUoZmlsdGVyVmFsdWUuZ2V0VGltZSgpIC0gd2Vla1NlY29uZHMpOlxuICAgIC8vICAgaXNOZXh0P25ldyBEYXRlKGZpcnN0RGF5LmdldFRpbWUoKSk6bmV3IERhdGUoZmlyc3REYXkuZ2V0VGltZSgpIC0gd2Vla1NlY29uZHMpXG5cbiAgICBsZXQgdmFsdWVUd286RGF0ZT1uZXcgRGF0ZSh2YWx1ZS5nZXRUaW1lKCkgKyA2ICogMjQgKiA2MCAqIDYwICogMTAwMCk7IFxuICAgLy8gY29uc29sZS5sb2coJ3Rlc3QnLHZhbHVlLCd0ZXN0MicsdmFsdWVUd28pXG4gICAgcmV0dXJuIFt2YWx1ZSwgdmFsdWVUd29dXG4gICAvL3JldHVybiB0aGlzLnNldENhbGVuZGFyUmFuZ2VGaWx0ZXJWYWx1ZShmaWx0ZXIpO1xuICB9XG5cbiAgICAvKipcbiAgICogb3BlbiBkaWFsb2cgb24gbG9va3VwQ29udHJvbCBmaWVsZFxuICAgKi9cbiAgICAgc2VsZWN0TG9va3VwRmllbGQoZ2xvYmFsRmlsdGVyczogSUdsb2JhbEZpbHRlcikgeyAgICAgICBcbiAgICAgIHRoaXMuZ3JpZFNlcnZpY2Uuc2V0TG9va1VwRmlsdGVyKGdsb2JhbEZpbHRlcnMsIHRoaXMuZGlhbG9nU2VydmljZSwgdHJ1ZSk7XG4gICAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciBhbGwgZmlsdGVyIHZhbHVlc1xuICAgKi9cbiAgY2xlYXJGaWx0ZXJzKCkge1xuICAgIHRoaXMuZ2xvYmFsRmlsdGVycy5tYXAoKGl0ZW06IGFueSkgPT4gKGl0ZW0udmFsdWUgPSBudWxsKSk7XG4gICAgY29uc3QgY2xlYXJHcmlkRmlsdGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsZWFyR3JpZEZpbHRlclZhbHVlc0J1dHRvbicpXG4gICAgaWYoY2xlYXJHcmlkRmlsdGVyKXtcbiAgICAgIGNsZWFyR3JpZEZpbHRlci5jbGljaygpO1xuICAgIH1cbiAgfVxuXG4gICAvKipcbiAgICogQ2xlYXIgdmFsdWVzIG9mIERhdGUgUmFuZ2UgRmlsdGVyXG4gICAqL1xuICAgIGNsZWFyRGF0ZVJhbmdlVmFsdWUoZmlsdGVyOiBhbnkpe1xuICAgICAgdGhpcy5zZXREYXRlUmFuZ2VWYWx1ZShmaWx0ZXIsIHRydWUpXG4gICAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZSBkaWFsb2cgd2l0aG91dCBhcHBseWluZyBmaWx0ZXJzXG4gICAqL1xuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5jbGVhckZpbHRlcnMoKTtcbiAgICB0aGlzLnJlZi5jbG9zZSgpO1xuICB9XG4gIHJhbmdlRGF0ZWNsb3NlKGdsb2JhbEZpbHRlcjogYW55KSB7XG4gICAgdGhpcy5kYXRlUGlja2VyLmhpZGVPdmVybGF5KCk7XG4gICAgdGhpcy5kYXRlUGlja2VyLm92ZXJsYXlWaXNpYmxlID0gZmFsc2U7XG4gICAgdGhpcy5kYXRlUGlja2VyLmRhdGVwaWNrZXJDbGljayA9IHRydWU7XG4gICAgY29uc3QgaWQ6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dCk7XG4gICAgaWQuZm9jdXMoKTtcbiAgICB0aGlzLmRhdGVQaWNrZXIub3ZlcmxheVZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLmRhdGVQaWNrZXIuZGF0ZXBpY2tlckNsaWNrID0gdHJ1ZTtcblxuICB9XG5cbiAgZmlsdGVySW5wdXQoKSB7XG4gICAgdGhpcy5zaG93SW5wdXQgPSAhdGhpcy5zaG93SW5wdXQ7XG4gIH1cblxuICAvKipcbiAgICogRm9jdXNlZCB0aGUgY2FsZW5kYXIgaW5wdXRcbiAgICovXG4gIHNlbGVjdERhdGUoZ2xvYmFsRmlsdGVyOiBhbnksIGZvY3VzZWQ6IGJvb2xlYW4gPSBmYWxzZSl7XG4gICAgaWYoZ2xvYmFsRmlsdGVyLnZhbHVlPy5sZW5ndGggPiAxICYmIGdsb2JhbEZpbHRlci52YWx1ZVsxXSAhPT0gbnVsbCl7XG4gICAgICB0aGlzLnNldERhdGVSYW5nZVZhbHVlKGdsb2JhbEZpbHRlcik7XG4gICAgICBpZihmb2N1c2VkID09dHJ1ZSl7XG4gICAgICB0aGlzLnJhbmdlRGF0ZWNsb3NlKGdsb2JhbEZpbHRlcik7IFxuICAgICAgfVxuICAgIH1cbiAgICBpZihmb2N1c2VkKXtcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGdsb2JhbEZpbHRlci5maWVsZCk/LmZvY3VzKCk7XG4gICAgfVxuICB9XG4gIHRhYkZvY3VzRXZlbnQoZ2xvYmFsRmlsdGVyOiBhbnkpIHtcbiAgICBjb25zdCBjbGFzc05hbWUgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICcuJytnbG9iYWxGaWx0ZXIuZmllbGRcbiAgICApO1xuICAgIGlmIChjbGFzc05hbWUpIHtcbiAgICAgIGNsYXNzTmFtZS5jbGljaygpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWNvbXBvbmVudC13cmFwcGVyLWRpdlwiPlxuICA8ZGl2XG4gICAgW2NsYXNzXT1cImdsb2JhbEZpbHRlci5oaWRkZW4gPyAnZ2xvYmFsRmlsdGVySGlkZGVuJyA6IGdsb2JhbEZpbHRlci5jb2x1bW4gPyAnY29sLScgKyBnbG9iYWxGaWx0ZXIuY29sdW1uIDogJ2NvbC0zJ1wiXG4gICAgKm5nRm9yPVwibGV0IGdsb2JhbEZpbHRlciBvZiBnbG9iYWxGaWx0ZXJzXCJcbiAgPlxuICAgIDxkaXYgW25nU3dpdGNoXT1cImdsb2JhbEZpbHRlci50eXBlXCI+XG4gICAgICA8IS0tIENhbGVuZGFyIGNvbnRyb2wgLS0+XG4gICAgICA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWZpbHRlci1kaXZcIiAqbmdTd2l0Y2hDYXNlPVwiZml0ZXJUeXBlcy5DQUxFTkRBUlwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWxhYmVsXCIgZm9yPVwiYmFzaWNcIj57eyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQgfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnJlcXVpcmVkRmllbGRcIiBbY2xhc3NdPVwiJ3JlcXVpcmVkLXN0YXIgJyArIChnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJyBpbnZhbGlkICcgOiAnJylcIj4qPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zc2libGUtYnVsay11cGRhdGUtaW5wdXQtd3JhcHBlci1kaXZcIj5cbiAgICAgICAgICAgICAgPHAtY2FsZW5kYXJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICduZy1pbnZhbGlkIG5nLWRpcnR5ICcgKyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQ6ICdmbGV4LWdyb3ctMSBncm93LTEgJyArIGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dFwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTZWxlY3QtRGF0ZSdcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiYXBwbHlGaWx0ZXJzKClcIlxuICAgICAgICAgICAgICAgIChvblNlbGVjdCk9XCJzZWxlY3REYXRlKGdsb2JhbEZpbHRlciwgdHJ1ZSlcIlxuICAgICAgICAgICAgICAgIFtpbnB1dElkXT1cImdsb2JhbEZpbHRlci5maWVsZFwiXG4gICAgICAgICAgICAgICAgW2RhdGVGb3JtYXRdPVwiY2FsZW5kYXJGb3JtYXRcIlxuICAgICAgICAgICAgICAgIChvbkNsb3NlKT1cIm9uRm9jdXNPdXRFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxuICAgICAgICAgICAgICAgIFtzaG93QnV0dG9uQmFyXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChrZXl1cCk9XCJjYWxlbmRhckZvY3VzRXZlbnQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9wLWNhbGVuZGFyPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmludGVyZmFjZVR5cGU9PSdidWxrVXBkYXRlJ1wiIGNsYXNzPVwicC1pbnB1dC1pY29uLXJpZ2h0IGdsb2JhbC1maWx0ZXIgYnVsay11cGRhdGVcIiA+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlVmFsdWVzKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICAgIGljb249XCJmYS1yZWd1bGFyIGZhLWFycm93LWRvd24tdG8tZG90dGVkLWxpbmVcIlxuICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgIFxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmZpbHRlcmluZ1wiPlxuICAgICAgICAgICAgICAgIDxzZS1maWx0ZXItbWVudSBbZ2xvYmFsRmlsdGVyXT1cImdsb2JhbEZpbHRlclwiPjwvc2UtZmlsdGVyLW1lbnU+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSAmJiBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlLmxlbmd0aCA+IDBcIiBjbGFzcz1cImVycm9yXCI+e3tcbiAgICAgICAgICAgIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2VcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDwhLS0gQ2FsZW5kYXIgUmFuZ2UgLS0+XG4gICAgICA8IS0tIDxzcGFuIFtoaWRkZW5dPVwiZ2xvYmFsRmlsdGVyLmhpZGRlblwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJnbG9iYWwtZmlsdGVycy1maWx0ZXItZGl2XCJcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiZml0ZXJUeXBlcy5DQUxFTkRBUl9SQU5HRVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJcIiBmb3I9XCJiYXNpY1wiPnt7IGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dCB9fVxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIucmVxdWlyZWRGaWVsZFwiIFtjbGFzc109XCIncmVxdWlyZWQtc3RhciAnICsgKGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnIGludmFsaWQgJyA6ICcnKVwiPio8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20tYnRuXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dQcmV2aW91cyhnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgbGFiZWw9XCJQcmV2aW91cyB7e1xuICAgICAgICAgICAgICAgIGdsb2JhbEZpbHRlci5kYXlSYW5nZSA/IGdsb2JhbEZpbHRlci5kYXlSYW5nZSA6ICdXZWVrJ1xuICAgICAgICAgICAgICB9fSA8PFwiIFxuICAgICAgICAgICAgPiAtLT5cbiAgICAgICAgICAgIDwhLS0gW25nU3R5bGVdPVwieyBiYWNrZ3JvdW5kOiBnbG9iYWxGaWx0ZXIuY29sb3IgPyBnbG9iYWxGaWx0ZXIuY29sb3IgOiAnJ31cIiAtLT5cbiAgICAgICAgICA8IS0tIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtbGFiZWxcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIFtjbGFzc109XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJ25nLWludmFsaWQgbmctZGlydHknIDogJydcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnByZWZpeD09PXRydWUgfHwgZ2xvYmFsRmlsdGVyLnByZWZpeD09PXVuZGVmaW5lZFwiPlxuICAgICAgICAgICAgICAgIHt7ICBnbG9iYWxGaWx0ZXIubGFiZWxUZXh0ID8gZ2xvYmFsRmlsdGVyLmxhYmVsVGV4dCA6ICcnIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj4gLS0+XG4gICAgICAgICAgICAgIDwhLS0ge3tcbiAgICAgICAgICAgICAgICBzdGFydERhdGVcbiAgICAgICAgICAgICAgICAgIHwgZGF0ZVxuICAgICAgICAgICAgICAgICAgICA6IChnbG9iYWxGaWx0ZXIuZm9ybWF0ID8gZ2xvYmFsRmlsdGVyLmZvcm1hdCA6ICdNTS9kZC95eXl5JylcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdG9cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICBlbmREYXRlXG4gICAgICAgICAgICAgICAgICB8IGRhdGVcbiAgICAgICAgICAgICAgICAgICAgOiAoZ2xvYmFsRmlsdGVyLmZvcm1hdCA/IGdsb2JhbEZpbHRlci5mb3JtYXQgOiAnTU0vZGQveXl5eScpXG4gICAgICAgICAgICAgIH19IC0tPlxuICAgICAgICAgICAgICA8IS0tIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnByZWZpeD09PWZhbHNlXCI+XG4gICAgICAgICAgICAgICAge3sgZ2xvYmFsRmlsdGVyLmxhYmVsVGV4dCA/IGdsb2JhbEZpbHRlci5sYWJlbFRleHQgOiAnJ319XG4gICAgICAgICAgICAgIDwvc3Bhbj48L2xhYmVsXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3VzdG9tLWJ0blwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzaG93TmV4dChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgbGFiZWw9XCJOZXh0IHt7XG4gICAgICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmRheVJhbmdlID8gZ2xvYmFsRmlsdGVyLmRheVJhbmdlIDogJ1dlZWsnXG4gICAgICAgICAgICAgIH19ID4+XCJcbiAgICAgICAgICAgID4gLS0+XG4gICAgICAgICAgICA8IS0tIFtuZ1N0eWxlXT1cInsgYmFja2dyb3VuZDogZ2xvYmFsRmlsdGVyLmNvbG9yID8gZ2xvYmFsRmlsdGVyLmNvbG9yIDogJyd9XCIgLS0+XG4gICAgICAgICAgPCEtLSA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgJiYgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCIgY2xhc3M9XCJlcnJvclwiPnt7XG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPiAtLT5cblxuICAgICAgPCEtLSBDaGVja2JveCBDb250cm9sIC0tPlxuICAgICAgPHNwYW4gW2hpZGRlbl09XCJnbG9iYWxGaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnbG9iYWwtZmlsdGVycy1maWx0ZXItZGl2XCIgKm5nU3dpdGNoQ2FzZT1cImZpdGVyVHlwZXMuQ0hFQ0tCT1hcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJcIiBmb3I9XCJiYXNpY1wiPnt7IGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dCB9fVxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIucmVxdWlyZWRGaWVsZFwiIFtjbGFzc109XCIncmVxdWlyZWQtc3RhciAnICsgKGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnIGludmFsaWQgJyA6ICcnKVwiPio8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zc2libGUtYnVsay11cGRhdGUtaW5wdXQtd3JhcHBlci1kaXZcIj5cbiAgICAgICAgICAgIDxwLWNoZWNrYm94XG4gICAgICAgICAgICBbY2xhc3NdPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICduZy1pbnZhbGlkIG5nLWRpcnR5JzogJ2ZsZXggYWxpZ24taXRlbXMtY2VudGVyJ1wiXG4gICAgICAgICAgICAgIFtiaW5hcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJhcHBseUZpbHRlcnMoKVwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkZvY3VzT3V0RXZlbnQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrRXZlbnQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICA+PC9wLWNoZWNrYm94PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdsb2JhbEZpbHRlci5pbnRlcmZhY2VUeXBlPT0nYnVsa1VwZGF0ZSdcIiBjbGFzcz1cInAtaW5wdXQtaWNvbi1yaWdodCBnbG9iYWwtZmlsdGVyIGJ1bGstdXBkYXRlXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVWYWx1ZXMoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIGljb249XCJmYS1yZWd1bGFyIGZhLWFycm93LWRvd24tdG8tZG90dGVkLWxpbmVcIlxuICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiAgXG4gICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSAmJiBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlLmxlbmd0aCA+IDBcIiBjbGFzcz1cImVycm9yXCI+e3tcbiAgICAgICAgICAgIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2VcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDwhLS0gU3BhY2VyIENvbnRyb2wgLS0+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFnbG9iYWxGaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWZpbHRlci1kaXZcIlxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJmaXRlclR5cGVzLlNQQUNFUlwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgW2NsYXNzXT1cIlxuICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmNvbHVtblxuICAgICAgICAgICAgICAgID8gJ2NvbC0nICsgZ2xvYmFsRmlsdGVyLmNvbHVtblxuICAgICAgICAgICAgICAgIDogJydcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDwhLS0gRHJvcGRvd24gQ29udHJvbCAtLT5cbiAgICAgIDxzcGFuIFtoaWRkZW5dPVwiZ2xvYmFsRmlsdGVyLmhpZGRlblwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiICpuZ1N3aXRjaENhc2U9XCJmaXRlclR5cGVzLkRST1BET1dOXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtbGFiZWxcIiBmb3I9XCJiYXNpY1wiPnt7IGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dCB9fVxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIucmVxdWlyZWRGaWVsZFwiIFtjbGFzc109XCIncmVxdWlyZWQtc3RhciAnICsgKGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnIGludmFsaWQgJyA6ICcnKVwiPio8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zc2libGUtYnVsay11cGRhdGUtaW5wdXQtd3JhcHBlci1kaXZcIj5cbiAgICAgICAgICAgIDxwLWRyb3Bkb3duXG4gICAgICAgICAgICAgIFtjbGFzc109XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJ25nLWludmFsaWQgbmctZGlydHknIDogJydcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImdsb2JhbEZpbHRlci52YWx1ZVwiXG4gICAgICAgICAgICAgIFtuYW1lXT1cImdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dFwiXG4gICAgICAgICAgICAgIFtzaG93Q2xlYXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtzdHlsZUNsYXNzXT1cImdsb2JhbEZpbHRlci5maWVsZFwiXG4gICAgICAgICAgICAgIChrZXl1cC5UYWIpPVwidGFiRm9jdXNFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dFwiXG4gICAgICAgICAgICAgIFtvcHRpb25zXT1cImdsb2JhbEZpbHRlci5kYXRhIHx8IFtdXCJcbiAgICAgICAgICAgICAgW29wdGlvbkxhYmVsXT1cImdsb2JhbEZpbHRlci5vcHRpb25MYWJlbFwiXG4gICAgICAgICAgICAgIFtvcHRpb25WYWx1ZV09XCJnbG9iYWxGaWx0ZXIub3B0aW9uVmFsdWVcIlxuICAgICAgICAgICAgICBbZmlsdGVyXT1cImdsb2JhbEZpbHRlci5hbGxvd1NlYXJjaFwiXG4gICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkZvY3VzT3V0RXZlbnQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJhcHBseUZpbHRlcnMoKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgPjwvcC1kcm9wZG93bj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnbG9iYWxGaWx0ZXIuaW50ZXJmYWNlVHlwZT09J2J1bGtVcGRhdGUnXCIgY2xhc3M9XCJwLWlucHV0LWljb24tcmlnaHQgZ2xvYmFsLWZpbHRlciBidWxrLXVwZGF0ZVwiID5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVZhbHVlcyhnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgaWNvbj1cImZhLXJlZ3VsYXIgZmEtYXJyb3ctZG93bi10by1kb3R0ZWQtbGluZVwiXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiICBcbiAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlICYmIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UubGVuZ3RoID4gMFwiIGNsYXNzPVwiZXJyb3JcIj57e1xuICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZVxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPCEtLSBJbnB1dCBjb250cm9sIC0tPlxuICAgICAgPHNwYW4gW2hpZGRlbl09XCJnbG9iYWxGaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnbG9iYWwtZmlsdGVycy1maWx0ZXItZGl2XCIgKm5nU3dpdGNoQ2FzZT1cImZpdGVyVHlwZXMuSU5QVVRcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJcIiBmb3I9XCJiYXNpY1wiPnt7IGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dCB9fVxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIucmVxdWlyZWRGaWVsZFwiIFtjbGFzc109XCIncmVxdWlyZWQtc3RhciAnICsgKGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnIGludmFsaWQgJyA6ICcnKVwiPio8L3NwYW4+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicG9zc2libGUtYnVsay11cGRhdGUtaW5wdXQtd3JhcHBlci1kaXZcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJnbG9iYWxGaWx0ZXIudmFsdWVcIlxuICAgICAgICAgICAgICBbY2xhc3NdPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICduZy1pbnZhbGlkIG5nLWRpcnR5JyA6ICcnXCJcbiAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImFwcGx5RmlsdGVycygpXCJcbiAgICAgICAgICAgICAgKGJsdXIpPVwib25Gb2N1c091dEV2ZW50KGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2xvYmFsRmlsdGVyLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmludGVyZmFjZVR5cGU9PSdidWxrVXBkYXRlJ1wiIGNsYXNzPVwicC1pbnB1dC1pY29uLXJpZ2h0IGdsb2JhbC1maWx0ZXIgYnVsay11cGRhdGVcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVZhbHVlcyhnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgaWNvbj1cImZhLXJlZ3VsYXIgZmEtYXJyb3ctZG93bi10by1kb3R0ZWQtbGluZVwiXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiICBcbiAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5maWx0ZXJpbmdcIj5cbiAgICAgICAgICAgICAgPHNlLWZpbHRlci1tZW51IFtnbG9iYWxGaWx0ZXJdPVwiZ2xvYmFsRmlsdGVyXCI+PC9zZS1maWx0ZXItbWVudT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgJiYgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCIgY2xhc3M9XCJlcnJvclwiPnt7XG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuXG4gICAgICA8IS0tIE51bWVyaWNJbnB1dCBjb250cm9sIC0tPlxuICAgICAgPHNwYW4gW2hpZGRlbl09XCJnbG9iYWxGaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWZpbHRlci1kaXZcIlxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJmaXRlclR5cGVzLk5VTUVSSUNJTlBVVFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnbG9iYWwtZmlsdGVycy1sYWJlbFwiIGZvcj1cImJhc2ljXCI+e3sgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0IH19XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5yZXF1aXJlZEZpZWxkXCIgW2NsYXNzXT1cIidyZXF1aXJlZC1zdGFyICcgKyAoZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICcgaW52YWxpZCAnIDogJycpXCI+Kjwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtbm93cmFwIGFsaWduLWl0ZW1zLWNlbnRlciBwb3NzaWJsZS1idWxrLXVwZGF0ZS1pbnB1dC13cmFwcGVyLWRpdlwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICBwSW5wdXRUZXh0XG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2NsYXNzXT1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnbmctaW52YWxpZCBuZy1kaXJ0eScgOiAnJ1wiXG4gICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJhcHBseUZpbHRlcnMoKVwiXG4gICAgICAgICAgICAgIChibHVyKT1cIm9uRm9jdXNPdXRFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmludGVyZmFjZVR5cGU9PSdidWxrVXBkYXRlJ1wiIGNsYXNzPVwicC1pbnB1dC1pY29uLXJpZ2h0IGdsb2JhbC1maWx0ZXIgYnVsay11cGRhdGVcIiA+XG4gICAgICAgICAgICAgIDxidXR0b24gdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVWYWx1ZXMoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIGljb249XCJmYS1yZWd1bGFyIGZhLWFycm93LWRvd24tdG8tZG90dGVkLWxpbmVcIlxuICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiAgXG4gICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZmlsdGVyaW5nXCI+XG4gICAgICAgICAgICAgIDxzZS1maWx0ZXItbWVudSBbZ2xvYmFsRmlsdGVyXT1cImdsb2JhbEZpbHRlclwiPjwvc2UtZmlsdGVyLW1lbnU+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlICYmIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UubGVuZ3RoID4gMFwiIGNsYXNzPVwiZXJyb3JcIj57e1xuICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZVxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIFxuICAgICAgPCEtLSBEYXRlIFJhbmdlIENvbnRyb2wgLS0+XG4gICAgICA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWZpbHRlci1kaXZcIiAqbmdTd2l0Y2hDYXNlPVwiZml0ZXJUeXBlcy5EQVRFX1JBTkdFXCI+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cImJhc2ljXCI+e3sgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0IH19XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5yZXF1aXJlZEZpZWxkXCIgW2NsYXNzXT1cIidyZXF1aXJlZC1zdGFyICcgKyAoZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICcgaW52YWxpZCAnIDogJycpXCI+Kjwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImdsb2JhbEZpbHRlci5kYXlSYW5nZVwiXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIiAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2FsZW5kYXItcmFuZ2UtYnRuICBjYWxlbmRhci1wcmV2aW91c1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzaG93UHJldmlvdXMoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgIGxhYmVsPVwiPDxcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPCEtLSBcIlByZXZpb3VzIHt7XG4gICAgICAgICAgICAgIGdsb2JhbEZpbHRlci5kYXlSYW5nZSA/IGdsb2JhbEZpbHRlci5kYXlSYW5nZSA6ICdXZWVrJ1xuICAgICAgICAgICAgfX0gPDxcIiAtLT5cbiAgICAgICAgICAgIDwhLS0gW25nU3R5bGVdPVwieyBiYWNrZ3JvdW5kOiBnbG9iYWxGaWx0ZXIuY29sb3IgPyBnbG9iYWxGaWx0ZXIuY29sb3IgOiAnJ31cIiAtLT5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxwLWNhbGVuZGFyIFxuICAgICAgICAgICAgI3JhbmdlQ2FsZW5kYXJcbiAgICAgICAgICAgIFtzaG93QnV0dG9uQmFyXT1cInRydWVcIlxuXG4gICAgICAgICAgICBbaW5wdXRJZF09XCJnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHRcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgPyAnbmctaW52YWxpZCBuZy1kaXJ0eSAnICsgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0IDogJ2ZsZXgtZ3Jvdy0xIGdyb3ctMSAnICsgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyLnZhbHVlXCIgXG4gICAgICAgICAgICBzZWxlY3Rpb25Nb2RlPVwicmFuZ2VcIiBcbiAgICAgICAgICAgIFtzZWxlY3RPdGhlck1vbnRoc109XCJ0cnVlXCJcbiAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiXG4gICAgICAgICAgICAob25TZWxlY3QpPVwic2VsZWN0RGF0ZShnbG9iYWxGaWx0ZXIsIHRydWUpXCJcbiAgICAgICAgICAgIFtkYXRlRm9ybWF0XT1cImNhbGVuZGFyRm9ybWF0XCJcbiAgICAgICAgICAgIChvbkNsb3NlKT1cIm9uRm9jdXNPdXRFdmVudChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgIChvbkNsaWNrT3V0c2lkZSk9XCJzZXREYXRlUmFuZ2VGaWx0ZXJWYWx1ZShnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgIChvbkJsdXIpPVwic2V0RGF0ZVJhbmdlRmlsdGVyVmFsdWUoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAoa2V5dXApPVwiY2FsZW5kYXJGb2N1c0V2ZW50KGdsb2JhbEZpbHRlciwgJGV2ZW50KVwiXG4gICAgICAgICAgICAob25DbGVhckNsaWNrKT1cImNsZWFyRGF0ZVJhbmdlVmFsdWUoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2xvYmFsRmlsdGVyLmRpc2FibGVkXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJhcHBseUZpbHRlcnModHJ1ZSwgZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICBcbiAgICAgICAgICAgID48L3AtY2FsZW5kYXI+XG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmRheVJhbmdlXCJcbiAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiICAgICAgICAgICAgICBcbiAgICAgICAgICAgIGNsYXNzPVwiY2FsZW5kYXItcmFuZ2UtYnRuIGNhbGVuZGFyLW5leHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNob3dOZXh0KGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgbGFiZWw9XCI+PlwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwhLS0gTmV4dCB7e1xuICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmRheVJhbmdlID8gZ2xvYmFsRmlsdGVyLmRheVJhbmdlIDogJ1dlZWsnXG4gICAgICAgICAgfX0gPj5cIiAtLT5cbiAgICAgICAgICA8IS0tIFtuZ1N0eWxlXT1cInsgYmFja2dyb3VuZDogZ2xvYmFsRmlsdGVyLmNvbG9yID8gZ2xvYmFsRmlsdGVyLmNvbG9yIDogJyd9XCIgLS0+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPCEtLSB0b2RheUJ1dHRvblN0eWxlQ2xhc3M9XCJoaWRkZW5cIlxuICAgICAgICAgICAgY2xlYXJCdXR0b25TdHlsZUNsYXNzPVwibWwtYXV0b1wiIC0tPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZmlsdGVyaW5nXCI+XG4gICAgICAgICAgICAgIDxzZS1maWx0ZXItbWVudSBbZ2xvYmFsRmlsdGVyXT1cImdsb2JhbEZpbHRlclwiPjwvc2UtZmlsdGVyLW1lbnU+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlICYmIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UubGVuZ3RoID4gMFwiIGNsYXNzPVwiZXJyb3JcIj57e1xuICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZVxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPCEtLSBOdW1lcmljIFJhbmdlIGNvbnRyb2wgLS0+XG4gICAgICA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cImZpdGVyVHlwZXMuTlVNRVJJQ19SQU5HRVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwiYmFzaWNcIj57eyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQgfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnJlcXVpcmVkRmllbGRcIiBbY2xhc3NdPVwiJ3JlcXVpcmVkLXN0YXIgJyArIChnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJyBpbnZhbGlkICcgOiAnJylcIj4qPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LW5vd3JhcCBhbGlnbi1pdGVtcy1jZW50ZXIgbXItMlwiPlxuICAgICAgICAgICAgPHAtaW5wdXROdW1iZXJcbiAgICAgICAgICAgIFtzaG93QnV0dG9uc109XCJmYWxzZVwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICAgICAgW21pbkZyYWN0aW9uRGlnaXRzXT1cImdsb2JhbEZpbHRlcj8uZm9ybWF0Py50eXBlID09PSAnZGVjaW1hbCcgPyBnbG9iYWxGaWx0ZXIuZm9ybWF0Py5mb3JtYXRQYXJhbXM/LmRpZ2l0c0luZm8gPyBnbG9iYWxGaWx0ZXIuZm9ybWF0Py5mb3JtYXRQYXJhbXM/LmRpZ2l0c0luZm8gOiAnMicgOiAnMCdcIlxuICAgICAgICAgICAgICBbbWF4RnJhY3Rpb25EaWdpdHNdPVwiZ2xvYmFsRmlsdGVyPy5mb3JtYXQ/LnR5cGUgPT09ICdkZWNpbWFsJyA/IGdsb2JhbEZpbHRlci5mb3JtYXQ/LmZvcm1hdFBhcmFtcz8uZGlnaXRzSW5mbyA/IGdsb2JhbEZpbHRlci5mb3JtYXQ/LmZvcm1hdFBhcmFtcz8uZGlnaXRzSW5mbyA6ICcyJyA6ICcwJ1wiXG4gICAgICAgICAgICAgIChvbkJsdXIpPVwic2V0TnVtZXJpY1JhbmdlVmFsdWVGcm9tKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwic2V0TnVtZXJpY1JhbmdlVmFsdWVGcm9tKGdsb2JhbEZpbHRlcix0cnVlKVwiXG4gICAgICAgICAgICAgIFtjbGFzc109XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJ25nLWludmFsaWQgbmctZGlydHknIDogJ2ZsZXgtZ3Jvdy0xICBncm93LTEgaW5wdXQtbnVtYmVyJ1wiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9wLWlucHV0TnVtYmVyPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlICYmIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UubGVuZ3RoID4gMFwiIGNsYXNzPVwiZXJyb3JcIj57e1xuICAgICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRvLW51bWVyaWMgbXItMlwiPlRvPC9zcGFuPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtbm93cmFwIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPHAtaW5wdXROdW1iZXJcbiAgICAgICAgICAgIFtzaG93QnV0dG9uc109XCJmYWxzZVwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyLnZhbHVlVHdvXCJcbiAgICAgICAgICAgICAgW21pbkZyYWN0aW9uRGlnaXRzXT1cImdsb2JhbEZpbHRlcj8uZm9ybWF0Py50eXBlID09PSAnZGVjaW1hbCcgPyBnbG9iYWxGaWx0ZXIuZm9ybWF0Py5mb3JtYXRQYXJhbXM/LmRpZ2l0c0luZm8gPyBnbG9iYWxGaWx0ZXIuZm9ybWF0Py5mb3JtYXRQYXJhbXM/LmRpZ2l0c0luZm8gOiAnMicgOiAnMCdcIlxuICAgICAgICAgICAgICBbbWF4RnJhY3Rpb25EaWdpdHNdPVwiZ2xvYmFsRmlsdGVyPy5mb3JtYXQ/LnR5cGUgPT09ICdkZWNpbWFsJyA/IGdsb2JhbEZpbHRlci5mb3JtYXQ/LmZvcm1hdFBhcmFtcz8uZGlnaXRzSW5mbyA/IGdsb2JhbEZpbHRlci5mb3JtYXQ/LmZvcm1hdFBhcmFtcz8uZGlnaXRzSW5mbyA6ICcyJyA6ICcwJ1wiXG4gICAgICAgICAgICAgIFtjbGFzc109XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJ25nLWludmFsaWQgbmctZGlydHknIDogJ2ZsZXgtZ3Jvdy0xIG1yLTIgZ3Jvdy0xIGlucHV0LW51bWJlcidcIlxuICAgICAgICAgICAgICAob25CbHVyKT1cInNldE51bWVyaWNSYW5nZVZhbHVlVHdvKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwic2V0TnVtZXJpY1JhbmdlVmFsdWVUd28oZ2xvYmFsRmlsdGVyLHRydWUpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L3AtaW5wdXROdW1iZXI+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5maWx0ZXJpbmdcIj5cbiAgICAgICAgICAgICAgPHNlLWZpbHRlci1tZW51IFtnbG9iYWxGaWx0ZXJdPVwiZ2xvYmFsRmlsdGVyXCI+PC9zZS1maWx0ZXItbWVudT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSAmJiBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlLmxlbmd0aCA+IDBcIiBjbGFzcz1cImVycm9yXCI+e3tcbiAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPCEtLSBNdWx0aVNlbGVjdCBjb250cm9sIC0tPlxuICAgICAgPHNwYW4gW2hpZGRlbl09XCJnbG9iYWxGaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWZpbHRlci1kaXZcIlxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJmaXRlclR5cGVzLk1VTFRJU0VMRUNUXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIlwiIGZvcj1cImJhc2ljXCI+e3sgZ2xvYmFsRmlsdGVyLmRpc3BsYXlUZXh0IH19XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5yZXF1aXJlZEZpZWxkXCIgW2NsYXNzXT1cIidyZXF1aXJlZC1zdGFyICcgKyAoZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICcgaW52YWxpZCAnIDogJycpXCI+Kjwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxwLW11bHRpU2VsZWN0XG4gICAgICAgICAgICBbY2xhc3NdPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICduZy1pbnZhbGlkIG5nLWRpcnR5JyA6ICcnXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cImdsb2JhbEZpbHRlci5kYXRhXCJcbiAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwibGFiZWxcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImFwcGx5RmlsdGVycygpXCJcbiAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkZvY3VzT3V0RXZlbnQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICBvcHRpb25WYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICAgIFthcHBlbmRUb109XCInYm9keSdcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdsb2JhbEZpbHRlci5kaXNhYmxlZFwiXG4gICAgICAgICAgPjwvcC1tdWx0aVNlbGVjdD5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UgJiYgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCIgY2xhc3M9XCJlcnJvclwiPnt7XG4gICAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9zcGFuPlxuXG5cbiAgICAgICAgIDwhLS0gU2VsZWN0IEJ1dHRvbiBjb250cm9sIC0tPlxuICAgICAgPHNwYW4gW2hpZGRlbl09XCJnbG9iYWxGaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWZpbHRlci1kaXZcIlxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJmaXRlclR5cGVzLlNFTEVDVEJVVFRPTlwiXG5cbiAgICAgICAgPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJcIiBmb3I9XCJiYXNpY1wiPnt7IGdsb2JhbEZpbHRlci5kaXNwbGF5VGV4dCB9fVxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnJlcXVpcmVkRmllbGRcIiBbY2xhc3NdPVwiJ3JlcXVpcmVkLXN0YXIgJyArIChnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJyBpbnZhbGlkICcgOiAnJylcIj4qPC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8cC1zZWxlY3RCdXR0b25cbiAgICAgICAgICBbY2xhc3NdPVwiJyBtb2Rlcm5pemVkUmFkaW9Mb29rICcgKyAoZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICcgbmctaW52YWxpZCBuZy1kaXJ0eSAnIDogJycpXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImdsb2JhbEZpbHRlci52YWx1ZVwiXG4gICAgICAgICAgW29wdGlvbnNdPVwiZ2xvYmFsRmlsdGVyLmRhdGFcIlxuICAgICAgICAgIG9wdGlvbkxhYmVsPVwibGFiZWxcIlxuICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkZvY3VzT3V0RXZlbnQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgW211bHRpcGxlXT1cImdsb2JhbEZpbHRlci5kaXNwbGF5U3R5bGVcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJnbG9iYWxGaWx0ZXIuZGlzYWJsZWRcIiAgXG4gICAgICAgID5cbiAgICAgICAgPCEtLSA8bmctdGVtcGxhdGUgbGV0LWl0ZW0gcFRlbXBsYXRlPlxuICAgICAgICAgIDxpIFtjbGFzc109XCJpdGVtLmljb25cIj48L2k+XG4gICAgICA8L25nLXRlbXBsYXRlPiAtLT5cbiAgICAgIDwvcC1zZWxlY3RCdXR0b24+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSAmJiBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlLmxlbmd0aCA+IDBcIiBjbGFzcz1cImVycm9yXCI+e3tcbiAgICAgICAgICBnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlXG4gICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cblxuXG5cbiAgICAgIDwhLS0gTG9va3VwIENvbnRyb2wgRmllbGQgLS0+XG4gICAgICA8c3BhbiBbaGlkZGVuXT1cImdsb2JhbEZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZ2xvYmFsLWZpbHRlcnMtZmlsdGVyLWRpdlwiXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cImZpdGVyVHlwZXMuTE9PS1VQX0lOUFVUXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdsb2JhbC1maWx0ZXJzLWxhYmVsXCIgZm9yPVwiYmFzaWNcIj57eyBnbG9iYWxGaWx0ZXIuZGlzcGxheVRleHQgfX1cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnJlcXVpcmVkRmllbGRcIiBbY2xhc3NdPVwiJ3JlcXVpcmVkLXN0YXIgJyArIChnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlID8gJyBpbnZhbGlkICcgOiAnJylcIj4qPC9zcGFuPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBvc3NpYmxlLWJ1bGstdXBkYXRlLWlucHV0LXdyYXBwZXItZGl2XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2xvc2UtaWNvbi13cmFwcGVyIGxvb2t1cC1maWx0ZXItd3JhcHBlciBnbG9iYWxGaWx0ZXJzXCI+IFxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZSA/ICduZy1pbnZhbGlkIG5nLWRpcnR5JyA6ICcnXCJcbiAgICAgICAgICAgICAgICBbaWRdPVwiZ2xvYmFsRmlsdGVyLmZpZWxkXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgcElucHV0VGV4dFxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZ2xvYmFsRmlsdGVyPy52YWx1ZVR3bz8udGV4dCA/IGdsb2JhbEZpbHRlci52YWx1ZVR3by50ZXh0IDogZ2xvYmFsRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkZvY3VzT3V0RXZlbnQoZ2xvYmFsRmlsdGVyKVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwiZ2xvYmFsRmlsdGVyLmZpZWxkXCJcbiAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiYXBwbHlGaWx0ZXJzKClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RMb29rdXBGaWVsZChnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2xvYmFsRmlsdGVyLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoa2V5dXAuVGFiKT1cInNlbGVjdExvb2t1cEZpZWxkKGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICAgIChrZXl1cC5iYWNrc3BhY2UpPVwicmVtb3ZlTnVsbExvb2t1cCgkZXZlbnQsIGdsb2JhbEZpbHRlcilcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGxvb2t1cC1pbnB1dFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1pbnB1dC1pY29uLXJpZ2h0IGdsb2JhbC1maWx0ZXJcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWNoZXZyb24tcmlnaHQgbG9va3VwLWlucHV0LWljb24gZ2xvYmFsLWZpbHRlclwiPjwvaT5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGlyZWN0LXdyYXBwZXItY2xvc2UtaWNvbi1sb29rdXBcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2xvYmFsRmlsdGVyLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibG9va3VwQ2xlYXJWYWx1ZShnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktdGltZXNcIlxuICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnbG9iYWxGaWx0ZXIuaW50ZXJmYWNlVHlwZT09J2J1bGtVcGRhdGUnXCIgY2xhc3M9XCJwLWlucHV0LWljb24tcmlnaHQgZ2xvYmFsLWZpbHRlciBidWxrLXVwZGF0ZVwiID5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVZhbHVlcyhnbG9iYWxGaWx0ZXIpXCJcbiAgICAgICAgICAgICAgaWNvbj1cImZhLXJlZ3VsYXIgZmEtYXJyb3ctZG93bi10by1kb3R0ZWQtbGluZVwiXG4gICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiICBcbiAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJnbG9iYWxGaWx0ZXIuZXJyb3JNZXNzYWdlICYmIGdsb2JhbEZpbHRlci5lcnJvck1lc3NhZ2UubGVuZ3RoID4gMFwiIGNsYXNzPVwiZXJyb3JcIj57e1xuICAgICAgICAgICAgZ2xvYmFsRmlsdGVyLmVycm9yTWVzc2FnZVxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjwhLS0gPHNwYW4+XG4gIDxpICBpY29uPVwicGkgcGktdGltZXNcIj48L2k+XG48L3NwYW4+IC0tPlxuXG48IS0tIEFwcGx5IGJ1dHRvbiAtLT5cblxuPGJ1dHRvblxucEJ1dHRvblxuKm5nSWY9XCIhZ3JpZFVwZGF0ZVwiXG50eXBlPVwiYnV0dG9uXCJcbmljb249XCJwaSBwaS1zZWFyY2hcIlxuaWQ9XCJzZWFyY2hHbG9iYWxGaWx0ZXJCdG5cIlxuKGNsaWNrKT1cImFwcGx5RmlsdGVycygpXCJcbmNsYXNzPVwiZ2xvYmFsLXNlYXJjaCBhbGlnbi1nbG9iYWxGaWx0ZXItYnRuIGdsb2JhbC1idG4gaGlkZS1maWx0ZXItYnV0dG9uXCJcbj48L2J1dHRvbj5cblxuPCEtLSBDbG9zZSBidXR0b24gLS0+XG48YnV0dG9uXG5wQnV0dG9uXG4qbmdJZj1cIiFncmlkVXBkYXRlXCJcbmlkPVwiY2xlYXJHbG9iYWxGaWx0ZXJCdG5cIlxudHlwZT1cImJ1dHRvblwiXG5pY29uPVwicGkgcGktcmVwbGF5XCJcbihjbGljayk9XCJjbGVhckZpbHRlcnMoKVwiXG5jbGFzcz1cImhpZGUtZmlsdGVyLWJ1dHRvblwiXG4+PC9idXR0b24+XG4iXX0=
@@ -11171,6 +11171,11 @@ class SeGlobalFilterComponent {
11171
11171
  }
11172
11172
  localStorage.setItem('applyFilter', JSON.stringify(true));
11173
11173
  this.gridService.applyFilterEvent = check;
11174
+ const globalFilters = this.globalFilters.filter((x) => x.field);
11175
+ const index = globalFilters.findIndex((filter) => filter.field && filter.type === GridFilterControlType.DATE_RANGE);
11176
+ if (index > -1) {
11177
+ globalFilters.splice(index, 1);
11178
+ }
11174
11179
  this.filtersApplied.emit(this.globalFilters);
11175
11180
  // let test=nextValue
11176
11181
  //filter.value=nextValue